16#ifndef vtkWebGPURenderWindow_h
17#define vtkWebGPURenderWindow_h
21#include "vtkRenderingWebGPUModule.h"
30VTK_ABI_NAMESPACE_BEGIN
34class vtkWebGPUTextureCache;
36class vtkTypeUInt32Array;
105 unsigned char*
GetPixelData(
int x,
int y,
int x2,
int y2,
int front,
int right)
override;
109 int x,
int y,
int x2,
int y2,
unsigned char* data,
int front,
int right)
override;
120 int x,
int y,
int x2,
int y2,
int front,
vtkFloatArray* data,
int right = 0)
override;
122 int x,
int y,
int x2,
int y2,
float* data,
int front,
int blend = 0,
int right = 0)
override;
124 int right = 0)
override;
127 int x,
int y,
int x2,
int y2,
int front,
int right = 0)
override;
131 int blend = 0,
int right = 0)
override;
133 int blend = 0,
int right = 0)
override;
210 wgpu::RenderPassEncoder
NewRenderPass(wgpu::RenderPassDescriptor& descriptor);
291 std::function<void(
const void* mappedData,
int bytesPerRow,
void* userdata)>;
404 void InitializeRendererComputePipelines();
410 void SubmitCommandBuffer(
int count, wgpu::CommandBuffer* commandBuffer);
415 void PostRenderComputePipelines();
421 void PostRasterizationRender();
423 void ReadTextureFromGPU(wgpu::Texture& wgpuTexture, wgpu::TextureFormat format,
424 std::size_t mipLevel, wgpu::TextureAspect aspect, wgpu::Origin3D offsets,
427 void ReadTextureFromGPU(wgpu::Texture& wgpuTexture, wgpu::TextureFormat format,
428 std::size_t mipLevel, wgpu::TextureAspect aspect,
TextureMapCallback callback,
void* userData);
430 void GetIdsData(
int x1,
int y1,
int x2,
int y2, vtkTypeUInt32* values);
431 void GetIdsData(
int x1,
int y1,
int x2,
int y2, vtkTypeUInt32Array* data);
436 std::vector<vtkSmartPointer<vtkWebGPUComputeRenderTexture>> ComputeRenderTextures;
dynamic, self-adjusting array of float
topologically and geometrically regular array of data
a simple class to control print indentation
Allocate and hold a VTK object.
Hold a reference to a vtkObjectBase instance.
dynamic, self-adjusting array of unsigned char
This culler does both frustum culling and occlusion culling.
Create a webgpu device for use in rendering and compute pipelines.
Class to create and retrieve render pipelines based on a given key.
Class to create and retrieve render Textures based on a given key.
vtkWGPUAttachment IdsAttachment
vtkGetNewMacro(WGPUPipelineCache, vtkWebGPURenderPipelineCache)
Get the pipeline cache for this renderer.
vtkWGPUDepthStencil DepthStencilAttachment
int SurfaceConfiguredSize[2]
void Frame() override
A termination method performed at the end of the rendering process to do things like swapping buffers...
void DestroyIdsAttachment()
void CreateCommandEncoder()
Initializes a new command encoder.
wgpu::TextureFormat GetPreferredSurfaceTextureFormat()
Get the texture format preferred for the surface.
wgpu::TextureFormat GetPreferredSelectorIdsTextureFormat()
Get the texture format preferred for selector IDs.
void RecreateComputeRenderTextures()
wgpu::TextureFormat GetDepthStencilFormat()
Get the texture format of the depth-stencil attachment.
void UnconfigureSurface()
vtkGetNewMacro(WGPUTextureCache, vtkWebGPURenderTextureCache)
Get the texture cache for this renderer.
std::string PreprocessShaderSource(const std::string &source) const
Replaces all include statements in the given source code with source code corresponding to the includ...
void End() override
Update the system, if needed, at end of render process.
vtkSmartPointer< vtkImageData > SaveAttachmentToVTI(AttachmentTypeForVTISnapshot type)
int SupportsOpenGL() override
Does this render window support OpenGL?
int SetZbufferData(int x1, int y1, int x2, int y2, float *buffer) override
Set/Get the zbuffer data from an image.
float * GetRGBAPixelData(int x, int y, int x2, int y2, int front, int right=0) override
Set/Get the pixel data of an image, transmitted as RGBARGBA...
wgpu::CommandEncoder GetCommandEncoder()
Get the currently used command encoder.
vtkNew< vtkWebGPURenderTextureCache > WGPUTextureCache
void SetWGPUConfiguration(vtkWebGPUConfiguration *config)
const char * ReportCapabilities() override
Get report of capabilities for the render window.
wgpu::Adapter GetAdapter()
Get the webgpu adapter.
std::function< void(const void *mappedData, int bytesPerRow, void *userdata)> TextureMapCallback
bool HasStencil()
Whether the offscreen render target has stencil capabilities.
int GetPixelData(int x, int y, int x2, int y2, int front, vtkUnsignedCharArray *data, int right) override
Set/Get the pixel data of an image, transmitted as RGBRGB... front in this context indicates that the...
virtual void CreateAWindow()=0
Create a not-off-screen window.
vtkWGPUAttachment ColorAttachment
friend class vtkWebGPUComputeOcclusionCuller
void CreateColorCopyPipeline()
vtkSmartPointer< vtkWebGPUConfiguration > WGPUConfiguration
wgpu::TextureView GetHardwareSelectorAttachmentView()
int GetRGBAPixelData(int x, int y, int x2, int y2, int front, vtkFloatArray *data, int right=0) override
Set/Get the pixel data of an image, transmitted as RGBARGBA...
void ReleaseRGBAPixelData(float *data) override
Set/Get the pixel data of an image, transmitted as RGBARGBA...
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int GetRGBACharPixelData(int x, int y, int x2, int y2, int front, vtkUnsignedCharArray *data, int right=0) override
Set/Get the pixel data of an image, transmitted as RGBARGBA...
int DepthCopyTextureIndex
int SetPixelData(int x, int y, int x2, int y2, unsigned char *data, int front, int right) override
Set/Get the pixel data of an image, transmitted as RGBRGB... front in this context indicates that the...
unsigned char * GetRGBACharPixelData(int x, int y, int x2, int y2, int front, int right=0) override
Set/Get the pixel data of an image, transmitted as RGBARGBA...
wgpu::TextureFormat PreferredSurfaceTextureFormat
vtkWGPUFullScreenQuad ColorCopyRenderPipeline
float * GetZbufferData(int x1, int y1, int x2, int y2) override
Set/Get the zbuffer data from an image.
void WaitForCompletion() override
Block the thread until work queue completes all submitted work.
int SetPixelData(int x, int y, int x2, int y2, vtkUnsignedCharArray *data, int front, int right) override
Set/Get the pixel data of an image, transmitted as RGBRGB... front in this context indicates that the...
wgpu::CommandEncoder CommandEncoder
void CreateDepthStencilAttachment()
void DestroyDepthStencilAttachment()
void ReleaseGraphicsResources(vtkWindow *) override
Free up any graphics resources associated with this window a value of NULL means the context may alre...
bool InitializeFromCurrentContext() override
Initialize the render window from the information associated with the currently activated OpenGL cont...
void CreateIdsAttachment()
vtkSmartPointer< vtkWebGPUComputePipeline > DepthCopyPipeline
vtkGetNewMacro(WGPUShaderDatabase, vtkWebGPUShaderDatabase)
Get a database of all WebGPU shader source codes in VTK.
void Initialize() override
Creates the WebGPU context, swapchain, depth buffer, color attachment, ...
void CreateOffscreenColorAttachment()
void DestroyOffscreenColorAttachment()
wgpu::TextureView GetDepthStencilView()
Get a view of the depth-stencil attachment used in the offscreen render target.
int SetZbufferData(int x1, int y1, int x2, int y2, vtkFloatArray *buffer) override
Set/Get the zbuffer data from an image.
int GetZbufferData(int x1, int y1, int x2, int y2, vtkFloatArray *buffer) override
Set/Get the zbuffer data from an image.
void Render() override
Handle opengl specific code and calls superclass.
int SetRGBAPixelData(int x, int y, int x2, int y2, float *data, int front, int blend=0, int right=0) override
Set/Get the pixel data of an image, transmitted as RGBARGBA...
virtual std::string MakeDefaultWindowNameWithBackend()=0
Construct the window title as "Visualization Toolkit - <WindowSystem> <GraphicsBackend>" Ex: "Visuali...
wgpu::RenderBundleEncoder NewRenderBundleEncoder(wgpu::RenderBundleEncoderDescriptor &descriptor)
Create a new render bundle encoder on the webgpu device.
vtkSmartPointer< vtkWebGPUComputeRenderTexture > AcquireDepthBufferRenderTexture()
Returns a vtkWebGPUComputeRenderTexture ready to be added to a compute pipeline using vtkWebGPUComput...
void RenderOffscreenTexture()
vtkSmartPointer< vtkWebGPUComputePass > DepthCopyPass
friend class vtkWebGPUHardwareSelector
void FlushCommandBuffers(vtkTypeUInt32 count, wgpu::CommandBuffer *buffers)
Sends a given command buffer to the device queue.
void Start() override
Start the rendering process for a frame.
const char * GetRenderingBackend() override
What rendering backend has the user requested.
vtkSmartPointer< vtkWebGPUComputeRenderTexture > AcquireFramebufferRenderTexture()
Returns a vtkWebGPUComputeRenderTexture ready to be added to a compute pipeline using vtkWebGPUComput...
vtkNew< vtkWebGPURenderPipelineCache > WGPUPipelineCache
virtual void DestroyWindow()=0
Destroy a not-off-screen window.
wgpu::RenderPassEncoder NewRenderPass(wgpu::RenderPassDescriptor &descriptor)
Create a new render pass encoder on the webgpu device.
int SetRGBACharPixelData(int x, int y, int x2, int y2, vtkUnsignedCharArray *data, int front, int blend=0, int right=0) override
Set/Get the pixel data of an image, transmitted as RGBARGBA...
vtkNew< vtkWebGPUShaderDatabase > WGPUShaderDatabase
~vtkWebGPURenderWindow() override
AttachmentTypeForVTISnapshot
virtual bool WindowSetup()=0
Concrete render windows must create a platform window and initialize this->WindowId.
void * GetGenericContext() override
Get the generic context pointer.
int GetZbufferData(int x1, int y1, int x2, int y2, float *z) override
Set/Get the zbuffer data from an image.
wgpu::TextureView GetOffscreenColorAttachmentView()
Get a view of the color attachment used in the offscreen render target.
vtkWGPUUserStagingPixelData StagingPixelData
int SetRGBAPixelData(int x, int y, int x2, int y2, vtkFloatArray *data, int front, int blend=0, int right=0) override
Set/Get the pixel data of an image, transmitted as RGBARGBA...
void StereoMidpoint() override
Intermediate method performs operations required between the rendering of the left and right eye.
int GetColorBufferSizes(int *rgba) override
Get the size of the color buffer.
wgpu::Device GetDevice()
Get the webgpu device.
void DestroyColorCopyPipeline()
int SetRGBACharPixelData(int x, int y, int x2, int y2, unsigned char *data, int front, int blend=0, int right=0) override
Set/Get the pixel data of an image, transmitted as RGBARGBA...
wgpu::TextureFormat PreferredSelectorIdsTextureFormat
unsigned char * GetPixelData(int x, int y, int x2, int y2, int front, int right) override
Set/Get the pixel data of an image, transmitted as RGBRGB... front in this context indicates that the...
Class to add and retrieve source code for shader files for a specified key.
wgpu::TextureFormat Format
wgpu::TextureFormat Format
wgpu::BindGroup BindGroup
wgpu::TexelCopyBufferLayout Layout
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)