Source Direct Sampling


I’m trying to simulate direct sunlight, using “source” object similar to the scene description generated from “gensky”, but instead of 0.5 degrees, I’m using a larger angle. Unfortunately, using the “-ds” option in rtrace doesn’t increase the direct sampling, no matter how large the source angle is. I’m only able to sample the source using indirect light.

Is there a way to make Radiance use direct sub-division on source objects?


If things haven’t changed, and I’m going back twenty plus years here, the (still?) only way to mimic the effect of sampling across the source is to repeat the computation with direct jitter enabled. And, maybe IIRC, a max of 0.7. There is a discussion around this on page 225 here:

BTW, for CBDM `history buffs’, I replaced the aimed rays solution for direct sky contribution (which only worked for clear glazing) with multiple sources (900) for each Tregenza patch years ago…



Daylight Experts Ltd.
Expert Witness | Simulation | Measurement | Conservation

Associate Editor Lighting Research & Technology

1 Like

The only change in 20 years is an improvement to the -dj option for round sources (i.e., source, sphere, and ring types) that allows settings all the way to 1.0 without missing the source. The -ds option could not possibly work for distant sources, since it is based on proximity, and it also does not work for spherical sources as this was not considered an important use case.

Final caveat is that polygonal sources that are not parallelograms do not make good light sources, as the code does not really know how to subdivide or randomly sample them.


So my conclusion from this discussion is that there’s no practical way to sample a “source” object, but then why is it possible to specify the divergence angle if there’s no way way to adequately sample it?

Is there some other practical workaround? Rerunning the simulation again for each ray doesn’t seem very practical either…


Yes, I suppose that is true. The only distant light source used in most simulations is the sun, for which -dj is usually adequate for generating penumbras.

There are two approaches to solving your problem. One is to render at a higher resolution with -ps 1 -dj 1 then downsample the result using pfilt to get smoother penumbras. The rtpict utility is a good way to take advantage of multiple processor cores if you are running under Unix (Linux or MacOS). This is the method recommended most often. The other is to use a ring for your light source, and place it rather far away from your model. This will be roughly equivalent to a distant source, but will work with the -ds option.