New/updated annual simulation tools

Dear Users,

We just introduced a new tool with nearly identical semantics to rfluxmtx, but based on the Radiance C++ library interface. It is called rxfluxmtx, following suit from rxpiece, which was introduced to the Unix build system before the official 6.0 release. (The other C++ tools, rxtrace, rxpict, and rxcontrib, are still optional compiles through the rmake build system.) This new tool is available in the latest Radiance HEAD release.

Aside from having more x’s in its name than any other Radiance program, rxfluxmtx overcomes the limitation in the number of separate receiver objects (i.e., receivers with unique modifiers). This is an unfortunate side-effect of the way rfluxmtx constructs a command-line naming all of the needed materials for rcontrib, running up against the inherent 10K character limit on command-line length.

Another benefit of the new tool is support for native view generation, avoiding the need for a separate call to vwrays and the related shenanigans setting -x and -y output resolutions.

Lastly, rxfluxmtx adds a -r option to recover partially-completed output in cases where the computer was unexpectedly shut down or unplugged. Unlike rfluxmtx, the new tool will report an error if any of the output files exists if neither -r nor -fo options are present, more closely matching rcontrib behavior. However, this does require that all outputs must be named files, no commands, and ASCII results are not supported due to the difficulties recovering non-binary types. (This is actually a limitation of the C++ RcontribSimulManager class.)

While the new rxfluxmtx adds convenient support for component picture generation, the final timestep calculation has been problematic for some years due to the expense of scaling and summing large numbers of HDR pictures. This only gets worse with spectral (HSR) pictures, which are typically 7 times bigger and cannot be injested by dctimestep at all. We worked around some of these difficulties in the tutorials at the Salt Lake City workshop, getting the process to work with the new rcomb tool and some creative command-line mojo.

To streamline this annual simulation process for time-lapse animation, we introduced the pvsum tool in the 6.0 release, which supports vector and matrix multiplication on a set of component pictures produced by rfluxmtx or rxfluxmtx. Making this process efficient was the biggest challenge, and tomorrow’s HEAD should include a new pvsum -m option that speeds things up when the input component data exceed the available memory cache. We maximize throughput by doing partial component sums over the whole sequence, avoiding Unix page faults that would otherwise occur.

This leads us to the biggest caveat, which is the fact that these tools are only built for Linux and macOS machines. If you are on a Windows box, you will need to install the WSL add-on, which is free but a bit of work to bring up. Nevertheless, you will gain a lot of benefits from doing so, at least as far as Radiance is concerned.

Cheers,
-Greg

P.S. In case you missed it, Athina Alight and Alstan Jakubiec just published an exciting pair of papers on melanopic simulation, with novel visualizations and analyses using Radiance 6 with other tools they collected or developed. Definitely worth a look!