The second point release of ART brings more fixes and repairs, all listed in the changelog. Read on for a more detailed description of the main items.

But first, a word from the maintainer: this second point release should have been out way earlier - apologies for the delay. That it took this long has two main reasons:

  • I am currently on a sabbatical with the research department of Weta Digital in New Zealand. So I only have weekends to work on this, as my main research work here has nothing to do with ART.

  • The changes introduced in 2.0.2 were quite a bit more far reaching than I had originally planned.

A lot of the changes which were made fall in the category of “stuff that really ought to have been done before release”. Trouble is, there simply was not enough time for that before I left for New Zealand. If I now manage to keep up the pace of bringing out a meaningful point release with such cleanups every month for a while, 2.1 could end up being what 2.0 should have been - an actually presentable system.

On to a discussion of the two new features:

Colourspace artraw Images

In addition to the spectral output options such as -s8v, -s46e and such, artist can now be instructed to directly write colourspace artraw images: the relevant option is called -xyz.

ART 1.x and the 2.x alphas used to have this feature: but as it needed serious cleanup before seeing the light of day, it was not included in the release version. Of course, ART internally still works with spectral data even if you opt to generate colourspace artraw images as result of your rendering pass: all that changes is that spectral data is not written to the result image, but converted to colour values beforehand. Specifically, colourspace artraw contain floating point HDR CIE XYZ values, plus (if the rendering was done with option -p) polarisation information for the three channels.

In terms of content, a non-polarised colourspace artraw is actually identical to an artcsp image. In spite of this slight duplication of functionality, it is conceptually easier to just add this “plain XYZ” capability to artraw, so that the result of a rendering pass is always such image, with no exceptions.

While writing the result of your rendering pass to a colourspace image obviously destroys information (you lose all spectral information), it does have one potentially quite important advantage. In colourspace mode, the hero wavelength samples generated during rendering are directly multiplied with high resolution versions of the CIE XYZ matching functions, and accumulated to the colour values of the result pixel. This completely avoids all spectral aliasing issues, e.g. with spiky lightsources. For this reason, -xyz might actually become the default rendering mode of artist in the future. ART will always retain the ability to write spectral artraw images: but it might make sense to switch the default mode to the option with the highest colour accuracy in the result images.

As accessing the content of colourspace images on a per wavelength basis makes no sense, the -wl parameter of polvis now also accepts a single letter as input: [r|g|b] and [l|m|s] (for long-medium-short) can be used interchangeably. The -wl parameter of tonemap does not (yet) have this feature, but will return the most suitable one of the three channels in the artraw image after conversion to RGB. So e.g. -wl 630 would yield a greyscale extraction of the red channel, if it was invoked on an XYZ artraw.

One of the next point updates will restore a related capability ART 1.x used to have: switching the matching functions used to generate a colourspace image. That way, one will be able to e.g. use the response functions of digital cameras instead of the human XYZ response functions.

Controlling default artraw content via an envvar

Until now, artist was hard-wired to default to s8v, i.e. 8 sample spectra which cover the visible range, if the user did not specify anything else. It still behaves like that: but you can now set a default value for this via an environment variable called ART_DEFAULT_ISR. This is useful if you do not actually need spectral images for your work, and want to set CIE XYZ artraw images to be the default form of output without always having to specify the option -xyz at the command line.