diff options
| author | yum <yum.food.vr@gmail.com> | 2025-02-20 17:14:38 -0800 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2025-02-20 17:14:38 -0800 |
| commit | c1a5bf8f3687b604980d1275872f1320f1a39977 (patch) | |
| tree | 296e9f05b31216fc45b94ccfadd41b7a173fddda | |
| parent | 738312d48be32093283841c2368fe4b919da6580 (diff) | |
Add matcap quantization
| -rw-r--r-- | 2ner.shader | 42 | ||||
| -rw-r--r-- | features.cginc | 1 | ||||
| -rw-r--r-- | globals.cginc | 3 | ||||
| -rw-r--r-- | matcaps.cginc | 11 |
4 files changed, 48 insertions, 9 deletions
diff --git a/2ner.shader b/2ner.shader index 0619ddb..323d7cd 100644 --- a/2ner.shader +++ b/2ner.shader @@ -61,6 +61,7 @@ Shader "yum_food/2ner" [HideInInspector] m_end_OutlinesMask("Mask", Float) = 0 [HideInInspector] m_end_Outlines("Outlines", Float) = 0 //endex + //ifex _Matcap0_Enabled==0 [HideInInspector] m_start_Matcaps("Matcaps", Float) = 0 [HideInInspector] m_start_Matcap0("Matcap 0", Float) = 0 @@ -70,13 +71,22 @@ Shader "yum_food/2ner" [ThryWideEnum(Replace, 0, Add, 1, Multiply, 2, Subtract, 3, AddProduct, 4)] _Matcap0_Mode("Mode", Int) = 0 _Matcap0_Strength("Strength", Float) = 1 + //ifex _Matcap0_Mask_Enabled==0 [HideInInspector] m_start_Matcap0_Mask("Mask", Float) = 0 [ThryToggle(_MATCAP0_MASK)]_Matcap0_Mask_Enabled("Enable", Float) = 0 _Matcap0_Mask("Mask", 2D) = "white" {} [HideInInspector] m_end_Matcap0_Mask("Mask", Float) = 0 + //endex + //ifex _Matcap0_Quantization_Enabled==0 + [HideInInspector] m_start_Matcap0_Quantization("Quantization", Float) = 0 + [ThryToggle(_MATCAP0_QUANTIZATION)]_Matcap0_Quantization_Enabled("Enable", Float) = 0 + _Matcap0_Quantization_Steps("Steps", Float) = 1 + [HideInInspector] m_end_Matcap0_Quantization("Quantization", Float) = 0 + //endex [HideInInspector] m_end_Matcap0("Matcaps", Float) = 0 [HideInInspector] m_end_Matcaps("Matcaps", Float) = 0 //endex + [HideInInspector] m_start_Rim_Lighting("Rim lighting", Float) = 0 //ifex _Rim_Lighting0_Enabled==0 [HideInInspector] m_start_Rim_Lighting0("Rim lighting 0", Float) = 0 @@ -87,21 +97,25 @@ Shader "yum_food/2ner" _Rim_Lighting0_Brightness("Brightness", Float) = 1 [ThryWideEnum(Replace, 0, Add, 1, Multiply, 2, Subtract, 3, AddProduct, 4)] _Rim_Lighting0_Mode("Mode", Int) = 0 + //ifex _Rim_Lighting0_Mask_Enabled==0 [HideInInspector] m_start_Rim_Lighting0_Mask("Mask", Float) = 0 [ThryToggle(_RIM_LIGHTING0_MASK)]_Rim_Lighting0_Mask_Enabled("Enable", Float) = 0 _Rim_Lighting0_Mask("Mask", 2D) = "white" {} [HideInInspector] m_end_Rim_Lighting0_Mask("Mask", Float) = 0 - + //endex + //ifex _Rim_Lighting0_Angle_Limit_Enabled==0 [HideInInspector] m_start_Rim_Lighting0_Angle_Limit("Angle limit", Float) = 0 [ThryToggle(_RIM_LIGHTING0_ANGLE_LIMIT)]_Rim_Lighting0_Angle_Limit_Enabled("Enable", Float) = 0 _Rim_Lighting0_Angle_Limit_Target_Vector("Target vector", Vector) = (0, -1, 0, 0) _Rim_Lighting0_Angle_Limit_Power("Power", Float) = 1 [HideInInspector] m_end_Rim_Lighting0_Angle_Limit("Angle limit", Float) = 0 - + //endex + //ifex _Rim_Lighting0_Quantization_Enabled==0 [HideInInspector] m_start_Rim_Lighting0_Quantization("Quantization", Float) = 0 [ThryToggle(_RIM_LIGHTING0_QUANTIZATION)]_Rim_Lighting0_Quantization_Enabled("Enable", Float) = 0 _Rim_Lighting0_Quantization_Steps("Steps", Float) = 1 [HideInInspector] m_end_Rim_Lighting0_Quantization("Quantization", Float) = 0 + //endex [HideInInspector] m_end_Rim_Lighting0("Rim lighting", Float) = 0 //endex @@ -114,21 +128,25 @@ Shader "yum_food/2ner" _Rim_Lighting1_Brightness("Brightness", Float) = 1 [ThryWideEnum(Replace, 0, Add, 1, Multiply, 2, Subtract, 3, AddProduct, 4)] _Rim_Lighting1_Mode("Mode", Int) = 0 + //ifex _Rim_Lighting1_Mask_Enabled==0 [HideInInspector] m_start_Rim_Lighting1_Mask("Mask", Float) = 0 [ThryToggle(_RIM_LIGHTINg1_MASK)]_Rim_Lighting1_Mask_Enabled("Enable", Float) = 0 _Rim_Lighting1_Mask("Mask", 2D) = "white" {} [HideInInspector] m_end_Rim_Lighting1_Mask("Mask", Float) = 0 - + //endex + //ifex _Rim_Lighting1_Angle_Limit_Enabled==0 [HideInInspector] m_start_Rim_Lighting1_Angle_Limit("Angle limit", Float) = 0 [ThryToggle(_RIM_LIGHTING1_ANGLE_LIMIT)]_Rim_Lighting1_Angle_Limit_Enabled("Enable", Float) = 0 _Rim_Lighting1_Angle_Limit_Target_Vector("Target vector", Vector) = (0, -1, 0, 0) _Rim_Lighting1_Angle_Limit_Power("Power", Float) = 1 [HideInInspector] m_end_Rim_Lighting1_Angle_Limit("Angle limit", Float) = 0 - + //endex + //ifex _Rim_Lighting1_Quantization_Enabled==0 [HideInInspector] m_start_Rim_Lighting1_Quantization("Quantization", Float) = 0 [ThryToggle(_RIM_LIGHTING1_QUANTIZATION)]_Rim_Lighting1_Quantization_Enabled("Enable", Float) = 0 _Rim_Lighting1_Quantization_Steps("Steps", Float) = 1 [HideInInspector] m_end_Rim_Lighting1_Quantization("Quantization", Float) = 0 + //endex [HideInInspector] m_end_Rim_Lighting1("Rim lighting", Float) = 0 //endex @@ -141,21 +159,25 @@ Shader "yum_food/2ner" _Rim_Lighting2_Brightness("Brightness", Float) = 1 [ThryWideEnum(Replace, 0, Add, 1, Multiply, 2, Subtract, 3, AddProduct, 4)] _Rim_Lighting2_Mode("Mode", Int) = 0 + //ifex _Rim_Lighting2_Mask_Enabled==0 [HideInInspector] m_start_Rim_Lighting2_Mask("Mask", Float) = 0 [ThryToggle(_RIM_LIGHTING2_MASK)]_Rim_Lighting2_Mask_Enabled("Enable", Float) = 0 _Rim_Lighting2_Mask("Mask", 2D) = "white" {} [HideInInspector] m_end_Rim_Lighting2_Mask("Mask", Float) = 0 - + //endex + //ifex _Rim_Lighting2_Angle_Limit_Enabled==0 [HideInInspector] m_start_Rim_Lighting2_Angle_Limit("Angle limit", Float) = 0 [ThryToggle(_RIM_LIGHTING2_ANGLE_LIMIT)]_Rim_Lighting2_Angle_Limit_Enabled("Enable", Float) = 0 _Rim_Lighting2_Angle_Limit_Target_Vector("Target vector", Vector) = (0, -1, 0, 0) _Rim_Lighting2_Angle_Limit_Power("Power", Float) = 1 [HideInInspector] m_end_Rim_Lighting2_Angle_Limit("Angle limit", Float) = 0 - + //endex + //ifex _Rim_Lighting2_Quantization_Enabled==0 [HideInInspector] m_start_Rim_Lighting2_Quantization("Quantization", Float) = 0 [ThryToggle(_RIM_LIGHTING2_QUANTIZATION)]_Rim_Lighting2_Quantization_Enabled("Enable", Float) = 0 _Rim_Lighting2_Quantization_Steps("Steps", Float) = 1 [HideInInspector] m_end_Rim_Lighting2_Quantization("Quantization", Float) = 0 + //endex [HideInInspector] m_end_Rim_Lighting2("Rim lighting", Float) = 0 //endex @@ -168,21 +190,25 @@ Shader "yum_food/2ner" _Rim_Lighting3_Brightness("Brightness", Float) = 1 [ThryWideEnum(Replace, 0, Add, 1, Multiply, 2, Subtract, 3, AddProduct, 4)] _Rim_Lighting3_Mode("Mode", Int) = 0 + //ifex _Rim_Lighting3_Mask_Enabled==0 [HideInInspector] m_start_Rim_Lighting3_Mask("Mask", Float) = 0 [ThryToggle(_RIM_LIGHTING3_MASK)]_Rim_Lighting3_Mask_Enabled("Enable", Float) = 0 _Rim_Lighting3_Mask("Mask", 2D) = "white" {} [HideInInspector] m_end_Rim_Lighting3_Mask("Mask", Float) = 0 - + //endex + //ifex _Rim_Lighting3_Angle_Limit_Enabled==0 [HideInInspector] m_start_Rim_Lighting3_Angle_Limit("Angle limit", Float) = 0 [ThryToggle(_RIM_LIGHTING3_ANGLE_LIMIT)]_Rim_Lighting3_Angle_Limit_Enabled("Enable", Float) = 0 _Rim_Lighting3_Angle_Limit_Target_Vector("Target vector", Vector) = (0, -1, 0, 0) _Rim_Lighting3_Angle_Limit_Power("Power", Float) = 1 [HideInInspector] m_end_Rim_Lighting3_Angle_Limit("Angle limit", Float) = 0 - + //endex + //ifex _Rim_Lighting3_Quantization_Enabled==0 [HideInInspector] m_start_Rim_Lighting3_Quantization("Quantization", Float) = 0 [ThryToggle(_RIM_LIGHTING3_QUANTIZATION)]_Rim_Lighting3_Quantization_Enabled("Enable", Float) = 0 _Rim_Lighting3_Quantization_Steps("Steps", Float) = 1 [HideInInspector] m_end_Rim_Lighting3_Quantization("Quantization", Float) = 0 + //endex [HideInInspector] m_end_Rim_Lighting3("Rim lighting", Float) = 0 //endex diff --git a/features.cginc b/features.cginc index 51b25f8..48f836d 100644 --- a/features.cginc +++ b/features.cginc @@ -27,6 +27,7 @@ //ifex _Matcap0_Enabled==0 #pragma shader_feature_local _MATCAP0 #pragma shader_feature_local _MATCAP0_MASK +#pragma shader_feature_local _MATCAP0_QUANTIZATION //endex //ifex _Rim_Lighting0_Enabled==0 diff --git a/globals.cginc b/globals.cginc index c5b7b29..b0cce77 100644 --- a/globals.cginc +++ b/globals.cginc @@ -67,6 +67,9 @@ float _Matcap0_Strength; #if defined(_MATCAP0_MASK)
texture2D _Matcap0_Mask;
#endif
+#if defined(_MATCAP0_QUANTIZATION)
+float _Matcap0_Quantization_Steps;
+#endif
#endif
#if defined(_RIM_LIGHTING0)
diff --git a/matcaps.cginc b/matcaps.cginc index 9feea8b..00b1d4f 100644 --- a/matcaps.cginc +++ b/matcaps.cginc @@ -55,7 +55,16 @@ void applyMatcapsAndRimLighting(v2f i, inout YumPbr pbr) { float2 muv = getMatcapUV(i, pbr); #endif #if defined(_MATCAP0) - float3 m0 = _Matcap0.Sample(linear_repeat_s, muv); +#if defined(_MATCAP0_QUANTIZATION) + float2 m0uv = muv * 2 - 1; + float m0uv_r = length(m0uv); + float m0uv_r_q = floor(m0uv_r * _Matcap0_Quantization_Steps) / _Matcap0_Quantization_Steps; + m0uv = m0uv_r_q * (m0uv / max(1E-4, m0uv_r)); + m0uv = m0uv * 0.5 + 0.5; +#else + float2 m0uv = muv; +#endif + float3 m0 = _Matcap0.Sample(linear_repeat_s, m0uv); m0 = lerp(m0, 1 - m0, _Matcap0_Invert); m0 *= _Matcap0_Strength; #if defined(_MATCAP0_MASK) |
