diff options
author | Dave Parks <davep@lindenlab.com> | 2023-01-23 12:24:06 -0600 |
---|---|---|
committer | Dave Parks <davep@lindenlab.com> | 2023-01-23 12:24:06 -0600 |
commit | 8bad6ccde406566cd6859db69c45c06eb6001386 (patch) | |
tree | 9a801d594b045a4c86db907f14a99a5809beef52 /indra/newview | |
parent | 613ffc6ce6b8990b21ddc32e9d8467c6f111600f (diff) |
SL-19015 Fix gamma correct shader noise parameters (remove banding)
Diffstat (limited to 'indra/newview')
-rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/postDeferredGammaCorrect.glsl | 4 | ||||
-rw-r--r-- | indra/newview/pipeline.cpp | 13 |
2 files changed, 5 insertions, 12 deletions
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredGammaCorrect.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredGammaCorrect.glsl index a73a59bc6f..987b2d1fe8 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredGammaCorrect.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredGammaCorrect.glsl @@ -84,7 +84,9 @@ void main() //this is the one of the rare spots where diffuseRect contains linear color values (not sRGB) vec4 diff = texture2D(diffuseRect, vary_fragcoord); diff.rgb = linear_to_srgb(diff.rgb); - vec3 seed = (diff.rgb+vec3(1.0))*vec3(vary_fragcoord.xy, vary_fragcoord.x+vary_fragcoord.y); + vec2 tc = vary_fragcoord.xy*screen_res; + + vec3 seed = (diff.rgb+vec3(1.0))*vec3(tc.xy, tc.x+tc.y); vec3 nz = vec3(noise(seed.rg), noise(seed.gb), noise(seed.rb)); diff.rgb += nz*0.008; //diff.rgb = nz; diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index aeb7341411..e534523d3c 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -7608,17 +7608,8 @@ void LLPipeline::renderFinalize() gDeferredPostGammaCorrectProgram.uniform1f(LLShaderMgr::DISPLAY_GAMMA, (gamma > 0.1f) ? 1.0f / gamma : (1.0f / 2.2f)); - gGL.begin(LLRender::TRIANGLE_STRIP); - gGL.texCoord2f(tc1.mV[0], tc1.mV[1]); - gGL.vertex2f(-1, -1); - - gGL.texCoord2f(tc1.mV[0], tc2.mV[1]); - gGL.vertex2f(-1, 3); - - gGL.texCoord2f(tc2.mV[0], tc1.mV[1]); - gGL.vertex2f(3, -1); - - gGL.end(); + mScreenTriangleVB->setBuffer(); + mScreenTriangleVB->drawArrays(LLRender::TRIANGLES, 0, 3); gGL.getTexUnit(channel)->unbind(screenTarget()->getUsage()); gDeferredPostGammaCorrectProgram.unbind(); |