SCM Repository
[diderot] / trunk / test / vr-lite.diderot |
View of /trunk/test/vr-lite.diderot
Parent Directory
|
Revision Log
Revision 2636 -
(download)
(annotate)
Tue May 27 16:18:36 2014 UTC (7 years, 11 months ago) by jhr
File size: 1872 byte(s)
Tue May 27 16:18:36 2014 UTC (7 years, 11 months ago) by jhr
File size: 1872 byte(s)
Merging changes from vis12 branch (via staging). The main change is the new syntax for inputs (especially image inputs).
// vr-lite.diderot // // simple diffuse-only volume rendering with head-light, with an // opacity function that varies linearly between two values // input string dataFile; // name of dataset input real stepSz = 0.1; // size of steps input vec3 eye; // location of eye point input vec3 orig; // location of pixel (0,0) input vec3 cVec; // vector between pixels horizontally input vec3 rVec; // vector between pixels vertically input real valOpacMin; // highest value with opacity 0.0 input real valOpacMax; // lowest value with opacity 1.0 // valOpacMin,Max pairs for sample datasets: // txs.nrrd 0.15, 0.35 // vfrhand-nohip.nhdr, for skin: 200, 500 // vfrhand-nohip.nhdr, for bone: 1330, 1630 image(3)[] img = image (dataFile); //field#1(3)[] F = convolve (bspln3, img); field#2(3)[] F = img ⊛ bspln3; strand RayCast (int row, int col) { vec3 pos = orig + real(row)*rVec + real(col)*cVec; vec3 dir = normalize(pos - eye); real t = 0.0; real transp = 1.0; real gray = 0.0; output vec4 rgba = [0.0, 0.0, 0.0, 0.0]; update { pos = pos + stepSz*dir; if (inside (pos,F)) { real val = F(pos); vec3 norm = -normalize(∇F(pos)); if (val > valOpacMin) { // we have some opacity real opac = min(1.0, lerp(0.0, 1.0, valOpacMin, val, valOpacMax)); gray = gray + transp*opac*max(0.0, -dir • norm); transp = transp*(1.0 - opac); } } if (transp < 0.01) { // early ray termination transp = 0.0; stabilize; } if (t > 40.0) { stabilize; } t = t + stepSz; } stabilize { rgba = [gray, gray, gray, 1.0-transp]; } /* render: output rgba */ } initially [ RayCast(r, c) | r in 0..199, c in 0..199 ];
root@smlnj-gforge.cs.uchicago.edu | ViewVC Help |
Powered by ViewVC 1.0.0 |