Fixes rendering reflections and refractions in case of empty scissors.
This was SVN commit r26902.
This commit is contained in:
parent
a6f60afdc5
commit
53033ceaa2
@ -558,6 +558,11 @@ void CSceneRenderer::RenderReflections(
|
||||
ComputeReflectionCamera(m_ViewCamera, scissor);
|
||||
const CBoundingBoxAligned reflectionScissor =
|
||||
m->terrainRenderer.ScissorWater(CULL_DEFAULT, m_ViewCamera);
|
||||
if (reflectionScissor.IsEmpty())
|
||||
{
|
||||
m_ViewCamera = normalCamera;
|
||||
return;
|
||||
}
|
||||
|
||||
g_Renderer.SetViewport(m_ViewCamera.GetViewPort());
|
||||
|
||||
@ -623,6 +628,11 @@ void CSceneRenderer::RenderRefractions(
|
||||
ComputeRefractionCamera(m_ViewCamera, scissor);
|
||||
const CBoundingBoxAligned refractionScissor =
|
||||
m->terrainRenderer.ScissorWater(CULL_DEFAULT, m_ViewCamera);
|
||||
if (refractionScissor.IsEmpty())
|
||||
{
|
||||
m_ViewCamera = normalCamera;
|
||||
return;
|
||||
}
|
||||
|
||||
CVector4D camPlane(0, -1, 0, wm.m_WaterHeight + 2.0f);
|
||||
SetObliqueFrustumClipping(m_ViewCamera, camPlane);
|
||||
|
@ -379,6 +379,8 @@ CBoundingBoxAligned TerrainRenderer::ScissorWater(int cullGroup, const CCamera&
|
||||
if (!waterBoundsInViewPort.IsEmpty())
|
||||
scissor += waterBoundsInViewPort;
|
||||
}
|
||||
if (scissor.IsEmpty())
|
||||
return scissor;
|
||||
return CBoundingBoxAligned(
|
||||
CVector3D(Clamp(scissor[0].X, -1.0f, 1.0f), Clamp(scissor[0].Y, -1.0f, 1.0f), -1.0f),
|
||||
CVector3D(Clamp(scissor[1].X, -1.0f, 1.0f), Clamp(scissor[1].Y, -1.0f, 1.0f), 1.0f));
|
||||
|
Loading…
Reference in New Issue
Block a user