From 33b2b8a3ab0ddea85c7a3f03f918fe5ee6874426 Mon Sep 17 00:00:00 2001 From: yum Date: Sun, 26 May 2024 18:33:46 -0700 Subject: Add transparent & transclipping rendering modes --- Editor/tooner.cs | 24 +++++++++++++++++++++++- tooner.shader | 4 ++++ tooner_lighting.cginc | 3 +++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/Editor/tooner.cs b/Editor/tooner.cs index 5bb21f9..184b653 100644 --- a/Editor/tooner.cs +++ b/Editor/tooner.cs @@ -678,7 +678,9 @@ public class ToonerGUI : ShaderGUI { enum RenderingMode { Opaque, Cutout, - Fade + Fade, + Transparent, + TransClipping, } enum CutoutMode { @@ -692,6 +694,10 @@ public class ToonerGUI : ShaderGUI { mode = RenderingMode.Cutout; } else if (target.IsKeywordEnabled("_RENDERING_FADE")) { mode = RenderingMode.Fade; + } else if (target.IsKeywordEnabled("_RENDERING_TRANSPARENT")) { + mode = RenderingMode.Transparent; + } else if (target.IsKeywordEnabled("_RENDERING_TRANSCLIPPING")) { + mode = RenderingMode.TransClipping; } EditorGUI.BeginChangeCheck(); @@ -705,6 +711,8 @@ public class ToonerGUI : ShaderGUI { RecordAction("Rendering mode"); SetKeyword("_RENDERING_CUTOUT", mode == RenderingMode.Cutout); SetKeyword("_RENDERING_FADE", mode == RenderingMode.Fade); + SetKeyword("_RENDERING_TRANSPARENT", mode == RenderingMode.Transparent); + SetKeyword("_RENDERING_TRANSCLIPPING", mode == RenderingMode.TransClipping); RenderQueue queue = RenderQueue.Geometry; string render_type = ""; @@ -730,6 +738,20 @@ public class ToonerGUI : ShaderGUI { dst_blend = BlendMode.OneMinusSrcAlpha; zwrite = false; break; + case RenderingMode.Transparent: + queue = RenderQueue.Transparent; + render_type = "Transparent"; + src_blend = BlendMode.One; + dst_blend = BlendMode.OneMinusSrcAlpha; + zwrite = false; + break; + case RenderingMode.TransClipping: + queue = RenderQueue.AlphaTest; + render_type = "Transparent"; + src_blend = BlendMode.One; + dst_blend = BlendMode.OneMinusSrcAlpha; + zwrite = true; + break; } foreach (Material m in editor.targets) { m.renderQueue = (int) queue; diff --git a/tooner.shader b/tooner.shader index a51cd54..3ad48ab 100644 --- a/tooner.shader +++ b/tooner.shader @@ -208,6 +208,8 @@ Shader "yum_food/tooner" #pragma shader_feature_local _ _RENDERING_CUTOUT #pragma shader_feature_local _ _RENDERING_CUTOUT_STOCHASTIC #pragma shader_feature_local _ _RENDERING_FADE + #pragma shader_feature_local _ _RENDERING_TRANSPARENT + #pragma shader_feature_local _ _RENDERING_TRANSCLIPPING #pragma shader_feature_local _ _OUTLINES #pragma shader_feature_local _ _GLITTER #pragma shader_feature_local _ _EXPLODE @@ -292,6 +294,8 @@ Shader "yum_food/tooner" #pragma shader_feature_local _RENDERING_CUTOUT #pragma shader_feature_local _RENDERING_CUTOUT_STOCHASTIC #pragma shader_feature_local _RENDERING_FADE + #pragma shader_feature_local _RENDERING_TRANSPARENT + #pragma shader_feature_local _RENDERING_TRANSCLIPPING #pragma shader_feature_local _OUTLINES #pragma shader_feature_local _GLITTER #pragma shader_feature_local _EXPLODE diff --git a/tooner_lighting.cginc b/tooner_lighting.cginc index f31dbd1..6a0dd87 100644 --- a/tooner_lighting.cginc +++ b/tooner_lighting.cginc @@ -897,6 +897,9 @@ float4 effect(inout v2f i) result = lerp(result, al_color, _Explode_Phase * _Explode_Phase); } #endif +#if defined(_RENDERING_TRANSPARENT) || defined(_RENDERING_TRANSCLIPPING) + result.rgb *= result.a; +#endif return result; } -- cgit v1.2.3