Best matrix/phase methods with obstructions

First a broad question to stir up any words of wisdom, papers, and presentations, that I might have missed… and a few more specific questions mixed into my thoughts about each phase method below.

Let’s say you have a room model that has various obstructions, say inside there’s a combination of ductwork, various height office furniture, and columns near and far from windows/skylights. And exterior there’s another building that influences sun patterns on your window or skylight. If you don’t have a need to interchange dynamic BSDFs or parametric facade option matrices, is there much accuracy benefit to the 3,4,5, or 6 phase methods if you can use the 2P+DDS method for solar accuracy as described in Sarith’s tutorial? Does each extra phase actually add more model and script setup time, and also add potential errors in how you break up sender/receiver surfaces around obstructions?

My take on calculation method options:

Simple 2-phase - won’t give precise sun effects, but requires simplest model setup and simplest calc routine. Can slightly improve sun effects using e.g. r4 sky subdivisions. If you used more sky divisions like r6 or more, and very high -ad does this get closer to solar accuracy of the next option, or too high risk of rays missing the tiny sun patches?

Enhanced 2-phase with direct suns (Two-Phase DDS Version in Sarith’s tutorial) - adds precise sun effects, needs a little more scripting and splitting the glazing out of the model to make black surface models, takes more time to calculate all the suns. Is the r4 still beneficial or just risk of missing smaller patches in the DC or blackened model ray tracing? And do you only need -ab 1 and higher -ad /edit: for the direct sun calculation/ if you have trans or static-BSDF glazing materials to ensure rays get to those surfaces, and through them? I noticed Sarith’s tutorial uses -ad 256 but Andy’s 5-Phase tutorial used a much higher setting.

Standard 3-phase - Correct me if I’m wrong, but with varying obstruction locations, you’d need to split your sender/receiver glazing into pieces by proximity to obstructions - complicating the script and model setup. Any thoughts on time or accuracy benefits (compared to “2P+DDS” method) versus this next step of modeling/scripting hassle? You actually lose accuracy of sun effects until you get to the 5-Phase method, even with r4 or similar sky subdivisions. The primary benefit would come if you had many interchangeable options to study or dynamic shading/glazing system with BSDF, correct? But even then you might need to go to 5-Phase if the peak sun values are important.

4-phase - if you need to add proxy surfaces around thicker external shading geometry. In this case you’d have even more levels of complexity if you’re breaking both external layer of proxy surfaces and internal layer of glazing into pieces based on external and internal obstructions.

5-phase - would add back in the solar accuracy, but if you’re breaking up internal and external sender/receivers around obstructions, you also now have to manage regular and black versions of the models for various sender and receiver flux matrix combinations.

Please comment wherever I’m missing considerations. Thanks, Chris

PS, sorry for the length - didn’t realize it until i hit the “post” button!

Hello Christopher,

In my experience when teaching both to professionals AND students, the complexity of multiphase methods is sometimes too big. Beyond the scripting (which is obvious), the fact that you average the “brightness” of a window that may be partially shaded and that the properties of the BSDFs are averaged along all the window surface sometimes makes no sense to practitioners. I understand several of this things are, in practice, solved by adding the direct sun and/or splitting surfaces… but still.

Also (in the models I have worked with), unless you can easily retrieve BSDFs (either from a database or procedurally calculating them), it is still sometimes faster to use the 2-phase or even 2-phase+DS than calling genBSDF. The latter can take as much time as the former alternatives, generating averages. This is not a theorem, so I guess you could test your case.

For those reasons, I ended up always using methdos that calculate the contribution directly from sensorpoints to sky/sun (i.e. 2-phase and 2-phase+direct sun). Those are implemented in the tools I have developed, and so far have worked well for me.

In summary, in your case and sometimes in several others, I would go for either the 2-phase or the 2-phase+DDS. As you said,the latter will give you a much better time-step accuracy, but according to a paper from Elenora Brembilla and John Mardaljevic, they may not necessarily increase the accuracy too much when you calculate global ilumination in an annual basis (e.g. DA, UDI).

