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
32class vtkRenderer;
35// ospray forward decs so that someone does not need to include ospray.h
36namespace osp {
37struct Model;
38struct Renderer;
39struct Light;
40struct Texture2D;
41struct FrameBuffer;
42}
43typedef osp::Model *OSPModel;
44typedef osp::Renderer *OSPRenderer;
45typedef osp::Light *OSPLight;
46typedef osp::FrameBuffer *OSPFrameBuffer;
47typedef osp::Texture2D* OSPTexture2D;
48typedef osp::FrameBuffer* OSPFrameBuffer;
49
50class VTKRENDERINGOSPRAY_EXPORT vtkOSPRayRendererNode :
51 public vtkRendererNode
52{
53public:
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
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
169protected:
172
173 //internal structures
174 unsigned char *Buffer;
175 float *ZBuffer;
176
180 int ImageX, ImageY;
181 std::vector<OSPLight> Lights;
187
188private:
189 vtkOSPRayRendererNode(const vtkOSPRayRendererNode&) VTK_DELETE_FUNCTION;
190 void operator=(const vtkOSPRayRendererNode&) VTK_DELETE_FUNCTION;
191};
192
193#endif
a simple class to control print indentation
Definition: vtkIndent.h:40
Key for integer values in vtkInformation.
Key for string values in vtkInformation.
links vtkRenderers to OSPRay
static void SetMaxFrames(int, vtkRenderer *renderer)
static void SetRendererType(std::string name, vtkRenderer *renderer)
OSPModel GetOModel()
Methods for other nodes to access.
static void SetAmbientSamples(int, vtkRenderer *renderer)
Convenience method to set/get AMBIENT_SAMPLES on a vtkRenderer.
virtual float * GetZBuffer()
Get the last rendered ZBuffer.
static void SetCompositeOnGL(int, vtkRenderer *renderer)
Convenience method to set/get COMPOSITE_ON_GL 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 int GetAmbientSamples(vtkRenderer *renderer)
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
static int GetMaxFrames(vtkRenderer *renderer)
virtual void Render(bool prepass)
Traverse graph in ospray's prefered order and render.
virtual void Invalidate(bool prepass)
Invalidates cached rendering data.
virtual void Build(bool prepass)
Builds myself.
std::vector< OSPLight > Lights
static std::string GetRendererType(vtkRenderer *renderer)
virtual void Traverse(int operation)
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.
static vtkInformationIntegerKey * COMPOSITE_ON_GL()
used to make the renderer add ospray's content onto GL rendered content on the window
void AddLight(OSPLight light)
static int GetSamplesPerPixel(vtkRenderer *renderer)
static vtkInformationIntegerKey * AMBIENT_SAMPLES()
When present on renderer, controls the number of ambient occlusion samples shot per hit.
static int GetCompositeOnGL(vtkRenderer *renderer)
static vtkOSPRayRendererNode * New()
static void SetSamplesPerPixel(int, vtkRenderer *renderer)
Convenience method to set/get SAMPLES_PER_PIXEL on a vtkRenderer.
static vtkInformationIntegerKey * MAX_FRAMES()
When present on renderer, controls the number of ospray render calls for each refresh.
virtual unsigned char * GetBuffer()
Get the last rendered ColorBuffer.
static vtkInformationStringKey * RENDERER_TYPE()
Set the OSPRay renderer type to use (e.g.
vtkViewNode specialized for vtkRenderers
abstract specification for renderers
Definition: vtkRenderer.h:64
@ name
Definition: vtkX3D.h:219
@ string
Definition: vtkX3D.h:490
osp::Renderer * OSPRenderer
osp::FrameBuffer * OSPFrameBuffer
osp::Light * OSPLight
osp::Model * OSPModel
osp::Texture2D * OSPTexture2D