appleseed Users Forum

The VSF Database, a collection of OSL shaders

Hello! I’ve been working on this project for months, and I’m happy to finally make it public.

Surface scattering has seen significant advances over the last few decades. We've gone from Cook-Torrence to multiscatter GGX and Disney's Principled shader. Volume scattering has not seen the same progress; it's telling that the primary scattering function we use, the Henyey-Greenstein, is over 60 years old. One possible reason for this is the MERL database, a collection of measured surface reflectances from a wide variety of materials. Easy access to that kind of data helped fuel the study of some of the above bidirectional scattering distribution functions (BSDFs).

Volume scattering could use a similar database. So as a supplement to our paper, we’ve gathered as many volume scattering function (VSF) samples as we can find in one place, in the hope that it triggers the same spark of innovation.

That may not seem useful, on the surface. However, each of those scattering functions has been translated into multiple Open Shading Language shaders. These vary in their level of realism and performance cost, and in my ever-so-slightly biased opinion are a step up from what you normally see for volume rendering. Some of these are “chromatic,” in that they vary the colour associated with each component function to try and approximate colour-based scattering effects. All of it is under an open-source license, of course.

Currently the database is dominated by cloud and fog scattering functions, but we’re hoping to expand it. I’ve started looking into biological scattering functions, for instance. If you’d like to help, you can clone the repository and create a merge request or get in touch with the email address listed in the database.


Hey there

So far, looks interesting. basically these are functions and shades never seen before?

Hi @hjhornbeck,

first of all a warm welcome to the appleseed forum and thanks for sharing your interesting research work!
Heterogeneous volumes and an accompanying OSL-volume shader are in code review and can hopefully be added to appleseed in the not too distant future. Realistic volume scattering is one of the major features (for a vfx targeted renderer like appleseed) we are still missing.

Here is a (denoised) preview picture of a cloud rendered with heterogeneous volumes in appleseed by our developer @biart


Hi @hjhornbeck, very interesting work, thanks for sharing!

Pretty much. I’ve seen a one or two of the OPAC scattering functions in the scientific literature, but nobody’s presented over two dozen of them at a time. While there’s some decades-old literature on combining two Henyey-Greenstein functions, the graphics community seems to have forgotten about that. I haven’t seen anything near the size or scope of what me and my co-author have done.

Ah yes, the good ol’ Walt Disney cloud dataset. I used it my research, too, albeit via Cycles. Here, for instance, is a slide from my presentation comparing several shaders.

Another example, with the Sun in a different place. Unlike the Appleseed image above, I was using a texture look-up to get the voxel dataset into Blender; as a result, the voxels are much coarser. You still get the basic idea.


it looks cinematic

Ironically, it’s not cinematic. Here’s the volume scattering function that Hyperion uses:

We find that smoothly interpolating between anisotropic and isotropic scattering based on bounce depth provides a nice balance between improved efficiency and accurately reproducing important optical effects. In particular, we currently linearly interpolate g∗ from g to zero between the 5th and 20th bounces and then solve for μ_s^∗ using the aforementioned relationship.
Burley, Brent, David Adler, Matt Jen-Yuan Chiang, Hank Driskill, Ralf Habel, Patrick Kelly, Peter Kutz, Yining Karl Li, and Daniel Teece. “The Design and Evolution of Disney’s Hyperion Renderer.” ACM Trans. Graph. 37, no. 3 (July 2018): 33:1–33:22.

If you plug either of the two right-most OSL shaders into Appleseed, you’re using a more realistic scattering function than Disney! The same appears to be true for Arnold, too. As far as I know, every artificial cloud you’ve seen in the cinema has used less realistic shaders than what’s in the database. They got away with that because they fudged the anisotropy based on the current camera angle (or used Hyperion), and they knew you wouldn’t have a reference photo.