source: trunk/vizservers/nanovis/NvZincBlendeVolumeShader.h @ 750

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

Added new zinc blende renderer - It is still needed to compare with unicell based simulation data.
Removed tentatively used class, NvVolQDVolumeShader,NvVolQDVolume
Moved Font.bmp into resources directory

File size: 1.8 KB
Line 
1#ifndef __NV_ZINCBLENDE_SHADER_H__
2#define __NV_ZINCBLENDE_SHADER_H__
3
4#include "Nv.h"
5#include "ZincBlendeVolume.h"
6#include "NvVolumeShader.h"
7
8class NvZincBlendeVolumeShader : public NvVolumeShader {
9    CGparameter _tfParam;
10    CGparameter _volumeAParam;
11    CGparameter _volumeBParam;
12    CGparameter _cellSizeParam;
13    CGparameter _mviParam;
14    CGparameter _renderParam;
15
16private :
17    void init();
18public :
19    NvZincBlendeVolumeShader();
20    ~NvZincBlendeVolumeShader();
21
22    void bind(unsigned int tfID, Volume* volume, int sliceMode);
23    void unbind();
24};
25
26inline void NvZincBlendeVolumeShader::bind(unsigned int tfID, Volume* volume, int sliceMode)
27{
28    ZincBlendeVolume* vol = (ZincBlendeVolume*)volume;
29    cgGLSetStateMatrixParameter(_mviParam, CG_GL_MODELVIEW_MATRIX, CG_GL_MATRIX_INVERSE);
30    cgGLSetTextureParameter(_tfParam, tfID);
31    cgGLSetParameter4f(_cellSizeParam, vol->cell_size.x, vol->cell_size.y, vol->cell_size.z, 0.);
32
33    if(!sliceMode)
34        cgGLSetParameter4f(_renderParam,
35            vol->get_n_slice(),
36            vol->get_opacity_scale(),
37            vol->get_diffuse(),
38            vol->get_specular());
39    else
40        cgGLSetParameter4f(_renderParam,
41            0.,
42            vol->get_opacity_scale(),
43            vol->get_diffuse(),
44            vol->get_specular());
45
46    cgGLSetTextureParameter(_volumeAParam,  vol->zincblende_tex[0]->id);
47    cgGLSetTextureParameter(_volumeBParam, vol->zincblende_tex[1]->id);
48    cgGLEnableTextureParameter(_volumeAParam);
49    cgGLEnableTextureParameter(_volumeBParam);
50
51    cgGLBindProgram(_cgFP);
52    cgGLEnableProfile(CG_PROFILE_FP30);
53}
54
55inline void NvZincBlendeVolumeShader::unbind()
56{
57    cgGLDisableTextureParameter(_volumeAParam);
58    cgGLDisableTextureParameter(_volumeBParam);
59    cgGLDisableTextureParameter(_tfParam);
60
61    cgGLDisableProfile(CG_PROFILE_FP30);
62}
63
64#endif
Note: See TracBrowser for help on using the repository browser.