Texture Shifting

Posted By: Ayumi

Texture Shifting - 02/23/19 13:35

I want to shift texture coords and i tryed this from Wiki:


Code:
BMAP* a = "alpha.pcx";
BMAP* b = "mtl2.pcx";

MATERIAL* mtl_UV_alphaClamp = 
{	

  skin1=a;
  skin2=b;
   effect = " 
      matrix matMtl;
		texture entSkin1;
		texture mtlSkin1;
		texture mtlSkin2;	
		
      technique uvspeed
      {
         pass p0
			{
				// For this we must reorder the textures
				 Texture[0] = <entSkin1>;       // block
				 Texture[1] = <mtlSkin2>;       // grass
				 Texture[2] = <mtlSkin1>;       // alpha
				
				 TexCoordIndex[0] = 1;          //
				 TexCoordIndex[1] = 1;          //
				 TexCoordIndex[2] = 1;          //
				
				 ColorArg1[0] = Texture;        // Get texture in 0
				 ResultArg[0] = Temp;           // and save it in temp
				
				 ColorArg1[1] = Texture;        // Get texture in 1
				 ColorOp[1] = SelectArg1;       // and make it current
				
				 TextureTransformFlags[2] = Count2; // Select shifting and set matrix values
				 TextureTransform[2] = 	{
							1.0, 0.0, 0.0, 0.0, // xscale, rotate, ------, ------
							0.0, 1.0, 0.0, 0.0, // ------, yscale, ------, ------
							2.0, 2.0, 0.0, 0.0, // xshift, yshift, ------, ------
							0.0, 0.0, 0.0, 0.0  // ------, ------, ------, ------
							};
				
				 ColorArg0[2] = Texture;        // Get texture in 2 (alpha)
				 ColorArg1[2] = Current;        // and the current (grass)
				 ColorOp[2] = Lerp;             // interpolate
				 ColorArg2[2] = Temp;           // and from temp (stone)
				
 
         }
      }";
}




Interpolation is right but no shifting.

I also tryed the FFP from HeelX but it also doesn t work.

HeelX Alpha Clamp FFP

Any idea or hint?
Posted By: Superku

Re: Texture Shifting - 02/23/19 19:37

I don't know how to use those FFP things but you can use the following shader code which does UV shifting and add alpha blending with another texture or whatever you want to do:

Code:
const float4x4 matWorldViewProj;
const float4x4 matWorld;
const float fAmbient;
const float4 vecSunDir;
const float4x4 matTexture;

texture entSkin1;

sampler ColorMapSampler = sampler_state 
{ 
   Texture = <entSkin1>; 
   AddressU  = Wrap; 
   AddressV  = Wrap; 
}; 
    
void DiffuseVS( 
   in float4 InPos: POSITION, 
   in float3 InNormal: NORMAL, 
   in float2 InTex: TEXCOORD0, 
   out float4 OutPos: POSITION, 
   out float2 OutTex: TEXCOORD0, 
   out float3 OutNormal: TEXCOORD1) 
{ 
   OutPos = mul(InPos, matWorldViewProj); 
   OutNormal = mul(InNormal, matWorld);
   OutTex = InTex+float2(matTexture._m20,matTexture._m21);
} 
    
float4 DiffusePS( 
   in float2 InTex: TEXCOORD0, 
   in float3 InNormal: TEXCOORD1): COLOR 
{ 
	InNormal = normalize(InNormal);
   float Diffuse = saturate(dot(-vecSunDir, InNormal))*0.7+0.3; 
   float4 Color = tex2D(ColorMapSampler, InTex); 
   float4 final = Color*Diffuse;
  
   return (1+fAmbient) * final; 
} 
 

technique DiffuseTechnique 
{ 
   pass P0 
   { 
   cullmode = none;
      VertexShader = compile vs_2_0 DiffuseVS(); 
      PixelShader  = compile ps_2_0 DiffusePS(); 
   } 
}

Posted By: Ayumi

Re: Texture Shifting - 02/23/19 20:12

Thanks for your response and code snipped:) I favorite FFPs but if there is no other way, i will go your way.
Posted By: Ayumi

Re: Texture Shifting - 02/24/19 11:07

I work hard and harder...and got it. grin
There seems a different between A8 and A7.

If you use A8, just set my.u/v and the material.

If you use A7, don t try to convert by floatd().

mtl.matrix31 = my.skill1; (or another value)
mtl.matrix32 = my.skill2;
© 2024 lite-C Forums