VTK  9.0.1
vtkVolumeInputHelper.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkVolumeInputHelper.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
30 #ifndef vtkVolumeInputHelper_h
31 #define vtkVolumeInputHelper_h
32 #ifndef __VTK_WRAP__
33 #include <map>
34 
36 #include "vtkSmartPointer.h" // For SmartPointer
37 #include "vtkTimeStamp.h" // For TimeStamp
38 
43 class vtkRenderer;
44 class vtkShaderProgram;
45 class vtkVolume;
46 class vtkVolumeTexture;
47 class vtkWindow;
48 
50 {
51 public:
52  vtkVolumeInputHelper() = default;
54 
56  vtkRenderer* ren, const int uniformIndex, const int blendMode, const float samplingDist);
57  void ForceTransferInit();
58 
59  void ActivateTransferFunction(vtkShaderProgram* prog, const int blendMode);
60  void DeactivateTransferFunction(const int blendMode);
61 
62  void ReleaseGraphicsResources(vtkWindow* window);
63 
65  vtkVolume* Volume = nullptr;
66 
72  {
73  INVALID = 0,
75  LA = 2,
76  RGBA = 4
77  };
79 
89 
93  std::map<int, std::string> RGBTablesMap;
94  std::map<int, std::string> OpacityTablesMap;
95  std::map<int, std::string> GradientOpacityTablesMap;
96  std::map<int, std::string> TransferFunctions2DMap;
97 
103  int ColorRangeType = 0; // vtkGPUVolumeRayCastMapper::SCALAR
104  int ScalarOpacityRangeType = 0; // vtkGPUVolumeRayCastMapper::SCALAR
105  int GradientOpacityRangeType = 0; // vtkGPUVolumeRayCastMapper::SCALAR
106 
112 
113 protected:
114  void InitializeTransferFunction(vtkRenderer* ren, const int index);
115 
116  void CreateTransferFunction1D(vtkRenderer* ren, const int index);
117  void CreateTransferFunction2D(vtkRenderer* ren, const int index);
118 
119  void UpdateTransferFunctions(vtkRenderer* ren, const int blendMode, const float samplingDist);
120  int UpdateOpacityTransferFunction(vtkRenderer* ren, vtkVolume* vol, unsigned int component,
121  const int blendMode, const float samplingDist);
122  int UpdateColorTransferFunction(vtkRenderer* ren, vtkVolume* vol, unsigned int component);
124  vtkRenderer* ren, vtkVolume* vol, unsigned int component, const float samplingDist);
125  void UpdateTransferFunction2D(vtkRenderer* ren, unsigned int component);
126 
127  void ReleaseGraphicsTransfer1D(vtkWindow* window);
128  void ReleaseGraphicsTransfer2D(vtkWindow* window);
129 
131  bool InitializeTransfer = true;
132 };
133 
134 #endif
135 #endif // vtkVolumeInputHelper_h
136 // VTK-HeaderTest-Exclude: vtkVolumeInputHelper.h
vtkVolumeInputHelper::TransferFunctions2D
vtkSmartPointer< vtkOpenGLVolumeLookupTables< vtkOpenGLVolumeTransferFunction2D > > TransferFunctions2D
Definition: vtkVolumeInputHelper.h:88
vtkOpenGLVolumeOpacityTable
Definition: vtkOpenGLVolumeOpacityTable.h:28
vtkVolumeInputHelper::GradientOpacityRangeType
int GradientOpacityRangeType
Definition: vtkVolumeInputHelper.h:105
vtkX3D::component
@ component
Definition: vtkX3D.h:181
vtkVolume
represents a volume (data & properties) in a rendered scene
Definition: vtkVolume.h:44
vtkVolumeInputHelper::ColorRangeType
int ColorRangeType
These values currently stored in vtkGPUVolumeRCMapper but should be moved into vtkVolumeProperty in o...
Definition: vtkVolumeInputHelper.h:103
vtkTimeStamp.h
vtkVolumeInputHelper::OpacityTablesMap
std::map< int, std::string > OpacityTablesMap
Definition: vtkVolumeInputHelper.h:94
vtkVolumeInputHelper::INVALID
@ INVALID
Definition: vtkVolumeInputHelper.h:73
vtkVolumeInputHelper::GradientCacheName
std::string GradientCacheName
Stores the uniform variable name where the gradient will be stored for this input in the fragment sha...
Definition: vtkVolumeInputHelper.h:111
vtkVolumeInputHelper::ReleaseGraphicsResources
void ReleaseGraphicsResources(vtkWindow *window)
vtkVolumeInputHelper::UpdateTransferFunctions
void UpdateTransferFunctions(vtkRenderer *ren, const int blendMode, const float samplingDist)
vtkVolumeInputHelper::RefreshTransferFunction
void RefreshTransferFunction(vtkRenderer *ren, const int uniformIndex, const int blendMode, const float samplingDist)
vtkTimeStamp
record modification and/or execution time
Definition: vtkTimeStamp.h:32
vtkVolumeInputHelper::Texture
vtkSmartPointer< vtkVolumeTexture > Texture
Definition: vtkVolumeInputHelper.h:64
vtkSmartPointer< vtkVolumeTexture >
vtkVolumeInputHelper::ReleaseGraphicsTransfer1D
void ReleaseGraphicsTransfer1D(vtkWindow *window)
vtkOpenGLVolumeGradientOpacityTable
Definition: vtkOpenGLVolumeGradientOpacityTable.h:26
vtkVolumeInputHelper::OpacityTables
vtkSmartPointer< vtkOpenGLVolumeLookupTables< vtkOpenGLVolumeOpacityTable > > OpacityTables
Definition: vtkVolumeInputHelper.h:85
vtkVolumeInputHelper::RGBTablesMap
std::map< int, std::string > RGBTablesMap
Maps uniform texture variable names to its corresponding texture unit.
Definition: vtkVolumeInputHelper.h:93
vtkVolumeInputHelper::LA
@ LA
Definition: vtkVolumeInputHelper.h:75
vtkWindow
window superclass for vtkRenderWindow
Definition: vtkWindow.h:37
vtkVolumeInputHelper::Volume
vtkVolume * Volume
Definition: vtkVolumeInputHelper.h:65
vtkVolumeInputHelper::UpdateColorTransferFunction
int UpdateColorTransferFunction(vtkRenderer *ren, vtkVolume *vol, unsigned int component)
vtkVolumeInputHelper::GradientOpacityTables
vtkSmartPointer< vtkOpenGLVolumeLookupTables< vtkOpenGLVolumeGradientOpacityTable > > GradientOpacityTables
Transfer function internal structures and helpers.
Definition: vtkVolumeInputHelper.h:84
vtkOpenGLVolumeLookupTables.h
vtkOpenGLVolumeTransferFunction2D
2D Transfer function container.
Definition: vtkOpenGLVolumeTransferFunction2D.h:38
vtkVolumeInputHelper::LutInit
vtkTimeStamp LutInit
Definition: vtkVolumeInputHelper.h:130
vtkVolumeInputHelper::UpdateGradientOpacityTransferFunction
int UpdateGradientOpacityTransferFunction(vtkRenderer *ren, vtkVolume *vol, unsigned int component, const float samplingDist)
vtkShaderProgram
The ShaderProgram uses one or more Shader objects.
Definition: vtkShaderProgram.h:44
vtkVolumeInputHelper::ReleaseGraphicsTransfer2D
void ReleaseGraphicsTransfer2D(vtkWindow *window)
vtkSmartPointer.h
vtkVolumeInputHelper::INDEPENDENT
@ INDEPENDENT
Definition: vtkVolumeInputHelper.h:74
vtkVolumeInputHelper::InitializeTransfer
bool InitializeTransfer
Definition: vtkVolumeInputHelper.h:131
vtkVolumeInputHelper::ActivateTransferFunction
void ActivateTransferFunction(vtkShaderProgram *prog, const int blendMode)
vtkVolumeInputHelper::UpdateOpacityTransferFunction
int UpdateOpacityTransferFunction(vtkRenderer *ren, vtkVolume *vol, unsigned int component, const int blendMode, const float samplingDist)
vtkVolumeInputHelper::CreateTransferFunction1D
void CreateTransferFunction1D(vtkRenderer *ren, const int index)
vtkVolumeInputHelper::TransferFunctions2DMap
std::map< int, std::string > TransferFunctions2DMap
Definition: vtkVolumeInputHelper.h:96
vtkVolumeTexture
Creates and manages the volume texture rendered by vtkOpenGLGPUVolumeRayCastMapper.
Definition: vtkVolumeTexture.h:85
vtkOpenGLVolumeRGBTable
Definition: vtkOpenGLVolumeRGBTable.h:26
vtkX3D::string
@ string
Definition: vtkX3D.h:496
vtkVolumeInputHelper::UpdateTransferFunction2D
void UpdateTransferFunction2D(vtkRenderer *ren, unsigned int component)
vtkVolumeInputHelper
Convenience container for internal structures specific to a volume input.
Definition: vtkVolumeInputHelper.h:49
vtkVolumeInputHelper::CreateTransferFunction2D
void CreateTransferFunction2D(vtkRenderer *ren, const int index)
vtkVolumeInputHelper::ComponentMode
ComponentMode
Defines the various component modes supported by vtkGPUVolumeRayCastMapper.
Definition: vtkVolumeInputHelper.h:71
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:67
vtkVolumeInputHelper::DeactivateTransferFunction
void DeactivateTransferFunction(const int blendMode)
vtkVolumeInputHelper::GradientOpacityTablesMap
std::map< int, std::string > GradientOpacityTablesMap
Definition: vtkVolumeInputHelper.h:95
vtkVolumeInputHelper::RGBTables
vtkSmartPointer< vtkOpenGLVolumeLookupTables< vtkOpenGLVolumeRGBTable > > RGBTables
Definition: vtkVolumeInputHelper.h:86
vtkVolumeInputHelper::InitializeTransferFunction
void InitializeTransferFunction(vtkRenderer *ren, const int index)
vtkVolumeInputHelper::ForceTransferInit
void ForceTransferInit()
vtkX3D::index
@ index
Definition: vtkX3D.h:252
vtkVolumeInputHelper::RGBA
@ RGBA
Definition: vtkVolumeInputHelper.h:76
vtkVolumeInputHelper::vtkVolumeInputHelper
vtkVolumeInputHelper()=default
vtkVolumeInputHelper::ScalarOpacityRangeType
int ScalarOpacityRangeType
Definition: vtkVolumeInputHelper.h:104