diff --git a/Core/Libraries/Source/WWVegas/WW3D2/pointgr.cpp b/Core/Libraries/Source/WWVegas/WW3D2/pointgr.cpp index bd7f2c9a84e..23a6bf26a9b 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/pointgr.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/pointgr.cpp @@ -927,7 +927,12 @@ void PointGroupClass::Render(RenderInfoClass &rinfo) DX8Wrapper::Set_Texture(0,Texture); // Enable sorting if the primitives are translucent and alpha testing is not enabled. - const bool sort = (Shader.Get_Dst_Blend_Func() != ShaderClass::DSTBLEND_ZERO) && (Shader.Get_Alpha_Test() == ShaderClass::ALPHATEST_DISABLE) && (WW3D::Is_Sorting_Enabled()); + // TheSuperHackers @bugfix stephanmeesters 30/06/2026 However, do not apply sorting to ground-aligned particles. + // This improves performance and resolves rendering artifacts caused by clipping between ground-aligned particles and billboard particles. + const bool sort = Billboard && + Shader.Get_Dst_Blend_Func() != ShaderClass::DSTBLEND_ZERO && + Shader.Get_Alpha_Test() == ShaderClass::ALPHATEST_DISABLE && + WW3D::Is_Sorting_Enabled(); IndexBufferClass *indexbuffer; int verticesperprimitive;/// lorenzen fixed @@ -1836,6 +1841,7 @@ void PointGroupClass::RenderVolumeParticle(RenderInfoClass &rinfo, unsigned int DX8Wrapper::Set_Texture(0,Texture); // Enable sorting if the primitives are translucent and alpha testing is not enabled. + // TheSuperHackers @info Volumetric particles that are ground-aligned must have sorting enabled. const bool sort = (Shader.Get_Dst_Blend_Func() != ShaderClass::DSTBLEND_ZERO) && (Shader.Get_Alpha_Test() == ShaderClass::ALPHATEST_DISABLE) && (WW3D::Is_Sorting_Enabled()); IndexBufferClass *indexbuffer;