Skip to content

appleseed 1.9.0-beta

Choose a tag to compare
@dictoon dictoon released this 01 May 13:08
· 1147 commits to master since this release

These are the release notes for appleseed 1.9.0-beta.

These notes are part of a larger release, check out the main announcement for details.


This release is the result of four intense months of work by the incredibly talented and dedicated appleseed development team.

Many thanks to our code contributors for this release:

  • Muhamed Ali
  • Aytek Aman
  • Luis Barrancos
  • François Beaune
  • Artem Bishev
  • Junchen Deng
  • Jonathan Dent
  • Sayali Deshpande
  • Dorian Fevrier
  • Eyal Landau
  • Thomas Manceau
  • Kevin Masson
  • Fedor Matantsev
  • Jino Park
  • Sergo Pogosyan
  • Girish Ramesh
  • Jamorn Sriwasansak
  • Phillip Thomas
  • Esteban Tovagliari
  • Neil You

And to our internal testers, feature specialists and artists, in particular:

  • Richard Allen
  • François Gilliot
  • Juan Carlos Gutiérrez
  • Luke Kliber
  • Giuseppe Lucido

Interested in joining the appleseed development team, or want to get in touch with the developers? Join us on Discord. Simply interested in following appleseed's development and staying informed about upcoming appleseed releases? Follow us on Twitter.


Random-Walk Subsurface Scattering

Artem Bishev was one of our Google Summer of Code participants last year. He took up the rather intimidating project of implementing volumetric rendering in appleseed, and did an admirable job. Make sure to check out his final report for a detailed account of the features he implemented during the summer and the results he obtained.

Artem did not stop contributing once the summer was over. Instead, he kept pushing forward and implemented the much anticipated "Random Walk Subsurface Scattering", a more accurate method of computing subsurface scattering that actually simulates the travel of light under the surface of objects.

The results are nothing short of amazing, especially since Random Walk SSS appears to be as fast or sometimes faster than diffusion-based SSS (the traditional, less accurate method). Here are a couple renders showing Random Walk SSS in action:

Stanford Dragon, render by Artem Bishev
(Stanford Dragon, render by Artem Bishev.)

Statue of Lu-Yu by Artec 3, render by Giuseppe Lucido
(Statue of Lu-Yu by Artec 3D, render by Giuseppe Lucido.)


Esteban integrated the BCD denoiser in appleseed. BCD stands for Bayesian Collaborative Denoiser: it's a denoising algorithm designed to remove the last bits of noise from high quality renders rendered with many samples per pixel (unlike other denoising techniques that basically reconstruct an image from a very small number of samples per pixel).

Here is the denoiser in action (click for the original uncompressed image):

BCD Denoiser

Light Paths Recording and Visualization

Light paths can now be efficiently recorded during rendering, without significantly impacting render times. This is part of a larger project where appleseed is being used in an industrial context to analyze how light is scattering on or inside machines and instruments.

When light paths recording is enabled in the rendering settings, it becomes possible (once rendering is stopped) to explore and visualize all light paths that contributed to any given pixel of the image. Light paths can be recorded for the whole image or for a given region when a render window is defined. Light paths can then be visualized interactively via an OpenGL render of the scene. Light paths can also be exported to disk in an open and efficient binary file format.

Here is a screenshot of showing one of the many light paths that contributed to a pixel that was chosen in the render of a 3D model of the Hubble Space Telescope made freely available by NASA:

Visualizing light paths on the Hubble telescope

Here is a short video showing the process of enabling light paths capture and visualizing light paths in

Light paths demo video

Shutter Opening/Closing Curves

Jino Park and Fedor Matantsev implemented support for non-instantaneous opening and closing of camera shutters: it is now possible to specify how long a camera's shutter takes to open or close, as well as the rate at which it opens and closes.

Here is an illustration showing three cases:

  1. "Instantaneous" means that the camera's shutter opens and closes instantaneously.
  2. "Linear" means that the camera's shutter opens and closes linearly (or, said differently, the camera's shutter opens and closes at a constant rate).
  3. "Bézier" means that the camera's shutter opening/closing position is defined by an arbitrary Bézier curve.

Shutter Opening/Closing Curves

Render Stamp

It is now possible to have appleseed add a "render stamp" to renders. The render stamp is fully configurable and can contain a mixture of arbitrary text and predefined variables such as appleseed version, render time, etc. Here is what the default render stamp looks like:

Render Stamp

Pixel Time AOV

Esteban also added a new Pixel Time AOV (or "render layer") that holds per-pixel render times (technically, the median time it took to render one sample inside each pixel). This new AOV can help figure out which areas of the image are most expensive to render, and thus help optimize renders.

Here is an example of the pixel time AOV (with exposure adjusted) that shows that grooves and other concave areas of the shaderball are more expensive to render than convex ones (the scattered white dots are likely due to the operating system interrupting the rendering process once in a while):

Pixel Time AOV

Other New Features and Improvements


  • Considerably sped up OSL texturing.
  • Considerably reduced noise when using diffusion-based BSSRDFs.
  • Improved the Directional Dipole BSSRDF.
  • Fixed occasional infinite samples warning with diffusion-based BSSRDFs.
  • Added OSL vector transforms.
  • Fixed OSL NDC transforms.
  • Fixed the behavior of OSL's printf() function.
  • Fixed crash with Light Tree and light-emitting OSL shaders.
  • Added support for writing grayscale + alpha PNG files.
  • Improved logging of rendering settings.
  • Allow to save extra (internal) AOVs to disk.
  • Added support for energy compensation to a number of BSDFs.
  • Improved sampling of OSL's as_glossy() closure.
  • Added exposure multiplier inputs to lat-long environment EDF, mirrorball environment EDF and spot light.
  • Fixed and improved detection of alpha mapping.
  • Fixed self-intersections when rendering curves.
  • AOVs are now always saved as OpenEXR files, regardless of the file format chosen for the main image.
  • Added an Invalid Samples AOV.
  • Use Blackman-Harris instead of Gaussian when an invalid pixel filter is specified.
  • Fixed default OIIO texture wrap modes in Disney material.

  • Added Settings dialog.
  • Fixed crash when plugins directory does not exist.
  • Fixed crash when mouse is dragged out of canvas if the pixel inspection is toggled on.
  • Preserve environment EDFs transforms across edits.
  • Update color preview when typing values in color field of a color entity.
  • Small user interface improvements and tweaks.
  • Tweaked default bounce limits.
  • Fixed missing project file extensions in File → Open Recent menu.
  • Added a Clear Missing Files entry in File → Open Recent menu.
  • Fixed navigation during interactive rendering after having edited the frame entity.
  • Added "Bitmap Files" filter to image file dialogs.


  • AOVs are now sent to stdout when using --to-stdout.
  • Fixed AOVs disappearing when command line arguments alter the frame.


  • projecttool can now remove unused entities and print dependencies between entities.

OSL Shaders

  • New shaders: as_blackbody, as_blend_color, as_bump, as_composite_color, as_fresnel, as_subsurface, as_switch_surface, as_switch_texture, as_texture, as_texture_info, as_texture3d, as_triplanar.
  • Renamed shader as_layer_shader to as_blend_shader.
  • Fixed anisotropy rotation in as_disney_material.
  • Added Pref, Nref and UV coordinates to as_globals.
  • Increased max ray depth in OSL shaders from 32 to 100.
  • Enabled coating over transmission in as_standard_surface.
  • Allow to choose the SSS profile in as_standard_surface.
  • Don't limit incandescence amount to 1 in as_standard_surface.
  • The source code of the OSL shaders is now included with appleseed.