Go to the documentation of this file.
69 #ifndef vtkFixedPointVolumeRayCastMapper_h
70 #define vtkFixedPointVolumeRayCastMapper_h
75 #define VTKKW_FP_SHIFT 15
76 #define VTKKW_FPMM_SHIFT 17
77 #define VTKKW_FP_MASK 0x7fff
78 #define VTKKW_FP_SCALE 32767.0
220 unsigned int ToFixedPointPosition(
float val );
221 void ToFixedPointPosition(
float in[3],
unsigned int out[3] );
222 unsigned int ToFixedPointDirection(
float dir );
223 void ToFixedPointDirection(
float in[3],
unsigned int out[3] );
224 void FixedPointIncrement(
unsigned int position[3],
unsigned int increment[3] );
225 void GetFloatTripleFromPointer(
float v[3],
float *ptr );
226 void GetUIntTripleFromPointer(
unsigned int v[3],
unsigned int *ptr );
227 void ShiftVectorDown(
unsigned int in[3],
unsigned int out[3] );
228 int CheckMinMaxVolumeFlag(
unsigned int pos[3],
int c );
229 int CheckMIPMinMaxVolumeFlag(
unsigned int pos[3],
int c,
unsigned short maxIdx,
int flip );
231 void LookupColorUC(
unsigned short *colorTable,
232 unsigned short *scalarOpacityTable,
233 unsigned short index,
234 unsigned char color[4] );
235 void LookupDependentColorUC(
unsigned short *colorTable,
236 unsigned short *scalarOpacityTable,
237 unsigned short index[4],
239 unsigned char color[4] );
240 void LookupAndCombineIndependentColorsUC(
241 unsigned short *colorTable[4],
242 unsigned short *scalarOpacityTable[4],
243 unsigned short index[4],
246 unsigned char color[4] );
247 int CheckIfCropped(
unsigned int pos[3] );
279 unsigned int *numSteps );
294 double *,
double *,
int * );
304 double viewDirection[3],
314 {
return this->RetrieveRenderTime( ren, vol ); }
316 {
return this->RetrieveRenderTime( ren ); }
370 double volumeSpacing[3],
376 int imageFlag,
int rowBoundsFlag,
377 int volumeExtent[6]);
423 int SavedColorChannels[4];
424 float SavedScalarOpacityDistance[4];
436 unsigned short ScalarOpacityTable[4][32768];
437 unsigned short GradientOpacityTable[4][256];
442 float GradientMagnitudeScale[4];
443 float GradientMagnitudeShift[4];
458 unsigned short DiffuseShadingTable [4][65536*3];
459 unsigned short SpecularShadingTable[4][65536*3];
472 float rayDirection[3],
485 int numClippingPlanes,
486 float *clippingPlanes );
488 unsigned int FixedPointCroppingRegionPlanes[6];
489 unsigned int CroppingRegionMask[27];
503 float ViewToVoxelsArray[16];
504 float WorldToVoxelsArray[16];
505 float VoxelsToWorldArray[16];
507 double CroppingBounds[6];
512 double SavedSpacing[3];
517 int MinMaxVolumeSize[4];
562 out[0] = ((
in[0]<0.0)?
566 out[1] = ((
in[1]<0.0)?
570 out[2] = ((
in[2]<0.0)?
578 if ( increment[0]&0x80000000 )
580 position[0] += (increment[0]&0x7fffffff);
586 if ( increment[1]&0x80000000 )
588 position[1] += (increment[1]&0x7fffffff);
594 if ( increment[2]&0x80000000 )
596 position[2] += (increment[2]&0x7fffffff);
620 unsigned int out[3] )
633 mmpos[1]*
static_cast<vtkIdType>(this->MinMaxVolumeSize[0]) +
640 unsigned short maxIdx,
int flip )
646 mmpos[1]*
static_cast<vtkIdType>(this->MinMaxVolumeSize[0]) +
657 return ( *(this->
MinMaxVolume + 3*offset + 1) > maxIdx );
667 unsigned short *scalarOpacityTable,
668 unsigned short index,
669 unsigned char color[4] )
671 unsigned short alpha = scalarOpacityTable[
index];
672 color[0] =
static_cast<unsigned char>
674 color[1] =
static_cast<unsigned char>
676 color[2] =
static_cast<unsigned char>
682 unsigned short *scalarOpacityTable,
683 unsigned short index[4],
685 unsigned char color[4] )
687 unsigned short alpha;
692 color[0] =
static_cast<unsigned char>
694 color[1] =
static_cast<unsigned char>
696 color[2] =
static_cast<unsigned char>
712 unsigned short *scalarOpacityTable[4],
713 unsigned short index[4],
716 unsigned char color[4] )
718 unsigned int tmp[4] = {0,0,0,0};
722 unsigned short alpha =
static_cast<unsigned short>(
static_cast<float>(scalarOpacityTable[i][
index[i]])*
weights[i]);
729 color[0] =
static_cast<unsigned char>((tmp[0]>255)?(255):(tmp[0]));
730 color[1] =
static_cast<unsigned char>((tmp[1]>255)?(255):(tmp[1]));
731 color[2] =
static_cast<unsigned char>((tmp[2]>255)?(255):(tmp[2]));
732 color[3] =
static_cast<unsigned char>((tmp[3]>255)?(255):(tmp[3]));
unsigned short * GetSpecularShadingTable(int c)
unsigned short * ContiguousGradientNormal
vtkRenderer ** RenderRendererTable
unsigned char ** GetGradientMagnitude()
Abstract class for a volume mapper.
#define vtkGetObjectMacro(name, type)
unsigned short ** GetGradientNormal()
void ComputeMatrices(double volumeOrigin[3], double volumeSpacing[3], int volumeExtent[6], vtkRenderer *ren, vtkVolume *vol)
vtkMultiThreader * Threader
represents a volume (data & properties) in a rendered scene
int UpdateGradients(vtkVolume *vol)
vtkImageData * SavedMinMaxInput
helper class for a ray cast image
helper class that draws the image to the screen
vtkFixedPointVolumeRayCastMIPHelper * MIPHelper
A fixed point mapper for volumes.
unsigned short * GetGradientOpacityTable(int c)
VTK_THREAD_RETURN_TYPE FixedPointVolumeRayCastMapper_CastRays(void *arg)
void SetNumberOfThreads(int num)
int UpdateShadingTable(vtkRenderer *ren, vtkVolume *vol)
float ComputeRequiredImageSampleDistance(float desiredTime, vtkRenderer *ren, vtkVolume *vol)
record modification and/or execution time
int GradientOpacityRequired
vtkVolume ** RenderVolumeTable
vtkFixedPointRayCastImage * RayCastImage
virtual void ReleaseGraphicsResources(vtkWindow *)
void ComputeRayInfo(int x, int y, unsigned int pos[3], unsigned int dir[3], unsigned int *numSteps)
void ApplyFinalColorWindowLevel()
#define vtkTypeMacro(thisClass, superclass)
unsigned short * GetDiffuseShadingTable(int c)
void ShiftVectorDown(unsigned int in[3], unsigned int out[3])
A helper that generates MIP images for the volume ray cast mapper.
void LookupAndCombineIndependentColorsUC(unsigned short *colorTable[4], unsigned short *scalarOpacityTable[4], unsigned short index[4], float weights[4], int components, unsigned char color[4])
unsigned int FixedPointCroppingRegionPlanes[6]
vtkFixedPointVolumeRayCastCompositeShadeHelper * CompositeShadeHelper
GLint GLint GLint GLint GLint x
int ClipRayAgainstVolume(float rayStart[3], float rayEnd[3], float rayDirection[3], double bounds[6])
float MinimumImageSampleDistance
void FixedPointIncrement(unsigned int position[3], unsigned int increment[3])
~vtkFixedPointVolumeRayCastMapper()
Use finite differences to estimate gradient.
float ImageSampleDistance
abstract superclass for arrays of numeric data
vtkMatrix4x4 * ViewToWorldMatrix
void CaptureZBuffer(vtkRenderer *ren)
#define vtkGetVectorMacro(name, type, count)
void UpdateMinMaxVolume(vtkVolume *vol)
float * TransformedClippingPlanes
Defines a transfer function for mapping a property to an RGB color value.
vtkImageData * SavedGradientsInput
A helper that generates composite images for the volume ray cast mapper.
float OldImageSampleDistance
float RetrieveRenderTime(vtkRenderer *ren)
vtkDirectionEncoder * DirectionEncoder
float MaximumImageSampleDistance
window superclass for vtkRenderWindow
int NumberOfGradientSlices
vtkMatrix4x4 * VoxelsToViewMatrix
vtkMatrix4x4 * PerspectiveMatrix
vtkImageData * SavedParametersInput
int LockSampleDistanceToInputSpacing
void UpdateCroppingRegions()
int UpdateColorTable(vtkVolume *vol)
int NumTransformedClippingPlanes
void GetFloatTripleFromPointer(float v[3], float *ptr)
vtkMatrix4x4 * VoxelsToWorldMatrix
A class for performing multithreaded execution.
#define vtkSetClampMacro(name, type, min, max)
vtkMatrix4x4 * ViewToVoxelsMatrix
void PerVolumeInitialization(vtkRenderer *, vtkVolume *)
vtkFixedPointVolumeRayCastMapper()
unsigned int CroppingRegionMask[27]
Compute shading tables for encoded normals.
float InteractiveSampleDistance
unsigned int ToFixedPointDirection(float dir)
int ClipRayAgainstClippingPlanes(float rayStart[3], float rayEnd[3], int numClippingPlanes, float *clippingPlanes)
vtkImageData * MinMaxVolumeCache
void PrintSelf(ostream &os, vtkIndent indent)
vtkMatrix4x4 * WorldToVoxelsMatrix
int CheckMIPMinMaxVolumeFlag(unsigned int pos[3], int c, unsigned short maxIdx, int flip)
void PerSubVolumeInitialization(vtkRenderer *, vtkVolume *, int)
int ComputeRowBounds(vtkRenderer *ren, int imageFlag, int rowBoundsFlag, int volumeExtent[6])
topologically and geometrically regular array of data
a simple class to control print indentation
represent and manipulate 4x4 transformation matrices
float ComputeRequiredImageSampleDistance(float desiredTime, vtkRenderer *ren)
Builds the space leaping data structure.
int CheckMinMaxVolumeFlag(unsigned int pos[3], int c)
vtkTransform * VoxelsTransform
friend VTK_THREAD_RETURN_TYPE vtkFPVRCMSwitchOnDataType(void *arg)
int PerImageInitialization(vtkRenderer *, vtkVolume *, int, double *, double *, int *)
vtkTimeStamp SavedGradientsMTime
float RetrieveRenderTime(vtkRenderer *ren, vtkVolume *vol)
vtkEncodedGradientShader * GradientShader
vtkRenderWindow * RenderWindow
unsigned char * ContiguousGradientMagnitude
void DisplayRenderedImage(vtkRenderer *, vtkVolume *)
vtkTransform * VoxelsToViewTransform
vtkFixedPointVolumeRayCastCompositeGOHelper * CompositeGOHelper
#define vtkGetMacro(name, type)
unsigned short * GetScalarOpacityTable(int c)
int AutoAdjustSampleDistances
void LookupColorUC(unsigned short *colorTable, unsigned short *scalarOpacityTable, unsigned short index, unsigned char color[4])
void LookupDependentColorUC(unsigned short *colorTable, unsigned short *scalarOpacityTable, unsigned short index[4], int components, unsigned char color[4])
VTK_THREAD_RETURN_TYPE vtkFPVRCMSwitchOnDataType(void *arg)
vtkTransform * PerspectiveTransform
void SetRayCastImage(vtkFixedPointRayCastImage *)
#define VTK_THREAD_RETURN_TYPE
int CheckIfCropped(unsigned int pos[3])
Defines a 1D piecewise function.
vtkDataArray * CurrentScalars
vtkBooleanMacro(IgnoreDriverBugs, bool)
void GetUIntTripleFromPointer(unsigned int v[3], unsigned int *ptr)
vtkSetMacro(IgnoreDriverBugs, bool)
GLclampf GLclampf GLclampf alpha
Timer support and logging.
float MinimumViewDistance
vtkRayCastImageDisplayHelper * ImageDisplayHelper
vtkVolumeRayCastSpaceLeapingImageFilter * SpaceLeapFilter
GLint GLint GLint GLint GLint GLint y
void ComputeGradients(vtkVolume *vol)
float GetEstimatedRenderTime(vtkRenderer *ren, vtkVolume *vol)
unsigned short * GetColorTable(int c)
void Render(vtkRenderer *, vtkVolume *)
void StoreRenderTime(vtkRenderer *ren, vtkVolume *vol, float t)
abstract specification for renderers
encode a direction into a one or two byte value
vtkDataArray * PreviousScalars
vtkFiniteDifferenceGradientEstimator * GradientEstimator
unsigned short ** GradientNormal
int ShouldUseNearestNeighborInterpolation(vtkVolume *vol)
static vtkFixedPointVolumeRayCastMapper * New()
A helper that generates composite images for the volume ray cast mapper.
#define VTKRENDERINGVOLUME_EXPORT
float GetZBufferValue(int x, int y)
maintain a list of planes
create a window for renderers to draw into
GLenum GLenum GLuint components
A helper that generates composite images for the volume ray cast mapper.
void InitializeRayInfo(vtkVolume *vol)
vtkMatrix4x4 * VolumeMatrix
void CreateCanonicalView(vtkVolume *volume, vtkImageData *image, int blend_mode, double viewDirection[3], double viewUp[3])
friend VTK_THREAD_RETURN_TYPE FixedPointVolumeRayCastMapper_CastRays(void *arg)
unsigned int ToFixedPointPosition(float val)
void FillInMaxGradientMagnitudes(int fullDim[3], int smallDim[3])
A helper that generates composite images for the volume ray cast mapper.
vtkFixedPointVolumeRayCastCompositeGOShadeHelper * CompositeGOShadeHelper
vtkFixedPointVolumeRayCastCompositeHelper * CompositeHelper
float GetEstimatedRenderTime(vtkRenderer *ren)
VTKRENDERINGOPENGL_EXPORT PFNGLCOLORTABLEPROC ColorTable
unsigned short * MinMaxVolume
GLenum GLsizei GLenum GLenum const GLvoid * image
int IntermixIntersectingGeometry
float SavedSampleDistance
unsigned char ** GradientMagnitude
vtkTimeStamp SavedParametersMTime