diff --git a/src/engine/renderer/tr_bsp.cpp b/src/engine/renderer/tr_bsp.cpp index 09b43f06f..3f6d39e53 100644 --- a/src/engine/renderer/tr_bsp.cpp +++ b/src/engine/renderer/tr_bsp.cpp @@ -6728,6 +6728,7 @@ void R_BuildCubeMaps() int msecUnused1; int msecUnused2; + // Material system writes culled surfaces for the next frame, so we need to render twice with it to cull correctly if ( glConfig2.materialSystemAvailable ) { tr.refdef.pixelTarget = nullptr; diff --git a/src/engine/renderer/tr_scene.cpp b/src/engine/renderer/tr_scene.cpp index 65351e926..1a8b1a1b5 100644 --- a/src/engine/renderer/tr_scene.cpp +++ b/src/engine/renderer/tr_scene.cpp @@ -769,6 +769,7 @@ void RE_RenderScene( const refdef_t *fd ) if ( showCubeProbe ) { if ( glConfig2.materialSystemAvailable ) { + // Material system writes culled surfaces for the next frame, so we need to render twice with it to cull correctly R_SyncRenderThread(); RE_RenderScene( &refdef ); }