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 
19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR
23 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 
31 =========================================================================*/
32 /*----------------------------------------------------------------------
33 Acknowledgement:
34 This algorithm is the result of joint work by Electricité de France,
35 CNRS, Collège de France and Université J. Fourier as part of the
36 Ph.D. thesis of Christian BOUCHENY.
37 ------------------------------------------------------------------------*/
56 #ifndef vtkEDLShading_h
57 #define vtkEDLShading_h
58 
59 #define EDL_HIGH_RESOLUTION_ON 1
60 #define EDL_LOW_RESOLUTION_ON 1
61 
63 #include "vtkRenderingOpenGL2Module.h" // For export macro
64 #include "vtkSmartPointer.h" // needed for vtkSmartPointer
65 #include "vtkOpenGLHelper.h" // used for ivars
66 
69 class vtkTextureObject;
70 
71 class VTKRENDERINGOPENGL2_EXPORT vtkEDLShading : public vtkDepthImageProcessingPass
72 {
73 public:
74  static vtkEDLShading *New();
76  void PrintSelf(ostream& os, vtkIndent indent) override;
77 
82  void Render(const vtkRenderState *s) override;
83 
89  void ReleaseGraphicsResources(vtkWindow *w) override;
90 
91  protected:
95  vtkEDLShading();
96 
100  ~vtkEDLShading() override;
101 
105  void EDLInitializeFramebuffers(vtkRenderState &s);
106 
110  void EDLInitializeShaders(vtkOpenGLRenderWindow *);
111 
115  bool EDLShadeHigh(vtkRenderState &s, vtkOpenGLRenderWindow *);
116 
120  bool EDLShadeLow(vtkRenderState &s, vtkOpenGLRenderWindow *);
121 
125  bool EDLBlurLow(vtkRenderState &s, vtkOpenGLRenderWindow *);
126 
130  bool EDLCompose(const vtkRenderState *s, vtkOpenGLRenderWindow *);
131 
133 
137  // used to record scene data
139  // color render target for projection pass
141  // depth render target for projection pass
143 
144  // Framebuffer objects and textures for EDL
146  // for EDL full res shading
148  // color render target for EDL full res pass
150  // for EDL low res shading (image size/4)
152  // color render target for EDL low res pass
154  // color render target for EDL low res
155  // bilateral filter pass
156 
157  // Shader prohrams
161 
162  float EDLNeighbours[8][4];
164  int EDLLowResFactor; // basically 4
165 
166  float Zn; // near clipping plane
167  float Zf; // far clipping plane
168 
169  private:
170  vtkEDLShading(const vtkEDLShading&) = delete;
171  void operator=(const vtkEDLShading&) = delete;
172 };
173 
174 #endif
vtkDepthImageProcessingPass
Convenient class for post-processing passes. Based on vtkImageProcessingPass, but writes depth as wel...
Definition: vtkDepthImageProcessingPass.h:62
vtkEDLShading::EDLComposeProgram
vtkOpenGLHelper EDLComposeProgram
Definition: vtkEDLShading.h:159
vtkEDLShading::EDLLowFBO
vtkOpenGLFramebufferObject * EDLLowFBO
Definition: vtkEDLShading.h:149
vtkEDLShading::ProjectionColorTexture
vtkTextureObject * ProjectionColorTexture
Definition: vtkEDLShading.h:138
vtkObject::New
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
vtkEDLShading::EDLHighFBO
vtkOpenGLFramebufferObject * EDLHighFBO
Definition: vtkEDLShading.h:145
vtkRenderPass::Render
virtual void Render(const vtkRenderState *s)=0
Perform rendering according to a render state s.
vtkOpenGLFramebufferObject
Internal class which encapsulates OpenGL FramebufferObject.
Definition: vtkOpenGLFramebufferObject.h:182
vtkOpenGLHelper.h
vtkEDLShading::ProjectionDepthTexture
vtkTextureObject * ProjectionDepthTexture
Definition: vtkEDLShading.h:140
vtkEDLShading::Zn
float Zn
Definition: vtkEDLShading.h:166
vtkImageProcessingPass::ReleaseGraphicsResources
void ReleaseGraphicsResources(vtkWindow *w) override
Release graphics resources and ask components to release their own resources.
vtkEDLShading::EDLShadeProgram
vtkOpenGLHelper EDLShadeProgram
Definition: vtkEDLShading.h:158
vtkWindow
window superclass for vtkRenderWindow
Definition: vtkWindow.h:34
vtkEDLShading::EDLHighShadeTexture
vtkTextureObject * EDLHighShadeTexture
Definition: vtkEDLShading.h:147
vtkEDLShading::Zf
float Zf
Definition: vtkEDLShading.h:167
vtkOpenGLHelper
Definition: vtkOpenGLHelper.h:30
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkTextureObject
abstracts an OpenGL texture object.
Definition: vtkTextureObject.h:41
vtkSmartPointer.h
vtkEDLShading::EDLLowResFactor
int EDLLowResFactor
Definition: vtkEDLShading.h:164
vtkEDLShading
Definition: vtkEDLShading.h:71
vtkEDLShading::EDLIsFiltered
bool EDLIsFiltered
Definition: vtkEDLShading.h:163
vtkEDLShading::BilateralProgram
vtkOpenGLHelper BilateralProgram
Definition: vtkEDLShading.h:160
vtkDepthImageProcessingPass::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkOpenGLRenderWindow
OpenGL rendering window.
Definition: vtkOpenGLRenderWindow.h:50
vtkRenderState
Context in which a vtkRenderPass will render.
Definition: vtkRenderState.h:40
vtkEDLShading::ProjectionFBO
vtkOpenGLFramebufferObject * ProjectionFBO
Framebuffer object and textures for initial projection.
Definition: vtkEDLShading.h:136
vtkEDLShading::EDLLowBlurTexture
vtkTextureObject * EDLLowBlurTexture
Definition: vtkEDLShading.h:153
vtkEDLShading::EDLLowShadeTexture
vtkTextureObject * EDLLowShadeTexture
Definition: vtkEDLShading.h:151
vtkDepthImageProcessingPass.h