diff options
| author | yum <yum.food.vr@gmail.com> | 2025-02-20 01:00:43 -0800 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2025-02-20 01:00:43 -0800 |
| commit | 738312d48be32093283841c2368fe4b919da6580 (patch) | |
| tree | fa6bd9f02f1687ab19577dd31078394409cab74f /matcaps.cginc | |
| parent | 65ed0c23335b10a266d76257eeb3e7ecfd23cfb5 (diff) | |
Add ability to quantize NoL
Also add 2 more rim lighting slots
Diffstat (limited to 'matcaps.cginc')
| -rw-r--r-- | matcaps.cginc | 64 |
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 } |
