VTK
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Friends
vtkSurfaceLICComposite Class Reference

#include <vtkSurfaceLICComposite.h>

Inheritance diagram for vtkSurfaceLICComposite:
Inheritance graph
[legend]
Collaboration diagram for vtkSurfaceLICComposite:
Collaboration graph
[legend]

List of all members.

Public Types

typedef vtkObject Superclass

Public Member Functions

virtual int IsA (const char *type)
vtkSurfaceLICCompositeNewInstance () const
virtual void PrintSelf (ostream &os, vtkIndent indent)
const std::deque
< vtkPixelExtent > & 
GetGuardExtents () const
const std::deque
< vtkPixelExtent > & 
GetDisjointGuardExtents () const
const std::deque
< vtkPixelExtent > & 
GetCompositeExtents () const
int InitializeCompositeExtents (float *vectors)
virtual void SetCommunicator (vtkPainterCommunicator *)
virtual void RestoreDefaultCommunicator ()
virtual int BuildProgram (float *)
void Initialize (const vtkPixelExtent &winExt, const std::deque< vtkPixelExtent > &blockExts, int strategy, double stepSize, int nSteps, int normalizeVectors, int enhancedLIC, int anitalias)
int GetNumberOfCompositeExtents () const
const vtkPixelExtentGetGuardExtent (int i=0) const
const vtkPixelExtentGetDisjointGuardExtent (int i=0) const
const vtkPixelExtentGetCompositeExtent (int i=0) const
const vtkPixelExtentGetDataSetExtent () const
const vtkPixelExtentGetWindowExtent () const
virtual void SetContext (vtkOpenGLRenderWindow *)
virtual vtkOpenGLRenderWindowGetContext ()
virtual int Gather (void *, int, int, vtkTextureObject *&)
virtual int Scatter (void *, int, int, vtkTextureObject *&)

Static Public Member Functions

static vtkSurfaceLICCompositeNew ()
static int IsTypeOf (const char *type)
static vtkSurfaceLICCompositeSafeDownCast (vtkObjectBase *o)
static int MakeDecompDisjoint (std::deque< vtkPixelExtent > &in, std::deque< vtkPixelExtent > &out)

Protected Member Functions

virtual vtkObjectBaseNewInstanceInternal () const
 vtkSurfaceLICComposite ()
 ~vtkSurfaceLICComposite ()
float GetFudgeFactor (int nx[2])
int MakeDecompDisjoint (const std::deque< vtkPixelExtent > &in, std::deque< vtkPixelExtent > &out, float *vectors)
float VectorMax (const vtkPixelExtent &ext, float *vectors)
int VectorMax (const std::deque< vtkPixelExtent > &exts, float *vectors, std::vector< float > &vMax)
int AddGuardPixels (const std::deque< vtkPixelExtent > &exts, std::deque< vtkPixelExtent > &guardExts, std::deque< vtkPixelExtent > &disjointGuardExts, float *vectors)
void GetPixelBounds (float *rgba, int ni, vtkPixelExtent &ext)

Protected Attributes

int Pass
vtkPixelExtent WindowExt
vtkPixelExtent DataSetExt
std::deque< vtkPixelExtentBlockExts
std::deque< vtkPixelExtentCompositeExt
std::deque< vtkPixelExtentGuardExt
std::deque< vtkPixelExtentDisjointGuardExt
int Strategy
double StepSize
int NumberOfSteps
int NormalizeVectors
int NumberOfGuardLevels
int NumberOfEEGuardPixels
int NumberOfAAGuardPixels

Friends

ostream & operator<< (ostream &os, vtkSurfaceLICComposite &ss)
enum  { COMPOSITE_INPLACE = 0, COMPOSITE_INPLACE_DISJOINT, COMPOSITE_BALANCED, COMPOSITE_AUTO }
void SetStrategy (int val)
int GetStrategy ()

Detailed Description

This class decomposes the image space and shuffles image space data onto the new decomposition with the necessary guard cells to prevent artifacts at the decomposition boundaries. After the image LIC is computed on the new decomposition this class will un-shuffle the computed LIC back onto the original decomposition

