23 #ifndef vtkUnstructuredGridVolumeZSweepMapper_h
24 #define vtkUnstructuredGridVolumeZSweepMapper_h
26 #include "vtkRenderingVolumeModule.h"
29 VTK_ABI_NAMESPACE_BEGIN
48 VTK_ABI_NAMESPACE_BEGIN
51 class vtkPixelListFrame;
54 class vtkSimpleScreenEdge;
55 class vtkDoubleScreenEdge;
57 class vtkPixelListEntryMemory;
61 VTK_ABI_NAMESPACE_BEGIN
80 vtkSetClampMacro(ImageSampleDistance,
float, 0.1f, 100.0f);
81 vtkGetMacro(ImageSampleDistance,
float);
89 vtkSetClampMacro(MinimumImageSampleDistance,
float, 0.1f, 100.0f);
90 vtkGetMacro(MinimumImageSampleDistance,
float);
98 vtkSetClampMacro(MaximumImageSampleDistance,
float, 0.1f, 100.0f);
99 vtkGetMacro(MaximumImageSampleDistance,
float);
119 vtkSetClampMacro(IntermixIntersectingGeometry,
vtkTypeBool, 0, 1);
155 vtkGetVectorMacro(ImageInUseSize,
int, 2);
156 vtkGetVectorMacro(ImageOrigin,
int, 2);
157 vtkGetVectorMacro(ImageViewportSize,
int, 2);
215 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry* ve1,
216 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry* ve2,
bool externalFace);
224 void RasterizeSpan(
int y, vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkScreenEdge* left,
225 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkScreenEdge* right,
bool exitFace);
233 void RasterizeLine(vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry* v0,
234 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry* v1,
bool exitFace);
274 int ImageViewportSize[2];
280 int ImageMemorySize[2];
286 int ImageInUseSize[2];
308 int ZBufferOrigin[2];
316 double FaceScalars[2];
319 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkSpan*
Span;
320 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkPixelListFrame*
PixelListFrame;
325 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkUseSet*
UseSet;
328 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertices*
Vertices;
338 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkSimpleScreenEdge*
SimpleEdge;
339 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkDoubleScreenEdge*
DoubleEdge;
354 vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkPixelListEntryMemory*
MemoryManager;
361 VTK_ABI_NAMESPACE_END
abstract class to specify cell behavior
abstract superclass for arrays of numeric data
dynamic, self-adjusting array of double
provides thread-safe access to cells
list of point or cell ids
a simple class to control print indentation
represent and manipulate 4x4 transformation matrices
a list of ids arranged in priority order
helper class that draws the image to the screen
create a window for renderers to draw into
abstract specification for renderers
record modification and/or execution time
Abstract class for an unstructured grid volume mapper.
a superclass for volume ray integration functions
Unstructured grid volume mapper based the ZSweep Algorithm.
vtkVolume ** RenderVolumeTable
void AllocateUseSet(vtkIdType size)
Allocate an array of usesets of size ‘size’ only if the current one is not large enough.
void RasterizeTriangle(vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *ve0, vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *ve1, vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *ve2, bool externalFace)
Perform scan conversion of a triangle defined by its vertices.
vtkRenderer ** RenderRendererTable
vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkSimpleScreenEdge * SimpleEdge
vtkIdType MaxRecordedPixelListSize
~vtkUnstructuredGridVolumeZSweepMapper() override
vtkTransform * PerspectiveTransform
int ReorderTriangle(vtkIdType v[3], vtkIdType w[3])
Reorder vertices ‘v’ in increasing order in ‘w’.
vtkUnstructuredGridVolumeRayIntegrator * RealRayIntegrator
vtkDoubleArray * FarIntersections
vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkPixelListFrame * PixelListFrame
float RetrieveRenderTime(vtkRenderer *ren, vtkVolume *vol)
virtual void SetRayIntegrator(vtkUnstructuredGridVolumeRayIntegrator *ri)
Set/Get the helper class for integrating rays.
void RasterizeLine(vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *v0, vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertexEntry *v1, bool exitFace)
Scan conversion of a straight line defined by endpoints v0 and v1.
void MainLoop(vtkRenderWindow *renWin)
MainLoop of the Zsweep algorithm.
unsigned char ColorComponentRealToByte(float color)
Convert and clamp a float color component into a unsigned char.
vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkSpan * Span
vtkRayCastImageDisplayHelper * ImageDisplayHelper
void CreateAndCleanPixelList()
Create an empty "pixel list" for each pixel of the screen.
vtkTypeBool AutoAdjustSampleDistances
float MaximumImageSampleDistance
void CompositeFunction(double zTarget)
Do delayed compositing from back to front, stopping at zTarget for each pixel inside the bounding box...
void RasterizeFace(vtkIdType faceIds[3], int externalSide)
Perform scan conversion of a triangle face.
double GetZBufferValue(int x, int y)
Return the value of the z-buffer at screen coordinates (x,y).
void RasterizeSpan(int y, vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkScreenEdge *left, vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkScreenEdge *right, bool exitFace)
Perform scan conversion of an horizontal span from left ro right at line y.
vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkPixelListEntryMemory * MemoryManager
vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkUseSet * UseSet
void AllocateVertices(vtkIdType size)
Allocate a vertex array of size ‘size’ only if the current one is not large enough.
static vtkUnstructuredGridVolumeZSweepMapper * New()
Set MaxPixelListSize to 32.
void Render(vtkRenderer *ren, vtkVolume *vol) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
vtkTimeStamp SavedTriangleListMTime
double GetMinimumBoundsDepth(vtkRenderer *ren, vtkVolume *vol)
vtkDoubleArray * NearIntersections
void SetMaxPixelListSize(int size)
Change the maximum size allowed for a pixel list.
vtkDoubleArray * IntersectionLengths
float MinimumImageSampleDistance
vtkPriorityQueue * EventList
void ProjectAndSortVertices(vtkRenderer *ren, vtkVolume *vol)
Project and sort the vertices by z-coordinates in view space in the "event list" (an heap).
void StoreRenderTime(vtkRenderer *ren, vtkVolume *vol, float t)
int MaxPixelListSizeReached
void BuildUseSets()
For each vertex, find the list of incident faces.
vtkUnstructuredGridVolumeRayIntegrator * RayIntegrator
vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkVertices * Vertices
vtkTypeBool IntermixIntersectingGeometry
void SavePixelListFrame()
For debugging purpose, save the pixel list frame as a dataset.
vtkMatrix4x4 * PerspectiveMatrix
vtkUnstructuredGridVolumeZSweepMapper()
int GetMaxPixelListSize()
Maximum size allowed for a pixel list.
float ImageSampleDistance
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkUnstructuredGridVolumeZSweepMapperNamespace::vtkDoubleScreenEdge * DoubleEdge
represents the common properties for rendering a volume.
represents a volume (data & properties) in a rendered scene