Questions on BSDF from a starter

Hello everyone! I have two questions on BSDF. Really appreciate your answer.

  1. When I try the command genbsdf, should I create the size of the CFS exactly as the window? Or rather, BSDF data is like a texture placed on the surface of a window, without the need to be the same size as the window.

2)If I do not create a bsdf file for like a prism or a blind, I just create it as a structure of the room. Would I get a relatively right result using 2-phase method?

Good questions – quick replies:

  1. A BSDF is more like a pattern on ray directions, if you want to think of it that way. Your geometry doesn’t need to match the window, unless you use the genBSDF +geom option together with the pkgBSDF command to place geometry within proxy surfaces in your scene.

  2. You can try it, but without the benefit of the mkillum command, you will have difficulty getting smooth results under anything other than an overcast sky, and mkillum doesn’t work within a 2-phase (aka. DC or daylight coefficient) method.

Check out my 2011 Radiance workshop talks here for more details.


Hi Greg,

Thanks a lot for your quick replies. I’ve got three further questions. :smiley:

  1. If a bsdf is more like a proxy, does it mean that I could just focus on the shape and ignore the size of a blind or a prism? Even though I create a blind or prism much bigger than its actual size, I would get a right bsdf file when I just focus on the way and pattern the ray may interact with the CFS. (If I Iincrease the array number of a blind or a prism in a window, I guess it may be somehow different?)

  2. In which way can I get a more real rendering of a room with CFS? I mainly mean the window part not the entire room. I want people to know what vision they may get by using CFS.

  3. When I mention to create the CFS as a structure of the room and use 2-phase method, I want to try if there is a way that I do not have to create a bsdf file every time I change the shape of a CFS. If the result is very similar to 3-phase method(or fall in a reasonable range), I guess 2-phase method is faster for me to optimize the shape of a CFS.

More quick replies…

  1. As long as the system “repeats” as you adjust it’s size, i.e., you don’t have important changes at the borders, you should be OK using the same BSDF over the window. People often run genBSDF on a repeatable subsection of a device and apply it to whatever size window opening they need. In other words, you can most ignore the edge effects in a lot of systems. Of course, changing the angle of the blind slats requires rerunning genBSDF, so people often have several files for a venetian blinds system corresponding to different slat angle settings.
  1. The usual approach to rendering visuals of the window system with spatial variation is to take the BSDF generated for the system together with properly-sized blinds or prism geometry sandwiched between proxy surfaces, which I described in one of the workshop talks I linked above, and may be created automatically by pkgBSDF with the appropriate options.

  2. As I said before, you can try it, but you are asking a Monte Carlo ray tracer to find the important sources of illumination with a complex geometric system mediating that flux. It’s a difficult problem, and you will get a lot of noise and/or other artifacts in most situations.


Thanks a lot, Greg! I am very grateful for your answer. :smile:

Hi Greg,

I don’t know if it is suitable to start a new topic here. But it is also a question for a starter, I think it will be helpful for others.

In genBSDF, it defines that the positive Z-axis points into the room. However, y-axis and x-axis are not defined for the direction of the width and height side of the window. For asymmetrical CFS, this may be a problem to position it as the designer wishes accurately. Is there any simple way to solve this problem?

The genBSDF man page does state that the X-axis corresponds to “width” which will ultimately be horizontal in a window opening, whereas the Y-axis corresponds to “height”. It doesn’t matter where you place the system in the X-Y plane – genBSDF will use either the calculation bounds supplied by the the -dim option, or take the outer limits from the geometry using the getbbox command. By convention, the Y-axis ends up corresponding to the “up” direction in the BSDF or aBSDF primitive where the XML file is applied in a scene description. The actual direction of this vector is specified in the same primitive, as descirbed in the Radiance reference manual.

Does this help?

Yes! what if it’s a top lighting rather than a side lighting window? I do not know how to define and distinguish which side is its width and height side.

Well, “height” is always the Y-axis as far as genBSDF is concerned, and always associated with the up vector you define in the BSDF or aBSDF primitive used in your scene description. The fact that it isn’t vertical is immaterial. You simply specify a horizontal “up” vector in the direction you want the +Y axis to be oriented. In many cases, this corresponds to the actual Y-axis in the scene, which points north by convention. Radiance doesn’t enforce any of its conventions, but provides an unambiguous means to specify everything.

Thanks a lot, Greg. Really appreciate your help!!! :smile: