VTK
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
vtkSurfaceLICComposite Class Reference

#include <vtkSurfaceLICComposite.h>

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

Public Types

typedef vtkObject Superclass
 
typedef vtkObject Superclass
 
- Public Types inherited from vtkObject
typedef vtkObjectBase 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 *)
 
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 *&)
 
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 *&)
 
- Public Member Functions inherited from vtkObject
vtkObjectNewInstance () const
 
virtual void DebugOn ()
 
virtual void DebugOff ()
 
bool GetDebug ()
 
void SetDebug (bool debugFlag)
 
virtual void Modified ()
 
virtual unsigned long GetMTime ()
 
unsigned long AddObserver (unsigned long event, vtkCommand *, float priority=0.0f)
 
unsigned long AddObserver (const char *event, vtkCommand *, float priority=0.0f)
 
vtkCommandGetCommand (unsigned long tag)
 
void RemoveObserver (vtkCommand *)
 
void RemoveObservers (unsigned long event, vtkCommand *)
 
void RemoveObservers (const char *event, vtkCommand *)
 
int HasObserver (unsigned long event, vtkCommand *)
 
int HasObserver (const char *event, vtkCommand *)
 
void RemoveObserver (unsigned long tag)
 
void RemoveObservers (unsigned long event)
 
void RemoveObservers (const char *event)
 
void RemoveAllObservers ()
 
int HasObserver (unsigned long event)
 
int HasObserver (const char *event)
 
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, void(T::*callback)(), float priority=0.0f)
 
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
 
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, bool(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
 
int InvokeEvent (unsigned long event, void *callData)
 
int InvokeEvent (const char *event, void *callData)
 
int InvokeEvent (unsigned long event)
 
int InvokeEvent (const char *event)
 
- Public Member Functions inherited from vtkObjectBase
const char * GetClassName () const
 
virtual void Delete ()
 
virtual void FastDelete ()
 
void Print (ostream &os)
 
virtual void Register (vtkObjectBase *o)
 
virtual void UnRegister (vtkObjectBase *o)
 
void SetReferenceCount (int)
 
void PrintRevisions (ostream &)
 
virtual void PrintHeader (ostream &os, vtkIndent indent)
 
virtual void PrintTrailer (ostream &os, vtkIndent indent)
 
int GetReferenceCount ()
 

Static Public Member Functions

static vtkSurfaceLICCompositeNew ()
 
static int IsTypeOf (const char *type)
 
static vtkSurfaceLICCompositeSafeDownCast (vtkObjectBase *o)
 
static vtkSurfaceLICCompositeNew ()
 
static int IsTypeOf (const char *type)
 
static vtkSurfaceLICCompositeSafeDownCast (vtkObjectBase *o)
 
static int MakeDecompDisjoint (std::deque< vtkPixelExtent > &in, std::deque< vtkPixelExtent > &out)
 
static int MakeDecompDisjoint (std::deque< vtkPixelExtent > &in, std::deque< vtkPixelExtent > &out)
 
- Static Public Member Functions inherited from vtkObject
static int IsTypeOf (const char *type)
 
static vtkObjectSafeDownCast (vtkObjectBase *o)
 
static vtkObjectNew ()
 
static void BreakOnError ()
 
static void SetGlobalWarningDisplay (int val)
 
static void GlobalWarningDisplayOn ()
 
static void GlobalWarningDisplayOff ()
 
static int GetGlobalWarningDisplay ()
 
- Static Public Member Functions inherited from vtkObjectBase
static int IsTypeOf (const char *name)
 
static vtkObjectBaseNew ()
 

Protected Member Functions

virtual vtkObjectBaseNewInstanceInternal () const
 
 vtkSurfaceLICComposite ()
 
 ~vtkSurfaceLICComposite ()
 
float GetFudgeFactor (int nx[2])
 
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)
 
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 Member Functions inherited from vtkObject
 vtkObject ()
 
virtual ~vtkObject ()
 
virtual void RegisterInternal (vtkObjectBase *, int check)
 
virtual void UnRegisterInternal (vtkObjectBase *, int check)
 
void InternalGrabFocus (vtkCommand *mouseEvents, vtkCommand *keypressEvents=NULL)
 
void InternalReleaseFocus ()
 
- Protected Member Functions inherited from vtkObjectBase
 vtkObjectBase ()
 
