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 
29 #include "ospray/ospray.h" // for ospray handle types
30 
36 class vtkMatrix4x4;
37 class vtkOSPRayRendererNodeInternals;
39 class vtkRenderer;
40 
41 class VTKRENDERINGOSPRAY_EXPORT vtkOSPRayRendererNode :
42  public vtkRendererNode
43 {
44 public:
45  static vtkOSPRayRendererNode* New();
47  void PrintSelf(ostream& os, vtkIndent indent) override;
48 
52  virtual void Build(bool prepass) override;
53 
57  virtual void Render(bool prepass) override;
58 
62  virtual void Invalidate(bool prepass) override;
63 
67  virtual void WriteLayer(unsigned char *buffer, float *zbuffer,
68  int buffx, int buffy, int layer);
69 
70  //state beyond rendering core...
71 
77  static vtkInformationIntegerKey* SAMPLES_PER_PIXEL();
78 
80 
83  static void SetSamplesPerPixel(int, vtkRenderer *renderer);
84  static int GetSamplesPerPixel(vtkRenderer *renderer);
86 
88 
93  static vtkInformationIntegerKey* MAX_FRAMES();
94  static void SetMaxFrames(int, vtkRenderer *renderer);
95  static int GetMaxFrames(vtkRenderer *renderer);
97 
99 
103  static vtkInformationStringKey* RENDERER_TYPE();
104  static void SetRendererType(std::string name, vtkRenderer *renderer);
105  static std::string GetRendererType(vtkRenderer *renderer);
107 
113  static vtkInformationIntegerKey* AMBIENT_SAMPLES();
115 
118  static void SetAmbientSamples(int, vtkRenderer *renderer);
119  static int GetAmbientSamples(vtkRenderer *renderer);
121 
126  static vtkInformationIntegerKey* COMPOSITE_ON_GL();
128 
131  static void SetCompositeOnGL(int, vtkRenderer *renderer);
132  static int GetCompositeOnGL(vtkRenderer *renderer);
134 
138  static vtkInformationDoubleVectorKey* NORTH_POLE();
140 
143  static void SetNorthPole(double *, vtkRenderer *renderer);
144  static double * GetNorthPole(vtkRenderer *renderer);
146 
150  static vtkInformationDoubleVectorKey* EAST_POLE();
152 
155  static void SetEastPole(double *, vtkRenderer *renderer);
156  static double * GetEastPole(vtkRenderer *renderer);
158 
162  static vtkInformationObjectBaseKey* MATERIAL_LIBRARY();
163 
165 
168  static void SetMaterialLibrary(vtkOSPRayMaterialLibrary *, vtkRenderer *renderer);
169  static vtkOSPRayMaterialLibrary* GetMaterialLibrary(vtkRenderer *renderer);
171 
175  static vtkInformationDoubleKey* VIEW_TIME();
177 
180  static void SetViewTime(double , vtkRenderer *renderer);
181  static double GetViewTime(vtkRenderer *renderer);
183 
187  static vtkInformationIntegerKey* TIME_CACHE_SIZE();
189 
192  static void SetTimeCacheSize(int , vtkRenderer *renderer);
193  static int GetTimeCacheSize(vtkRenderer *renderer);
195 
199  OSPModel GetOModel() { return this->OModel; }
200  OSPRenderer GetORenderer() { return this->ORenderer; }
201  void AddLight(OSPLight light) {
202  this->Lights.push_back(light); }
203 
207  virtual unsigned char *GetBuffer() {
208  return this->Buffer; }
209 
213  virtual float *GetZBuffer() {
214  return this->ZBuffer; }
215 
216  // if you want to traverse your children in a specific order
217  // or way override this method
218  virtual void Traverse(int operation) override;
219 
223  vtkRenderer *GetRenderer();
224 
225 protected:
228 
229  //internal structures
230  unsigned char *Buffer;
231  float *ZBuffer;
232 
233  OSPModel OModel;
234  OSPRenderer ORenderer;
235  OSPFrameBuffer OFrameBuffer;
236  int ImageX, ImageY;
237  std::vector<OSPLight> Lights;
242  float* ODepthBuffer;
246  vtkOSPRayRendererNodeInternals *Internal;
247 
248 private:
250  void operator=(const vtkOSPRayRendererNode&) = delete;
251 };
252 
253 #endif
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:35
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:302
vtkOSPRayRendererNodeInternals * Internal
abstract specification for renderers
Definition: vtkRenderer.h:57
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.
Key for vtkObjectBase values.
virtual void Build(bool prepass) override
Build containers for our child nodes.
std::vector< OSPLight > Lights
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.