VTK
vtkOptiXRendererNode.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkOptiXRendererNode.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 vtkOptiXRendererNode_h
23 #define vtkOptiXRendererNode_h
24 
25 #include "vtkRenderingOptiXModule.h" // For export macro
26 #include "vtkRendererNode.h"
27 
28 #include <vector> // for ivars
29 
30 class vtkRenderer;
32 class vtkOptiXPtxLoader;
33 
34 struct vtkOptiXRendererNodeInternals;
35 
36 namespace vtkopt
37 {
38  struct Light;
39 }
40 
41 namespace optix
42 {
43  class ContextObj;
44  class GeometryGroupObj;
45 }
46 
47 class VTKRENDERINGOPTIX_EXPORT vtkOptiXRendererNode : public vtkRendererNode
48 {
49 public:
50  static vtkOptiXRendererNode* New();
52  void PrintSelf(ostream& os, vtkIndent indent);
53 
57  virtual void Build(bool prepass);
58 
62  virtual void Render(bool prepass);
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 
104  static vtkInformationIntegerKey* AMBIENT_SAMPLES();
105  static void SetAmbientSamples(int, vtkRenderer *renderer);
106  static int GetAmbientSamples(vtkRenderer *renderer);
108 
112  virtual unsigned char *GetBuffer() { return this->Buffer; }
113 
117  virtual float *GetZBuffer() { return this->ZBuffer; }
118 
122  virtual optix::ContextObj* GetOptiXContext();
123 
127  virtual optix::GeometryGroupObj* GetOptiXGeometryGroup();
128 
132  vtkOptiXPtxLoader* GetOptiXPtxLoader();
133 
137  virtual void AddLight(const vtkopt::Light& light);
138 
143  virtual void Traverse(int operation);
144 
148  virtual void Synchronize(bool prepass);
149 
150 protected:
153 
154  //internal structures
155  unsigned char *Buffer;
156  float *ZBuffer;
157 
158  vtkOptiXRendererNodeInternals* Internals;
160 
161  std::vector<vtkopt::Light> Lights;
162 
164 
165 private:
167  void operator=(const vtkOptiXRendererNode&) = delete;
168 
169  int ImageX, ImageY;
170 
171  mutable float Cached_bgColor[3];
172  mutable int Cached_useShadows;
173  mutable int Cached_samplesPerPixel;
174  mutable bool ContextValidated;
175  mutable int Cached_AOSamples;
176 };
177 
178 #endif
vtkOptiXRendererNode::OptiXPtxLoader
vtkOptiXPtxLoader * OptiXPtxLoader
Definition: vtkOptiXRendererNode.h:159
vtkRendererNode::Synchronize
virtual void Synchronize(bool prepass) override
Synchronize our state.
vtkopt
Definition: Light.h:34
vtkOptiXRendererNode::Internals
vtkOptiXRendererNodeInternals * Internals
Definition: vtkOptiXRendererNode.h:158
vtkOptiXRendererNode::ZBuffer
float * ZBuffer
Definition: vtkOptiXRendererNode.h:156
vtkopt::Light
Definition: Light.h:36
vtkOptiXRendererNode::GetBuffer
virtual unsigned char * GetBuffer()
Get the last rendered ColorBuffer.
Definition: vtkOptiXRendererNode.h:112
vtkOptiXRendererNode::Buffer
unsigned char * Buffer
Definition: vtkOptiXRendererNode.h:155
vtkRendererNode::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkRendererNode::Build
virtual void Build(bool prepass) override
Build containers for our child nodes.
vtkOptiXPtxLoader
for loading of OptiX .ptx files
Definition: vtkOptiXPtxLoader.h:38
vtkOptiXRendererNode::Lights
std::vector< vtkopt::Light > Lights
Definition: vtkOptiXRendererNode.h:161
vtkInformationIntegerKey
Key for integer values in vtkInformation.
Definition: vtkInformationIntegerKey.h:31
vtkRendererNode::New
static vtkRendererNode * New()
optix
Definition: vtkOptiXPtxLoader.h:30
vtkOptiXRendererNode::NumActors
int NumActors
Definition: vtkOptiXRendererNode.h:163
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkViewNode::Render
virtual void Render(bool)
Makes calls to make self visible.
Definition: vtkViewNode.h:64
vtkOptiXRendererNode::GetZBuffer
virtual float * GetZBuffer()
Get the last rendered ZBuffer.
Definition: vtkOptiXRendererNode.h:117
vtkRendererNode.h
vtkOptiXRendererNode
links vtkRenderers to OptiX
Definition: vtkOptiXRendererNode.h:47
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:57
vtkRendererNode
vtkViewNode specialized for vtkRenderers
Definition: vtkRendererNode.h:30
vtkViewNode::Traverse
virtual void Traverse(int operation)