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 
36 class vtkMatrix4x4;
37 class vtkOSPRayRendererNodeInternals;
39 class vtkRenderer;
40 
41 // ospray forward decs so that someone does not need to include ospray.h
42 namespace osp {
43 struct Model;
44 struct Renderer;
45 struct Light;
46 struct Texture2D;
47 struct FrameBuffer;
48 }
49 typedef osp::Model *OSPModel;
50 typedef osp::Renderer *OSPRenderer;
51 typedef osp::Light *OSPLight;
52 typedef osp::FrameBuffer *OSPFrameBuffer;
53 typedef osp::Texture2D* OSPTexture2D;
54 typedef osp::FrameBuffer* OSPFrameBuffer;
55 
56 class VTKRENDERINGOSPRAY_EXPORT vtkOSPRayRendererNode :
57  public vtkRendererNode
58 {
59 public:
60  static vtkOSPRayRendererNode* New();
62  void PrintSelf(ostream& os, vtkIndent indent) override;
63 
67  virtual void Build(bool prepass) override;
68 
72  virtual void Render(bool prepass) override;
73 
77  virtual void Invalidate(bool prepass) override;
78 
82  virtual void WriteLayer(unsigned char *buffer, float *zbuffer,
83  int buffx, int buffy, int layer);
84 
85  //state beyond rendering core...
86 
92  static vtkInformationIntegerKey* SAMPLES_PER_PIXEL();
93 
95 
98  static void SetSamplesPerPixel(int, vtkRenderer *renderer);
99  static int GetSamplesPerPixel(vtkRenderer *renderer);
101 
103 
108  static vtkInformationIntegerKey* MAX_FRAMES();
109  static void SetMaxFrames(int, vtkRenderer *renderer);
110  static int GetMaxFrames(vtkRenderer *renderer);
112 
114 
118  static vtkInformationStringKey* RENDERER_TYPE();
119  static void SetRendererType(std::string name, vtkRenderer *renderer);
120  static std::string GetRendererType(vtkRenderer *renderer);
122 
128  static vtkInformationIntegerKey* AMBIENT_SAMPLES();
130 
133  static void SetAmbientSamples(int, vtkRenderer *renderer);
134  static int GetAmbientSamples(vtkRenderer *renderer);
136 
141  static vtkInformationIntegerKey* COMPOSITE_ON_GL();
143 
146  static void SetCompositeOnGL(int, vtkRenderer *renderer);
147  static int GetCompositeOnGL(vtkRenderer *renderer);
149 
153  static vtkInformationDoubleVectorKey* NORTH_POLE();
155 
158  static void SetNorthPole(double *, vtkRenderer *renderer);
159  static double * GetNorthPole(vtkRenderer *renderer);
161 
165  static vtkInformationDoubleVectorKey* EAST_POLE();
167 
170  static void SetEastPole(double *, vtkRenderer *renderer);
171  static double * GetEastPole(vtkRenderer *renderer);
173 
177  static vtkInformationObjectBaseKey* MATERIAL_LIBRARY();
178 
180 
183  static void SetMaterialLibrary(vtkOSPRayMaterialLibrary *, vtkRenderer *renderer);
184  static vtkOSPRayMaterialLibrary* GetMaterialLibrary(vtkRenderer *renderer);
186 
190  OSPModel GetOModel() { return this->OModel; }
191  OSPRenderer GetORenderer() { return this->ORenderer; }
192  void AddLight(OSPLight light) {
193  this->Lights.push_back(light); }
194 
198  virtual unsigned char *GetBuffer() {
199  return this->Buffer; }
200 
204  virtual float *GetZBuffer() {
205  return this->ZBuffer; }
206 
207  // if you want to traverse your children in a specific order
208  // or way override this method
209  virtual void Traverse(int operation) override;
210 
214  vtkRenderer *GetRenderer();
215 
216 protected:
219 
220  //internal structures
221  unsigned char *Buffer;
222  float *ZBuffer;
223 
227  int ImageX, ImageY;
228  std::vector<OSPLight> Lights;
233  float* ODepthBuffer;
237  vtkOSPRayRendererNodeInternals *Internal;
238 
239 private:
241  void operator=(const vtkOSPRayRendererNode&) = delete;
242 };
243 
244 #endif
osp::Renderer * OSPRenderer
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:41
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:300
vtkOSPRayRendererNodeInternals * Internal
abstract specification for renderers
Definition: vtkRenderer.h:63
osp::Light * OSPLight
osp::FrameBuffer * OSPFrameBuffer
virtual float * GetZBuffer()
Get the last rendered ZBuffer.
Key for string values in vtkInformation.
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
Definition: vtkIndent.h:39
Key for integer values in vtkInformation.
osp::Texture2D * OSPTexture2D
Key for vtkObjectBase values.
virtual void Build(bool prepass) override
Build containers for our child nodes.
std::vector< OSPLight > Lights
osp::Model * OSPModel
virtual void Render(bool)
Makes calls to make self visible.
Definition: vtkViewNode.h:67
vtkViewNode specialized for vtkRenderers
virtual void Invalidate(bool)
Clear any cached data.
Definition: vtkViewNode.h:72
OSPModel GetOModel()
Methods for other nodes to access.
static vtkRendererNode * New()
virtual void Traverse(int operation)
links vtkRenderers to OSPRay
virtual unsigned char * GetBuffer()
Get the last rendered ColorBuffer.