summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2024-08-21 02:14:53 -0700
committeryum <yum.food.vr@gmail.com>2024-08-21 02:14:53 -0700
commitd97cbbef750c86a329ce7669fd532ad7f7593839 (patch)
treeff21b003bba710a994b1b0ad4c3b4bb5e572e773
parent1edac7f959f4763ccacce2329da4c1b8dc93b4c4 (diff)
Add discard feature
Like UV tile discard, but less useful!
-rw-r--r--Editor/tooner.cs18
-rw-r--r--feature_macros.cginc1
-rw-r--r--globals.cginc4
-rw-r--r--tooner.shader3
-rw-r--r--tooner_lighting.cginc6
5 files changed, 32 insertions, 0 deletions
diff --git a/Editor/tooner.cs b/Editor/tooner.cs
index b51facb..d769a02 100644
--- a/Editor/tooner.cs
+++ b/Editor/tooner.cs
@@ -1487,6 +1487,24 @@ public class ToonerGUI : ShaderGUI {
RecordAction("Culling mode");
bc.floatValue = (float) cull_mode;
}
+
+ bc = FindProperty("_Discard_Enable_Static");
+ bool enabled = bc.floatValue > 1E-6;
+ EditorGUI.BeginChangeCheck();
+ enabled = EditorGUILayout.Toggle("Discard", enabled);
+ EditorGUI.EndChangeCheck();
+ bc.floatValue = enabled ? 1.0f : 0.0f;
+ SetKeyword("_DISCARD", enabled);
+ if (enabled) {
+ EditorGUI.indentLevel += 1;
+ bc = FindProperty("_Discard_Enable_Dynamic");
+ enabled = bc.floatValue > 1E-6;
+ EditorGUI.BeginChangeCheck();
+ enabled = EditorGUILayout.Toggle("Enable", enabled);
+ EditorGUI.EndChangeCheck();
+ bc.floatValue = enabled ? 1.0f : 0.0f;
+ EditorGUI.indentLevel -= 1;
+ }
}
void DoLighting() {
diff --git a/feature_macros.cginc b/feature_macros.cginc
index bdc1369..2afe253 100644
--- a/feature_macros.cginc
+++ b/feature_macros.cginc
@@ -142,6 +142,7 @@
#pragma shader_feature_local _ _CLEARCOAT_MASK
#pragma shader_feature_local _ _CLEARCOAT_MASK2
#pragma shader_feature_local _ _PROXIMITY_DIMMING
+#pragma shader_feature_local _ _DISCARD
#endif // __FEATURE_MACROS_INC
diff --git a/globals.cginc b/globals.cginc
index e070f7d..d2773b1 100644
--- a/globals.cginc
+++ b/globals.cginc
@@ -45,6 +45,10 @@ float3 shadowedReflections;
float3 _ReflShadows;
float3 _ReflShadowStrength;
+#if defined(_DISCARD)
+float _Discard_Enable_Dynamic;
+#endif
+
#if defined(_PROXIMITY_DIMMING)
float _Proximity_Dimming_Min_Dist;
float _Proximity_Dimming_Max_Dist;
diff --git a/tooner.shader b/tooner.shader
index 9131702..c14e607 100644
--- a/tooner.shader
+++ b/tooner.shader
@@ -439,6 +439,9 @@ Shader "yum_food/tooner"
shadowedReflections("shadowedReflections", Vector) = (0, 0, 0, 0)
_ReflShadows("_ReflShadows", Vector) = (0, 0, 0, 0)
_ReflShadowStrength("_ReflShadowStrength", Vector) = (0, 0, 0, 0)
+
+ _Discard_Enable_Static("Enable discard feature (static)", Float) = 0
+ _Discard_Enable_Dynamic("Enable discard feature (dynamic)", Float) = 0
}
SubShader
{
diff --git a/tooner_lighting.cginc b/tooner_lighting.cginc
index 1abf2bc..70df5ea 100644
--- a/tooner_lighting.cginc
+++ b/tooner_lighting.cginc
@@ -47,6 +47,12 @@ void getVertexLightColor(inout v2f i)
v2f vert(appdata v)
{
+#if defined(_DISCARD)
+ if (_Discard_Enable_Dynamic) {
+ return (v2f) (0.0 / 0.0);
+ }
+#endif
+
v2f o;
UNITY_INITIALIZE_OUTPUT(v2f, o);