vtkVolumeTextureMapper3D Class Reference

#include <vtkVolumeTextureMapper3D.h>

Inheritance diagram for vtkVolumeTextureMapper3D:

Inheritance graph
[legend]
Collaboration diagram for vtkVolumeTextureMapper3D:

Collaboration graph
[legend]

List of all members.


Detailed Description

volume render with 3D texture mapping

vtkVolumeTextureMapper3D renders a volume using 3D texture mapping. This class is actually an abstract superclass - with all the actual work done by vtkOpenGLVolumeTextureMapper3D.

This mappers currently supports:

This mapper does not support:

Internally, this mapper will potentially change the resolution of the input data. The data will be resampled to be a power of two in each direction, and also no greater than 128*256*256 voxels (any aspect) for one or two component data, or 128*128*256 voxels (any aspect) for four component data. The limits are currently hardcoded after a check using the GL_PROXY_TEXTURE3D because some graphics drivers were always responding "yes" to the proxy call despite not being able to allocate that much texture memory.

Currently, calculations are computed using 8 bits per RGBA channel. In the future this should be expanded to handle newer boards that can support 15 bit float compositing.

This mapper supports two main families of graphics hardware: nvidia and ATI. There are two different implementations of 3D texture mapping used - one based on nvidia's GL_NV_texture_shader2 and GL_NV_register_combiners2 extension, and one based on ATI's GL_ATI_fragment_shader (supported also by some nvidia boards) To use this class in an application that will run on various hardware configurations, you should have a back-up volume rendering method. You should create a vtkVolumeTextureMapper3D, assign its input, make sure you have a current OpenGL context (you've rendered at least once), then call IsRenderSupported with a vtkVolumeProperty as an argument. This method will return 0 if the input has more than one independent component, or if the graphics hardware does not support the set of required extensions for using at least one of the two implemented methods (nvidia or ati)

See also:
vtkVolumeMapper
Tests:
vtkVolumeTextureMapper3D (Tests)

Definition at line 82 of file vtkVolumeTextureMapper3D.h.


Public Types

typedef vtkVolumeMapper Superclass
enum  { FRAGMENT_PROGRAM_METHOD = 0, NVIDIA_METHOD = 1, ATI_METHOD = 2, NO_METHOD = 3 }

Public Member Functions

virtual const char * GetClassName ()
virtual int IsA (const char *type)
void PrintSelf (ostream &os, vtkIndent indent)
virtual int IsRenderSupported (vtkVolumeProperty *)
virtual void Render (vtkRenderer *, vtkVolume *)
virtual void SetSampleDistance (float)
virtual float GetSampleDistance ()
virtual int * GetVolumeDimensions ()
virtual void GetVolumeDimensions (int data[3])
virtual float * GetVolumeSpacing ()
virtual void GetVolumeSpacing (float data[3])
virtual int GetNumberOfPolygons ()
virtual float GetActualSampleDistance ()
virtual void SetPreferredRenderMethod (int)
void SetPreferredMethodToFragmentProgram ()
void SetPreferredMethodToNVidia ()
virtual int GetPreferredRenderMethod ()

Static Public Member Functions

static int IsTypeOf (const char *type)
static vtkVolumeTextureMapper3DSafeDownCast (vtkObject *o)
static vtkVolumeTextureMapper3DNew ()

Protected Member Functions

 vtkVolumeTextureMapper3D ()
 ~vtkVolumeTextureMapper3D ()
void ComputePolygons (vtkRenderer *ren, vtkVolume *vol, double bounds[6])
int UpdateVolumes (vtkVolume *)
int UpdateColorLookup (vtkVolume *)
virtual int IsTextureSizeSupported (int[3])

Protected Attributes

float * PolygonBuffer
float * IntersectionBuffer
int NumberOfPolygons
int BufferSize
unsigned char * Volume1
unsigned char * Volume2
unsigned char * Volume3
int VolumeSize
int VolumeComponents
int VolumeDimensions [3]
float VolumeSpacing [3]
float SampleDistance
float ActualSampleDistance
vtkImageDataSavedTextureInput
vtkImageDataSavedParametersInput
vtkColorTransferFunctionSavedRGBFunction
vtkPiecewiseFunctionSavedGrayFunction
vtkPiecewiseFunctionSavedScalarOpacityFunction
vtkPiecewiseFunctionSavedGradientOpacityFunction
int SavedColorChannels
float SavedSampleDistance
float SavedScalarOpacityDistance
unsigned char ColorLookup [65536 *4]
unsigned char AlphaLookup [65536]
float TempArray1 [3 *4096]
float TempArray2 [4096]
int ColorTableSize
float ColorTableScale
float ColorTableOffset
unsigned char DiffuseLookup [65536 *4]
unsigned char SpecularLookup [65536 *4]
vtkTimeStamp SavedTextureMTime
vtkTimeStamp SavedParametersMTime
int RenderMethod
int PreferredRenderMethod

Member Typedef Documentation

Reimplemented from vtkVolumeMapper.

Reimplemented in vtkOpenGLVolumeTextureMapper3D.

Definition at line 85 of file vtkVolumeTextureMapper3D.h.


Member Enumeration Documentation

anonymous enum

What rendering method is supported?

Enumerator:
FRAGMENT_PROGRAM_METHOD 
NVIDIA_METHOD 
ATI_METHOD 
NO_METHOD 

Definition at line 132 of file vtkVolumeTextureMapper3D.h.


Constructor & Destructor Documentation

vtkVolumeTextureMapper3D::vtkVolumeTextureMapper3D (  )  [protected]

vtkVolumeTextureMapper3D::~vtkVolumeTextureMapper3D (  )  [protected]


Member Function Documentation

virtual const char* vtkVolumeTextureMapper3D::GetClassName (  )  [virtual]

Reimplemented from vtkVolumeMapper.

Reimplemented in vtkOpenGLVolumeTextureMapper3D.

static int vtkVolumeTextureMapper3D::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 vtkTypeRevisionMacro found in vtkSetGet.h.

Reimplemented from vtkVolumeMapper.

Reimplemented in vtkOpenGLVolumeTextureMapper3D.

virtual int vtkVolumeTextureMapper3D::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 vtkTypeRevisionMacro found in vtkSetGet.h.

Reimplemented from vtkVolumeMapper.

Reimplemented in vtkOpenGLVolumeTextureMapper3D.

static vtkVolumeTextureMapper3D* vtkVolumeTextureMapper3D::SafeDownCast ( vtkObject o  )  [static]

Reimplemented from vtkVolumeMapper.

Reimplemented in vtkOpenGLVolumeTextureMapper3D.

void vtkVolumeTextureMapper3D::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 vtkVolumeMapper.

Reimplemented in vtkOpenGLVolumeTextureMapper3D.

static vtkVolumeTextureMapper3D* vtkVolumeTextureMapper3D::New (  )  [static]

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

Reimplemented from vtkAlgorithm.

Reimplemented in vtkOpenGLVolumeTextureMapper3D.

virtual void vtkVolumeTextureMapper3D::SetSampleDistance ( float   )  [virtual]

The distance at which to space sampling planes. This may not be honored for interactive renders. An interactive render is defined as one that has less than 1 second of allocated render time.

virtual float vtkVolumeTextureMapper3D::GetSampleDistance (  )  [virtual]

The distance at which to space sampling planes. This may not be honored for interactive renders. An interactive render is defined as one that has less than 1 second of allocated render time.

virtual int* vtkVolumeTextureMapper3D::GetVolumeDimensions (  )  [virtual]

These are the dimensions of the 3D texture

virtual void vtkVolumeTextureMapper3D::GetVolumeDimensions ( int  data[3]  )  [virtual]

These are the dimensions of the 3D texture

virtual float* vtkVolumeTextureMapper3D::GetVolumeSpacing (  )  [virtual]

This is the spacing of the 3D texture

virtual void vtkVolumeTextureMapper3D::GetVolumeSpacing ( float  data[3]  )  [virtual]

This is the spacing of the 3D texture

virtual int vtkVolumeTextureMapper3D::IsRenderSupported ( vtkVolumeProperty  )  [inline, virtual]

Based on hardware and properties, we may or may not be able to render using 3D texture mapping. This indicates if 3D texture mapping is supported by the hardware, and if the other extensions necessary to support the specific properties are available.

Reimplemented in vtkOpenGLVolumeTextureMapper3D.

Definition at line 112 of file vtkVolumeTextureMapper3D.h.

virtual int vtkVolumeTextureMapper3D::GetNumberOfPolygons (  )  [virtual]

Allow access to the number of polygons used for the rendering.

virtual float vtkVolumeTextureMapper3D::GetActualSampleDistance (  )  [virtual]

Allow access to the actual sample distance used to render the image.

virtual void vtkVolumeTextureMapper3D::Render ( vtkRenderer ,
vtkVolume  
) [inline, virtual]

WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERING PROCESS Render the volume

Implements vtkVolumeMapper.

Reimplemented in vtkOpenGLVolumeTextureMapper3D.

Definition at line 128 of file vtkVolumeTextureMapper3D.h.

virtual void vtkVolumeTextureMapper3D::SetPreferredRenderMethod ( int   )  [virtual]

Set the preferred render method. If it is supported, this one will be used. Don't allow ATI_METHOD - it is not actually supported.

void vtkVolumeTextureMapper3D::SetPreferredMethodToFragmentProgram (  )  [inline]

Set the preferred render method. If it is supported, this one will be used. Don't allow ATI_METHOD - it is not actually supported.

Definition at line 148 of file vtkVolumeTextureMapper3D.h.

void vtkVolumeTextureMapper3D::SetPreferredMethodToNVidia (  )  [inline]

Set the preferred render method. If it is supported, this one will be used. Don't allow ATI_METHOD - it is not actually supported.

Definition at line 150 of file vtkVolumeTextureMapper3D.h.

virtual int vtkVolumeTextureMapper3D::GetPreferredRenderMethod (  )  [virtual]

Set the preferred render method. If it is supported, this one will be used. Don't allow ATI_METHOD - it is not actually supported.

void vtkVolumeTextureMapper3D::ComputePolygons ( vtkRenderer ren,
vtkVolume vol,
double  bounds[6] 
) [protected]

For the given viewing direction, compute the set of polygons.

int vtkVolumeTextureMapper3D::UpdateVolumes ( vtkVolume  )  [protected]

Update the internal RGBA representation of the volume. Return 1 if anything change, 0 if nothing changed.

int vtkVolumeTextureMapper3D::UpdateColorLookup ( vtkVolume  )  [protected]

Update the internal RGBA representation of the volume. Return 1 if anything change, 0 if nothing changed.

virtual int vtkVolumeTextureMapper3D::IsTextureSizeSupported ( int  [3]  )  [inline, protected, virtual]

Impemented in subclass - check is texture size is OK. BTX

Reimplemented in vtkOpenGLVolumeTextureMapper3D.

Definition at line 216 of file vtkVolumeTextureMapper3D.h.


Member Data Documentation

Definition at line 160 of file vtkVolumeTextureMapper3D.h.

Definition at line 161 of file vtkVolumeTextureMapper3D.h.

Definition at line 162 of file vtkVolumeTextureMapper3D.h.

Definition at line 163 of file vtkVolumeTextureMapper3D.h.

unsigned char* vtkVolumeTextureMapper3D::Volume1 [protected]

Definition at line 165 of file vtkVolumeTextureMapper3D.h.

unsigned char* vtkVolumeTextureMapper3D::Volume2 [protected]

Definition at line 166 of file vtkVolumeTextureMapper3D.h.

unsigned char* vtkVolumeTextureMapper3D::Volume3 [protected]

Definition at line 167 of file vtkVolumeTextureMapper3D.h.

Definition at line 168 of file vtkVolumeTextureMapper3D.h.

Definition at line 169 of file vtkVolumeTextureMapper3D.h.

Definition at line 170 of file vtkVolumeTextureMapper3D.h.

Definition at line 171 of file vtkVolumeTextureMapper3D.h.

Definition at line 173 of file vtkVolumeTextureMapper3D.h.

Definition at line 174 of file vtkVolumeTextureMapper3D.h.

Definition at line 176 of file vtkVolumeTextureMapper3D.h.

Definition at line 177 of file vtkVolumeTextureMapper3D.h.

Definition at line 179 of file vtkVolumeTextureMapper3D.h.

Definition at line 180 of file vtkVolumeTextureMapper3D.h.

Definition at line 181 of file vtkVolumeTextureMapper3D.h.

Definition at line 182 of file vtkVolumeTextureMapper3D.h.

Definition at line 183 of file vtkVolumeTextureMapper3D.h.

Definition at line 184 of file vtkVolumeTextureMapper3D.h.

Definition at line 185 of file vtkVolumeTextureMapper3D.h.

unsigned char vtkVolumeTextureMapper3D::ColorLookup[65536 *4] [protected]

Definition at line 187 of file vtkVolumeTextureMapper3D.h.

unsigned char vtkVolumeTextureMapper3D::AlphaLookup[65536] [protected]

Definition at line 188 of file vtkVolumeTextureMapper3D.h.

float vtkVolumeTextureMapper3D::TempArray1[3 *4096] [protected]

Definition at line 189 of file vtkVolumeTextureMapper3D.h.

float vtkVolumeTextureMapper3D::TempArray2[4096] [protected]

Definition at line 190 of file vtkVolumeTextureMapper3D.h.

Definition at line 191 of file vtkVolumeTextureMapper3D.h.

Definition at line 192 of file vtkVolumeTextureMapper3D.h.

Definition at line 193 of file vtkVolumeTextureMapper3D.h.

unsigned char vtkVolumeTextureMapper3D::DiffuseLookup[65536 *4] [protected]

Definition at line 195 of file vtkVolumeTextureMapper3D.h.

unsigned char vtkVolumeTextureMapper3D::SpecularLookup[65536 *4] [protected]

Definition at line 196 of file vtkVolumeTextureMapper3D.h.

Definition at line 198 of file vtkVolumeTextureMapper3D.h.

Definition at line 199 of file vtkVolumeTextureMapper3D.h.

Definition at line 201 of file vtkVolumeTextureMapper3D.h.

Definition at line 202 of file vtkVolumeTextureMapper3D.h.


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

Generated on Sat Dec 27 13:58:47 2008 for VTK by  doxygen 1.5.6