47#ifndef vtkDualDepthPeelingPass_h
48#define vtkDualDepthPeelingPass_h
50#include "vtkRenderingOpenGL2Module.h"
65 virtual
void PrintSelf(ostream &os,
vtkIndent indent);
68 virtual
void ReleaseGraphicsResources(
vtkWindow *w);
71 virtual
bool ReplaceShaderValues(std::
string &vertexShader,
72 std::
string &geometryShader,
73 std::
string &fragmentShader,
abstract class specifies interface to map data
Implement an Order Independent Transparency render pass.
Implements the dual depth peeling algorithm.
vtkOpenGLBufferObject * CopyDepthVBO
static vtkDualDepthPeelingPass * New()
vtkOpenGLBufferObject * BackBlendVBO
void Initialize(const vtkRenderState *s)
Allocate and configure FBOs and textures.
unsigned int OcclusionQueryId
unsigned int WrittenPixels
void InitializeOcclusionQuery()
vtkOpenGLVertexArrayObject * CopyDepthVAO
void InitDepthTexture(vtkTextureObject *tex, const vtkRenderState *s)
void SwapTargets()
Swap the src/dest render targets:
TextureName DepthDestination
vtkOpenGLVertexArrayObject * BlendVAO
unsigned int OcclusionThreshold
void Prepare()
Fill textures with initial values, bind the framebuffer.
vtkOpenGLVertexArrayObject * BackBlendVAO
vtkOpenGLBufferObject * BlendVBO
vtkTimeStamp CurrentStageTimeStamp
TextureName FrontDestination
void SetCurrentStage(ShaderStage stage)
vtkShaderProgram * BlendProgram
void FreeGLObjects()
Release all FBOs and textures.
~vtkDualDepthPeelingPass()
vtkDualDepthPeelingPass()
void Peel()
Render the scene to produce the next set of peels.
void DeleteOcclusionQueryId()
vtkFrameBufferObject2 * Framebuffer
void RenderTranslucentPass()
Render the translucent pass geometry, counting number of render calls.
void StartOcclusionQuery()
vtkShaderProgram * CopyDepthProgram
const vtkRenderState * RenderState
void CopyOpaqueDepthBuffer()
void InitOpaqueDepthTexture(vtkTextureObject *tex, const vtkRenderState *s)
void InitColorTexture(vtkTextureObject *tex, const vtkRenderState *s)
Initialize helpers.
void InitFramebuffer(const vtkRenderState *s)
vtkShaderProgram * BackBlendProgram
Interface to OpenGL framebuffer object.
a simple class to control print indentation
The VertexArrayObject class uses, or emulates, vertex array objects.
abstract superclass for all actors, volumes and annotations
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
window superclass for vtkRenderWindow
vtkTypeUInt64 vtkMTimeType