51 #ifndef vtkDualDepthPeelingPass_h 52 #define vtkDualDepthPeelingPass_h 54 #include "vtkRenderingOpenGL2Module.h" 72 void PrintSelf(ostream &os,
vtkIndent indent) override;
75 void ReleaseGraphicsResources(
vtkWindow *w) override;
84 virtual
void SetVolumetricPass(
vtkRenderPass *volumetricPass);
88 bool PreReplaceShaderValues(std::
string &vertexShader,
89 std::
string &geometryShader,
90 std::
string &fragmentShader,
93 bool PostReplaceShaderValues(std::
string &vertexShader,
94 std::
string &geometryShader,
95 std::
string &fragmentShader,
106 bool PostReplaceTranslucentShaderValues(std::
string &vertexShader,
107 std::
string &geometryShader,
108 std::
string &fragmentShader,
111 bool PreReplaceVolumetricShaderValues(std::
string &vertexShader,
112 std::
string &geometryShader,
113 std::
string &fragmentShader,
160 vtkSetMacro(CurrentPeelType,
PeelType)
165 void FreeGLObjects();
170 void RenderTranslucentPass();
175 void RenderVolumetricPass();
177 bool IsRenderingVolumes();
199 { this->ActivateDrawBuffers(&
id, 1); }
200 template <
size_t NumTextures>
202 { this->ActivateDrawBuffers(a.data(), a.size()); }
203 void ActivateDrawBuffers(
const TextureName *ids,
size_t numTextures);
211 void InitializeOcclusionQuery();
212 void CopyOpaqueDepthBuffer();
213 void InitializeDepth();
215 void PeelVolumesOutsideTranslucentRange();
227 void PrepareFrontDestination();
228 void ClearFrontDestination();
229 void CopyFrontSourceToFrontDestination();
231 void InitializeTargetsForTranslucentPass();
232 void InitializeTargetsForVolumetricPass();
234 void PeelTranslucentGeometry();
235 void PeelVolumetricGeometry();
237 void BlendBackBuffer();
239 void StartTranslucentOcclusionQuery();
240 void EndTranslucentOcclusionQuery();
242 void StartVolumetricOcclusionQuery();
243 void EndVolumetricOcclusionQuery();
248 void SwapFrontBufferSourceDest();
249 void SwapDepthBufferSourceDest();
253 void AlphaBlendRender();
255 void BlendFinalImage();
256 void DeleteOcclusionQueryIds();
300 #endif // vtkDualDepthPeelingPass_h abstract superclass for all actors, volumes and annotations
void ActivateDrawBuffers(const std::array< TextureName, NumTextures > &a)
Bind and activate draw buffers.
Implement Depth Peeling for use within a framebuffer pass.
const vtkRenderState * RenderState
bool SaveScissorTestState
unsigned int TranslucentOcclusionQueryId
vtkTypeUInt32 vtkMTimeType
vtkOpenGLQuadHelper * BackBlendHelper
vtkOpenGLQuadHelper * CopyDepthHelper
record modification and/or execution time
unsigned int VolumetricWrittenPixels
vtkTimeStamp CurrentStageTimeStamp
TextureName DepthDestination
window superclass for vtkRenderWindow
unsigned int OcclusionThreshold
Context in which a vtkRenderPass will render.
a simple class to control print indentation
The VertexArrayObject class uses, or emulates, vertex array objects.
int VolumetricRenderCount
Internal class which encapsulates OpenGL FramebufferObject.
vtkOpenGLQuadHelper * CopyColorHelper
int TranslucentRenderCount
static vtkDepthPeelingPass * New()
abstract class specifies interface to map data
abstracts an OpenGL texture object.
vtkRenderPass * VolumetricPass
vtkOpenGLQuadHelper * BlendHelper
Implements the dual depth peeling algorithm.
Class to make rendering a full screen quad easier.
vtkRenderTimerLog * Timer
Perform part of the rendering of a vtkRenderer.
unsigned int TranslucentWrittenPixels
unsigned int VolumetricOcclusionQueryId
TextureName FrontDestination
Asynchronously measures GPU execution times for a series of events.
The ShaderProgram uses one or more Shader objects.