VTK
vtkSurfaceLICHelper.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4 
5  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
6  All rights reserved.
7  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
8 
9  This software is distributed WITHOUT ANY WARRANTY; without even
10  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11  PURPOSE. See the above copyright notice for more information.
12 
13 =========================================================================*/
20 #ifndef vtkSurfaceLICHelper_h
21 #define vtkSurfaceLICHelper_h
22 #ifndef __VTK_WRAP__
23 
24 #include "vtkRenderingLICOpenGL2Module.h" // for export
25 #include "vtkPixelExtent.h"
26 #include "vtkWeakPointer.h"
27 #include "vtkSmartPointer.h"
28 #include "vtkOpenGLHelper.h"
29 #include "vtk_glew.h"
30 #include "vtkTextureObject.h"
31 
32 #include <deque> // for methods
33 
37 class vtkImageData;
40 class vtkRenderer;
41 class vtkActor;
42 class vtkDataObject;
43 
45 {
46 public:
49 
53  static bool IsSupported(vtkOpenGLRenderWindow *context);
54 
59 
63  void ClearTextures();
64 
68  void AllocateTextures(
69  vtkOpenGLRenderWindow *context,
70  int *viewsize);
71 
75  void AllocateTexture(
76  vtkOpenGLRenderWindow *context,
77  int *viewsize,
79  int filter = vtkTextureObject::Nearest);
80 
85  vtkOpenGLRenderWindow *context,
86  int *viewsize,
88 
92  void Updated();
93 
98  void UpdateAll();
99 
101 
104  void ViewportQuadTextureCoords(GLfloat *tcoords)
105  {
106  tcoords[0] = tcoords[2] = 0.0f;
107  tcoords[1] = tcoords[3] = 1.0f;
108  }
110 
115  void ViewportQuadPoints(const vtkPixelExtent &viewportExt, GLfloat *quadpts)
116  {
117  viewportExt.GetData(quadpts);
118  }
119 
125  const vtkPixelExtent &viewExt,
126  const vtkPixelExtent &viewportExt,
127  GLfloat *tcoords);
128 
130 
134  void ViewQuadPoints(GLfloat *quadpts)
135  {
136  quadpts[0] = quadpts[2] = 0.0f;
137  quadpts[1] = quadpts[3] = 1.0f;
138  }
140 
142 
146  void ViewQuadTextureCoords(GLfloat *tcoords)
147  {
148  tcoords[0] = tcoords[2] = 0.0f;
149  tcoords[1] = tcoords[3] = 1.0f;
150  }
152 
156  void RenderQuad(
157  const vtkPixelExtent &viewExt,
158  const vtkPixelExtent &viewportExt,
159  vtkOpenGLHelper *cbo);
160 
164  inline int idx(int row, int col) { return 4*col+row; }
165 
176  bool VisibilityTest(double ndcBBox[24]);
177 
186  bool ProjectBounds(
187  double PMV[16],
188  int viewsize[2],
189  double bounds[6],
190  vtkPixelExtent &screenExt);
191 
197  int ProjectBounds(
198  vtkRenderer *ren,
199  vtkActor *actor,
200  vtkDataObject *dobj,
201  int viewsize[2],
202  vtkPixelExtent &dataExt,
203  std::deque<vtkPixelExtent> &blockExts);
204 
208  void GetPixelBounds(float *rgba, int ni, vtkPixelExtent &ext);
209 
214  void GetPixelBounds(float *rgba, int ni, std::deque<vtkPixelExtent> &blockExts);
215 
216  static void StreamingFindMinMax(
218  std::deque<vtkPixelExtent> &blockExts,
219  float &min, float &max);
220 
232 
234  std::deque<vtkPixelExtent> BlockExts;
235 
239 
240  int Viewsize[2];
243 
247 
249 
252 
253 
254 protected:
255 
256 };
257 
258 #endif
259 #endif
260 // VTK-HeaderTest-Exclude: vtkSurfaceLICHelper.h
OpenGL rendering window.
vtkSmartPointer< vtkLineIntegralConvolution2D > LICer
void ViewQuadPoints(GLfloat *quadpts)
Convert the entire view to a bounding box and it&#39;s texture coordinates for a screen size texture...
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:51
void AllocateTexture(vtkOpenGLRenderWindow *context, int *viewsize, vtkSmartPointer< vtkTextureObject > &tex, int filter=vtkTextureObject::Nearest)
Allocate a size texture, store in the given smart pointer.
vtkSmartPointer< vtkTextureObject > HSLColorImage
void ReleaseGraphicsResources(vtkWindow *win)
Free textures and shader programs we&#39;re holding a reference to.
vtkSmartPointer< vtkTextureObject > MaskVectorImage
void ViewportQuadPoints(const vtkPixelExtent &viewportExt, GLfloat *quadpts)
Convert a viewport to a bounding box and it&#39;s texture coordinates for a screen size texture...
void ClearTextures()
Free textures we&#39;re holding a reference to.
static void StreamingFindMinMax(vtkOpenGLFramebufferObject *fbo, std::deque< vtkPixelExtent > &blockExts, float &min, float &max)
vtkSmartPointer< vtkTextureObject > RGBColorImage
vtkOpenGLHelper * ColorPass
std::deque< vtkPixelExtent > BlockExts
abstract specification for renderers
Definition: vtkRenderer.h:63
void AllocateTextures(vtkOpenGLRenderWindow *context, int *viewsize)
Allocate textures.
vtkSmartPointer< vtkOpenGLFramebufferObject > FBO
int * GetData()
Direct access to internal data.
GPU-based implementation of Line Integral Convolution (LIC)
vtkSmartPointer< vtkSurfaceLICComposite > Compositor
vtkWeakPointer< vtkOpenGLRenderWindow > Context
vtkSmartPointer< vtkTextureObject > CompositeVectorImage
static bool IsSupported(vtkOpenGLRenderWindow *context)
Check for OpenGL support.
window superclass for vtkRenderWindow
Definition: vtkWindow.h:37
vtkSmartPointer< vtkTextureObject > VectorImage
vtkSmartPointer< vtkTextureObject > GeometryImage
bool VisibilityTest(double ndcBBox[24])
given a axes aligned bounding box in normalized device coordinates test for view frustum visibility...
vtkPainterCommunicator * Communicator
topologically and geometrically regular array of data
Definition: vtkImageData.h:45
void UpdateAll()
Force all stages to re-execute.
void ViewQuadTextureCoords(GLfloat *tcoords)
Convert the entire view to a bounding box and it&#39;s texture coordinates for a screen size texture...
void Updated()
After LIC has been computed reset/clean internal state.
void RenderQuad(const vtkPixelExtent &viewExt, const vtkPixelExtent &viewportExt, vtkOpenGLHelper *cbo)
Render a quad (to trigger a shader to run)
vtkSmartPointer< vtkTextureObject > NoiseImage
vtkSmartPointer< vtkTextureObject > LICImage
void GetPixelBounds(float *rgba, int ni, vtkPixelExtent &ext)
Shrink an extent to tightly bound non-zero values.
Internal class which encapsulates OpenGL FramebufferObject.
vtkOpenGLHelper * CopyPass
Representation of a cartesian pixel plane and common operations on it.
void ViewportQuadTextureCoords(GLfloat *tcoords)
Convert viewport to texture coordinates.
A communicator that can safely be used inside a painter.
This class decomposes the image space and shuffles image space data onto the new decomposition with t...
vtkOpenGLHelper * ColorEnhancePass
int idx(int row, int col)
Compute the index into the 4x4 OpenGL ordered matrix.
general representation of visualization data
Definition: vtkDataObject.h:64
vtkSmartPointer< vtkTextureObject > CompositeMaskVectorImage
bool ProjectBounds(double PMV[16], int viewsize[2], double bounds[6], vtkPixelExtent &screenExt)
Given world space bounds, compute bounding boxes in clip and normalized device coordinates and perfor...
A small collection of noise routines for LIC.
#define max(a, b)
vtkSmartPointer< vtkTextureObject > DepthImage
void AllocateDepthTexture(vtkOpenGLRenderWindow *context, int *viewsize, vtkSmartPointer< vtkTextureObject > &tex)
Allocate a size texture, store in the given smart pointer.
vtkSmartPointer< vtkImageData > Noise