VTK  9.7.20260910
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 "Private/vtkWebGPUHandle.h" // for the handle types
11#include "vtk_wgpu.h"
12
13VTK_ABI_NAMESPACE_BEGIN
15
16class VTKRENDERINGWEBGPU_NO_EXPORT vtkWebGPUBatchedLabeledDataMapperInternals
18{
19public:
22
24
25 uint32_t NumberOfLabels = 0;
26
27 vtkWebGPU::Texture GlyphsTexture;
28 vtkWebGPU::TextureView GlyphsTextureView;
29 vtkWebGPU::Sampler GlyphsSampler;
30 vtkWebGPU::Buffer LabelUniformBuffer;
31
41 WGPUVertexAttribute InstanceAttributes[3];
42 bool LabelCountChanged = false;
43
45
46 void RenderPiece(vtkRenderer* renderer, vtkActor* actor) override;
47 void ReleaseGraphicsResources(vtkWindow* window) override;
48
49protected:
52
53 bool IsPipelineSupported(GraphicsPipelineType pipelineType) override;
58 std::vector<WGPUVertexBufferLayout> GetVertexBufferLayouts() override;
59 void SetVertexBuffers(const WGPURenderPassEncoder& encoder) override;
60 void SetVertexBuffers(const WGPURenderBundleEncoder& encoder) override;
61 std::vector<WGPUBindGroupLayoutEntry> GetMeshBindGroupLayoutEntries() override;
62 std::vector<WGPUBindGroupEntry> GetMeshBindGroupEntries() override;
63
65 vtkWebGPUActor* actor, std::string& vss, std::string& fss) override;
67 vtkWebGPUActor* actor, std::string& vss, std::string& fss) override;
69 vtkWebGPUActor* actor, std::string& vss, std::string& fss) override;
71 vtkWebGPUActor* actor, std::string& vss) override;
73 vtkWebGPUActor* actor, std::string& vss) override;
75 vtkWebGPUActor* actor, std::string& vss) override;
77 vtkWebGPUActor* actor, std::string& vss) override;
79 vtkWebGPUActor* actor, std::string& vss) override;
81 vtkWebGPUActor* actor, std::string& vss) override;
83 vtkWebGPUActor* actor, std::string& vss) override;
85 vtkWebGPUActor* actor, std::string& fss) override;
87 vtkWebGPUActor* actor, std::string& fss) override;
89 vtkWebGPUActor* actor, std::string& fss) override;
91 vtkWebGPURenderer* renderer, vtkWebGPUActor* actor, std::string& fss) override;
92
93private:
96 void operator=(const vtkWebGPUBatchedLabeledDataMapperInternals&) = delete;
97
98 void UpdateInstanceBuffers(vtkWebGPUConfiguration* wgpuConfiguration);
99 void UpdateUniformBuffer(vtkRenderer* renderer, vtkWebGPUConfiguration* wgpuConfiguration);
100};
101VTK_ABI_NAMESPACE_END
102
103#endif
represents an object (geometry & properties) in a rendered scene
Definition vtkActor.h:151
abstract specification for renderers
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
void SetVertexBuffers(const WGPURenderBundleEncoder &encoder) override
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
static vtkWebGPUBatchedLabeledDataMapperInternals * New()
std::vector< WGPUBindGroupEntry > GetMeshBindGroupEntries() override
Allow subclasses to customize the entries in the bind group corresponding to GROUP_MESH.
DrawCallArgs GetDrawCallArgs(GraphicsPipelineType pipelineType, vtkWebGPUCellToPrimitiveConverter::TopologySourceType topologySourceType) override
void ReplaceVertexShaderNormals(GraphicsPipelineType pipelineType, vtkWebGPURenderer *renderer, vtkWebGPUActor *actor, std::string &vss) override
void SetVertexBuffers(const WGPURenderPassEncoder &encoder) 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 ReplaceFragmentShaderNormals(GraphicsPipelineType pipelineType, vtkWebGPURenderer *renderer, vtkWebGPUActor *actor, std::string &fss) override
std::vector< WGPUBindGroupLayoutEntry > GetMeshBindGroupLayoutEntries() override
Allow subclasses to customize the entries in the bind group layout corresponding to GROUP_MESH.
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
std::vector< WGPUVertexBufferLayout > GetVertexBufferLayouts() 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 WGPURenderPipeline to render a list of primitives.
window superclass for vtkRenderWindow
Definition vtkWindow.h:62
Reference-counted ownership for WebGPU C API handles.