source: trunk/packages/vizservers/nanovis/NvZincBlendeVolumeShader.cpp @ 2971

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

Convert volume shaders to use new NvShader? parameter API. With the exception
of the (currently unused) ParticleSystem?, this completes the isolation of Cg
runtime use to NvShader?.

  • Property svn:eol-style set to native
File size: 1.7 KB
Line 
1/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
3#include "NvZincBlendeVolumeShader.h"
4
5NvZincBlendeVolumeShader::NvZincBlendeVolumeShader()
6{
7    init();
8}
9
10NvZincBlendeVolumeShader::~NvZincBlendeVolumeShader()
11{
12}
13
14void NvZincBlendeVolumeShader::init()
15{
16    loadFragmentProgram("zincblende_volume.cg", "main");
17}
18
19void NvZincBlendeVolumeShader::bind(unsigned int tfID, Volume *volume, int sliceMode)
20{
21    ZincBlendeVolume *vol = (ZincBlendeVolume *)volume;
22    setGLStateMatrixFPParameter("modelViewInv", MODELVIEW_MATRIX,
23                                MATRIX_INVERSE);
24    setFPTextureParameter("tf", tfID);
25    setFPParameter4f("cellSize",
26                     vol->cellSize.x,
27                     vol->cellSize.y,
28                     vol->cellSize.z, 0.);
29
30    if (!sliceMode) {
31        setFPParameter4f("renderParameters",
32                         vol->numSlices(),
33                         vol->opacityScale(),
34                         vol->diffuse(),
35                         vol->specular());
36    } else {
37        setFPParameter4f("renderParameters",
38                         0.,
39                         vol->opacityScale(),
40                         vol->diffuse(),
41                         vol->specular());
42    }
43
44    setFPParameter4f("options",
45                     0.0f,
46                     volume->isosurface(),
47                     0.0f,
48                     0.0f);
49
50    setFPTextureParameter("volumeA", vol->zincblendeTex[0]->id());
51    setFPTextureParameter("volumeB", vol->zincblendeTex[1]->id());
52
53    NvShader::bind();
54}
55
56void NvZincBlendeVolumeShader::unbind()
57{
58    disableFPTextureParameter("volumeA");
59    disableFPTextureParameter("volumeB");
60    disableFPTextureParameter("tf");
61
62    NvShader::unbind();
63}
Note: See TracBrowser for help on using the repository browser.