Definition at line 38 of file vtkSurfaceLICComposite.h.


Member Typedef Documentation

Reimplemented from vtkObject.

Reimplemented in vtkPSurfaceLICComposite.

Definition at line 42 of file vtkSurfaceLICComposite.h.


Member Enumeration Documentation

anonymous enum

Control the screen space decomposition. The available modes are: INPLACE use the block decomp. This may result in LIC being computed many times for the same pixels and an excessive amount of IPC during compositing if any of the block extents cover or intersect a number of block extents. The input data needs to be shuffled but not unshuffled since for overlapping regions LIC is computed by all proccesses that overlap. If there is very little overlap between block extents then this method is superior since no unshuffle is needed. INPLACE_DISJOINT use a disjoint version of the block decomp. This will leave non-overlapping data in place, reasigning overlaping regions so that LIC is computed once for each pixel on the screen. An unshuffle step to move data in overlapping region to all processes that overlap. BALANCED move to a new decomp where each rank gets an equal number of pixels. This ensures the best load balancing during LIC and that LIC is computed once for each pixel. In the worst case each pixel will be shuffled and unshuffled. AUTO Use a heuristic to select the mode.

Enumerator:
COMPOSITE_INPLACE 
COMPOSITE_INPLACE_DISJOINT 
COMPOSITE_BALANCED 
COMPOSITE_AUTO 

Definition at line 80 of file vtkSurfaceLICComposite.h.


Constructor & Destructor Documentation


Member Function Documentation

Create an object with Debug turned off, modified time initialized to zero, and reference counting on.

Reimplemented from vtkObject.

Reimplemented in vtkPSurfaceLICComposite.

static int vtkSurfaceLICComposite::IsTypeOf ( const char *  name) [static]

Return 1 if this class type is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeMacro found in vtkSetGet.h.

Reimplemented from vtkObject.

Reimplemented in vtkPSurfaceLICComposite.

virtual int vtkSurfaceLICComposite::IsA ( const char *  name) [virtual]

Return 1 if this class is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeMacro found in vtkSetGet.h.

Reimplemented from vtkObject.

Reimplemented in vtkPSurfaceLICComposite.

Reimplemented from vtkObject.

Reimplemented in vtkPSurfaceLICComposite.

virtual vtkObjectBase* vtkSurfaceLICComposite::NewInstanceInternal ( ) const [protected, virtual]

Reimplemented from vtkObject.

Reimplemented in vtkPSurfaceLICComposite.

Reimplemented from vtkObject.

Reimplemented in vtkPSurfaceLICComposite.

virtual void vtkSurfaceLICComposite::PrintSelf ( ostream &  os,
vtkIndent  indent 
) [virtual]

Methods invoked by print to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from vtkObject.

Reimplemented in vtkPSurfaceLICComposite.

void vtkSurfaceLICComposite::Initialize ( const vtkPixelExtent winExt,
const std::deque< vtkPixelExtent > &  blockExts,
int  strategy,
double  stepSize,
int  nSteps,
int  normalizeVectors,
int  enhancedLIC,
int  anitalias 
)

Initialize the object based on the following description of the blocks projected onto the render window. wholeExt describes the window size, originalExts describe each block's extent in window coords. stepSize is the window coordiniate integration step size. when inplace is true compositing happens on the original extent.

void vtkSurfaceLICComposite::SetStrategy ( int  val) [inline]

Control the screen space decomposition. The available modes are: INPLACE use the block decomp. This may result in LIC being computed many times for the same pixels and an excessive amount of IPC during compositing if any of the block extents cover or intersect a number of block extents. The input data needs to be shuffled but not unshuffled since for overlapping regions LIC is computed by all proccesses that overlap. If there is very little overlap between block extents then this method is superior since no unshuffle is needed. INPLACE_DISJOINT use a disjoint version of the block decomp. This will leave non-overlapping data in place, reasigning overlaping regions so that LIC is computed once for each pixel on the screen. An unshuffle step to move data in overlapping region to all processes that overlap. BALANCED move to a new decomp where each rank gets an equal number of pixels. This ensures the best load balancing during LIC and that LIC is computed once for each pixel. In the worst case each pixel will be shuffled and unshuffled. AUTO Use a heuristic to select the mode.

