From c0dd3281c28361ffc81417d79cf968c0f07f3d0d Mon Sep 17 00:00:00 2001 From: Nick Date: Tue, 15 Sep 2026 06:47:40 -0400 Subject: [PATCH 1/5] clear SkyGeometry on reset. StaticCacheGeometryRenderer will readd them but when the property still exists it causes it to try to clear memory outside the bounds of the GPU. adds release guard to never try to upload outside of range as well --- Core/Render/OpenGL/Buffer/ArrayBufferObject.cs | 4 ++++ .../World/Geometry/Static/SkyGeometryManager.cs | 17 ++++++----------- Core/World/Geometry/Sides/Side.cs | 1 + RELEASENOTES.md | 1 + 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/Core/Render/OpenGL/Buffer/ArrayBufferObject.cs b/Core/Render/OpenGL/Buffer/ArrayBufferObject.cs index 6894a5b55..3c696b9d5 100644 --- a/Core/Render/OpenGL/Buffer/ArrayBufferObject.cs +++ b/Core/Render/OpenGL/Buffer/ArrayBufferObject.cs @@ -59,6 +59,10 @@ protected unsafe override bool BufferSubData(int index, int length) int size = BytesPerElement * length; Assert.Precondition(m_uploadedSize >= offset + size, "Offset and size are out of bounds for the GPU"); + // This shouldn't happen and should be handled upstream but never upload out of range for the GPU. + if (m_uploadedSize < offset + size) + return false; + GL.BufferSubData(Target, offset, size, ptr + (BytesPerElement * index)); } return true; diff --git a/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/Static/SkyGeometryManager.cs b/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/Static/SkyGeometryManager.cs index be69d54c8..12374eb39 100644 --- a/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/Static/SkyGeometryManager.cs +++ b/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/Static/SkyGeometryManager.cs @@ -1,10 +1,11 @@ -using System.Collections.Generic; -using Helion.Render.OpenGL.Buffer.Array.Vertex; +using Helion.Render.OpenGL.Buffer.Array.Vertex; using Helion.Render.OpenGL.Renderers.Legacy.World.Sky; using Helion.Render.OpenGL.Renderers.Legacy.World.Sky.Sphere; using Helion.World.Geometry.Sectors; using Helion.World.Geometry.Sides; using Helion.World.Geometry.Walls; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; namespace Helion.Render.OpenGL.Renderers.Legacy.World.Geometry.Static; @@ -43,8 +44,7 @@ public static void AddSide(ISkyComponent sky, Side side, WallLocation wallLocati int index = sky.Vbo.Count; sky.Add(vertices, vertices.Length); - if (side.SkyGeometry == null) - side.SkyGeometry = new(); + side.SkyGeometry ??= new(); if (vertices == null) return; @@ -137,13 +137,8 @@ private static void ClearSkyGeometry(StaticSkyGeometryData? data) if (data == null) return; - for (int i = 0; i < data.Length; i++) - { - int index = data.Index + i; - data.Vbo.Data.Data[index].X = 0; - data.Vbo.Data.Data[index].Y = 0; - data.Vbo.Data.Data[index].Z = 0; - } + ref var reference = ref data.Vbo.Data.Data[data.Index]; + Unsafe.InitBlockUnaligned(ref Unsafe.As(ref reference), 0, (uint)(Marshal.SizeOf() * data.Length)); data.Vbo.Bind(); data.Vbo.UploadSubData(data.Index, data.Length); diff --git a/Core/World/Geometry/Sides/Side.cs b/Core/World/Geometry/Sides/Side.cs index c4ddb7e98..44c936292 100644 --- a/Core/World/Geometry/Sides/Side.cs +++ b/Core/World/Geometry/Sides/Side.cs @@ -125,6 +125,7 @@ public void Reset() MiddleInvalidatedCount = default; LowerInvalidatedCount = default; AlphaInvalidatedCount = default; + SkyGeometry = default; Upper.Reset(); Middle.Reset(); diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 19bcbb6c1..a73e0ab03 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -30,6 +30,7 @@ - Fix status bar weapon slot condition to correctly check against switched weapon instead of the weapon that's actively being switched to. - Fix status bar uses ammo condition. - Fix BufferSubData call that could write out of bounds on GPU resulting in corrupted/missing walls. +- Fix sky geometry holding stale references on map reloads. - Fix rendering issue with lines when changing transfer heights views. - Fix width, speed, and mass properties to default to zero for dehacked instead of using default decorate values. From f592dd0e590b1df83c341d8524f22e70e17dbf2b Mon Sep 17 00:00:00 2001 From: Nick Date: Tue, 15 Sep 2026 06:52:30 -0400 Subject: [PATCH 2/5] fix typo --- Core/Util/Configs/Components/ConfigRender.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/Util/Configs/Components/ConfigRender.cs b/Core/Util/Configs/Components/ConfigRender.cs index c46f6f130..7f8e17c23 100644 --- a/Core/Util/Configs/Components/ConfigRender.cs +++ b/Core/Util/Configs/Components/ConfigRender.cs @@ -88,7 +88,7 @@ public class ConfigRenderHealthBar : ConfigElement public class ConfigRender : ConfigElement { - [ConfigInfo("Changes the render mode. Adaptive can be very beneficial on itegrated GPUs.")] + [ConfigInfo("Changes the render mode. Adaptive can be very beneficial on integrated GPUs.")] [OptionMenu(OptionSectionType.Render, "Mode")] public readonly ConfigValue Mode = new(AdaptiveRenderMode.Static); public readonly ConfigRenderAdaptive Adaptive = new(); From 7cf3d0d74d60b635d8d5d2a0ead491a83812c30f Mon Sep 17 00:00:00 2001 From: Nick <42744211+nstlaurent@users.noreply.github.com> Date: Tue, 15 Sep 2026 07:31:08 -0400 Subject: [PATCH 3/5] correct size of type (#1789) --- .../Legacy/World/Geometry/Static/SkyGeometryManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/Static/SkyGeometryManager.cs b/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/Static/SkyGeometryManager.cs index 12374eb39..ee5f9e244 100644 --- a/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/Static/SkyGeometryManager.cs +++ b/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/Static/SkyGeometryManager.cs @@ -138,7 +138,7 @@ private static void ClearSkyGeometry(StaticSkyGeometryData? data) return; ref var reference = ref data.Vbo.Data.Data[data.Index]; - Unsafe.InitBlockUnaligned(ref Unsafe.As(ref reference), 0, (uint)(Marshal.SizeOf() * data.Length)); + Unsafe.InitBlockUnaligned(ref Unsafe.As(ref reference), 0, (uint)(Marshal.SizeOf() * data.Length)); data.Vbo.Bind(); data.Vbo.UploadSubData(data.Index, data.Length); From ecbdb4e5669a815cda2977b049310c519044dcd7 Mon Sep 17 00:00:00 2001 From: Nick <42744211+nstlaurent@users.noreply.github.com> Date: Thu, 17 Sep 2026 15:05:16 -0400 Subject: [PATCH 4/5] Sky render fixes (#1794) --- .../Geometry/GeometryRenderer.Sector3D.cs | 4 +- .../Legacy/World/Geometry/GeometryRenderer.cs | 46 +++++++++++------- .../Static/StaticCacheGeometryRenderer.cs | 21 ++++++-- Core/World/Geometry/Sides/Side.cs | 1 + RELEASENOTES.md | 1 + Tests/Resources/skyshowcase.zip | Bin 34416 -> 34082 bytes 6 files changed, 50 insertions(+), 23 deletions(-) diff --git a/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/GeometryRenderer.Sector3D.cs b/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/GeometryRenderer.Sector3D.cs index d7960a778..b75fdd3e7 100644 --- a/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/GeometryRenderer.Sector3D.cs +++ b/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/GeometryRenderer.Sector3D.cs @@ -564,8 +564,8 @@ public RenderWallSliceResult RenderTwoSidedLowerSlice(RenderWallSliceArgs args) if (!SetSectorsForTwoSidedLowerSlice(args, out var facing, out var other)) return RenderWallSliceResult.EmptyNoAddOffset; - RenderTwoSidedLower(args.Side, args.OtherSide, facing, other, args.IsFrontSide, out var sideVertices, out var skyVertices, lightLevelSector: args.LightSector); - return new(sideVertices, skyVertices, null); + RenderTwoSidedLower(args.Side, args.OtherSide, facing, other, args.IsFrontSide, out var sideVertices, out var skyVertices, out var skyVertices2, lightLevelSector: args.LightSector); + return new(sideVertices, skyVertices, null, skyVertices2); } public bool SetSectorsForTwoSidedUpperSlice(in RenderWallSliceArgs args, out Sector facing, out Sector other) diff --git a/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/GeometryRenderer.cs b/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/GeometryRenderer.cs index 2f00a75a7..dface4eab 100644 --- a/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/GeometryRenderer.cs +++ b/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/GeometryRenderer.cs @@ -954,7 +954,7 @@ private void RenderTwoSided(Side facingSide, bool isFrontSide) if (renderSlices3D) RenderWallSlices3D(facingSide, facingSide.Lower, isFrontSide, otherSide, facingSector, otherSector, facingSide.Sector.SectorPlanes3D, m_renderTwoSidedLowerSliceFunc); else - RenderTwoSidedLower(facingSide, otherSide, facingSector, otherSector, isFrontSide, out _, out _); + RenderTwoSidedLower(facingSide, otherSide, facingSector, otherSector, isFrontSide, out _, out _, out _); } if ((visibility & SideTexture.Upper) != 0) @@ -1142,10 +1142,11 @@ public bool ShouldRenderFogBarrier(Side side, Side otherSide) } public void RenderTwoSidedLower(Side facingSide, Side otherSide, Sector facingSector, Sector otherSector, bool isFrontSide, - out DynamicVertex[]? vertices, out SkyGeometryVertex[]? skyVertices, Sector? lightLevelSector = null) + out DynamicVertex[]? vertices, out SkyGeometryVertex[]? skyVertices, out SkyGeometryVertex[]? skyVertices2, Sector? lightLevelSector = null, bool renderSkySide = true) { vertices = null; skyVertices = null; + skyVertices2 = null; Wall lowerWall = facingSide.Lower; bool isSky = TextureManager.IsSkyTexture(otherSector.Floor.TextureHandle) && lowerWall.TextureHandle == Constants.NoTextureIndex && @@ -1175,6 +1176,9 @@ public void RenderTwoSidedLower(Side facingSide, Side otherSide, Sector facingSe SectorPlane bottom = facingSector.Floor; lightLevelSector ??= facingSector; + if (renderSkySide && RenderBlock.IsBlocked(facingSide, facingSector, otherSector)) + RenderSkySide(facingSide, facingSector, otherSector, texture, isFrontSide, out skyVertices2); + if (isSky) { SkyGeometryVertex[]? data = m_skyWallVertexLowerLookup[facingSide.Id]; @@ -1189,8 +1193,11 @@ public void RenderTwoSidedLower(Side facingSide, Side otherSide, Sector facingSe m_skyWallVertexLowerLookup[facingSide.Id] = data; } - var sector = otherSide.Sector; - m_skyRenderer.Add(data, data.Length, sector.FloorSkyTextureHandle, sector.SkyOptions, sector.SkyOffset); + if (m_buffer) + { + var sector = otherSide.Sector; + m_skyRenderer.Add(data, data.Length, sector.FloorSkyTextureHandle, sector.SkyOptions, sector.SkyOffset); + } vertices = null; skyVertices = data; } @@ -1252,8 +1259,7 @@ public void RenderTwoSidedUpper(Side facingSide, Side otherSide, Sector facingSe if (m_vanillaRender && ((facingSide.FloodTextures & SideTexture.Upper) == 0 || isSky)) { - // TODO why was this check here - //if (!isSky || (isSky && !TextureManager.IsSkyTexture(otherSide.Sector.Ceiling.TextureHandle))) + if (RenderBlock.IsBlocked(facingSide, facingSector, otherSector)) RenderCoverWall(WallLocation.Upper, facingSide, facingSector, otherSector, isFrontSide); } @@ -1275,7 +1281,7 @@ public void RenderTwoSidedUpper(Side facingSide, Side otherSide, Sector facingSe SectorPlane top = facingSector.Ceiling; SectorPlane bottom = otherSector.Ceiling; - if (renderSkySide) + if (renderSkySide && (!isSky || renderSkySideOnly)) RenderSkySide(facingSide, facingSector, otherSector, texture, isFrontSide, out skyVertices2); if (renderSkySideOnly) return; @@ -1284,16 +1290,14 @@ public void RenderTwoSidedUpper(Side facingSide, Side otherSide, Sector facingSe if (isSky) { - SkyGeometryVertex[]? data = m_skyWallVertexUpperLookup[facingSide.Id]; - - if (TextureManager.IsSkyTexture(otherSide.Sector.Ceiling.TextureHandle) || !renderSkySide) + if (!renderSkySide || skyVertices2 != null || (TextureManager.IsSkyTexture(otherSide.Sector.Ceiling.TextureHandle) && !RenderBlock.IsBlocked(facingSide, facingSector, otherSector))) { - //m_skyOverride = true; vertices = null; skyVertices = null; return; } + var data = m_skyWallVertexUpperLookup[facingSide.Id]; if (facingSide.OffsetChanged || m_sectorChangedLine || data == null) { WorldTriangulator.HandleTwoSidedUpper(facingSide, top, bottom, texture.UVInverse, @@ -1305,8 +1309,8 @@ public void RenderTwoSidedUpper(Side facingSide, Side otherSide, Sector facingSe m_skyWallVertexUpperLookup[facingSide.Id] = data; } - var sector = plane.Sector; - m_skyRenderer.Add(data, data.Length, sector.CeilingSkyTextureHandle, sector.SkyOptions, sector.SkyOffset); + if (m_buffer) + m_skyRenderer.Add(data, data.Length, facingSector.CeilingSkyTextureHandle, facingSector.SkyOptions, facingSector.SkyOffset); vertices = null; skyVertices = data; } @@ -1420,9 +1424,13 @@ private void RenderSkySide(Side facingSide, Sector facingSector, Sector? otherSe } SetSkyWallVertices(m_skyWallVertices, wall); - var sector = facingSide.Sector; - m_skyRenderer.Add(m_skyWallVertices, m_skyWallVertices.Length, sector.CeilingSkyTextureHandle, sector.SkyOptions, sector.SkyOffset); skyVertices = m_skyWallVertices; + + if (m_buffer) + { + var sector = facingSide.Sector; + m_skyRenderer.Add(m_skyWallVertices, m_skyWallVertices.Length, sector.CeilingSkyTextureHandle, sector.SkyOptions, sector.SkyOffset); + } } public void RenderSkySide(Side facingSide, Sector facingSector, SectorPlaneFace face, bool isFront, out SkyGeometryVertex[]? skyVertices) @@ -1764,8 +1772,12 @@ private bool RenderFlat(DynamicArray subsectors, SectorPlane renderPl vertices = null; skyVertices = lookupData; - var skyHandle = floor ? sector.FloorSkyTextureHandle : sector.CeilingSkyTextureHandle; - m_skyRenderer.Add(lookupData, lookupData.Length, skyHandle, sector.SkyOptions, sector.SkyOffset); + + if (m_buffer) + { + var skyHandle = floor ? sector.FloorSkyTextureHandle : sector.CeilingSkyTextureHandle; + m_skyRenderer.Add(lookupData, lookupData.Length, skyHandle, sector.SkyOptions, sector.SkyOffset); + } } else { diff --git a/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/Static/StaticCacheGeometryRenderer.cs b/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/Static/StaticCacheGeometryRenderer.cs index 82ae4bde2..a597d9d10 100644 --- a/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/Static/StaticCacheGeometryRenderer.cs +++ b/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/Static/StaticCacheGeometryRenderer.cs @@ -472,8 +472,15 @@ private void AddTwoSided(Side side, bool isFrontSide, bool update, bool fogBarri } else { - m_geometryRenderer.RenderTwoSidedLower(side, otherSide, facingSector, otherSector, isFrontSide, out var sideVertices, out var skyVertices); - result = new(sideVertices, skyVertices, null); + m_geometryRenderer.RenderTwoSidedLower(side, otherSide, facingSector, otherSector, isFrontSide, out var sideVertices, out var skyVertices, out var skyVertices2); + result = new(sideVertices, skyVertices, null, skyVertices2); + } + + if (result.SkyVertices2 != null) + { + // The side has to be marked to be re-calculated on movement because it can completely change how the sky is rendered. + side.Flags.LowerSky = true; + result.SkyVertices = result.SkyVertices2; } SetSideVertices(side, side.Lower, update, result.Vertices, lowerVisible, true, null); @@ -999,11 +1006,14 @@ private void HandleSectorMoveStartForLines(WorldBase world, Sector sector, bool SkyGeometryManager.ClearGeometryVertices(line.Front, WallLocation.Upper); } - if (line.Front.IsDynamic) + if (line.Front.IsDynamic || line.Front.Flags.LowerSky) { ClearSideGeometryVertices(line.Front, line.Front.Lower); SkyGeometryManager.ClearGeometryVertices(line.Front, WallLocation.Lower); + } + if (line.Front.IsDynamic) + { ClearSideGeometryVertices(line.Front, line.Front.Middle); SkyGeometryManager.ClearGeometryVertices(line.Front, WallLocation.Middle); @@ -1031,11 +1041,14 @@ private void HandleSectorMoveStartForLines(WorldBase world, Sector sector, bool SkyGeometryManager.ClearGeometryVertices(line.Back, WallLocation.Upper); } - if (line.Back.IsDynamic) + if (line.Back.IsDynamic || line.Back.Flags.LowerSky) { ClearSideGeometryVertices(line.Back, line.Back.Lower); SkyGeometryManager.ClearGeometryVertices(line.Back, WallLocation.Lower); + } + if (line.Back.IsDynamic) + { ClearSideGeometryVertices(line.Back, line.Back.Middle); SkyGeometryManager.ClearGeometryVertices(line.Back, WallLocation.Middle); diff --git a/Core/World/Geometry/Sides/Side.cs b/Core/World/Geometry/Sides/Side.cs index 44c936292..1d6d00456 100644 --- a/Core/World/Geometry/Sides/Side.cs +++ b/Core/World/Geometry/Sides/Side.cs @@ -20,6 +20,7 @@ public struct SideFlags { public bool BlockmapLinked; public bool UpperSky; + public bool LowerSky; public bool LightLevelAbsolute; public bool NoFakeContrast; public bool SmoothLighting; diff --git a/RELEASENOTES.md b/RELEASENOTES.md index a73e0ab03..80234c0ea 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -33,6 +33,7 @@ - Fix sky geometry holding stale references on map reloads. - Fix rendering issue with lines when changing transfer heights views. - Fix width, speed, and mass properties to default to zero for dehacked instead of using default decorate values. +- Fix dynamic sky rendering issues. ## Misc: - Use DrawArraysInstanced instead of geometry shader for sprite rendering (allows for MacOS support). diff --git a/Tests/Resources/skyshowcase.zip b/Tests/Resources/skyshowcase.zip index 0cc8ae2f5493643e3d78561fcd28f8c146aa5e08..d94ca0a9351effb7589f8c7755d691996d34bfc3 100644 GIT binary patch literal 34082 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 literal 34416 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 VN0$I^RyL3fBM{mGY1uXq4**2BpQQi* From 7f46b61c29d9c8b4dcd16541e05ab97b4ad40ef9 Mon Sep 17 00:00:00 2001 From: Nick Date: Sat, 19 Sep 2026 05:13:13 -0400 Subject: [PATCH 5/5] do not render sky sides when rendering sliced 3d lowers --- .../Legacy/World/Geometry/GeometryRenderer.Sector3D.cs | 3 ++- .../OpenGL/Renderers/Legacy/World/Geometry/GeometryRenderer.cs | 2 +- .../World/Geometry/Static/StaticCacheGeometryRenderer.cs | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/GeometryRenderer.Sector3D.cs b/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/GeometryRenderer.Sector3D.cs index b75fdd3e7..59feff37f 100644 --- a/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/GeometryRenderer.Sector3D.cs +++ b/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/GeometryRenderer.Sector3D.cs @@ -564,7 +564,8 @@ public RenderWallSliceResult RenderTwoSidedLowerSlice(RenderWallSliceArgs args) if (!SetSectorsForTwoSidedLowerSlice(args, out var facing, out var other)) return RenderWallSliceResult.EmptyNoAddOffset; - RenderTwoSidedLower(args.Side, args.OtherSide, facing, other, args.IsFrontSide, out var sideVertices, out var skyVertices, out var skyVertices2, lightLevelSector: args.LightSector); + RenderTwoSidedLower(args.Side, args.OtherSide, facing, other, args.IsFrontSide, out var sideVertices, out var skyVertices, out var skyVertices2, + lightLevelSector: args.LightSector, renderSkySide: args.RenderSkySide); return new(sideVertices, skyVertices, null, skyVertices2); } diff --git a/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/GeometryRenderer.cs b/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/GeometryRenderer.cs index dface4eab..ec8193627 100644 --- a/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/GeometryRenderer.cs +++ b/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/GeometryRenderer.cs @@ -952,7 +952,7 @@ private void RenderTwoSided(Side facingSide, bool isFrontSide) if ((visibility & SideTexture.Lower) != 0) { if (renderSlices3D) - RenderWallSlices3D(facingSide, facingSide.Lower, isFrontSide, otherSide, facingSector, otherSector, facingSide.Sector.SectorPlanes3D, m_renderTwoSidedLowerSliceFunc); + RenderWallSlices3D(facingSide, facingSide.Lower, isFrontSide, otherSide, facingSector, otherSector, facingSide.Sector.SectorPlanes3D, m_renderTwoSidedLowerSliceFunc, renderSkySide: false); else RenderTwoSidedLower(facingSide, otherSide, facingSector, otherSector, isFrontSide, out _, out _, out _); } diff --git a/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/Static/StaticCacheGeometryRenderer.cs b/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/Static/StaticCacheGeometryRenderer.cs index a597d9d10..defbaf9d8 100644 --- a/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/Static/StaticCacheGeometryRenderer.cs +++ b/Core/Render/OpenGL/Renderers/Legacy/World/Geometry/Static/StaticCacheGeometryRenderer.cs @@ -468,7 +468,7 @@ private void AddTwoSided(Side side, bool isFrontSide, bool update, bool fogBarri RenderWallSliceResult result; if (side.Sector.Sectors3D.Length > 0) { - result = m_geometryRenderer.RenderWallSlices3D(side, side.Lower, isFrontSide, otherSide, facingSector, otherSector, side.Sector.SectorPlanes3D, m_renderTwoSidedLowerSliceFunc); + result = m_geometryRenderer.RenderWallSlices3D(side, side.Lower, isFrontSide, otherSide, facingSector, otherSector, side.Sector.SectorPlanes3D, m_renderTwoSidedLowerSliceFunc, renderSkySide: false); } else {