VTK
vtkDepthPeelingPass.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkDepthPeelingPass.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 =========================================================================*/
44 #ifndef vtkDepthPeelingPass_h
45 #define vtkDepthPeelingPass_h
46 
47 #include "vtkRenderingOpenGL2Module.h" // For export macro
48 #include "vtkOpenGLRenderPass.h"
49 #include <vector> // STL Header
50 
51 class vtkTextureObject;
53 class vtkOpenGLHelper;
54 
55 class VTKRENDERINGOPENGL2_EXPORT vtkDepthPeelingPass
56  : public vtkOpenGLRenderPass
57 {
58 public:
59  static vtkDepthPeelingPass *New();
61  void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
62 
67  void Render(const vtkRenderState *s) VTK_OVERRIDE;
68 
74  void ReleaseGraphicsResources(vtkWindow *w) VTK_OVERRIDE;
75 
77 
83  vtkGetObjectMacro(TranslucentPass,vtkRenderPass);
84  virtual void SetTranslucentPass(vtkRenderPass *translucentPass);
86 
88 
97  vtkSetClampMacro(OcclusionRatio,double,0.0,0.5);
98  vtkGetMacro(OcclusionRatio,double);
100 
102 
107  vtkSetMacro(MaximumNumberOfPeels,int);
108  vtkGetMacro(MaximumNumberOfPeels,int);
110 
119  // vtkOpenGLRenderPass virtuals:
120  bool PostReplaceShaderValues(std::string &vertexShader,
121  std::string &geometryShader,
122  std::string &fragmentShader,
123  vtkAbstractMapper *mapper,
124  vtkProp *prop) VTK_OVERRIDE;
126  vtkAbstractMapper *mapper, vtkProp *prop,
127  vtkOpenGLVertexArrayObject* VAO = NULL) VTK_OVERRIDE;
128 
129  protected:
134 
138  ~vtkDepthPeelingPass() VTK_OVERRIDE;
139 
140  vtkRenderPass *TranslucentPass;
141  vtkTimeStamp CheckTime;
142 
144 
147  int ViewportX;
148  int ViewportY;
149  int ViewportWidth;
150  int ViewportHeight;
152 
162  double OcclusionRatio;
163 
169  int MaximumNumberOfPeels;
170 
171  // Is rendering at translucent geometry stage using depth peeling and
172  // rendering a layer other than the first one? (Boolean value)
173  // If so, the uniform variables UseTexture and Texture can be set.
174  // (Used by vtkOpenGLProperty or vtkOpenGLTexture)
175  int DepthPeelingHigherLayer;
176 
177  vtkOpenGLHelper *FinalBlendProgram;
178  vtkOpenGLHelper *IntermediateBlendProgram;
179 
180  vtkTextureObject *OpaqueZTexture;
181  vtkTextureObject *OpaqueRGBATexture;
182  vtkTextureObject *TranslucentRGBATexture;
183  vtkTextureObject *TranslucentZTexture;
184  vtkTextureObject *CurrentRGBATexture;
185  std::vector<float> *DepthZData;
186 
187  void BlendIntermediatePeels(vtkOpenGLRenderWindow *renWin, bool);
188  void BlendFinalPeel(vtkOpenGLRenderWindow *renWin);
189 
190  private:
191  vtkDepthPeelingPass(const vtkDepthPeelingPass&) VTK_DELETE_FUNCTION;
192  void operator=(const vtkDepthPeelingPass&) VTK_DELETE_FUNCTION;
193 };
194 
195 #endif
OpenGL rendering window.
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:44
Implement an Order Independent Transparency render pass.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
record modification and/or execution time
Definition: vtkTimeStamp.h:32
virtual bool SetShaderParameters(vtkShaderProgram *program, vtkAbstractMapper *mapper, vtkProp *prop, vtkOpenGLVertexArrayObject *VAO=NULL)
Update the uniforms of the shader program.
window superclass for vtkRenderWindow
Definition: vtkWindow.h:34
Context in which a vtkRenderPass will render.
a simple class to control print indentation
Definition: vtkIndent.h:33
The VertexArrayObject class uses, or emulates, vertex array objects.
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
abstract class specifies interface to map data
abstracts an OpenGL texture object.
virtual void Render(const vtkRenderState *s)=0
Perform rendering according to a render state s.
virtual void ReleaseGraphicsResources(vtkWindow *w)
Release graphics resources and ask components to release their own resources.
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
Perform part of the rendering of a vtkRenderer.
Definition: vtkRenderPass.h:55
Abstract render pass with shader modifications.
virtual bool PostReplaceShaderValues(std::string &vertexShader, std::string &geometryShader, std::string &fragmentShader, vtkAbstractMapper *mapper, vtkProp *prop)
Use vtkShaderProgram::Substitute to replace //VTK::XXX:YYY declarations in the shader sources...
The ShaderProgram uses one or more Shader objects.