Using 3P and 5P method for image-based glare analysis with roller shades

Dear Radiance experts,

I am a PhD student who is trying to compare different image-based simulation methods (3P, 5P, ClimateStudio, Honeybee DC, and potentially Raytraverse) in their hourly DGP values. The ultimate goal is to select an accurate and efficient method to define the maximum allowable openness factor (direct-direct) and visible transmittance (direct-direct + direct-diffuse) of roller shades for a specific city and orientation. Currently, we assume that aBSDF + 5P method is the most accurate one. I am using information in this post (gaussKoteyBSDF) to generate BSDFs for roller shades.

I am following @sarith’s tutorials of 3P and 5P method and have some questions about BSDFs and the methods.

1. BSDFs in 5P:

  • I noticed that several posts suggested that glazing should be modeled as a glass type in the sun-coefficient simulation. Does it mean that the glass type is more accurate and has a finer resolution than the BSDF type?

  • I am not sure whether BSDFs generated from LBNL WINDOW for 3P simulations will be consistent with the glass type in the sun-coefficient simulation.

  • aBSDFs are recommended for roller shades which have a view component. Is that correct that aBSDFs can be used to separate the direct-direct and direct-diffuse components for roller shades? If this is not the case, openness factors (direct-direct) of 1% and 5% will not make a difference in DGP values when roller shades have the same total visible transmittance (direct-direct + direct-diffuse).

  • Is that correct that BRDFs and BTDFs are both used in 3P simulations? Thus, the color/reflectance of roller shades is considered.

2. Modified 3P:

  • To avoid the complexity of generating a single BSDF xml file (composed of both an enclosed roller shade and a glazing system), I modified the original 3P method from VTDS to VTDTDS as shown in the figure above. I am modeling the roller shades and glazing as glow sources, and explicitly use their T matrices, so I only need to replace “shading.xml” when evaluating different roller shades. However, I am not sure whether the modified 3P is still valid.

3. Sun-coefficient simulations:

  • I can run a MF: 3 simulation on a Window system, and this seems to be the finest resolution I could have. Will there be a significant difference in the glare results when we switch from MF:6 to MF:3?

  • Current I have results from two sun-coefficient simulations (glazing only no shades, 400 x 400).
    a. With a MF:3 simulation and a glass type in the sun-coefficient simulation, the sun disc is a small dot. Compared with 5P, 3P underestimates DGP values.

    b. With a MF:1 simulation and a BSDF primitive for glass, the sun disc is bigger. With a BSDF material, we see more noise in the thrid term hdr image. Is that true that with a glass type (without any shades), we see sharp edges of the solar component? Hourly DGP values in this case are similar to the ones computed from the 3P method.

4. genBSDF:
I tried to use genBSDF to generate a BSDF xml file for a glass material, but encountered an error “Device entirely inside room!

genBSDF +f -c 500 -geom meter glazing_glass.rad>glazing.xml

The rad file looks like this:

void glass glazing_glass
3 0.55 0.55 0.55
glazing_glass polygon glazing_geo
0.000000 -0.08 0.6
0.000000 -0.08 2.4288
4.000000 -0.08 2.4288
4.000000 -0.08 0.6

Thank you so much for you time and patience!


Hi Sichen,

genBSDF is likely giving that error because the orientation of the glazing is not appropriate. See section 3.1 of the genBSDF tutorial. It should work once your rotate your glazing and place it below (Z=0).

# xform -rx 90 -t 0 0.6 0

void glass glazing_glass
3               0.55               0.55               0.55

glazing_glass polygon glazing_geo
                  0                  0              -0.08
                  0            -1.8288              -0.08
                  4            -1.8288              -0.08
                  4                  0              -0.08



Hi Sichen,

I will answer the questions I can in-line:

In radiance the “glass” material primitive is parametrically/functionally defined, so it is not governed by a resolution. The resolution of a view ray through glass will be determined by the resolution of your image. With the BSDF primitive, the resolution is determined by how the BSDF is made. The 3 phase method requires a “klems” bsdf, which is what is available from LBNL window, which have a resolution of 145 directions per hemisphere, which is around ~640 times larger than the apparent size of the sun. Because glare is driven by a non-linear relationship between size and brightness, these coarse resolutions are not suitable for glare evaluations. One solution to this is the 5-phase method, which only uses this coarse resolution for the indirect parts of the simulation, and then more precisely models the direct view using “glass” and other functionall defined or higher resolution materials.

Your assumption is correct. One way to use the low resolution klems BSDF (or medium/high resolution tensor tree BSDF) materials with the 5-phase (or other direct view) methods, is via the aBSDF primitive. This material estimates the peak transmittance transmittance from the BSDF data and models the peak with the direct calculation in radiance. This material is generally suitable for roller shades where the transmission is well approximated by a sum of pure specular transmission and fully diffuse transmission. The aBSDF does not work well for semi-specular transmission like frosted glass.