virtual ~vtkObjectBase ()
 
virtual void CollectRevisions (ostream &)
 
virtual void ReportReferences (vtkGarbageCollector *)
 
 vtkObjectBase (const vtkObjectBase &)
 
void operator= (const vtkObjectBase &)
 

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
 
- Protected Attributes inherited from vtkObject
bool Debug
 
vtkTimeStamp MTime
 
vtkSubjectHelper * SubjectHelper
 
- Protected Attributes inherited from vtkObjectBase
vtkAtomicInt32 ReferenceCount
 
vtkWeakPointerBase ** WeakPointers
 

Friends

ostream & operator<< (ostream &os, vtkSurfaceLICComposite &ss)
 
ostream & operator<< (ostream &os, vtkSurfaceLICComposite &ss)
 
enum  { COMPOSITE_INPLACE =0, COMPOSITE_INPLACE_DISJOINT, COMPOSITE_BALANCED, COMPOSITE_AUTO }
 
void SetStrategy (int val)
 
int GetStrategy ()
 
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

Definition at line 42 of file vtkSurfaceLICComposite.h.

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.

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

vtkSurfaceLICComposite::vtkSurfaceLICComposite ( )
protected
vtkSurfaceLICComposite::~vtkSurfaceLICComposite ( )
protected
vtkSurfaceLICComposite::vtkSurfaceLICComposite ( )
protected
vtkSurfaceLICComposite::~vtkSurfaceLICComposite ( )
protected

Member Function Documentation

static vtkSurfaceLICComposite* vtkSurfaceLICComposite::New ( )
static
static int vtkSurfaceLICComposite::IsTypeOf ( const char *  type)
static
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.

static vtkSurfaceLICComposite* vtkSurfaceLICComposite::SafeDownCast ( vtkObjectBase o)
static
virtual vtkObjectBase* vtkSurfaceLICComposite::NewInstanceInternal ( ) const
protectedvirtual

Reimplemented from vtkObject.

Reimplemented in vtkPSurfaceLICComposite.

vtkSurfaceLICComposite* vtkSurfaceLICComposite::NewInstance ( ) const
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.

int vtkSurfaceLICComposite::GetStrategy ( )
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 87 of file vtkSurfaceLICComposite.h.

int vtkSurfaceLICComposite::GetNumberOfCompositeExtents ( ) const
inline

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.

const vtkPixelExtent& vtkSurfaceLICComposite::GetDisjointGuardExtent ( 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 110 of file vtkSurfaceLICComposite.h.

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

Definition at line 114 of file vtkSurfaceLICComposite.h.

const vtkPixelExtent& vtkSurfaceLICComposite::GetCompositeExtent ( 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 120 of file vtkSurfaceLICComposite.h.

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

Definition at line 124 of file vtkSurfaceLICComposite.h.

const vtkPixelExtent& vtkSurfaceLICComposite::GetDataSetExtent ( ) const
inline

Get the whole dataset extent (all blocks).

Definition at line 129 of file vtkSurfaceLICComposite.h.

const vtkPixelExtent& vtkSurfaceLICComposite::GetWindowExtent ( ) const
inline

Get the whole window extent.

Definition at line 135 of file vtkSurfaceLICComposite.h.

int vtkSurfaceLICComposite::InitializeCompositeExtents ( float vectors)

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

virtual void vtkSurfaceLICComposite::SetContext ( vtkOpenGLRenderWindow )
inlinevirtual

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.

virtual vtkOpenGLRenderWindow* vtkSurfaceLICComposite::GetContext ( )
inlinevirtual

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 )
inlinevirtual

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 ( )
inlinevirtual

Set the communicator to the default communicator

Definition at line 158 of file vtkSurfaceLICComposite.h.

virtual int vtkSurfaceLICComposite::BuildProgram ( float )
inlinevirtual

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 *&   
)
inlinevirtual

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 *&   
)
inlinevirtual

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

float vtkSurfaceLICComposite::GetFudgeFactor ( int  nx[2])
protected

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

static vtkSurfaceLICComposite* vtkSurfaceLICComposite::New ( )
static
static int vtkSurfaceLICComposite::IsTypeOf ( const char *  type)
static
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.

static vtkSurfaceLICComposite* vtkSurfaceLICComposite::SafeDownCast ( vtkObjectBase o)
static
virtual vtkObjectBase* vtkSurfaceLICComposite::NewInstanceInternal ( ) const
protectedvirtual

