diff options
| author | Jonathan "Geenz" Goodman <geenz@lindenlab.com> | 2025-09-18 15:25:31 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-18 15:25:31 -0400 |
| commit | f316a92f308be836b57f638514dcd56f3851a89a (patch) | |
| tree | 9a1431c0c311de41388879b31f26c6faa8bf5e89 /indra/newview/app_settings/shaders/class1/deferred/postDeferredTonemap.glsl | |
| parent | badeccbebcfa73a11cf0f8a4562c9a0d386834c1 (diff) | |
| parent | 82e431e0906647dcfc4a64b057e6bc305c9add8e (diff) | |
Merge pull request #4700 from secondlife/geenz/2025.07-develop
Geenz/2025.07 -> develop
Diffstat (limited to 'indra/newview/app_settings/shaders/class1/deferred/postDeferredTonemap.glsl')
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/postDeferredTonemap.glsl | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredTonemap.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredTonemap.glsl index 1f01c7f16a..b1218d61af 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredTonemap.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredTonemap.glsl @@ -31,11 +31,25 @@ uniform sampler2D diffuseRect; in vec2 vary_fragcoord; +#ifdef GAMMA_CORRECT +uniform float gamma; +#endif + vec3 linear_to_srgb(vec3 cl); vec3 toneMap(vec3 color); vec3 clampHDRRange(vec3 color); +#ifdef GAMMA_CORRECT +vec3 legacyGamma(vec3 color) +{ + vec3 c = 1. - clamp(color, vec3(0.), vec3(1.)); + c = 1. - pow(c, vec3(gamma)); // s/b inverted already CPU-side + + return c; +} +#endif + void main() { //this is the one of the rare spots where diffuseRect contains linear color values (not sRGB) @@ -47,8 +61,18 @@ void main() diff.rgb = clamp(diff.rgb, vec3(0.0), vec3(1.0)); #endif - diff.rgb = clampHDRRange(diff.rgb); +#ifdef GAMMA_CORRECT + diff.rgb = linear_to_srgb(diff.rgb); + +#ifdef LEGACY_GAMMA + diff.rgb = legacyGamma(diff.rgb); +#endif + +#endif + + diff.rgb = clamp(diff.rgb, vec3(0.0), vec3(1.0)); // We should always be 0-1 past this point + //debugExposure(diff.rgb); - frag_color = max(diff, vec4(0)); + frag_color = diff; } |
