diff options
| author | yum <yum.food.vr@gmail.com> | 2024-08-10 16:47:24 -0700 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2024-08-10 16:47:24 -0700 |
| commit | 7ce783162a9be36c5e75c90d347bcf65182598c4 (patch) | |
| tree | 4a37f36737b80c5571074cb5d5fc2303f0d66312 | |
| parent | 8948b000fb82cea4ce1d966a669daf68bfeb3166 (diff) | |
Add mask inverts for roughness & hue shift
| -rw-r--r-- | Editor/tooner.cs | 17 | ||||
| -rw-r--r-- | globals.cginc | 2 | ||||
| -rw-r--r-- | tooner.shader | 4 | ||||
| -rw-r--r-- | tooner_lighting.cginc | 7 |
4 files changed, 30 insertions, 0 deletions
diff --git a/Editor/tooner.cs b/Editor/tooner.cs index 01ab5a2..4623e9f 100644 --- a/Editor/tooner.cs +++ b/Editor/tooner.cs @@ -94,7 +94,15 @@ public class ToonerGUI : ShaderGUI { bc); if (bct.textureValue) { editor.TextureScaleOffsetProperty(bct); + + bc = FindProperty("_Roughness_Invert"); + bool enabled = bc.floatValue > 1E-6; + EditorGUI.BeginChangeCheck(); + enabled = EditorGUILayout.Toggle("Invert", enabled); + EditorGUI.EndChangeCheck(); + bc.floatValue = enabled ? 1.0f : 0.0f; } + SetKeyword("_ROUGHNESS_MAP", bct.textureValue); } @@ -670,6 +678,15 @@ public class ToonerGUI : ShaderGUI { MakeLabel(bc, "Mask"), bc); + if (bc.textureValue) { + bc = FindProperty("_OKLAB_Mask_Invert"); + enabled = bc.floatValue > 1E-6; + EditorGUI.BeginChangeCheck(); + enabled = EditorGUILayout.Toggle("Invert", enabled); + EditorGUI.EndChangeCheck(); + bc.floatValue = enabled ? 1.0f : 0.0f; + } + bc = FindProperty("_OKLAB_Lightness_Shift"); editor.RangeProperty( bc, diff --git a/globals.cginc b/globals.cginc index f709ff2..d607755 100644 --- a/globals.cginc +++ b/globals.cginc @@ -9,6 +9,7 @@ SamplerState linear_clamp_s; float4 _Color; float _Metallic; float _Roughness; +float _Roughness_Invert; float _Tex_NormalStr; float _NormalStr; @@ -368,6 +369,7 @@ float _Rim_Lighting1_PolarMask_Power; #if defined(_OKLAB) float _OKLAB_Enabled; texture2D _OKLAB_Mask; +float _OKLAB_Mask_Invert; float _OKLAB_Lightness_Shift; float _OKLAB_Chroma_Shift; float _OKLAB_Hue_Shift; diff --git a/tooner.shader b/tooner.shader index 0c19812..06c34e6 100644 --- a/tooner.shader +++ b/tooner.shader @@ -5,6 +5,7 @@ Shader "yum_food/tooner" _Color("Base color", Color) = (0.8, 0.8, 0.8, 1) _Metallic("Metallic", Range(0, 1)) = 0 _Roughness("Roughness", Range(0, 1)) = 1 + _Roughness_Invert("Roughness invert", Float) = 0 _Clearcoat_Enabled("Clearcoat enabled", Float) = 0 _Clearcoat_Strength("Clearcoat strength", Range(0, 1)) = 0 @@ -266,6 +267,7 @@ Shader "yum_food/tooner" _OKLAB_Enabled("Enable OKLAB", Float) = 0.0 _OKLAB_Mask("Mask", 2D) = "white" {} + _OKLAB_Mask_Invert("Mask invert", Float) = 0.0 _OKLAB_Lightness_Shift("OKLAB lightness shift", Range(-1.0, 1.0)) = 0.0 _OKLAB_Chroma_Shift("OKLAB chroma shift", Range(-0.37, 0.37)) = 0.0 _OKLAB_Hue_Shift("OKLAB hue shift", Range(0, 6.283185307)) = 0.0 @@ -413,6 +415,7 @@ Shader "yum_food/tooner" #include "tooner_lighting.cginc" ENDCG } + /* Pass { Tags { "RenderType" = "Opaque" @@ -483,6 +486,7 @@ Shader "yum_food/tooner" #include "mochie_shadow_caster.cginc" ENDCG } + */ } CustomEditor "ToonerGUI" } diff --git a/tooner_lighting.cginc b/tooner_lighting.cginc index 1100809..41975bc 100644 --- a/tooner_lighting.cginc +++ b/tooner_lighting.cginc @@ -1235,6 +1235,10 @@ float4 effect(inout v2f i) #endif #if defined(_ROUGHNESS_MAP) float roughness = _RoughnessTex.SampleGrad(linear_repeat_s, UV_SCOFF(i, _RoughnessTex_ST, 0), iddx, iddy); + if (_Roughness_Invert) { + roughness = 1 - roughness; + } + roughness *= _Roughness; #else float roughness = _Roughness; #endif @@ -1556,6 +1560,9 @@ float4 effect(inout v2f i) // Do hue shift in perceptually uniform color space so it doesn't look like // shit. float oklab_mask = _OKLAB_Mask.SampleGrad(linear_repeat_s, i.uv0, iddx, iddy); + if (_OKLAB_Mask_Invert) { + oklab_mask = 1 - oklab_mask; + } if (oklab_mask > 0.01 && (_OKLAB_Hue_Shift > 1E-6 || abs(_OKLAB_Chroma_Shift) > 1E-6 || |