This is not correct, generally the three phase simulation will not include the BRDF. If the reflectance off of the shade fabric is important in the scene, then the receiver geometry when calculating the view matrix needs to have the proper material assigned, but this is generally not done because this component is assumed to be small, and it undermines the benefit of the 3-phase method (which is using the same view matrix to calculate multiple transmission materials).

The validity of this depends on how you are generating the shading_to_glazing.mtx, which is essentially what you are using for “generating a single BSDF” There are a number of options for doing this, it is really not so complex, see: What is the preferred method for combining BSDF files? - Unmet Hours

you can use genBSDF if you need to account for inter-reflection, and rmtxop if you do not. My guess is you do not, unless you have very reflective shade fabric, high openess, and reflective glazing, in which case you will almost certainly have glare when the sun is visible anyways. In general, I think genBSDF will give better control of the sampling and better results then using rcontrib/rfluxmtx to make the shading_to_glazing.mtx. Your proposed method seems to be akin to the methods Greg Ward and Taoning Wang developed for non-coplanar elements:

Maybe they can chime in on where the most up to date resource for that is, but since your elements are coplanar, I think you have simpler options.

If you are only interested in annual results, and your model will always be this simple, a higher MF value is probably not necessary, multiple studies did not find much sensitivity in this parameter: and

400x400 is probably the absolute minimum resolution you should consider, In our paper: Efficient Simulation for Visual Comfort Evaluations - ScienceDirect

We ran a large set of parameters for 2-phase images (but with a separate direct sun component, called 2-phase DDS by Sarith’s tutorial, making them similar (but with fewer approximations to 5-phase images), and found 400x400 images to be the minimum reliable, but with some caveats. This is because a single pixel is now approaching the apparent size of the sun, so there will be a large variance in the apparent solid angle of the sun. This did not matter so much in this study, because there is only clear glazing, but once shades bring the view closer to borderline glare, this variance could be more consequential (indeed this is the whole premise behind raytraverse, images are not so well suited for storing the data needed to accurately capture the visual field for the purpose of calculating glare metrics).

You should see the sharp edges, this is the artifact of using the BSDF for the direct transmission, and is why using aBSDF or a functional material is necessary.

More generally, I would take a look at the following publications to help hone your research question:

  1. User assessment of fabric shading devices with a low openness factor - ScienceDirect

This study found that shades with openness below 3% do not provide adequate view, which suggests there may not be much benefit to optimizing openness when it is impossible to have a 3% shade that adequately solves for glare (except when the sun is only in the extreme periphery, which does not seem to be the case you are modelling.

  1. Modeling specular transmission of complex fenestration systems with data-driven BSDFs - ScienceDirect

this paper gets into the details and challenges of modeling the direct sun for glare. Essentially, your question is a bit ahead of the science, as there is not a good consensus on how to handle the direct sun at the granularity that different openness factors would have on results. David Geisler-Moroder has a number of presentations from the last few radiance workshops on this issue as well (this is the most recent: pdf:, video:

  1. A Critical Comparison of Annual Glare Simulation Methods

Finally, our paper comparing fast glare evaluations includes a scenario with a roller shade, we did not include a 5-phase or 2-phase DDS calculation here because it is so much slower than all of the other options. In this paper we used a simplified model, which I now see you already discussed with Jan here: BRTDfunc to model angular dependent transmission - #15 by Jan_Wienold

If you need any help getting started with raytraverse, get in touch (especially after I defend my thesis at the end of the month). As a plug, I will note that raytraverse gets around the whole resolution issue by very precisely sampling around the direct sun and storing that component separately from the semi-specular and diffuse transmission. And, using the 1-componentDV method (which is what was used for this paper) the sun position is sampled precisely for each time-step, so there is no resolution limit on sun position either. While it takes a little longer than ClimateStudio, the ClimateStudio annual glare method is not reliable for roller-shades and will certainly not capture any nuance in assessing different fabrics, and it will be orders of magnitude faster than the 3 or 5 phase image generation, even with a large number of fabric options, as the total time is less than just the dctimestep/evalglare part of a 5-phase image.




Hi Sarith,

Thank you so much for your response. Basically, we create a horizontal glazing within the -z half space and get a vertical glazing by rotating it by 90 degrees along the x axis.


Hi Stephen,

Thank you so much for the detailed reply! You cleared my confusions about BSDFs as well as 3P/5P. All the references you provided are very useful and related to my current research.

Thank you for offering help about raytraverse, and I will get in touch when you finish your defense.