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

Last change on this file since 870 was 870, checked in by vrinside, 17 years ago

:q

File size: 1.9 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    CGparameter m_option_one_volume_param;
14
15public :
16    NvRegularVolumeShader();
17    ~NvRegularVolumeShader();
18private :
19    void init();
20
21public :
22    void bind(unsigned int tfID, Volume* volume, int sliceMode);
23    void unbind();
24
25};
26
27inline void NvRegularVolumeShader::bind(unsigned int tfID, Volume* volume, int sliceMode)
28{
29    //regular cubic volume
30    cgGLSetStateMatrixParameter(m_mvi_one_volume_param, CG_GL_MODELVIEW_MATRIX, CG_GL_MATRIX_INVERSE);
31    cgGLSetStateMatrixParameter(m_mv_one_volume_param, CG_GL_MODELVIEW_MATRIX, CG_GL_MATRIX_IDENTITY);
32
33    cgGLSetTextureParameter(m_vol_one_volume_param, volume->id);
34    cgGLSetTextureParameter(m_tf_one_volume_param, tfID);
35    cgGLEnableTextureParameter(m_vol_one_volume_param);
36    cgGLEnableTextureParameter(m_tf_one_volume_param);
37
38    if(!sliceMode)
39        cgGLSetParameter4f(m_render_param_one_volume_param,
40            volume->get_n_slice(),
41            volume->get_opacity_scale(),
42            volume->get_diffuse(),
43            volume->get_specular());
44    else
45        cgGLSetParameter4f(m_render_param_one_volume_param,
46            0.,
47            volume->get_opacity_scale(),
48            volume->get_diffuse(),
49            volume->get_specular());
50
51    cgGLSetParameter4f(m_option_one_volume_param,
52        0.0f,
53        volume->get_isosurface(),
54        0.0f,
55        0.0f);
56
57    cgGLBindProgram(_cgFP);
58    cgGLEnableProfile(CG_PROFILE_FP30);
59}
60
61inline void NvRegularVolumeShader::unbind()
62{
63    cgGLDisableTextureParameter(m_vol_one_volume_param);
64    cgGLDisableTextureParameter(m_tf_one_volume_param);
65
66    cgGLDisableProfile(CG_PROFILE_FP30);
67}
68
69
70#endif //
Note: See TracBrowser for help on using the repository browser.