Reimplemented from vtkObject.

Reimplemented in vtkPSurfaceLICComposite.

vtkSurfaceLICComposite* vtkSurfaceLICComposite::NewInstance ( ) const
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.

int vtkSurfaceLICComposite::GetStrategy ( )
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 87 of file vtkSurfaceLICComposite.h.

int vtkSurfaceLICComposite::GetNumberOfCompositeExtents ( ) const
inline

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.

const vtkPixelExtent& vtkSurfaceLICComposite::GetDisjointGuardExtent ( 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 110 of file vtkSurfaceLICComposite.h.

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

Definition at line 114 of file vtkSurfaceLICComposite.h.

const vtkPixelExtent& vtkSurfaceLICComposite::GetCompositeExtent ( 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 120 of file vtkSurfaceLICComposite.h.

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

Definition at line 124 of file vtkSurfaceLICComposite.h.

const vtkPixelExtent& vtkSurfaceLICComposite::GetDataSetExtent ( ) const
inline

Get the whole dataset extent (all blocks).

Definition at line 129 of file vtkSurfaceLICComposite.h.

const vtkPixelExtent& vtkSurfaceLICComposite::GetWindowExtent ( ) const
inline

Get the whole window extent.

Definition at line 135 of file vtkSurfaceLICComposite.h.

int vtkSurfaceLICComposite::InitializeCompositeExtents ( float vectors)

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

virtual void vtkSurfaceLICComposite::SetContext ( vtkOpenGLRenderWindow )
inlinevirtual

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.

virtual vtkOpenGLRenderWindow* vtkSurfaceLICComposite::GetContext ( )
inlinevirtual

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 )
inlinevirtual

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 ( )
inlinevirtual

Set the communicator to the default communicator

Definition at line 158 of file vtkSurfaceLICComposite.h.

virtual int vtkSurfaceLICComposite::BuildProgram ( float )
inlinevirtual

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 *&   
)
inlinevirtual

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 *&   
)
inlinevirtual

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

float vtkSurfaceLICComposite::GetFudgeFactor ( int  nx[2])
protected

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
ostream& operator<< ( ostream &  os,
vtkSurfaceLICComposite ss 
)
friend

Member Data Documentation

int vtkSurfaceLICComposite::Pass
protected

Definition at line 244 of file vtkSurfaceLICComposite.h.

vtkPixelExtent vtkSurfaceLICComposite::WindowExt
protected

Definition at line 246 of file vtkSurfaceLICComposite.h.

vtkPixelExtent vtkSurfaceLICComposite::DataSetExt
protected

Definition at line 247 of file vtkSurfaceLICComposite.h.

std::deque< vtkPixelExtent > vtkSurfaceLICComposite::BlockExts
protected

Definition at line 248 of file vtkSurfaceLICComposite.h.

std::deque< vtkPixelExtent > vtkSurfaceLICComposite::CompositeExt
protected

Definition at line 250 of file vtkSurfaceLICComposite.h.

std::deque< vtkPixelExtent > vtkSurfaceLICComposite::GuardExt
protected

Definition at line 251 of file vtkSurfaceLICComposite.h.

std::deque< vtkPixelExtent > vtkSurfaceLICComposite::DisjointGuardExt
protected

Definition at line 252 of file vtkSurfaceLICComposite.h.

int vtkSurfaceLICComposite::Strategy
protected

Definition at line 254 of file vtkSurfaceLICComposite.h.

double vtkSurfaceLICComposite::StepSize
protected

Definition at line 256 of file vtkSurfaceLICComposite.h.

int vtkSurfaceLICComposite::NumberOfSteps
protected

Definition at line 257 of file vtkSurfaceLICComposite.h.

int vtkSurfaceLICComposite::NormalizeVectors
protected

Definition at line 258 of file vtkSurfaceLICComposite.h.

int vtkSurfaceLICComposite::NumberOfGuardLevels
protected

Definition at line 259 of file vtkSurfaceLICComposite.h.

int vtkSurfaceLICComposite::NumberOfEEGuardPixels
protected

Definition at line 260 of file vtkSurfaceLICComposite.h.

int vtkSurfaceLICComposite::NumberOfAAGuardPixels
protected

Definition at line 261 of file vtkSurfaceLICComposite.h.


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