diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index c87ceddcb19b5d7088f2484919b318cd235970c7..1e1d7d4ffe3f4ba7be5b38cd94345397b448ef1d 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -2886,17 +2886,23 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() // These shaders are non-critical and do not fail shader load if (success) { - if (gGLManager.mGLVersion >= 4.19f) + // [RLVa:KB] - @setsphere + if (success) { - gDeferredPostCASProgram.mName = "Contrast Adaptive Sharpen Shader"; - gDeferredPostCASProgram.mFeatures.hasSrgb = true; - gDeferredPostCASProgram.mShaderFiles.clear(); - gDeferredPostCASProgram.mShaderFiles.push_back(make_pair("alchemy/postNoTCV.glsl", GL_VERTEX_SHADER)); - gDeferredPostCASProgram.mShaderFiles.push_back(make_pair("alchemy/CASF.glsl", GL_FRAGMENT_SHADER)); - gDeferredPostCASProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED]; - gDeferredPostCASProgram.createShader(NULL, NULL); + gRlvSphereProgram.mName = "RLVa Sphere Post Processing Shader"; + gRlvSphereProgram.mFeatures.isDeferred = true; + gRlvSphereProgram.mShaderFiles.clear(); + gRlvSphereProgram.mShaderFiles.push_back(make_pair("deferred/rlvV.glsl", GL_VERTEX_SHADER)); + if (gGLManager.mGLVersion >= 4.5f) + gRlvSphereProgram.mShaderFiles.push_back(make_pair("deferred/rlvF.glsl", GL_FRAGMENT_SHADER)); + else + gRlvSphereProgram.mShaderFiles.push_back(make_pair("deferred/rlvFLegacy.glsl", GL_FRAGMENT_SHADER)); + gRlvSphereProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED]; + success = gRlvSphereProgram.createShader(NULL, NULL); } + // [/RLV:KB] + if (success) { gDeferredPostDLSProgram.mName = "DLS Shader"; gDeferredPostDLSProgram.mFeatures.hasSrgb = true; @@ -2904,10 +2910,21 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() gDeferredPostDLSProgram.mShaderFiles.push_back(make_pair("alchemy/postNoTCV.glsl", GL_VERTEX_SHADER)); gDeferredPostDLSProgram.mShaderFiles.push_back(make_pair("alchemy/DLSF.glsl", GL_FRAGMENT_SHADER)); gDeferredPostDLSProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED]; - gDeferredPostDLSProgram.createShader(NULL, NULL); + success = gDeferredPostDLSProgram.createShader(NULL, NULL); } - if (gGLManager.mGLVersion >= 4.19f) + if (gGLManager.mGLVersion >= 4.59f) + { + gDeferredPostCASProgram.mName = "Contrast Adaptive Sharpen Shader"; + gDeferredPostCASProgram.mFeatures.hasSrgb = true; + gDeferredPostCASProgram.mShaderFiles.clear(); + gDeferredPostCASProgram.mShaderFiles.push_back(make_pair("alchemy/postNoTCV.glsl", GL_VERTEX_SHADER)); + gDeferredPostCASProgram.mShaderFiles.push_back(make_pair("alchemy/CASF.glsl", GL_FRAGMENT_SHADER)); + gDeferredPostCASProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED]; + gDeferredPostCASProgram.createShader(NULL, NULL); + } + + if (gGLManager.mGLVersion >= 4.59f) { gDeferredPostTonemapLPMProgram.mName = "Tonemapping Shader LPM"; gDeferredPostTonemapLPMProgram.mFeatures.hasSrgb = true; @@ -2920,21 +2937,6 @@ BOOL LLViewerShaderMgr::loadShadersDeferred() gDeferredPostTonemapLPMProgram.addPermutation("TONEMAP_METHOD", std::to_string(ALRenderUtil::TONEMAP_AMD)); gDeferredPostTonemapLPMProgram.createShader(NULL, NULL); // Ignore return value for this shader } -// [RLVa:KB] - @setsphere - if (success) - { - gRlvSphereProgram.mName = "RLVa Sphere Post Processing Shader"; - gRlvSphereProgram.mFeatures.isDeferred = true; - gRlvSphereProgram.mShaderFiles.clear(); - gRlvSphereProgram.mShaderFiles.push_back(make_pair("deferred/rlvV.glsl", GL_VERTEX_SHADER)); - if (gGLManager.mGLVersion >= 4.5f) - gRlvSphereProgram.mShaderFiles.push_back(make_pair("deferred/rlvF.glsl", GL_FRAGMENT_SHADER)); - else - gRlvSphereProgram.mShaderFiles.push_back(make_pair("deferred/rlvFLegacy.glsl", GL_FRAGMENT_SHADER)); - gRlvSphereProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED]; - gRlvSphereProgram.createShader(NULL, NULL); - } -// [/RLV:KB] } return success;