Secondary Texture Offset

is there any reason why something like this (from the wiki) does not animate a secondary texture when for instance i change “_MainTex” to “_AlphaTex”? i’ve tried a few different scenarios nothing seems to animate except the main texture.

var uvAnimationTileX = 4;
var uvAnimationTileY = 4;
var framesPerSecond = 10.0;
 
function Update ()
{
	// Calculate index
	var index : int = Time.time * framesPerSecond;
	// repeat when exhausting all frames
	// index = index % (uvAnimationTileX * uvAnimationTileY);
	
	// Size of every tile
	var size = Vector2 (1.0 / uvAnimationTileX, 1.0 / uvAnimationTileY);
	
	// split into horizontal and vertical index
	var uIndex = index % uvAnimationTileX;
	var vIndex = index / uvAnimationTileX;
 
	// build offset
	// v coordinate is the bottom of the image in opengl so we need to invert.
	var offset = Vector2 (uIndex * size.x, 1.0 - size.y - vIndex * size.y);
	
	renderer.material.SetTextureOffset ("_AlphaTex", offset);
	renderer.material.SetTextureScale ("_AlphaTex", size);
}

Does the shader actually use “_AlphaTex” name for that second texture?

yep - i would open whatever shader i was working with copy the text directly from that. hold on though - i just tried to throw together an example with the terrain 2-layer this script - it seemed to work fine.

var offset = 0.0;
var offsetSpeed = 0.5;

function Update()
{
    offset = Time.time * offsetSpeed;
    renderer.material.SetTextureOffset ("_Mask", Vector2(-offset, 0));
}

(i was fooling around with stuff for explosivo just remembered i wanted to ask this - but now i have to remember what shader i was using at the time ; )

i found one example - the XRay shader. trying to animate “_RampTex” doesn’t seem to do anything. there was another that i couldn’t get going though but i can’t seem to find it atm - i was trying all sorts of wacky things a few weeks ago now i’ve forgotten ; )

i’m working now but i will look more later if you want make up a package for you to check out.

Well, it does not work in XRay shader because it uses a custom vertex program where it does not apply texture scale&offset (this might be for simplicity or for performance reasons, or both).

All built-in Unity shaders do apply texture scale&offset, but custom written ones… well, you get what is implemented there, and a vertex shader might apply scale&offset, or it might not.

ah i see, thanks for the info ; )