I hope this helps… this is MY OPINION from MY EXPERIENCE. Probably other people can give you better guidance from real facts.


PS: I think multiphase methods are extremely cool for research-like situations, or when you have precalculated BSDFs, or for dynamic facades, and many other cases that you may list. I just think sometimes it is not worth going through the pain of using them, and that it is really easy to make mistake when using them.

Hi Chris,

Regarding 2-phase and 2-Phase with direct suns
The DDS version from the tutorial is my attempt at a Radiance-only interpretation of the DDS method as likely implemented in Daysim. The script in the tutorial does not employ any interpolation algorithms for luminance correction. @mostapha and I repurposed parts of gendaylit and gendaymtx to create a slightly more accurate version of the DDS method in Honeybee[+] by considering actual sunpath for sun-matrix creation (instead of sun-matrices based on 2305, 5165 suns etc). When compared with “truth” simulations via gendaylit-rtrace, the DDS method falters in some cases (as expected), when there is direct sun. However, for a simple usecase, I didnt find those deviations to overly affect annual metrics like ASE (related paper).

I had tried the simple 2-phase with MF:6+ skies, but that method turned out to be far more computationally intensive for generating accurate results. This might be becuase the sun patches are still glow surfaces that need to be “found” through Monte-Carlo raytracing. The final step in the DDS version uses the light primitive to incorporate sun in the simulation.


Thanks for the responses. Follow-ups on some of the specifics for the Two-Phase plus suns, DDS Version in Sarith’s tutorial:

  • Is the r4 still beneficial without major risk of missing smaller patches in the DC ray tracing? It seems like it might add some accuracy to the sky components without too much computation cost.

  • Do you only need -ab 1 and higher -ad for the direct sun calculation if you have trans or static-BSDF glazing materials to ensure rays get to those surfaces, and through them? I noticed for example Sarith’s tutorial uses -ad 256 but Andy’s 5-Phase tutorial used a much higher setting of -ad 65536.

  • Since you’re turning the opaque surfaces black for the sun calculations, would you introduce any major flaws in the direct calculations if you use -ab 2 to catch any additional trans materials inside your space like translucent partitions?

Hi Chris,

The setting I use come from this unpublished sensitivity study performed using the BRE-IDMAP dataset:
For the interior/view matrix of a 3ph simulation I found that very high -ad reduces variability with little computation expense. Though using the same high -ad for the exterior daylight matrix causes the simulation time to swell and doesn’t improve the result much.
For a 2PH simulation, you’re using the same -ad for both the interior and exterior part of the simulation, so optimal settings are likely to be different from what I found in the sensitivity study. Further, variations in models such as window size, distance form the window, exterior context, will affect the optimal parameters. I often suggest using one point far from the window and doing a sensitivity study for each project to determine optimal simulation parameters (though I don’t always do this myself).


Hi Chris,

The effect on computational time is minimal if you are referring to solar-discs in the final part of the simulation (r4:2305 to r6: 5165). For a r6 (or higher) sun configuration, increasing the sky patches in the previous steps (involving glow-based sky-patches) hasn’t shown much of an effect in accuracy of results when compared to rtrace with gendaylit.

The -ad setting of 256 was something that I had borrowed from the validation study conducted by LBNL for the improved Five-Phase method. That study, and the example in the tutorial, includes BSDFs with proxy-geometry. The assumption there was that the diffused part of the simulation inside the shading system had been precalculated through genBSDF and incorporated into the simulation with a tensor-tree BDSF.
As you would have noticed in the tutorial, the example for the 2-Phase method employs a simplistic room with glass. So, a value of -ad 256 still made sense to me. For trans-based shades or fenestrations with complex geometry a higher value of -ad would be more appropriate. Greg, Taoning and Andy would have better insights on this topic and your question about -ab 2 for trans materials (tagging: @Greg_Ward, @Taoning_Wang1).


If you are gathering light from a “glow” sky, then -ab 2 is probably needed, though I don’t know the DDS method. If you have a set of sky “light” sources, then the -ab setting should not matter, even for trans or BSDF materials.