13 #ifndef vtkOSPRayRendererNode_h
14 #define vtkOSPRayRendererNode_h
22 #include "vtkRenderingRayTracingModule.h"
26 #ifdef VTKOSPRAY_ENABLE_DENOISER
27 #include <OpenImageDenoise/oidn.hpp>
30 VTK_ABI_NAMESPACE_BEGIN
37 class vtkOSPRayRendererNodeInternals;
51 void Build(
bool prepass)
override;
56 void Render(
bool prepass)
override;
66 virtual void WriteLayer(
unsigned char* buffer,
float* zbuffer,
int buffx,
int buffy,
int layer);
81 static void SetSamplesPerPixel(
int,
vtkRenderer* renderer);
82 static int GetSamplesPerPixel(
vtkRenderer* renderer);
96 static void SetMaxContribution(
double,
vtkRenderer* renderer);
97 static double GetMaxContribution(
vtkRenderer* renderer);
110 static void SetMaxDepth(
int,
vtkRenderer* renderer);
125 static void SetMinContribution(
double,
vtkRenderer* renderer);
126 static double GetMinContribution(
vtkRenderer* renderer);
140 static void SetRouletteDepth(
int,
vtkRenderer* renderer);
141 static int GetRouletteDepth(
vtkRenderer* renderer);
173 constexpr
double DEFAULT_VOLUME_ANISOTROPY = 0.0;
176 return DEFAULT_VOLUME_ANISOTROPY;
183 return DEFAULT_VOLUME_ANISOTROPY;
197 static void SetVarianceThreshold(
double,
vtkRenderer* renderer);
198 static double GetVarianceThreshold(
vtkRenderer* renderer);
208 static void SetMaxFrames(
int,
vtkRenderer* renderer);
232 static void SetAmbientSamples(
int,
vtkRenderer* renderer);
233 static int GetAmbientSamples(
vtkRenderer* renderer);
245 static void SetVolumeSamplingRate(
double,
vtkRenderer* renderer);
246 static double GetVolumeSamplingRate(
vtkRenderer* renderer);
258 static void SetCompositeOnGL(
int,
vtkRenderer* renderer);
259 static int GetCompositeOnGL(
vtkRenderer* renderer);
270 static void SetNorthPole(
double*,
vtkRenderer* renderer);
271 static double* GetNorthPole(
vtkRenderer* renderer);
282 static void SetEastPole(
double*,
vtkRenderer* renderer);
307 static void SetViewTime(
double,
vtkRenderer* renderer);
319 static void SetTimeCacheSize(
int,
vtkRenderer* renderer);
320 static int GetTimeCacheSize(
vtkRenderer* renderer);
332 virtual void*
GetBuffer() {
return this->Buffer.data(); }
347 void Traverse(
int operation)
override;
364 static void SetDenoiserThreshold(
int,
vtkRenderer* renderer);
365 static int GetDenoiserThreshold(
vtkRenderer* renderer);
376 static void SetEnableDenoiser(
int,
vtkRenderer* renderer);
377 static int GetEnableDenoiser(
vtkRenderer* renderer);
398 static void SetBackgroundMode(BackgroundMode,
vtkRenderer* renderer);
399 static BackgroundMode GetBackgroundMode(
vtkRenderer* renderer);
432 bool UseBackplate{
true };
441 #ifdef VTKOSPRAY_ENABLE_DENOISER
442 oidn::DeviceRef DenoiserDevice;
443 oidn::FilterRef DenoiserFilter;
445 bool DenoiserDirty{
true };
459 VTK_ABI_NAMESPACE_END
std::vector< osp::vec4f > DenoisedBuffer
represent and manipulate 4x4 transformation matrices
virtual int GetColorBufferTextureGL()
std::vector< osp::vec3f > NormalBuffer
std::set< OSPWorld > CacheContents
virtual int GetDepthBufferTextureGL()
vtkTypeUInt32 vtkMTimeType
vtkOSPRayRendererNodeInternals * Internal
vtkOSPRayCache< vtkOSPRayCacheItemObject > * Cache
virtual void * GetBuffer()
Get the last rendered ColorBuffer.
#define VTK_DEPRECATED_IN_9_2_0(reason)
abstract specification for renderers
vtkMatrix4x4 * AccumulateMatrix
virtual float * GetZBuffer()
Get the last rendered ZBuffer.
a collection of materials for vtk apps to draw from
void AddLight(OSPLight light)
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
a simple class to control print indentation
vtkMTimeType AccumulateTime
std::vector< OSPGeometricModel > GeometricModels
std::vector< OSPLight > Lights
std::vector< osp::vec3f > AlbedoBuffer
virtual void Render(bool)
Makes calls to make self visible.
std::vector< OSPVolumetricModel > VolumetricModels
vtkViewNode specialized for vtkRenderers
OSPRenderer GetORenderer()
Methods for other nodes to access.
virtual void Invalidate(bool)
Clear any cached data.
std::vector< float > ODepthBuffer
std::vector< OSPInstance > Instances
static vtkRendererNode * New()
virtual void Traverse(int operation)
std::vector< osp::vec4f > ColorBuffer
static vtkInformationDoubleKey * VOLUME_ANISOTROPY()
When present on renderer, affects path traced rendering phase function.
void Build(bool prepass) override
Build containers for our child nodes.
std::vector< float > Buffer
links vtkRenderers to OSPRay
a node within a VTK scene graph
std::vector< float > ZBuffer