forked from mirrors/0ad
Fixes not drawing brushes under water when refractions are enabled.
This was SVN commit r26411.
This commit is contained in:
@@ -372,9 +372,11 @@ void OverlayRenderer::PrepareForRendering()
|
||||
m->quadVertices.PrepareForRendering();
|
||||
}
|
||||
|
||||
void OverlayRenderer::RenderOverlaysBeforeWater()
|
||||
void OverlayRenderer::RenderOverlaysBeforeWater(
|
||||
Renderer::Backend::GL::CDeviceCommandContext* deviceCommandContext)
|
||||
{
|
||||
PROFILE3_GPU("overlays (before)");
|
||||
GPU_SCOPED_LABEL(deviceCommandContext, "Render overlays before water");
|
||||
|
||||
#if CONFIG2_GLES
|
||||
#warning TODO: implement OverlayRenderer::RenderOverlaysBeforeWater for GLES
|
||||
|
||||
@@ -100,7 +100,8 @@ public:
|
||||
* (i.e. rendered behind other objects in the normal 3D way)
|
||||
* and should be drawn before water (i.e. may be visible under the water)
|
||||
*/
|
||||
void RenderOverlaysBeforeWater();
|
||||
void RenderOverlaysBeforeWater(
|
||||
Renderer::Backend::GL::CDeviceCommandContext* deviceCommandContext);
|
||||
|
||||
/**
|
||||
* Render all the submitted overlays that are embedded in the world
|
||||
|
||||
@@ -713,6 +713,9 @@ void CSceneRenderer::RenderRefractions(
|
||||
// Render terrain and models
|
||||
RenderPatches(deviceCommandContext, context, CULL_REFRACTIONS);
|
||||
ogl_WarnIfError();
|
||||
// Render debug-related terrain overlays to make it visible under water.
|
||||
ITerrainOverlay::RenderOverlaysBeforeWater(deviceCommandContext);
|
||||
ogl_WarnIfError();
|
||||
RenderModels(deviceCommandContext, context, CULL_REFRACTIONS);
|
||||
ogl_WarnIfError();
|
||||
RenderTransparentModels(deviceCommandContext, context, CULL_REFRACTIONS, TRANSPARENT_OPAQUE);
|
||||
@@ -900,7 +903,7 @@ void CSceneRenderer::RenderSubmissions(
|
||||
ogl_WarnIfError();
|
||||
|
||||
// render other debug-related overlays before water (so they can be seen when underwater)
|
||||
m->overlayRenderer.RenderOverlaysBeforeWater();
|
||||
m->overlayRenderer.RenderOverlaysBeforeWater(deviceCommandContext);
|
||||
ogl_WarnIfError();
|
||||
|
||||
RenderModels(deviceCommandContext, context, cullGroup);
|
||||
|
||||
@@ -71,6 +71,7 @@ void ITerrainOverlay::RenderOverlaysBeforeWater(
|
||||
return;
|
||||
|
||||
PROFILE3_GPU("terrain overlays (before)");
|
||||
GPU_SCOPED_LABEL(deviceCommandContext, "Render terrain overlays before water");
|
||||
|
||||
for (size_t i = 0; i < g_TerrainOverlayList.size(); ++i)
|
||||
g_TerrainOverlayList[i].first->RenderBeforeWater(deviceCommandContext);
|
||||
@@ -83,6 +84,7 @@ void ITerrainOverlay::RenderOverlaysAfterWater(
|
||||
return;
|
||||
|
||||
PROFILE3_GPU("terrain overlays (after)");
|
||||
GPU_SCOPED_LABEL(deviceCommandContext, "Render terrain overlays after water");
|
||||
|
||||
for (size_t i = 0; i < g_TerrainOverlayList.size(); ++i)
|
||||
g_TerrainOverlayList[i].first->RenderAfterWater(deviceCommandContext, cullGroup);
|
||||
|
||||
Reference in New Issue
Block a user