VTK
vtkHAVSVolumeMapper.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3 Program: Visualization Toolkit
4 Module: vtkHAVSVolumeMapper.h
5 
6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7 All rights reserved.
8 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10 This software is distributed WITHOUT ANY WARRANTY; without even
11 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12 PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
15 
16 /* Copyright 2005, 2006 by University of Utah. */
17 
119 #ifndef vtkHAVSVolumeMapper_h
120 #define vtkHAVSVolumeMapper_h
121 
122 #include "vtkRenderingVolumeModule.h" // For export macro
124 
125 #define VTK_KBUFFER_SIZE_2 0
126 #define VTK_KBUFFER_SIZE_6 1
127 #define VTK_FIELD_LEVEL_OF_DETAIL 0
128 #define VTK_AREA_LEVEL_OF_DETAIL 1
129 
130 
131 class vtkUnstructuredGrid;
132 class vtkDepthRadixSortUnstructuredGrid;
133 class vtkHAVSSortedFace;
134 
136 {
137 public:
141  virtual void PrintSelf(ostream& os, vtkIndent indent);
142 
144 
145  vtkSetMacro(PartiallyRemoveNonConvexities, bool);
146  vtkGetMacro(PartiallyRemoveNonConvexities, bool);
148 
150 
152  vtkSetMacro(LevelOfDetailTargetTime, float);
153  vtkGetMacro(LevelOfDetailTargetTime, float);
155 
157 
158  vtkSetMacro(LevelOfDetail, bool);
159  vtkGetMacro(LevelOfDetail, bool);
161 
163 
165  vtkGetMacro(LevelOfDetailMethod, int);
167  {this->SetLevelOfDetailMethod(VTK_FIELD_LEVEL_OF_DETAIL);}
169  {this->SetLevelOfDetailMethod(VTK_AREA_LEVEL_OF_DETAIL);}
171 
173 
174  vtkSetMacro(KBufferSize,int);
175  vtkGetMacro(KBufferSize,int);
177  {this->SetKBufferSize(VTK_KBUFFER_SIZE_2);}
179  {this->SetKBufferSize(VTK_KBUFFER_SIZE_6);}
181 
183 
188  {return false; }
190 
192 
194  virtual void SetGPUDataStructures(bool) = 0;
195  vtkGetMacro(GPUDataStructures, bool);
197 
198 protected:
201 
202 //BTX
203  virtual void Initialize(vtkRenderer *ren, vtkVolume *vol) = 0;
208 
209  void FRadixSort(vtkHAVSSortedFace *array, vtkHAVSSortedFace *temp, int lo, int up);
210  void FRadix(int byte, int len, vtkHAVSSortedFace *source, vtkHAVSSortedFace *dest, int *count);
211 
212  void UpdateLevelOfDetail(float targetTime);
213  void PartialVisibilitySort(float *eye);
215 
216  enum
217  {
218  NO_INIT_ERROR=0,
219  NON_TETRAHEDRA=1,
220  UNSUPPORTED_EXTENSIONS=2,
221  NO_SCALARS=3,
222  CELL_DATA=4,
223  NO_CELLS=5
224  };
225 
226  // Mesh
227  float *Vertices;
228  float *Scalars;
229  double ScalarRange[2];
230  unsigned int *Triangles;
231  unsigned int *OrderedTriangles;
232  vtkHAVSSortedFace *SortedFaces;
233  vtkHAVSSortedFace *RadixTemp;
234  float *Centers;
235  unsigned int NumberOfVertices;
236  unsigned int NumberOfCells;
237  unsigned int NumberOfScalars;
238  unsigned int NumberOfTriangles;
239 
240  // Level-Of-Detail
243  unsigned int *BoundaryTriangles;
244  unsigned int *InternalTriangles;
250 
251  // K-Buffer
257  float Diagonal;
260 
261  // Lookup Tables
264 
265  // State and Timing Stats
275 //ETX
276 
277 private:
278  vtkHAVSVolumeMapper(const vtkHAVSVolumeMapper&); // Not implemented.
279  void operator=(const vtkHAVSVolumeMapper&); // Not implemented.
280 };
281 #endif
vtkHAVSVolumeMapper::NumberOfVertices
unsigned int NumberOfVertices
Definition: vtkHAVSVolumeMapper.h:235
vtkHAVSVolumeMapper::TotalRenderTime
float TotalRenderTime
Definition: vtkHAVSVolumeMapper.h:269
vtkHAVSVolumeMapper::InitializeLevelOfDetail
void InitializeLevelOfDetail()
vtkHAVSVolumeMapper::Initialized
bool Initialized
Definition: vtkHAVSVolumeMapper.h:266
vtkHAVSVolumeMapper::Vertices
float * Vertices
Definition: vtkHAVSVolumeMapper.h:227
vtkHAVSVolumeMapper::CheckInitializationError
bool CheckInitializationError()
vtkHAVSVolumeMapper::MaxEdgeLength
float MaxEdgeLength
Definition: vtkHAVSVolumeMapper.h:253
vtkVolume
represents a volume (data & properties) in a rendered scene
Definition: vtkVolume.h:50
VTK_KBUFFER_SIZE_2
#define VTK_KBUFFER_SIZE_2
Definition: vtkHAVSVolumeMapper.h:125
vtkHAVSVolumeMapper::KBufferState
int KBufferState
Definition: vtkHAVSVolumeMapper.h:252
vtkgl::count
GLuint GLuint GLsizei count
Definition: vtkgl.h:11315
vtkHAVSVolumeMapper::LevelOfDetail
bool LevelOfDetail
Definition: vtkHAVSVolumeMapper.h:248
vtkHAVSVolumeMapper::UpdateLevelOfDetail
void UpdateLevelOfDetail(float targetTime)
vtkHAVSVolumeMapper::InitializeLookupTables
void InitializeLookupTables(vtkVolume *vol)
vtkHAVSVolumeMapper::InternalTriangles
unsigned int * InternalTriangles
Definition: vtkHAVSVolumeMapper.h:244
vtkHAVSVolumeMapper::SetLevelOfDetailMethod
void SetLevelOfDetailMethod(int)
vtkHAVSVolumeMapper::~vtkHAVSVolumeMapper
~vtkHAVSVolumeMapper()
vtkHAVSVolumeMapper::UnitDistance
float UnitDistance
Definition: vtkHAVSVolumeMapper.h:255
vtkTimeStamp
record modification and/or execution time
Definition: vtkTimeStamp.h:35
vtkRenderingVolumeModule.h
vtkTypeMacro
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:642
vtkHAVSVolumeMapper::FRadix
void FRadix(int byte, int len, vtkHAVSSortedFace *source, vtkHAVSSortedFace *dest, int *count)
VTK_FIELD_LEVEL_OF_DETAIL
#define VTK_FIELD_LEVEL_OF_DETAIL
Definition: vtkHAVSVolumeMapper.h:127
vtkHAVSVolumeMapper::Centers
float * Centers
Definition: vtkHAVSVolumeMapper.h:234
vtkHAVSVolumeMapper::Scalars
float * Scalars
Definition: vtkHAVSVolumeMapper.h:228
vtkHAVSVolumeMapper::FrameNumber
int FrameNumber
Definition: vtkHAVSVolumeMapper.h:268
vtkHAVSVolumeMapper::TransferFunction
float * TransferFunction
Definition: vtkHAVSVolumeMapper.h:262
vtkHAVSVolumeMapper::SetLevelOfDetailMethodArea
void SetLevelOfDetailMethodArea()
Definition: vtkHAVSVolumeMapper.h:168
vtkHAVSVolumeMapper::LevelOfDetailMethod
int LevelOfDetailMethod
Definition: vtkHAVSVolumeMapper.h:249
vtkHAVSVolumeMapper::Diagonal
float Diagonal
Definition: vtkHAVSVolumeMapper.h:257
vtkHAVSVolumeMapper::TransferFunctionSize
int TransferFunctionSize
Definition: vtkHAVSVolumeMapper.h:263
vtkHAVSVolumeMapper::PrintSelf
virtual void PrintSelf(ostream &os, vtkIndent indent)
vtkHAVSVolumeMapper::FRadixSort
void FRadixSort(vtkHAVSSortedFace *array, vtkHAVSSortedFace *temp, int lo, int up)
vtkHAVSVolumeMapper::Initialize
virtual void Initialize(vtkRenderer *ren, vtkVolume *vol)=0
vtkHAVSVolumeMapper::InitializePrimitives
void InitializePrimitives(vtkVolume *vol)
source
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
Definition: vtkBoostGraphAdapter.h:821
vtkHAVSVolumeMapper::UnstructuredGridMTime
vtkTimeStamp UnstructuredGridMTime
Definition: vtkHAVSVolumeMapper.h:272
vtkHAVSVolumeMapper::LevelOfDetailTriangleCount
unsigned int LevelOfDetailTriangleCount
Definition: vtkHAVSVolumeMapper.h:245
vtkHAVSVolumeMapper::vtkHAVSVolumeMapper
vtkHAVSVolumeMapper()
vtkHAVSVolumeMapper::GPUDataStructures
bool GPUDataStructures
Definition: vtkHAVSVolumeMapper.h:256
vtkNotUsed
#define vtkNotUsed(x)
Definition: vtkSetGet.h:557
vtkHAVSVolumeMapper::LastVolume
vtkVolume * LastVolume
Definition: vtkHAVSVolumeMapper.h:274
vtkHAVSVolumeMapper::PartialVisibilitySort
void PartialVisibilitySort(float *eye)
vtkHAVSVolumeMapper::SetGPUDataStructures
virtual void SetGPUDataStructures(bool)=0
vtkHAVSVolumeMapper::NumberOfInternalTriangles
unsigned int NumberOfInternalTriangles
Definition: vtkHAVSVolumeMapper.h:242
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkHAVSVolumeMapper::OrderedTriangles
unsigned int * OrderedTriangles
Definition: vtkHAVSVolumeMapper.h:231
VTK_KBUFFER_SIZE_6
#define VTK_KBUFFER_SIZE_6
Definition: vtkHAVSVolumeMapper.h:126
vtkHAVSVolumeMapper::CurrentLevelOfDetail
float CurrentLevelOfDetail
Definition: vtkHAVSVolumeMapper.h:246
VTK_AREA_LEVEL_OF_DETAIL
#define VTK_AREA_LEVEL_OF_DETAIL
Definition: vtkHAVSVolumeMapper.h:128
vtkHAVSVolumeMapper::Triangles
unsigned int * Triangles
Definition: vtkHAVSVolumeMapper.h:230
vtkHAVSVolumeMapper::NumberOfBoundaryTriangles
unsigned int NumberOfBoundaryTriangles
Definition: vtkHAVSVolumeMapper.h:241
vtkHAVSVolumeMapper::KBufferSize
int KBufferSize
Definition: vtkHAVSVolumeMapper.h:259
vtkHAVSVolumeMapper::LevelOfDetailTargetTime
float LevelOfDetailTargetTime
Definition: vtkHAVSVolumeMapper.h:247
vtkHAVSVolumeMapper::New
static vtkHAVSVolumeMapper * New()
vtkGetMacro
#define vtkGetMacro(name, type)
Definition: vtkSetGet.h:93
vtkHAVSVolumeMapper::AlphaTransferFunctionMTime
vtkTimeStamp AlphaTransferFunctionMTime
Definition: vtkHAVSVolumeMapper.h:271
vtkSetMacro
vtkSetMacro(IgnoreDriverBugs, bool)
vtkgl::r
GLdouble GLdouble GLdouble r
Definition: vtkgl.h:11610
vtkHAVSVolumeMapper::RadixTemp
vtkHAVSSortedFace * RadixTemp
Definition: vtkHAVSVolumeMapper.h:233
vtkUnstructuredGridVolumeMapper
Abstract class for a unstructured grid volume mapper.
Definition: vtkUnstructuredGridVolumeMapper.h:40
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:64
vtkHAVSVolumeMapper::InitializationError
int InitializationError
Definition: vtkHAVSVolumeMapper.h:267
vtkHAVSVolumeMapper::SetKBufferSizeTo2
void SetKBufferSizeTo2()
Definition: vtkHAVSVolumeMapper.h:176
VTKRENDERINGVOLUME_EXPORT
#define VTKRENDERINGVOLUME_EXPORT
Definition: vtkRenderingVolumeModule.h:15
vtkgl::len
GLenum GLsizei len
Definition: vtkgl.h:13010
vtkHAVSVolumeMapper::NumberOfCells
unsigned int NumberOfCells
Definition: vtkHAVSVolumeMapper.h:236
vtkUnstructuredGrid
dataset represents arbitrary combinations of all possible cell types
Definition: vtkUnstructuredGrid.h:82
vtkHAVSVolumeMapper::ScalarsMTime
vtkTimeStamp ScalarsMTime
Definition: vtkHAVSVolumeMapper.h:273
vtkHAVSVolumeMapper
Hardware-Assisted Visibility Sorting unstructured grid mapper.
Definition: vtkHAVSVolumeMapper.h:136
vtkUnstructuredGridVolumeMapper.h
vtkHAVSVolumeMapper::SortedFaces
vtkHAVSSortedFace * SortedFaces
Definition: vtkHAVSVolumeMapper.h:232
vtkHAVSVolumeMapper::NumberOfTriangles
unsigned int NumberOfTriangles
Definition: vtkHAVSVolumeMapper.h:238
vtkHAVSVolumeMapper::PartiallyRemoveNonConvexities
bool PartiallyRemoveNonConvexities
Definition: vtkHAVSVolumeMapper.h:258
vtkHAVSVolumeMapper::ColorTransferFunctionMTime
vtkTimeStamp ColorTransferFunctionMTime
Definition: vtkHAVSVolumeMapper.h:270
vtkHAVSVolumeMapper::InitializeScalars
void InitializeScalars()
vtkHAVSVolumeMapper::LevelOfDetailMaxEdgeLength
float LevelOfDetailMaxEdgeLength
Definition: vtkHAVSVolumeMapper.h:254
vtkHAVSVolumeMapper::SupportedByHardware
virtual bool SupportedByHardware(vtkRenderer *vtkNotUsed(r))
Definition: vtkHAVSVolumeMapper.h:187
vtkHAVSVolumeMapper::NumberOfScalars
unsigned int NumberOfScalars
Definition: vtkHAVSVolumeMapper.h:237
vtkHAVSVolumeMapper::BoundaryTriangles
unsigned int * BoundaryTriangles
Definition: vtkHAVSVolumeMapper.h:243
vtkHAVSVolumeMapper::SetLevelOfDetailMethodField
void SetLevelOfDetailMethodField()
Definition: vtkHAVSVolumeMapper.h:166
vtkHAVSVolumeMapper::SetKBufferSizeTo6
void SetKBufferSizeTo6()
Definition: vtkHAVSVolumeMapper.h:178