From e44c09aa6efcca95865c10ae7ee125a4445c4b73 Mon Sep 17 00:00:00 2001 From: Wojciech Figat Date: Thu, 21 Apr 2022 12:10:22 +0200 Subject: [PATCH] Optimize SDF model buffer flushing to be used only if needed --- .../Engine/Renderer/GlobalSignDistanceFieldPass.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Source/Engine/Renderer/GlobalSignDistanceFieldPass.cpp b/Source/Engine/Renderer/GlobalSignDistanceFieldPass.cpp index e287ba6f0..71c73c7d1 100644 --- a/Source/Engine/Renderer/GlobalSignDistanceFieldPass.cpp +++ b/Source/Engine/Renderer/GlobalSignDistanceFieldPass.cpp @@ -460,12 +460,6 @@ bool GlobalSignDistanceFieldPass::Render(RenderContext& renderContext, GPUContex } } - // Send models data to the GPU - { - PROFILE_GPU_CPU("Update Models"); - _modelsBuffer->Flush(context); - } - // Perform batched chunks rasterization if (!anyDraw) { @@ -533,6 +527,13 @@ bool GlobalSignDistanceFieldPass::Render(RenderContext& renderContext, GPUContex } } + // Send models data to the GPU + if (chunks.Count() != 0) + { + PROFILE_GPU_CPU("Update Models"); + _modelsBuffer->Flush(context); + } + // Rasterize non-empty chunk (first layer so can override existing chunk data) for (const auto& e : chunks) {