#include <vtkVolumeTextureMapper3D.h>
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)
Definition at line 91 of file vtkVolumeTextureMapper3D.h.
Reimplemented from vtkVolumeMapper.
Reimplemented in vtkOpenGLVolumeTextureMapper3D.
Definition at line 94 of file vtkVolumeTextureMapper3D.h.
anonymous enum |
What rendering method is supported?
Definition at line 145 of file vtkVolumeTextureMapper3D.h.
vtkVolumeTextureMapper3D::vtkVolumeTextureMapper3D | ( | ) | [protected] |
vtkVolumeTextureMapper3D::~vtkVolumeTextureMapper3D | ( | ) | [protected] |
virtual const char* vtkVolumeTextureMapper3D::GetClassName | ( | ) | [virtual] |
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 vtkTypeMacro 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 vtkTypeMacro found in vtkSetGet.h.
Reimplemented from vtkVolumeMapper.
Reimplemented in vtkOpenGLVolumeTextureMapper3D.
static vtkVolumeTextureMapper3D* vtkVolumeTextureMapper3D::SafeDownCast | ( | vtkObject * | o | ) | [static] |
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 * | , | |
vtkRenderer * | vtkNotUsedr | |||
) | [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.
Definition at line 122 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 141 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 161 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 163 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.
virtual void vtkVolumeTextureMapper3D::SetUseCompressedTexture | ( | bool | ) | [virtual] |
Set/Get if the mapper use compressed textures (if supported by the hardware). Initial value is false. There are two reasons to use compressed textures: 1. rendering can be 4 times faster. 2. It saves some VRAM. There is one reason to not use compressed textures: quality may be lower than with uncompressed textures.
virtual bool vtkVolumeTextureMapper3D::GetUseCompressedTexture | ( | ) | [virtual] |
Set/Get if the mapper use compressed textures (if supported by the hardware). Initial value is false. There are two reasons to use compressed textures: 1. rendering can be 4 times faster. 2. It saves some VRAM. There is one reason to not use compressed textures: quality may be lower than with uncompressed textures.
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 | vtkNotUsed(size)[3], | |
int | vtkNotUsedcomponents | |||
) | [inline, protected, virtual] |
Impemented in subclass - check is texture size is OK. BTX
Definition at line 242 of file vtkVolumeTextureMapper3D.h.
float* vtkVolumeTextureMapper3D::PolygonBuffer [protected] |
Definition at line 183 of file vtkVolumeTextureMapper3D.h.
float* vtkVolumeTextureMapper3D::IntersectionBuffer [protected] |
Definition at line 184 of file vtkVolumeTextureMapper3D.h.
int vtkVolumeTextureMapper3D::NumberOfPolygons [protected] |
Definition at line 185 of file vtkVolumeTextureMapper3D.h.
int vtkVolumeTextureMapper3D::BufferSize [protected] |
Definition at line 186 of file vtkVolumeTextureMapper3D.h.
unsigned char* vtkVolumeTextureMapper3D::Volume1 [protected] |
Definition at line 188 of file vtkVolumeTextureMapper3D.h.
unsigned char* vtkVolumeTextureMapper3D::Volume2 [protected] |
Definition at line 189 of file vtkVolumeTextureMapper3D.h.
unsigned char* vtkVolumeTextureMapper3D::Volume3 [protected] |
Definition at line 190 of file vtkVolumeTextureMapper3D.h.
int vtkVolumeTextureMapper3D::VolumeSize [protected] |
Definition at line 191 of file vtkVolumeTextureMapper3D.h.
int vtkVolumeTextureMapper3D::VolumeComponents [protected] |
Definition at line 192 of file vtkVolumeTextureMapper3D.h.
int vtkVolumeTextureMapper3D::VolumeDimensions[3] [protected] |
Definition at line 193 of file vtkVolumeTextureMapper3D.h.
float vtkVolumeTextureMapper3D::VolumeSpacing[3] [protected] |
Definition at line 194 of file vtkVolumeTextureMapper3D.h.
float vtkVolumeTextureMapper3D::SampleDistance [protected] |
Definition at line 196 of file vtkVolumeTextureMapper3D.h.
float vtkVolumeTextureMapper3D::ActualSampleDistance [protected] |
Definition at line 197 of file vtkVolumeTextureMapper3D.h.
vtkImageData* vtkVolumeTextureMapper3D::SavedTextureInput [protected] |
Definition at line 199 of file vtkVolumeTextureMapper3D.h.
Definition at line 200 of file vtkVolumeTextureMapper3D.h.
Definition at line 202 of file vtkVolumeTextureMapper3D.h.
Definition at line 203 of file vtkVolumeTextureMapper3D.h.
Definition at line 204 of file vtkVolumeTextureMapper3D.h.
Definition at line 205 of file vtkVolumeTextureMapper3D.h.
int vtkVolumeTextureMapper3D::SavedColorChannels [protected] |
Definition at line 206 of file vtkVolumeTextureMapper3D.h.
float vtkVolumeTextureMapper3D::SavedSampleDistance [protected] |
Definition at line 207 of file vtkVolumeTextureMapper3D.h.
float vtkVolumeTextureMapper3D::SavedScalarOpacityDistance [protected] |
Definition at line 208 of file vtkVolumeTextureMapper3D.h.
unsigned char vtkVolumeTextureMapper3D::ColorLookup[65536 *4] [protected] |
Definition at line 210 of file vtkVolumeTextureMapper3D.h.
unsigned char vtkVolumeTextureMapper3D::AlphaLookup[65536] [protected] |
Definition at line 211 of file vtkVolumeTextureMapper3D.h.
float vtkVolumeTextureMapper3D::TempArray1[3 *4096] [protected] |
Definition at line 212 of file vtkVolumeTextureMapper3D.h.
float vtkVolumeTextureMapper3D::TempArray2[4096] [protected] |
Definition at line 213 of file vtkVolumeTextureMapper3D.h.
int vtkVolumeTextureMapper3D::ColorTableSize [protected] |
Definition at line 214 of file vtkVolumeTextureMapper3D.h.
float vtkVolumeTextureMapper3D::ColorTableScale [protected] |
Definition at line 215 of file vtkVolumeTextureMapper3D.h.
float vtkVolumeTextureMapper3D::ColorTableOffset [protected] |
Definition at line 216 of file vtkVolumeTextureMapper3D.h.
unsigned char vtkVolumeTextureMapper3D::DiffuseLookup[65536 *4] [protected] |
Definition at line 218 of file vtkVolumeTextureMapper3D.h.
unsigned char vtkVolumeTextureMapper3D::SpecularLookup[65536 *4] [protected] |
Definition at line 219 of file vtkVolumeTextureMapper3D.h.
Definition at line 221 of file vtkVolumeTextureMapper3D.h.
Definition at line 222 of file vtkVolumeTextureMapper3D.h.
int vtkVolumeTextureMapper3D::RenderMethod [protected] |
Definition at line 224 of file vtkVolumeTextureMapper3D.h.
int vtkVolumeTextureMapper3D::PreferredRenderMethod [protected] |
Definition at line 225 of file vtkVolumeTextureMapper3D.h.
bool vtkVolumeTextureMapper3D::UseCompressedTexture [protected] |
Definition at line 226 of file vtkVolumeTextureMapper3D.h.
bool vtkVolumeTextureMapper3D::SupportsNonPowerOfTwoTextures [protected] |
Reimplemented in vtkOpenGLVolumeTextureMapper3D.
Definition at line 228 of file vtkVolumeTextureMapper3D.h.