summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Editor/tooner.cs19
-rw-r--r--feature_macros.cginc8
-rw-r--r--globals.cginc8
-rw-r--r--tooner.shader10
-rw-r--r--tooner_lighting.cginc32
5 files changed, 71 insertions, 6 deletions
diff --git a/Editor/tooner.cs b/Editor/tooner.cs
index 7610e5b..e0a8bfc 100644
--- a/Editor/tooner.cs
+++ b/Editor/tooner.cs
@@ -528,12 +528,31 @@ public class ToonerGUI : ShaderGUI {
SetKeyword($"_RIM_LIGHTING{i}_MASK", bc.textureValue);
if (bc.textureValue) {
+ EditorGUI.indentLevel += 1;
+
bc = FindProperty($"_Rim_Lighting{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($"_Rim_Lighting{i}_Mask_UV_Select");
+ editor.RangeProperty(
+ bc,
+ "UV channel");
+
+ bc = FindProperty($"_Rim_Lighting{i}_Mask_Sampler_Mode");
+ SamplerMode sampler_mode = (SamplerMode) Math.Round(bc.floatValue);
+ sampler_mode = (SamplerMode) EditorGUILayout.EnumPopup(
+ MakeLabel("Sampler mode"), sampler_mode);
+ EditorGUI.EndChangeCheck();
+ bc.floatValue = (int) sampler_mode;
+
+ SetKeyword($"_RIM_LIGHTING{i}_SAMPLER_REPEAT", sampler_mode == SamplerMode.Repeat);
+ SetKeyword($"_RIM_LIGHTING{i}_SAMPLER_CLAMP", sampler_mode == SamplerMode.Clamp);
+
+ EditorGUI.indentLevel -= 1;
}
EditorGUI.BeginChangeCheck();
diff --git a/feature_macros.cginc b/feature_macros.cginc
index 2903d2b..8f15a6d 100644
--- a/feature_macros.cginc
+++ b/feature_macros.cginc
@@ -27,18 +27,26 @@
#pragma shader_feature_local _ _RIM_LIGHTING0_MASK
#pragma shader_feature_local _ _RIM_LIGHTING0_GLITTER
#pragma shader_feature_local _ _RIM_LIGHTING0_POLAR_MASK
+#pragma shader_feature_local _ _RIM_LIGHTING0_SAMPLER_REPEAT
+#pragma shader_feature_local _ _RIM_LIGHTING0_SAMPLER_CLAMP
#pragma shader_feature_local _ _RIM_LIGHTING1
#pragma shader_feature_local _ _RIM_LIGHTING1_MASK
#pragma shader_feature_local _ _RIM_LIGHTING1_GLITTER
#pragma shader_feature_local _ _RIM_LIGHTING1_POLAR_MASK
+#pragma shader_feature_local _ _RIM_LIGHTING1_SAMPLER_REPEAT
+#pragma shader_feature_local _ _RIM_LIGHTING1_SAMPLER_CLAMP
#pragma shader_feature_local _ _RIM_LIGHTING2
#pragma shader_feature_local _ _RIM_LIGHTING2_MASK
#pragma shader_feature_local _ _RIM_LIGHTING2_GLITTER
#pragma shader_feature_local _ _RIM_LIGHTING2_POLAR_MASK
+#pragma shader_feature_local _ _RIM_LIGHTING2_SAMPLER_REPEAT
+#pragma shader_feature_local _ _RIM_LIGHTING2_SAMPLER_CLAMP
#pragma shader_feature_local _ _RIM_LIGHTING3
#pragma shader_feature_local _ _RIM_LIGHTING3_MASK
#pragma shader_feature_local _ _RIM_LIGHTING3_GLITTER
#pragma shader_feature_local _ _RIM_LIGHTING3_POLAR_MASK
+#pragma shader_feature_local _ _RIM_LIGHTING3_SAMPLER_REPEAT
+#pragma shader_feature_local _ _RIM_LIGHTING3_SAMPLER_CLAMP
#pragma shader_feature_local _ _OKLAB
#pragma shader_feature_local _ _CLONES
#pragma shader_feature_local _ _PBR_OVERLAY0
diff --git a/globals.cginc b/globals.cginc
index 497e52b..9a5a130 100644
--- a/globals.cginc
+++ b/globals.cginc
@@ -322,6 +322,8 @@ float _Rim_Lighting0_Mode;
float3 _Rim_Lighting0_Color;
texture2D _Rim_Lighting0_Mask;
float _Rim_Lighting0_Mask_Invert;
+float _Rim_Lighting0_Mask_UV_Select;
+float _Rim_Lighting0_Mask_Sampler_Mode;
float _Rim_Lighting0_Center;
float _Rim_Lighting0_Power;
float _Rim_Lighting0_Strength;
@@ -347,6 +349,8 @@ float _Rim_Lighting1_Mode;
float3 _Rim_Lighting1_Color;
texture2D _Rim_Lighting1_Mask;
float _Rim_Lighting1_Mask_Invert;
+float _Rim_Lighting1_Mask_UV_Select;
+float _Rim_Lighting1_Mask_Sampler_Mode;
float _Rim_Lighting1_Center;
float _Rim_Lighting1_Power;
float _Rim_Lighting1_Strength;
@@ -372,6 +376,8 @@ float _Rim_Lighting2_Mode;
float3 _Rim_Lighting2_Color;
texture2D _Rim_Lighting2_Mask;
float _Rim_Lighting2_Mask_Invert;
+float _Rim_Lighting2_Mask_UV_Select;
+float _Rim_Lighting2_Mask_Sampler_Mode;
float _Rim_Lighting2_Center;
float _Rim_Lighting2_Power;
float _Rim_Lighting2_Strength;
@@ -397,6 +403,8 @@ float _Rim_Lighting3_Mode;
float3 _Rim_Lighting3_Color;
texture2D _Rim_Lighting3_Mask;
float _Rim_Lighting3_Mask_Invert;
+float _Rim_Lighting3_Mask_UV_Select;
+float _Rim_Lighting3_Mask_Sampler_Mode;
float _Rim_Lighting3_Center;
float _Rim_Lighting3_Power;
float _Rim_Lighting3_Strength;
diff --git a/tooner.shader b/tooner.shader
index abdec1a..7ae6a85 100644
--- a/tooner.shader
+++ b/tooner.shader
@@ -231,6 +231,8 @@ Shader "yum_food/tooner"
_Rim_Lighting0_Mode("Rim lighting mode", Float) = 0
_Rim_Lighting0_Mask("Rim lighting mask", 2D) = "white" {}
_Rim_Lighting0_Mask_Invert("Invert rim lighting mask", Float) = 0.0
+ _Rim_Lighting0_Mask_UV_Select("mask UV select", Range(0, 1)) = 0.0
+ _Rim_Lighting0_Mask_Sampler_Mode("mask sampler mode", Range(0, 1)) = 0.0
_Rim_Lighting0_Color("Rim lighting color", Color) = (1, 1, 1, 1)
_Rim_Lighting0_Center("Rim lighting center", Float) = 0.5
_Rim_Lighting0_Power("Rim lighting power", Float) = 2.0
@@ -250,6 +252,8 @@ Shader "yum_food/tooner"
_Rim_Lighting1_Mode("Rim lighting mode", Float) = 0
_Rim_Lighting1_Mask("Rim lighting mask", 2D) = "white" {}
_Rim_Lighting1_Mask_Invert("Invert rim lighting mask", Float) = 0.0
+ _Rim_Lighting1_Mask_UV_Select("mask UV select", Range(0, 1)) = 0.0
+ _Rim_Lighting1_Mask_Sampler_Mode("mask sampler mode", Range(0, 1)) = 0.0
_Rim_Lighting1_Color("Rim lighting color", Color) = (1, 1, 1, 1)
_Rim_Lighting1_Center("Rim lighting center", Float) = 0.5
_Rim_Lighting1_Power("Rim lighting power", Float) = 2.0
@@ -269,6 +273,8 @@ Shader "yum_food/tooner"
_Rim_Lighting2_Mode("Rim lighting mode", Float) = 0
_Rim_Lighting2_Mask("Rim lighting mask", 2D) = "white" {}
_Rim_Lighting2_Mask_Invert("Invert rim lighting mask", Float) = 0.0
+ _Rim_Lighting2_Mask_UV_Select("mask UV select", Range(0, 1)) = 0.0
+ _Rim_Lighting2_Mask_Sampler_Mode("mask sampler mode", Range(0, 1)) = 0.0
_Rim_Lighting2_Color("Rim lighting color", Color) = (1, 1, 1, 1)
_Rim_Lighting2_Center("Rim lighting center", Float) = 0.5
_Rim_Lighting2_Power("Rim lighting power", Float) = 2.0
@@ -288,6 +294,8 @@ Shader "yum_food/tooner"
_Rim_Lighting3_Mode("Rim lighting mode", Float) = 0
_Rim_Lighting3_Mask("Rim lighting mask", 2D) = "white" {}
_Rim_Lighting3_Mask_Invert("Invert rim lighting mask", Float) = 0.0
+ _Rim_Lighting3_Mask_UV_Select("mask UV select", Range(0, 1)) = 0.0
+ _Rim_Lighting3_Mask_Sampler_Mode("mask sampler mode", Range(0, 1)) = 0.0
_Rim_Lighting3_Color("Rim lighting color", Color) = (1, 1, 1, 1)
_Rim_Lighting3_Center("Rim lighting center", Float) = 0.5
_Rim_Lighting3_Power("Rim lighting power", Float) = 2.0
@@ -453,7 +461,6 @@ Shader "yum_food/tooner"
#include "tooner_lighting.cginc"
ENDCG
}
- /*
Pass {
Tags {
"RenderType" = "Opaque"
@@ -524,7 +531,6 @@ Shader "yum_food/tooner"
#include "mochie_shadow_caster.cginc"
ENDCG
}
- */
}
CustomEditor "ToonerGUI"
}
diff --git a/tooner_lighting.cginc b/tooner_lighting.cginc
index 631f911..0bc067e 100644
--- a/tooner_lighting.cginc
+++ b/tooner_lighting.cginc
@@ -548,6 +548,26 @@ float2 matcap_distortion0(float2 matcap_uv) {
#elif defined(_PBR_OVERLAY3_SAMPLER_CLAMP)
#define GET_SAMPLER_OV3 linear_clamp_s
#endif
+#if defined(_RIM_LIGHTING0_SAMPLER_REPEAT)
+#define GET_SAMPLER_RL0 linear_repeat_s
+#elif defined(_RIM_LIGHTING0_SAMPLER_CLAMP)
+#define GET_SAMPLER_RL0 linear_clamp_s
+#endif
+#if defined(_RIM_LIGHTING1_SAMPLER_REPEAT)
+#define GET_SAMPLER_RL1 linear_repeat_s
+#elif defined(_RIM_LIGHTING1_SAMPLER_CLAMP)
+#define GET_SAMPLER_RL1 linear_clamp_s
+#endif
+#if defined(_RIM_LIGHTING2_SAMPLER_REPEAT)
+#define GET_SAMPLER_RL2 linear_repeat_s
+#elif defined(_RIM_LIGHTING2_SAMPLER_CLAMP)
+#define GET_SAMPLER_RL2 linear_clamp_s
+#endif
+#if defined(_RIM_LIGHTING3_SAMPLER_REPEAT)
+#define GET_SAMPLER_RL3 linear_repeat_s
+#elif defined(_RIM_LIGHTING3_SAMPLER_CLAMP)
+#define GET_SAMPLER_RL3 linear_clamp_s
+#endif
struct PbrOverlay {
#if defined(_PBR_OVERLAY0)
@@ -1433,7 +1453,8 @@ float4 effect(inout v2f i)
float3 matcap = rl * _Rim_Lighting0_Color * _Rim_Lighting0_Strength;
#if defined(_RIM_LIGHTING0_MASK)
- float4 matcap_mask_raw = _Rim_Lighting0_Mask.SampleGrad(linear_repeat_s, i.uv0.xy, iddx, iddy);
+ float4 matcap_mask_raw = _Rim_Lighting0_Mask.SampleGrad(GET_SAMPLER_RL0,
+ GET_UV_BY_CHANNEL(i, _Rim_Lighting0_Mask_UV_Select), iddx, iddy);
float matcap_mask = matcap_mask_raw.r;
matcap_mask = (bool) round(_Rim_Lighting0_Mask_Invert) ? 1 - matcap_mask : matcap_mask;
matcap_mask *= matcap_mask_raw.a;
@@ -1496,7 +1517,8 @@ float4 effect(inout v2f i)
}
float3 matcap = rl * _Rim_Lighting1_Color * _Rim_Lighting1_Strength;
#if defined(_RIM_LIGHTING1_MASK)
- float4 matcap_mask_raw = _Rim_Lighting1_Mask.SampleGrad(linear_repeat_s, i.uv0.xy, iddx, iddy);
+ float4 matcap_mask_raw = _Rim_Lighting1_Mask.SampleGrad(GET_SAMPLER_RL1,
+ GET_UV_BY_CHANNEL(i, _Rim_Lighting1_Mask_UV_Select), iddx, iddy);
float matcap_mask = matcap_mask_raw.r;
matcap_mask = (bool) round(_Rim_Lighting1_Mask_Invert) ? 1 - matcap_mask : matcap_mask;
matcap_mask *= matcap_mask_raw.a;
@@ -1563,7 +1585,8 @@ float4 effect(inout v2f i)
}
float3 matcap = rl * _Rim_Lighting2_Color * _Rim_Lighting2_Strength;
#if defined(_RIM_LIGHTING2_MASK)
- float4 matcap_mask_raw = _Rim_Lighting2_Mask.SampleGrad(linear_repeat_s, i.uv0.xy, iddx, iddy);
+ float4 matcap_mask_raw = _Rim_Lighting2_Mask.SampleGrad(GET_SAMPLER_RL2,
+ GET_UV_BY_CHANNEL(i, _Rim_Lighting2_Mask_UV_Select), iddx, iddy);
float matcap_mask = matcap_mask_raw.r;
matcap_mask = (bool) round(_Rim_Lighting2_Mask_Invert) ? 1 - matcap_mask : matcap_mask;
matcap_mask *= matcap_mask_raw.a;
@@ -1630,7 +1653,8 @@ float4 effect(inout v2f i)
}
float3 matcap = rl * _Rim_Lighting3_Color * _Rim_Lighting3_Strength;
#if defined(_RIM_LIGHTING3_MASK)
- float4 matcap_mask_raw = _Rim_Lighting3_Mask.SampleGrad(linear_repeat_s, i.uv0.xy, iddx, iddy);
+ float4 matcap_mask_raw = _Rim_Lighting3_Mask.SampleGrad(GET_SAMPLER_RL3,
+ GET_UV_BY_CHANNEL(i, _Rim_Lighting3_Mask_UV_Select), iddx, iddy);
float matcap_mask = matcap_mask_raw.r;
matcap_mask = (bool) round(_Rim_Lighting3_Mask_Invert) ? 1 - matcap_mask : matcap_mask;
matcap_mask *= matcap_mask_raw.a;