summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2024-05-26 18:33:46 -0700
committeryum <yum.food.vr@gmail.com>2024-05-26 18:33:46 -0700
commit33b2b8a3ab0ddea85c7a3f03f918fe5ee6874426 (patch)
tree961636e8cd124cba4d163d7fc93e321a650b746f
parent225ff402428d2d37c150028bf129f7450368c058 (diff)
Add transparent & transclipping rendering modes
-rw-r--r--Editor/tooner.cs24
-rw-r--r--tooner.shader4
-rw-r--r--tooner_lighting.cginc3
3 files changed, 30 insertions, 1 deletions
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;
}