25 #ifndef vtkOSPRayRendererNode_h
26 #define vtkOSPRayRendererNode_h
34 #include "vtkRenderingRayTracingModule.h"
38 #ifdef VTKOSPRAY_ENABLE_DENOISER
39 #include <OpenImageDenoise/oidn.hpp>
48 class vtkOSPRayRendererNodeInternals;
62 void Build(
bool prepass)
override;
67 void Render(
bool prepass)
override;
77 virtual void WriteLayer(
unsigned char* buffer,
float* zbuffer,
int buffx,
int buffy,
int layer);
92 static void SetSamplesPerPixel(
int,
vtkRenderer* renderer);
93 static int GetSamplesPerPixel(
vtkRenderer* renderer);
107 static void SetMaxContribution(
double,
vtkRenderer* renderer);
108 static double GetMaxContribution(
vtkRenderer* renderer);
121 static void SetMaxDepth(
int,
vtkRenderer* renderer);
136 static void SetMinContribution(
double,
vtkRenderer* renderer);
137 static double GetMinContribution(
vtkRenderer* renderer);
151 static void SetRouletteDepth(
int,
vtkRenderer* renderer);
152 static int GetRouletteDepth(
vtkRenderer* renderer);
184 constexpr
double DEFAULT_VOLUME_ANISOTROPY = 0.0;
187 return DEFAULT_VOLUME_ANISOTROPY;
194 return DEFAULT_VOLUME_ANISOTROPY;
208 static void SetVarianceThreshold(
double,
vtkRenderer* renderer);
209 static double GetVarianceThreshold(
vtkRenderer* renderer);
219 static void SetMaxFrames(
int,
vtkRenderer* renderer);
243 static void SetAmbientSamples(
int,
vtkRenderer* renderer);
244 static int GetAmbientSamples(
vtkRenderer* renderer);
256 static void SetCompositeOnGL(
int,
vtkRenderer* renderer);
257 static int GetCompositeOnGL(
vtkRenderer* renderer);
268 static void SetNorthPole(
double*,
vtkRenderer* renderer);
269 static double* GetNorthPole(
vtkRenderer* renderer);
280 static void SetEastPole(
double*,
vtkRenderer* renderer);
305 static void SetViewTime(
double,
vtkRenderer* renderer);
317 static void SetTimeCacheSize(
int,
vtkRenderer* renderer);
318 static int GetTimeCacheSize(
vtkRenderer* renderer);
330 virtual void*
GetBuffer() {
return this->Buffer.data(); }
345 void Traverse(
int operation)
override;
362 static void SetDenoiserThreshold(
int,
vtkRenderer* renderer);
363 static int GetDenoiserThreshold(
vtkRenderer* renderer);
374 static void SetEnableDenoiser(
int,
vtkRenderer* renderer);
375 static int GetEnableDenoiser(
vtkRenderer* renderer);
396 static void SetBackgroundMode(BackgroundMode,
vtkRenderer* renderer);
397 static BackgroundMode GetBackgroundMode(
vtkRenderer* renderer);
430 bool UseBackplate{
true };
439 #ifdef VTKOSPRAY_ENABLE_DENOISER
440 oidn::DeviceRef DenoiserDevice;
441 oidn::FilterRef DenoiserFilter;
443 bool DenoiserDirty{
true };
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