VTK  9.1.0
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=========================================================================*/
50#ifndef vtkDepthPeelingPass_h
51#define vtkDepthPeelingPass_h
52
53#include "vtkOpenGLRenderPass.h"
54#include "vtkRenderingOpenGL2Module.h" // For export macro
55#include <vector> // STL Header
56
60class vtkOpenGLState;
62
63class VTKRENDERINGOPENGL2_EXPORT vtkDepthPeelingPass : public vtkOpenGLRenderPass
64{
65public:
68 void PrintSelf(ostream& os, vtkIndent indent) override;
69
74 void Render(const vtkRenderState* s) override;
75
82
84
90 vtkGetObjectMacro(TranslucentPass, vtkRenderPass);
91 virtual void SetTranslucentPass(vtkRenderPass* translucentPass);
93
95
104 vtkSetClampMacro(OcclusionRatio, double, 0.0, 0.5);
105 vtkGetMacro(OcclusionRatio, double);
107
109
114 vtkSetMacro(MaximumNumberOfPeels, int);
115 vtkGetMacro(MaximumNumberOfPeels, int);
117
118 // vtkOpenGLRenderPass virtuals:
119 bool PostReplaceShaderValues(std::string& vertexShader, std::string& geometryShader,
120 std::string& fragmentShader, vtkAbstractMapper* mapper, vtkProp* prop) override;
122 vtkOpenGLVertexArrayObject* VAO = nullptr) override;
123
124 // Set Opaque Z texture, this must be set from the outer FO
126
127 // Set Opaque RGBA texture, this must be set from the outer FO
129
134 vtkSetMacro(DepthFormat, int);
135
136protected:
141
146
149
151
159
170
177
179
182
183 // obtained from the outer FO, we read from them
188
189 // each peel merges two color buffers into one result
190 vtkTextureObject* TranslucentRGBATexture[3];
193
194 // each peel compares a prior Z and writes to next
195 vtkTextureObject* TranslucentZTexture[2];
197
200
201 // useful to store
203
204private:
206 void operator=(const vtkDepthPeelingPass&) = delete;
207};
208
209#endif
abstract class specifies interface to map data
Implement Depth Peeling for use within a framebuffer pass.
vtkOpenGLQuadHelper * FinalBlend
virtual void SetTranslucentPass(vtkRenderPass *translucentPass)
Delegate for rendering the translucent polygonal geometry.
void SetOpaqueRGBATexture(vtkTextureObject *)
bool PostReplaceShaderValues(std::string &vertexShader, std::string &geometryShader, std::string &fragmentShader, vtkAbstractMapper *mapper, vtkProp *prop) override
Use vtkShaderProgram::Substitute to replace.
vtkDepthPeelingPass()
Default constructor.
void BlendFinalPeel(vtkOpenGLRenderWindow *renWin)
static vtkDepthPeelingPass * New()
~vtkDepthPeelingPass() override
Destructor.
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 SetOpaqueZTexture(vtkTextureObject *)
vtkTextureObject * OpaqueZTexture
int ViewportY
Cache viewport values for depth peeling.
bool SetShaderParameters(vtkShaderProgram *program, vtkAbstractMapper *mapper, vtkProp *prop, vtkOpenGLVertexArrayObject *VAO=nullptr) override
Update the uniforms of the shader program.
vtkOpenGLQuadHelper * IntermediateBlend
int ViewportX
Cache viewport values for depth peeling.
vtkTextureObject * OpaqueRGBATexture
vtkOpenGLFramebufferObject * Framebuffer
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int ViewportHeight
Cache viewport values for depth peeling.
void BlendIntermediatePeels(vtkOpenGLRenderWindow *renWin, bool)
vtkOpenGLState * State
int ViewportWidth
Cache viewport values for depth peeling.
void ReleaseGraphicsResources(vtkWindow *w) override
Release graphics resources and ask components to release their own resources.
vtkRenderPass * TranslucentPass
void Render(const vtkRenderState *s) override
Perform rendering according to a render state s.
a simple class to control print indentation
Definition: vtkIndent.h:113
Internal class which encapsulates OpenGL FramebufferObject.
Class to make rendering a full screen quad easier.
Abstract render pass with shader modifications.
OpenGL rendering window.
OpenGL state storage.
The VertexArrayObject class uses, or emulates, vertex array objects.
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:76
Perform part of the rendering of a vtkRenderer.
Definition: vtkRenderPass.h:57
Context in which a vtkRenderPass will render.
The ShaderProgram uses one or more Shader objects.
abstracts an OpenGL texture object.
record modification and/or execution time
Definition: vtkTimeStamp.h:52
window superclass for vtkRenderWindow
Definition: vtkWindow.h:39