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
80VTK_ABI_NAMESPACE_BEGIN
86class vtkRenderWindow;
87class vtkVolume;
90
91class VTKRENDERINGVOLUMEOPENGL2_EXPORT vtkSmartVolumeMapper : public vtkVolumeMapper
92{
93public:
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
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();
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
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
578private:
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
600VTK_ABI_NAMESPACE_END
601#endif
abstract superclass for arrays of numeric data
abstract class to specify dataset behavior
Definition vtkDataSet.h:62
Ray casting performed on the GPU.
topologically and geometrically regular array of data
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:68
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.
static vtkSmartVolumeMapper * New()
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.
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
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:34
int vtkTypeBool
Definition vtkABI.h:64
#define VTK_RESLICE_CUBIC
#define VTK_RESLICE_NEAREST
int vtkIdType
Definition vtkType.h:315