Definition at line 86 of file vtkSurfaceLICComposite.h.

Control the screen space decomposition. The available modes are: INPLACE use the block decomp. This may result in LIC being computed many times for the same pixels and an excessive amount of IPC during compositing if any of the block extents cover or intersect a number of block extents. The input data needs to be shuffled but not unshuffled since for overlapping regions LIC is computed by all proccesses that overlap. If there is very little overlap between block extents then this method is superior since no unshuffle is needed. INPLACE_DISJOINT use a disjoint version of the block decomp. This will leave non-overlapping data in place, reasigning overlaping regions so that LIC is computed once for each pixel on the screen. An unshuffle step to move data in overlapping region to all processes that overlap. BALANCED move to a new decomp where each rank gets an equal number of pixels. This ensures the best load balancing during LIC and that LIC is computed once for each pixel. In the worst case each pixel will be shuffled and unshuffled. AUTO Use a heuristic to select the mode.

Definition at line 87 of file vtkSurfaceLICComposite.h.

Get the number of new extents assigned to this rank after the decomposition.

Definition at line 93 of file vtkSurfaceLICComposite.h.

const vtkPixelExtent& vtkSurfaceLICComposite::GetGuardExtent ( int  i = 0) const [inline]

Get the extent of the domain over which to compute the LIC. This can be querried only after the Composite takes place.

Definition at line 100 of file vtkSurfaceLICComposite.h.

const std::deque<vtkPixelExtent>& vtkSurfaceLICComposite::GetGuardExtents ( ) const [inline]

Definition at line 104 of file vtkSurfaceLICComposite.h.

Get the extent of the domain over which to compute the LIC. This can be querried only after the Composite takes place.

Definition at line 110 of file vtkSurfaceLICComposite.h.

const std::deque<vtkPixelExtent>& vtkSurfaceLICComposite::GetDisjointGuardExtents ( ) const [inline]

Definition at line 114 of file vtkSurfaceLICComposite.h.

Get the extent of the domain over which to compute the LIC. This can be querried only after the Composite takes place.

Definition at line 120 of file vtkSurfaceLICComposite.h.

const std::deque<vtkPixelExtent>& vtkSurfaceLICComposite::GetCompositeExtents ( ) const [inline]

Definition at line 124 of file vtkSurfaceLICComposite.h.

Get the whole dataset extent (all blocks).

Definition at line 129 of file vtkSurfaceLICComposite.h.

Get the whole window extent.

Definition at line 135 of file vtkSurfaceLICComposite.h.

Set up for a serial run, makes the decomp disjoint and adds requisite guard pixles.

virtual void vtkSurfaceLICComposite::SetContext ( vtkOpenGLRenderWindow ) [inline, virtual]

Set the rendering context. Must set prior to use. Reference is not held, so caller must ensure the renderer is not destroyed durring use.

Reimplemented in vtkPSurfaceLICComposite.

Definition at line 147 of file vtkSurfaceLICComposite.h.

Set the rendering context. Must set prior to use. Reference is not held, so caller must ensure the renderer is not destroyed durring use.

Reimplemented in vtkPSurfaceLICComposite.

Definition at line 148 of file vtkSurfaceLICComposite.h.

virtual void vtkSurfaceLICComposite::SetCommunicator ( vtkPainterCommunicator ) [inline, virtual]

Set the communicator for parallel communication. A duplicate is not made. It is up to the caller to manage the life of the communicator such that it is around while this class needs it and is released after.

Reimplemented in vtkPSurfaceLICComposite.

Definition at line 155 of file vtkSurfaceLICComposite.h.

virtual void vtkSurfaceLICComposite::RestoreDefaultCommunicator ( ) [inline, virtual]

Set the communicator to the default communicator

Definition at line 158 of file vtkSurfaceLICComposite.h.

