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

Last change on this file since 2831 was 2798, checked in by ldelgass, 12 years ago

Add emacs mode magic line in preparation for indentation cleanup

  • Property svn:eol-style set to native
File size: 2.0 KB
Line 
1/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2#ifndef __NV_REGULAR_SHADER_H__
3#define __NV_REGULAR_SHADER_H__
4
5#include "Volume.h"
6#include "NvVolumeShader.h"
7
8class NvRegularVolumeShader : public NvVolumeShader {
9    CGparameter m_vol_one_volume_param;
10    CGparameter m_tf_one_volume_param;
11    CGparameter m_mvi_one_volume_param;
12    CGparameter m_mv_one_volume_param;
13    CGparameter m_render_param_one_volume_param;
14    CGparameter m_option_one_volume_param;
15
16public :
17    NvRegularVolumeShader();
18    ~NvRegularVolumeShader();
19private :
20    void init();
21
22public :
23    void bind(unsigned int tfID, Volume* volume, int sliceMode);
24    void unbind();
25
26};
27
28inline void
29NvRegularVolumeShader::bind(unsigned int tfID, Volume* volume, int sliceMode)
30{
31    //regular cubic volume
32    cgGLSetStateMatrixParameter(m_mvi_one_volume_param, CG_GL_MODELVIEW_MATRIX, CG_GL_MATRIX_INVERSE);
33    cgGLSetStateMatrixParameter(m_mv_one_volume_param, CG_GL_MODELVIEW_MATRIX, CG_GL_MATRIX_IDENTITY);
34
35    cgGLSetTextureParameter(m_vol_one_volume_param, volume->id);
36    cgGLSetTextureParameter(m_tf_one_volume_param, tfID);
37    cgGLEnableTextureParameter(m_vol_one_volume_param);
38    cgGLEnableTextureParameter(m_tf_one_volume_param);
39
40    if(!sliceMode)
41        cgGLSetParameter4f(m_render_param_one_volume_param,
42            volume->n_slices(),
43            volume->opacity_scale(),
44            volume->diffuse(),
45            volume->specular());
46    else
47        cgGLSetParameter4f(m_render_param_one_volume_param,
48            0.,
49            volume->opacity_scale(),
50            volume->diffuse(),
51            volume->specular());
52
53    cgGLSetParameter4f(m_option_one_volume_param,
54        0.0f,
55        volume->isosurface(),
56        0.0f,
57        0.0f);
58
59    cgGLBindProgram(_cgFP);
60    cgGLEnableProfile(CG_PROFILE_FP30);
61}
62
63inline void NvRegularVolumeShader::unbind()
64{
65    cgGLDisableTextureParameter(m_vol_one_volume_param);
66    cgGLDisableTextureParameter(m_tf_one_volume_param);
67
68    cgGLDisableProfile(CG_PROFILE_FP30);
69}
70
71
72#endif //
Note: See TracBrowser for help on using the repository browser.