VTK  9.6.20260613
vtkWebGPUBatchedLabeledDataMapperInternals.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
3
4#ifndef vtkWebGPUBatchedLabeledDataMapperInternals_h
5#define vtkWebGPUBatchedLabeledDataMapperInternals_h
6
7#include "vtkRenderingWebGPUModule.h" // For export macro
9
10#include "vtk_wgpu.h"
11
12VTK_ABI_NAMESPACE_BEGIN
14
15class VTKRENDERINGWEBGPU_NO_EXPORT vtkWebGPUBatchedLabeledDataMapperInternals
17{
18public:
21
23
24 uint32_t NumberOfLabels = 0;
25
26 wgpu::Texture GlyphsTexture;
27 wgpu::TextureView GlyphsTextureView;
28 wgpu::Sampler GlyphsSampler;
29 wgpu::Buffer LabelUniformBuffer;
30
40 wgpu::VertexAttribute InstanceAttributes[3];
41 bool LabelCountChanged = false;
42
44
45 void RenderPiece(vtkRenderer* renderer, vtkActor* actor) override;
46 void ReleaseGraphicsResources(vtkWindow* window) override;
47
48protected:
51
52 bool IsPipelineSupported(GraphicsPipelineType pipelineType) override;
57 std::vector<wgpu::VertexBufferLayout> GetVertexBufferLayouts() override;
58 void SetVertexBuffers(const wgpu::RenderPassEncoder& encoder) override;
59 void SetVertexBuffers(const wgpu::RenderBundleEncoder& encoder) override;
60 std::vector<wgpu::BindGroupLayoutEntry> GetMeshBindGroupLayoutEntries() override;
61 std::vector<wgpu::BindGroupEntry> GetMeshBindGroupEntries() override;
62
64 vtkWebGPUActor* actor, std::string& vss, std::string& fss) override;
66 vtkWebGPUActor* actor, std::string& vss, std::string& fss) override;
68 vtkWebGPUActor* actor, std::string& vss, std::string& fss) override;
70 vtkWebGPUActor* actor, std::string& vss) override;
72 vtkWebGPUActor* actor, std::string& vss) override;
74 vtkWebGPUActor* actor, std::string& vss) override;
76 vtkWebGPUActor* actor, std::string& vss) override;
78 vtkWebGPUActor* actor, std::string& vss) override;
80 vtkWebGPUActor* actor, std::string& vss) override;
82 vtkWebGPUActor* actor, std::string& vss) override;
84 vtkWebGPUActor* actor, std::string& fss) override;
86 vtkWebGPUActor* actor, std::string& fss) override;
88 vtkWebGPUActor* actor, std::string& fss) override;
90 vtkWebGPURenderer* renderer, vtkWebGPUActor* actor, std::string& fss) override;
91
92private:
95 void operator=(const vtkWebGPUBatchedLabeledDataMapperInternals&) = delete;
96
97 void UpdateInstanceBuffers(vtkWebGPUConfiguration* wgpuConfiguration);
98 void UpdateUniformBuffer(vtkRenderer* renderer, vtkWebGPUConfiguration* wgpuConfiguration);
99};
100VTK_ABI_NAMESPACE_END
101
102#endif
represents an object (geometry & properties) in a rendered scene
Definition vtkActor.h:151
abstract specification for renderers
void SetVertexBuffers(const wgpu::RenderPassEncoder &encoder) override
void ReplaceShaderConstantsDef(GraphicsPipelineType pipelineType, vtkWebGPURenderer *renderer, vtkWebGPUActor *actor, std::string &vss, std::string &fss) override
void ReplaceVertexShaderUVs(GraphicsPipelineType pipelineType, vtkWebGPURenderer *renderer, vtkWebGPUActor *actor, std::string &vss) override
void ReplaceVertexShaderVertexId(GraphicsPipelineType pipelineType, vtkWebGPURenderer *renderer, vtkWebGPUActor *actor, std::string &vss) override
std::vector< wgpu::VertexBufferLayout > GetVertexBufferLayouts() override
std::vector< wgpu::BindGroupEntry > GetMeshBindGroupEntries() override
Allow subclasses to customize the entries in the bind group corresponding to GROUP_MESH.
void ReplaceVertexShaderInputDef(GraphicsPipelineType pipelineType, vtkWebGPURenderer *renderer, vtkWebGPUActor *actor, std::string &vss) override
void RenderPiece(vtkRenderer *renderer, vtkActor *actor) override
Implemented by sub classes.
void ReplaceFragmentShaderCoincidentOffset(GraphicsPipelineType pipelineType, vtkWebGPURenderer *renderer, vtkWebGPUActor *actor, std::string &fss) override
void ReplaceFragmentShaderColors(GraphicsPipelineType pipelineType, vtkWebGPURenderer *renderer, vtkWebGPUActor *actor, std::string &fss) override
std::vector< wgpu::BindGroupLayoutEntry > GetMeshBindGroupLayoutEntries() override
Allow subclasses to customize the entries in the bind group layout corresponding to GROUP_MESH.
static vtkWebGPUBatchedLabeledDataMapperInternals * New()
DrawCallArgs GetDrawCallArgs(GraphicsPipelineType pipelineType, vtkWebGPUCellToPrimitiveConverter::TopologySourceType topologySourceType) override
void ReplaceVertexShaderNormals(GraphicsPipelineType pipelineType, vtkWebGPURenderer *renderer, vtkWebGPUActor *actor, std::string &vss) override
void ReplaceVertexShaderTangents(GraphicsPipelineType pipelineType, vtkWebGPURenderer *renderer, vtkWebGPUActor *actor, std::string &vss) override
void ReplaceVertexShaderPosition(GraphicsPipelineType pipelineType, vtkWebGPURenderer *renderer, vtkWebGPUActor *actor, std::string &vss) override
void ReplaceFragmentShaderLights(GraphicsPipelineType pipelineType, vtkWebGPURenderer *renderer, vtkWebGPUActor *actor, std::string &fss) override
~vtkWebGPUBatchedLabeledDataMapperInternals() override=default
void SetVertexBuffers(const wgpu::RenderBundleEncoder &encoder) override
void ReplaceFragmentShaderNormals(GraphicsPipelineType pipelineType, vtkWebGPURenderer *renderer, vtkWebGPUActor *actor, std::string &fss) override
void ReplaceVertexShaderColors(GraphicsPipelineType pipelineType, vtkWebGPURenderer *renderer, vtkWebGPUActor *actor, std::string &vss) override
void ReleaseGraphicsResources(vtkWindow *window) override
Release any graphics resources that are being consumed by this mapper.
void ReplaceShaderCustomBindings(GraphicsPipelineType pipelineType, vtkWebGPURenderer *renderer, vtkWebGPUActor *actor, std::string &vss, std::string &fss) override
bool IsPipelineSupported(GraphicsPipelineType pipelineType) override
Whether shaders must be built to target the specific pipeline.
DrawCallArgs GetDrawCallArgsForDrawingVertices(vtkWebGPUCellToPrimitiveConverter::TopologySourceType topologySourceType) override
void ReplaceShaderCustomDef(GraphicsPipelineType pipelineType, vtkWebGPURenderer *renderer, vtkWebGPUActor *actor, std::string &vss, std::string &fss) override
WebGPU backend for vtkBatchedLabeledDataMapper.
TopologySourceType
All supported types of topology.
Create a webgpu device for use in rendering and compute pipelines.
GraphicsPipelineType
This mapper uses different wgpu::RenderPipeline to render a list of primitives.
window superclass for vtkRenderWindow
Definition vtkWindow.h:61