virtual int vtkSurfaceLICComposite::BuildProgram ( float ) [inline, virtual]

Build programs to move data to the new decomp In parallel THIS IS A COLLECTIVE OPERATION

Reimplemented in vtkPSurfaceLICComposite.

Definition at line 162 of file vtkSurfaceLICComposite.h.

virtual int vtkSurfaceLICComposite::Gather ( void *  ,
int  ,
int  ,
vtkTextureObject *&   
) [inline, virtual]

Move a single buffer from the geometry decomp to the LIC decomp. THIS IS A COLLECTIVE OPERATION

Reimplemented in vtkPSurfaceLICComposite.

Definition at line 167 of file vtkSurfaceLICComposite.h.

virtual int vtkSurfaceLICComposite::Scatter ( void *  ,
int  ,
int  ,
vtkTextureObject *&   
) [inline, virtual]

Move a single buffer from the LIC decomp to the geometry decomp In parallel THIS IS A COLLECTIVE OPERATION

Reimplemented in vtkPSurfaceLICComposite.

Definition at line 174 of file vtkSurfaceLICComposite.h.

static int vtkSurfaceLICComposite::MakeDecompDisjoint ( std::deque< vtkPixelExtent > &  in,
std::deque< vtkPixelExtent > &  out 
) [static]

Make a decomposition disjoint with respect to itself. Extents are removed from the input array and disjoint extents are appened onto the output array. This is a local operation.

int vtkSurfaceLICComposite::MakeDecompDisjoint ( const std::deque< vtkPixelExtent > &  in,
std::deque< vtkPixelExtent > &  out,
float vectors 
) [protected]

For serial run. Make a decomposition disjoint. Sorts extents and processes largest to smallest , repeatedly subtracting smaller remaining blocks from the largest remaining. Each extent in the new disjoint set is shrunk to tightly bound the vector data, extents with empty vectors are removed. This is a local operation since vector field is local.

float vtkSurfaceLICComposite::VectorMax ( const vtkPixelExtent ext,
float vectors 
) [protected]

Compute max(V) on the given extent.

int vtkSurfaceLICComposite::VectorMax ( const std::deque< vtkPixelExtent > &  exts,
float vectors,
std::vector< float > &  vMax 
) [protected]

Compute max(V) on a set of extents. Neighboring extents are including in the computation.

int vtkSurfaceLICComposite::AddGuardPixels ( const std::deque< vtkPixelExtent > &  exts,
std::deque< vtkPixelExtent > &  guardExts,
std::deque< vtkPixelExtent > &  disjointGuardExts,
float vectors 
) [protected]

Add guard pixels (Serial run)

void vtkSurfaceLICComposite::GetPixelBounds ( float rgba,
int  ni,
vtkPixelExtent ext 
) [protected]

shrink pixel extent based on non-zero alpha channel values

factor for determining extra padding for guard pixels. depends on window aspect ratio because of anisotropic transform to texture space. see note in implementation.


Friends And Related Function Documentation

ostream& operator<< ( ostream &  os,
vtkSurfaceLICComposite ss 
) [friend]

Member Data Documentation

Definition at line 244 of file vtkSurfaceLICComposite.h.

Definition at line 246 of file vtkSurfaceLICComposite.h.

Definition at line 247 of file vtkSurfaceLICComposite.h.

Definition at line 248 of file vtkSurfaceLICComposite.h.

Definition at line 250 of file vtkSurfaceLICComposite.h.

Definition at line 251 of file vtkSurfaceLICComposite.h.

Definition at line 252 of file vtkSurfaceLICComposite.h.

Definition at line 254 of file vtkSurfaceLICComposite.h.

Definition at line 256 of file vtkSurfaceLICComposite.h.

Definition at line 257 of file vtkSurfaceLICComposite.h.

Definition at line 258 of file vtkSurfaceLICComposite.h.

Definition at line 259 of file vtkSurfaceLICComposite.h.

Definition at line 260 of file vtkSurfaceLICComposite.h.

Definition at line 261 of file vtkSurfaceLICComposite.h.


The documentation for this class was generated from the following file: