123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518 |
- Shader "Hidden/Sprite-CameraDepthTexture" {
- // Use this shader to render a Depth texture for a camera with soft edged Sprites (using camera.RenderWithShader with replacement tag "RenderType")
- // Note the depth is encoded into the pixels RGB not the full RGBA (alpha is needed for blending)
- Properties {
- _MainTex ("", 2D) = "white" {}
- _Cutoff ("", Float) = 0.5
- _Color ("", Color) = (1,1,1,1)
- }
- SubShader {
- Tags { "RenderType"="Sprite" }
- Pass {
- Cull Off
- Blend SrcAlpha OneMinusSrcAlpha
- CGPROGRAM
- #pragma target 3.0
- #pragma vertex vert
- #pragma fragment frag
- #include "CGIncludes/ShaderShared.cginc"
- #include "CGIncludes/ShaderMaths.cginc"
- struct v2f {
- float4 pos : SV_POSITION;
- float2 uv : TEXCOORD0;
- float depth : TEXCOORD1;
- UNITY_VERTEX_OUTPUT_STEREO
- };
- v2f vert( appdata_base v ) {
- v2f o;
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
- o.pos = UnityObjectToClipPos(v.vertex);
- o.uv = calculateTextureCoord(v.texcoord);
- o.depth = COMPUTE_DEPTH_01;
- return o;
- }
- uniform fixed _Cutoff;
- fixed4 frag(v2f i) : SV_Target {
- fixed4 texcol = calculateTexturePixel(i.uv );
- float alpha = texcol.a*_Color.a;
- clip( alpha - _Cutoff );
- return fixed4(EncodeFloatRGB (i.depth), alpha);
- }
- ENDCG
- }
- }
-
- SubShader {
- Tags { "RenderType"="SpriteViewSpaceFixedNormal" }
- Pass {
- Cull Off
- Blend SrcAlpha OneMinusSrcAlpha
- CGPROGRAM
- #pragma target 3.0
- #pragma vertex vert
- #pragma fragment frag
- #include "CGIncludes/ShaderShared.cginc"
- #include "CGIncludes/ShaderMaths.cginc"
- struct v2f {
- float4 pos : SV_POSITION;
- float2 uv : TEXCOORD0;
- float depth : TEXCOORD1;
- UNITY_VERTEX_OUTPUT_STEREO
- };
- v2f vert( appdata_base v ) {
- v2f o;
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
- o.pos = UnityObjectToClipPos(v.vertex);
- o.uv = calculateTextureCoord(v.texcoord);
- o.depth = COMPUTE_DEPTH_01;
- return o;
- }
- uniform fixed _Cutoff;
- fixed4 frag(v2f i) : SV_Target {
- fixed4 texcol = calculateTexturePixel(i.uv );
- float alpha = texcol.a*_Color.a;
- clip( alpha - _Cutoff );
- return fixed4(EncodeFloatRGB (i.depth), alpha);
- }
- ENDCG
- }
- }
-
- SubShader {
- Tags { "RenderType"="SpriteModelSpaceFixedNormal" }
- Pass {
- Cull Off
- Blend SrcAlpha OneMinusSrcAlpha
- CGPROGRAM
- #pragma target 3.0
- #pragma vertex vert
- #pragma fragment frag
- #include "CGIncludes/ShaderShared.cginc"
- #include "CGIncludes/ShaderMaths.cginc"
- struct v2f {
- float4 pos : SV_POSITION;
- float2 uv : TEXCOORD0;
- float depth : TEXCOORD1;
- UNITY_VERTEX_OUTPUT_STEREO
- };
- v2f vert( appdata_base v ) {
- v2f o;
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
- o.pos = UnityObjectToClipPos(v.vertex);
- o.uv = calculateTextureCoord(v.texcoord);
- o.depth = COMPUTE_DEPTH_01;
- return o;
- }
- uniform fixed _Cutoff;
- fixed4 frag(v2f i) : SV_Target {
- fixed4 texcol = calculateTexturePixel(i.uv );
- float alpha = texcol.a*_Color.a;
- clip( alpha - _Cutoff );
- return fixed4(EncodeFloatRGB (i.depth), alpha);
- }
- ENDCG
- }
- }
-
- SubShader {
- Tags { "RenderType"="Opaque" }
- Pass {
- CGPROGRAM
- #pragma target 3.0
- #pragma vertex vert
- #pragma fragment frag
- #include "UnityCG.cginc"
- #include "CGIncludes/ShaderMaths.cginc"
- struct v2f {
- float4 pos : SV_POSITION;
- float depth : TEXCOORD1;
- UNITY_VERTEX_OUTPUT_STEREO
- };
- v2f vert( appdata_base v ) {
- v2f o;
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
- o.pos = UnityObjectToClipPos(v.vertex);
- o.depth = COMPUTE_DEPTH_01;
- return o;
- }
- fixed4 frag(v2f i) : SV_Target {
- return fixed4(EncodeFloatRGB (i.depth), 1);
- }
- ENDCG
- }
- }
- SubShader {
- Tags { "RenderType"="TransparentCutout" }
- Pass {
- CGPROGRAM
- #pragma target 3.0
- #pragma vertex vert
- #pragma fragment frag
- #include "UnityCG.cginc"
- #include "CGIncludes/ShaderMaths.cginc"
- struct v2f {
- float4 pos : SV_POSITION;
- float2 uv : TEXCOORD0;
- float depth : TEXCOORD1;
- UNITY_VERTEX_OUTPUT_STEREO
- };
- uniform float4 _MainTex_ST;
- v2f vert( appdata_base v ) {
- v2f o;
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
- o.pos = UnityObjectToClipPos(v.vertex);
- o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
- o.depth = COMPUTE_DEPTH_01;
- return o;
- }
- uniform sampler2D _MainTex;
- uniform fixed _Cutoff;
- uniform fixed4 _Color;
- fixed4 frag(v2f i) : SV_Target {
- fixed4 texcol = tex2D( _MainTex, i.uv );
- clip( texcol.a*_Color.a - _Cutoff );
- return fixed4(EncodeFloatRGB (i.depth), 1);
- }
- ENDCG
- }
- }
- SubShader {
- Tags { "RenderType"="TreeBark" }
- Pass {
- CGPROGRAM
- #pragma target 3.0
- #pragma vertex vert
- #pragma fragment frag
- #include "UnityCG.cginc"
- #include "CGIncludes/ShaderMaths.cginc"
- #include "Lighting.cginc"
- #include "UnityBuiltin3xTreeLibrary.cginc"
- struct v2f {
- float4 pos : SV_POSITION;
- float2 uv : TEXCOORD0;
- float depth : TEXCOORD1;
- UNITY_VERTEX_OUTPUT_STEREO
- };
- v2f vert( appdata_full v ) {
- v2f o;
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
- TreeVertBark(v);
-
- o.pos = UnityObjectToClipPos(v.vertex);
- o.uv = v.texcoord.xy;
- o.depth = COMPUTE_DEPTH_01;
- return o;
- }
- fixed4 frag( v2f i ) : SV_Target {
- return fixed4(EncodeFloatRGB (i.depth), 1);
- }
- ENDCG
- }
- }
- SubShader {
- Tags { "RenderType"="TreeLeaf" }
- Pass {
- CGPROGRAM
- #pragma target 3.0
- #pragma vertex vert
- #pragma fragment frag
- #include "UnityCG.cginc"
- #include "CGIncludes/ShaderMaths.cginc"
- #include "Lighting.cginc"
- #include "UnityBuiltin3xTreeLibrary.cginc"
- struct v2f {
- float4 pos : SV_POSITION;
- float2 uv : TEXCOORD0;
- float depth : TEXCOORD1;
- UNITY_VERTEX_OUTPUT_STEREO
- };
- v2f vert( appdata_full v ) {
- v2f o;
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
- TreeVertLeaf(v);
-
- o.pos = UnityObjectToClipPos(v.vertex);
- o.uv = v.texcoord.xy;
- o.depth = COMPUTE_DEPTH_01;
- return o;
- }
- uniform sampler2D _MainTex;
- uniform fixed _Cutoff;
- fixed4 frag( v2f i ) : SV_Target {
- half alpha = tex2D(_MainTex, i.uv).a;
- clip (alpha - _Cutoff);
- return fixed4(EncodeFloatRGB (i.depth), 1);
- }
- ENDCG
- }
- }
- SubShader {
- Tags { "RenderType"="TreeOpaque" "DisableBatching"="True" }
- Pass {
- CGPROGRAM
- #pragma target 3.0
- #pragma vertex vert
- #pragma fragment frag
- #include "UnityCG.cginc"
- #include "CGIncludes/ShaderMaths.cginc"
- #include "TerrainEngine.cginc"
- struct v2f {
- float4 pos : SV_POSITION;
- float depth : TEXCOORD1;
- UNITY_VERTEX_OUTPUT_STEREO
- };
- struct appdata {
- float4 vertex : POSITION;
- float3 normal : NORMAL;
- fixed4 color : COLOR;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- };
- v2f vert( appdata v ) {
- v2f o;
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
- TerrainAnimateTree(v.vertex, v.color.w);
- o.pos = UnityObjectToClipPos(v.vertex);
- o.depth = COMPUTE_DEPTH_01;
- return o;
- }
- fixed4 frag(v2f i) : SV_Target {
- return fixed4(EncodeFloatRGB (i.depth), 1);
- }
- ENDCG
- }
- }
- SubShader {
- Tags { "RenderType"="TreeTransparentCutout" "DisableBatching"="True" }
- Pass {
- Cull Back
- CGPROGRAM
- #pragma target 3.0
- #pragma vertex vert
- #pragma fragment frag
- #include "UnityCG.cginc"
- #include "CGIncludes/ShaderMaths.cginc"
- #include "TerrainEngine.cginc"
- struct v2f {
- float4 pos : SV_POSITION;
- float2 uv : TEXCOORD0;
- float depth : TEXCOORD1;
- UNITY_VERTEX_OUTPUT_STEREO
- };
- struct appdata {
- float4 vertex : POSITION;
- float3 normal : NORMAL;
- fixed4 color : COLOR;
- float4 texcoord : TEXCOORD0;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- };
- v2f vert( appdata v ) {
- v2f o;
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
- TerrainAnimateTree(v.vertex, v.color.w);
- o.pos = UnityObjectToClipPos(v.vertex);
- o.uv = v.texcoord.xy;
- o.depth = COMPUTE_DEPTH_01;
- return o;
- }
- uniform sampler2D _MainTex;
- uniform fixed _Cutoff;
- fixed4 frag(v2f i) : SV_Target {
- half alpha = tex2D(_MainTex, i.uv).a;
- clip (alpha - _Cutoff);
- return fixed4(EncodeFloatRGB (i.depth), 1);
- }
- ENDCG
- }
- Pass {
- Cull Front
- CGPROGRAM
- #pragma target 3.0
- #pragma vertex vert
- #pragma fragment frag
- #include "UnityCG.cginc"
- #include "CGIncludes/ShaderMaths.cginc"
- #include "TerrainEngine.cginc"
- struct v2f {
- float4 pos : SV_POSITION;
- float2 uv : TEXCOORD0;
- float depth : TEXCOORD1;
- UNITY_VERTEX_OUTPUT_STEREO
- };
- struct appdata {
- float4 vertex : POSITION;
- float3 normal : NORMAL;
- fixed4 color : COLOR;
- float4 texcoord : TEXCOORD0;
- UNITY_VERTEX_INPUT_INSTANCE_ID
- };
- v2f vert( appdata v ) {
- v2f o;
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
- TerrainAnimateTree(v.vertex, v.color.w);
- o.pos = UnityObjectToClipPos(v.vertex);
- o.uv = v.texcoord.xy;
- o.depth = COMPUTE_DEPTH_01;
- return o;
- }
- uniform sampler2D _MainTex;
- uniform fixed _Cutoff;
- fixed4 frag(v2f i) : SV_Target {
- fixed4 texcol = tex2D( _MainTex, i.uv );
- clip( texcol.a - _Cutoff );
- return fixed4(EncodeFloatRGB (i.depth), 1);
- }
- ENDCG
- }
- }
- SubShader {
- Tags { "RenderType"="TreeBillboard" }
- Pass {
- Cull Off
- CGPROGRAM
- #pragma target 3.0
- #pragma vertex vert
- #pragma fragment frag
- #include "UnityCG.cginc"
- #include "CGIncludes/ShaderMaths.cginc"
- #include "TerrainEngine.cginc"
- struct v2f {
- float4 pos : SV_POSITION;
- float2 uv : TEXCOORD0;
- float depth : TEXCOORD1;
- UNITY_VERTEX_OUTPUT_STEREO
- };
- v2f vert (appdata_tree_billboard v) {
- v2f o;
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
- TerrainBillboardTree(v.vertex, v.texcoord1.xy, v.texcoord.y);
- o.pos = UnityObjectToClipPos(v.vertex);
- o.uv.x = v.texcoord.x;
- o.uv.y = v.texcoord.y > 0;
- o.depth = COMPUTE_DEPTH_01;
- return o;
- }
- uniform sampler2D _MainTex;
- fixed4 frag(v2f i) : SV_Target {
- fixed4 texcol = tex2D( _MainTex, i.uv );
- clip( texcol.a - 0.001 );
- return fixed4(EncodeFloatRGB (i.depth), 1);
- }
- ENDCG
- }
- }
- SubShader {
- Tags { "RenderType"="GrassBillboard" }
- Pass {
- Cull Off
- CGPROGRAM
- #pragma target 3.0
- #pragma vertex vert
- #pragma fragment frag
- #include "UnityCG.cginc"
- #include "CGIncludes/ShaderMaths.cginc"
- #include "TerrainEngine.cginc"
- struct v2f {
- float4 pos : SV_POSITION;
- fixed4 color : COLOR;
- float2 uv : TEXCOORD0;
- float depth : TEXCOORD1;
- UNITY_VERTEX_OUTPUT_STEREO
- };
- v2f vert (appdata_full v) {
- v2f o;
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
- WavingGrassBillboardVert (v);
- o.color = v.color;
- o.pos = UnityObjectToClipPos(v.vertex);
- o.uv = v.texcoord.xy;
- o.depth = COMPUTE_DEPTH_01;
- return o;
- }
- uniform sampler2D _MainTex;
- uniform fixed _Cutoff;
- fixed4 frag(v2f i) : SV_Target {
- fixed4 texcol = tex2D( _MainTex, i.uv );
- fixed alpha = texcol.a * i.color.a;
- clip( alpha - _Cutoff );
- return fixed4(EncodeFloatRGB (i.depth), 1);
- }
- ENDCG
- }
- }
- SubShader {
- Tags { "RenderType"="Grass" }
- Pass {
- Cull Off
- CGPROGRAM
- #pragma target 3.0
- #pragma vertex vert
- #pragma fragment frag
- #include "UnityCG.cginc"
- #include "CGIncludes/ShaderMaths.cginc"
- #include "TerrainEngine.cginc"
- struct v2f {
- float4 pos : SV_POSITION;
- fixed4 color : COLOR;
- float2 uv : TEXCOORD0;
- float depth : TEXCOORD1;
- UNITY_VERTEX_OUTPUT_STEREO
- };
- v2f vert (appdata_full v) {
- v2f o;
- UNITY_SETUP_INSTANCE_ID(v);
- UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
- WavingGrassVert (v);
- o.color = v.color;
- o.pos = UnityObjectToClipPos(v.vertex);
- o.uv = v.texcoord;
- o.depth = COMPUTE_DEPTH_01;
- return o;
- }
- uniform sampler2D _MainTex;
- uniform fixed _Cutoff;
- fixed4 frag(v2f i) : SV_Target {
- fixed4 texcol = tex2D( _MainTex, i.uv );
- fixed alpha = texcol.a * i.color.a;
- clip( alpha - _Cutoff );
- return fixed4(EncodeFloatRGB (i.depth), 1);
- }
- ENDCG
- }
- }
- Fallback Off
- }
|