- Home /
Spritesheet animation from a projector
Hi,
I'm trying to simulate a cloud shadow on a terrain. I figured using a projector would be a good idea. So far, I've managed to project a texture and translate the projection's position over time.
Now I want to animate this texture as a spritesheet. I'm using a script to adjust the texture's offset dynamically: http://wiki.unity3d.com/index.php?title=Animating_Tiled_texture#CSharp_-_SpritSheet.cs
However, I have no clue how to force the shader to project only a chosen fragment of the texture, so that I could perform a spritesheet animation. I don't know how and when should I use _MyTexture_ST values.
Here is the shader's source code:
 Shader "Projector/CloudProjector" {
    Properties {
         _ShadowTex ("Cookie", 2D) = "gray" { }
    }
 
    Subshader {
         Tags { "RenderType"="Transparent-1" }
 
         Pass {
             ZWrite Off
             Fog { Color (1, 1, 1) }
             Blend SrcAlpha OneMinusSrcAlpha
 
 
             CGPROGRAM
             #pragma vertex vert
             #pragma fragment frag
             #pragma target 3.0
 
             #include "UnityCG.cginc"
 
             sampler2D _ShadowTex;
             uniform float4 _ShadowTex_ST;
             uniform float4x4 _Projector;
 
             struct fragmentInput{
                 float4 position : SV_POSITION;
                 float4 uv : TEXCOORD0;
                 float4 normalInProjSpace   : TEXCOORD1;
             };
 
             fragmentInput vert(appdata_full  i){
                 fragmentInput o;
                 o.position = mul(UNITY_MATRIX_MVP, i.vertex);
                 i.vertex.x += _Time.x*8;
                 o.uv = mul(_Projector, i.vertex);
                 o.normalInProjSpace = mul (_Projector, float4(i.normal, 0.0));
                 
                 return o;
             }
 
             float4 frag(fragmentInput i) : COLOR {
                 
                  // sth with this?: * _ShadowTex_ST.xy + _ShadowTex_ST.zw;
                 
                 i.uv.xy = i.uv.xy / i.uv.w;
                 float4 tex = tex2D(_ShadowTex, i.uv.xy);
 
 
                 if (dot(float4(0,0,-1,0), i.normalInProjSpace) < 0.0)
                     tex = float4(1,0,0,0);
 
 
                 return tex;
                 
             }
             ENDCG
 
 
         }
    }
 }
Your answer
 
 
             Follow this Question
Related Questions
Accessing a projectors renderer 2 Answers
Blob shadow changes transparency 2 Answers
www.texture on Projector wont clamp 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                