VTK
vtkLineIntegralConvolution2D.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkLineIntegralConvolution2D.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
91 #ifndef vtkLineIntegralConvolution2D_h
92 #define vtkLineIntegralConvolution2D_h
93 
94 #include "vtkObject.h"
95 #include "vtkWeakPointer.h" // for ren context
96 #include "vtkRenderingLICModule.h" // for export macro
97 #include <deque> // for deque
98 
99 class vtkRenderWindow;
100 class vtkTextureObject;
101 class vtkPixelExtent;
102 class vtkShaderProgram2;
105 
107 {
108 public:
111  void PrintSelf(ostream & os, vtkIndent indent);
112 
114  static bool IsSupported(vtkRenderWindow * renWin);
115 
117 
119  void SetContext(vtkRenderWindow *context);
122 
124 
127  vtkSetClampMacro(EnhancedLIC, int, 0, 1);
128  vtkGetMacro(EnhancedLIC, int);
129  vtkBooleanMacro(EnhancedLIC, int);
131 
133 
146  enum {
147  ENHANCE_CONTRAST_OFF=0,
148  ENHANCE_CONTRAST_ON=1};
149  vtkSetClampMacro(EnhanceContrast, int, 0, 2);
150  vtkGetMacro(EnhanceContrast, int);
151  vtkBooleanMacro(EnhanceContrast, int);
153 
155 
168  vtkSetClampMacro(LowContrastEnhancementFactor, double, 0.0, 1.0);
169  vtkGetMacro(LowContrastEnhancementFactor, double);
170  vtkSetClampMacro(HighContrastEnhancementFactor, double, 0.0, 1.0);
171  vtkGetMacro(HighContrastEnhancementFactor, double);
173 
175 
179  vtkSetClampMacro(AntiAlias, int, 0, VTK_INT_MAX);
180  vtkGetMacro(AntiAlias, int);
181  vtkBooleanMacro(AntiAlias, int);
183 
185 
187  vtkSetClampMacro(NumberOfSteps, int, 0, VTK_INT_MAX);
188  vtkGetMacro(NumberOfSteps, int);
190 
192 
198  vtkSetClampMacro(StepSize, double, 0.0, VTK_FLOAT_MAX);
199  vtkGetMacro(StepSize, double);
201 
203 
206  void SetComponentIds(int c0, int c1);
207  void SetComponentIds(int c[2]){ this->SetComponentIds(c[0], c[1]); }
208  vtkGetVector2Macro(ComponentIds, int);
210 
212 
215  vtkSetClampMacro(MaxNoiseValue, double, 0.0, 1.0);
216  vtkGetMacro(MaxNoiseValue, double);
218 
220 
225  vtkGetMacro(TransformVectors, int);
227 
248  vtkGetMacro(NormalizeVectors, int);
250 
252 
258  vtkSetClampMacro(MaskThreshold, double, -1.0, VTK_FLOAT_MAX);
259  vtkGetMacro(MaskThreshold, double);
261 
262 
264 
266  vtkTextureObject *vectorTex,
267  vtkTextureObject *noiseTex);
269 
271 
273  const int extent[4],
274  vtkTextureObject *vectorTex,
275  vtkTextureObject *noiseTex);
277 
278  //BTX
280 
288  const vtkPixelExtent &inputTexExtent,
289  const std::deque<vtkPixelExtent> &vectorExtent,
290  const std::deque<vtkPixelExtent> &licExtent,
291  vtkTextureObject *vectorTex,
292  vtkTextureObject *maskVectorTex,
293  vtkTextureObject *noiseTex);
294  //ETX
296 
298 
300  static
303 
304  static
306 
307  //BTX
309 
316 
318 
319  virtual void GetGlobalMinMax(
321  float&,
322  float&) {}
323  //ETX
325 
330  virtual void WriteTimerLog(const char *){}
331 
332 protected:
335 
344 
345  void BuildShaders();
346 
348  float computeBounds[4],
349  vtkPixelExtent computeExtent);
350 
351  vtkTextureObject *AllocateBuffer(unsigned int texSize[2]);
352 
356 
358 
362  virtual void StartTimerEvent(const char *){}
363  virtual void EndTimerEvent(const char *){}
365 
366 protected:
368 
371 
381 
383  double StepSize;
393  int ComponentIds[2];
395 
396 private:
397  vtkLineIntegralConvolution2D(const vtkLineIntegralConvolution2D &); // Not implemented.
398  void operator = (const vtkLineIntegralConvolution2D &); // Not implemented.
399 };
400 
401 #endif
vtkLineIntegralConvolution2D::SetVectorTexParameters
static void SetVectorTexParameters(vtkTextureObject *vectors)
vtkLineIntegralConvolution2D::GetCommunicator
virtual vtkPainterCommunicator * GetCommunicator()
VTK_INT_MAX
#define VTK_INT_MAX
Definition: vtkType.h:132
vtkLineIntegralConvolution2D::CEShader
vtkShaderProgram2 * CEShader
Definition: vtkLineIntegralConvolution2D.h:378
vtkLineIntegralConvolution2D::EndTimerEvent
virtual void EndTimerEvent(const char *)
Definition: vtkLineIntegralConvolution2D.h:363
vtkGetVector2Macro
#define vtkGetVector2Macro(name, type)
Definition: vtkSetGet.h:270
vtkLineIntegralConvolution2D::Execute
vtkTextureObject * Execute(vtkTextureObject *vectorTex, vtkTextureObject *noiseTex)
vtkLineIntegralConvolution2D::SetCEShader
void SetCEShader(vtkShaderProgram2 *prog)
vtkLineIntegralConvolution2D::SetLICIShader
void SetLICIShader(vtkShaderProgram2 *prog)
vtkLineIntegralConvolution2D::SetAAVShader
void SetAAVShader(vtkShaderProgram2 *prog)
vtkLineIntegralConvolution2D::SetEEShader
void SetEEShader(vtkShaderProgram2 *prog)
vtkLineIntegralConvolution2D::SetNoise2TexParameters
void SetNoise2TexParameters(vtkTextureObject *noise)
vtkTypeMacro
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:642
vtkLineIntegralConvolution2D::Execute
vtkTextureObject * Execute(const vtkPixelExtent &inputTexExtent, const std::deque< vtkPixelExtent > &vectorExtent, const std::deque< vtkPixelExtent > &licExtent, vtkTextureObject *vectorTex, vtkTextureObject *maskVectorTex, vtkTextureObject *noiseTex)
vtkRenderingLICModule.h
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:62
vtkLineIntegralConvolution2D::StepSize
double StepSize
Definition: vtkLineIntegralConvolution2D.h:383
vtkLineIntegralConvolution2D::NoiseTextureLookupCompatibilityMode
int NoiseTextureLookupCompatibilityMode
Definition: vtkLineIntegralConvolution2D.h:389
vtkLineIntegralConvolution2D::Context
vtkWeakPointer< vtkRenderWindow > Context
Definition: vtkLineIntegralConvolution2D.h:369
vtkLineIntegralConvolution2D::NormalizeVectors
int NormalizeVectors
Definition: vtkLineIntegralConvolution2D.h:392
vtkLineIntegralConvolution2D::SetComponentIds
void SetComponentIds(int c[2])
Definition: vtkLineIntegralConvolution2D.h:207
vtkLineIntegralConvolution2D::vtkLineIntegralConvolution2D
vtkLineIntegralConvolution2D()
vtkLineIntegralConvolution2D::SetContext
void SetContext(vtkRenderWindow *context)
vtkLineIntegralConvolution2D::HighContrastEnhancementFactor
double HighContrastEnhancementFactor
Definition: vtkLineIntegralConvolution2D.h:387
vtkLineIntegralConvolution2D::SetVTShader
void SetVTShader(vtkShaderProgram2 *prog)
vtkLineIntegralConvolution2D::SetLIC0Shader
void SetLIC0Shader(vtkShaderProgram2 *prog)
vtkLineIntegralConvolution2D::StartTimerEvent
virtual void StartTimerEvent(const char *)
Definition: vtkLineIntegralConvolution2D.h:362
vtkPixelExtent
Definition: vtkPixelExtent.h:41
vtkLineIntegralConvolution2D::Execute
vtkTextureObject * Execute(const int extent[4], vtkTextureObject *vectorTex, vtkTextureObject *noiseTex)
vtkLineIntegralConvolution2D::AAHShader
vtkShaderProgram2 * AAHShader
Definition: vtkLineIntegralConvolution2D.h:379
vtkgl::val
GLuint GLfloat * val
Definition: vtkgl.h:13789
vtkLineIntegralConvolution2D::SetNormalizeVectors
void SetNormalizeVectors(int val)
vtkSetClampMacro
#define vtkSetClampMacro(name, type, min, max)
Definition: vtkSetGet.h:143
vtkLineIntegralConvolution2D::AAVShader
vtkShaderProgram2 * AAVShader
Definition: vtkLineIntegralConvolution2D.h:380
vtkgl::c
const GLubyte * c
Definition: vtkgl.h:15720
vtkLineIntegralConvolution2D::BuildShaders
void BuildShaders()
vtkLineIntegralConvolution2D::GetContext
vtkRenderWindow * GetContext()
vtkLineIntegralConvolution2D::SetLICNShader
void SetLICNShader(vtkShaderProgram2 *prog)
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkTextureObject
abstracts an OpenGL texture object.
Definition: vtkTextureObject.h:40
vtkLineIntegralConvolution2D::ShadersNeedBuild
int ShadersNeedBuild
Definition: vtkLineIntegralConvolution2D.h:372
vtkLineIntegralConvolution2D::EnhancedLIC
int EnhancedLIC
Definition: vtkLineIntegralConvolution2D.h:384
vtkLineIntegralConvolution2D::MaskThreshold
double MaskThreshold
Definition: vtkLineIntegralConvolution2D.h:390
vtkLineIntegralConvolution2D::SetComponentIds
void SetComponentIds(int c0, int c1)
vtkLineIntegralConvolution2D::SetTransformVectors
void SetTransformVectors(int val)
vtkWeakPointer.h
VTK_FLOAT_MAX
#define VTK_FLOAT_MAX
Definition: vtkType.h:140
vtkGetMacro
#define vtkGetMacro(name, type)
Definition: vtkSetGet.h:93
vtkLineIntegralConvolution2D::EnhanceContrast
int EnhanceContrast
Definition: vtkLineIntegralConvolution2D.h:385
VTKRENDERINGLIC_EXPORT
#define VTKRENDERINGLIC_EXPORT
Definition: vtkRenderingLICModule.h:15
vtkLineIntegralConvolution2D::LowContrastEnhancementFactor
double LowContrastEnhancementFactor
Definition: vtkLineIntegralConvolution2D.h:386
vtkObject.h
vtkLineIntegralConvolution2D::LICNShader
vtkShaderProgram2 * LICNShader
Definition: vtkLineIntegralConvolution2D.h:376
vtkBooleanMacro
vtkBooleanMacro(IgnoreDriverBugs, bool)
vtkLineIntegralConvolution2D::EEShader
vtkShaderProgram2 * EEShader
Definition: vtkLineIntegralConvolution2D.h:377
vtkPainterCommunicator
Definition: vtkPainterCommunicator.h:32
vtkLineIntegralConvolution2D
GPU-based implementation of Line Integral Convolution (LIC)
Definition: vtkLineIntegralConvolution2D.h:107
vtkLineIntegralConvolution2D::~vtkLineIntegralConvolution2D
virtual ~vtkLineIntegralConvolution2D()
vtkShaderProgram2
GLSL Program.
Definition: vtkShaderProgram2.h:68
vtkLineIntegralConvolution2D::LICIShader
vtkShaderProgram2 * LICIShader
Definition: vtkLineIntegralConvolution2D.h:375
vtkLineIntegralConvolution2D::AllocateBuffer
vtkTextureObject * AllocateBuffer(unsigned int texSize[2])
vtkLineIntegralConvolution2D::TransformVectors
int TransformVectors
Definition: vtkLineIntegralConvolution2D.h:391
vtkLineIntegralConvolution2D::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
vtkLineIntegralConvolution2D::IsSupported
static bool IsSupported(vtkRenderWindow *renWin)
vtkX3D::extent
@ extent
Definition: vtkX3D.h:345
vtkLineIntegralConvolution2D::SetCommunicator
virtual void SetCommunicator(vtkPainterCommunicator *)
Definition: vtkLineIntegralConvolution2D.h:313
vtkLineIntegralConvolution2D::MaxNoiseValue
double MaxNoiseValue
Definition: vtkLineIntegralConvolution2D.h:394
vtkLineIntegralConvolution2D::New
static vtkLineIntegralConvolution2D * New()
vtkRenderWindow
create a window for renderers to draw into
Definition: vtkRenderWindow.h:89
vtkLineIntegralConvolution2D::LIC0Shader
vtkShaderProgram2 * LIC0Shader
Definition: vtkLineIntegralConvolution2D.h:374
vtkLineIntegralConvolution2D::RenderQuad
void RenderQuad(float computeBounds[4], vtkPixelExtent computeExtent)
vtkFrameBufferObject2
Interface to OpenGL framebuffer object.
Definition: vtkFrameBufferObject2.h:86
vtkLineIntegralConvolution2D::WriteTimerLog
virtual void WriteTimerLog(const char *)
Definition: vtkLineIntegralConvolution2D.h:330
vtkLineIntegralConvolution2D::GetGlobalMinMax
virtual void GetGlobalMinMax(vtkPainterCommunicator *, float &, float &)
Definition: vtkLineIntegralConvolution2D.h:319
vtkWeakPointer< vtkRenderWindow >
vtkLineIntegralConvolution2D::SetNoiseTexParameters
static void SetNoiseTexParameters(vtkTextureObject *noise)
vtkLineIntegralConvolution2D::FBO
vtkFrameBufferObject2 * FBO
Definition: vtkLineIntegralConvolution2D.h:370
vtkLineIntegralConvolution2D::SetAAHShader
void SetAAHShader(vtkShaderProgram2 *prog)
vtkLineIntegralConvolution2D::AntiAlias
int AntiAlias
Definition: vtkLineIntegralConvolution2D.h:388
vtkLineIntegralConvolution2D::VTShader
vtkShaderProgram2 * VTShader
Definition: vtkLineIntegralConvolution2D.h:373
vtkLineIntegralConvolution2D::NumberOfSteps
int NumberOfSteps
Definition: vtkLineIntegralConvolution2D.h:382
vtkLineIntegralConvolution2D::Comm
vtkPainterCommunicator * Comm
Definition: vtkLineIntegralConvolution2D.h:367