summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2024-06-23 13:50:19 -0700
committeryum <yum.food.vr@gmail.com>2024-06-23 13:50:58 -0700
commit79e95c1ced341d0b7db7c2fb3a5c6c2ce623a265 (patch)
treee4fbbdf4f93f3f4e4985151cc4186c470f41cb6d
parenteadd7efade2162ac66d35c2a9c3e73bb5826f974 (diff)
Add gimmicks folder
Catch-all bag for some nascent research. Zero cost if unused. Also organize all shader-side keywords into a single .cginc.
-rw-r--r--Editor/tooner.cs35
-rw-r--r--feature_macros.cginc82
-rw-r--r--globals.cginc7
-rw-r--r--tooner.shader193
-rw-r--r--tooner_lighting.cginc23
5 files changed, 156 insertions, 184 deletions
diff --git a/Editor/tooner.cs b/Editor/tooner.cs
index 71e7271..d806f88 100644
--- a/Editor/tooner.cs
+++ b/Editor/tooner.cs
@@ -684,6 +684,36 @@ public class ToonerGUI : ShaderGUI {
}
}
+ void DoGimmicks() {
+ MaterialProperty bc;
+ bc = FindProperty("_Gimmick_Flat_Color_Enable_Static");
+ bool enabled = (bc.floatValue != 0.0);
+ EditorGUI.BeginChangeCheck();
+ enabled = EditorGUILayout.Toggle("Flat color", enabled);
+ EditorGUI.EndChangeCheck();
+ bc.floatValue = enabled ? 1.0f : 0.0f;
+ SetKeyword("_GIMMICK_FLAT_COLOR", enabled);
+
+ if (!enabled) {
+ return;
+ }
+
+ EditorGUI.indentLevel += 1;
+ EditorGUI.indentLevel -= 1;
+
+ bc = FindProperty("_Gimmick_Flat_Color_Enable_Dynamic");
+ enabled = (bc.floatValue != 0.0);
+ EditorGUI.BeginChangeCheck();
+ enabled = EditorGUILayout.Toggle("Enable (runtime switch)", enabled);
+ EditorGUI.EndChangeCheck();
+ bc.floatValue = enabled ? 1.0f : 0.0f;
+
+ bc = FindProperty("_Gimmick_Flat_Color_Color");
+ editor.ColorProperty(bc, "Color");
+ bc = FindProperty("_Gimmick_Flat_Color_Emission");
+ editor.ColorProperty(bc, "Emission");
+ }
+
enum RenderingMode {
Opaque,
Cutout,
@@ -938,6 +968,11 @@ public class ToonerGUI : ShaderGUI {
DoClones();
EditorGUI.indentLevel -= 1;
+ GUILayout.Label("Gimmicks", EditorStyles.boldLabel);
+ EditorGUI.indentLevel += 1;
+ DoGimmicks();
+ EditorGUI.indentLevel -= 1;
+
GUILayout.Label("Rendering", EditorStyles.boldLabel);
EditorGUI.indentLevel += 1;
DoRendering();
diff --git a/feature_macros.cginc b/feature_macros.cginc
new file mode 100644
index 0000000..5729b48
--- /dev/null
+++ b/feature_macros.cginc
@@ -0,0 +1,82 @@
+#ifndef __FEATURE_MACROS_INC
+#define __FEATURE_MACROS_INC
+
+#pragma shader_feature_local _ _BASECOLOR_MAP
+#pragma shader_feature_local _ _NORMAL_MAP
+#pragma shader_feature_local _ _METALLIC_MAP
+#pragma shader_feature_local _ _ROUGHNESS_MAP
+#pragma shader_feature_local _ _CUBEMAP
+#pragma shader_feature_local _ _EMISSION
+#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
+#pragma shader_feature_local _ _SCROLL
+#pragma shader_feature_local _ _UVSCROLL
+#pragma shader_feature_local _ _MATCAP0
+#pragma shader_feature_local _ _MATCAP0_MASK
+#pragma shader_feature_local _ _MATCAP1
+#pragma shader_feature_local _ _MATCAP1_MASK
+#pragma shader_feature_local _ _RIM_LIGHTING0
+#pragma shader_feature_local _ _RIM_LIGHTING0_MASK
+#pragma shader_feature_local _ _RIM_LIGHTING1
+#pragma shader_feature_local _ _RIM_LIGHTING1_MASK
+#pragma shader_feature_local _ _OKLAB
+#pragma shader_feature_local _ _CLONES
+#pragma shader_feature_local _ _PBR_OVERLAY0
+#pragma shader_feature_local _ _PBR_OVERLAY0_BASECOLOR_MAP
+#pragma shader_feature_local _ _PBR_OVERLAY0_EMISSION_MAP
+#pragma shader_feature_local _ _PBR_OVERLAY0_NORMAL_MAP
+#pragma shader_feature_local _ _PBR_OVERLAY0_ROUGHNESS_MAP
+#pragma shader_feature_local _ _PBR_OVERLAY0_METALLIC_MAP
+#pragma shader_feature_local _ _PBR_OVERLAY0_MASK
+#pragma shader_feature_local _ _PBR_OVERLAY0_MIX_ALPHA_BLEND
+#pragma shader_feature_local _ _PBR_OVERLAY0_MIX_ADD
+#pragma shader_feature_local _ _PBR_OVERLAY0_MIX_MIN
+#pragma shader_feature_local _ _PBR_OVERLAY0_MIX_MAX
+#pragma shader_feature_local _ _PBR_OVERLAY1
+#pragma shader_feature_local _ _PBR_OVERLAY1_BASECOLOR_MAP
+#pragma shader_feature_local _ _PBR_OVERLAY1_EMISSION_MAP
+#pragma shader_feature_local _ _PBR_OVERLAY1_NORMAL_MAP
+#pragma shader_feature_local _ _PBR_OVERLAY1_ROUGHNESS_MAP
+#pragma shader_feature_local _ _PBR_OVERLAY1_METALLIC_MAP
+#pragma shader_feature_local _ _PBR_OVERLAY1_MASK
+#pragma shader_feature_local _ _PBR_OVERLAY1_MIX_ALPHA_BLEND
+#pragma shader_feature_local _ _PBR_OVERLAY1_MIX_ADD
+#pragma shader_feature_local _ _PBR_OVERLAY1_MIX_MIN
+#pragma shader_feature_local _ _PBR_OVERLAY1_MIX_MAX
+#pragma shader_feature_local _ _PBR_OVERLAY2
+#pragma shader_feature_local _ _PBR_OVERLAY2_BASECOLOR_MAP
+#pragma shader_feature_local _ _PBR_OVERLAY2_EMISSION_MAP
+#pragma shader_feature_local _ _PBR_OVERLAY2_NORMAL_MAP
+#pragma shader_feature_local _ _PBR_OVERLAY2_ROUGHNESS_MAP
+#pragma shader_feature_local _ _PBR_OVERLAY2_METALLIC_MAP
+#pragma shader_feature_local _ _PBR_OVERLAY2_MASK
+#pragma shader_feature_local _ _PBR_OVERLAY2_MIX_ALPHA_BLEND
+#pragma shader_feature_local _ _PBR_OVERLAY2_MIX_ADD
+#pragma shader_feature_local _ _PBR_OVERLAY2_MIX_MIN
+#pragma shader_feature_local _ _PBR_OVERLAY2_MIX_MAX
+#pragma shader_feature_local _ _PBR_OVERLAY3
+#pragma shader_feature_local _ _PBR_OVERLAY3_BASECOLOR_MAP
+#pragma shader_feature_local _ _PBR_OVERLAY3_EMISSION_MAP
+#pragma shader_feature_local _ _PBR_OVERLAY3_NORMAL_MAP
+#pragma shader_feature_local _ _PBR_OVERLAY3_ROUGHNESS_MAP
+#pragma shader_feature_local _ _PBR_OVERLAY3_METALLIC_MAP
+#pragma shader_feature_local _ _PBR_OVERLAY3_MASK
+#pragma shader_feature_local _ _PBR_OVERLAY3_MIX_ALPHA_BLEND
+#pragma shader_feature_local _ _PBR_OVERLAY3_MIX_ADD
+#pragma shader_feature_local _ _PBR_OVERLAY3_MIX_MIN
+#pragma shader_feature_local _ _PBR_OVERLAY3_MIX_MAX
+#pragma shader_feature_local _ _LTCGI
+#pragma shader_feature_local _ _TESSELLATION
+#pragma shader_feature_local _ _MATCAP0_DISTORTION0
+#pragma shader_feature_local _ _MATCAP1_DISTORTION0
+#pragma shader_feature_local _ _AMBIENT_OCCLUSION
+#pragma shader_feature_local _ _GIMMICK_FLAT_COLOR
+
+#endif // __FEATURE_MACROS_INC
+
diff --git a/globals.cginc b/globals.cginc
index 6c3d51f..b283afb 100644
--- a/globals.cginc
+++ b/globals.cginc
@@ -236,5 +236,12 @@ float4 _LTCGI_SpecularColor;
float4 _LTCGI_DiffuseColor;
#endif
+#if defined(_GIMMICK_FLAT_COLOR)
+float _Gimmick_Flat_Color_Enable_Static;
+float _Gimmick_Flat_Color_Enable_Dynamic;
+float4 _Gimmick_Flat_Color_Color;
+float3 _Gimmick_Flat_Color_Emission;
+#endif
+
#endif
diff --git a/tooner.shader b/tooner.shader
index d03d53e..d21890f 100644
--- a/tooner.shader
+++ b/tooner.shader
@@ -189,6 +189,11 @@ Shader "yum_food/tooner"
_Shadow_Strength("Shadows strength", Range(0, 1)) = 1.0
_Mip_Multiplier("Mipmap multiplier", Float) = 1.0
+
+ _Gimmick_Flat_Color_Enable_Static("Enable flat color gimmick", Float) = 0.0
+ _Gimmick_Flat_Color_Enable_Dynamic("Enable flat color gimmick", Float) = 0.0
+ _Gimmick_Flat_Color_Color("Flat color gimmick color", Color) = (0, 0, 0, 1)
+ _Gimmick_Flat_Color_Emission("Flat color gimmick emission", Color) = (0, 0, 0, 1)
}
SubShader
{
@@ -216,82 +221,8 @@ Shader "yum_food/tooner"
#pragma target 5.0
#pragma multi_compile _ VERTEXLIGHT_ON SHADOWS_SCREEN
- #pragma shader_feature_local _ _BASECOLOR_MAP
- #pragma shader_feature_local _ _NORMAL_MAP
- #pragma shader_feature_local _ _METALLIC_MAP
- #pragma shader_feature_local _ _ROUGHNESS_MAP
- #pragma shader_feature_local _ _CUBEMAP
- #pragma shader_feature_local _ _EMISSION
- //#pragma shader_feature_local _ _SHADING_MODE_FLAT
- #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
- #pragma shader_feature_local _ _SCROLL
- #pragma shader_feature_local _ _UVSCROLL
- #pragma shader_feature_local _ _MATCAP0
- #pragma shader_feature_local _ _MATCAP0_MASK
- #pragma shader_feature_local _ _MATCAP1
- #pragma shader_feature_local _ _MATCAP1_MASK
- #pragma shader_feature_local _ _RIM_LIGHTING0
- #pragma shader_feature_local _ _RIM_LIGHTING0_MASK
- #pragma shader_feature_local _ _RIM_LIGHTING1
- #pragma shader_feature_local _ _RIM_LIGHTING1_MASK
- #pragma shader_feature_local _ _OKLAB
- #pragma shader_feature_local _ _CLONES
- #pragma shader_feature_local _ _PBR_OVERLAY0
- #pragma shader_feature_local _ _PBR_OVERLAY0_BASECOLOR_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY0_EMISSION_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY0_NORMAL_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY0_ROUGHNESS_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY0_METALLIC_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY0_MASK
- #pragma shader_feature_local _ _PBR_OVERLAY0_MIX_ALPHA_BLEND
- #pragma shader_feature_local _ _PBR_OVERLAY0_MIX_ADD
- #pragma shader_feature_local _ _PBR_OVERLAY0_MIX_MIN
- #pragma shader_feature_local _ _PBR_OVERLAY0_MIX_MAX
- #pragma shader_feature_local _ _PBR_OVERLAY1
- #pragma shader_feature_local _ _PBR_OVERLAY1_BASECOLOR_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY1_EMISSION_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY1_NORMAL_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY1_ROUGHNESS_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY1_METALLIC_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY1_MASK
- #pragma shader_feature_local _ _PBR_OVERLAY1_MIX_ALPHA_BLEND
- #pragma shader_feature_local _ _PBR_OVERLAY1_MIX_ADD
- #pragma shader_feature_local _ _PBR_OVERLAY1_MIX_MIN
- #pragma shader_feature_local _ _PBR_OVERLAY1_MIX_MAX
- #pragma shader_feature_local _ _PBR_OVERLAY2
- #pragma shader_feature_local _ _PBR_OVERLAY2_BASECOLOR_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY2_EMISSION_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY2_NORMAL_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY2_ROUGHNESS_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY2_METALLIC_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY2_MASK
- #pragma shader_feature_local _ _PBR_OVERLAY2_MIX_ALPHA_BLEND
- #pragma shader_feature_local _ _PBR_OVERLAY2_MIX_ADD
- #pragma shader_feature_local _ _PBR_OVERLAY2_MIX_MIN
- #pragma shader_feature_local _ _PBR_OVERLAY2_MIX_MAX
- #pragma shader_feature_local _ _PBR_OVERLAY3
- #pragma shader_feature_local _ _PBR_OVERLAY3_BASECOLOR_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY3_EMISSION_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY3_NORMAL_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY3_ROUGHNESS_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY3_METALLIC_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY3_MASK
- #pragma shader_feature_local _ _PBR_OVERLAY3_MIX_ALPHA_BLEND
- #pragma shader_feature_local _ _PBR_OVERLAY3_MIX_ADD
- #pragma shader_feature_local _ _PBR_OVERLAY3_MIX_MIN
- #pragma shader_feature_local _ _PBR_OVERLAY3_MIX_MAX
- #pragma shader_feature_local _ _LTCGI
- #pragma shader_feature_local _ _TESSELLATION
- #pragma shader_feature_local _ _MATCAP0_DISTORTION0
- #pragma shader_feature_local _ _MATCAP1_DISTORTION0
- #pragma shader_feature_local _ _AMBIENT_OCCLUSION
+
+ #include "feature_macros.cginc"
#pragma vertex vert
//#pragma vertex hull_vertex
@@ -321,66 +252,7 @@ Shader "yum_food/tooner"
#pragma multi_compile_fwdadd_fullshadows
#pragma multi_compile DIRECTIONAL DIRECTIONAL_COOKIE POINT SPOT
- #pragma shader_feature_local _BASECOLOR_MAP
- #pragma shader_feature_local _NORMAL_MAP
- #pragma shader_feature_local _METALLIC_MAP
- #pragma shader_feature_local _ROUGHNESS_MAP
- #pragma shader_feature_local _CUBEMAP
- #pragma shader_feature_local _ _EMISSION
- //#pragma shader_feature_local _SHADING_MODE_FLAT
- #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
- #pragma shader_feature_local _SCROLL
- #pragma shader_feature_local _UVSCROLL
- #pragma shader_feature_local _MATCAP0
- #pragma shader_feature_local _ _MATCAP0_MASK
- #pragma shader_feature_local _MATCAP1
- #pragma shader_feature_local _ _MATCAP1_MASK
- #pragma shader_feature_local _ _RIM_LIGHTING0
- #pragma shader_feature_local _ _RIM_LIGHTING0_MASK
- #pragma shader_feature_local _ _RIM_LIGHTING1
- #pragma shader_feature_local _ _RIM_LIGHTING1_MASK
- #pragma shader_feature_local _ _OKLAB
- #pragma shader_feature_local _ _CLONES
- #pragma shader_feature_local _ _PBR_OVERLAY0
- #pragma shader_feature_local _ _PBR_OVERLAY0_BASECOLOR_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY0_EMISSION_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY0_NORMAL_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY0_ROUGHNESS_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY0_METALLIC_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY0_MASK
- #pragma shader_feature_local _ _PBR_OVERLAY1
- #pragma shader_feature_local _ _PBR_OVERLAY1_BASECOLOR_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY1_EMISSION_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY1_NORMAL_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY1_ROUGHNESS_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY1_METALLIC_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY1_MASK
- #pragma shader_feature_local _ _PBR_OVERLAY2
- #pragma shader_feature_local _ _PBR_OVERLAY2_BASECOLOR_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY2_EMISSION_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY2_NORMAL_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY2_ROUGHNESS_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY2_METALLIC_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY2_MASK
- #pragma shader_feature_local _ _PBR_OVERLAY3
- #pragma shader_feature_local _ _PBR_OVERLAY3_BASECOLOR_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY3_EMISSION_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY3_NORMAL_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY3_ROUGHNESS_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY3_METALLIC_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY3_MASK
- #pragma shader_feature_local _ _LTCGI
- #pragma shader_feature_local _ _TESSELLATION
- #pragma shader_feature_local _ _MATCAP0_DISTORTION0
- #pragma shader_feature_local _ _MATCAP1_DISTORTION0
- #pragma shader_feature_local _ _AMBIENT_OCCLUSION
+ #include "feature_macros.cginc"
#pragma vertex vert
//#pragma vertex hull_vertex
@@ -406,54 +278,7 @@ Shader "yum_food/tooner"
CGPROGRAM
#pragma target 5.0
- #pragma shader_feature_local _BASECOLOR_MAP
- #pragma shader_feature_local _RENDERING_CUTOUT
- #pragma shader_feature_local _RENDERING_CUTOUT_STOCHASTIC
- #pragma shader_feature_local _OUTLINES
- #pragma shader_feature_local _EXPLODE
- #pragma shader_feature_local _ _SCROLL
- #pragma shader_feature_local _ _UVSCROLL
- #pragma shader_feature_local _MATCAP0
- #pragma shader_feature_local _ _MATCAP0_MASK
- #pragma shader_feature_local _MATCAP1
- #pragma shader_feature_local _ _MATCAP1_MASK
- #pragma shader_feature_local _ _RIM_LIGHTING0
- #pragma shader_feature_local _ _RIM_LIGHTING0_MASK
- #pragma shader_feature_local _ _RIM_LIGHTING1
- #pragma shader_feature_local _ _RIM_LIGHTING1_MASK
- #pragma shader_feature_local _ _OKLAB
- #pragma shader_feature_local _ _CLONES
- #pragma shader_feature_local _ _PBR_OVERLAY0
- #pragma shader_feature_local _ _PBR_OVERLAY0_BASECOLOR_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY0_EMISSION_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY0_NORMAL_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY0_ROUGHNESS_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY0_METALLIC_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY0_MASK
- #pragma shader_feature_local _ _PBR_OVERLAY1
- #pragma shader_feature_local _ _PBR_OVERLAY1_BASECOLOR_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY1_EMISSION_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY1_NORMAL_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY1_ROUGHNESS_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY1_METALLIC_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY1_MASK
- #pragma shader_feature_local _ _PBR_OVERLAY2
- #pragma shader_feature_local _ _PBR_OVERLAY2_BASECOLOR_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY2_EMISSION_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY2_NORMAL_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY2_ROUGHNESS_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY2_METALLIC_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY2_MASK
- #pragma shader_feature_local _ _PBR_OVERLAY3
- #pragma shader_feature_local _ _PBR_OVERLAY3_BASECOLOR_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY3_EMISSION_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY3_NORMAL_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY3_ROUGHNESS_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY3_METALLIC_MAP
- #pragma shader_feature_local _ _PBR_OVERLAY3_MASK
- #pragma shader_feature_local _ _LTCGI
- #pragma shader_feature_local _ _TESSELLATION
- #pragma shader_feature_local _ _AMBIENT_OCCLUSION
+ #include "feature_macros.cginc"
#pragma vertex vert
//#pragma vertex hull_vertex
diff --git a/tooner_lighting.cginc b/tooner_lighting.cginc
index 2a8a75d..ab90525 100644
--- a/tooner_lighting.cginc
+++ b/tooner_lighting.cginc
@@ -885,9 +885,32 @@ float4 effect(inout v2f i)
float ao = 1;
#endif
+#if defined(_GIMMICK_FLAT_COLOR)
+ if (round(_Gimmick_Flat_Color_Enable_Dynamic)) {
+ albedo = _Gimmick_Flat_Color_Color;
+ normal = i.normal;
+ }
+#endif
+
float4 lit = getLitColor(vertex_light_color, albedo, i.worldPos, normal,
metallic, 1.0 - roughness, i.uv, ao, i);
+#if defined(_GIMMICK_FLAT_COLOR)
+ if (round(_Gimmick_Flat_Color_Enable_Dynamic)) {
+#if defined(_RENDERING_CUTOUT)
+#if defined(_RENDERING_CUTOUT_STOCHASTIC)
+ float ar = rand2(i.uv);
+ clip(albedo.a - ar);
+#else
+ clip(albedo.a - _Alpha_Cutoff);
+#endif
+ albedo.a = 1;
+#endif
+
+ return float4(lit.rgb + _Gimmick_Flat_Color_Emission, albedo.a);
+ }
+#endif
+
float4 result = lit;
#if defined(_MATCAP0) || defined(_MATCAP1) || defined(_RIM_LIGHTING0) || defined(_RIM_LIGHTING1)
result.rgb += matcap_emission;