diff options
| author | yum <yum.food.vr@gmail.com> | 2025-11-11 15:47:16 -0800 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2025-11-11 15:47:16 -0800 |
| commit | 5cbad6aa884ee4c77f6af65cdfceac987f54a227 (patch) | |
| tree | 0648d2c763841919f7597d94da4a292f106e8ccb | |
| parent | a9d68542ce0dede3a9759107b7ae76bedfa62c1e (diff) | |
add clearcoat mask
| -rw-r--r-- | 3ner.shader | 7 | ||||
| -rw-r--r-- | features.cginc | 4 | ||||
| -rw-r--r-- | globals.cginc | 6 | ||||
| -rw-r--r-- | lighting.cginc | 6 |
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 } |
