From 9aee507e28a7af8aa53dcd5d61c81e6752fb7a12 Mon Sep 17 00:00:00 2001 From: Vladislav Belov Date: Sun, 10 May 2026 23:57:12 +0200 Subject: [PATCH] Adds wireframe techniques for particle and terrain --- .../mods/mod/shaders/effects/particle_solid.xml | 9 --------- .../mod/shaders/effects/particle_wireframe.xml | 10 ++++++++++ .../mods/mod/shaders/effects/terrain_solid.xml | 15 --------------- .../mods/mod/shaders/effects/water_simple.xml | 10 ---------- .../shaders/effects/water_simple_wireframe.xml | 11 +++++++++++ source/renderer/ParticleRenderer.cpp | 4 +--- source/renderer/TerrainRenderer.cpp | 16 ++++++++-------- 7 files changed, 30 insertions(+), 45 deletions(-) create mode 100644 binaries/data/mods/mod/shaders/effects/particle_wireframe.xml create mode 100644 binaries/data/mods/mod/shaders/effects/water_simple_wireframe.xml diff --git a/binaries/data/mods/mod/shaders/effects/particle_solid.xml b/binaries/data/mods/mod/shaders/effects/particle_solid.xml index 0bfc54ed5a..42a6ebb418 100644 --- a/binaries/data/mods/mod/shaders/effects/particle_solid.xml +++ b/binaries/data/mods/mod/shaders/effects/particle_solid.xml @@ -1,14 +1,5 @@ - - - - - - - - - diff --git a/binaries/data/mods/mod/shaders/effects/particle_wireframe.xml b/binaries/data/mods/mod/shaders/effects/particle_wireframe.xml new file mode 100644 index 0000000000..4af02d22d6 --- /dev/null +++ b/binaries/data/mods/mod/shaders/effects/particle_wireframe.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/binaries/data/mods/mod/shaders/effects/terrain_solid.xml b/binaries/data/mods/mod/shaders/effects/terrain_solid.xml index 448bb237e3..d80d36602c 100644 --- a/binaries/data/mods/mod/shaders/effects/terrain_solid.xml +++ b/binaries/data/mods/mod/shaders/effects/terrain_solid.xml @@ -1,20 +1,5 @@ - - - - - - - - - - - diff --git a/binaries/data/mods/mod/shaders/effects/water_simple.xml b/binaries/data/mods/mod/shaders/effects/water_simple.xml index a23a159abf..b63b674768 100644 --- a/binaries/data/mods/mod/shaders/effects/water_simple.xml +++ b/binaries/data/mods/mod/shaders/effects/water_simple.xml @@ -1,15 +1,5 @@ - - - - - - - - - - diff --git a/binaries/data/mods/mod/shaders/effects/water_simple_wireframe.xml b/binaries/data/mods/mod/shaders/effects/water_simple_wireframe.xml new file mode 100644 index 0000000000..8fc77349b3 --- /dev/null +++ b/binaries/data/mods/mod/shaders/effects/water_simple_wireframe.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/source/renderer/ParticleRenderer.cpp b/source/renderer/ParticleRenderer.cpp index d10b78c8c7..6745b53046 100644 --- a/source/renderer/ParticleRenderer.cpp +++ b/source/renderer/ParticleRenderer.cpp @@ -112,9 +112,7 @@ void ParticleRenderer::PrepareForRendering(const CShaderDefines& context) m->techSubtract = g_Renderer.GetShaderManager().LoadEffect(str_particle_subtract, context); m->techOverlay = g_Renderer.GetShaderManager().LoadEffect(str_particle_overlay, context); m->techMultiply = g_Renderer.GetShaderManager().LoadEffect(str_particle_multiply, context); - CShaderDefines contextWithWireframe = context; - contextWithWireframe.Add(str_MODE_WIREFRAME, str_1); - m->techWireframe = g_Renderer.GetShaderManager().LoadEffect(str_particle_solid, contextWithWireframe); + m->techWireframe = g_Renderer.GetShaderManager().LoadEffect(str_particle_wireframe, {}); } ++m->frameNumber; diff --git a/source/renderer/TerrainRenderer.cpp b/source/renderer/TerrainRenderer.cpp index da1c8cd4a9..523ae29ff4 100644 --- a/source/renderer/TerrainRenderer.cpp +++ b/source/renderer/TerrainRenderer.cpp @@ -672,17 +672,17 @@ void TerrainRenderer::RenderSimpleWater( PROFILE3("simple water"); GPU_SCOPED_LABEL(deviceCommandContext, "Render Simple Water"); - const WaterManager& waterManager = g_Renderer.GetSceneRenderer().GetWaterManager(); - CLOSTexture& losTexture = g_Renderer.GetSceneRenderer().GetScene().GetLOSTexture(); + CSceneRenderer& sceneRenderer{g_Renderer.GetSceneRenderer()}; + const WaterManager& waterManager{sceneRenderer.GetWaterManager()}; + CLOSTexture& losTexture{sceneRenderer.GetScene().GetLOSTexture()}; const double time = waterManager.m_WaterTexTimer; - CShaderDefines context; - if (g_Renderer.GetSceneRenderer().GetWaterRenderMode() == WIREFRAME) - context.Add(str_MODE_WIREFRAME, str_1); - - CShaderTechniquePtr waterSimpleTech = - g_Renderer.GetShaderManager().LoadEffect(str_water_simple, context); + CShaderTechniquePtr waterSimpleTech{ + g_Renderer.GetShaderManager().LoadEffect( + sceneRenderer.GetWaterRenderMode() == WIREFRAME + ? str_water_simple_wireframe + : str_water_simple, {})}; deviceCommandContext->SetGraphicsPipelineState( waterSimpleTech->GetGraphicsPipelineState()); deviceCommandContext->BeginPass();