Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Diff of /trunk/test/vr-phong.diderot
ViewVC logotype

Diff of /trunk/test/vr-phong.diderot

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 384, Tue Oct 5 21:54:33 2010 UTC revision 1116, Thu May 5 04:49:02 2011 UTC
# Line 1  Line 1 
1  // vr.diderot  // vr-phong.diderot
2  //  //
3  // volume rendering example in Diderot  // volume rendering example in Diderot
4  //  //
5    
6  input string dataFile;          // name of dataset  //input string dataFile;                // name of dataset
7  input string txfFile;           // name of transfer-function file  //input string txfFile;         // name of transfer-function file
8    string dataFile = "../data/txs.nrrd";
9    string txfFile = "../data/dummy-txf-rgba.nrrd";
10  input real stepSz;              // size of steps  input real stepSz;              // size of steps
11  input vec3 lightDir;  input vec3 lightDir;
12  input vec3 lightRGB;  input vec3 lightRGB;
# Line 17  Line 19 
19  input real ks;  input real ks;
20  input real sh;  input real sh;
21    
22  image(3)[] img = load (dataFile);  field#2(3)[] F = bspln3 (*) load(dataFile);
23    field#0(1)[4] txf = tent ⊛ load(txfFile);
24    
25  //field#1(3)[] F = img (*) bspln3;  strand RayCast (int row, int col)
 field#2(3)[] F = img (*) bspln3;  
   
 field#0(1)[4] txf = load(txfFile) ⊛ tent;  
   
 actor RayCast (int row, int col)  
26  {  {
27      vec3        pos = orig + real(row)*rVec + real(col)*cVec;      vec3        pos = orig + real(row)*rVec + real(col)*cVec;
28      vec3        dir = (pos - eye)/|pos - eye|;      vec3        dir = normalize(pos - eye);
29      real        t = 0.0;      real        t = 0.0;
30      output vec3 rayRGB = [0.0, 0.0, 0.0];      output vec3 rayRGB = [0.0, 0.0, 0.0];
31      real        rayTransp = 1.0;      real        rayTransp = 1.0;
# Line 36  Line 34 
34      {      {
35          if (inside (pos,F)) {          if (inside (pos,F)) {
36             real val = F@pos;             real val = F@pos;
37             vec3 grad = ∇F@pos;             vec3 norm = normalize(-∇F@pos);
38             vec3 norm = grad/|grad|;             vec3 halfDir = normalize(lightDir - dir);
            vec3 halfDir = (lightDir - dir)/|lightDir - dir|;  
39             vec4 matRGBA = txf@val;             vec4 matRGBA = txf@val;
40             vec3 matRGB = [matRGBA[0],matRGBA[1],matRGBA[2]];             vec3 matRGB = [matRGBA[0],matRGBA[1],matRGBA[2]];
41             real ldotn = dot(lightDir, norm);             real ldotn = lightDir • norm;
42             real hdotn = dot(halfDir, norm);             real hdotn = halfDir • norm;
43             vec3 pntRGB = (ka + kd*ldotn)*modulate(matRGB,lightRGB) + ks*pow(hdotn,sh)*lightRGB;             vec3 pntRGB = (ka + kd*ldotn)*modulate(matRGB,lightRGB) + ks*hdotn^sh*lightRGB;
44             rayRGB = rayRGB + rayTransp*matRGBA[3]*pntRGB;             rayRGB = rayRGB + rayTransp*matRGBA[3]*pntRGB;
45             rayTransp = rayTransp*(1.0 - matRGBA[3]);             rayTransp = rayTransp*(1.0 - matRGBA[3]);
46          }          }

Legend:
Removed from v.384  
changed lines
  Added in v.1116

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0