summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2024-08-10 16:47:24 -0700
committeryum <yum.food.vr@gmail.com>2024-08-10 16:47:24 -0700
commit7ce783162a9be36c5e75c90d347bcf65182598c4 (patch)
tree4a37f36737b80c5571074cb5d5fc2303f0d66312
parent8948b000fb82cea4ce1d966a669daf68bfeb3166 (diff)
Add mask inverts for roughness & hue shift
-rw-r--r--Editor/tooner.cs17
-rw-r--r--globals.cginc2
-rw-r--r--tooner.shader4
-rw-r--r--tooner_lighting.cginc7
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 ||