source: trunk/packages/vizservers/nanovis/NvRegularVolumeShader.h @ 2277

Last change on this file since 2277 was 2096, checked in by ldelgass, 13 years ago

Normalize line endings, set eol-style to native on *.cpp, *.h files

  • Property svn:eol-style set to native
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
28NvRegularVolumeShader::bind(unsigned int tfID, Volume* volume, int sliceMode)
29{
30    //regular cubic volume
31    cgGLSetStateMatrixParameter(m_mvi_one_volume_param, CG_GL_MODELVIEW_MATRIX, CG_GL_MATRIX_INVERSE);
32    cgGLSetStateMatrixParameter(m_mv_one_volume_param, CG_GL_MODELVIEW_MATRIX, CG_GL_MATRIX_IDENTITY);
33
34    cgGLSetTextureParameter(m_vol_one_volume_param, volume->id);
35    cgGLSetTextureParameter(m_tf_one_volume_param, tfID);
36    cgGLEnableTextureParameter(m_vol_one_volume_param);
37    cgGLEnableTextureParameter(m_tf_one_volume_param);
38
39    if(!sliceMode)
40        cgGLSetParameter4f(m_render_param_one_volume_param,
41            volume->n_slices(),
42            volume->opacity_scale(),
43            volume->diffuse(),
44            volume->specular());
45    else
46        cgGLSetParameter4f(m_render_param_one_volume_param,
47            0.,
48            volume->opacity_scale(),
49            volume->diffuse(),
50            volume->specular());
51
52    cgGLSetParameter4f(m_option_one_volume_param,
53        0.0f,
54        volume->isosurface(),
55        0.0f,
56        0.0f);
57
58    cgGLBindProgram(_cgFP);
59    cgGLEnableProfile(CG_PROFILE_FP30);
60}
61
62inline void NvRegularVolumeShader::unbind()
63{
64    cgGLDisableTextureParameter(m_vol_one_volume_param);
65    cgGLDisableTextureParameter(m_tf_one_volume_param);
66
67    cgGLDisableProfile(CG_PROFILE_FP30);
68}
69
70
71#endif //
Note: See TracBrowser for help on using the repository browser.