39 #ifndef vtkGPUVolumeRayCastMapper_h
40 #define vtkGPUVolumeRayCastMapper_h
41 #include <unordered_map>
45 #include <vtkRenderingVolumeModule.h>
65 vtkSetClampMacro(AutoAdjustSampleDistances,
vtkTypeBool, 0, 1);
76 vtkSetClampMacro(LockSampleDistanceToInputSpacing,
vtkTypeBool, 0, 1);
78 vtkBooleanMacro(LockSampleDistanceToInputSpacing,
vtkTypeBool);
120 vtkSetMacro(SampleDistance,
float);
121 vtkGetMacro(SampleDistance,
float);
132 vtkSetClampMacro(ImageSampleDistance,
float, 0.1f, 100.0f);
133 vtkGetMacro(ImageSampleDistance,
float);
141 vtkSetClampMacro(MinimumImageSampleDistance,
float, 0.1f, 100.0f);
142 vtkGetMacro(MinimumImageSampleDistance,
float);
150 vtkSetClampMacro(MaximumImageSampleDistance,
float, 0.1f, 100.0f);
151 vtkGetMacro(MaximumImageSampleDistance,
float);
168 vtkSetMacro(FinalColorWindow,
float);
169 vtkGetMacro(FinalColorWindow,
float);
170 vtkSetMacro(FinalColorLevel,
float);
171 vtkGetMacro(FinalColorLevel,
float);
190 vtkSetClampMacro(MaxMemoryFraction,
float, 0.1f, 1.0f);
191 vtkGetMacro(MaxMemoryFraction,
float);
203 vtkSetMacro(ReportProgress,
bool);
204 vtkGetMacro(ReportProgress,
bool);
220 double viewDirection[3],
double viewUp[3]);
258 vtkSetMacro(MaskType,
int);
259 vtkGetMacro(MaskType,
int);
273 vtkSetClampMacro(MaskBlendFactor,
float, 0.0f, 1.0f);
274 vtkGetMacro(MaskBlendFactor,
float);
303 vtkSetMacro(DepthImageScalarType,
int);
304 vtkGetMacro(DepthImageScalarType,
int);
400 vtkSetMacro(ColorRangeType,
int);
401 vtkGetMacro(ColorRangeType,
int);
402 vtkSetMacro(ScalarOpacityRangeType,
int);
403 vtkGetMacro(ScalarOpacityRangeType,
int);
404 vtkSetMacro(GradientOpacityRangeType,
int);
405 vtkGetMacro(GradientOpacityRangeType,
int);
490 double scalarRange[2],
int numberOfScalarComponents,
unsigned int numberOfLevels) = 0;
581 using DataMap = std::unordered_map<int, vtkImageData*>;
585 double ClippedCroppingRegionPlanes[6];
Proxy object to connect input/output ports.
virtual void SetInputConnection(int port, vtkAlgorithmOutput *input)
Set the connection for the given input port index.
helper object to manage setting and generating contour values
Ray casting performed on the GPU.
virtual void GetDepthImage(vtkImageData *)
Low level API to export the depth texture as vtkImageData in RenderToImage mode.
vtkTypeBool AutoAdjustSampleDistances
vtkImageData * FindData(int port, DataMap &container)
float MinimumImageSampleDistance
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.
void CloneInputs()
Shallow-copy the inputs into a transform-adjusted clone.
void SetMaskTypeToLabelMap()
void RemoveInputConnection(int port, int idx) override
Remove a connection given by index idx.
void SetDepthImageScalarTypeToFloat()
vtkTypeBool RenderToImage
virtual void GPURender(vtkRenderer *, vtkVolume *)
Handled in the subclass - the actual render method.
int ValidateRender(vtkRenderer *, vtkVolume *)
This method is used by the Render() method to validate everything before attempting to render.
vtkImageData * GetInput() override
virtual void GetColorImage(vtkImageData *)
Low level API to export the color texture as vtkImageData in RenderToImage mode.
double * GetBoundsFromPort(const int port)
float ImageSampleDistance
vtkContourValues * DepthPassContourValues
void SetInputConnection(vtkAlgorithmOutput *input) override
void SetDepthImageScalarTypeToUnsignedShort()
float MaximumImageSampleDistance
vtkIdType MaxMemoryInBytes
vtkTypeBool LockSampleDistanceToInputSpacing
void SetMaskInput(vtkImageData *mask)
Optionally, set a mask input.
~vtkGPUVolumeRayCastMapper() override
vtkTypeBool ClampDepthToBackface
virtual void GetReductionRatio(double ratio[3])=0
Return how much the dataset has to be reduced in each dimension to fit on the GPU.
vtkImageData * GetInput(const int port) override
void RemovePortInternal(const int port)
std::vector< int > RemovedPorts
DataMap LastInputs
This is needed only to check if the input data has been changed since the last Render() call.
void CreateCanonicalView(vtkRenderer *ren, vtkVolume *volume, vtkImageData *image, int blend_mode, double viewDirection[3], double viewUp[3])
void SetDepthImageScalarTypeToUnsignedChar()
void CloneInput(vtkImageData *input, const int port)
vtkContourValues * GetDepthPassContourValues()
Return handle to contour values container so that values can be set by the application.
int ValidateInput(vtkVolumeProperty *property, const int port)
void ReleaseGraphicsResources(vtkWindow *) override
Release any graphics resources that are being consumed by this mapper.
void Render(vtkRenderer *, vtkVolume *) override
Initialize rendering for this volume.
void TransformInput(const int port)
A transformation is applied (translation) to the input.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetTransformedInput(vtkImageData *)
void RemoveInputConnection(int port, vtkAlgorithmOutput *input) override
Add/Remove input connections.
virtual void PreRender(vtkRenderer *ren, vtkVolume *vol, double datasetBounds[6], double scalarRange[2], int numberOfScalarComponents, unsigned int numberOfLevels)=0
int ScalarOpacityRangeType
std::unordered_map< int, vtkImageData * > DataMap
static vtkGPUVolumeRayCastMapper * New()
virtual void RenderBlock(vtkRenderer *ren, vtkVolume *vol, unsigned int level)=0
vtkImageData * CanonicalViewImageData
void SetInputConnection(int port, vtkAlgorithmOutput *input) override
Set the connection for the given input port index.
int GetInputCount()
Number of currently active ports.
int GeneratingCanonicalView
vtkGPUVolumeRayCastMapper()
virtual void ClipCroppingRegionPlanes()
Compute the cropping planes clipped by the bounds of the volume.
int FillInputPortInformation(int port, vtkInformation *info) override
Handle inputs.
void SetMaskTypeToBinary()
DataMap TransformedInputs
vtkImageData * GetTransformedInput(const int port=0)
virtual void PostRender(vtkRenderer *ren, int numberOfScalarComponents)=0
int GradientOpacityRangeType
void SetCellFlag(int cellFlag)
Called by the AMR Volume Mapper.
void CanonicalViewRender(vtkRenderer *, vtkVolume *)
topologically and geometrically regular array of data
a simple class to control print indentation
create a window for renderers to draw into
abstract specification for renderers
Abstract class for a volume mapper.
represents the common properties for rendering a volume.
represents a volume (data & properties) in a rendered scene
window superclass for vtkRenderWindow
#define VTK_SIZEHINT(...)