From a63fcfc9d584075bb263ccf10857852b3327be43 Mon Sep 17 00:00:00 2001 From: Dave Parks Date: Wed, 28 Sep 2022 00:15:34 -0500 Subject: [PATCH] SL-18190 Remove some (likely) superfluous color space conversions --- .../class2/windlight/atmosphericsF.glsl | 29 ++++++++----------- .../shaders/class2/windlight/gammaF.glsl | 5 ++-- .../shaders/class2/windlight/transportF.glsl | 7 ++--- 3 files changed, 16 insertions(+), 25 deletions(-) diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl index ecf1545d2d..e578f618da 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl @@ -32,23 +32,6 @@ uniform int no_atmo; vec3 srgb_to_linear(vec3 col); vec3 linear_to_srgb(vec3 col); -vec3 atmosFragLightingLinear(vec3 light, vec3 additive, vec3 atten) -{ - if (no_atmo == 1) - { - return light; - } - - light = linear_to_srgb(light); - additive = linear_to_srgb(additive); - atten = linear_to_srgb(atten); - - light *= atten.r; - light += additive; - return srgb_to_linear(light); -} - - vec3 atmosFragLighting(vec3 light, vec3 additive, vec3 atten) { if (no_atmo == 1) @@ -60,6 +43,18 @@ vec3 atmosFragLighting(vec3 light, vec3 additive, vec3 atten) return light * 2.0; } +vec3 atmosFragLightingLinear(vec3 light, vec3 additive, vec3 atten) +{ + if (no_atmo == 1) + { + return light; + } + + light *= atten.r; + light += additive; + return light; +} + vec3 atmosLighting(vec3 light) { return atmosFragLighting(light, getAdditiveColor(), getAtmosAttenuation()); diff --git a/indra/newview/app_settings/shaders/class2/windlight/gammaF.glsl b/indra/newview/app_settings/shaders/class2/windlight/gammaF.glsl index 6dfb2e7cf6..a32a572461 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/gammaF.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/gammaF.glsl @@ -32,16 +32,15 @@ vec3 srgb_to_linear(vec3 col); vec3 linear_to_srgb(vec3 col); vec3 scaleSoftClipFragLinear(vec3 light) -{ +{ // identical to non-linear version and that's probably close enough if (no_atmo == 1) { return light; } - light = linear_to_srgb(light); //soft clip effect: light = 1. - clamp(light, vec3(0.), vec3(1.)); light = 1. - pow(light, vec3(gamma)); // s/b inverted already CPU-side - return srgb_to_linear(light); + return light; } vec3 scaleSoftClipFrag(vec3 light) diff --git a/indra/newview/app_settings/shaders/class2/windlight/transportF.glsl b/indra/newview/app_settings/shaders/class2/windlight/transportF.glsl index 4bf2275e6a..ecf0430a88 100644 --- a/indra/newview/app_settings/shaders/class2/windlight/transportF.glsl +++ b/indra/newview/app_settings/shaders/class2/windlight/transportF.glsl @@ -49,12 +49,9 @@ vec3 atmosTransport(vec3 light) vec3 fullbrightAtmosTransportFragLinear(vec3 light, vec3 additive, vec3 atten) { - light = linear_to_srgb(light); - additive = linear_to_srgb(additive); - atten = linear_to_srgb(atten); - + // same as non-linear version, probably fine float brightness = dot(light.rgb * 0.5, vec3(0.3333)) + 0.1; - return srgb_to_linear(mix(atmosTransportFrag(light.rgb, additive, atten), light.rgb + additive, brightness * brightness)); + return mix(atmosTransportFrag(light.rgb, additive, atten), light.rgb + additive, brightness * brightness); } vec3 fullbrightAtmosTransportFrag(vec3 light, vec3 additive, vec3 atten)