ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/gen/glaze1.cal
Revision: 2.3
Committed: Mon Feb 18 23:44:39 2008 UTC (16 years, 1 month ago) by greg
Branch: MAIN
CVS Tags: rad5R4, rad5R2, rad4R2P2, rad5R0, rad5R1, rad4R2, rad4R1, rad4R0, rad3R9, rad4R2P1, rad5R3, HEAD
Changes since 2.2: +7 -7 lines
Log Message:
Changed naming of specular component

File Contents

# Content
1 { RCSid: $Id: glaze1.cal,v 2.2 2003/06/30 18:12:24 greg Exp $ }
2 {
3 glaze1.cal - single-pane fritted and low-E glazings
4
5 Uses BRTDfunc type to get correct behavior.
6 Oct. 2002 Greg Ward
7
8 Material parameters for fritted glazing are:
9
10 arg(10) - orientation (1 == glass front)
11 arg(11) - fractional coverage
12
13 Parameters for low-E glazing are:
14 arg(10) - orientation (1 == glass front)
15 arg(11) - glass-side reflectance (red)
16 arg(12) - glass-side reflectance (green)
17 arg(13) - glass-side reflectance (blue)
18 arg(14) - coating-side reflectance (red)
19 arg(15) - coating-side reflectance (green)
20 arg(16) - coating-side reflectance (blue)
21 arg(17) - transmittance (red)
22 arg(18) - transmittance (green)
23 arg(19) - transmittance (blue)
24 }
25 { Fresnel approximation }
26 fresne = exp(-5.85*abs(Rdot)) - exp(-5.85);
27 fresne_refl(r) = r + fresne*(1 - r);
28 fresne_trans(t) = t*(1 - fresne);
29 { glass reflectance and transmittance }
30 glass_refl = fresne_refl(0.076);
31 glass_trans = fresne_trans(0.883);
32
33 clear_side = arg(10) * Rdot; { ray coming from plain side? }
34
35 frac_glass = 1 - arg(11); { glass coverage }
36
37 { frit specular components }
38 sr_frit_r = if(clear_side, glass_refl, frac_glass*glass_refl);
39 sr_frit_g = if(clear_side, glass_refl, frac_glass*glass_refl);
40 sr_frit_b = if(clear_side, glass_refl, frac_glass*glass_refl);
41 st_frit_r = frac_glass*glass_trans;
42 st_frit_g = frac_glass*glass_trans;
43 st_frit_b = frac_glass*glass_trans;
44
45 { low-E specular components }
46 sr_clear_r = fresne_refl(if(clear_side, arg(11), arg(14)));
47 sr_clear_g = fresne_refl(if(clear_side, arg(12), arg(15)));
48 sr_clear_b = fresne_refl(if(clear_side, arg(13), arg(16)));
49 st_clear_r = fresne_trans(arg(17));
50 st_clear_g = fresne_trans(arg(18));
51 st_clear_b = fresne_trans(arg(19));