ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/gen/glaze1.cal
Revision: 2.2
Committed: Mon Jun 30 18:12:24 2003 UTC (20 years, 9 months ago) by greg
Branch: MAIN
CVS Tags: rad3R7P2, rad3R7P1, rad3R6, rad3R6P1, rad3R8
Changes since 2.1: +2 -2 lines
Log Message:
Updated Fresnel approximation

File Contents

# User Rev Content
1 greg 2.2 { RCSid: $Id: glaze1.cal,v 2.1 2003/02/22 02:07:23 greg Exp $ }
2 greg 2.1 {
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 greg 2.2 fresne = exp(-5.85*abs(Rdot)) - exp(-5.85);
27 greg 2.1 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_lowE_r = fresne_refl(if(clear_side, arg(11), arg(14)));
47     sr_lowE_g = fresne_refl(if(clear_side, arg(12), arg(15)));
48     sr_lowE_b = fresne_refl(if(clear_side, arg(13), arg(16)));
49     st_lowE_r = fresne_trans(arg(17));
50     st_lowE_g = fresne_trans(arg(18));
51     st_lowE_b = fresne_trans(arg(19));