55 |
// would make this transform to world-space less awkward; would be |
// would make this transform to world-space less awkward; would be |
56 |
// lightVspDir[0]*camU + lightVspDir[1]*camV + lightVspDir[2]*camN |
// lightVspDir[0]*camU + lightVspDir[1]*camV + lightVspDir[2]*camN |
57 |
// OR, we could create and apply a view-to-world matrix transform |
// OR, we could create and apply a view-to-world matrix transform |
58 |
|
//vec3 tmp2 = lightVspDir[0]*camU + lightVspDir[1]*camV + lightVspDir[2]*camN; |
59 |
vec3 tmp2 = ( dot(lightVspDir,[1.0,0.0,0.0])*camU |
vec3 tmp2 = ( dot(lightVspDir,[1.0,0.0,0.0])*camU |
60 |
+ dot(lightVspDir,[0.0,1.0,0.0])*camV |
+ dot(lightVspDir,[0.0,1.0,0.0])*camV |
61 |
+ dot(lightVspDir,[0.0,0.0,1.0])*camN); |
+ dot(lightVspDir,[0.0,0.0,1.0])*camN); |
67 |
real phongSp = 30.0; |
real phongSp = 30.0; |
68 |
|
|
69 |
image(3)[] img = load (dataFile); |
image(3)[] img = load (dataFile); |
70 |
|
//field#4(3)[] F = img ⊛ bspln5; |
71 |
//field#2(3)[] F = img ⊛ bspln3; |
//field#2(3)[] F = img ⊛ bspln3; |
72 |
field#2(3)[] F = img ⊛ bspln3; |
field#1(3)[] F = img ⊛ ctmr; |
|
// HEY (BUG): ctmr Catmull-Rom is C1 but not C2 continuous |
|
|
//field#2(3)[] F = img ⊛ ctmr; |
|
73 |
//field#0(3)[] F = img ⊛ tent; |
//field#0(3)[] F = img ⊛ tent; |
74 |
|
|
75 |
strand RayCast (int ui, int vi) |
strand RayCast (int ui, int vi) |
93 |
// ########## BEGIN per-sample code |
// ########## BEGIN per-sample code |
94 |
real val = F@rayPos; |
real val = F@rayPos; |
95 |
vec3 grad = ∇F@rayPos; |
vec3 grad = ∇F@rayPos; |
96 |
vec3 norm = -grad/|grad|; |
vec3 norm = -∇F@rayPos/|∇F@rayPos|; |
|
// HEY (BUG) will get an "uncaught exception" if code is instead |
|
|
// vec3 norm = -∇F@rayPos/|∇F@rayPos|; |
|
97 |
if (val > valOpacMin) { // we have some opacity |
if (val > valOpacMin) { // we have some opacity |
98 |
real opac = |
real opac = |
99 |
1.0 if (val > valOpacMax) |
1.0 if (val > valOpacMax) |