From d97cbbef750c86a329ce7669fd532ad7f7593839 Mon Sep 17 00:00:00 2001 From: yum Date: Wed, 21 Aug 2024 02:14:53 -0700 Subject: Add discard feature Like UV tile discard, but less useful! --- Editor/tooner.cs | 18 ++++++++++++++++++ feature_macros.cginc | 1 + globals.cginc | 4 ++++ tooner.shader | 3 +++ tooner_lighting.cginc | 6 ++++++ 5 files changed, 32 insertions(+) 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); -- cgit v1.2.3