VTK  9.3.0
vtkSmartVolumeMapper.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
73 #ifndef vtkSmartVolumeMapper_h
74 #define vtkSmartVolumeMapper_h
75 
76 #include "vtkImageReslice.h" // for VTK_RESLICE_NEAREST, VTK_RESLICE_CUBIC
77 #include "vtkRenderingVolumeOpenGL2Module.h" // For export macro
78 #include "vtkVolumeMapper.h"
79 
80 VTK_ABI_NAMESPACE_BEGIN
83 class vtkImageResample;
86 class vtkRenderWindow;
87 class vtkVolume;
88 class vtkVolumeProperty;
89 class vtkImageMagnitude;
90 
91 class VTKRENDERINGVOLUMEOPENGL2_EXPORT vtkSmartVolumeMapper : public vtkVolumeMapper
92 {
93 public:
96  void PrintSelf(ostream& os, vtkIndent indent) override;
97 
99 
109  vtkSetMacro(FinalColorWindow, float);
111 
113 
116  vtkGetMacro(FinalColorWindow, float);
118 
120 
127  vtkSetMacro(FinalColorLevel, float);
129 
131 
134  vtkGetMacro(FinalColorLevel, float);
136 
137  // The possible values for the default and current render mode ivars
138  enum
139  {
140  DefaultRenderMode = 0,
141  RayCastRenderMode = 1,
142  GPURenderMode = 2,
143  OSPRayRenderMode = 3,
144  UndefinedRenderMode = 4,
145  InvalidRenderMode = 5
146  };
147 
153 
160 
167 
174 
180 
182 
185  vtkGetMacro(RequestedRenderMode, int);
187 
193 
195 
202  vtkSetMacro(MaxMemoryInBytes, vtkIdType);
203  vtkGetMacro(MaxMemoryInBytes, vtkIdType);
205 
207 
213  vtkSetClampMacro(MaxMemoryFraction, float, 0.1f, 1.0f);
214  vtkGetMacro(MaxMemoryFraction, float);
216 
218 
222  vtkSetClampMacro(InterpolationMode, int, VTK_RESLICE_NEAREST, VTK_RESLICE_CUBIC);
223  vtkGetMacro(InterpolationMode, int);
228 
234  void CreateCanonicalView(vtkRenderer* ren, vtkVolume* volume, vtkVolume* volume2,
235  vtkImageData* image, int blend_mode, double viewDirection[3], double viewUp[3]);
236 
238 
243  vtkSetClampMacro(UseJittering, vtkTypeBool, 0, 1);
244  vtkGetMacro(UseJittering, vtkTypeBool);
245  vtkBooleanMacro(UseJittering, vtkTypeBool);
247 
249 
255  vtkSetClampMacro(InteractiveUpdateRate, double, 1.0e-10, 1.0e10);
257 
259 
264  vtkGetMacro(InteractiveUpdateRate, double);
266 
268 
276  vtkSetClampMacro(InteractiveAdjustSampleDistances, vtkTypeBool, 0, 1);
277  vtkGetMacro(InteractiveAdjustSampleDistances, vtkTypeBool);
278  vtkBooleanMacro(InteractiveAdjustSampleDistances, vtkTypeBool);
280 
282 
291  vtkSetClampMacro(AutoAdjustSampleDistances, vtkTypeBool, 0, 1);
292  vtkGetMacro(AutoAdjustSampleDistances, vtkTypeBool);
293  vtkBooleanMacro(AutoAdjustSampleDistances, vtkTypeBool);
295 
297 
304  vtkSetMacro(SampleDistance, float);
305  vtkGetMacro(SampleDistance, float);
307 
309 
315  vtkSetClampMacro(GlobalIlluminationReach, float, 0.0f, 1.0f);
316  vtkGetMacro(GlobalIlluminationReach, float);
318 
320 
326  vtkSetClampMacro(VolumetricScatteringBlending, float, 0.0f, 2.0f);
327  vtkGetMacro(VolumetricScatteringBlending, float);
329 
334  void Render(vtkRenderer*, vtkVolume*) override;
335 
343 
345 
353  {
354  DISABLED = -1,
355  MAGNITUDE = 0,
356  COMPONENT = 1,
357  };
358 
359  void SetVectorMode(int mode);
360  vtkGetMacro(VectorMode, int);
361 
362  vtkSetClampMacro(VectorComponent, int, 0, 3);
363  vtkGetMacro(VectorComponent, int);
365 
367 
370  vtkSetStringMacro(Transfer2DYAxisArray);
371  vtkGetStringMacro(Transfer2DYAxisArray);
373 
375 
383  {
384  LowResModeDisabled = 0,
385  LowResModeResample = 1,
386  };
387 
388  vtkSetMacro(LowResMode, int);
389  vtkGetMacro(LowResMode, int)
391 
392  protected : vtkSmartVolumeMapper();
393  ~vtkSmartVolumeMapper() override;
394 
400  void ConnectMapperInput(vtkVolumeMapper* m);
401 
407  void ConnectFilterInput(vtkImageResample* f);
408 
410 
413  float FinalColorWindow;
414  float FinalColorLevel;
416 
418 
421  vtkIdType MaxMemoryInBytes;
422  float MaxMemoryFraction;
424 
428  int InterpolationMode;
429 
431 
436  int RequestedRenderMode;
437  int CurrentRenderMode;
439 
441 
444  int Initialized;
445  vtkTimeStamp SupportStatusCheckTime;
446  int GPUSupported;
447  int RayCastSupported;
448  int LowResGPUNecessary;
450 
455  vtkImageResample* GPUResampleFilter;
456 
458 
467  vtkImageMagnitude* ImageMagnitude;
468  vtkImageData* InputDataMagnitude;
470 
475  void Initialize(vtkRenderer* ren, vtkVolume* vol);
476 
481  void ComputeRenderMode(vtkRenderer* ren, vtkVolume* vol);
482 
487  vtkGetObjectMacro(GPUMapper, vtkGPUVolumeRayCastMapper);
488 
490 
493  vtkGPUVolumeRayCastMapper* GPULowResMapper;
497 
503  int InitializedBlendMode;
504 
508  vtkTypeBool UseJittering;
509 
513  float SampleDistance;
514 
518  float GlobalIlluminationReach = 0.0;
519 
523  float VolumetricScatteringBlending = 0.0;
524 
529  vtkTypeBool AutoAdjustSampleDistances;
530 
536  double InteractiveUpdateRate;
537 
545  vtkTypeBool InteractiveAdjustSampleDistances;
546 
548 
555  int VectorMode;
556  int VectorComponent;
557  vtkTimeStamp MagnitudeUploadTime;
559 
561 
565  vtkDataSet* LastInput;
566  vtkDataSet* LastFilterInput;
568 
574  char* Transfer2DYAxisArray;
575 
576  int LowResMode = LowResModeDisabled;
577 
578 private:
580 
584  void SetupVectorMode(vtkVolume* vol);
590  void ComputeMagnitudeCellData(vtkDataSet* input, vtkDataArray* arr);
591  void ComputeMagnitudePointData(vtkDataSet* input, vtkDataArray* arr);
593 
595  void operator=(const vtkSmartVolumeMapper&) = delete;
596 
597  vtkOSPRayVolumeInterface* OSPRayMapper;
598 };
599 
600 VTK_ABI_NAMESPACE_END
601 #endif
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:54
abstract class to specify dataset behavior
Definition: vtkDataSet.h:62
Ray casting performed on the GPU.
topologically and geometrically regular array of data
Definition: vtkImageData.h:52
Resamples an image to be larger or smaller.
a simple class to control print indentation
Definition: vtkIndent.h:38
Mapper to render volumes defined as vtkMultiBlockDataSet.
Removes link dependence on optional ospray module.
create a window for renderers to draw into
abstract specification for renderers
Definition: vtkRenderer.h:71
Adaptive volume mapper.
void ReleaseGraphicsResources(vtkWindow *) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Release any graphics resources that are being...
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int GetLastUsedRenderMode()
This will return the render mode used during the previous call to Render().
void SetVectorMode(int mode)
VectorMode is a special rendering mode for 3-component vectors which makes use of GPURayCastMapper's ...
void SetInterpolationModeToLinear()
Set interpolation mode for downsampling (lowres GPU) (initial value: cubic).
void SetRequestedRenderModeToOSPRay()
Set the requested render mode to vtkSmartVolumeMapper::OSPRayRenderMode.
void CreateCanonicalView(vtkRenderer *ren, vtkVolume *volume, vtkVolume *volume2, vtkImageData *image, int blend_mode, double viewDirection[3], double viewUp[3])
This method can be used to render a representative view of the input data into the supplied image giv...
void SetInterpolationModeToNearestNeighbor()
Set interpolation mode for downsampling (lowres GPU) (initial value: cubic).
void SetRequestedRenderMode(int mode)
Set the requested render mode.
LowResModeType
LowResDisable disables low res mode (default) LowResResample enable low res mode by automatically res...
void SetRequestedRenderModeToRayCast()
Set the requested render mode to vtkSmartVolumeMapper::RayCastRenderMode.
void SetRequestedRenderModeToGPU()
Set the requested render mode to vtkSmartVolumeMapper::GPURenderMode.
static vtkSmartVolumeMapper * New()
void SetRequestedRenderModeToDefault()
Set the requested render mode to vtkSmartVolumeMapper::DefaultRenderMode.
void Render(vtkRenderer *, vtkVolume *) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Initialize rendering for this volume.
void SetInterpolationModeToCubic()
Set interpolation mode for downsampling (lowres GPU) (initial value: cubic).
VectorModeType
VectorMode is a special rendering mode for 3-component vectors which makes use of GPURayCastMapper's ...
record modification and/or execution time
Definition: vtkTimeStamp.h:34
Abstract class for a volume mapper.
represents the common properties for rendering a volume.
represents a volume (data & properties) in a rendered scene
Definition: vtkVolume.h:49
window superclass for vtkRenderWindow
Definition: vtkWindow.h:37
@ mode
Definition: vtkX3D.h:247
@ image
Definition: vtkX3D.h:374
int vtkTypeBool
Definition: vtkABI.h:64
#define VTK_RESLICE_CUBIC
#define VTK_RESLICE_NEAREST
int vtkIdType
Definition: vtkType.h:315