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
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
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
00225
00226
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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