VTK  9.4.2
vtkAnariRendererNode.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
17#ifndef vtkAnariRendererNode_h
18#define vtkAnariRendererNode_h
19
20#include "vtkRendererNode.h"
21#include "vtkRenderingAnariModule.h" // For export macro
22
23#include <anari/anari_cpp.hpp> // for external getter/setters
24#include <vector> // for ivars
25
26VTK_ABI_NAMESPACE_BEGIN
27
32class vtkAnariRendererNodeInternals;
33class vtkRenderer;
34
35class VTKRENDERINGANARI_EXPORT vtkAnariRendererNode : public vtkRendererNode
36{
37public:
40 void PrintSelf(ostream& os, vtkIndent indent) override;
41
45 virtual void Build(bool prepass) override;
46
50 virtual void Render(bool prepass) override;
51
55 virtual void Invalidate(bool prepass) override;
56
57 // state beyond rendering core...
58
65
69 static void SetUseDenoiser(int, vtkRenderer* renderer);
70 static int GetUseDenoiser(vtkRenderer* renderer);
72
79
82 static void SetSamplesPerPixel(int, vtkRenderer* renderer);
83 static int GetSamplesPerPixel(vtkRenderer* renderer);
85
94
98 static void SetLibraryName(const char* name, vtkRenderer* renderer);
99 static const char* GetLibraryName(vtkRenderer* renderer);
101
107
110 static void SetDeviceSubtype(const char* name, vtkRenderer* renderer);
111 static const char* GetDeviceSubtype(vtkRenderer* renderer);
113
120
124 static void SetDebugLibraryName(const char* name, vtkRenderer* renderer);
125 static const char* GetDebugLibraryName(vtkRenderer* renderer);
127
133
137 static void SetDebugDeviceSubtype(const char* name, vtkRenderer* renderer);
138 static const char* GetDebugDeviceSubtype(vtkRenderer* renderer);
140
146
150 static void SetDebugDeviceDirectory(const char* name, vtkRenderer* renderer);
151 static const char* GetDebugDeviceDirectory(vtkRenderer* renderer);
153
159
163 static void SetDebugDeviceTraceMode(const char* name, vtkRenderer* renderer);
164 static const char* GetDebugDeviceTraceMode(vtkRenderer* renderer);
166
173
177 static void SetUseDebugDevice(int, vtkRenderer* renderer);
178 static int GetUseDebugDevice(vtkRenderer* renderer);
180
186
189 static void SetRendererSubtype(const char* name, vtkRenderer* renderer);
190 static const char* GetRendererSubtype(vtkRenderer* renderer);
192
199
202 static void SetAccumulationCount(int, vtkRenderer* renderer);
203 static int GetAccumulationCount(vtkRenderer* renderer);
205
213
216 static void SetAmbientSamples(int, vtkRenderer* renderer);
217 static int GetAmbientSamples(vtkRenderer* renderer);
219
227
230 static void SetLightFalloff(double, vtkRenderer* renderer);
231 static double GetLightFalloff(vtkRenderer* renderer);
233
241
244 static void SetAmbientColor(double*, vtkRenderer* renderer);
245 static double* GetAmbientColor(vtkRenderer* renderer);
247
255
258 static void SetAmbientIntensity(double, vtkRenderer* renderer);
259 static double GetAmbientIntensity(vtkRenderer* renderer);
261
269
272 static void SetMaxDepth(int, vtkRenderer* renderer);
273 static int GetMaxDepth(vtkRenderer* renderer);
275
283
286 static void SetROptionValue(double, vtkRenderer* renderer);
287 static double GetROptionValue(vtkRenderer* renderer);
289
295
298 static void SetDebugMethod(const char*, vtkRenderer* renderer);
299 static const char* GetDebugMethod(vtkRenderer* renderer);
301
307
310 static void SetUsdDirectory(const char*, vtkRenderer* renderer);
311 static const char* GetUsdDirectory(vtkRenderer* renderer);
313
320
323 static void SetUsdAtCommit(int, vtkRenderer* renderer);
324 static int GetUsdAtCommit(vtkRenderer* renderer);
326
333
336 static void SetUsdOutputBinary(int, vtkRenderer* renderer);
337 static int GetUsdOutputBinary(vtkRenderer* renderer);
339
346
349 static void SetUsdOutputMaterial(int, vtkRenderer* renderer);
350 static int GetUsdOutputMaterial(vtkRenderer* renderer);
352
360
363 static void SetUsdOutputPreviewSurface(int, vtkRenderer* renderer);
366
374
377 static void SetUsdOutputMDL(int, vtkRenderer* renderer);
378 static int GetUsdOutputMDL(vtkRenderer* renderer);
380
388
391 static void SetUsdOutputMDLColors(int, vtkRenderer* renderer);
392 static int GetUsdOutputMDLColors(vtkRenderer* renderer);
394
401
404 static void SetUsdOutputDisplayColors(int, vtkRenderer* renderer);
407
414
417 static void SetCompositeOnGL(int, vtkRenderer* renderer);
418 static int GetCompositeOnGL(vtkRenderer* renderer);
420
422
431 void AddLight(anari::Light);
432
439 void AddSurface(anari::Surface);
440
446 void AddVolume(anari::Volume);
447
451 void SetCamera(anari::Camera);
452
457 anari::Device GetAnariDevice();
458
462 std::string GetAnariDeviceName();
463
469 anari::Library GetAnariLibrary();
470
474 anari::Extensions GetAnariDeviceExtensions();
476
480 virtual const unsigned char* GetBuffer();
481
485 virtual const float* GetZBuffer();
486
487 // if you want to traverse your children in a specific order
488 // or way override this method
489 virtual void Traverse(int operation) override;
490
495
499 virtual void WriteLayer(unsigned char* buffer, float* zbuffer, int buffx, int buffy, int layer);
500
505
510
515
520
521protected:
524
535
536 vtkAnariRendererNodeInternals* Internal{ nullptr };
537
539 vtkMTimeType AnariSceneConstructedMTime{ 0 };
541 vtkMTimeType AnariRendererUpdatedTime{ 0 };
542
543private:
545 void operator=(const vtkAnariRendererNode&) = delete;
546};
547
548VTK_ABI_NAMESPACE_END
549#endif
links vtkRenderers to ANARI
anari::Library GetAnariLibrary()
Get the ANARI library.
static vtkInformationStringKey * DEBUG_DEVICE_DIRECTORY()
Set the debug device output directory.
static vtkInformationIntegerKey * USD_OUTPUT_DISPLAYCOLORS()
Sets the output USD display colors flag for the USD back-end.
static void SetUseDenoiser(int, vtkRenderer *renderer)
Convenience method to set/get USE_DENOISER on a vtkRenderer.
static vtkAnariRendererNode * New()
static void SetSamplesPerPixel(int, vtkRenderer *renderer)
Convenience method to set/get SAMPLES_PER_PIXEL on a vtkRenderer.
static vtkInformationIntegerKey * COMPOSITE_ON_GL()
used to make the renderer add ANARI's content onto GL rendered content on the window
void CopyAnariFrameBufferData()
static void SetLightFalloff(double, vtkRenderer *renderer)
Convenience method to set/get LIGHT_FALLOFF on a vtkRenderer.
static vtkInformationStringKey * USD_DIRECTORY()
Set the USD output directory.
static int GetSamplesPerPixel(vtkRenderer *renderer)
void AddLight(anari::Light)
Methods for other nodes to access.
static void SetDebugDeviceTraceMode(const char *name, vtkRenderer *renderer)
Convenience method to set/get DEBUG_DEVICE_TRACE_MODE on a vtkRenderer.
static const char * GetLibraryName(vtkRenderer *renderer)
static vtkInformationDoubleKey * AMBIENT_INTENSITY()
When present on renderer, controls the ambient intensity value used by the back-end renderer.
static vtkInformationIntegerKey * USD_OUTPUT_PREVIEW()
Sets the output USD preview surface prims for material objects flag for the USD back-end.
static void InvalidateRendererParameters()
Indicate that the parameters to the underlying ANARIRenderer need to be set.
static vtkInformationIntegerKey * AMBIENT_SAMPLES()
When present on renderer, controls the number of ambient occlusion samples shot per hit.
static vtkInformationIntegerKey * USD_OUTPUT_MATERIAL()
Sets the output USD material objects flag for the USD back-end.
static vtkInformationIntegerKey * USD_OUTPUT_MDLCOLORS()
Sets the output USD mdl colors for material objects flag for the USD back-end.
static int GetUsdAtCommit(vtkRenderer *renderer)
static double GetROptionValue(vtkRenderer *renderer)
static void SetROptionValue(double, vtkRenderer *renderer)
Convenience method to set/get R_VALUE on a vtkRenderer.
static const char * GetDebugDeviceSubtype(vtkRenderer *renderer)
static vtkInformationDoubleVectorKey * AMBIENT_COLOR()
When present on renderer, controls the ambient color used by the back-end renderer.
static vtkInformationStringKey * DEBUG_DEVICE_TRACE_MODE()
Set the debug device trace mode Default is "code".
virtual void Build(bool prepass) override
Builds objects for this renderer.
virtual void Render(bool prepass) override
Traverse graph in ANARI's preferred order and render.
static const char * GetDeviceSubtype(vtkRenderer *renderer)
static int GetAmbientSamples(vtkRenderer *renderer)
static vtkInformationStringKey * DEBUG_LIBRARY_NAME()
Set the debug library name.
vtkRenderer * GetRenderer()
Convenience method to get and downcast renderable.
static void SetDeviceSubtype(const char *name, vtkRenderer *renderer)
Convenience method to set/get DEVICE_SUBTYPE on a vtkRenderer.
static void SetAccumulationCount(int, vtkRenderer *renderer)
Convenience method to set/get ACCUMULATION_COUNT on a vtkRenderer.
static void SetUsdOutputBinary(int, vtkRenderer *renderer)
Convenience method to set/get USD_OUTPUT_BINARY on a vtkRenderer.
static int GetUsdOutputPreviewSurface(vtkRenderer *renderer)
static vtkInformationStringKey * LIBRARY_NAME()
Set the library name.
virtual const unsigned char * GetBuffer()
Get the last rendered ColorBuffer.
virtual int GetDepthBufferTextureGL()
Get the last renderer depth buffer as an OpenGL texture.
virtual int GetColorBufferTextureGL()
Get the last renderer color buffer as an OpenGL texture.
static void SetLibraryName(const char *name, vtkRenderer *renderer)
Convenience method to set/get LIBRARY_NAME on a vtkRenderer.
static double GetAmbientIntensity(vtkRenderer *renderer)
static void SetAmbientIntensity(double, vtkRenderer *renderer)
Convenience method to set/get AMBIENT_INTENSITY on a vtkRenderer.
static vtkInformationIntegerKey * USD_COMMIT()
Sets the output USD at anariCommit flag for the USD back-end.
static void SetAmbientSamples(int, vtkRenderer *renderer)
Convenience method to set/get AMBIENT_SAMPLES on a vtkRenderer.
static const char * GetDebugLibraryName(vtkRenderer *renderer)
static int GetMaxDepth(vtkRenderer *renderer)
void InitAnariFrame(vtkRenderer *ren)
static int GetUsdOutputMDLColors(vtkRenderer *renderer)
static int GetUseDebugDevice(vtkRenderer *renderer)
static void SetUsdDirectory(const char *, vtkRenderer *renderer)
Convenience method to set/get USD_DIRECTORY on a vtkRenderer.
static int GetUsdOutputMaterial(vtkRenderer *renderer)
static vtkInformationStringKey * DEVICE_SUBTYPE()
Set the back-end device subtype.
static vtkInformationIntegerKey * USD_OUTPUT_BINARY()
Sets the output USD in binary format flag for the USD back-end.
static const char * GetDebugDeviceTraceMode(vtkRenderer *renderer)
static void SetUsdOutputMDL(int, vtkRenderer *renderer)
Convenience method to set/get USD_OUTPUT_MDL on a vtkRenderer.
static void SetUsdOutputMaterial(int, vtkRenderer *renderer)
Convenience method to set/get USD_OUTPUT_MATERIAL on a vtkRenderer.
static int GetUsdOutputMDL(vtkRenderer *renderer)
static void SetDebugLibraryName(const char *name, vtkRenderer *renderer)
Convenience method to set/get DEBUG_LIBRARY_NAME on a vtkRenderer.
static void SetDebugDeviceSubtype(const char *name, vtkRenderer *renderer)
Convenience method to set/get DEBUG_DEVICE_SUBTYPE on a vtkRenderer.
void SetCamera(anari::Camera)
Accessed by the AnariCameraNode to set the ANARICamera on the ANARIFrame.
vtkTimeStamp AnariSceneStructureModifiedMTime
void InitAnariRenderer(vtkRenderer *ren)
virtual void Invalidate(bool prepass) override
Invalidates cached rendering data.
virtual void WriteLayer(unsigned char *buffer, float *zbuffer, int buffx, int buffy, int layer)
Put my results into the correct place in the provided pixel buffer.
virtual void Traverse(int operation) override
static vtkInformationIntegerKey * USE_DEBUG_DEVICE()
When present on renderer, controls if the rendering back-end should be wrapped in a debug device to s...
static vtkInformationIntegerKey * ACCUMULATION_COUNT()
Set the number of frames to render which are accumulated to result in a better converged image.
static int GetCompositeOnGL(vtkRenderer *renderer)
static void SetCompositeOnGL(int, vtkRenderer *renderer)
Convenience method to set/get COMPOSITE_ON_GL on a vtkRenderer.
anari::Extensions GetAnariDeviceExtensions()
Get the extensions supported by the current back-end device.
static void SetRendererSubtype(const char *name, vtkRenderer *renderer)
Convenience method to set/get RENDERER_SUBTYPE on a vtkRenderer.
void AddSurface(anari::Surface)
Accessed by the AnariPolyDataMapperNode to an ANARISurface to the world.
static vtkInformationDoubleKey * R_VALUE()
When present on renderer, controls the R value used by the back-end renderer.
static void SetUsdOutputDisplayColors(int, vtkRenderer *renderer)
Convenience method to set/get USD_OUTPUT_DISPLAYCOLORS on a vtkRenderer.
static vtkInformationIntegerKey * SAMPLES_PER_PIXEL()
When present on renderer, controls the number of primary rays shot per pixel.default is 1.
static const char * GetUsdDirectory(vtkRenderer *renderer)
static double GetLightFalloff(vtkRenderer *renderer)
static void SetUseDebugDevice(int, vtkRenderer *renderer)
Convenience method to set/get USE_DEBUG_DEVICE on a vtkRenderer.
static void SetUsdOutputPreviewSurface(int, vtkRenderer *renderer)
Convenience method to set/get USD_OUTPUT_PREVIEW on a vtkRenderer.
static void SetDebugDeviceDirectory(const char *name, vtkRenderer *renderer)
Convenience method to set/get DEBUG_DEVICE_DIRECTORY on a vtkRenderer.
static vtkInformationIntegerKey * MAX_DEPTH()
When present on renderer, controls the max depth value used by the back-end renderer.
static void SetUsdAtCommit(int, vtkRenderer *renderer)
Convenience method to set/get USD_COMMIT on a vtkRenderer.
static double * GetAmbientColor(vtkRenderer *renderer)
static vtkTimeStamp AnariRendererModifiedTime
static int GetUsdOutputBinary(vtkRenderer *renderer)
static vtkInformationDoubleKey * LIGHT_FALLOFF()
When present on renderer, controls the light falloff value used by the back-end renderer.
std::string GetAnariDeviceName()
Get the ANARI back-end device subtype name.
static vtkInformationStringKey * DEBUG_METHOD()
Set the debug method.
static const char * GetDebugMethod(vtkRenderer *renderer)
static void SetAmbientColor(double *, vtkRenderer *renderer)
Convenience method to set/get AMBIENT_COLOR on a vtkRenderer.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
static int GetUsdOutputDisplayColors(vtkRenderer *renderer)
static int GetAccumulationCount(vtkRenderer *renderer)
void SetupAnariRendererParameters(vtkRenderer *ren)
static void SetUsdOutputMDLColors(int, vtkRenderer *renderer)
Convenience method to set/get USD_OUTPUT_MDLCOLORS on a vtkRenderer.
anari::Device GetAnariDevice()
Get the ANARI back-end device.
static vtkInformationIntegerKey * USD_OUTPUT_MDL()
Sets the output USD mdl shader prims for material objects flag for the USD back-end.
virtual const float * GetZBuffer()
Get the last rendered ZBuffer.
void AddVolume(anari::Volume)
Accessed by the AnariVolumeMapperNode to add Volumes to the world.
static const char * GetRendererSubtype(vtkRenderer *renderer)
static vtkInformationIntegerKey * USE_DENOISER()
When present on renderer, controls if a denoiser is used during rendering.
void InvalidateSceneStructure()
Indicate that a new RenderTraversal of children needs to occur next frame.
static void SetMaxDepth(int, vtkRenderer *renderer)
Convenience method to set/get MAX_DEPTH on a vtkRenderer.
static vtkInformationStringKey * DEBUG_DEVICE_SUBTYPE()
Set the debug device subtype.
static vtkInformationStringKey * RENDERER_SUBTYPE()
Set the renderer subtype.
static void SetDebugMethod(const char *, vtkRenderer *renderer)
Convenience method to set/get DEBUG_METHOD on a vtkRenderer.
static const char * GetDebugDeviceDirectory(vtkRenderer *renderer)
static int GetUseDenoiser(vtkRenderer *renderer)
a simple class to control print indentation
Definition vtkIndent.h:108
Key for double values in vtkInformation.
Key for integer values in vtkInformation.
Key for string values in vtkInformation.
vtkViewNode specialized for vtkRenderers
abstract specification for renderers
record modification and/or execution time
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:270