VTK
vtkEDLShading.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: VTK
4 Module: vtkEDLShading.h
5
6 Copyright (c) 2005-2008 Sandia Corporation, Kitware Inc.
7 All rights reserved.
8
9 ParaView is a free software; you can redistribute it and/or modify it
10 under the terms of the ParaView license version 1.2.
11
12 See License_v1.2.txt for the full ParaView license.
13 A copy of this license can be obtained by contacting
14 Kitware Inc.
15 28 Corporate Drive
16 Clifton Park, NY 12065
17 USA
18
19THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR
23CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
31=========================================================================*/
32/*----------------------------------------------------------------------
33Acknowledgement:
34This algorithm is the result of joint work by Electricité de France,
35CNRS, Collège de France and Université J. Fourier as part of the
36Ph.D. thesis of Christian BOUCHENY.
37------------------------------------------------------------------------*/
59#ifndef vtkEDLShading_h
60#define vtkEDLShading_h
61
62#define EDL_HIGH_RESOLUTION_ON 1
63#define EDL_LOW_RESOLUTION_ON 1
64
66#include "vtkRenderingOpenGL2Module.h" // For export macro
67#include "vtkSmartPointer.h" // needed for vtkSmartPointer
68#include "vtkOpenGLHelper.h" // used for ivars
69
73
74class VTKRENDERINGOPENGL2_EXPORT vtkEDLShading : public vtkDepthImageProcessingPass
75{
76public:
77 static vtkEDLShading *New();
79 void PrintSelf(ostream& os, vtkIndent indent);
80
85 virtual void Render(const vtkRenderState *s);
86
93
94 protected:
99
103 virtual ~vtkEDLShading();
104
109
114
119
124
129
134
136
140 // used to record scene data
142 // color render target for projection pass
144 // depth render target for projection pass
146
147 // Framebuffer objects and textures for EDL
149 // for EDL full res shading
151 // color render target for EDL full res pass
153 // for EDL low res shading (image size/4)
155 // color render target for EDL low res pass
157 // color render target for EDL low res
158 // bilateral filter pass
159
160 // Shader prohrams
164
165 float EDLNeighbours[8][4];
167 int EDLLowResFactor; // basically 4
168
169 float Zn; // near clipping plane
170 float Zf; // far clipping plane
171
172 private:
173 vtkEDLShading(const vtkEDLShading&) VTK_DELETE_FUNCTION;
174 void operator=(const vtkEDLShading&) VTK_DELETE_FUNCTION;
175};
176
177#endif
Convenient class for post-processing passes.
Implement an EDL offscreen shading.
Definition: vtkEDLShading.h:75
bool EDLCompose(const vtkRenderState *s, vtkOpenGLRenderWindow *)
Compose color and shaded images.
vtkOpenGLHelper EDLComposeProgram
vtkTextureObject * EDLLowBlurTexture
void EDLInitializeShaders(vtkOpenGLRenderWindow *)
Initialization of required GLSL shaders.
vtkEDLShading()
Default constructor.
void ReleaseGraphicsResources(vtkWindow *w)
Release graphics resources and ask components to release their own resources.
void EDLInitializeFramebuffers(vtkRenderState &s)
Initialization of required framebuffer objects.
bool EDLBlurLow(vtkRenderState &s, vtkOpenGLRenderWindow *)
Render EDL in middle resolution buffer.
vtkOpenGLHelper EDLShadeProgram
vtkTextureObject * ProjectionDepthTexture
vtkFrameBufferObject * EDLHighFBO
bool EDLShadeLow(vtkRenderState &s, vtkOpenGLRenderWindow *)
Render EDL in middle resolution buffer.
static vtkEDLShading * New()
virtual ~vtkEDLShading()
Destructor.
vtkTextureObject * EDLLowShadeTexture
virtual void Render(const vtkRenderState *s)
Perform rendering according to a render state s.
vtkTextureObject * EDLHighShadeTexture
bool EDLShadeHigh(vtkRenderState &s, vtkOpenGLRenderWindow *)
Render EDL in full resolution buffer.
vtkOpenGLHelper BilateralProgram
vtkTextureObject * ProjectionColorTexture
vtkFrameBufferObject * EDLLowFBO
vtkFrameBufferObject * ProjectionFBO
Framebuffer object and textures for initial projection.
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
internal class which encapsulates OpenGL frame buffer object.
a simple class to control print indentation
Definition: vtkIndent.h:40
OpenGL rendering window.
Context in which a vtkRenderPass will render.
abstracts an OpenGL texture object.
window superclass for vtkRenderWindow
Definition: vtkWindow.h:35