summaryrefslogtreecommitdiffstats
path: root/matcaps.cginc
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2025-02-20 01:00:43 -0800
committeryum <yum.food.vr@gmail.com>2025-02-20 01:00:43 -0800
commit738312d48be32093283841c2368fe4b919da6580 (patch)
treefa6bd9f02f1687ab19577dd31078394409cab74f /matcaps.cginc
parent65ed0c23335b10a266d76257eeb3e7ecfd23cfb5 (diff)
Add ability to quantize NoL
Also add 2 more rim lighting slots
Diffstat (limited to 'matcaps.cginc')
-rw-r--r--matcaps.cginc64
1 files changed, 51 insertions, 13 deletions
diff --git a/matcaps.cginc b/matcaps.cginc
index 78f2cce..9feea8b 100644
--- a/matcaps.cginc
+++ b/matcaps.cginc
@@ -68,39 +68,77 @@ void applyMatcapsAndRimLighting(v2f i, inout YumPbr pbr) {
#if defined(_RIM_LIGHTING0) || defined(_RIM_LIGHTING1)
float rl_radius = length(muv - 0.5);
#endif
+
#if defined(_RIM_LIGHTING0)
float rl0_dist = exp2(-_Rim_Lighting0_Power * abs(rl_radius - _Rim_Lighting0_Center));
+#if defined(_RIM_LIGHTING0_ANGLE_LIMIT)
+ rl0_dist *= getAngleAttenuation(muv, _Rim_Lighting0_Angle_Limit_Target_Vector,
+ _Rim_Lighting0_Angle_Limit_Power);
+#endif
+#if defined(_RIM_LIGHTING0_QUANTIZATION)
+ rl0_dist = floor(rl0_dist * _Rim_Lighting0_Quantization_Steps) / _Rim_Lighting0_Quantization_Steps;
+#endif
float3 rl0 = _Rim_Lighting0_Color * _Rim_Lighting0_Brightness * rl0_dist;
#if defined(_RIM_LIGHTING0_MASK)
float rl0_mask = _Rim_Lighting0_Mask.Sample(linear_repeat_s, i.uv01.xy);
#else
float rl0_mask = 1;
#endif
-#if defined(_RIM_LIGHTING0_ANGLE_LIMIT)
- rl0 *= getAngleAttenuation(muv, _Rim_Lighting0_Angle_Limit_Target_Vector,
- _Rim_Lighting0_Angle_Limit_Power);
-#endif
-#if defined(_RIM_LIGHTING0_QUANTIZATION)
- rl0 = floor(rl0 * _Rim_Lighting0_Quantization_Steps) / _Rim_Lighting0_Quantization_Steps;
-#endif
applyMatcap(pbr, rl0, _Rim_Lighting0_Mode, rl0_mask);
#endif
+
#if defined(_RIM_LIGHTING1)
float rl1_dist = exp2(-_Rim_Lighting1_Power * abs(rl_radius - _Rim_Lighting1_Center));
+#if defined(_RIM_LIGHTING1_ANGLE_LIMIT)
+ rl1_dist *= getAngleAttenuation(muv, _Rim_Lighting1_Angle_Limit_Target_Vector,
+ _Rim_Lighting1_Angle_Limit_Power);
+#endif
+#if defined(_RIM_LIGHTING1_QUANTIZATION)
+ rl1_dist = floor(rl1_dist * _Rim_Lighting1_Quantization_Steps) / _Rim_Lighting1_Quantization_Steps;
+#endif
float3 rl1 = _Rim_Lighting1_Color * _Rim_Lighting1_Brightness * rl1_dist;
#if defined(_RIM_LIGHTING1_MASK)
float rl1_mask = _Rim_Lighting1_Mask.Sample(linear_repeat_s, i.uv01.xy);
#else
float rl1_mask = 1;
#endif
-#if defined(_RIM_LIGHTING1_ANGLE_LIMIT)
- rl1 *= getAngleAttenuation(muv, _Rim_Lighting1_Angle_Limit_Target_Vector,
- _Rim_Lighting1_Angle_Limit_Power);
+ applyMatcap(pbr, rl1, _Rim_Lighting1_Mode, rl1_mask);
#endif
-#if defined(_RIM_LIGHTING1_QUANTIZATION)
- rl1 = floor(rl1 * _Rim_Lighting1_Quantization_Steps) / _Rim_Lighting1_Quantization_Steps;
+
+#if defined(_RIM_LIGHTING2)
+ float rl2_dist = exp2(-_Rim_Lighting2_Power * abs(rl_radius - _Rim_Lighting2_Center));
+#if defined(_RIM_LIGHTING2_ANGLE_LIMIT)
+ rl2_dist *= getAngleAttenuation(muv, _Rim_Lighting2_Angle_Limit_Target_Vector,
+ _Rim_Lighting2_Angle_Limit_Power);
#endif
- applyMatcap(pbr, rl1, _Rim_Lighting1_Mode, rl1_mask);
+#if defined(_RIM_LIGHTING2_QUANTIZATION)
+ rl2_dist = floor(rl2_dist * _Rim_Lighting2_Quantization_Steps) / _Rim_Lighting2_Quantization_Steps;
+#endif
+ float3 rl2 = _Rim_Lighting2_Color * _Rim_Lighting2_Brightness * rl2_dist;
+#if defined(_RIM_LIGHTING2_MASK)
+ float rl2_mask = _Rim_Lighting2_Mask.Sample(linear_repeat_s, i.uv01.xy);
+#else
+ float rl2_mask = 1;
+#endif
+ applyMatcap(pbr, rl2, _Rim_Lighting2_Mode, rl2_mask);
+#endif
+
+#if defined(_RIM_LIGHTING3)
+ float rl3_dist = exp2(-_Rim_Lighting3_Power * abs(rl_radius - _Rim_Lighting3_Center));
+#if defined(_RIM_LIGHTING3_ANGLE_LIMIT)
+ rl3_dist *= getAngleAttenuation(muv, _Rim_Lighting3_Angle_Limit_Target_Vector,
+ _Rim_Lighting3_Angle_Limit_Power);
+#endif
+#if defined(_RIM_LIGHTING3_QUANTIZATION)
+ rl3_dist = floor(rl3_dist * _Rim_Lighting3_Quantization_Steps) / _Rim_Lighting3_Quantization_Steps;
+#endif
+ float3 rl3 = _Rim_Lighting3_Color * _Rim_Lighting3_Brightness * rl3_dist;
+#if defined(_RIM_LIGHTING3_MASK)
+ float rl3_mask = _Rim_Lighting3_Mask.Sample(linear_repeat_s, i.uv01.xy);
+#else
+ float rl3_mask = 1;
+#endif
+ applyMatcap(pbr, rl3, _Rim_Lighting3_Mode, rl3_mask);
#endif
}