VTK
vtkOSPRayRendererNode.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkOSPRayRendererNode.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
25 #ifndef vtkOSPRayRendererNode_h
26 #define vtkOSPRayRendererNode_h
27 
28 #include "vtkRenderingOSPRayModule.h" // For export macro
29 #include "vtkRendererNode.h"
30 #include <vector> // for ivars
31 
32 #include "ospray/ospray.h" // for ospray handle types
33 
39 class vtkMatrix4x4;
40 class vtkOSPRayRendererNodeInternals;
42 class vtkRenderer;
43 
44 class VTKRENDERINGOSPRAY_EXPORT vtkOSPRayRendererNode :
45  public vtkRendererNode
46 {
47 public:
50  void PrintSelf(ostream& os, vtkIndent indent) override;
51 
55  virtual void Build(bool prepass) override;
56 
60  virtual void Render(bool prepass) override;
61 
65  virtual void Invalidate(bool prepass) override;
66 
70  virtual void WriteLayer(unsigned char *buffer, float *zbuffer,
71  int buffx, int buffy, int layer);
72 
73  //state beyond rendering core...
74 
81 
83 
86  static void SetSamplesPerPixel(int, vtkRenderer *renderer);
87  static int GetSamplesPerPixel(vtkRenderer *renderer);
89 
91 
97  static void SetMaxFrames(int, vtkRenderer *renderer);
98  static int GetMaxFrames(vtkRenderer *renderer);
100 
102 
107  static void SetRendererType(std::string name, vtkRenderer *renderer);
110 
118 
121  static void SetAmbientSamples(int, vtkRenderer *renderer);
122  static int GetAmbientSamples(vtkRenderer *renderer);
124 
131 
134  static void SetCompositeOnGL(int, vtkRenderer *renderer);
135  static int GetCompositeOnGL(vtkRenderer *renderer);
137 
143 
146  static void SetNorthPole(double *, vtkRenderer *renderer);
147  static double * GetNorthPole(vtkRenderer *renderer);
149 
155 
158  static void SetEastPole(double *, vtkRenderer *renderer);
159  static double * GetEastPole(vtkRenderer *renderer);
161 
166 
168 
174 
180 
183  static void SetViewTime(double , vtkRenderer *renderer);
184  static double GetViewTime(vtkRenderer *renderer);
186 
192 
195  static void SetTimeCacheSize(int , vtkRenderer *renderer);
196  static int GetTimeCacheSize(vtkRenderer *renderer);
198 
202  OSPModel GetOModel() { return this->OModel; }
203  OSPRenderer GetORenderer() { return this->ORenderer; }
204  void AddLight(OSPLight light) {
205  this->Lights.push_back(light); }
206 
210  virtual unsigned char *GetBuffer() {
211  return this->Buffer; }
212 
216  virtual float *GetZBuffer() {
217  return this->ZBuffer; }
218 
219  // if you want to traverse your children in a specific order
220  // or way override this method
221  virtual void Traverse(int operation) override;
222 
227 
228 protected:
231 
232  //internal structures
233  unsigned char *Buffer;
234  float *ZBuffer;
235 
236  OSPModel OModel;
237  OSPRenderer ORenderer;
238  OSPFrameBuffer OFrameBuffer;
239  int ImageX, ImageY;
240  std::vector<OSPLight> Lights;
245  float* ODepthBuffer;
249  vtkOSPRayRendererNodeInternals *Internal;
250 
251 private:
253  void operator=(const vtkOSPRayRendererNode&) = delete;
254 };
255 
256 #endif
vtkOSPRayRendererNode::ZBuffer
float * ZBuffer
Definition: vtkOSPRayRendererNode.h:234
vtkOSPRayRendererNode::Build
virtual void Build(bool prepass) override
Builds myself.
vtkOSPRayRendererNode::ImageY
int ImageY
Definition: vtkOSPRayRendererNode.h:239
vtkOSPRayRendererNode
links vtkRenderers to OSPRay
Definition: vtkOSPRayRendererNode.h:46
vtkOSPRayRendererNode::GetZBuffer
virtual float * GetZBuffer()
Get the last rendered ZBuffer.
Definition: vtkOSPRayRendererNode.h:216
vtkInformationStringKey
Key for string values in vtkInformation.
Definition: vtkInformationStringKey.h:37
vtkOSPRayRendererNode::GetOModel
OSPModel GetOModel()
Methods for other nodes to access.
Definition: vtkOSPRayRendererNode.h:202
vtkOSPRayRendererNode::GetRenderer
vtkRenderer * GetRenderer()
Convenience method to get and downcast renderable.
vtkOSPRayRendererNode::COMPOSITE_ON_GL
static vtkInformationIntegerKey * COMPOSITE_ON_GL()
used to make the renderer add ospray's content onto GL rendered content on the window
vtkOSPRayRendererNode::OModel
OSPModel OModel
Definition: vtkOSPRayRendererNode.h:236
vtkOSPRayRendererNode::~vtkOSPRayRendererNode
~vtkOSPRayRendererNode()
vtkOSPRayRendererNode::SetTimeCacheSize
static void SetTimeCacheSize(int, vtkRenderer *renderer)
Convenience method to set/get TIME_CACHE_SIZE on a vtkRenderer.
vtkOSPRayRendererNode::Render
virtual void Render(bool prepass) override
Traverse graph in ospray's preferred order and render.
vtkOSPRayRendererNode::OFrameBuffer
OSPFrameBuffer OFrameBuffer
Definition: vtkOSPRayRendererNode.h:238
vtkOSPRayRendererNode::GetEastPole
static double * GetEastPole(vtkRenderer *renderer)
vtkOSPRayRendererNode::MATERIAL_LIBRARY
static vtkInformationObjectBaseKey * MATERIAL_LIBRARY()
Material Library attached to the renderer.
vtkOSPRayRendererNode::RENDERER_TYPE
static vtkInformationStringKey * RENDERER_TYPE()
Set the OSPRay renderer type to use (e.g.
vtkOSPRayRendererNode::TIME_CACHE_SIZE
static vtkInformationIntegerKey * TIME_CACHE_SIZE()
Temporal cache size.
vtkOSPRayRendererNode::Buffer
unsigned char * Buffer
Definition: vtkOSPRayRendererNode.h:233
vtkOSPRayRendererNode::GetMaterialLibrary
static vtkOSPRayMaterialLibrary * GetMaterialLibrary(vtkRenderer *renderer)
vtkOSPRayRendererNode::GetViewTime
static double GetViewTime(vtkRenderer *renderer)
vtkInformationDoubleKey
Key for double values in vtkInformation.
Definition: vtkInformationDoubleKey.h:35
vtkOSPRayRendererNode::SetMaterialLibrary
static void SetMaterialLibrary(vtkOSPRayMaterialLibrary *, vtkRenderer *renderer)
Convenience method to set/get Material library on a renderer.
vtkOSPRayRendererNode::SetMaxFrames
static void SetMaxFrames(int, vtkRenderer *renderer)
vtkOSPRayRendererNode::WriteLayer
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.
vtkOSPRayRendererNode::GetBuffer
virtual unsigned char * GetBuffer()
Get the last rendered ColorBuffer.
Definition: vtkOSPRayRendererNode.h:210
vtkOSPRayRendererNode::SetAmbientSamples
static void SetAmbientSamples(int, vtkRenderer *renderer)
Convenience method to set/get AMBIENT_SAMPLES on a vtkRenderer.
vtkOSPRayRendererNode::Internal
vtkOSPRayRendererNodeInternals * Internal
Definition: vtkOSPRayRendererNode.h:249
vtkOSPRayRendererNode::SAMPLES_PER_PIXEL
static vtkInformationIntegerKey * SAMPLES_PER_PIXEL()
When present on renderer, controls the number of primary rays shot per pixel default is 1.
vtkOSPRayRendererNode::New
static vtkOSPRayRendererNode * New()
vtkOSPRayRendererNode::Traverse
virtual void Traverse(int operation) override
vtkOSPRayRendererNode::SetNorthPole
static void SetNorthPole(double *, vtkRenderer *renderer)
Convenience method to set/get NORTH_POLE on a vtkRenderer.
vtkOSPRayRendererNode::EAST_POLE
static vtkInformationDoubleVectorKey * EAST_POLE()
World space direction of east pole for texture background.
vtkInformationObjectBaseKey
Key for vtkObjectBase values.
Definition: vtkInformationObjectBaseKey.h:37
vtkInformationIntegerKey
Key for integer values in vtkInformation.
Definition: vtkInformationIntegerKey.h:35
vtkOSPRayRendererNode::GetTimeCacheSize
static int GetTimeCacheSize(vtkRenderer *renderer)
vtkOSPRayRendererNode::Lights
std::vector< OSPLight > Lights
Definition: vtkOSPRayRendererNode.h:240
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:40
vtkMatrix4x4
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:42
vtkOSPRayMaterialLibrary
a collection of materials for vtk apps to draw from
Definition: vtkOSPRayMaterialLibrary.h:42
vtkOSPRayRendererNode::GetCompositeOnGL
static int GetCompositeOnGL(vtkRenderer *renderer)
vtkOSPRayRendererNode::CompositeOnGL
bool CompositeOnGL
Definition: vtkOSPRayRendererNode.h:244
vtkOSPRayRendererNode::GetMaxFrames
static int GetMaxFrames(vtkRenderer *renderer)
vtkOSPRayRendererNode::SetViewTime
static void SetViewTime(double, vtkRenderer *renderer)
Convenience method to set/get VIEW_TIME on a vtkRenderer.
vtkOSPRayRendererNode::AccumulateTime
vtkMTimeType AccumulateTime
Definition: vtkOSPRayRendererNode.h:247
vtkX3D::name
@ name
Definition: vtkX3D.h:219
vtkOSPRayRendererNode::AMBIENT_SAMPLES
static vtkInformationIntegerKey * AMBIENT_SAMPLES()
When present on renderer, controls the number of ambient occlusion samples shot per hit.
vtkRendererNode.h
vtkOSPRayRendererNode::AccumulateCount
int AccumulateCount
Definition: vtkOSPRayRendererNode.h:246
vtkOSPRayRendererNode::AddLight
void AddLight(OSPLight light)
Definition: vtkOSPRayRendererNode.h:204
vtkX3D::string
@ string
Definition: vtkX3D.h:490
vtkOSPRayRendererNode::SetRendererType
static void SetRendererType(std::string name, vtkRenderer *renderer)
vtkOSPRayRendererNode::NORTH_POLE
static vtkInformationDoubleVectorKey * NORTH_POLE()
World space direction of north pole for gradient and texture background.
vtkOSPRayRendererNode::Invalidate
virtual void Invalidate(bool prepass) override
Invalidates cached rendering data.
vtkInformationDoubleVectorKey
Key for double vector values.
Definition: vtkInformationDoubleVectorKey.h:35
vtkOSPRayRendererNode::GetNorthPole
static double * GetNorthPole(vtkRenderer *renderer)
vtkOSPRayRendererNode::ORenderer
OSPRenderer ORenderer
Definition: vtkOSPRayRendererNode.h:237
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:64
vtkOSPRayRendererNode::GetRendererType
static std::string GetRendererType(vtkRenderer *renderer)
vtkOSPRayRendererNode::AccumulateMatrix
vtkMatrix4x4 * AccumulateMatrix
Definition: vtkOSPRayRendererNode.h:248
vtkOSPRayRendererNode::GetORenderer
OSPRenderer GetORenderer()
Definition: vtkOSPRayRendererNode.h:203
vtkOSPRayRendererNode::VIEW_TIME
static vtkInformationDoubleKey * VIEW_TIME()
Requested time to show in a renderer and to lookup in a temporal cache.
vtkOSPRayRendererNode::SetCompositeOnGL
static void SetCompositeOnGL(int, vtkRenderer *renderer)
Convenience method to set/get COMPOSITE_ON_GL on a vtkRenderer.
vtkOSPRayRendererNode::vtkOSPRayRendererNode
vtkOSPRayRendererNode()
vtkOSPRayRendererNode::SetEastPole
static void SetEastPole(double *, vtkRenderer *renderer)
Convenience method to set/get EAST_POLE on a vtkRenderer.
vtkOSPRayRendererNode::ComputeDepth
bool ComputeDepth
Definition: vtkOSPRayRendererNode.h:242
vtkRendererNode
vtkViewNode specialized for vtkRenderers
Definition: vtkRendererNode.h:35
vtkOSPRayRendererNode::GetAmbientSamples
static int GetAmbientSamples(vtkRenderer *renderer)
vtkOSPRayRendererNode::MAX_FRAMES
static vtkInformationIntegerKey * MAX_FRAMES()
When present on renderer, controls the number of ospray render calls for each refresh.
vtkOSPRayRendererNode::NumActors
int NumActors
Definition: vtkOSPRayRendererNode.h:241
vtkOSPRayRendererNode::ODepthBuffer
float * ODepthBuffer
Definition: vtkOSPRayRendererNode.h:245
vtkOSPRayRendererNode::Accumulate
bool Accumulate
Definition: vtkOSPRayRendererNode.h:243
vtkOSPRayRendererNode::GetSamplesPerPixel
static int GetSamplesPerPixel(vtkRenderer *renderer)
vtkOSPRayRendererNode::SetSamplesPerPixel
static void SetSamplesPerPixel(int, vtkRenderer *renderer)
Convenience method to set/get SAMPLES_PER_PIXEL on a vtkRenderer.
vtkOSPRayRendererNode::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkMTimeType
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:302