542 lines
17 KiB
Plaintext
542 lines
17 KiB
Plaintext
// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)
|
|
|
|
Shader "Hidden/GPUInstancer/Internal-DepthNormalsTexture" {
|
|
Properties{
|
|
_MainTex("", 2D) = "white" {}
|
|
_Cutoff("", Float) = 0.5
|
|
_Color("", Color) = (1,1,1,1)
|
|
}
|
|
|
|
SubShader{
|
|
Tags { "RenderType" = "Opaque" }
|
|
Pass {
|
|
CGPROGRAM
|
|
#include "UnityCG.cginc"
|
|
#include "Include/GPUInstancerInclude.cginc"
|
|
#pragma instancing_options procedural:setupGPUI
|
|
#pragma multi_compile_instancing
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
struct v2f {
|
|
float4 pos : SV_POSITION;
|
|
float4 nz : TEXCOORD0;
|
|
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.nz.xyz = COMPUTE_VIEW_NORMAL;
|
|
o.nz.w = COMPUTE_DEPTH_01;
|
|
return o;
|
|
}
|
|
fixed4 frag(v2f i) : SV_Target {
|
|
return EncodeDepthNormal(i.nz.w, i.nz.xyz);
|
|
}
|
|
ENDCG
|
|
}
|
|
}
|
|
|
|
SubShader{
|
|
Tags { "RenderType" = "TransparentCutout" }
|
|
Pass {
|
|
CGPROGRAM
|
|
#include "UnityCG.cginc"
|
|
#include "Include/GPUInstancerInclude.cginc"
|
|
#pragma instancing_options procedural:setupGPUI
|
|
#pragma multi_compile_instancing
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
struct v2f {
|
|
float4 pos : SV_POSITION;
|
|
float2 uv : TEXCOORD0;
|
|
float4 nz : 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.nz.xyz = COMPUTE_VIEW_NORMAL;
|
|
o.nz.w = 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 EncodeDepthNormal(i.nz.w, i.nz.xyz);
|
|
}
|
|
ENDCG
|
|
}
|
|
}
|
|
|
|
SubShader{
|
|
Tags { "RenderType" = "TreeBark" }
|
|
Pass {
|
|
CGPROGRAM
|
|
#include "UnityCG.cginc"
|
|
#include "Include/GPUInstancerInclude.cginc"
|
|
#pragma instancing_options procedural:setupGPUI
|
|
#pragma multi_compile_instancing
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
#include "Lighting.cginc"
|
|
#include "UnityBuiltin3xTreeLibrary.cginc"
|
|
struct v2f {
|
|
float4 pos : SV_POSITION;
|
|
float2 uv : TEXCOORD0;
|
|
float4 nz : 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.nz.xyz = COMPUTE_VIEW_NORMAL;
|
|
o.nz.w = COMPUTE_DEPTH_01;
|
|
return o;
|
|
}
|
|
fixed4 frag(v2f i) : SV_Target {
|
|
return EncodeDepthNormal(i.nz.w, i.nz.xyz);
|
|
}
|
|
ENDCG
|
|
}
|
|
}
|
|
SubShader{
|
|
Tags { "RenderType" = "TreeLeaf" }
|
|
Pass {
|
|
CGPROGRAM
|
|
#include "UnityCG.cginc"
|
|
#include "Include/GPUInstancerInclude.cginc"
|
|
#pragma instancing_options procedural:setupGPUI
|
|
#pragma multi_compile_instancing
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
#include "Lighting.cginc"
|
|
#include "UnityBuiltin3xTreeLibrary.cginc"
|
|
struct v2f {
|
|
float4 pos : SV_POSITION;
|
|
float2 uv : TEXCOORD0;
|
|
float4 nz : 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.nz.xyz = COMPUTE_VIEW_NORMAL;
|
|
o.nz.w = 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 EncodeDepthNormal(i.nz.w, i.nz.xyz);
|
|
}
|
|
ENDCG
|
|
}
|
|
}
|
|
|
|
SubShader{
|
|
Tags { "RenderType" = "TreeOpaque" "DisableBatching" = "True" }
|
|
Pass {
|
|
CGPROGRAM
|
|
#include "UnityCG.cginc"
|
|
#include "Include/GPUInstancerInclude.cginc"
|
|
#pragma instancing_options procedural:setupGPUI
|
|
#pragma multi_compile_instancing
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
#include "TerrainEngine.cginc"
|
|
struct v2f {
|
|
float4 pos : SV_POSITION;
|
|
float4 nz : TEXCOORD0;
|
|
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.nz.xyz = COMPUTE_VIEW_NORMAL;
|
|
o.nz.w = COMPUTE_DEPTH_01;
|
|
return o;
|
|
}
|
|
fixed4 frag(v2f i) : SV_Target {
|
|
return EncodeDepthNormal(i.nz.w, i.nz.xyz);
|
|
}
|
|
ENDCG
|
|
}
|
|
}
|
|
|
|
SubShader{
|
|
Tags { "RenderType" = "TreeTransparentCutout" "DisableBatching" = "True" }
|
|
Pass {
|
|
Cull Back
|
|
CGPROGRAM
|
|
#include "UnityCG.cginc"
|
|
#include "Include/GPUInstancerInclude.cginc"
|
|
#pragma instancing_options procedural:setupGPUI
|
|
#pragma multi_compile_instancing
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
#include "TerrainEngine.cginc"
|
|
|
|
struct v2f {
|
|
float4 pos : SV_POSITION;
|
|
float2 uv : TEXCOORD0;
|
|
float4 nz : 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.nz.xyz = COMPUTE_VIEW_NORMAL;
|
|
o.nz.w = 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 EncodeDepthNormal(i.nz.w, i.nz.xyz);
|
|
}
|
|
ENDCG
|
|
}
|
|
Pass {
|
|
Cull Front
|
|
CGPROGRAM
|
|
#include "UnityCG.cginc"
|
|
#include "Include/GPUInstancerInclude.cginc"
|
|
#pragma instancing_options procedural:setupGPUI
|
|
#pragma multi_compile_instancing
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
#include "TerrainEngine.cginc"
|
|
|
|
struct v2f {
|
|
float4 pos : SV_POSITION;
|
|
float2 uv : TEXCOORD0;
|
|
float4 nz : 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.nz.xyz = -COMPUTE_VIEW_NORMAL;
|
|
o.nz.w = 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 EncodeDepthNormal(i.nz.w, i.nz.xyz);
|
|
}
|
|
ENDCG
|
|
}
|
|
|
|
}
|
|
|
|
SubShader {
|
|
Tags{ "RenderType" = "TreeBillboard" }
|
|
Pass{
|
|
Cull Off
|
|
CGPROGRAM
|
|
#include "UnityCG.cginc"
|
|
#include "Include/GPUInstancerInclude.cginc"
|
|
#pragma instancing_options procedural:setupGPUI
|
|
#pragma multi_compile_instancing
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
#include "TerrainEngine.cginc"
|
|
struct v2f {
|
|
float4 pos : SV_POSITION;
|
|
float2 uv : TEXCOORD0;
|
|
float4 nz : 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.nz.xyz = float3(0,0,1);
|
|
o.nz.w = 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 EncodeDepthNormal(i.nz.w, i.nz.xyz);
|
|
}
|
|
ENDCG
|
|
}
|
|
}
|
|
|
|
SubShader{
|
|
Tags { "RenderType" = "GrassBillboard" }
|
|
Pass {
|
|
Cull Off
|
|
CGPROGRAM
|
|
#include "UnityCG.cginc"
|
|
#include "Include/GPUInstancerInclude.cginc"
|
|
#pragma instancing_options procedural:setupGPUI
|
|
#pragma multi_compile_instancing
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
#include "TerrainEngine.cginc"
|
|
|
|
struct v2f {
|
|
float4 pos : SV_POSITION;
|
|
fixed4 color : COLOR;
|
|
float2 uv : TEXCOORD0;
|
|
float4 nz : 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.nz.xyz = COMPUTE_VIEW_NORMAL;
|
|
o.nz.w = 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 EncodeDepthNormal(i.nz.w, i.nz.xyz);
|
|
}
|
|
ENDCG
|
|
}
|
|
}
|
|
|
|
SubShader{
|
|
Tags { "RenderType" = "Grass" }
|
|
Pass {
|
|
Cull Off
|
|
CGPROGRAM
|
|
#include "UnityCG.cginc"
|
|
#include "Include/GPUInstancerInclude.cginc"
|
|
#pragma instancing_options procedural:setupGPUI
|
|
#pragma multi_compile_instancing
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
#include "TerrainEngine.cginc"
|
|
struct v2f {
|
|
float4 pos : SV_POSITION;
|
|
fixed4 color : COLOR;
|
|
float2 uv : TEXCOORD0;
|
|
float4 nz : 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.nz.xyz = COMPUTE_VIEW_NORMAL;
|
|
o.nz.w = 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 EncodeDepthNormal(i.nz.w, i.nz.xyz);
|
|
}
|
|
ENDCG
|
|
}
|
|
}
|
|
|
|
SubShader{
|
|
Tags { "RenderType" = "GPUIFoliage" }
|
|
Pass {
|
|
Cull Off
|
|
CGPROGRAM
|
|
#include "UnityCG.cginc"
|
|
#include "Include/GPUInstancerInclude.cginc"
|
|
#pragma instancing_options procedural:setupGPUI
|
|
#pragma multi_compile_instancing
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
#include "TerrainEngine.cginc"
|
|
struct v2f {
|
|
float4 pos : SV_POSITION;
|
|
fixed4 color : COLOR;
|
|
float2 uv : TEXCOORD0;
|
|
float4 nz : TEXCOORD1;
|
|
UNITY_VERTEX_OUTPUT_STEREO
|
|
};
|
|
|
|
uniform float _IsBillboard;
|
|
uniform float _WindWavesOn;
|
|
uniform sampler2D _WindWaveNormalTexture;
|
|
uniform float2 _WindVector;
|
|
uniform float _WindWaveSize;
|
|
uniform float _WindIdleSway;
|
|
uniform float _WindWaveSway;
|
|
uniform sampler2D _MainTex;
|
|
uniform float4 _MainTex_ST;
|
|
uniform float _Cutoff = 0.5;
|
|
|
|
void GPUIFoliageVert(inout appdata_full v)
|
|
{
|
|
float BillboardOn261 = lerp(0.0,1.0,_IsBillboard);
|
|
float4 ase_vertex4Pos = v.vertex;
|
|
float4x4 break301 = unity_ObjectToWorld;
|
|
float3 appendResult302 = (float3(break301[ 0 ][ 0 ] , break301[ 1 ][ 0 ] , break301[ 2 ][ 0 ]));
|
|
float3 appendResult306 = (float3(break301[ 0 ][ 1 ] , break301[ 1 ][ 1 ] , break301[ 2 ][ 1 ]));
|
|
float3 appendResult307 = (float3(break301[ 0 ][ 2 ] , break301[ 1 ][ 2 ] , break301[ 2 ][ 2 ]));
|
|
float4 appendResult303 = (float4(( ase_vertex4Pos.x * length( appendResult302 ) ) , ( ase_vertex4Pos.y * length( appendResult306 ) ) , ( ase_vertex4Pos.z * length( appendResult307 ) ) , ase_vertex4Pos.w));
|
|
float4x4 break278 = UNITY_MATRIX_V;
|
|
float3 appendResult287 = (float3(break278[ 0 ][ 0 ] , break278[ 0 ][ 1 ] , break278[ 0 ][ 2 ]));
|
|
float3 normalizeResult288 = normalize( appendResult287 );
|
|
float3 appendResult295 = (float3(normalizeResult288));
|
|
float3 appendResult314 = (float3(break301[ 0 ][ 3 ] , break301[ 1 ][ 3 ] , break301[ 2 ][ 3 ]));
|
|
float3 normalizeResult504 = normalize( cross( float3(0,1,0) , ( appendResult314 - _WorldSpaceCameraPos ) ) );
|
|
#ifdef _BILLBOARDFACECAMPOS_ON
|
|
float3 staticSwitch496 = normalizeResult504;
|
|
#else
|
|
float3 staticSwitch496 = appendResult295;
|
|
#endif
|
|
float3 appendResult279 = (float3(break278[ 1 ][ 0 ] , break278[ 1 ][ 1 ] , break278[ 1 ][ 2 ]));
|
|
float3 normalizeResult283 = normalize( appendResult279 );
|
|
float3 appendResult296 = (float3(normalizeResult283));
|
|
float temp_output_416_0 = (appendResult296).y;
|
|
float3 break419 = appendResult296;
|
|
float4 appendResult420 = (float4(break419.x , ( temp_output_416_0 * -1.0 ) , break419.z , 0.0));
|
|
#ifdef _BILLBOARDFACECAMPOS_ON
|
|
float4 staticSwitch498 = float4(0,1,0,0);
|
|
#else
|
|
float4 staticSwitch498 = (( temp_output_416_0 > 0.0 ) ? float4( appendResult296 , 0.0 ) : appendResult420 );
|
|
#endif
|
|
float3 appendResult281 = (float3(break278[ 2 ][ 0 ] , break278[ 2 ][ 1 ] , break278[ 2 ][ 2 ]));
|
|
float3 normalizeResult284 = normalize( appendResult281 );
|
|
float3 appendResult297 = (float3(( normalizeResult284 * -1.0 )));
|
|
float3 appendResult322 = (float3(mul( appendResult303, float4x4(float4( staticSwitch496 , 0.0 ), staticSwitch498, float4( appendResult297 , 0.0 ), float4( 0,0,0,0 )) ).xyz));
|
|
float4 appendResult323 = (float4(( appendResult322 + appendResult314 ) , ase_vertex4Pos.w));
|
|
float4 transform327 = mul(unity_WorldToObject,appendResult323);
|
|
float4 BillboardedVertexPos320 = transform327;
|
|
float WindWavesOn112 = lerp(0.0,1.0,_WindWavesOn);
|
|
float2 WindDirVector29 = _WindVector;
|
|
float mulTime407 = _Time.y * ( length( WindDirVector29 ) * 0.01 );
|
|
float WindWaveSize128 = _WindWaveSize;
|
|
float3 ase_worldPos = mul( unity_ObjectToWorld, v.vertex );
|
|
float2 panner36 = ( mulTime407 * WindDirVector29 + ( ( 1.0 - (0.0 + (WindWaveSize128 - 0.0) * (0.9 - 0.0) / (1.0 - 0.0)) ) * 0.003 * (ase_worldPos).xz ));
|
|
float3 tex2DNode2 = UnpackNormal( tex2Dlod( _WindWaveNormalTexture, float4( panner36, 0, 0.0) ) );
|
|
float3 FinalWindVectors181 = tex2DNode2;
|
|
float3 break185 = FinalWindVectors181;
|
|
float3 appendResult186 = (float3(break185.x , 0.0 , break185.y));
|
|
float WindIdleSway197 = _WindIdleSway;
|
|
float3 ase_vertex3Pos = v.vertex.xyz;
|
|
float3 lerpResult230 = lerp( float3( 0,0,0 ) , ( appendResult186 * WindIdleSway197 ) , saturate( ase_vertex3Pos.y ));
|
|
float3 WindIdleSwayCalculated218 = lerpResult230;
|
|
float WindWaveSway191 = _WindWaveSway;
|
|
float WindWaveNoise126 = saturate( tex2DNode2.g );
|
|
float2 break206 = ( WindWaveNoise126 * WindDirVector29 );
|
|
float3 appendResult205 = (float3(break206.x , 0.0 , break206.y));
|
|
float3 lerpResult229 = lerp( float3( 0,0,0 ) , ( WindWaveSway191 * 20.0 * appendResult205 ) , saturate( ase_vertex3Pos.y ));
|
|
float3 WindWaveSwayCalculated220 = lerpResult229;
|
|
float3 lerpResult215 = lerp( WindIdleSwayCalculated218 , ( WindIdleSwayCalculated218 + ( WindWaveSwayCalculated220 * -1.0 ) ) , WindWaveNoise126);
|
|
float4 transform233 = mul(unity_WorldToObject,float4( (( WindWavesOn112 > 0.0 ) ? lerpResult215 : WindIdleSwayCalculated218 ) , 0.0 ));
|
|
float4 WindVertexOffset183 = transform233;
|
|
float4 FinalVertexPos336 = (( BillboardOn261 > 0.0 ) ? ( BillboardedVertexPos320 + WindVertexOffset183 ) : ( WindVertexOffset183 + ase_vertex4Pos ) );
|
|
v.vertex.xyz = FinalVertexPos336.xyz;
|
|
v.normal = float3(0,1,0);
|
|
}
|
|
|
|
|
|
v2f vert(appdata_full v) {
|
|
v2f o;
|
|
UNITY_SETUP_INSTANCE_ID(v);
|
|
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
|
GPUIFoliageVert(v);
|
|
o.color = v.color;
|
|
o.pos = UnityObjectToClipPos(v.vertex);
|
|
o.uv = v.texcoord;
|
|
o.nz.xyz = COMPUTE_VIEW_NORMAL;
|
|
o.nz.w = COMPUTE_DEPTH_01;
|
|
return o;
|
|
}
|
|
|
|
fixed4 frag(v2f i) : SV_Target {
|
|
fixed4 texcol = tex2D(_MainTex, i.uv);
|
|
fixed alpha = texcol.a * i.color.a;
|
|
clip(alpha - _Cutoff);
|
|
return EncodeDepthNormal(i.nz.w, i.nz.xyz);
|
|
}
|
|
ENDCG
|
|
}
|
|
}
|
|
Fallback Off
|
|
}
|