From 87650a6b8aa5b71e2a986c460e545d690566769d Mon Sep 17 00:00:00 2001 From: Jaswant Panchumarti <jaswant.panchumarti@kitware.com> Date: Wed, 4 Dec 2024 10:04:18 -0500 Subject: [PATCH] Rename vtkWebGPURenderer::BundleInvalidated to RebuildRenderBundle - Replace setter with a function `vtkWebGPURenderer::InvalidateBundle()` that sets `RebuildRenderBundle` = True --- Rendering/WebGPU/vtkWebGPUActor.cxx | 2 +- .../WebGPU/vtkWebGPUBatchedPolyDataMapper.cxx | 2 +- Rendering/WebGPU/vtkWebGPUPolyDataMapper.cxx | 4 ++-- Rendering/WebGPU/vtkWebGPURenderer.cxx | 16 +++++++++++++--- Rendering/WebGPU/vtkWebGPURenderer.h | 10 ++++------ 5 files changed, 21 insertions(+), 13 deletions(-) diff --git a/Rendering/WebGPU/vtkWebGPUActor.cxx b/Rendering/WebGPU/vtkWebGPUActor.cxx index 372a767bdd7..ef3e443c1d5 100644 --- a/Rendering/WebGPU/vtkWebGPUActor.cxx +++ b/Rendering/WebGPU/vtkWebGPUActor.cxx @@ -98,7 +98,7 @@ void vtkWebGPUActor::Render(vtkRenderer* renderer, vtkMapper* mapper) case vtkWebGPURenderer::RecordingCommands: if (wgpuRenderer->GetUseRenderBundles() && this->SupportRenderBundles()) { - if (wgpuRenderer->GetBundleInvalidated()) + if (wgpuRenderer->GetRebuildRenderBundle()) { wgpuRenderer->GetRenderBundleEncoder().SetBindGroup(1, this->ActorBindGroup); mapper->Render(renderer, this); diff --git a/Rendering/WebGPU/vtkWebGPUBatchedPolyDataMapper.cxx b/Rendering/WebGPU/vtkWebGPUBatchedPolyDataMapper.cxx index 883e0e164f2..f1127874a16 100644 --- a/Rendering/WebGPU/vtkWebGPUBatchedPolyDataMapper.cxx +++ b/Rendering/WebGPU/vtkWebGPUBatchedPolyDataMapper.cxx @@ -145,7 +145,7 @@ void vtkWebGPUBatchedPolyDataMapper::RenderPiece(vtkRenderer* renderer, vtkActor auto& batchElement = *(this->VTKPolyDataToBatchElement.begin()->second); if (this->LastBlockVisibility != batchElement.Visibility) { - wgpuRenderer->SetBundleInvalidated(true); + wgpuRenderer->InvalidateBundle(); } this->LastBlockVisibility = batchElement.Visibility; diff --git a/Rendering/WebGPU/vtkWebGPUPolyDataMapper.cxx b/Rendering/WebGPU/vtkWebGPUPolyDataMapper.cxx index cfdc04fa74b..76e7509142c 100644 --- a/Rendering/WebGPU/vtkWebGPUPolyDataMapper.cxx +++ b/Rendering/WebGPU/vtkWebGPUPolyDataMapper.cxx @@ -306,13 +306,13 @@ void vtkWebGPUPolyDataMapper::RenderPiece(vtkRenderer* renderer, vtkActor* actor if (this->GetNeedToRebuildGraphicsPipelines(actor)) { // render bundle must reference new bind groups and/or pipelines - wgpuRenderer->SetBundleInvalidated(true); + wgpuRenderer->InvalidateBundle(); this->SetupGraphicsPipelines(device, renderer, actor); } // invalidate render bundle when any of the cached properties of an actor have changed. if (this->CacheActorProperties(actor)) { - wgpuRenderer->SetBundleInvalidated(true); + wgpuRenderer->InvalidateBundle(); } break; } diff --git a/Rendering/WebGPU/vtkWebGPURenderer.cxx b/Rendering/WebGPU/vtkWebGPURenderer.cxx index 86409c94176..08dd0687a15 100644 --- a/Rendering/WebGPU/vtkWebGPURenderer.cxx +++ b/Rendering/WebGPU/vtkWebGPURenderer.cxx @@ -160,8 +160,18 @@ void vtkWebGPURenderer::UpdateBuffers() this->UpdateLightGeometry(); this->UpdateLights(); - // if any mapper's commands need rebundling, that mapper will set this flag. - this->BundleInvalidated = false; + // Render bundle is rebuilt if any mapper needs to re-record render commands. + if (this->UseRenderBundles) + { + if (this->Bundle != nullptr) + { + this->RebuildRenderBundle = false; + } + else + { + this->RebuildRenderBundle = true; + } + } this->UpdateGeometry(); // mappers prepare geometry SSBO and pipeline layout. this->CreateBuffers(); @@ -695,7 +705,7 @@ void vtkWebGPURenderer::BeginRecording() this->WGPURenderEncoder.PushDebugGroup("Renderer start encoding"); #endif this->WGPURenderEncoder.SetBindGroup(0, this->SceneBindGroup); - if (this->BundleInvalidated) + if (this->RebuildRenderBundle) { // destroy previous bundle. this->Bundle = nullptr; diff --git a/Rendering/WebGPU/vtkWebGPURenderer.h b/Rendering/WebGPU/vtkWebGPURenderer.h index c7333743f84..04305df8648 100644 --- a/Rendering/WebGPU/vtkWebGPURenderer.h +++ b/Rendering/WebGPU/vtkWebGPURenderer.h @@ -10,8 +10,6 @@ #include "vtkWebGPUComputePipeline.h" // for the compute pipelines used by this renderer #include "vtk_wgpu.h" // for webgpu -#include <string> // for ivar -#include <unordered_map> // for ivar #include <unordered_set> // for the set of actors rendered last frame class vtkAbstractMapper; @@ -169,12 +167,12 @@ public: * @note This does not use vtkSetMacro because the actor MTime should not be affected when a * render bundle is invalidated. */ - inline void SetBundleInvalidated(bool value) { this->BundleInvalidated = value; } + inline void InvalidateBundle() { this->RebuildRenderBundle = true; } /** * Get whether the render bundle associated with this actor must be reset by the renderer. */ - vtkGetMacro(BundleInvalidated, bool); + vtkGetMacro(RebuildRenderBundle, bool); protected: vtkWebGPURenderer(); @@ -216,9 +214,9 @@ protected: #ifdef __EMSCRIPTEN__ bool UseRenderBundles = true; #else - bool UseRenderBundles = true; + bool UseRenderBundles = false; #endif - bool BundleInvalidated = false; + bool RebuildRenderBundle = false; // the commands in bundle get reused every frame. wgpu::RenderBundle Bundle; -- GitLab