source: trunk/vizservers/nanovis/NvRegularVolumeShader.h @ 828

Last change on this file since 828 was 580, checked in by vrinside, 17 years ago
File size: 1.8 KB
Line 
1#ifndef __NV_REGULAR_SHADER_H__
2#define __NV_REGULAR_SHADER_H__
3
4#include "Volume.h"
5#include "NvVolumeShader.h"
6
7class NvRegularVolumeShader : public NvVolumeShader {
8    CGparameter m_vol_one_volume_param;
9    CGparameter m_tf_one_volume_param;
10    CGparameter m_mvi_one_volume_param;
11    CGparameter m_mv_one_volume_param;
12    CGparameter m_render_param_one_volume_param;
13
14public :
15    NvRegularVolumeShader();
16    ~NvRegularVolumeShader();
17private :
18    void init();
19
20public :
21    void bind(unsigned int tfID, Volume* volume, int sliceMode);
22    void unbind();
23
24};
25
26inline void NvRegularVolumeShader::bind(unsigned int tfID, Volume* volume, int sliceMode)
27{
28    //regular cubic volume
29    cgGLSetStateMatrixParameter(m_mvi_one_volume_param, CG_GL_MODELVIEW_MATRIX, CG_GL_MATRIX_INVERSE);
30    cgGLSetStateMatrixParameter(m_mv_one_volume_param, CG_GL_MODELVIEW_MATRIX, CG_GL_MATRIX_IDENTITY);
31
32    cgGLSetTextureParameter(m_vol_one_volume_param, volume->id);
33    cgGLSetTextureParameter(m_tf_one_volume_param, tfID);
34    cgGLEnableTextureParameter(m_vol_one_volume_param);
35    cgGLEnableTextureParameter(m_tf_one_volume_param);
36
37    if(!sliceMode)
38        cgGLSetParameter4f(m_render_param_one_volume_param,
39            volume->get_n_slice(),
40            volume->get_opacity_scale(),
41            volume->get_diffuse(),
42            volume->get_specular());
43    else
44        cgGLSetParameter4f(m_render_param_one_volume_param,
45            0.,
46            volume->get_opacity_scale(),
47            volume->get_diffuse(),
48            volume->get_specular());
49
50    cgGLBindProgram(_cgFP);
51    cgGLEnableProfile(CG_PROFILE_FP30);
52}
53
54inline void NvRegularVolumeShader::unbind()
55{
56    cgGLDisableTextureParameter(m_vol_one_volume_param);
57    cgGLDisableTextureParameter(m_tf_one_volume_param);
58
59    cgGLDisableProfile(CG_PROFILE_FP30);
60}
61
62
63#endif //
Note: See TracBrowser for help on using the repository browser.