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 
37 class vtkMatrix4x4;
38 class vtkOSPRayRendererNodeInternals;
40 class vtkRenderer;
41 
42 // ospray forward decs so that someone does not need to include ospray.h
43 namespace osp {
44 struct Model;
45 struct Renderer;
46 struct Light;
47 struct Texture2D;
48 struct FrameBuffer;
49 }
50 typedef osp::Model *OSPModel;
51 typedef osp::Renderer *OSPRenderer;
52 typedef osp::Light *OSPLight;
53 typedef osp::FrameBuffer *OSPFrameBuffer;
54 typedef osp::Texture2D* OSPTexture2D;
55 typedef osp::FrameBuffer* OSPFrameBuffer;
56 
57 class VTKRENDERINGOSPRAY_EXPORT vtkOSPRayRendererNode :
58  public vtkRendererNode
59 {
60 public:
61  static vtkOSPRayRendererNode* New();
63  void PrintSelf(ostream& os, vtkIndent indent) override;
64 
68  virtual void Build(bool prepass) override;
69 
73  virtual void Render(bool prepass) override;
74 
78  virtual void Invalidate(bool prepass) override;
79 
83  virtual void WriteLayer(unsigned char *buffer, float *zbuffer,
84  int buffx, int buffy, int layer);
85 
86  //state beyond rendering core...
87 
93  static vtkInformationIntegerKey* SAMPLES_PER_PIXEL();
94 
96 
99  static void SetSamplesPerPixel(int, vtkRenderer *renderer);
100  static int GetSamplesPerPixel(vtkRenderer *renderer);
102 
104 
109  static vtkInformationIntegerKey* MAX_FRAMES();
110  static void SetMaxFrames(int, vtkRenderer *renderer);
111  static int GetMaxFrames(vtkRenderer *renderer);
113 
115 
119  static vtkInformationStringKey* RENDERER_TYPE();
120  static void SetRendererType(std::string name, vtkRenderer *renderer);
121  static std::string GetRendererType(vtkRenderer *renderer);
123 
129  static vtkInformationIntegerKey* AMBIENT_SAMPLES();
131 
134  static void SetAmbientSamples(int, vtkRenderer *renderer);
135  static int GetAmbientSamples(vtkRenderer *renderer);
137 
142  static vtkInformationIntegerKey* COMPOSITE_ON_GL();
144 
147  static void SetCompositeOnGL(int, vtkRenderer *renderer);
148  static int GetCompositeOnGL(vtkRenderer *renderer);
150 
154  static vtkInformationDoubleVectorKey* NORTH_POLE();
156 
159  static void SetNorthPole(double *, vtkRenderer *renderer);
160  static double * GetNorthPole(vtkRenderer *renderer);
162 
166  static vtkInformationDoubleVectorKey* EAST_POLE();
168 
171  static void SetEastPole(double *, vtkRenderer *renderer);
172  static double * GetEastPole(vtkRenderer *renderer);
174 
178  static vtkInformationObjectBaseKey* MATERIAL_LIBRARY();
179 
181 
184  static void SetMaterialLibrary(vtkOSPRayMaterialLibrary *, vtkRenderer *renderer);
185  static vtkOSPRayMaterialLibrary* GetMaterialLibrary(vtkRenderer *renderer);
187 
191  static vtkInformationDoubleKey* VIEW_TIME();
193 
196  static void SetViewTime(double , vtkRenderer *renderer);
197  static double GetViewTime(vtkRenderer *renderer);
199 
203  static vtkInformationIntegerKey* TIME_CACHE_SIZE();
205 
208  static void SetTimeCacheSize(int , vtkRenderer *renderer);
209  static int GetTimeCacheSize(vtkRenderer *renderer);
211 
215  OSPModel GetOModel() { return this->OModel; }
216  OSPRenderer GetORenderer() { return this->ORenderer; }
217  void AddLight(OSPLight light) {
218  this->Lights.push_back(light); }
219 
223  virtual unsigned char *GetBuffer() {
224  return this->Buffer; }
225 
229  virtual float *GetZBuffer() {
230  return this->ZBuffer; }
231 
232  // if you want to traverse your children in a specific order
233  // or way override this method
234  virtual void Traverse(int operation) override;
235 
239  vtkRenderer *GetRenderer();
240 
241 protected:
244 
245  //internal structures
246  unsigned char *Buffer;
247  float *ZBuffer;
248 
252  int ImageX, ImageY;
253  std::vector<OSPLight> Lights;
258  float* ODepthBuffer;
262  vtkOSPRayRendererNodeInternals *Internal;
263 
264 private:
266  void operator=(const vtkOSPRayRendererNode&) = delete;
267 };
268 
269 #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)
Key for double vector values.
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()
Key for double values in vtkInformation.
virtual void Traverse(int operation)
links vtkRenderers to OSPRay
virtual unsigned char * GetBuffer()
Get the last rendered ColorBuffer.