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 class vtkRenderer;
35 // ospray forward decs so that someone does not need to include ospray.h
36 namespace osp {
37 struct Model;
38 struct Renderer;
39 struct Light;
40 struct Texture2D;
41 struct FrameBuffer;
42 }
43 typedef osp::Model *OSPModel;
44 typedef osp::Renderer *OSPRenderer;
45 typedef osp::Light *OSPLight;
46 typedef osp::FrameBuffer *OSPFrameBuffer;
47 typedef osp::Texture2D* OSPTexture2D;
48 typedef osp::FrameBuffer* OSPFrameBuffer;
49 
50 class VTKRENDERINGOSPRAY_EXPORT vtkOSPRayRendererNode :
51  public vtkRendererNode
52 {
53 public:
56  void PrintSelf(ostream& os, vtkIndent indent);
57 
61  virtual void Build(bool prepass);
62 
66  virtual void Render(bool prepass);
67 
71  virtual void Invalidate(bool prepass);
72 
76  virtual void WriteLayer(unsigned char *buffer, float *zbuffer,
77  int buffx, int buffy, int layer);
78 
79  //state beyond rendering core...
80 
87 
89 
92  static void SetSamplesPerPixel(int, vtkRenderer *renderer);
93  static int GetSamplesPerPixel(vtkRenderer *renderer);
95 
97 
104  static void SetMaxFrames(int, vtkRenderer *renderer);
105  static int GetMaxFrames(vtkRenderer *renderer);
107 
109 
114  static void SetRendererType(std::string name, vtkRenderer *renderer);
117 
125 
128  static void SetAmbientSamples(int, vtkRenderer *renderer);
129  static int GetAmbientSamples(vtkRenderer *renderer);
131 
138 
141  static void SetCompositeOnGL(int, vtkRenderer *renderer);
142  static int GetCompositeOnGL(vtkRenderer *renderer);
144 
148  OSPModel GetOModel() { return this->OModel; }
149  OSPRenderer GetORenderer() { return this->ORenderer; }
150  void AddLight(OSPLight light) {
151  this->Lights.push_back(light); }
152 
156  virtual unsigned char *GetBuffer() {
157  return this->Buffer; }
158 
162  virtual float *GetZBuffer() {
163  return this->ZBuffer; }
164 
165  // if you want to traverse your children in a specific order
166  // or way override this method
167  virtual void Traverse(int operation);
168 
169 protected:
172 
173  //internal structures
174  unsigned char *Buffer;
175  float *ZBuffer;
176 
180  int ImageX, ImageY;
181  std::vector<OSPLight> Lights;
186  float* ODepthBuffer;
187 
188 private:
189  vtkOSPRayRendererNode(const vtkOSPRayRendererNode&) VTK_DELETE_FUNCTION;
190  void operator=(const vtkOSPRayRendererNode&) VTK_DELETE_FUNCTION;
191 };
192 
193 #endif
vtkOSPRayRendererNode::ZBuffer
float * ZBuffer
Definition: vtkOSPRayRendererNode.h:175
vtkOSPRayRendererNode::ImageY
int ImageY
Definition: vtkOSPRayRendererNode.h:180
vtkOSPRayRendererNode
links vtkRenderers to OSPRay
Definition: vtkOSPRayRendererNode.h:52
vtkOSPRayRendererNode::GetZBuffer
virtual float * GetZBuffer()
Get the last rendered ZBuffer.
Definition: vtkOSPRayRendererNode.h:162
vtkInformationStringKey
Key for string values in vtkInformation.
Definition: vtkInformationStringKey.h:37
vtkOSPRayRendererNode::GetOModel
OSPModel GetOModel()
Methods for other nodes to access.
Definition: vtkOSPRayRendererNode.h:148
vtkOSPRayRendererNode::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
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:177
vtkOSPRayRendererNode::~vtkOSPRayRendererNode
~vtkOSPRayRendererNode()
OSPFrameBuffer
osp::FrameBuffer * OSPFrameBuffer
Definition: vtkOSPRayRendererNode.h:46
vtkOSPRayRendererNode::OFrameBuffer
OSPFrameBuffer OFrameBuffer
Definition: vtkOSPRayRendererNode.h:179
vtkOSPRayRendererNode::RENDERER_TYPE
static vtkInformationStringKey * RENDERER_TYPE()
Set the OSPRay renderer type to use (e.g.
vtkOSPRayRendererNode::Buffer
unsigned char * Buffer
Definition: vtkOSPRayRendererNode.h:174
vtkOSPRayRendererNode::Render
virtual void Render(bool prepass)
Traverse graph in ospray's prefered order and render.
vtkOSPRayRendererNode::SetMaxFrames
static void SetMaxFrames(int, vtkRenderer *renderer)
OSPLight
osp::Light * OSPLight
Definition: vtkOSPRayRendererNode.h:45
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:156
vtkOSPRayRendererNode::SetAmbientSamples
static void SetAmbientSamples(int, vtkRenderer *renderer)
Convenience method to set/get AMBIENT_SAMPLES on a vtkRenderer.
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::Traverse
virtual void Traverse(int operation)
vtkOSPRayRendererNode::New
static vtkOSPRayRendererNode * New()
OSPRenderer
osp::Renderer * OSPRenderer
Definition: vtkOSPRayRendererNode.h:44
vtkInformationIntegerKey
Key for integer values in vtkInformation.
Definition: vtkInformationIntegerKey.h:35
vtkOSPRayRendererNode::Lights
std::vector< OSPLight > Lights
Definition: vtkOSPRayRendererNode.h:181
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:40
vtkOSPRayRendererNode::GetCompositeOnGL
static int GetCompositeOnGL(vtkRenderer *renderer)
OSPTexture2D
osp::Texture2D * OSPTexture2D
Definition: vtkOSPRayRendererNode.h:47
vtkOSPRayRendererNode::CompositeOnGL
bool CompositeOnGL
Definition: vtkOSPRayRendererNode.h:185
vtkOSPRayRendererNode::GetMaxFrames
static int GetMaxFrames(vtkRenderer *renderer)
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::AddLight
void AddLight(OSPLight light)
Definition: vtkOSPRayRendererNode.h:150
vtkX3D::string
@ string
Definition: vtkX3D.h:490
vtkOSPRayRendererNode::SetRendererType
static void SetRendererType(std::string name, vtkRenderer *renderer)
vtkOSPRayRendererNode::Invalidate
virtual void Invalidate(bool prepass)
Invalidates cached rendering data.
vtkOSPRayRendererNode::ORenderer
OSPRenderer ORenderer
Definition: vtkOSPRayRendererNode.h:178
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:64
vtkOSPRayRendererNode::Build
virtual void Build(bool prepass)
Builds myself.
vtkOSPRayRendererNode::GetRendererType
static std::string GetRendererType(vtkRenderer *renderer)
vtkOSPRayRendererNode::GetORenderer
OSPRenderer GetORenderer()
Definition: vtkOSPRayRendererNode.h:149
OSPModel
osp::Model * OSPModel
Definition: vtkOSPRayRendererNode.h:43
vtkOSPRayRendererNode::SetCompositeOnGL
static void SetCompositeOnGL(int, vtkRenderer *renderer)
Convenience method to set/get COMPOSITE_ON_GL on a vtkRenderer.
osp
Definition: vtkOSPRayRendererNode.h:36
vtkOSPRayRendererNode::vtkOSPRayRendererNode
vtkOSPRayRendererNode()
vtkOSPRayRendererNode::ComputeDepth
bool ComputeDepth
Definition: vtkOSPRayRendererNode.h:183
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:182
vtkOSPRayRendererNode::ODepthBuffer
float * ODepthBuffer
Definition: vtkOSPRayRendererNode.h:186
vtkOSPRayRendererNode::Accumulate
bool Accumulate
Definition: vtkOSPRayRendererNode.h:184
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.