summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2025-11-11 15:47:16 -0800
committeryum <yum.food.vr@gmail.com>2025-11-11 15:47:16 -0800
commit5cbad6aa884ee4c77f6af65cdfceac987f54a227 (patch)
tree0648d2c763841919f7597d94da4a292f106e8ccb
parenta9d68542ce0dede3a9759107b7ae76bedfa62c1e (diff)
add clearcoat mask
-rw-r--r--3ner.shader7
-rw-r--r--features.cginc4
-rw-r--r--globals.cginc6
-rw-r--r--lighting.cginc6
4 files changed, 22 insertions, 1 deletions
diff --git a/3ner.shader b/3ner.shader
index 14340e6..11f7d87 100644
--- a/3ner.shader
+++ b/3ner.shader
@@ -300,6 +300,13 @@ Shader "yum_food/3ner"
[ThryToggle(_CLEARCOAT)] _Clearcoat_Enabled("Enable", Float) = 0
_Clearcoat_Strength("Strength", Range(0, 1)) = 0
_Clearcoat_Roughness("Roughness", Range(0, 1)) = 0
+
+ //ifex _Clearcoat_Mask_Enabled==0
+ [HideInInspector] m_start_Clearcoat_Mask("Clearcoat Mask", Float) = 0
+ [ThryToggle(_CLEARCOAT_MASK)] _Clearcoat_Mask_Enabled("Enable", Float) = 0
+ _Clearcoat_Mask("Mask", 2D) = "white" {}
+ [HideInInspector] m_end_Clearcoat_Mask("Clearcoat Mask", Float) = 0
+ //endex
[HideInInspector] m_end_Clearcoat("Clearcoat", Float) = 0
//endex
diff --git a/features.cginc b/features.cginc
index 1cd6a17..8eec291 100644
--- a/features.cginc
+++ b/features.cginc
@@ -19,6 +19,10 @@
#pragma shader_feature_local _CLEARCOAT
//endex
+//ifex _Clearcoat_Mask_Enabled==0
+#pragma shader_feature_local _CLEARCOAT_MASK
+//endex
+
//ifex _Cloth_Sheen_Enabled==0
#pragma shader_feature_local _CLOTH_SHEEN
//endex
diff --git a/globals.cginc b/globals.cginc
index 5f8f684..063b047 100644
--- a/globals.cginc
+++ b/globals.cginc
@@ -54,6 +54,12 @@ float _Clearcoat_Strength;
float _Clearcoat_Roughness;
#endif // _CLEARCOAT
+#if defined(_CLEARCOAT_MASK)
+texture2D _Clearcoat_Mask;
+float4 _Clearcoat_Mask_ST;
+float _Clearcoat_Mask_Strength;
+#endif // _CLEARCOAT_MASK
+
#if defined(_CLOTH_SHEEN)
float _Cloth_Sheen_Strength;
float3 _Cloth_Sheen_Color;
diff --git a/lighting.cginc b/lighting.cginc
index 17f1a0a..8276b8c 100644
--- a/lighting.cginc
+++ b/lighting.cginc
@@ -163,6 +163,10 @@ void GetLighting(v2f i, Pbr pbr, out LightData data) {
float3 view_dir = normalize(i.eyeVec.xyz);
+#if defined(_CLEARCOAT_MASK)
+ float cc_mask = _Clearcoat_Mask.Sample(bilinear_clamp_s, i.uv01.xy).r;
+#endif
+
data.common.V = -view_dir;
data.common.N = pbr.normal;
data.common.NoV = saturate(dot(pbr.normal, data.common.V));
@@ -205,7 +209,7 @@ void GetLighting(v2f i, Pbr pbr, out LightData data) {
data.indirect.diffuse = getIndirectDiffuse(i, pbr, data.indirect);
data.indirect.specular = getIndirectSpecular(i, pbr.roughness, view_dir, data.indirect.dir);
#if defined(_CLEARCOAT)
- data.indirect.specular_cc = getIndirectSpecular(i, pbr.cc_roughness, view_dir, dir_cc);
+ data.indirect.specular_cc = getIndirectSpecular(i, pbr.cc_roughness, view_dir, dir_cc) * cc_mask;
#endif
}