31 #ifndef vtkOpenGLGPUVolumeRayCastMapper_h
32 #define vtkOpenGLGPUVolumeRayCastMapper_h
34 #include "vtkRenderingVolumeOpenGLModule.h"
41 class vtkUnsupportedRequiredExtensionsStringStream;
42 class vtkMapDataArrayTextureId;
49 class vtkOpacityTable;
51 class vtkKWScalarField;
54 class vtkOpacityTables;
88 static const char *OpenGLErrorMessage(
unsigned int errorCode);
95 static void PrintError(
const char *headerMessage);
108 double datasetBounds[6],
109 double scalarRange[2],
110 int numberOfScalarComponents,
111 unsigned int numberOfLevels) VTK_OVERRIDE;
116 unsigned int level) VTK_OVERRIDE;
119 int numberOfScalarComponents) VTK_OVERRIDE;
129 const
char *extensionName);
183 int textureExtent[6],
192 int UpdateColorTransferFunction(
vtkVolume *vol,
193 int numberOfScalarComponents);
200 int UpdateOpacityTransferFunction(
vtkVolume *vol,
201 int numberOfScalarComponents,
216 double worldBounds[6],
224 int RenderClippedBoundingBox(
int tcoordFlag,
226 size_t numberOfBlocks,
233 void CopyFBOToTexture();
238 void CleanupRender();
251 int PowerOfTwoGreaterOrEqual(
int x);
256 void CheckFrameBufferStatus();
266 void DisplayReadAndDrawBuffers();
271 void DisplayFrameBufferAttachments();
276 void DisplayFrameBufferAttachment(
unsigned int uattachment);
284 int parallelProjection,
287 int componentMethod);
292 void GetLightingStatus();
304 void ComputeReductionFactor(
double allocatedTime);
331 void ComputeNumberOfCroppingRegions();
334 unsigned int *internalFormat,
335 unsigned int *format,
339 bool TestLoadingScalar(
unsigned int internalFormat,
345 void SlabsFromDatasetToIndex(
double slabsDataSet[6],
346 double slabsPoints[6]);
348 void SlabsFromIndexToDataset(
double slabsPoints[6],
349 double slabsDataSet[6]);
351 const
char *GetEnabledString(
unsigned char value);
352 void GetOpenGLState();
356 void UpdateNoiseTexture();
364 double ComputeMinimalSampleDistancePerPixel(
vtkRenderer *renderer,
379 void GetReductionRatio(
double ratio[3]) VTK_OVERRIDE;
381 int NumberOfCroppingRegions;
384 double BoundingBox[8][3];
396 int OpenGLObjectsCreated;
397 int NumberOfFrameBuffers;
399 unsigned int FrameBufferObject;
400 unsigned int DepthRenderBufferObject;
404 unsigned int TextureObjects[5];
406 unsigned int MaxValueFrameBuffer;
407 unsigned int MaxValueFrameBuffer2;
414 double ReductionFactor;
418 vtkUnsupportedRequiredExtensionsStringStream *UnsupportedRequiredExtensions;
419 int LoadExtensionsSucceeded;
421 int Supports_GL_ARB_texture_float;
422 int SupportsPixelBufferObjects;
430 double TableRange[2];
442 int LastParallelProjection;
443 int LastRayCastMethod;
444 int LastCroppingMode;
459 double LoadedBounds[6];
double LastProgressEventTime
Wrapper around std::string to keep symbols short.
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
represent and manipulate 4x4 transformation matrices
vtkMapDataArrayTextureId * ScalarsTextures
unsigned int SavedFrameBuffer
record modification and/or execution time
maintain a list of planes
abstract specification for renderers
concrete dataset represents vertices, lines, polygons, and triangle strips
vtkTessellatedBoxSource * BoxSource
unsigned int NoiseTextureId
window superclass for vtkRenderWindow
OpenGL subclass that draws the image to the screen.
bool IgnoreSampleDistancePerPixel
a simple class to control print indentation
topologically and geometrically regular array of data
perform various plane computations
vtkShaderProgram2 * Program
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 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...
vtkOpacityTables * OpacityTables
create a window for renderers to draw into
Densify the input by adding points at the centroid.
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()