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 51, Wed Apr 14 21:50:03 2010 UTC revision 243, Fri Aug 6 15:27:47 2010 UTC
# Line 4  Line 4 
4  //  //
5    
6  input string dataFile;          // name of dataset  input string dataFile;          // name of dataset
7    input string txfFile;           // name of transfer-function file
8  input real stepSz;              // size of steps  input real stepSz;              // size of steps
9  input vec3 lightDir;  input vec3 lightDir;
10  input vec3 lightCol;  input vec3 lightRGB;
11  input vec3 eye;               // location of eye point  input vec3 eye;               // location of eye point
12  input vec3 orig;              // location of pixel (0,0)  input vec3 orig;              // location of pixel (0,0)
13  input vec3 cVec;              // vector between pixels horizontally  input vec3 cVec;              // vector between pixels horizontally
14  input vec3 rVec;              // vector between pixels vertically  input vec3 rVec;              // vector between pixels vertically
15  input real pka;  input real ka;
16  input real pkd;  input real kd;
17  input real pks;  input real ks;
18  input real psh;  input real sh;
19    
20  image(3)[] img = load (dataFile);  image(3)[] img = load (dataFile);
21    
22  field#1(3)[] F = convolve (bspln3, img);  //field#1(3)[] F = convolve (bspln3, img);
23    field#2(3)[] F = convolve (bspln3, img);
24    
25  field#0(4)[3] txf = convolve (tent, load("txf-rgba.nrrd"));  field#0(1)[4] txf = convolve (tent, load(txfFile));
26    
27  actor RayCast (int row, int col)  actor RayCast (int row, int col)
28  {  {
29      vec3        pos = orig + row*rVec + col*cVec;      vec3        pos = orig + real(row)*rVec + real(col)*cVec;
30      vec3        dir = pos - eye/|pos - eye|;      vec3        dir = (pos - eye)/|pos - eye|;
31      real        t = 0.0;      real        t = 0.0;
32      vec3        rayRGB = (0.0, 0.0, 0.0);      output vec3 rayRGB = [0.0, 0.0, 0.0];
33      real        rayTransp = 1.0;      real        rayTransp = 1.0;
34    
35      update      update
# Line 36  Line 38 
38             real val = F@pos;             real val = F@pos;
39             vec3 grad = (D F)@pos;             vec3 grad = (D F)@pos;
40             vec3 norm = grad/|grad|;             vec3 norm = grad/|grad|;
41             vec3 half = lightDir - dir/|lightDir - dir|;             vec3 halfDir = (lightDir - dir)/|lightDir - dir|;
42             vec4 matRGBA = txf@val;             vec4 matRGBA = txf@[val];
43             vec3 matRGB = (matRGBA[0],matRGBA[1],matRGBA[2]);             vec3 matRGB = [matRGBA[0],matRGBA[1],matRGBA[2]];
44             real ldotn = dot(lightDir,norm);             real ldotn = dot(lightDir,norm);
45             real hdotn = dot(halfDir,norm);             real hdotn = dot(halfDir,norm);
46             // hey the per-component multiplication is in matRGB*lightRGB             vec3 pntRGB = (ka + kd*ldotn)*modulate(matRGB,lightRGB) + ks*pow(hdotn,sh)*lightRGB;
47             vec3 pntRGB = (ka + kd*ldotn)*matRGB*lightRGB + ks*pow(hdotn,psh)*lightRGB;             rayRGB = rayRGB + rayTransp*matRGBA[3]*pntRGB;
48             rayRGB = rayRGB + rayTranps*matRGBA[3]*matRGB;             rayTransp = rayTransp*(1.0 - matRGBA[3]);
            rayTransp = rayTranps*(1.0 - matRGBA[3]);  
49          }          }
50          if (t > 1.0 || rayTransp < 0.01) // a little odd; ray terminates at length=1          if (t > 1.0 || rayTransp < 0.01) // a little odd; ray terminates at length=1
51              stabilize;              stabilize;
# Line 52  Line 53 
53          t = t + stepSz;          t = t + stepSz;
54      }      }
55    
   
56  }  }
57    
58    initially [ RayCast(r, c) | r in 0..1023, c in 0..1023 ];

Legend:
Removed from v.51  
changed lines
  Added in v.243

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