1
0
forked from mirrors/0ad

Fixes not drawing brushes under water when refractions are enabled.

This was SVN commit r26411.
This commit is contained in:
vladislavbelov
2022-02-19 15:44:32 +00:00
parent 36833d1df2
commit b0826da1bc
4 changed files with 11 additions and 3 deletions
+3 -1
View File
@@ -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
+2 -1
View File
@@ -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
+4 -1
View File
@@ -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);
+2
View File
@@ -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);