Eigene Dateien/Vis/src/VVolumeRenderer.h

Go to the documentation of this file.
00001 #pragma once
00002 
00003 #ifndef __v_volume_renderer_h
00004 #define __v_volume_renderer_h
00005 
00006 #include "VRenderer.h"
00007 #include "VCamera.h"
00008 #include "VFramebufferObject.h"
00009 #include "VProgram.h"
00010 #include "VPlane.h"
00011 #include "VImage.h"
00012 
00016 enum RenderMode
00017 {
00018         MIP = 0,                
00019         DVR_FTB,                        
00020         DVR_BTF,                        
00021         COMB,
00022         CURVATURE
00023 };
00024 
00028 enum LightMode
00029 {       
00030         PHONG = 0,                      
00031         TOON,                   
00032         METAL,                  
00033 };
00034 
00038 enum PlanePosition
00039 {
00040         LEFT_RIGHT = 0,
00041         RIGHT_LEFT,
00042         BOTTOM_TOP,
00043         TOP_BOTTOM,
00044         FRONT_BACK,
00045         BACK_FRONT,
00046 };
00047 
00051 struct ClipSet
00052 {
00053         bool XNEG_STATE;
00054         bool XPOS_STATE;
00055         bool YNEG_STATE;
00056         bool YPOS_STATE;
00057         bool ZNEG_STATE;
00058         bool ZPOS_STATE;
00059 
00060         float XNEG_VALUE;
00061         float YNEG_VALUE;
00062         float ZNEG_VALUE;
00063         float XPOS_VALUE;
00064         float YPOS_VALUE;
00065         float ZPOS_VALUE;
00066 
00067 };
00068 
00072 __interface ShaderWrapper
00073 {
00077         void set();
00078 
00082         void clean();
00083         
00084 };
00085 
00086 
00090 class VVolumeRenderer : public VRenderer
00091 {
00092 public:
00093 
00097         VVolumeRenderer();
00098 
00103         VVolumeRenderer(VVolume * volume);
00104 
00108         ~VVolumeRenderer()
00109         {
00110                 m_Raycast = 0;
00111                 delete m_Raycast;
00112 
00113                 //m_NoiseTex = 0;
00114                 delete m_NoiseTex;
00115                 delete m_ToonTex;
00116                 delete m_MetalTex;
00117         }
00118 
00122         void draw();
00123 
00127         void drawFrontFaces();
00128 
00132         void drawFrontFacesToSmallQuad();
00133 
00137         void drawBackFaces();
00138 
00142         void drawBackFacesToSmallQuad();
00143 
00147         void processInput(guiInput input);
00148 
00157         void processSetPosition(float angle, VVector axis, VVector position, float scale);
00158 
00167         void processGuiInput(float dist, VVector pos, VVector view, VVector up, VVector lookAt);
00168 
00173         void setTransferFunctionHandle(unsigned int handle)
00174         {
00175                 m_TransferFunctionHandle = handle;
00176         }
00177 
00182         void setTransferFunction2DHandle(unsigned int handle)
00183         {
00184                 m_TransferFunction2DHandle = handle;
00185         }
00186 
00191         void setVolume(VVolume * volume)
00192         {
00193                 m_Volume = volume;
00194                 
00195                 maxSize = (m_Volume->getDimX() < m_Volume->getDimY()) ? (float)m_Volume->getDimY() : (float)m_Volume->getDimX();
00196                 maxSize = (maxSize < m_Volume->getDimZ()) ? (float)m_Volume->getDimZ() : maxSize;
00197                 xsize = (float)(m_Volume->getDimX())/(float)(2*maxSize);
00198                 ysize = (float)(m_Volume->getDimY())/(float)(2*maxSize);
00199                 zsize = (float)(m_Volume->getDimZ())/(float)(2*maxSize);
00200 
00201                 float xneg = m_ClipPlanes[LEFT_RIGHT];
00202                 float xpos = m_ClipPlanes[RIGHT_LEFT];
00203 
00204                 float yneg = m_ClipPlanes[BOTTOM_TOP];
00205                 float ypos = m_ClipPlanes[TOP_BOTTOM];
00206 
00207                 float zneg = m_ClipPlanes[FRONT_BACK];
00208                 float zpos = m_ClipPlanes[BACK_FRONT];
00209 
00210                 m_ClipPlaneObj[LEFT_RIGHT] = VPlane(VVector(-1.0f, 0.0f, 0.0f), VVector((-xsize) +  (xneg * xsize/0.5f), 0.0f, 0.0f));
00211                 m_ClipPlaneObj[RIGHT_LEFT] = VPlane(VVector(1.0f, 0.0f, 0.0f), VVector(xsize - ((1.0f - xpos) * xsize/0.5f), 0.0f, 0.0f));
00212 
00213                 m_ClipPlaneObj[BOTTOM_TOP] = VPlane(VVector(0.0f, -1.0f, 0.0f), VVector(0.0f, (-ysize) +  (yneg * ysize/0.5f), 0.0f));
00214                 m_ClipPlaneObj[TOP_BOTTOM] = VPlane(VVector(0.0f, 1.0f, 0.0f), VVector(0.0f, ysize - ((1.0f - ypos) * ysize/0.5f), 0.0f));
00215 
00216                 m_ClipPlaneObj[FRONT_BACK] = VPlane(VVector(0.0f, 0.0f, -1.0f), VVector(0.0f, 0.0f, (-zsize) +  (zneg * zsize/0.5f)));
00217                 m_ClipPlaneObj[BACK_FRONT] = VPlane(VVector(0.0f, 0.0f, 1.0f), VVector(0.0f, 0.0f, zsize - ((1.0f - zpos) * zsize/0.5f)));
00218 
00219                 m_Tex2WorldSpace.clearMatrix();
00220                 //m_Tex2WorldSpace.scale(VVector(2.0f, 2.0f, 2.0f));
00221                 m_Tex2WorldSpace.translate(VVector(-0.5f, -0.5f, -0.5f));
00222 
00223                 VVector test = m_Tex2WorldSpace.homogenTransform(VVector(1.0f, 1.0f, 1.0f));
00224                 //m_Tex2WorldSpace.scale(VVector(0.5f + xsize, 0.5f + ysize, 0.5f + zsize));
00225                 //m_Tex2WorldSpace.translate(VVector(-1.0f, -1.0f, -1.0f));
00226                 //m_Tex2WorldSpace.scale(VVector(xsize, ysize, zsize));
00227                 
00228 
00229                 m_updateDL = true;
00230         }
00231 
00236         VVector getCameraSideVector()
00237         {
00238                 VMatrix viewm = m_Camera.getViewMatrix();
00239 
00240                 return VVector(viewm[0], viewm[4], viewm[8]);
00241         }
00242 
00247         VVector getCameraUpVector()
00248         {
00249                 VMatrix viewm = m_Camera.getViewMatrix();
00250 
00251                 return VVector(viewm[1], viewm[5], viewm[9]);
00252         }
00253         
00258         VImage* getNoiseTexHandle()
00259         {
00260                 return m_NoiseTex;
00261         }
00262 
00267         VImage* getToonTexHandle()
00268         {
00269                 return m_ToonTex;
00270         }
00271 
00276         VImage* getMetalTexHandle()
00277         {
00278                 return m_MetalTex;
00279         }
00280 
00286         void resize(int width, int height);
00287 
00291         void resetProxyGeometry()
00292         {
00293                 generateProxyGeometryDisplayList();
00294         }
00295 
00300         void setRenderMode(RenderMode rm);
00301 
00306         void setShadows(bool b)
00307         {
00308                 m_shadows = b;
00309                 setRenderMode(m_renderMode);
00310         }
00311 
00316         void setContours(bool b)
00317         {
00318                 m_contours = b;
00319                 setRenderMode(m_renderMode);
00320         }
00321 
00326         void setThresholdL(float t)
00327         {
00328                 m_thresholdL = t;
00329         }
00330 
00335         void setThresholdH(float t)
00336         {
00337                 m_thresholdH = t;
00338         }
00339 
00344         void setLightMode(LightMode rm)
00345         {
00346                 m_lightMode = rm;
00347                 setRenderMode(m_renderMode);
00348         }
00349 
00355         void setClipPlane(PlanePosition plane, float value)
00356         {
00357                 m_ClipPlanes[plane] = value;
00358                 
00359                 float xneg = m_ClipPlanes[LEFT_RIGHT];
00360                 float xpos = m_ClipPlanes[RIGHT_LEFT];
00361                 float yneg = m_ClipPlanes[BOTTOM_TOP];
00362                 float ypos = m_ClipPlanes[TOP_BOTTOM];
00363                 float zneg = m_ClipPlanes[FRONT_BACK];
00364                 float zpos = m_ClipPlanes[BACK_FRONT];
00365 
00366                 switch(plane)
00367                 {
00368                 case LEFT_RIGHT:
00369                         m_ClipPlaneObj[LEFT_RIGHT] = VPlane(VVector(-1.0f, 0.0f, 0.0f), VVector((-xsize) +  (xneg * xsize/0.5f), 0.0f, 0.0f));
00370                         break;
00371                 case RIGHT_LEFT:
00372                         m_ClipPlaneObj[RIGHT_LEFT] = VPlane(VVector(1.0f, 0.0f, 0.0f), VVector(xsize - ((1.0f - xpos) * xsize/0.5f), 0.0f, 0.0f));
00373                         break;
00374                 case BOTTOM_TOP:
00375                         m_ClipPlaneObj[BOTTOM_TOP] = VPlane(VVector(0.0f, -1.0f, 0.0f), VVector(0.0f, (-ysize) +  (yneg * ysize/0.5f), 0.0f));
00376                         break;
00377                 case TOP_BOTTOM:
00378                         m_ClipPlaneObj[TOP_BOTTOM] = VPlane(VVector(0.0f, 1.0f, 0.0f), VVector(0.0f, ysize - ((1.0f - ypos) * ysize/0.5f), 0.0f));
00379                         break;
00380                 case FRONT_BACK:
00381                         m_ClipPlaneObj[FRONT_BACK] = VPlane(VVector(0.0f, 0.0f, -1.0f), VVector(0.0f, 0.0f, (-zsize) +  (zneg * zsize/0.5f)));
00382                         break;
00383                 case BACK_FRONT:
00384                         m_ClipPlaneObj[BACK_FRONT] = VPlane(VVector(0.0f, 0.0f, 1.0f), VVector(0.0f, 0.0f, zsize - ((1.0f - zpos) * zsize/0.5f)));
00385                         break;
00386                 }
00387                 m_updateDL = true;
00388         }
00389 
00394         void setLightDir(VVector dir)
00395         {
00396                 m_LightDir[0] = dir.getX();
00397                 m_LightDir[1] = dir.getY();
00398                 m_LightDir[2] = dir.getZ();
00399         }
00400 
00406         float signum(float n)
00407         {
00408                 if (n < 0.0f) return -1.0f;
00409                 if (n > 0.0f) return 1.0f;
00410                 return 0.0f;
00411         }
00412 
00417         void setClearColor(float * color)
00418         {
00419                 m_ClearColor[0] = color[0];
00420                 m_ClearColor[1] = color[1];
00421                 m_ClearColor[2] = color[2];
00422         }
00423 
00428         void initContourTexture();
00429 
00433         void loadProgram()
00434         {
00435                 m_WorldPosProgram = VProgram(VVertexShader("shader/worldpos_vertex.glsl"), VFragmentShader("shader/worldpos_fragment.glsl"));
00436                 
00437                 m_WorldWorldProgram = VProgram(VVertexShader("shader/worldpos_world_vertex.glsl"), VFragmentShader("shader/worldpos_fragment.glsl"));
00438                 
00439                 m_RayCasterMIP = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_mip.glsl"));
00440                 m_RayCasterMIPtf = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_miptf.glsl"));
00441                 m_RayCasterMIPtf2d = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_miptf.glsl"));
00442 
00443                 m_RayCasterDVR = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvr.glsl"));
00444                 m_RayCasterDVRtf = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrtf.glsl"));
00445                 m_RayCasterDVRtf2d = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrtf2d.glsl"));
00446 
00447                 m_RayCasterDVR_BTF      = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrbtf.glsl"));
00448                 m_RayCasterDVR_BTFtf = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrbtftf.glsl"));
00449                 m_RayCasterDVR_BTFtf2d = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrbtftf2d.glsl"));
00450 
00451                 m_RayCasterCOMB_Phong                           = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrphong.glsl"));
00452                 m_RayCasterCOMB_PhongCont                       = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrphongcont.glsl"));
00453                 m_RayCasterCOMB_PhongContourShadow      = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrphongcontshadow.glsl"));
00454                 m_RayCasterCOMB_PhongShadow                     = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrphongshadow.glsl"));
00455 
00456                 m_RayCasterCOMB_Phongt2f                                = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrphongt2f.glsl"));
00457                 m_RayCasterCOMB_PhongContt2f                    = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrphongcontt2f.glsl"));
00458                 m_RayCasterCOMB_PhongContourShadowt2f   = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrphongcontshadowt2f.glsl"));
00459                 m_RayCasterCOMB_PhongShadowt2f                  = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrphongshadowt2f.glsl"));
00460                 
00461                 
00462                 m_RayCasterCOMB_Toon                            = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrtoon.glsl"));
00463                 m_RayCasterCOMB_ToonCont                        = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrtooncont.glsl"));
00464                 m_RayCasterCOMB_ToonContourShadow       = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrtooncontshadow.glsl"));
00465                 m_RayCasterCOMB_ToonShadow                      = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrtoonshadow.glsl"));
00466 
00467                 m_RayCasterCOMB_Toon2f                          = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrtoon2f.glsl"));
00468                 m_RayCasterCOMB_ToonCont2f                      = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrtooncont2f.glsl"));
00469                 m_RayCasterCOMB_ToonContourShadow2f     = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrtooncontshadow2f.glsl"));
00470                 m_RayCasterCOMB_ToonShadow2f            = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrtoonshadow2f.glsl"));
00471                 
00472                 m_RayCasterCOMB_Metal                           = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrmetal.glsl"));
00473                 m_RayCasterCOMB_MetalCont                       = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrmetalcont.glsl"));
00474                 m_RayCasterCOMB_MetalContourShadow      = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrmetalcontshadow.glsl"));
00475                 m_RayCasterCOMB_MetalShadow                     = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrmetalshadow.glsl"));
00476 
00477 
00478                 m_RayCasterCOMB_Metal2f                         = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrmetal2f.glsl"));
00479                 m_RayCasterCOMB_MetalCont2f                     = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrmetalcont2f.glsl"));
00480                 m_RayCasterCOMB_MetalContourShadow2f    = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrmetalcontshadow2f.glsl"));
00481                 m_RayCasterCOMB_MetalShadow2f           = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_dvrmetalshadow2f.glsl"));
00482 
00483                 m_RayCasterCOMB_Curvature       = VProgram(VVertexShader("shader/raycaster_vertex.glsl"), VFragmentShader("shader/raycaster_fragment_curvature.glsl"));
00484 
00485                 m_ProgramLoaded = true;
00486         }
00487 
00492         void activate_tf(int v)
00493         {
00494                 m_tf_activated = v;
00495                 setRenderMode(m_renderMode);
00496         }
00497 
00502         bool getProgramLoaded()
00503         {
00504                 return m_ProgramLoaded;
00505         }
00506 
00513         void setOrthoMode(bool m_orth, int width = 0, int height = 0);
00514 
00518         void setShaderWrapperMIP();
00519 
00523         void setShaderWrapperMIPtf();
00524 
00528         void setShaderWrapperMIPtf2d();
00529 
00533         void setShaderWrapperDVR();
00534 
00538         void setShaderWrapperDVRtf();
00539 
00543         void setShaderWrapperDVRtf2d();
00544 
00548         void setShaderWrapperDVRbtf();
00549 
00553         void setShaderWrapperDVRbtftf();
00554 
00558         void setShaderWrapperDVRbtftf2d();
00559 
00564         void setShaderWrapperDVRCombPhong();
00565 
00569         void setShaderWrapperDVRCombPhongCont();
00570 
00574         void setShaderWrapperDVRCombPhongShadow();
00575 
00579         void setShaderWrapperDVRCombPhongContShadow();
00580 
00584         void setShaderWrapperDVRCombPhongt2f();
00585 
00589         void setShaderWrapperDVRCombPhongContt2f();
00590 
00594         void setShaderWrapperDVRCombPhongShadowt2f();
00595 
00599         void setShaderWrapperDVRCombPhongContShadowt2f();
00600 
00604         void setShaderWrapperDVRCombToon();
00605 
00609         void setShaderWrapperDVRCombToonCont();
00610 
00614         void setShaderWrapperDVRCombToonShadow();
00615 
00619         void setShaderWrapperDVRCombToonContShadow();
00620 
00624         void setShaderWrapperDVRCombToon2f();
00625 
00629         void setShaderWrapperDVRCombToonCont2f();
00630 
00634         void setShaderWrapperDVRCombToonShadow2f();
00635 
00639         void setShaderWrapperDVRCombToonContShadow2f();
00640 
00644         void setShaderWrapperDVRCombMetal();
00645 
00649         void setShaderWrapperDVRCombMetalCont();
00650 
00654         void setShaderWrapperDVRCombMetalShadow();
00655 
00659         void setShaderWrapperDVRCombMetalContShadow();
00660 
00664         void setShaderWrapperDVRCombMetal2f();
00665 
00669         void setShaderWrapperDVRCombMetalCont2f();
00670 
00674         void setShaderWrapperDVRCombMetalShadow2f();
00675 
00679         void setShaderWrapperDVRCombMetalContShadow2f();
00680 
00684         void setShaderWrapperCurvature();
00685 
00686 
00690         void clearShaderWrapperMIP();
00691 
00695         void clearShaderWrapperMIPtf();
00696 
00700         void clearShaderWrapperMIPtf2d();
00701 
00705         void clearShaderWrapperDVR();
00706 
00710         void clearShaderWrapperDVRtf();
00711 
00715         void clearShaderWrapperDVRtf2d();
00716 
00720         void clearShaderWrapperDVRbtf();
00721 
00725         void clearShaderWrapperDVRbtftf();
00726 
00730         void clearShaderWrapperDVRbtftf2d();
00731 
00735         void clearShaderWrapperDVRCombPhong();
00736 
00740         void clearShaderWrapperDVRCombPhongCont();
00741 
00745         void clearShaderWrapperDVRCombPhongShadow();
00746 
00750         void clearShaderWrapperDVRCombPhongContShadow();
00751 
00755         void clearShaderWrapperDVRCombPhongt2f();
00756 
00760         void clearShaderWrapperDVRCombPhongContt2f();
00761 
00765         void clearShaderWrapperDVRCombPhongShadowt2f();
00766 
00770         void clearShaderWrapperDVRCombPhongContShadowt2f();
00771 
00775         void clearShaderWrapperDVRCombToon();   
00776 
00780         void clearShaderWrapperDVRCombToonCont();
00781 
00785         void clearShaderWrapperDVRCombToonShadow();
00786 
00790         void clearShaderWrapperDVRCombToonContShadow();
00791 
00795         void clearShaderWrapperDVRCombToon2f(); 
00796 
00800         void clearShaderWrapperDVRCombToonCont2f();
00801 
00805         void clearShaderWrapperDVRCombToonShadow2f();
00806 
00810         void clearShaderWrapperDVRCombToonContShadow2f();
00811 
00815         void clearShaderWrapperDVRCombMetal();
00816 
00820         void clearShaderWrapperDVRCombMetalCont();
00821 
00825         void clearShaderWrapperDVRCombMetalShadow();
00826 
00830         void clearShaderWrapperDVRCombMetalContShadow();
00831 
00835         void clearShaderWrapperDVRCombMetal2f();
00836 
00840         void clearShaderWrapperDVRCombMetalCont2f();
00841 
00845         void clearShaderWrapperDVRCombMetalShadow2f();
00846 
00850         void clearShaderWrapperDVRCombMetalContShadow2f();
00851 
00855         void clearShaderWrapperCurvature();
00856 
00857 private:
00858 
00859 
00863         class ShaderWrapperMIP: public ShaderWrapper
00864         {
00865                 public:
00866                         VVolumeRenderer *vrendererptr;                          
00872                         ShaderWrapperMIP(VVolumeRenderer *vrptr)
00873                         {
00874                                 vrendererptr = vrptr;
00875                         }
00876                                 
00880                          void ShaderWrapper::set()
00881                         {
00882                                 vrendererptr->setShaderWrapperMIP();
00883                         }
00884 
00888                          void ShaderWrapper::clean()
00889                          {
00890                                  vrendererptr->clearShaderWrapperMIP();
00891                          }
00892 
00896                         ~ShaderWrapperMIP()
00897                         {
00898                                 //shaderprogram = 0;
00899                                 vrendererptr = 0;
00900                                 delete vrendererptr;
00901                         }
00902         };
00903 
00907         class ShaderWrapperMIPtf: public ShaderWrapper
00908         {
00909                 public:
00910                         VVolumeRenderer *vrendererptr;                          
00916                         ShaderWrapperMIPtf(VVolumeRenderer *vrptr)
00917                         {
00918                                 vrendererptr = vrptr;
00919                         }
00920                         
00924                         void ShaderWrapper::set()
00925                         {
00926                                 vrendererptr->setShaderWrapperMIPtf();
00927                         }
00928                         
00932                         void ShaderWrapper::clean()
00933                          {
00934                                  vrendererptr->clearShaderWrapperMIPtf();
00935                          }
00936 
00940                         ~ShaderWrapperMIPtf()
00941                         {
00942                                 //shaderprogram = 0;
00943                                 vrendererptr = 0;
00944                                 delete vrendererptr;
00945                         }
00946         };
00947 
00951         class ShaderWrapperMIPtf2d: public ShaderWrapper
00952         {
00953                 public:
00954                         VVolumeRenderer *vrendererptr;                          
00960                         ShaderWrapperMIPtf2d(VVolumeRenderer *vrptr)
00961                         {
00962                                 vrendererptr = vrptr;
00963                         }
00964                         
00968                         void ShaderWrapper::set()
00969                         {
00970                                 vrendererptr->setShaderWrapperMIPtf2d();
00971                         }
00972                         
00976                         void ShaderWrapper::clean()
00977                          {
00978                                  vrendererptr->clearShaderWrapperMIPtf2d();
00979                          }
00980 
00984                         ~ShaderWrapperMIPtf2d()
00985                         {
00986                                 //shaderprogram = 0;
00987                                 vrendererptr = 0;
00988                                 delete vrendererptr;
00989                         }
00990         };
00991 
00995         class ShaderWrapperDVR: public ShaderWrapper
00996         {
00997                 public:
00998                         VVolumeRenderer *vrendererptr;                          
01004                         ShaderWrapperDVR(VVolumeRenderer *vrptr)
01005                         {
01006                                 vrendererptr = vrptr;
01007                         }
01008                         
01012                         void ShaderWrapper::set()
01013                         {
01014                                 vrendererptr->setShaderWrapperDVR();
01015                         }
01016                         
01020                         void ShaderWrapper::clean()
01021                         {
01022                          vrendererptr->clearShaderWrapperDVR();
01023                         }
01024                         
01028                         ~ShaderWrapperDVR()
01029                         {
01030                                 //shaderprogram = 0;
01031                                 vrendererptr = 0;
01032                                 delete vrendererptr;
01033                         }
01034         };
01035 
01039         class ShaderWrapperDVRtf: public ShaderWrapper
01040         {
01041                 public:
01042                         VVolumeRenderer *vrendererptr;                          
01048                         ShaderWrapperDVRtf(VVolumeRenderer *vrptr)
01049                         {
01050                                 vrendererptr = vrptr;
01051                         }
01052                         
01056                         void ShaderWrapper::set()
01057                         {
01058                                 vrendererptr->setShaderWrapperDVRtf();
01059                         }
01060                         
01064                         void ShaderWrapper::clean()
01065                         {
01066                          vrendererptr->clearShaderWrapperDVRtf();
01067                         }
01068 
01069                         ~ShaderWrapperDVRtf()
01070                         {
01071                                 //shaderprogram = 0;
01072                                 vrendererptr = 0;
01073                                 delete vrendererptr;
01074                         }
01075         };
01076 
01080         class ShaderWrapperDVRtf2d: public ShaderWrapper
01081         {
01082                 public:
01083                         VVolumeRenderer *vrendererptr;                          
01089                         ShaderWrapperDVRtf2d(VVolumeRenderer *vrptr)
01090                         {
01091                                 vrendererptr = vrptr;
01092                         }
01093                         
01097                         void ShaderWrapper::set()
01098                         {
01099                                 vrendererptr->setShaderWrapperDVRtf2d();
01100                         }
01101                         
01105                         void ShaderWrapper::clean()
01106                         {
01107                          vrendererptr->clearShaderWrapperDVRtf2d();
01108                         }
01109 
01113                         ~ShaderWrapperDVRtf2d()
01114                         {
01115                                 //shaderprogram = 0;
01116                                 vrendererptr = 0;
01117                                 delete vrendererptr;
01118                         }
01119         };
01120 
01124         class ShaderWrapperDVRbtf: public ShaderWrapper
01125         {
01126                 public:
01127                         VVolumeRenderer *vrendererptr;                          
01133                         ShaderWrapperDVRbtf(VVolumeRenderer *vrptr)
01134                         {
01135                                 vrendererptr = vrptr;
01136                         }
01137                         
01141                         void ShaderWrapper::set()
01142                         {
01143                                 vrendererptr->setShaderWrapperDVRbtf();
01144                         }
01145                         
01149                         void ShaderWrapper::clean()
01150                         {
01151                          vrendererptr->clearShaderWrapperDVRbtf();
01152                         }
01153                         
01157                         ~ShaderWrapperDVRbtf()
01158                         {
01159                                 //shaderprogram = 0;
01160                                 vrendererptr = 0;
01161                                 delete vrendererptr;
01162                         }
01163         };
01164 
01168         class ShaderWrapperDVRbtftf: public ShaderWrapper
01169         {
01170                 public:
01171                         VVolumeRenderer *vrendererptr;                          
01177                         ShaderWrapperDVRbtftf(VVolumeRenderer *vrptr)
01178                         {
01179                                 vrendererptr = vrptr;
01180                         }
01181                         
01185                         void ShaderWrapper::set()
01186                         {
01187                                 vrendererptr->setShaderWrapperDVRbtftf();
01188                         }
01189                         
01193                         void ShaderWrapper::clean()
01194                         {
01195                          vrendererptr->clearShaderWrapperDVRbtftf();
01196                         }
01197                         ~ShaderWrapperDVRbtftf()
01198                         {
01199                                 //shaderprogram = 0;
01200                                 vrendererptr = 0;
01201                                 delete vrendererptr;
01202                         }
01203         };
01204 
01208         class ShaderWrapperDVRbtftf2d: public ShaderWrapper
01209         {
01210                 public:
01211                         VVolumeRenderer *vrendererptr;                          
01217                         ShaderWrapperDVRbtftf2d(VVolumeRenderer *vrptr)
01218                         {
01219                                 vrendererptr = vrptr;
01220                         }
01221                         
01225                         void ShaderWrapper::set()
01226                         {
01227                                 vrendererptr->setShaderWrapperDVRbtftf2d();
01228                         }
01229                         
01233                         void ShaderWrapper::clean()
01234                         {
01235                          vrendererptr->clearShaderWrapperDVRbtftf2d();
01236                         }
01237 
01241                         ~ShaderWrapperDVRbtftf2d()
01242                         {
01243                                 //shaderprogram = 0;
01244                                 vrendererptr = 0;
01245                                 delete vrendererptr;
01246                         }
01247         };
01248 
01249 
01253         class ShaderWrapperDVRCombPhong: public ShaderWrapper
01254         {
01255         public:
01256                 VVolumeRenderer *vrendererptr;                          
01262                 ShaderWrapperDVRCombPhong(VVolumeRenderer *vrptr)
01263                 {
01264                         vrendererptr = vrptr;
01265                 }
01266                 
01270                 void ShaderWrapper::set()
01271                 {
01272                         vrendererptr->setShaderWrapperDVRCombPhong();
01273                 }
01274                 
01278                 void ShaderWrapper::clean()
01279                 {
01280                         vrendererptr->clearShaderWrapperDVRCombPhong();
01281                 }
01282 
01286                 ~ShaderWrapperDVRCombPhong()
01287                 {
01288                         //shaderprogram = 0;
01289                         vrendererptr = 0;
01290                         delete vrendererptr;
01291                 }
01292         };
01293 
01297         class ShaderWrapperDVRCombPhongCont: public ShaderWrapper
01298         {
01299         public:
01300                 VVolumeRenderer *vrendererptr;                          
01306                 ShaderWrapperDVRCombPhongCont(VVolumeRenderer *vrptr)
01307                 {
01308                         vrendererptr = vrptr;
01309                 }
01310                 
01314                 void ShaderWrapper::set()
01315                 {
01316                         vrendererptr->setShaderWrapperDVRCombPhongCont();
01317                 }
01318                 
01322                 void ShaderWrapper::clean()
01323                 {
01324                         vrendererptr->clearShaderWrapperDVRCombPhongCont();
01325                 }
01326 
01330                 ~ShaderWrapperDVRCombPhongCont()
01331                 {
01332                         //shaderprogram = 0;
01333                         vrendererptr = 0;
01334                         delete vrendererptr;
01335                 }
01336         };
01337 
01341         class ShaderWrapperDVRCombPhongShadow: public ShaderWrapper
01342         {
01343         public:
01344                 VVolumeRenderer *vrendererptr;                          
01350                 ShaderWrapperDVRCombPhongShadow(VVolumeRenderer *vrptr)
01351                 {
01352                         vrendererptr = vrptr;
01353                 }
01354                 
01358                 void ShaderWrapper::set()
01359                 {
01360                         vrendererptr->setShaderWrapperDVRCombPhongShadow();
01361                 }
01362                 
01366                 void ShaderWrapper::clean()
01367                 {
01368                         vrendererptr->clearShaderWrapperDVRCombPhongShadow();
01369                 }
01370 
01374                 ~ShaderWrapperDVRCombPhongShadow()
01375                 {
01376                         //shaderprogram = 0;
01377                         vrendererptr = 0;
01378                         delete vrendererptr;
01379                 }
01380         };
01381 
01385         class ShaderWrapperDVRCombPhongContShadow: public ShaderWrapper
01386         {
01387         public:
01388                 VVolumeRenderer *vrendererptr;                          
01394                 ShaderWrapperDVRCombPhongContShadow(VVolumeRenderer *vrptr)
01395                 {
01396                         vrendererptr = vrptr;
01397                 }
01398 
01402                 void ShaderWrapper::set()
01403                 {
01404                         vrendererptr->setShaderWrapperDVRCombPhongContShadow();
01405                 }
01406                 
01410                 void ShaderWrapper::clean()
01411                 {
01412                         vrendererptr->clearShaderWrapperDVRCombPhongContShadow();
01413                 }
01414 
01418                 ~ShaderWrapperDVRCombPhongContShadow()
01419                 {
01420                         //shaderprogram = 0;
01421                         vrendererptr = 0;
01422                         delete vrendererptr;
01423                 }
01424         };
01425 
01426 
01427 
01431         class ShaderWrapperDVRCombPhongt2f: public ShaderWrapper
01432         {
01433         public:
01434                 VVolumeRenderer *vrendererptr;                          
01440                 ShaderWrapperDVRCombPhongt2f(VVolumeRenderer *vrptr)
01441                 {
01442                         vrendererptr = vrptr;
01443                 }
01444                 
01448                 void ShaderWrapper::set()
01449                 {
01450                         vrendererptr->setShaderWrapperDVRCombPhongt2f();
01451                 }
01452                 
01456                 void ShaderWrapper::clean()
01457                 {
01458                         vrendererptr->clearShaderWrapperDVRCombPhongt2f();
01459                 }
01460 
01464                 ~ShaderWrapperDVRCombPhongt2f()
01465                 {
01466                         //shaderprogram = 0;
01467                         vrendererptr = 0;
01468                         delete vrendererptr;
01469                 }
01470         };
01471 
01475         class ShaderWrapperDVRCombPhongContt2f: public ShaderWrapper
01476         {
01477         public:
01478                 VVolumeRenderer *vrendererptr;                          
01484                 ShaderWrapperDVRCombPhongContt2f(VVolumeRenderer *vrptr)
01485                 {
01486                         vrendererptr = vrptr;
01487                 }
01488                 
01492                 void ShaderWrapper::set()
01493                 {
01494                         vrendererptr->setShaderWrapperDVRCombPhongContt2f();
01495                 }
01496                 
01500                 void ShaderWrapper::clean()
01501                 {
01502                         vrendererptr->clearShaderWrapperDVRCombPhongContt2f();
01503                 }
01504 
01508                 ~ShaderWrapperDVRCombPhongContt2f()
01509                 {
01510                         //shaderprogram = 0;
01511                         vrendererptr = 0;
01512                         delete vrendererptr;
01513                 }
01514         };
01515 
01519         class ShaderWrapperDVRCombPhongShadowt2f: public ShaderWrapper
01520         {
01521         public:
01522                 VVolumeRenderer *vrendererptr;                          
01528                 ShaderWrapperDVRCombPhongShadowt2f(VVolumeRenderer *vrptr)
01529                 {
01530                         vrendererptr = vrptr;
01531                 }
01532                 
01536                 void ShaderWrapper::set()
01537                 {
01538                         vrendererptr->setShaderWrapperDVRCombPhongShadowt2f();
01539                 }
01540                 
01544                 void ShaderWrapper::clean()
01545                 {
01546                         vrendererptr->clearShaderWrapperDVRCombPhongShadowt2f();
01547                 }
01548 
01552                 ~ShaderWrapperDVRCombPhongShadowt2f()
01553                 {
01554                         //shaderprogram = 0;
01555                         vrendererptr = 0;
01556                         delete vrendererptr;
01557                 }
01558         };
01559 
01563         class ShaderWrapperDVRCombPhongContShadowt2f: public ShaderWrapper
01564         {
01565         public:
01566                 VVolumeRenderer *vrendererptr;                          
01572                 ShaderWrapperDVRCombPhongContShadowt2f(VVolumeRenderer *vrptr)
01573                 {
01574                         vrendererptr = vrptr;
01575                 }
01576                 
01580                 void ShaderWrapper::set()
01581                 {
01582                         vrendererptr->setShaderWrapperDVRCombPhongContShadowt2f();
01583                 }
01584                 
01588                 void ShaderWrapper::clean()
01589                 {
01590                         vrendererptr->clearShaderWrapperDVRCombPhongContShadowt2f();
01591                 }
01592 
01596                 ~ShaderWrapperDVRCombPhongContShadowt2f()
01597                 {
01598                         //shaderprogram = 0;
01599                         vrendererptr = 0;
01600                         delete vrendererptr;
01601                 }
01602         };
01603 
01607         class ShaderWrapperDVRCombToon: public ShaderWrapper
01608         {
01609         public:
01610                 VVolumeRenderer *vrendererptr;                          
01616                 ShaderWrapperDVRCombToon(VVolumeRenderer *vrptr)
01617                 {
01618                         vrendererptr = vrptr;
01619                 }
01620                 
01624                 void ShaderWrapper::set()
01625                 {
01626                         vrendererptr->setShaderWrapperDVRCombToon();
01627                 }
01628                 
01632                 void ShaderWrapper::clean()
01633                 {
01634                         vrendererptr->clearShaderWrapperDVRCombToon();
01635                 }
01636 
01640                 ~ShaderWrapperDVRCombToon()
01641                 {
01642                         //shaderprogram = 0;
01643                         vrendererptr = 0;
01644                         delete vrendererptr;
01645                 }
01646         };
01647 
01651         class ShaderWrapperDVRCombToonCont: public ShaderWrapper
01652         {
01653         public:
01654                 VVolumeRenderer *vrendererptr;                          
01660                 ShaderWrapperDVRCombToonCont(VVolumeRenderer *vrptr)
01661                 {
01662                         vrendererptr = vrptr;
01663                 }
01664                 
01668                 void ShaderWrapper::set()
01669                 {
01670                         vrendererptr->setShaderWrapperDVRCombToonCont();
01671                 }
01672                 
01676                 void ShaderWrapper::clean()
01677                 {
01678                         vrendererptr->clearShaderWrapperDVRCombToonCont();
01679                 }
01680 
01684                 ~ShaderWrapperDVRCombToonCont()
01685                 {
01686                         //shaderprogram = 0;
01687                         vrendererptr = 0;
01688                         delete vrendererptr;
01689                 }
01690         };
01691 
01695         class ShaderWrapperDVRCombToonShadow: public ShaderWrapper
01696         {
01697         public:
01698                 VVolumeRenderer *vrendererptr;                          
01704                 ShaderWrapperDVRCombToonShadow(VVolumeRenderer *vrptr)
01705                 {
01706                         vrendererptr = vrptr;
01707                 }
01708                 
01712                 void ShaderWrapper::set()
01713                 {
01714                         vrendererptr->setShaderWrapperDVRCombToonShadow();
01715                 }
01716                 
01720                 void ShaderWrapper::clean()
01721                 {
01722                         vrendererptr->clearShaderWrapperDVRCombToonShadow();
01723                 }
01724 
01728                 ~ShaderWrapperDVRCombToonShadow()
01729                 {
01730                         //shaderprogram = 0;
01731                         vrendererptr = 0;
01732                         delete vrendererptr;
01733                 }
01734         };
01735 
01739         class ShaderWrapperDVRCombToonContShadow: public ShaderWrapper
01740         {
01741         public:
01742                 VVolumeRenderer *vrendererptr;                          
01748                 ShaderWrapperDVRCombToonContShadow(VVolumeRenderer *vrptr)
01749                 {
01750                         vrendererptr = vrptr;
01751                 }
01752 
01756                 void ShaderWrapper::set()
01757                 {
01758                         vrendererptr->setShaderWrapperDVRCombToonContShadow();
01759                 }
01760                 
01764                 void ShaderWrapper::clean()
01765                 {
01766                         vrendererptr->clearShaderWrapperDVRCombToonContShadow();
01767                 }
01768 
01772                 ~ShaderWrapperDVRCombToonContShadow()
01773                 {
01774                         //shaderprogram = 0;
01775                         vrendererptr = 0;
01776                         delete vrendererptr;
01777                 }
01778         };
01779 
01783         class ShaderWrapperDVRCombToon2f: public ShaderWrapper
01784         {
01785         public:
01786                 VVolumeRenderer *vrendererptr;                          
01792                 ShaderWrapperDVRCombToon2f(VVolumeRenderer *vrptr)
01793                 {
01794                         vrendererptr = vrptr;
01795                 }
01796                 
01800                 void ShaderWrapper::set()
01801                 {
01802                         vrendererptr->setShaderWrapperDVRCombToon2f();
01803                 }
01804                 
01808                 void ShaderWrapper::clean()
01809                 {
01810                         vrendererptr->clearShaderWrapperDVRCombToon2f();
01811                 }
01812 
01816                 ~ShaderWrapperDVRCombToon2f()
01817                 {
01818                         //shaderprogram = 0;
01819                         vrendererptr = 0;
01820                         delete vrendererptr;
01821                 }
01822         };
01823 
01827         class ShaderWrapperDVRCombToonCont2f: public ShaderWrapper
01828         {
01829         public:
01830                 VVolumeRenderer *vrendererptr;                          
01836                 ShaderWrapperDVRCombToonCont2f(VVolumeRenderer *vrptr)
01837                 {
01838                         vrendererptr = vrptr;
01839                 }
01840                 
01844                 void ShaderWrapper::set()
01845                 {
01846                         vrendererptr->setShaderWrapperDVRCombToonCont2f();
01847                 }
01848                 
01852                 void ShaderWrapper::clean()
01853                 {
01854                         vrendererptr->clearShaderWrapperDVRCombToonCont2f();
01855                 }
01856 
01860                 ~ShaderWrapperDVRCombToonCont2f()
01861                 {
01862                         //shaderprogram = 0;
01863                         vrendererptr = 0;
01864                         delete vrendererptr;
01865                 }
01866         };
01867 
01871         class ShaderWrapperDVRCombToonShadow2f: public ShaderWrapper
01872         {
01873         public:
01874                 VVolumeRenderer *vrendererptr;                          
01880                 ShaderWrapperDVRCombToonShadow2f(VVolumeRenderer *vrptr)
01881                 {
01882                         vrendererptr = vrptr;
01883                 }
01884                 
01888                 void ShaderWrapper::set()
01889                 {
01890                         vrendererptr->setShaderWrapperDVRCombToonShadow2f();
01891                 }
01892                 
01896                 void ShaderWrapper::clean()
01897                 {
01898                         vrendererptr->clearShaderWrapperDVRCombToonShadow2f();
01899                 }
01900 
01904                 ~ShaderWrapperDVRCombToonShadow2f()
01905                 {
01906                         //shaderprogram = 0;
01907                         vrendererptr = 0;
01908                         delete vrendererptr;
01909                 }
01910         };
01911 
01915         class ShaderWrapperDVRCombToonContShadow2f: public ShaderWrapper
01916         {
01917         public:
01918                 VVolumeRenderer *vrendererptr;                          
01924                 ShaderWrapperDVRCombToonContShadow2f(VVolumeRenderer *vrptr)
01925                 {
01926                         vrendererptr = vrptr;
01927                 }
01928                 
01932                 void ShaderWrapper::set()
01933                 {
01934                         vrendererptr->setShaderWrapperDVRCombToonContShadow2f();
01935                 }
01936                 
01940                 void ShaderWrapper::clean()
01941                 {
01942                         vrendererptr->clearShaderWrapperDVRCombToonContShadow2f();
01943                 }
01944 
01948                 ~ShaderWrapperDVRCombToonContShadow2f()
01949                 {
01950                         //shaderprogram = 0;
01951                         vrendererptr = 0;
01952                         delete vrendererptr;
01953                 }
01954         };
01955 
01956 
01960         class ShaderWrapperDVRCombMetal: public ShaderWrapper
01961         {
01962         public:
01963                 VVolumeRenderer *vrendererptr;                          
01969                 ShaderWrapperDVRCombMetal(VVolumeRenderer *vrptr)
01970                 {
01971                         vrendererptr = vrptr;
01972                 }
01973                 
01977                 void ShaderWrapper::set()
01978                 {
01979                         vrendererptr->setShaderWrapperDVRCombMetal();
01980                 }
01981                 
01985                 void ShaderWrapper::clean()
01986                 {
01987                         vrendererptr->clearShaderWrapperDVRCombMetal();
01988                 }
01989 
01993                 ~ShaderWrapperDVRCombMetal()
01994                 {
01995                         //shaderprogram = 0;
01996                         vrendererptr = 0;
01997                         delete vrendererptr;
01998                 }
01999         };
02000 
02004         class ShaderWrapperDVRCombMetalCont: public ShaderWrapper
02005         {
02006         public:
02007                 VVolumeRenderer *vrendererptr;                          
02013                 ShaderWrapperDVRCombMetalCont(VVolumeRenderer *vrptr)
02014                 {
02015                         vrendererptr = vrptr;
02016                 }
02017                 
02021                 void ShaderWrapper::set()
02022                 {
02023                         vrendererptr->setShaderWrapperDVRCombMetalCont();
02024                 }
02025                 
02029                 void ShaderWrapper::clean()
02030                 {
02031                         vrendererptr->clearShaderWrapperDVRCombMetalCont();
02032                 }
02033 
02037                 ~ShaderWrapperDVRCombMetalCont()
02038                 {
02039                         //shaderprogram = 0;
02040                         vrendererptr = 0;
02041                         delete vrendererptr;
02042                 }
02043         };
02044 
02048         class ShaderWrapperDVRCombMetalShadow: public ShaderWrapper
02049         {
02050         public:
02051                 VVolumeRenderer *vrendererptr;                          
02057                 ShaderWrapperDVRCombMetalShadow(VVolumeRenderer *vrptr)
02058                 {
02059                         vrendererptr = vrptr;
02060                 }
02061                 
02065                 void ShaderWrapper::set()
02066                 {
02067                         vrendererptr->setShaderWrapperDVRCombMetalShadow();
02068                 }
02069                 
02073                 void ShaderWrapper::clean()
02074                 {
02075                         vrendererptr->clearShaderWrapperDVRCombMetalShadow();
02076                 }
02077 
02081                 ~ShaderWrapperDVRCombMetalShadow()
02082                 {
02083                         //shaderprogram = 0;
02084                         vrendererptr = 0;
02085                         delete vrendererptr;
02086                 }
02087         };
02088 
02092         class ShaderWrapperDVRCombMetalContShadow: public ShaderWrapper
02093         {
02094         public:
02095                 VVolumeRenderer *vrendererptr;                          
02101                 ShaderWrapperDVRCombMetalContShadow(VVolumeRenderer *vrptr)
02102                 {
02103                         vrendererptr = vrptr;
02104                 }
02105                 
02109                 void ShaderWrapper::set()
02110                 {
02111                         vrendererptr->setShaderWrapperDVRCombMetalContShadow();
02112                 }
02113                 
02117                 void ShaderWrapper::clean()
02118                 {
02119                         vrendererptr->clearShaderWrapperDVRCombMetalContShadow();
02120                 }
02121 
02125                 ~ShaderWrapperDVRCombMetalContShadow()
02126                 {
02127                         //shaderprogram = 0;
02128                         vrendererptr = 0;
02129                         delete vrendererptr;
02130                 }
02131         };
02132 
02136         class ShaderWrapperDVRCombMetal2f: public ShaderWrapper
02137         {
02138         public:
02139                 VVolumeRenderer *vrendererptr;                          
02145                 ShaderWrapperDVRCombMetal2f(VVolumeRenderer *vrptr)
02146                 {
02147                         vrendererptr = vrptr;
02148                 }
02149                 
02153                 void ShaderWrapper::set()
02154                 {
02155                         vrendererptr->setShaderWrapperDVRCombMetal2f();
02156                 }
02157                 
02161                 void ShaderWrapper::clean()
02162                 {
02163                         vrendererptr->clearShaderWrapperDVRCombMetal2f();
02164                 }
02165 
02169                 ~ShaderWrapperDVRCombMetal2f()
02170                 {
02171                         //shaderprogram = 0;
02172                         vrendererptr = 0;
02173                         delete vrendererptr;
02174                 }
02175         };
02176 
02180         class ShaderWrapperDVRCombMetalCont2f: public ShaderWrapper
02181         {
02182         public:
02183                 VVolumeRenderer *vrendererptr;                          
02189                 ShaderWrapperDVRCombMetalCont2f(VVolumeRenderer *vrptr)
02190                 {
02191                         vrendererptr = vrptr;
02192                 }
02193                 
02197                 void ShaderWrapper::set()
02198                 {
02199                         vrendererptr->setShaderWrapperDVRCombMetalCont2f();
02200                 }
02201                 
02205                 void ShaderWrapper::clean()
02206                 {
02207                         vrendererptr->clearShaderWrapperDVRCombMetalCont2f();
02208                 }
02209 
02213                 ~ShaderWrapperDVRCombMetalCont2f()
02214                 {
02215                         //shaderprogram = 0;
02216                         vrendererptr = 0;
02217                         delete vrendererptr;
02218                 }
02219         };
02220 
02224         class ShaderWrapperDVRCombMetalShadow2f: public ShaderWrapper
02225         {
02226         public:
02227                 VVolumeRenderer *vrendererptr;                          
02233                 ShaderWrapperDVRCombMetalShadow2f(VVolumeRenderer *vrptr)
02234                 {
02235                         vrendererptr = vrptr;
02236                 }
02237                 
02241                 void ShaderWrapper::set()
02242                 {
02243                         vrendererptr->setShaderWrapperDVRCombMetalShadow2f();
02244                 }
02245                 
02249                 void ShaderWrapper::clean()
02250                 {
02251                         vrendererptr->clearShaderWrapperDVRCombMetalShadow2f();
02252                 }
02253 
02257                 ~ShaderWrapperDVRCombMetalShadow2f()
02258                 {
02259                         //shaderprogram = 0;
02260                         vrendererptr = 0;
02261                         delete vrendererptr;
02262                 }
02263         };
02264 
02268         class ShaderWrapperDVRCombMetalContShadow2f: public ShaderWrapper
02269         {
02270         public:
02271                 VVolumeRenderer *vrendererptr;                          
02277                 ShaderWrapperDVRCombMetalContShadow2f(VVolumeRenderer *vrptr)
02278                 {
02279                         vrendererptr = vrptr;
02280                 }
02281                 
02285                 void ShaderWrapper::set()
02286                 {
02287                         vrendererptr->setShaderWrapperDVRCombMetalContShadow2f();
02288                 }
02289                 
02293                 void ShaderWrapper::clean()
02294                 {
02295                         vrendererptr->clearShaderWrapperDVRCombMetalContShadow2f();
02296                 }
02297 
02301                 ~ShaderWrapperDVRCombMetalContShadow2f()
02302                 {
02303                         //shaderprogram = 0;
02304                         vrendererptr = 0;
02305                         delete vrendererptr;
02306                 }
02307         };
02308 
02309 
02313         class ShaderWrapperCurvature: public ShaderWrapper
02314         {
02315         public:
02316                 VVolumeRenderer *vrendererptr;                          
02322                 ShaderWrapperCurvature(VVolumeRenderer *vrptr)
02323                 {
02324                         vrendererptr = vrptr;
02325                 }
02326                 
02330                 void ShaderWrapper::set()
02331                 {
02332                         vrendererptr->setShaderWrapperCurvature();
02333                 }
02334 
02338                 void ShaderWrapper::clean()
02339                 {
02340                         vrendererptr->clearShaderWrapperCurvature();
02341                 }
02342 
02346                 ~ShaderWrapperCurvature()
02347                 {
02348                         //shaderprogram = 0;
02349                         vrendererptr = 0;
02350                         delete vrendererptr;
02351                 }
02352         };
02353 
02357         void generateProxyGeometryDisplayList();
02358 
02359         bool m_ProgramLoaded;                                   
02360         unsigned int m_TransferFunctionHandle;  
02361         unsigned int m_TransferFunction2DHandle;
02362 
02363         VCamera m_Camera;                                               
02365         VFramebufferObject * m_FrontFaceTexture;        
02366         VFramebufferObject * m_BackFaceTexture; 
02368         VFramebufferObject * m_WorldFrontFaceTexture;   
02369         VFramebufferObject * m_WorldBackFaceTexture;    
02371         unsigned int m_ProxyGeometryDisplayListHandle;  
02373         VProgram m_WorldPosProgram;                                     
02374         VProgram m_WorldWorldProgram;                           
02375         VProgram m_RayCasterMIP;                                                
02376         VProgram m_RayCasterMIPtf;                                              
02377         VProgram m_RayCasterMIPtf2d;                                            
02379         VProgram m_RayCasterDVRtf;                                              
02380         VProgram m_RayCasterDVR;                                                
02381         VProgram m_RayCasterDVRtf2d;                                    
02383         VProgram m_RayCasterDVR_BTF;                                    
02384         VProgram m_RayCasterDVR_BTFtf;                                  
02385         VProgram m_RayCasterDVR_BTFtf2d;                                        
02387         VProgram m_RayCasterCOMB_Phong;                                         
02388         VProgram m_RayCasterCOMB_PhongCont;                                                     
02389         VProgram m_RayCasterCOMB_PhongContourShadow;                                                    
02390         VProgram m_RayCasterCOMB_PhongShadow;                                           
02392         VProgram m_RayCasterCOMB_Phongt2f;                                                      
02393         VProgram m_RayCasterCOMB_PhongContt2f;                                          
02394         VProgram m_RayCasterCOMB_PhongContourShadowt2f;                                         
02395         VProgram m_RayCasterCOMB_PhongShadowt2f;                                                
02397         VProgram m_RayCasterCOMB_Toon;                                                  
02398         VProgram m_RayCasterCOMB_ToonCont;                                                                      
02399         VProgram m_RayCasterCOMB_ToonContourShadow;                                                             
02400         VProgram m_RayCasterCOMB_ToonShadow;                                                    
02402         VProgram m_RayCasterCOMB_Toon2f;                                                        
02403         VProgram m_RayCasterCOMB_ToonCont2f;                                                    
02404         VProgram m_RayCasterCOMB_ToonContourShadow2f;                                                   
02405         VProgram m_RayCasterCOMB_ToonShadow2f;                                                  
02407         VProgram m_RayCasterCOMB_Metal;                                                                 
02408         VProgram m_RayCasterCOMB_MetalCont;                                                                     
02409         VProgram m_RayCasterCOMB_MetalContourShadow;                                                                    
02410         VProgram m_RayCasterCOMB_MetalShadow;                                                                   
02412         VProgram m_RayCasterCOMB_Metal2f;                                                                       
02413         VProgram m_RayCasterCOMB_MetalCont2f;                                                                   
02414         VProgram m_RayCasterCOMB_MetalContourShadow2f;                                                                  
02415         VProgram m_RayCasterCOMB_MetalShadow2f;                                                                 
02417         VProgram m_RayCasterCOMB_Curvature;                                                                     
02419         ShaderWrapper *m_Raycast;                                                                               
02420         ShaderWrapperMIP swmip;                                                                                 
02421         ShaderWrapperMIPtf swmiptf;                                                                                     
02422         ShaderWrapperMIPtf2d swmiptf2d;                                                                                 
02423         ShaderWrapperDVR swdvr;                                                                                 
02424         ShaderWrapperDVRtf swdvrtf;                                                                                     
02425         ShaderWrapperDVRtf2d swdvrtf2d;                                                                                 
02426         ShaderWrapperDVRbtf swdvrbtf;                                                                                   
02427         ShaderWrapperDVRbtftf swdvrbtftf;                                                                                       
02428         ShaderWrapperDVRbtftf2d swdvrbtftf2d;                                                                                   
02430         ShaderWrapperDVRCombPhong swdvrcombphong;                                                                                       
02431         ShaderWrapperDVRCombPhongCont swdvrcombphongcont;                                                                                       
02432         ShaderWrapperDVRCombPhongShadow swdvrcombphongshadow;                                                                                   
02433         ShaderWrapperDVRCombPhongContShadow swdvrcombphongcontshadow;                                                                                   
02436         ShaderWrapperDVRCombPhongt2f swdvrcombphongt2f;                                                                                 
02437         ShaderWrapperDVRCombPhongContt2f swdvrcombphongcontt2f;                                                                                 
02438         ShaderWrapperDVRCombPhongShadowt2f swdvrcombphongshadowt2f;                                                                                     
02439         ShaderWrapperDVRCombPhongContShadowt2f swdvrcombphongcontshadowt2f;                                                                                     
02441         ShaderWrapperDVRCombToon swdvrcombtoon;                                                                                 
02442         ShaderWrapperDVRCombToonCont swdvrcombtooncont;                                                                                 
02443         ShaderWrapperDVRCombToonShadow swdvrcombtoonshadow;                                                                                     
02444         ShaderWrapperDVRCombToonContShadow swdvrcombtooncontshadow;                                                                                     
02446         ShaderWrapperDVRCombToon2f swdvrcombtoon2f;                                                                                     
02447         ShaderWrapperDVRCombToonCont2f swdvrcombtooncont2f;                                                                                     
02448         ShaderWrapperDVRCombToonShadow2f swdvrcombtoonshadow2f;                                                                                 
02449         ShaderWrapperDVRCombToonContShadow2f swdvrcombtooncontshadow2f;                                                                                 
02451         ShaderWrapperDVRCombMetal swdvrcombmetal;                                                                                       
02452         ShaderWrapperDVRCombMetalCont swdvrcombmetalcont;                                                                                       
02453         ShaderWrapperDVRCombMetalShadow swdvrcombmetalshadow;                                                                                   
02454         ShaderWrapperDVRCombMetalContShadow swdvrcombmetalcontshadow;                                                                                   
02456         ShaderWrapperDVRCombMetal2f swdvrcombmetal2f;                                                                                   
02457         ShaderWrapperDVRCombMetalCont2f swdvrcombmetalcont2f;                                                                                   
02458         ShaderWrapperDVRCombMetalShadow2f swdvrcombmetalshadow2f;                                                                                       
02459         ShaderWrapperDVRCombMetalContShadow2f swdvrcombmetalcontshadow2f;                                                                                       
02461         ShaderWrapperCurvature swcurvature;                                                                                     
02463         float m_VolumeSize[4];                                                                  
02464         bool m_updateDL;                                                                                
02466         int m_tf_activated;                                                                             
02468         RenderMode m_renderMode;                                                                
02469         float m_thresholdH;                                                                             
02470         float m_thresholdL;                                                                             
02472         LightMode m_lightMode;                                                                  
02474         ClipSet m_ClipperSettings;                                                              
02476         bool m_shadows;                                                                                 
02477         bool m_contours;                                                                                
02479         VQuaternion m_RotationX;                                                                
02480         VQuaternion m_RotationY;                                                                
02482         float m_ClipPlanes[6];                                                                  
02483         VPlane m_ClipPlaneObj[6];                                                               
02485         float m_ClearColor[3];                                                                  
02487         float m_LightDir[3];                                                                    
02489         VMatrix m_Tex2WorldSpace;                                                               
02491         unsigned int m_ContourHandle;                                                   
02493         float maxSize;                                                                                  
02494         float xsize;                                                                                    
02495         float ysize;                                                                                    
02496         float zsize;                                                                                    
02498         VImage *m_NoiseTex;                                                                             
02499         VImage *m_ToonTex;                                                                              
02500         VImage *m_MetalTex;                                                                             
02502 };
02503 
02504 #endif //__v_slice_renderer_h

Generated on Wed Dec 5 05:15:09 2007 for VolRendering by  doxygen 1.5.4