37 #ifndef vtkOpenGLGPUVolumeRayCastMapper_h 38 #define vtkOpenGLGPUVolumeRayCastMapper_h 40 #include "vtkRenderingVolumeOpenGLModule.h" 47 class vtkUnsupportedRequiredExtensionsStringStream;
48 class vtkMapDataArrayTextureId;
55 class vtkOpacityTable;
57 class vtkKWScalarField;
60 class vtkOpacityTables;
94 static const char *OpenGLErrorMessage(
unsigned int errorCode);
101 static void PrintError(
const char *headerMessage);
114 double datasetBounds[6],
115 double scalarRange[2],
116 int numberOfScalarComponents,
117 unsigned int numberOfLevels)
override;
122 unsigned int level)
override;
125 int numberOfScalarComponents)
override;
135 const char *extensionName);
189 int textureExtent[6],
198 int UpdateColorTransferFunction(
vtkVolume *vol,
199 int numberOfScalarComponents);
206 int UpdateOpacityTransferFunction(
vtkVolume *vol,
207 int numberOfScalarComponents,
222 double worldBounds[6],
230 int RenderClippedBoundingBox(
int tcoordFlag,
232 size_t numberOfBlocks,
239 void CopyFBOToTexture();
244 void CleanupRender();
257 int PowerOfTwoGreaterOrEqual(
int x);
262 void CheckFrameBufferStatus();
272 void DisplayReadAndDrawBuffers();
277 void DisplayFrameBufferAttachments();
282 void DisplayFrameBufferAttachment(
unsigned int uattachment);
290 int parallelProjection,
293 int componentMethod);
298 void GetLightingStatus();
310 void ComputeReductionFactor(
double allocatedTime);
337 void ComputeNumberOfCroppingRegions();
340 unsigned int *internalFormat,
341 unsigned int *format,
345 bool TestLoadingScalar(
unsigned int internalFormat,
351 void SlabsFromDatasetToIndex(
double slabsDataSet[6],
352 double slabsPoints[6]);
354 void SlabsFromIndexToDataset(
double slabsPoints[6],
355 double slabsDataSet[6]);
357 const char *GetEnabledString(
unsigned char value);
358 void GetOpenGLState();
362 void UpdateNoiseTexture();
370 double ComputeMinimalSampleDistancePerPixel(
vtkRenderer *renderer,
390 double BoundingBox[8][3];
410 unsigned int TextureObjects[5];
436 double TableRange[2];
465 double LoadedBounds[6];
double LastProgressEventTime
virtual void GPURender(vtkRenderer *, vtkVolume *)
Handled in the subclass - the actual render method.
Wrapper around std::string to keep symbols short.
int NumberOfCroppingRegions
vtkRGBTable * Mask1RGBTable
void ReleaseGraphicsResources(vtkWindow *) override
Release any graphics resources that are being consumed by this mapper.
represents a volume (data & properties) in a rendered scene
unsigned int FrameBufferObject
unsigned int MaxValueFrameBuffer2
vtkPolyData * ClippedBoundingBox
represent and manipulate 4x4 transformation matrices
vtkDensifyPolyData * Densify
vtkClipConvexPolyData * Clip
vtkMapDataArrayTextureId * ScalarsTextures
unsigned int SavedFrameBuffer
vtkTimeStamp SmallInputBuildTime
vtkImageData * SmallInput
record modification and/or execution time
maintain a list of planes
vtkPolyData * PolyDataBoundingBox
int LastParallelProjection
abstract specification for renderers
concrete dataset represents vertices, lines, polygons, and triangle strips
vtkTessellatedBoxSource * BoxSource
int LoadExtensionsSucceeded
int SupportsPixelBufferObjects
unsigned int NoiseTextureId
window superclass for vtkRenderWindow
vtkUnsupportedRequiredExtensionsStringStream * UnsupportedRequiredExtensions
OpenGL subclass that draws the image to the screen.
vtkTimeStamp DataBufferTime
bool IgnoreSampleDistancePerPixel
a simple class to control print indentation
vtkPlaneCollection * Planes
topologically and geometrically regular array of data
vtkMatrix4x4 * InvVolumeMatrix
unsigned int MaxValueFrameBuffer
perform various plane computations
vtkShaderProgram2 * Program
virtual void GetReductionRatio(double ratio[3])=0
Return how much the dataset has to be reduced in each dimension to fit on the GPU.
vtkKWScalarField * CurrentScalar
vtkMapMaskTextureId * MaskTextures
vtkRGBTable * Mask2RGBTable
Interface class for querying and using OpenGL extensions.
vtkShader2 * CroppingShader
represents the common properties for rendering a volume.
clip polygonal data with user-specified implicit function or input scalar data
virtual void RenderBlock(vtkRenderer *ren, vtkVolume *vol, unsigned int level)=0
virtual int IsRenderSupported(vtkRenderWindow *vtkNotUsed(window), vtkVolumeProperty *vtkNotUsed(property))
Based on hardware and properties, we may or may not be able to render using 3D texture mapping.
int Supports_GL_ARB_texture_float
vtkOpacityTables * OpacityTables
create a window for renderers to draw into
Densify the input by adding points at the centroid.
unsigned int DepthRenderBufferObject
Create a polygonal representation of a box with a given level of subdivision.
vtkShaderProgram2 * ScaleBiasProgram
float ActualSampleDistance
clip any dataset with user-specified implicit function or input scalar data
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
Ray casting performed on the GPU.
static vtkGPUVolumeRayCastMapper * New()
virtual void PostRender(vtkRenderer *ren, int numberOfScalarComponents)=0
virtual void PreRender(vtkRenderer *ren, vtkVolume *vol, double datasetBounds[6], double scalarRange[2], int numberOfScalarComponents, unsigned int numberOfLevels)=0