vtkSlicerGPUMultiVolumeMapper.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #ifndef __vtkSlicerGPUMultiVolumeMapper_h
00039 #define __vtkSlicerGPUMultiVolumeMapper_h
00040
00041 #include "vtkVolumeMapper.h"
00042 #include "vtkVolumeRenderingReplacements.h"
00043
00044 class vtkMultiThreader;
00045 class vtkImageData;
00046 class vtkColorTransferFunction;
00047 class vtkPiecewiseFunction;
00048 class vtkVolumeProperty;
00049
00050 class vtkSlicerGPUMultiVolumeMapper;
00051 typedef struct{
00052 float *dataPtr;
00053 vtkSlicerGPUMultiVolumeMapper *me;
00054 double scalarRange[2];
00055 unsigned char *volume;
00056 }GPUGradientsArgsType;
00057
00058 class VTK_VOLUMERENDERINGREPLACEMENTS_EXPORT vtkSlicerGPUMultiVolumeMapper : public vtkVolumeMapper
00059 {
00060 public:
00061 vtkTypeRevisionMacro(vtkSlicerGPUMultiVolumeMapper,vtkVolumeMapper);
00062 void PrintSelf(ostream& os, vtkIndent indent);
00063
00064 static vtkSlicerGPUMultiVolumeMapper *New();
00065
00066
00067
00068 vtkSetMacro(Framerate, float);
00069 vtkGetMacro(Framerate, float);
00070
00071
00072
00073 virtual void SetNthInput( int index, vtkImageData *);
00074 virtual void SetNthInput( int index, vtkDataSet *);
00075 vtkImageData *GetNthInput(int index);
00076
00077
00078
00079 vtkGetVectorMacro( VolumeDimensions, int, 3 );
00080
00081
00082
00083 vtkGetVectorMacro( VolumeSpacing, float, 3 );
00084
00085
00086
00087
00088
00089
00090 virtual int IsRenderSupported( vtkVolumeProperty * ) {return 0;};
00091
00092
00093
00094
00095
00096
00097
00098 virtual void Render(vtkRenderer *, vtkVolume *) {};
00099
00100 protected:
00101 vtkSlicerGPUMultiVolumeMapper();
00102 ~vtkSlicerGPUMultiVolumeMapper();
00103
00104 float ScalarOffset;
00105 float ScalarScale;
00106
00107 float ScalarOffset2nd;
00108 float ScalarScale2nd;
00109
00110 float Framerate;
00111
00112 unsigned char *Volume1;
00113 unsigned char *Volume2;
00114 unsigned char *Volume3;
00115 int VolumeSize;
00116 int VolumeDimensions[3];
00117 float VolumeSpacing[3];
00118
00119 vtkImageData *SavedTextureInput;
00120 vtkImageData *SavedTextureInput2nd;
00121
00122 vtkColorTransferFunction *SavedRGBFunction;
00123 vtkPiecewiseFunction *SavedGrayFunction;
00124 vtkPiecewiseFunction *SavedScalarOpacityFunction;
00125 vtkPiecewiseFunction *SavedGradientOpacityFunction;
00126 int SavedColorChannels;
00127 float SavedScalarOpacityDistance;
00128
00129 vtkColorTransferFunction *SavedRGBFunction2nd;
00130 vtkPiecewiseFunction *SavedGrayFunction2nd;
00131 vtkPiecewiseFunction *SavedScalarOpacityFunction2nd;
00132 vtkPiecewiseFunction *SavedGradientOpacityFunction2nd;
00133 int SavedColorChannels2nd;
00134 float SavedScalarOpacityDistance2nd;
00135
00136 unsigned char ColorLookup[256*256*4];
00137 float TempArray1[3*4096];
00138 float TempArray2[4096];
00139 int ColorTableSize;
00140
00141 unsigned char ColorLookup2nd[256*256*4];
00142 float TempArray11[3*4096];
00143 float TempArray21[4096];
00144 int ColorTableSize2nd;
00145
00146 vtkTimeStamp SavedTextureMTime;
00147 vtkTimeStamp SavedTextureMTime2nd;
00148
00149 vtkTimeStamp SavedColorOpacityMTime;
00150 vtkTimeStamp SavedColorOpacityMTime2nd;
00151
00152 vtkMultiThreader *Threader;
00153
00154 GPUGradientsArgsType *GradientsArgs;
00155
00156
00157
00158
00159
00160 int UpdateVolumes( vtkVolume * );
00161 int UpdateColorLookup( vtkVolume * );
00162
00163 void CopyToFloatBuffer(vtkImageData* input, float* floatDataPtr, int dataPtrSize);
00164
00165
00166
00167
00168 virtual int IsTextureSizeSupported( int [3] ) {return 0;};
00169
00170
00171 friend VTK_THREAD_RETURN_TYPE vtkSlicerGPUMultiVolumeMapperComputeGradients( void *arg );
00172
00173 private:
00174 vtkSlicerGPUMultiVolumeMapper(const vtkSlicerGPUMultiVolumeMapper&);
00175 void operator=(const vtkSlicerGPUMultiVolumeMapper&);
00176 };
00177
00178
00179 #endif
00180
00181
00182
00183
00184
00185