From 738312d48be32093283841c2368fe4b919da6580 Mon Sep 17 00:00:00 2001 From: yum Date: Thu, 20 Feb 2025 01:00:43 -0800 Subject: Add ability to quantize NoL Also add 2 more rim lighting slots --- matcaps.cginc | 64 +++++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 51 insertions(+), 13 deletions(-) (limited to 'matcaps.cginc') 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 } -- cgit v1.2.3