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

SCM Repository

[diderot] Annotation of /branches/vis12-cl/test/vr-phong.diderot
ViewVC logotype

Annotation of /branches/vis12-cl/test/vr-phong.diderot

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2402 - (view) (download)

1 : jhr 1116 // vr-phong.diderot
2 : glk 46 //
3 :     // volume rendering example in Diderot
4 :     //
5 :    
6 :     input real stepSz; // size of steps
7 : jhr 51 input vec3 lightDir;
8 : jhr 87 input vec3 lightRGB;
9 : jhr 51 input vec3 eye; // location of eye point
10 :     input vec3 orig; // location of pixel (0,0)
11 :     input vec3 cVec; // vector between pixels horizontally
12 :     input vec3 rVec; // vector between pixels vertically
13 : jhr 87 input real ka;
14 :     input real kd;
15 :     input real ks;
16 :     input real sh;
17 : glk 46
18 : jhr 1927 field#2(3)[] F = bspln3 (*) image("../data/txs.nrrd");
19 :     field#0(1)[4] txf = tent ⊛ image("../data/dummy-txf-rgba.nrrd");
20 : glk 46
21 : jhr 511 strand RayCast (int row, int col)
22 : glk 46 {
23 : jhr 59 vec3 pos = orig + real(row)*rVec + real(col)*cVec;
24 : jhr 1116 vec3 dir = normalize(pos - eye);
25 : glk 46 real t = 0.0;
26 : jhr 163 output vec3 rayRGB = [0.0, 0.0, 0.0];
27 : glk 46 real rayTransp = 1.0;
28 :    
29 :     update
30 :     {
31 :     if (inside (pos,F)) {
32 :     real val = F@pos;
33 : jhr 1116 vec3 norm = normalize(-∇F@pos);
34 :     vec3 halfDir = normalize(lightDir - dir);
35 : jhr 384 vec4 matRGBA = txf@val;
36 : jhr 86 vec3 matRGB = [matRGBA[0],matRGBA[1],matRGBA[2]];
37 : jhr 1116 real ldotn = lightDir • norm;
38 :     real hdotn = halfDir • norm;
39 :     vec3 pntRGB = (ka + kd*ldotn)*modulate(matRGB,lightRGB) + ks*hdotn^sh*lightRGB;
40 : jhr 87 rayRGB = rayRGB + rayTransp*matRGBA[3]*pntRGB;
41 :     rayTransp = rayTransp*(1.0 - matRGBA[3]);
42 : glk 46 }
43 :     if (t > 1.0 || rayTransp < 0.01) // a little odd; ray terminates at length=1
44 :     stabilize;
45 :     pos = pos + stepSz*dir;
46 :     t = t + stepSz;
47 :     }
48 :    
49 : jhr 90 }
50 : glk 46
51 : jhr 90 initially [ RayCast(r, c) | r in 0..1023, c in 0..1023 ];

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