| 1 | greg | 1.3 | { RCSid $Id: aniso.cal,v 1.2 2018/12/01 02:06:04 greg Exp $ } | 
| 2 | greg | 1.1 | { Ward-Geisler-Moroder-Duer anisotropic BSDF model } | 
| 3 |  |  |  | 
| 4 |  |  | { Final 5 real arguments are alpha_x and alpha_y roughnesses and Up vector } | 
| 5 |  |  |  | 
| 6 |  |  | ax = arg(AC-4);         { ax is roughness in Up orientation } | 
| 7 |  |  | ay = arg(AC-3); | 
| 8 |  |  |  | 
| 9 | greg | 1.3 | arefl(hx,hy,hz) = Exp(-(hx*hx/(ax*ax) + hy*hy/(ay*ay))/(hz*hz)) * | 
| 10 | greg | 1.1 | (hx*hx + hy*hy + hz*hz) / | 
| 11 |  |  | (PI*ax*ay*hz*hz*hz*hz); | 
| 12 |  |  |  | 
| 13 | greg | 1.3 | axmit(hx,hy,hz) = Exp(-(hx*hx/(ax*ax) + hy*hy/(ay*ay))/(hz*hz)) / | 
| 14 | greg | 1.1 | (4*PI*ax*ay); | 
| 15 |  |  |  | 
| 16 | greg | 1.2 | dobsdf(sdx,sdy,sdz) = if(sdz, arefl(Idx+sdx, Idy+sdy, Idz+sdz), | 
| 17 |  |  | axmit(Idx+sdx, Idy+sdy, Idz-sdz) / sqrt(-sdz*Idz) ); | 
| 18 | greg | 1.1 |  | 
| 19 | greg | 1.2 | absdf(ox,oy,oz) = dobsdf(Ldx(ox,oy,oz), Ldy(ox,oy,oz), Ldz(ox,oy,oz)); |