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=========================================================================*/
42#ifndef vtkDepthPeelingPass_h
43#define vtkDepthPeelingPass_h
44
45#include "vtkRenderingOpenGLModule.h" // For export macro
46#include "vtkRenderPass.h"
47
49class vtkDepthPeelingPassLayerList; // Pimpl
51class vtkShader2;
52
53class VTKRENDERINGOPENGL_EXPORT vtkDepthPeelingPass : public vtkRenderPass
54{
55public:
58 void PrintSelf(ostream& os, vtkIndent indent);
59
64 virtual void Render(const vtkRenderState *s);
65
72
74
80 vtkGetObjectMacro(TranslucentPass,vtkRenderPass);
81 virtual void SetTranslucentPass(vtkRenderPass *translucentPass);
83
85
94 vtkSetClampMacro(OcclusionRatio,double,0.0,0.5);
95 vtkGetMacro(OcclusionRatio,double);
97
99
104 vtkSetMacro(MaximumNumberOfPeels,int);
105 vtkGetMacro(MaximumNumberOfPeels,int);
107
109
113 vtkGetMacro(LastRenderingUsedDepthPeeling,bool);
115
124 protected:
129
134
140
144 void CheckCompilation(unsigned int fragmentShader);
145
154 int layer);
155
160
162
170
175 unsigned int DepthFormat;
176
187
194
196
200 vtkDepthPeelingPassLayerList *LayerList;
201
202 unsigned int OpaqueLayerZ;
203 unsigned int TransparentLayerZ;
204// unsigned int ProgramShader;
205
206 // Is rendering at translucent geometry stage using depth peeling and
207 // rendering a layer other than the first one? (Boolean value)
208 // If so, the uniform variables UseTexture and Texture can be set.
209 // (Used by vtkOpenGLProperty or vtkOpenGLTexture)
211
214
215 int ShadowTexUnit; // texture unit allocated for the shadow texture
216 int OpaqueShadowTexUnit; // texture unit allocated for the opaque shadow tex.
217
218 private:
219 vtkDepthPeelingPass(const vtkDepthPeelingPass&) VTK_DELETE_FUNCTION;
220 void operator=(const vtkDepthPeelingPass&) VTK_DELETE_FUNCTION;
221};
222
223#endif
Implement an Order Independent Transparency render pass.
void CheckCompilation(unsigned int fragmentShader)
Check the compilation status of some fragment shader source.
virtual void SetTranslucentPass(vtkRenderPass *translucentPass)
vtkDepthPeelingPass()
Is rendering at translucent geometry stage using depth peeling and rendering a layer other than the f...
int RenderPeel(const vtkRenderState *s, int layer)
Render a peel layer.
static vtkDepthPeelingPass * New()
vtkShaderProgram2 * Prog
int MaximumNumberOfPeels
In case of depth peeling, define the maximum number of peeling layers.
double OcclusionRatio
In case of use of depth peeling technique for rendering translucent material, define the threshold un...
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
int ViewportX
Cache viewport values for depth peeling.
void ReleaseGraphicsResources(vtkWindow *w)
Release graphics resources and ask components to release their own resources.
virtual ~vtkDepthPeelingPass()
Destructor.
virtual void Render(const vtkRenderState *s)
Perform rendering according to a render state s.
vtkRenderPass * TranslucentPass
void CheckSupport(vtkOpenGLRenderWindow *w)
Check if depth peeling is supported by the current OpenGL context.
unsigned int TransparentLayerZ
vtkDepthPeelingPassLayerList * LayerList
Used by the depth peeling technique to store the transparency layers.
unsigned int DepthFormat
Actual depth format: vtkgl::DEPTH_COMPONENT16_ARB or vtkgl::DEPTH_COMPONENT24_ARB.
a simple class to control print indentation
Definition: vtkIndent.h:40
OpenGL rendering window.
Perform part of the rendering of a vtkRenderer.
Definition: vtkRenderPass.h:59
Context in which a vtkRenderPass will render.
GLSL Shader.
Definition: vtkShader2.h:63
record modification and/or execution time
Definition: vtkTimeStamp.h:36
window superclass for vtkRenderWindow
Definition: vtkWindow.h:35
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.