21#ifndef vtkGPUVolumeRayCastMapper_h 
   22#define vtkGPUVolumeRayCastMapper_h 
   23#include <unordered_map>  
   26#include "vtkRenderingVolumeModule.h"  
   29VTK_ABI_NAMESPACE_BEGIN
 
   48  vtkSetClampMacro(AutoAdjustSampleDistances, 
vtkTypeBool, 0, 1);
 
   59  vtkSetClampMacro(LockSampleDistanceToInputSpacing, 
vtkTypeBool, 0, 1);
 
   61  vtkBooleanMacro(LockSampleDistanceToInputSpacing, 
vtkTypeBool);
 
  103  vtkSetMacro(SampleDistance, 
float);
 
  104  vtkGetMacro(SampleDistance, 
float);
 
  115  vtkSetClampMacro(ImageSampleDistance, 
float, 0.1f, 100.0f);
 
  116  vtkGetMacro(ImageSampleDistance, 
float);
 
  124  vtkSetClampMacro(MinimumImageSampleDistance, 
float, 0.1f, 100.0f);
 
  125  vtkGetMacro(MinimumImageSampleDistance, 
float);
 
  133  vtkSetClampMacro(MaximumImageSampleDistance, 
float, 0.1f, 100.0f);
 
  134  vtkGetMacro(MaximumImageSampleDistance, 
float);
 
  151  vtkSetMacro(FinalColorWindow, 
float);
 
  152  vtkGetMacro(FinalColorWindow, 
float);
 
  153  vtkSetMacro(FinalColorLevel, 
float);
 
  154  vtkGetMacro(FinalColorLevel, 
float);
 
  173  vtkSetClampMacro(MaxMemoryFraction, 
float, 0.1f, 1.0f);
 
  174  vtkGetMacro(MaxMemoryFraction, 
float);
 
  186  vtkSetMacro(ReportProgress, 
bool);
 
  187  vtkGetMacro(ReportProgress, 
bool);
 
  203    double viewDirection[3], 
double viewUp[3]);
 
  241  vtkSetMacro(MaskType, 
int);
 
  242  vtkGetMacro(MaskType, 
int);
 
  256  vtkSetClampMacro(MaskBlendFactor, 
float, 0.0f, 1.0f);
 
  257  vtkGetMacro(MaskBlendFactor, 
float);
 
  268  vtkSetClampMacro(GlobalIlluminationReach, 
float, 0.0f, 1.0f);
 
  269  vtkGetMacro(GlobalIlluminationReach, 
float);
 
  284  vtkSetClampMacro(VolumetricScatteringBlending, 
float, 0.0f, 2.0f);
 
  285  vtkGetMacro(VolumetricScatteringBlending, 
float);
 
  314  vtkSetMacro(DepthImageScalarType, 
int);
 
  315  vtkGetMacro(DepthImageScalarType, 
int);
 
  411  vtkSetMacro(ColorRangeType, 
int);
 
  412  vtkGetMacro(ColorRangeType, 
int);
 
  413  vtkSetMacro(ScalarOpacityRangeType, 
int);
 
  414  vtkGetMacro(ScalarOpacityRangeType, 
int);
 
  415  vtkSetMacro(GradientOpacityRangeType, 
int);
 
  416  vtkGetMacro(GradientOpacityRangeType, 
int);
 
  448  vtkSetStringMacro(Transfer2DYAxisArray);
 
  449  vtkGetStringMacro(Transfer2DYAxisArray);
 
  509    double scalarRange[2], 
int numberOfScalarComponents, 
unsigned int numberOfLevels) = 0;
 
  545  float GlobalIlluminationReach = 0.0;
 
  547  float VolumetricScatteringBlending = 0.0;
 
  605  using DataMap = std::unordered_map<int, vtkDataSet*>;
 
  609  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
 
abstract class to specify dataset behavior
 
Ray casting performed on the GPU.
 
virtual void GetDepthImage(vtkImageData *)
Low level API to export the depth texture as vtkImageData in RenderToImage mode.
 
void CloneInput(vtkDataSet *input, int port)
Shallow-copy the inputs into a transform-adjusted clone.
 
vtkDataSet * GetInput(int port) override
Set/Get the input data.
 
vtkTypeBool AutoAdjustSampleDistances
 
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()
Set the mask type, if mask is to be used.
 
void RemoveInputConnection(int port, int idx) override
Add/Remove input connections.
 
double * GetBoundsFromPort(int port)
 
void SetTransformedInput(vtkDataSet *)
 
void SetDepthImageScalarTypeToFloat()
Set/Get the scalar type of the depth texture in RenderToImage mode.
 
vtkTypeBool RenderToImage
 
virtual void GPURender(vtkRenderer *, vtkVolume *)
Handled in the subclass - the actual render method.
 
char * Transfer2DYAxisArray
Define the array used for the Y axis of transfer 2D.
 
int ValidateRender(vtkRenderer *, vtkVolume *)
This method is used by the Render() method to validate everything before attempting to render.
 
vtkDataSet * GetTransformedInput(int port=0)
 
virtual void GetColorImage(vtkImageData *)
Low level API to export the color texture as vtkImageData in RenderToImage mode.
 
float ImageSampleDistance
 
vtkContourValues * DepthPassContourValues
 
vtkDataSet * GetInput() override
Set/Get the input data.
 
vtkContourValues * GetDepthPassContourValues()
Return handle to contour values container so that values can be set by the application.
 
void SetInputConnection(vtkAlgorithmOutput *input) override
Add/Remove input connections.
 
void SetDepthImageScalarTypeToUnsignedShort()
Set/Get the scalar type of the depth texture in RenderToImage mode.
 
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.
 
int ValidateInput(vtkVolumeProperty *property, int port)
This method is used by the Render() method to validate everything before attempting to render.
 
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()
Set/Get the scalar type of the depth texture in RenderToImage mode.
 
int ValidateInputs()
This method is used by the Render() method to validate everything before attempting to render.
 
std::unordered_map< int, vtkDataSet * > DataMap
 
void ReleaseGraphicsResources(vtkWindow *) override
Release any graphics resources that are being consumed by this mapper.
 
void TransformInput(int port)
A transformation is applied (translation) to the input.
 
void Render(vtkRenderer *, vtkVolume *) override
Initialize rendering for this volume.
 
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
 
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
 
virtual void RenderBlock(vtkRenderer *ren, vtkVolume *vol, unsigned int level)=0
 
vtkImageData * CanonicalViewImageData
 
void SetInputConnection(int port, vtkAlgorithmOutput *input) override
Add/Remove input connections.
 
static vtkGPUVolumeRayCastMapper * New()
 
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.
 
vtkDataSet * FindData(int port, DataMap &container)
 
void SetMaskTypeToBinary()
Set the mask type, if mask is to be used.
 
void RemovePortInternal(int port)
 
DataMap TransformedInputs
 
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(...)