summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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;
}