diff options
Diffstat (limited to 'pbr.cginc')
| -rw-r--r-- | pbr.cginc | 30 |
1 files changed, 16 insertions, 14 deletions
@@ -256,14 +256,28 @@ float4 getLitColor( indirect_light.diffuse[1] *= _Reflection_Probe_Saturation; } + float2 brightnesses = float2( + direct_light.color[2], + indirect_light.diffuse[2]); + // Do this to avoid division by 0. If both light sources are black, + // sum_brightness could be 0; + brightnesses = max(brightnesses, min(_Min_Brightness, .001)); + float sum_brightness = brightnesses[0] + brightnesses[1]; + float2 brightness_proportions = brightnesses / sum_brightness; + sum_brightness = clamp(sum_brightness, _Min_Brightness, _Max_Brightness); + direct_light.color[2] = sum_brightness * brightness_proportions[0]; + indirect_light.diffuse[2] = sum_brightness * brightness_proportions[1]; + #if defined(_PROXIMITY_DIMMING) { float cam_dist = length(_WorldSpaceCameraPos - worldPos); + // Map onto [min, max] cam_dist = clamp(cam_dist, _Proximity_Dimming_Min_Dist, _Proximity_Dimming_Max_Dist); + // Map onto [0, max - min] + cam_dist -= _Proximity_Dimming_Min_Dist; // Map onto [0, 1] - cam_dist = (cam_dist - _Proximity_Dimming_Min_Dist) / - (_Proximity_Dimming_Max_Dist - _Proximity_Dimming_Min_Dist); + cam_dist /= _Proximity_Dimming_Max_Dist - _Proximity_Dimming_Min_Dist; float dim_factor = lerp(_Proximity_Dimming_Factor, 1, cam_dist); direct_light.color[2] *= dim_factor; indirect_light.diffuse[2] *= dim_factor; @@ -271,18 +285,6 @@ float4 getLitColor( } #endif - float2 brightnesses = float2( - direct_light.color[2], - indirect_light.diffuse[2]); - // Do this to avoid division by 0. If both light sources are black, - // sum_brightness could be 0; - brightnesses = max(brightnesses, min(_Min_Brightness, .001)); - float sum_brightness = brightnesses[0] + brightnesses[1]; - float2 brightness_proportions = brightnesses / sum_brightness; - sum_brightness = clamp(sum_brightness, _Min_Brightness, _Max_Brightness); - direct_light.color[2] = sum_brightness * brightness_proportions[0]; - indirect_light.diffuse[2] = sum_brightness * brightness_proportions[1]; - direct_light.color[2] *= _Lighting_Factor * _Direct_Lighting_Factor * enable_direct; indirect_light.specular[2] *= _Lighting_Factor * _Indirect_Specular_Lighting_Factor * |
