summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorGraham Linden <graham@lindenlab.com>2019-01-09 09:14:59 -0800
committerGraham Linden <graham@lindenlab.com>2019-01-09 09:14:59 -0800
commit3cb7eb639398db5f1828f6afb45e2313434b75f7 (patch)
tree2ee5f48fe9670b4a9d8a57afdc143fbfb4c10978 /indra/newview
parentb865fc88e575e39111418a329362eada368445cd (diff)
Fix broken underwater rendering and reversed logic in generation of distortion map.
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/pipeline.cpp19
1 files changed, 9 insertions, 10 deletions
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 887421d3f8..5d9c4d64cb 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -8331,9 +8331,9 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, LLRenderTarget* light_
(F32) gGLViewport[3]);
}
- if (sReflectionRender && !LLPipeline::sDistortionRender && !shader.getUniformLocation(LLShaderMgr::MODELVIEW_MATRIX))
+ if (sReflectionRender && !shader.getUniformLocation(LLShaderMgr::MODELVIEW_MATRIX))
{
- shader.uniformMatrix4fv(LLShaderMgr::MODELVIEW_MATRIX, 1, FALSE, mReflectionModelView.m);
+ shader.uniformMatrix4fv(LLShaderMgr::MODELVIEW_MATRIX, 1, FALSE, mReflectionModelView.m);
}
channel = shader.enableTexture(LLShaderMgr::DEFERRED_NOISE);
@@ -9577,12 +9577,13 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
{
static LLCullResult reflected_objects;
LLGLDisable cull(GL_CULL_FACE);
+
+ LLGLUserClipPlane clip_plane(plane, mat, projection);
updateCull(camera, reflected_objects);
stateSort(camera, reflected_objects);
gPipeline.grabReferences(reflected_objects);
- LLGLUserClipPlane clip_plane(plane, mat, projection);
if (LLPipeline::sRenderDeferred)
{
renderGeomDeferred(camera);
@@ -9625,7 +9626,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
LLPipeline::sUnderWaterRender = LLViewerCamera::getInstance()->cameraUnderWater();
- if (LLPipeline::sUnderWaterRender)
+ if (!LLPipeline::sUnderWaterRender)
{
clearRenderTypeMask(LLPipeline::RENDER_TYPE_GROUND,
LLPipeline::RENDER_TYPE_SKY,
@@ -9646,13 +9647,11 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
mWaterDis.getViewport(gGLViewport);
- if (!LLPipeline::sUnderWaterRender || LLDrawPoolWater::sNeedsReflectionUpdate)
+ if (LLPipeline::sUnderWaterRender || LLDrawPoolWater::sNeedsReflectionUpdate)
{
//clip out geometry on the same side of water as the camera
- mat = get_current_modelview();
-
LLPlane plane(pnorm, water_height);
- LLGLUserClipPlane clip_plane(plane, mat, projection);
+ LLGLUserClipPlane clip_plane(plane, mReflectionModelView, projection);
static LLCullResult result;
updateCull(camera, result, water_clip, &plane);
@@ -9667,14 +9666,14 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
mWaterDis.flush();
gGL.setColorMask(true, true);
glClearColor(0,0,0,0);
- gPipeline.mWaterDeferredDepth.bindTarget();
+ gPipeline.mWaterDeferredDepth.bindTarget();
gPipeline.mWaterDeferredDepth.clear();
gPipeline.mWaterDeferredScreen.bindTarget();
gPipeline.mWaterDeferredScreen.clear();
gPipeline.grabReferences(result);
gGL.setColorMask(true, false);
- renderGeomDeferred(camera);
+ renderGeomDeferred(camera);
}
else
{