Add shaders
This commit is contained in:
@@ -0,0 +1,556 @@
|
||||
// Upgrade NOTE: removed variant '__' where variant LOD_FADE_PERCENTAGE is used.
|
||||
|
||||
Shader "GlobalSnow/Snow" {
|
||||
|
||||
/////////// OPAQUE OBJECTS //////////////////////////////////////////////////////////
|
||||
|
||||
SubShader {
|
||||
Tags { "RenderType"="Opaque" }
|
||||
CGPROGRAM
|
||||
#pragma surface surf BlinnPhong vertex:vert keepalpha addshadow exclude_path:prepass nometa exclude_path:deferred
|
||||
#pragma target 3.0
|
||||
#pragma fragmentoption ARB_precision_hint_fastest
|
||||
#pragma multi_compile __ GLOBALSNOW_FLAT_SHADING GLOBALSNOW_RELIEF GLOBALSNOW_OCCLUSION
|
||||
#pragma multi_compile __ GLOBALSNOW_OPAQUE_CUTOUT
|
||||
#pragma multi_compile __ GLOBALSNOW_FOOTPRINTS
|
||||
#pragma multi_compile __ GLOBALSNOW_TERRAINMARKS
|
||||
#define GLOBALSNOW_ENABLE_SLOPE_CONTROL 1
|
||||
#define GLOBALSNOW_IS_TERRAIN 1
|
||||
#include "GlobalSnow.cginc"
|
||||
|
||||
void vert (inout appdata_full v, out Input o) {
|
||||
UNITY_INITIALIZE_OUTPUT(Input,o);
|
||||
if (_GS_ReliefFlag>0) { // Provide tangents for Terrain
|
||||
v.tangent.xyz = cross(v.normal, float3(0,0,1));
|
||||
v.tangent.w = -1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void surf (Input IN, inout SurfaceOutput o) {
|
||||
// Check alpha
|
||||
#if GLOBALSNOW_OPAQUE_CUTOUT
|
||||
fixed4 textureColor = tex2D(_MainTex, IN.uv_MainTex);
|
||||
clip(textureColor.a + textureColor.g - 0.01);
|
||||
#endif
|
||||
SetSnowCoverage(IN, o);
|
||||
}
|
||||
|
||||
ENDCG
|
||||
}
|
||||
|
||||
|
||||
/////////// TERRAIN ////////////////////////////////////////////////////////////////
|
||||
|
||||
SubShader {
|
||||
Tags { "RenderType"="TerrainOpaque" }
|
||||
CGPROGRAM
|
||||
#pragma surface surf BlinnPhong keepalpha addshadow exclude_path:deferred exclude_path:prepass nometa
|
||||
#pragma target 3.0
|
||||
#pragma fragmentoption ARB_precision_hint_fastest
|
||||
#pragma multi_compile __ GLOBALSNOW_FLAT_SHADING GLOBALSNOW_RELIEF GLOBALSNOW_OCCLUSION
|
||||
#pragma multi_compile __ GLOBALSNOW_FOOTPRINTS
|
||||
#pragma multi_compile __ GLOBALSNOW_TERRAINMARKS
|
||||
#define GLOBALSNOW_ENABLE_SLOPE_CONTROL 1
|
||||
#define GLOBALSNOW_IS_TERRAIN 1
|
||||
#include "GlobalSnow.cginc"
|
||||
|
||||
void surf (Input IN, inout SurfaceOutput o) {
|
||||
SetSnowCoverage(IN, o);
|
||||
}
|
||||
|
||||
ENDCG
|
||||
}
|
||||
|
||||
/////////// OPAQUE OBJECTS //////////////////////////////////////////////////////////
|
||||
|
||||
SubShader {
|
||||
Tags { "RenderType"="TransparentCutout" }
|
||||
CGPROGRAM
|
||||
#pragma surface surf BlinnPhong keepalpha addshadow exclude_path:deferred exclude_path:prepass nometa noforwardadd
|
||||
#pragma target 3.0
|
||||
#pragma fragmentoption ARB_precision_hint_fastest
|
||||
#pragma multi_compile __ GLOBALSNOW_FLAT_SHADING
|
||||
#include "GlobalSnow.cginc"
|
||||
|
||||
void surf (Input IN, inout SurfaceOutput o) {
|
||||
// Check alpha
|
||||
fixed4 textureColor = tex2D(_MainTex, IN.uv_MainTex);
|
||||
clip(textureColor.a - 0.01);
|
||||
SetSnowCoverage(IN, o);
|
||||
}
|
||||
|
||||
ENDCG
|
||||
}
|
||||
|
||||
|
||||
/////////// SPECIAL EXCLUDED OBJECTS //////////////////////////////////////////////////
|
||||
|
||||
SubShader {
|
||||
Tags { "RenderType"="AntiSnow" }
|
||||
|
||||
Pass {
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex vert
|
||||
#pragma fragment frag
|
||||
#pragma fragmentoption ARB_precision_hint_fastest
|
||||
#include "UnityCG.cginc"
|
||||
|
||||
struct v2f {
|
||||
float4 pos : SV_POSITION;
|
||||
};
|
||||
|
||||
v2f vert (appdata_base v) {
|
||||
v2f o;
|
||||
o.pos = UnityObjectToClipPos(v.vertex);
|
||||
return o;
|
||||
}
|
||||
|
||||
fixed4 frag(v2f i) : SV_Target {
|
||||
return fixed4(0,0,0,0);
|
||||
}
|
||||
ENDCG
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
SubShader {
|
||||
Tags { "RenderType"="ParticleCutOut" }
|
||||
|
||||
Pass {
|
||||
Cull Off
|
||||
CGPROGRAM
|
||||
#pragma vertex vert
|
||||
#pragma fragment frag
|
||||
#pragma fragmentoption ARB_precision_hint_fastest
|
||||
#include "UnityCG.cginc"
|
||||
|
||||
sampler2D _MainTex;
|
||||
fixed _Cutoff;
|
||||
|
||||
struct v2f {
|
||||
float4 pos : SV_POSITION;
|
||||
float2 uv : TEXCOORD0;
|
||||
};
|
||||
|
||||
v2f vert (appdata_base v) {
|
||||
v2f o;
|
||||
o.pos = UnityObjectToClipPos(v.vertex);
|
||||
o.uv = v.texcoord.xy;
|
||||
return o;
|
||||
}
|
||||
|
||||
fixed4 frag(v2f i) : SV_Target {
|
||||
fixed4 co = tex2D(_MainTex, i.uv);
|
||||
clip (co.a - _Cutoff);
|
||||
return fixed4(0,0,0,0);
|
||||
}
|
||||
ENDCG
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/////////// TreeOpaque ///////////////////////////////////////////////////////////////////
|
||||
|
||||
SubShader {
|
||||
Tags { "RenderType"="TreeOpaque" "DisableBatching"="True" }
|
||||
CGPROGRAM
|
||||
#pragma surface surf BlinnPhong vertex:vert keepalpha addshadow exclude_path:deferred exclude_path:prepass nometa noforwardadd
|
||||
#pragma target 3.0
|
||||
#pragma fragmentoption ARB_precision_hint_fastest
|
||||
#pragma multi_compile __ GLOBALSNOW_FLAT_SHADING
|
||||
#define GLOBALSNOW_MOVING_OBJECT
|
||||
#include "UnityCG.cginc"
|
||||
#include "TerrainEngine.cginc"
|
||||
#include "GlobalSnow.cginc"
|
||||
|
||||
void vert (inout appdata_full v, out Input data) {
|
||||
UNITY_INITIALIZE_OUTPUT(Input, data);
|
||||
float3 worldPosOrig = mul(unity_ObjectToWorld, v.vertex).xyz;
|
||||
TerrainAnimateTree(v.vertex, v.color.w);
|
||||
float3 worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
|
||||
data.wposOffset = worldPos - worldPosOrig;
|
||||
}
|
||||
|
||||
void surf (Input IN, inout SurfaceOutput o) {
|
||||
SetSnowCoverage(IN, o);
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
/////////// SpeedTree ///////////////////////////////////////////////////////////////////
|
||||
|
||||
SubShader {
|
||||
Tags { "RenderType"="SnowedSpeedTree" "DisableBatching"="LODFading" }
|
||||
LOD 400
|
||||
Cull [_Cull]
|
||||
|
||||
|
||||
CGPROGRAM
|
||||
#pragma surface surf Lambert vertex:SpeedTreeVert nolightmap keepalpha exclude_path:deferred exclude_path:prepass nometa noforwardadd noshadowmask // dithercrossfade // bug in Unity dithercrossfade raised shader warning
|
||||
#pragma target 3.0
|
||||
#pragma fragmentoption ARB_precision_hint_fastest
|
||||
// #pragma multi_compile_vertex __ LOD_FADE_PERCENTAGE
|
||||
#pragma instancing_options assumeuniformscaling lodfade maxcount:50
|
||||
#pragma multi_compile GEOM_TYPE_BRANCH GEOM_TYPE_BRANCH_DETAIL GEOM_TYPE_FROND GEOM_TYPE_LEAF GEOM_TYPE_MESH
|
||||
#pragma multi_compile __ GLOBALSNOW_DISCARD_LEAVES
|
||||
#define ENABLE_WIND
|
||||
|
||||
#include "GlobalSnowForwardOptions.cginc"
|
||||
#include "SpeedTree/SnowedSpeedTreeCommon.cginc"
|
||||
#include "SpeedTree/SnowedSpeedTree.cginc"
|
||||
|
||||
void surf(Input IN, inout SurfaceOutput OUT) {
|
||||
#if GEOM_TYPE_LEAF && GLOBALSNOW_DISCARD_LEAVES
|
||||
discard;
|
||||
#else
|
||||
SpeedTreeFragOut o;
|
||||
SpeedTreeFrag(IN, o);
|
||||
SPEEDTREE_COPY_FRAG(OUT, o)
|
||||
SetTreeCoverage(IN, OUT);
|
||||
#endif
|
||||
}
|
||||
ENDCG
|
||||
|
||||
Pass
|
||||
{
|
||||
Tags { "LightMode" = "ShadowCaster" }
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex vert
|
||||
#pragma fragment frag
|
||||
#pragma fragmentoption ARB_precision_hint_fastest
|
||||
#pragma target 3.0
|
||||
#pragma multi_compile_vertex LOD_FADE_PERCENTAGE LOD_FADE_CROSSFADE
|
||||
#pragma multi_compile_fragment __ LOD_FADE_CROSSFADE
|
||||
#pragma multi_compile_instancing
|
||||
#pragma multi_compile GEOM_TYPE_BRANCH GEOM_TYPE_BRANCH_DETAIL GEOM_TYPE_FROND GEOM_TYPE_LEAF GEOM_TYPE_MESH
|
||||
#pragma multi_compile __ GLOBALSNOW_DISCARD_LEAVES
|
||||
#pragma multi_compile_shadowcaster
|
||||
#define ENABLE_WIND
|
||||
#include "SpeedTree/SnowedSpeedTreeCommon.cginc"
|
||||
|
||||
struct v2f
|
||||
{
|
||||
V2F_SHADOW_CASTER;
|
||||
#ifdef SPEEDTREE_ALPHATEST
|
||||
half2 uv : TEXCOORD1;
|
||||
#endif
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
};
|
||||
|
||||
v2f vert(SpeedTreeVB v)
|
||||
{
|
||||
v2f o;
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
UNITY_TRANSFER_INSTANCE_ID(v, o);
|
||||
#ifdef SPEEDTREE_ALPHATEST
|
||||
o.uv = v.texcoord.xy;
|
||||
#endif
|
||||
OffsetSpeedTreeVertex(v, unity_LODFade.x);
|
||||
TRANSFER_SHADOW_CASTER_NORMALOFFSET(o)
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
float4 frag(v2f i) : SV_Target
|
||||
{
|
||||
#if GEOM_TYPE_LEAF && GLOBALSNOW_DISCARD_LEAVES
|
||||
discard;
|
||||
return 0;
|
||||
#else
|
||||
UNITY_SETUP_INSTANCE_ID(i);
|
||||
#ifdef SPEEDTREE_ALPHATEST
|
||||
clip(tex2D(_MainTex, i.uv).a * _Color.a - _Cutoff);
|
||||
#endif
|
||||
UNITY_APPLY_DITHER_CROSSFADE(i.pos.xy);
|
||||
SHADOW_CASTER_FRAGMENT(i)
|
||||
#endif
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
}
|
||||
|
||||
/////////// SpeedTree Billboard ///////////////////////////////////////////////////////////////////
|
||||
|
||||
SubShader {
|
||||
Tags { "Queue"="AlphaTest" "IgnoreProjector"="True" "RenderType"="SnowedSpeedTreeBillboard" "DisableBatching"="LODFading" }
|
||||
LOD 400
|
||||
Cull Off
|
||||
|
||||
CGPROGRAM
|
||||
#pragma surface surf Lambert vertex:SpeedTreeBillboardVert nolightmap keepalpha exclude_path:deferred exclude_path:prepass nometa noforwardadd addshadow noinstancing
|
||||
#pragma target 3.0
|
||||
#pragma fragmentoption ARB_precision_hint_fastest
|
||||
#pragma multi_compile __ LOD_FADE_CROSSFADE
|
||||
#pragma multi_compile __ BILLBOARD_FACE_CAMERA_POS
|
||||
#define ENABLE_WIND
|
||||
#include "SpeedTree/SnowedSpeedTreeBillboardCommon.cginc"
|
||||
#include "SpeedTree/SnowedSpeedTreeBillboard.cginc"
|
||||
|
||||
void surf(Input IN, inout SurfaceOutput OUT)
|
||||
{
|
||||
SpeedTreeFragOut o;
|
||||
SpeedTreeFrag(IN, o);
|
||||
SPEEDTREE_COPY_FRAG(OUT, o)
|
||||
SetTreeBillboardCoverage(IN, OUT);
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
/////////// Grass ///////////////////////////////////////////////////////////////////
|
||||
|
||||
SubShader {
|
||||
Tags { "Queue" = "Geometry+200" "IgnoreProjector"="True" "RenderType"="Grass" "DisableBatching"="True" }
|
||||
Cull Off
|
||||
LOD 200
|
||||
|
||||
CGPROGRAM
|
||||
#pragma surface surf Lambert vertex:WavingGrassVert keepalpha exclude_path:deferred exclude_path:prepass nometa
|
||||
#pragma target 3.0
|
||||
#pragma fragmentoption ARB_precision_hint_fastest
|
||||
#include "GlobalSnowForwardOptions.cginc"
|
||||
#include "TerrainEngine.cginc"
|
||||
#include "Nature/SnowedGrass.cginc"
|
||||
|
||||
sampler2D _MainTex;
|
||||
fixed _Cutoff;
|
||||
|
||||
void surf (Input IN, inout SurfaceOutput o) {
|
||||
fixed4 c = tex2D(_MainTex, IN.uv_MainTex); // * IN.color;
|
||||
clip (c.a - _Cutoff);
|
||||
SetGrassCoverage(IN, o);
|
||||
}
|
||||
ENDCG
|
||||
|
||||
Pass {
|
||||
Tags{ "LightMode" = "ShadowCaster" }
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex vert
|
||||
#pragma fragment frag
|
||||
#pragma fragmentoption ARB_precision_hint_fastest
|
||||
#pragma target 3.0
|
||||
#pragma multi_compile_shadowcaster
|
||||
#include "UnityCG.cginc"
|
||||
#include "TerrainEngine.cginc"
|
||||
|
||||
struct v2f {
|
||||
V2F_SHADOW_CASTER;
|
||||
half2 uv : TEXCOORD1;
|
||||
};
|
||||
|
||||
sampler2D _MainTex;
|
||||
fixed _Cutoff;
|
||||
|
||||
|
||||
v2f vert(appdata_full v) {
|
||||
float waveAmount = v.color.a * _WaveAndDistance.z;
|
||||
v.color = TerrainWaveGrass(v.vertex, waveAmount, v.color);
|
||||
|
||||
v2f o;
|
||||
TRANSFER_SHADOW_CASTER_NORMALOFFSET(o)
|
||||
o.uv = v.texcoord.xy;
|
||||
return o;
|
||||
}
|
||||
|
||||
float4 frag(v2f i) : SV_Target {
|
||||
clip(tex2D(_MainTex, i.uv).a - _Cutoff);
|
||||
SHADOW_CASTER_FRAGMENT(i)
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
}
|
||||
|
||||
/////////// Grass Billboard ///////////////////////////////////////////////////////////////////
|
||||
|
||||
SubShader {
|
||||
Tags { "Queue" = "Geometry+200" "IgnoreProjector"="True" "RenderType"="GrassBillboard" "DisableBatching"="True" }
|
||||
Cull Off
|
||||
LOD 200
|
||||
|
||||
CGPROGRAM
|
||||
#pragma surface surf Lambert vertex:WavingGrassBillboardVert nolightmap keepalpha exclude_path:deferred exclude_path:prepass nometa noforwardadd
|
||||
#pragma target 3.0
|
||||
#pragma fragmentoption ARB_precision_hint_fastest
|
||||
#include "GlobalSnowForwardOptions.cginc"
|
||||
#include "UnityCG.cginc"
|
||||
#include "TerrainEngine.cginc"
|
||||
#include "Nature/SnowedGrass.cginc"
|
||||
|
||||
sampler2D _MainTex;
|
||||
fixed _Cutoff;
|
||||
|
||||
void surf (Input IN, inout SurfaceOutput o) {
|
||||
fixed4 c = tex2D(_MainTex, IN.uv_MainTex); // * IN.color;
|
||||
clip (c.a - _Cutoff);
|
||||
SetGrassCoverage(IN, o);
|
||||
}
|
||||
|
||||
ENDCG
|
||||
|
||||
Pass{
|
||||
Tags{ "LightMode" = "ShadowCaster" }
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex vert
|
||||
#pragma fragment frag
|
||||
#pragma target 3.0
|
||||
#pragma multi_compile_shadowcaster
|
||||
#include "UnityCG.cginc"
|
||||
#include "TerrainEngine.cginc"
|
||||
|
||||
struct v2f {
|
||||
V2F_SHADOW_CASTER;
|
||||
half2 uv : TEXCOORD1;
|
||||
};
|
||||
|
||||
sampler2D _MainTex;
|
||||
fixed _Cutoff;
|
||||
|
||||
|
||||
v2f vert(appdata_full v) {
|
||||
TerrainBillboardGrass(v.vertex, v.tangent.xy);
|
||||
// wave amount defined by the grass height
|
||||
float waveAmount = v.tangent.y;
|
||||
v.color = TerrainWaveGrass(v.vertex, waveAmount, v.color);
|
||||
|
||||
v2f o;
|
||||
o.uv = v.texcoord.xy;
|
||||
TRANSFER_SHADOW_CASTER_NORMALOFFSET(o)
|
||||
return o;
|
||||
}
|
||||
|
||||
float4 frag(v2f i) : SV_Target{
|
||||
clip(tex2D(_MainTex, i.uv).a - _Cutoff);
|
||||
SHADOW_CASTER_FRAGMENT(i)
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/////////// Tree Bark ///////////////////////////////////////////////////////////////////
|
||||
|
||||
SubShader {
|
||||
Tags { "RenderType"="TreeBark" }
|
||||
|
||||
CGPROGRAM
|
||||
#pragma surface surf BlinnPhong vertex:TreeVertBark keepalpha addshadow nolightmap exclude_path:deferred exclude_path:prepass nometa noforwardadd
|
||||
#pragma multi_compile __ GLOBALSNOW_FLAT_SHADING
|
||||
#pragma target 3.0
|
||||
#pragma fragmentoption ARB_precision_hint_fastest
|
||||
#include "UnityBuiltin3xTreeLibrary.cginc"
|
||||
#include "GlobalSnow.cginc"
|
||||
|
||||
void surf (Input IN, inout SurfaceOutput o) {
|
||||
SetSnowCoverage(IN, o);
|
||||
}
|
||||
|
||||
ENDCG
|
||||
}
|
||||
|
||||
|
||||
///////////// Tree Leaf ///////////////////////////////////////////////////////////////////
|
||||
|
||||
SubShader {
|
||||
Tags { "RenderType"="TreeLeaf" }
|
||||
|
||||
CGPROGRAM
|
||||
#pragma surface surf BlinnPhong vertex:TreeVertLeaf keepalpha addshadow nolightmap exclude_path:deferred exclude_path:prepass nometa noforwardadd
|
||||
#pragma target 3.0
|
||||
#pragma fragmentoption ARB_precision_hint_fastest
|
||||
#include "UnityBuiltin3xTreeLibrary.cginc"
|
||||
#include "BasicCoverage.cginc"
|
||||
|
||||
fixed _Cutoff;
|
||||
|
||||
void surf (Input IN, inout SurfaceOutput o) {
|
||||
fixed4 c = tex2D(_MainTex, IN.uv_MainTex);
|
||||
clip (c.a - _Cutoff);
|
||||
o.Alpha = c.a;
|
||||
SetBasicCoverage(IN, o);
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
|
||||
///////////// Tree Transparent Cutout ///////////////////////////////////////////////////////////////////
|
||||
|
||||
SubShader {
|
||||
Tags { "RenderType"="TreeTransparentCutout" }
|
||||
|
||||
CGPROGRAM
|
||||
#pragma surface surf BlinnPhong vertex:vert keepalpha addshadow nolightmap exclude_path:deferred exclude_path:prepass nometa noforwardadd
|
||||
#pragma target 3.0
|
||||
#pragma fragmentoption ARB_precision_hint_fastest
|
||||
#define GLOBALSNOW_FLAT_SHADING 1
|
||||
#define GLOBALSNOW_MOVING_OBJECT
|
||||
#define GLOBALSNOW_IGNORE_SURFACE_NORMAL 1
|
||||
#include "UnityCG.cginc"
|
||||
#include "TerrainEngine.cginc"
|
||||
#include "GlobalSnow.cginc"
|
||||
|
||||
fixed _Cutoff;
|
||||
|
||||
void vert (inout appdata_full v, out Input data) {
|
||||
UNITY_INITIALIZE_OUTPUT(Input, data);
|
||||
float3 worldPosOrig = mul(unity_ObjectToWorld, v.vertex).xyz;
|
||||
TerrainAnimateTree(v.vertex, v.color.w);
|
||||
float3 worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
|
||||
data.wposOffset = worldPos - worldPosOrig;
|
||||
}
|
||||
|
||||
void surf (Input IN, inout SurfaceOutput o) {
|
||||
fixed4 c = tex2D(_MainTex, IN.uv_MainTex);
|
||||
clip (c.a - _Cutoff);
|
||||
SetSnowCoverage(IN, o);
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
|
||||
///////// Tree Billboard (uncomment this section and comment out [ImageEffectOpaque] in GlobalSnow.cs script to support them ///////////////////////////////////////////////////////
|
||||
|
||||
// SubShader {
|
||||
// Tags { "Queue" = "Transparent-100" "RenderType"="TreeBillboard" }
|
||||
//
|
||||
// Pass {
|
||||
// ZWrite Off Cull Off
|
||||
// CGPROGRAM
|
||||
// #pragma vertex vert
|
||||
// #pragma fragment frag
|
||||
// #include "GlobalSnowForwardOptions.cginc"
|
||||
// #include "UnityCG.cginc"
|
||||
// #include "TerrainEngine.cginc"
|
||||
// #include "Nature/SnowedTreeBillboard.cginc"
|
||||
//
|
||||
// v2f vert (appdata_tree_billboard v) {
|
||||
// v2f o;
|
||||
// UNITY_SETUP_INSTANCE_ID(v);
|
||||
// TerrainBillboardTree(v.vertex, v.texcoord1.xy, v.texcoord.y);
|
||||
// o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
|
||||
// o.pos = UnityObjectToClipPos(v.vertex);
|
||||
// o.uv.x = v.texcoord.x;
|
||||
// o.uv.y = v.texcoord.y > 0;
|
||||
// return o;
|
||||
// }
|
||||
|
||||
// sampler2D _MainTex;
|
||||
// fixed4 frag(v2f input) : SV_Target
|
||||
// {
|
||||
// fixed4 col = tex2D(_MainTex, input.uv);
|
||||
// clip(col.a - 0.001);
|
||||
// SetTreeBillboardCoverage(input, col);
|
||||
// return col;
|
||||
// }
|
||||
// ENDCG
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
Fallback Off
|
||||
}
|
||||
Reference in New Issue
Block a user