summaryrefslogtreecommitdiff
path: root/indra/newview/llviewershadermgr.cpp
diff options
context:
space:
mode:
authorGraham Linden <graham@lindenlab.com>2019-01-31 09:56:37 -0800
committerGraham Linden <graham@lindenlab.com>2019-01-31 09:56:37 -0800
commit767fb53aeb1ac92a141586b1c0b5d1e5d327b281 (patch)
tree969fe889ad0eed03676030e7a9a13965b077d20a /indra/newview/llviewershadermgr.cpp
parent695490d41b5be60570806ec0179b0334d032a531 (diff)
9996 partial fix (works for non-ALM rendering only)
Use a new edge water shader to allow forcing frag depth to avoid z-fighting at back edge of water edge pieces. This will not work for ALM because forcing the depth breaks the use of the depth to backproject gbuffer position which breaks lighting calcs.
Diffstat (limited to 'indra/newview/llviewershadermgr.cpp')
-rw-r--r--indra/newview/llviewershadermgr.cpp25
1 files changed, 1 insertions, 24 deletions
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index 5bc4c1a6aa..54c1a602d9 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -187,7 +187,6 @@ LLGLSLShader gPostNightVisionProgram;
// Deferred rendering shaders
LLGLSLShader gDeferredImpostorProgram;
LLGLSLShader gDeferredWaterProgram;
-LLGLSLShader gDeferredWaterEdgeProgram;
LLGLSLShader gDeferredUnderWaterProgram;
LLGLSLShader gDeferredDiffuseProgram;
LLGLSLShader gDeferredDiffuseAlphaMaskProgram;
@@ -350,7 +349,6 @@ LLViewerShaderMgr::LLViewerShaderMgr() :
mShaderList.push_back(&gDeferredEmissiveProgram);
mShaderList.push_back(&gDeferredAvatarEyesProgram);
mShaderList.push_back(&gDeferredWaterProgram);
- mShaderList.push_back(&gDeferredWaterEdgeProgram);
mShaderList.push_back(&gDeferredUnderWaterProgram);
mShaderList.push_back(&gDeferredAvatarAlphaProgram);
mShaderList.push_back(&gDeferredWLSkyProgram);
@@ -1138,7 +1136,7 @@ BOOL LLViewerShaderMgr::loadShadersWater()
gWaterEdgeProgram.addPermutation("WATER_EDGE", "1");
gWaterEdgeProgram.mShaderGroup = LLGLSLShader::SG_WATER;
gWaterEdgeProgram.mShaderLevel = mShaderLevel[SHADER_WATER];
- success = gWaterProgram.createShader(NULL, NULL);
+ success = gWaterEdgeProgram.createShader(NULL, NULL);
llassert(success);
}
@@ -1298,7 +1296,6 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
gDeferredPostGammaCorrectProgram.unload();
gFXAAProgram.unload();
gDeferredWaterProgram.unload();
- gDeferredWaterEdgeProgram.unload();
gDeferredUnderWaterProgram.unload();
gDeferredWLSkyProgram.unload();
gDeferredWLCloudProgram.unload();
@@ -2019,26 +2016,6 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
llassert(success);
}
- if (success)
- {
- // load water shader
- gDeferredWaterEdgeProgram.mName = "Deferred Water Shader";
- gDeferredWaterEdgeProgram.mFeatures.calculatesAtmospherics = true;
- gDeferredWaterEdgeProgram.mFeatures.hasGamma = true;
- gDeferredWaterEdgeProgram.mFeatures.hasTransport = true;
- gDeferredWaterEdgeProgram.mFeatures.encodesNormal = true;
- gDeferredWaterEdgeProgram.mFeatures.hasShadows = true;
-
- gDeferredWaterEdgeProgram.mShaderFiles.clear();
- gDeferredWaterEdgeProgram.mShaderFiles.push_back(make_pair("deferred/waterV.glsl", GL_VERTEX_SHADER_ARB));
- gDeferredWaterEdgeProgram.mShaderFiles.push_back(make_pair("deferred/waterF.glsl", GL_FRAGMENT_SHADER_ARB));
- gDeferredWaterEdgeProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];
- gDeferredWaterEdgeProgram.mShaderGroup = LLGLSLShader::SG_WATER;
- gDeferredWaterEdgeProgram.addPermutation("WATER_EDGE", "1");
- success = gDeferredWaterEdgeProgram.createShader(NULL, NULL);
- llassert(success);
- }
-
if (success)
{
// load water shader