diff options
| author | yum <yum.food.vr@gmail.com> | 2024-08-21 02:14:53 -0700 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2024-08-21 02:14:53 -0700 |
| commit | d97cbbef750c86a329ce7669fd532ad7f7593839 (patch) | |
| tree | ff21b003bba710a994b1b0ad4c3b4bb5e572e773 | |
| parent | 1edac7f959f4763ccacce2329da4c1b8dc93b4c4 (diff) | |
Add discard feature
Like UV tile discard, but less useful!
| -rw-r--r-- | Editor/tooner.cs | 18 | ||||
| -rw-r--r-- | feature_macros.cginc | 1 | ||||
| -rw-r--r-- | globals.cginc | 4 | ||||
| -rw-r--r-- | tooner.shader | 3 | ||||
| -rw-r--r-- | tooner_lighting.cginc | 6 |
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); |
