Adds wireframe techniques for particle and terrain

This commit is contained in:
Vladislav Belov 2026-05-10 23:57:12 +02:00
parent 75bd640bd8
commit 9aee507e28
No known key found for this signature in database
GPG key ID: 353545E45DB9CCB3
7 changed files with 30 additions and 45 deletions

View file

@ -1,14 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<effect>
<technique>
<require shaders="glsl"/>
<require shaders="spirv"/>
<require context="MODE_WIREFRAME"/>
<pass shader="particle_solid">
<polygon mode="LINE"/>
</pass>
</technique>
<technique>
<require shaders="glsl"/>
<require shaders="spirv"/>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<effect>
<technique>
<require shaders="glsl"/>
<require shaders="spirv"/>
<pass shader="particle_solid">
<polygon mode="LINE"/>
</pass>
</technique>
</effect>

View file

@ -1,20 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<effect>
<technique>
<require context="PASS_SHADOWS || MODE_SILHOUETTEOCCLUDER"/>
<require shaders="glsl"/>
<require shaders="spirv"/>
<pass shader="dummy">
<!--
To prevent units displaying silhouettes when parts of their model
protrude into the ground, only occlude with the back faces of the
terrain (so silhouettes will still display when behind hills).
-->
<cull mode="FRONT"/>
<color mask_red="FALSE" mask_green="FALSE" mask_blue="FALSE" mask_alpha="FALSE"/>
</pass>
</technique>
<technique>
<require shaders="glsl"/>
<require shaders="spirv"/>

View file

@ -1,15 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<effect>
<technique>
<require shaders="glsl"/>
<require shaders="spirv"/>
<require context="MODE_WIREFRAME"/>
<pass shader="water_simple">
<depth test="TRUE"/>
<polygon mode="LINE"/>
</pass>
</technique>
<technique>
<require shaders="glsl"/>
<require shaders="spirv"/>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<effect>
<technique>
<require shaders="glsl"/>
<require shaders="spirv"/>
<pass shader="water_simple">
<depth test="TRUE"/>
<polygon mode="LINE"/>
</pass>
</technique>
</effect>

View file

@ -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;

View file

@ -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();