From 430ef09ab1da8228d2a187f2f1fbe5f5174e9b6a Mon Sep 17 00:00:00 2001 From: Wojciech Figat Date: Wed, 6 Apr 2022 13:16:12 +0200 Subject: [PATCH] Fix render pass resource checking --- Source/Engine/Renderer/GBufferPass.cpp | 2 +- Source/Engine/Renderer/GlobalSignDistanceFieldPass.cpp | 5 +++-- Source/Engine/Renderer/GlobalSurfaceAtlasPass.cpp | 2 +- Source/Engine/Renderer/MotionBlurPass.cpp | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Source/Engine/Renderer/GBufferPass.cpp b/Source/Engine/Renderer/GBufferPass.cpp index 682dd9b6a..e8b753b09 100644 --- a/Source/Engine/Renderer/GBufferPass.cpp +++ b/Source/Engine/Renderer/GBufferPass.cpp @@ -249,7 +249,7 @@ bool SortDecal(Decal* const& a, Decal* const& b) void GBufferPass::RenderDebug(RenderContext& renderContext) { // Check if has resources loaded - if (setupResources()) + if (checkIfSkipPass()) return; // Cache data diff --git a/Source/Engine/Renderer/GlobalSignDistanceFieldPass.cpp b/Source/Engine/Renderer/GlobalSignDistanceFieldPass.cpp index 23786ea69..7e4846b7f 100644 --- a/Source/Engine/Renderer/GlobalSignDistanceFieldPass.cpp +++ b/Source/Engine/Renderer/GlobalSignDistanceFieldPass.cpp @@ -170,7 +170,8 @@ bool GlobalSignDistanceFieldPass::setupResources() _csGenerateMip1 = shader->GetCS("CS_GenerateMip", 1); // Init buffer - _modelsBuffer = New(64u * (uint32)sizeof(ModelRasterizeData), (uint32)sizeof(ModelRasterizeData), false, TEXT("GlobalSDF.ModelsBuffer")); + if (!_modelsBuffer) + _modelsBuffer = New(64u * (uint32)sizeof(ModelRasterizeData), (uint32)sizeof(ModelRasterizeData), false, TEXT("GlobalSDF.ModelsBuffer")); // Create pipeline state GPUPipelineState::Description psDesc = GPUPipelineState::Description::DefaultFullscreenTriangle; @@ -229,7 +230,7 @@ bool GlobalSignDistanceFieldPass::Get(const RenderBuffers* buffers, BindingData& bool GlobalSignDistanceFieldPass::Render(RenderContext& renderContext, GPUContext* context, BindingData& result) { // Skip if not supported - if (setupResources()) + if (checkIfSkipPass()) return true; if (renderContext.List->Scenes.Count() == 0) return true; diff --git a/Source/Engine/Renderer/GlobalSurfaceAtlasPass.cpp b/Source/Engine/Renderer/GlobalSurfaceAtlasPass.cpp index b97e7bb66..3a99cc01b 100644 --- a/Source/Engine/Renderer/GlobalSurfaceAtlasPass.cpp +++ b/Source/Engine/Renderer/GlobalSurfaceAtlasPass.cpp @@ -186,7 +186,7 @@ void GlobalSurfaceAtlasPass::Dispose() bool GlobalSurfaceAtlasPass::Render(RenderContext& renderContext, GPUContext* context, BindingData& result) { // Skip if not supported - if (setupResources()) + if (checkIfSkipPass()) return true; if (renderContext.List->Scenes.Count() == 0) return true; diff --git a/Source/Engine/Renderer/MotionBlurPass.cpp b/Source/Engine/Renderer/MotionBlurPass.cpp index d0ad68691..e00225225 100644 --- a/Source/Engine/Renderer/MotionBlurPass.cpp +++ b/Source/Engine/Renderer/MotionBlurPass.cpp @@ -245,7 +245,7 @@ void MotionBlurPass::RenderDebug(RenderContext& renderContext, GPUTextureView* f { auto context = GPUDevice::Instance->GetMainContext(); const auto motionVectors = renderContext.Buffers->MotionVectors; - if (!motionVectors->IsAllocated() || setupResources()) + if (!motionVectors->IsAllocated() || checkIfSkipPass()) { context->Draw(frame); return;