From 458e9d365ecd6b165fc1bb68f64eabe47b0bfd4d Mon Sep 17 00:00:00 2001 From: dexy Date: Wed, 5 May 2021 19:05:18 +1000 Subject: [PATCH] Slightly improved water for deferred shading by enabling depth write --- CodeWalker/Rendering/ShaderManager.cs | 35 +++++++++++++++------------ 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/CodeWalker/Rendering/ShaderManager.cs b/CodeWalker/Rendering/ShaderManager.cs index 7e665e7..f1ff7af 100644 --- a/CodeWalker/Rendering/ShaderManager.cs +++ b/CodeWalker/Rendering/ShaderManager.cs @@ -521,21 +521,8 @@ namespace CodeWalker.Rendering context.OutputMerger.BlendState = bsDefault; context.Rasterizer.State = wireframe ? rsWireframeDblSided : rsSolidDblSided; - context.OutputMerger.DepthStencilState = dsDisableWrite; - - for (int i = 0; i < RenderBuckets.Count; i++) //water pass - { - var bucket = RenderBuckets[i]; - if (bucket.WaterBatches.Count > 0) - { - RenderGeometryBatches(context, bucket.WaterBatches, Water); - } - if (bucket.Water2Batches.Count > 0) - { - RenderGeometryBatches(context, bucket.Water2Batches, Water); - } - } - if (RenderWaterQuads.Count > 0) //also render water quads here + context.OutputMerger.DepthStencilState = dsEnabled; + if (RenderWaterQuads.Count > 0) //render water quads { Water.SetShader(context); Water.SetSceneVars(context, Camera, Shadowmap, GlobalLights); @@ -545,6 +532,24 @@ namespace CodeWalker.Rendering } Water.UnbindResources(context); } + for (int i = 0; i < RenderBuckets.Count; i++) //main water geoms pass + { + var bucket = RenderBuckets[i]; + if (bucket.WaterBatches.Count > 0) + { + RenderGeometryBatches(context, bucket.WaterBatches, Water); + } + } + + context.OutputMerger.DepthStencilState = dsDisableWrite; + for (int i = 0; i < RenderBuckets.Count; i++) //water decals pass + { + var bucket = RenderBuckets[i]; + if (bucket.Water2Batches.Count > 0) + { + RenderGeometryBatches(context, bucket.Water2Batches, Water); + } + }