diff options
| author | yum <yum.food.vr@gmail.com> | 2024-08-21 15:05:32 -0700 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2024-08-21 15:05:32 -0700 |
| commit | 5c3223949546fee336ba50e5e33736b83c450d78 (patch) | |
| tree | 5de9bb5e6f1e2fe61c58a78692554ebedc0864dc | |
| parent | d97cbbef750c86a329ce7669fd532ad7f7593839 (diff) | |
Matcap masks are now UV channel aware
| -rw-r--r-- | Editor/tooner.cs | 14 | ||||
| -rw-r--r-- | globals.cginc | 4 | ||||
| -rw-r--r-- | tooner.shader | 4 | ||||
| -rw-r--r-- | tooner_lighting.cginc | 12 |
4 files changed, 30 insertions, 4 deletions
diff --git a/Editor/tooner.cs b/Editor/tooner.cs index d769a02..8cb4d07 100644 --- a/Editor/tooner.cs +++ b/Editor/tooner.cs @@ -440,12 +440,19 @@ public class ToonerGUI : ShaderGUI { bool enabled; // c# is a shitty language if (bc.textureValue) { + EditorGUI.indentLevel += 1; bc = FindProperty($"_Matcap{i}_Mask_Invert"); enabled = bc.floatValue > 1E-6; EditorGUI.BeginChangeCheck(); enabled = EditorGUILayout.Toggle("Invert mask", enabled); EditorGUI.EndChangeCheck(); bc.floatValue = enabled ? 1.0f : 0.0f; + + bc = FindProperty($"_Matcap{i}_Mask_UV_Select"); + editor.RangeProperty( + bc, + "UV channel"); + EditorGUI.indentLevel -= 1; } bc = FindProperty($"_Matcap{i}_Mask2"); @@ -455,12 +462,19 @@ public class ToonerGUI : ShaderGUI { SetKeyword($"_MATCAP{i}_MASK2", bc.textureValue); if (bc.textureValue) { + EditorGUI.indentLevel += 1; bc = FindProperty($"_Matcap{i}_Mask2_Invert"); enabled = bc.floatValue > 1E-6; EditorGUI.BeginChangeCheck(); enabled = EditorGUILayout.Toggle("Invert mask", enabled); EditorGUI.EndChangeCheck(); bc.floatValue = enabled ? 1.0f : 0.0f; + + bc = FindProperty($"_Matcap{i}_Mask2_UV_Select"); + editor.RangeProperty( + bc, + "UV channel"); + EditorGUI.indentLevel -= 1; } EditorGUI.BeginChangeCheck(); diff --git a/globals.cginc b/globals.cginc index d2773b1..980a31a 100644 --- a/globals.cginc +++ b/globals.cginc @@ -306,8 +306,10 @@ float _Enable_Matcap0; texture2D _Matcap0; texture2D _Matcap0_Mask; float _Matcap0_Mask_Invert; +float _Matcap0_Mask_UV_Select; texture2D _Matcap0_Mask2; float _Matcap0_Mask2_Invert; +float _Matcap0_Mask2_UV_Select; float _Matcap0Str; float _Matcap0MixFactor; float _Matcap0Quantization; @@ -326,8 +328,10 @@ float _Enable_Matcap1; texture2D _Matcap1; texture2D _Matcap1_Mask; float _Matcap1_Mask_Invert; +float _Matcap1_Mask_UV_Select; texture2D _Matcap1_Mask2; float _Matcap1_Mask2_Invert; +float _Matcap1_Mask2_UV_Select; float _Matcap1Str; float _Matcap1MixFactor; float _Matcap1Quantization; diff --git a/tooner.shader b/tooner.shader index c14e607..7eda029 100644 --- a/tooner.shader +++ b/tooner.shader @@ -214,8 +214,10 @@ Shader "yum_food/tooner" _Matcap0("Matcap", 2D) = "black" {} _Matcap0_Mask("Matcap mask", 2D) = "white" {} _Matcap0_Mask_Invert("Invert mask", Float) = 0.0 + _Matcap0_Mask_UV_Select("Matcap mask UV select", Range(0, 3)) = 0 _Matcap0_Mask2("Matcap mask 2", 2D) = "white" {} _Matcap0_Mask2_Invert("Invert mask", Float) = 0.0 + _Matcap0_Mask2_UV_Select("Matcap mask UV select", Range(0, 3)) = 0 _Matcap0Mode("Matcap mode", Float) = 0 _Matcap0Str("Matcap strength", Float) = 1 _Matcap0MixFactor("Matcap mix factor", Range(0, 1)) = 1 @@ -230,8 +232,10 @@ Shader "yum_food/tooner" _Matcap1("Matcap", 2D) = "black" {} _Matcap1_Mask("Matcap mask", 2D) = "white" {} _Matcap1_Mask_Invert("Invert mask", Float) = 0.0 + _Matcap1_Mask_UV_Select("Matcap mask UV select", Range(0, 3)) = 0 _Matcap1_Mask2("Matcap mask 2", 2D) = "white" {} _Matcap1_Mask2_Invert("Invert mask", Float) = 0.0 + _Matcap1_Mask2_UV_Select("Matcap mask UV select", Range(0, 3)) = 0 _Matcap1Mode("Matcap mode", Float) = 0 _Matcap1Str("Matcap strength", Float) = 1 _Matcap1MixFactor("Matcap mix factor", Range(0, 1)) = 1 diff --git a/tooner_lighting.cginc b/tooner_lighting.cginc index 70df5ea..34c1368 100644 --- a/tooner_lighting.cginc +++ b/tooner_lighting.cginc @@ -1272,7 +1272,8 @@ float4 effect(inout v2f i) #if defined(_MATCAP0) { #if defined(_MATCAP0_MASK) - float4 matcap_mask_raw = _Matcap0_Mask.SampleLevel(linear_repeat_s, i.uv0.xy, 0); + float4 matcap_mask_raw = _Matcap0_Mask.SampleLevel(linear_repeat_s, + get_uv_by_channel(i, _Matcap0_Mask_UV_Select), 0); float matcap_mask = matcap_mask_raw.r; matcap_mask = (bool) round(_Matcap0_Mask_Invert) ? 1 - matcap_mask : matcap_mask; matcap_mask *= matcap_mask_raw.a; @@ -1281,7 +1282,8 @@ float4 effect(inout v2f i) #endif #if defined(_MATCAP0_MASK2) { - float4 matcap_mask2_raw = _Matcap0_Mask2.SampleLevel(linear_repeat_s, i.uv0.xy, 0); + float4 matcap_mask2_raw = _Matcap0_Mask2.SampleLevel(linear_repeat_s, + get_uv_by_channel(i, _Matcap0_Mask2_UV_Select), 0); float matcap_mask2 = matcap_mask2_raw.r; matcap_mask2 = (bool) round(_Matcap0_Mask2_Invert) ? 1 - matcap_mask2 : matcap_mask2; matcap_mask2 *= matcap_mask2_raw.a; @@ -1359,7 +1361,8 @@ float4 effect(inout v2f i) #if defined(_MATCAP1) { #if defined(_MATCAP1_MASK) - float4 matcap_mask_raw = _Matcap1_Mask.SampleLevel(linear_repeat_s, i.uv0.xy, 0); + float4 matcap_mask_raw = _Matcap1_Mask.SampleLevel(linear_repeat_s, + get_uv_by_channel(i, _Matcap1_Mask_UV_Select), 0); float matcap_mask = matcap_mask_raw.r; matcap_mask = (bool) round(_Matcap1_Mask_Invert) ? 1 - matcap_mask : matcap_mask; matcap_mask *= matcap_mask_raw.a; @@ -1368,7 +1371,8 @@ float4 effect(inout v2f i) #endif #if defined(_MATCAP1_MASK2) { - float4 matcap_mask2_raw = _Matcap1_Mask2.SampleLevel(linear_repeat_s, i.uv0.xy, 0); + float4 matcap_mask2_raw = _Matcap1_Mask2.SampleLevel(linear_repeat_s, + get_uv_by_channel(i, _Matcap1_Mask2_UV_Select), 0); float matcap_mask2 = matcap_mask2_raw.r; matcap_mask2 = (bool) round(_Matcap1_Mask2_Invert) ? 1 - matcap_mask2 : matcap_mask2; matcap_mask2 *= matcap_mask2_raw.a; |
