MCPcopy Create free account
hub / github.com/Kitware/VTK / Render

Method Render

Rendering/WebGPU/vtkWebGPUActor.cxx:91–151  ·  view source on GitHub ↗

------------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

89
90//------------------------------------------------------------------------------
91void vtkWebGPUActor::Render(vtkRenderer* renderer, vtkMapper* mapper)
92{
93 auto& internals = (*this->Internals);
94 if (auto* wgpuRenderer = vtkWebGPURenderer::SafeDownCast(renderer))
95 {
96 auto* wgpuRenderWindow = vtkWebGPURenderWindow::SafeDownCast(wgpuRenderer->GetRenderWindow());
97 auto* wgpuConfiguration = wgpuRenderWindow->GetWGPUConfiguration();
98 switch (wgpuRenderer->GetRenderStage())
99 {
100 case vtkWebGPURenderer::AwaitingPreparation:
101 break;
102 case vtkWebGPURenderer::SyncDeviceResources:
103 {
104 if (auto* wgpuTexture = vtkWebGPUTexture::SafeDownCast(this->GetTexture()))
105 {
106 wgpuTexture->Render(renderer);
107 }
108 if (this->NeedToRecreateBindGroups())
109 {
110 this->CreateBindGroups(wgpuConfiguration);
111 }
112 // reset this flag because the `mapper->Render()` call shall invalidate the bundle if it
113 // determines that the render bundle needs to be recorded once again.
114 mapper->Render(renderer, this);
115 bool updateBuffers = this->CacheActorRenderOptions();
116 updateBuffers |= this->CacheActorShadeOptions();
117 updateBuffers |= this->CacheActorTransforms();
118 updateBuffers |= this->CacheActorId();
119 if (updateBuffers)
120 {
121 wgpuConfiguration->WriteBuffer(internals.ActorBuffer, 0,
122 this->GetCachedActorInformation(), this->GetCacheSizeBytes(), "ActorBufferUpdate");
123 }
124 break;
125 }
126 case vtkWebGPURenderer::RecordingCommands:
127 if (wgpuRenderer->GetUseRenderBundles() && this->SupportRenderBundles())
128 {
129 if (wgpuRenderer->GetRebuildRenderBundle())
130 {
131 wgpuRenderer->GetRenderBundleEncoder().SetBindGroup(1, internals.ActorBindGroup);
132 mapper->Render(renderer, this);
133 }
134 // else, no need to record draw commands.
135 }
136 else
137 {
138 wgpuRenderer->GetRenderPassEncoder().SetBindGroup(1, internals.ActorBindGroup);
139 mapper->Render(renderer, this);
140 }
141 break;
142 case vtkWebGPURenderer::Finished:
143 default:
144 break;
145 }
146 }
147 else
148 {

Callers

nothing calls this directly

Calls 13

CreateBindGroupsMethod · 0.95
CacheActorTransformsMethod · 0.95
CacheActorIdMethod · 0.95
GetCacheSizeBytesMethod · 0.95
SupportRenderBundlesMethod · 0.95
RenderMethod · 0.65
GetRenderWindowMethod · 0.45
GetTextureMethod · 0.45

Tested by

no test coverage detected