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 =========================================================================*/
22 #ifndef vtkOSPRayRendererNode_h
23 #define vtkOSPRayRendererNode_h
24 
25 #include "vtkRenderingOSPRayModule.h" // For export macro
26 #include "vtkRendererNode.h"
27 #include <vector> // for ivars
28 
34 class vtkMatrix4x4;
35 class vtkOSPRayRendererNodeInternals;
37 class vtkRenderer;
38 
39 // ospray forward decs so that someone does not need to include ospray.h
40 namespace osp {
41 struct Model;
42 struct Renderer;
43 struct Light;
44 struct Texture2D;
45 struct FrameBuffer;
46 }
47 typedef osp::Model *OSPModel;
48 typedef osp::Renderer *OSPRenderer;
49 typedef osp::Light *OSPLight;
50 typedef osp::FrameBuffer *OSPFrameBuffer;
51 typedef osp::Texture2D* OSPTexture2D;
52 typedef osp::FrameBuffer* OSPFrameBuffer;
53 
54 class VTKRENDERINGOSPRAY_EXPORT vtkOSPRayRendererNode :
55  public vtkRendererNode
56 {
57 public:
58  static vtkOSPRayRendererNode* New();
60  void PrintSelf(ostream& os, vtkIndent indent) override;
61 
65  virtual void Build(bool prepass) override;
66 
70  virtual void Render(bool prepass) override;
71 
75  virtual void Invalidate(bool prepass) override;
76 
80  virtual void WriteLayer(unsigned char *buffer, float *zbuffer,
81  int buffx, int buffy, int layer);
82 
83  //state beyond rendering core...
84 
90  static vtkInformationIntegerKey* SAMPLES_PER_PIXEL();
91 
93 
96  static void SetSamplesPerPixel(int, vtkRenderer *renderer);
97  static int GetSamplesPerPixel(vtkRenderer *renderer);
99 
101 
106  static vtkInformationIntegerKey* MAX_FRAMES();
107  static void SetMaxFrames(int, vtkRenderer *renderer);
108  static int GetMaxFrames(vtkRenderer *renderer);
110 
112 
116  static vtkInformationStringKey* RENDERER_TYPE();
117  static void SetRendererType(std::string name, vtkRenderer *renderer);
118  static std::string GetRendererType(vtkRenderer *renderer);
120 
126  static vtkInformationIntegerKey* AMBIENT_SAMPLES();
128 
131  static void SetAmbientSamples(int, vtkRenderer *renderer);
132  static int GetAmbientSamples(vtkRenderer *renderer);
134 
139  static vtkInformationIntegerKey* COMPOSITE_ON_GL();
141 
144  static void SetCompositeOnGL(int, vtkRenderer *renderer);
145  static int GetCompositeOnGL(vtkRenderer *renderer);
147 
151  static vtkInformationDoubleVectorKey* NORTH_POLE();
153 
156  static void SetNorthPole(double *, vtkRenderer *renderer);
157  static double * GetNorthPole(vtkRenderer *renderer);
159 
163  static vtkInformationDoubleVectorKey* EAST_POLE();
165 
168  static void SetEastPole(double *, vtkRenderer *renderer);
169  static double * GetEastPole(vtkRenderer *renderer);
171 
175  static vtkInformationObjectBaseKey* MATERIAL_LIBRARY();
176 
178 
181  static void SetMaterialLibrary(vtkOSPRayMaterialLibrary *, vtkRenderer *renderer);
182  static vtkOSPRayMaterialLibrary* GetMaterialLibrary(vtkRenderer *renderer);
184 
188  static vtkInformationDoubleKey* VIEW_TIME();
190 
193  static void SetViewTime(double , vtkRenderer *renderer);
194  static double GetViewTime(vtkRenderer *renderer);
196 
200  static vtkInformationIntegerKey* TIME_CACHE_SIZE();
202 
205  static void SetTimeCacheSize(int , vtkRenderer *renderer);
206  static int GetTimeCacheSize(vtkRenderer *renderer);
208 
212  OSPModel GetOModel() { return this->OModel; }
213  OSPRenderer GetORenderer() { return this->ORenderer; }
214  void AddLight(OSPLight light) {
215  this->Lights.push_back(light); }
216 
220  virtual unsigned char *GetBuffer() {
221  return this->Buffer; }
222 
226  virtual float *GetZBuffer() {
227  return this->ZBuffer; }
228 
229  // if you want to traverse your children in a specific order
230  // or way override this method
231  virtual void Traverse(int operation) override;
232 
236  vtkRenderer *GetRenderer();
237 
238 protected:
241 
242  //internal structures
243  unsigned char *Buffer;
244  float *ZBuffer;
245 
249  int ImageX, ImageY;
250  std::vector<OSPLight> Lights;
255  float* ODepthBuffer;
259  vtkOSPRayRendererNodeInternals *Internal;
260 
261 private:
263  void operator=(const vtkOSPRayRendererNode&) = delete;
264 };
265 
266 #endif
osp::Renderer * OSPRenderer
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:35
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:300
vtkOSPRayRendererNodeInternals * Internal
abstract specification for renderers
Definition: vtkRenderer.h:57
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:33
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:64
vtkViewNode specialized for vtkRenderers
virtual void Invalidate(bool)
Clear any cached data.
Definition: vtkViewNode.h:69
OSPModel GetOModel()
Methods for other nodes to access.
static vtkRendererNode * New()
Key for double values in vtkInformation.
virtual void Traverse(int operation)
links vtkRenderers to OSPRay
virtual unsigned char * GetBuffer()
Get the last rendered ColorBuffer.