128 lines
3.1 KiB
Plaintext
128 lines
3.1 KiB
Plaintext
|
Shader "Hidden/Nature/Tree Creator Leaves Optimized" {
|
||
|
Properties {
|
||
|
_Color ("Main Color", Color) = (1,1,1,1)
|
||
|
_TranslucencyColor ("Translucency Color", Color) = (0.73,0.85,0.41,1) // (187,219,106,255)
|
||
|
_Cutoff ("Alpha cutoff", Range(0,1)) = 0.3
|
||
|
_TranslucencyViewDependency ("View dependency", Range(0,1)) = 0.7
|
||
|
_ShadowStrength("Shadow Strength", Range(0,1)) = 0.8
|
||
|
_ShadowOffsetScale ("Shadow Offset Scale", Float) = 1
|
||
|
|
||
|
_MainTex ("Base (RGB) Alpha (A)", 2D) = "white" {}
|
||
|
_ShadowTex ("Shadow (RGB)", 2D) = "white" {}
|
||
|
_BumpSpecMap ("Normalmap (GA) Spec (R) Shadow Offset (B)", 2D) = "bump" {}
|
||
|
_TranslucencyMap ("Trans (B) Gloss(A)", 2D) = "white" {}
|
||
|
|
||
|
// These are here only to provide default values
|
||
|
[HideInInspector] _TreeInstanceColor ("TreeInstanceColor", Vector) = (1,1,1,1)
|
||
|
[HideInInspector] _TreeInstanceScale ("TreeInstanceScale", Vector) = (1,1,1,1)
|
||
|
[HideInInspector] _SquashAmount ("Squash", Float) = 1
|
||
|
}
|
||
|
|
||
|
SubShader {
|
||
|
Tags {
|
||
|
"IgnoreProjector"="True"
|
||
|
"RenderType"="TreeLeaf"
|
||
|
}
|
||
|
LOD 200
|
||
|
Cull Off
|
||
|
|
||
|
|
||
|
CGPROGRAM
|
||
|
#pragma surface surf Lambert alphatest:_Cutoff vertex:TreeVertLeaf nolightmap noforwardadd
|
||
|
//#pragma surface surf TreeLeaf alphatest:_Cutoff vertex:TreeVertLeaf nolightmap noforwardadd
|
||
|
#pragma target 3.0
|
||
|
|
||
|
#include "UnityBuiltin3xTreeLibrary.cginc"
|
||
|
|
||
|
sampler2D _MainTex;
|
||
|
sampler2D _BumpSpecMap;
|
||
|
sampler2D _TranslucencyMap;
|
||
|
|
||
|
struct Input {
|
||
|
float2 uv_MainTex;
|
||
|
fixed4 color : COLOR; // color.a = AO
|
||
|
half3 viewDir;
|
||
|
// half3 lightDir;
|
||
|
};
|
||
|
|
||
|
void surf (Input IN, inout SurfaceOutput o) {
|
||
|
|
||
|
fixed4 c = tex2D(_MainTex, IN.uv_MainTex);
|
||
|
fixed4 trngls = tex2D(_TranslucencyMap, IN.uv_MainTex);
|
||
|
|
||
|
|
||
|
half3 vd = pow(normalize(IN.viewDir), 12);
|
||
|
half vdlerp = lerp(1,0, vd.b);
|
||
|
|
||
|
o.Albedo = c.rgb * IN.color.rgb * IN.color.a;
|
||
|
//o.Albedo = vdlerp;
|
||
|
|
||
|
|
||
|
//o.Translucency = trngls.b;
|
||
|
//o.Gloss = trngls.a * _Color.r;
|
||
|
o.Alpha = saturate(c.a * vdlerp);
|
||
|
//o.Alpha = c.a;
|
||
|
|
||
|
|
||
|
half4 norspc = tex2D (_BumpSpecMap, IN.uv_MainTex);
|
||
|
//o.Specular = norspc.r;
|
||
|
o.Normal = UnpackNormalDXT5nm(norspc);
|
||
|
//o.Smoothness = 0;
|
||
|
//o.Metallic = 0;
|
||
|
o.Emission = _TranslucencyColor * 0.02;
|
||
|
}
|
||
|
ENDCG
|
||
|
|
||
|
// Pass to render object as a shadow caster
|
||
|
|
||
|
Pass {
|
||
|
Name "ShadowCaster"
|
||
|
Tags { "LightMode" = "ShadowCaster" }
|
||
|
|
||
|
CGPROGRAM
|
||
|
#pragma vertex vert_surf
|
||
|
#pragma fragment frag_surf
|
||
|
#pragma multi_compile_shadowcaster
|
||
|
#include "HLSLSupport.cginc"
|
||
|
#include "UnityCG.cginc"
|
||
|
#include "Lighting.cginc"
|
||
|
|
||
|
#define INTERNAL_DATA
|
||
|
#define WorldReflectionVector(data,normal) data.worldRefl
|
||
|
|
||
|
#include "UnityBuiltin3xTreeLibrary.cginc"
|
||
|
|
||
|
sampler2D _ShadowTex;
|
||
|
|
||
|
struct Input {
|
||
|
float2 uv_MainTex;
|
||
|
};
|
||
|
|
||
|
struct v2f_surf {
|
||
|
V2F_SHADOW_CASTER;
|
||
|
float2 hip_pack0 : TEXCOORD1;
|
||
|
};
|
||
|
float4 _ShadowTex_ST;
|
||
|
v2f_surf vert_surf (appdata_full v) {
|
||
|
v2f_surf o;
|
||
|
TreeVertLeaf (v);
|
||
|
o.hip_pack0.xy = TRANSFORM_TEX(v.texcoord, _ShadowTex);
|
||
|
TRANSFER_SHADOW_CASTER_NORMALOFFSET(o)
|
||
|
return o;
|
||
|
}
|
||
|
fixed _Cutoff;
|
||
|
float4 frag_surf (v2f_surf IN) : SV_Target {
|
||
|
half alpha = tex2D(_ShadowTex, IN.hip_pack0.xy).r;
|
||
|
clip (alpha - _Cutoff);
|
||
|
SHADOW_CASTER_FRAGMENT(IN)
|
||
|
}
|
||
|
ENDCG
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
Dependency "BillboardShader" = "Hidden/Nature/Tree Creator Leaves Rendertex"
|
||
|
}
|