summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--3ner.cginc20
-rw-r--r--3ner.shader32
-rw-r--r--features.cginc4
3 files changed, 51 insertions, 5 deletions
diff --git a/3ner.cginc b/3ner.cginc
index 26b2a3d..4aa4184 100644
--- a/3ner.cginc
+++ b/3ner.cginc
@@ -17,6 +17,10 @@
#include "vertex.cginc"
v2f vert(appdata v) {
+#if defined(SHADOW_CASTER_PASS) && !defined(_SHADOW_CASTER)
+ return (v2f) asfloat(-1);
+#endif
+
v2f o;
UNITY_SETUP_INSTANCE_ID(v);
UNITY_INITIALIZE_OUTPUT(v2f, o);
@@ -43,9 +47,10 @@ v2f vert(appdata v) {
UNITY_TRANSFER_LIGHTING(o, v.uv1);
UNITY_TRANSFER_FOG_COMBINED_WITH_EYE_VEC(o, o.pos);
- TRANSFER_SHADOW(o);
#if defined(SHADOW_CASTER_PASS)
TRANSFER_SHADOW_CASTER_NORMALOFFSET(o);
+#else
+ TRANSFER_SHADOW(o);
#endif
return o;
@@ -170,6 +175,11 @@ v2f domain(
UNITY_TRANSFER_INSTANCE_ID(patch[0], o);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
+#if defined(SHADOW_CASTER_PASS)
+ //TRANSFER_SHADOW_CASTER_NORMALOFFSET(o);
+#else
+ TRANSFER_SHADOW(o);
+#endif
return o;
}
//endex
@@ -217,11 +227,11 @@ void geom(triangle v2f tri_in[3],
}
//endex
-float4 frag(v2f i, uint facing : SV_IsFrontFace
-#if defined(_VERTEX_DEFORMATION_TUBES)
-, out float depth : SV_DepthLessEqual
+float4 frag(v2f i, uint facing : SV_IsFrontFace) : SV_Target {
+#if defined(SHADOW_CASTER_PASS)
+ return 0;
#endif
-) : SV_Target {
+
#if defined(_VERTEX_DEFORMATION_FRAGMENT_NORMALS)
deform_normal(i.objPos_orig, i.normal, i.tangent.xyz);
#endif
diff --git a/3ner.shader b/3ner.shader
index d8c9f56..5fca9e9 100644
--- a/3ner.shader
+++ b/3ner.shader
@@ -143,6 +143,12 @@ Shader "yum_food/3ner"
[ThryToggle(_UNLIT)] _Unlit("Unlit", Float) = 0
//endex
+ //ifex _Shadow_Caster_Enabled==0
+ [HideInInspector] m_start_Shadow_Caster("Shadow caster pass", Float) = 0
+ [ThryToggle(_SHADOW_CASTER)] _Shadow_Caster_Enabled("Enable", Float) = 1
+ [HideInInspector] m_end_Shadow_Caster("Shadow caster pass", Float) = 0
+ //endex
+
[HideInInspector] m_start_BRDF("BRDF", Float) = 0
_DFG_LUT("DFG LUT", 2D) = "white" {}
_BRDF_Specular_Min_Denom("Specular minimum denominator", Float) = 0.000001
@@ -259,6 +265,32 @@ Shader "yum_food/3ner"
#include "3ner.cginc"
ENDCG
}
+ Pass {
+ Name "SHADOW"
+ Tags { "LightMode" = "ShadowCaster" }
+ Fog { Color (0,0,0,0) }
+ Cull [_Cull]
+ ZTest [_ZTest]
+
+ CGPROGRAM
+ #pragma target 5.0
+ #pragma multi_compile_instancing
+ #pragma multi_compile_shadowcaster
+ #pragma vertex vert
+ //ifex _Geometry_Enabled==0
+ #pragma geometry geom
+ //endex
+ //ifex _Tessellation_Enabled==0
+ #pragma hull hull
+ #pragma domain domain
+ //endex
+ #pragma fragment frag
+
+ #define SHADOW_CASTER_PASS
+
+ #include "3ner.cginc"
+ ENDCG
+ }
}
CustomEditor "Thry.ShaderEditor"
}
diff --git a/features.cginc b/features.cginc
index 5ab9cb6..3788d6d 100644
--- a/features.cginc
+++ b/features.cginc
@@ -52,4 +52,8 @@
#pragma shader_feature_local _CENTER_OFFSET
//endex
+//ifex _Shadow_Caster_Enabled==0
+#pragma shader_feature_local _SHADOW_CASTER
+//endex
+
#endif // __FEATURES_INC