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

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

Remove vr3d library - texture classes were redundant. Remove last vestiges of
opencv usage in code and remove from configure - replaced by imgLoaders library
functions.

  • 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{
10public:
11    NvRegularVolumeShader();
12    ~NvRegularVolumeShader();
13
14    void bind(unsigned int tfID, Volume* volume, int sliceMode);
15    void unbind();
16
17private:
18    void init();
19
20    CGparameter _vol_one_volume_param;
21    CGparameter _tf_one_volume_param;
22    CGparameter _mvi_one_volume_param;
23    CGparameter _mv_one_volume_param;
24    CGparameter _render_param_one_volume_param;
25    CGparameter _option_one_volume_param;
26};
27
28inline void
29NvRegularVolumeShader::bind(unsigned int tfID, Volume *volume, int sliceMode)
30{
31    //regular cubic volume
32    cgGLSetStateMatrixParameter(_mvi_one_volume_param, CG_GL_MODELVIEW_MATRIX, CG_GL_MATRIX_INVERSE);
33    cgGLSetStateMatrixParameter(_mv_one_volume_param, CG_GL_MODELVIEW_MATRIX, CG_GL_MATRIX_IDENTITY);
34
35    cgGLSetTextureParameter(_vol_one_volume_param, volume->id);
36    cgGLSetTextureParameter(_tf_one_volume_param, tfID);
37    cgGLEnableTextureParameter(_vol_one_volume_param);
38    cgGLEnableTextureParameter(_tf_one_volume_param);
39
40    if (!sliceMode) {
41        cgGLSetParameter4f(_render_param_one_volume_param,
42            volume->n_slices(),
43            volume->opacity_scale(),
44            volume->diffuse(),
45            volume->specular());
46    } else {
47        cgGLSetParameter4f(_render_param_one_volume_param,
48            0.,
49            volume->opacity_scale(),
50            volume->diffuse(),
51            volume->specular());
52    }
53
54    cgGLSetParameter4f(_option_one_volume_param,
55        0.0f,
56        volume->isosurface(),
57        0.0f,
58        0.0f);
59
60    cgGLBindProgram(_cgFP);
61    cgGLEnableProfile(CG_PROFILE_FP30);
62}
63
64inline void NvRegularVolumeShader::unbind()
65{
66    cgGLDisableTextureParameter(_vol_one_volume_param);
67    cgGLDisableTextureParameter(_tf_one_volume_param);
68
69    cgGLDisableProfile(CG_PROFILE_FP30);
70}
71
72#endif
Note: See TracBrowser for help on using the repository browser.