appleseed is an open source, physically-based global illumination rendering engine primarily designed for animation and visual effects.


appleseed Build Status Build status Documentation Status DOI

Interior Scene by Juan Carlos Gutiérrez


appleseed is an open source, physically-based global illumination rendering engine primarily designed for animation and visual effects.

appleseed is actively developed by a small, international team of talented volunteers from the animation and VFX industry. Its core mission is to provide individuals and small studios with a complete, reliable, fully open rendering package.

Over the years appleseed has been used on several projects including TV documentaries, ads, promotional videos and an animation short.

appleseed is available as a portable C++ library with C++ and Python APIs, as a set of standalone applications for Windows, Linux and macOS, and as native plugins for content creation applications. Downloads →

Read more…

On the Web



appleseed releases have DOIs for scientific citation:

Related Projects


appleseed and its accompanying software is released under the MIT license.

© 2010-2019 The appleseedhq Organization

  • Upgrade to Qt 5

    Upgrade to Qt 5


    This is now working! This is a required change for #2393 to work on macOS. Required changes to build:


    In order to build with WITH_DISNEY_MATERIAL=OFF, the only change needed is to first download and build (or download a precompiled version of) Qt 5, I tested with the latest Qt 5.12.2. I recommend building from source or using this precompiled version (this is what I tested with) because the official builds are massive.

    With that done, the cmake command needs to be modified slightly, removing -DQT_QMAKE_EXECUTABLE and replacing it with -DCMAKE_PREFIX_PATH, which should point to the root qt5 folder. For example, for me that is -DCMAKE_PREFIX_PATH=G:\qt5.

    Finally, in the Visual Studio solution, the debugging environment variables need to be changed slightly (I'm not sure if this is true with the official builds but it is with the precompiled one I linked), we need to now include qt5\lib and qt5\bin in PATH. (This is under Environment when you right-click a target and to go properties then select All Configurations).

    Building with WITH_DISNEY_MATERIAL=ON requires a patched SeExpr, and I've made a version of appleseed-deps which supports this, on the qt5 branch. The BuildAll.bat should work. You can also just comment out everything except the SeExpr part of that build script and copy it over to your current appleseed-deps if you have one.


    If you built using the recommended way, you'll need to do a couple of homebrew things.

    brew tap-unpin cartr/qt4
    brew uninstall [email protected] [email protected] # There was another thing that needed to be uninstalled that said it was dependent of [email protected] but I forget what it was called, also uninstall that, you also might be able to just brew unlink instead of uninstall
    brew install qt5

    Then when building appleseed without Disney material support, the only change needed is to add the cmake variable -DCMAKE_PREFIX_PATH, which should point to the root qt5 folder. For the homebrew installation method, this is /usr/local/opt/qt, i.e. -DCMAKE_PREFIX_PATH=/usr/local/opt/qt

    In order to build with WITH_DISNEY_MATERIAL=ON, you'll also need a patched SeExpr. You should be able to do the normal thing with this but just use my fork and check out the appleseed-qt5 branch The only difference is you'll need again need to set -DCMAKE_PREFIX_PATH to the root of qt5, which for the homebrew installation method is /usr/local/opt/qt

    git clone
    git checkout appleseed-qt5
    mkdir build
    cd build
    cmake -DCMAKE_PREFIX_PATH=/usr/local/opt/qt ..
    sudo make install


    I haven't tested or attempted, but you should be able to basically follow the macOS instructions but you'll need to figure out how to install or build Qt 5 yourself.

    PR | Squash 
    opened by fu5ha 30
  • Allow minimising of dock widgets

    Allow minimising of dock widgets

    Allow minimising dock widgets to make space for the render viewer.

    An interesting additional feature could be a key to toggle minimising of all dock widgets at once giving a quick way to view your render with more space and without much surrounding visual noise.

    Feature Good First Issue 
    opened by jonathantopf 24
  • Set fullscreen menu item as checkable

    Set fullscreen menu item as checkable

    fixes #2519

    I have experience with PyQt, but this is my first with Qt in C++. I believe all that was needed was to set the fullscreen QAction as checkable. If not, please let me know!

    PR | Squash 
    opened by mandeep 22
  • Appleseed crashes (OSL enabled) when compiled with clang++

    Appleseed crashes (OSL enabled) when compiled with clang++

    My machine: Linux Mint.

    ( Reproduce crash ) Enable OSL for Appleseed (WITH_OSL=ON) Use Clang (3.3 and 3.4 | wit RTTI enabled) to compile Appleseed After successfully compiling Appleseed, run and load project "sandbox/tests/test\ scenes/osl/01 - lambertian osl - ptne.appleseed" from sandbox folder.

    If interactive rendering is started, Appleseed crashes instantly. Final rendering wont crash Appleseed, but will result in a black canvas.

    Trying to render osl test scene with appleseed.cli, appleseed crashes.

    ( Changing compiler ) Whether crash occours depends on compiler used. If Appleseed has been compiled using g++ instead of clang++, Appleseed wont crash rendering osl testscene.

    opened by leonard7e 21
  • Fix spectral illuminance to CIE XYZ conversions

    Fix spectral illuminance to CIE XYZ conversions

    Hey guys, this is what I was working at before I stopped last year ... This basically fix the green/blue tints when physically rendering sky:


    This also improve conversion from cieXYZ to spectrum.

    I changed the cornell box light radiance to the one used in:, I don't know where does your current data come from. But it got I bit reddish after the change:


    Using data from,: 1_appleseed_new_original_values

    PR | Squash 
    opened by mororo250 17
  • Refactor max samples into average max spp for interactive mode

    Refactor max samples into average max spp for interactive mode

    Intended to be a first step towards exposing samples, samples per pixel, and time-based rendering constraints

    Screen Shot 2019-03-12 at 4 34 09 AM

    A default of 10,000 was chosen because this is the point at which the Cornell box begins to materialize. That said, we may want to bump it higher still.

    Screen Shot 2019-03-12 at 4 34 51 AM

    opened by wilimitis 15
  • Delete default autofocus_target value in thin lens camera

    Delete default autofocus_target value in thin lens camera

    Delete default value because studio make default autofocus_target after edit even if there is no autofocus_target in .studio file.

    This makes studio preserve blurry effect in test scene/cameras/01.

    opened by pjessesco 15
  • Disable Qt plugins in release packages

    Disable Qt plugins in release packages

    using Antergos Arch Linux Based distro,appleseed beta 1.2.0 every time i open and try to open a new project appleseed crash, also if i want to open the about window, it does crash

    opened by manudmz 14
  • Can't select/copy/paste the folder path in File open dialog.

    Can't select/copy/paste the folder path in File open dialog.

    It would be very usefull that the widget that have the current path be editable like any text. The path would react like a editable combo box. appleseed_fileopen

    Old version of Maya had a way to select folder path. This was very usefull as you can copy/paste a path, modify it, hit enter and go to another folder.

    Maya 2011 remove this for a simple combobox and you can't copy paste your folder path anymore.

    People complain about that and Maya 2013 bring the perfect way (IMHO): A editable combobox.

    This is the kind of stuff not too difficult to add but save a huge amount of time to peoples always switching between folder or who just want to share the current folder by mail. For now, you simply can't copy the folder path you are in. :(

    opened by Narann 14
  • Use modern OpenGL in bindblenderprogressivetilecallback

    Use modern OpenGL in bindblenderprogressivetilecallback

    Fix #2373 Related with #2388

    This is already working with Blender 2.7 and should work with blender 2.8, but I didn't test it yet, because interactive render is not working yet on Blender 2.8.

    It still needs an OpenGL Extension. I used Glad for the tests, but I wasn't sure which one you would prefer.

    I believe we don't need the draw_pixel's parameters (const float x, const float y, const float w, const float h) anymore. Then we need to update blenderseed as well.

    opened by mororo250 13
  • OpenGL render in Light Paths tab is glitchy on macOS 10.14 (Mojave)

    OpenGL render in Light Paths tab is glitchy on macOS 10.14 (Mojave)

    On a MacBook Pro, it either shows the content beneath's window, or it's black:


    On a macOS VM, it flickers between black and the correct render.

    Important: it used to work fine with appleseed 1.9.0-beta.

    Bug Component | 
    opened by dictoon 13
  • Add Ubuntu CI via Github Actions

    Add Ubuntu CI via Github Actions

    This PR is meant to re-enable the CI/CD, which was previously done by Travis. So far, I was only able to cover Linux/Ubuntu. Building appleseed on Mac is quite a challenge, since some dependencies aren't available that easy anymore (e.g. Python2). Thus, this PR only solves the CI/CD problem only partially.

    PR | Squash 
    opened by LZaw 0
  • Endless Loop when Scene fails on_render_begin()

    Endless Loop when Scene fails on_render_begin()

    This issue occured while working on PR #2914, where the camera returns false in on_render_begin() when there are errors. In such a case, and endless loop is entered that infinitely calls on_render_begin(). All other cameras always return true and therefore never run into this problem, but the issue can easily be reproduced by forcing a return false.

    It appears that the MasterRenderer skips the frame, if the scene entities failed to perform on_render_begin() (see here). It does so by returning renderer_controller.get_status(), which is ContinueRendering, but this is what causes the infinite loop. In my eyes, AbortRendering should be returned instead, like is done a bit further below.

    Is there a reason that I am missing, why the rendering process should not be aborted here?

    opened by JaanWilli 0
  • No appleseed-maya.mod in the download

    No appleseed-maya.mod in the download

    Trying to install latest Appleseed for latest Maya (as of current date) and I downloaded the zip in the Download on top of the Appleseed website. In the install instructions in the Docs, it says I should point maya env to the path where the appleseed-maya.mod is located. But I can't locate that file in my download..

    opened by hced 1
  • make error function 'inverse' was not declared in this scope

    make error function 'inverse' was not declared in this scope

    [ 48%] Generating ../../../sandbox/shaders/max/as_max_color_balance.oso /home/li/\344\270\213\350\275\275/appleseed-2.1.0-beta/src/appleseed.shaders/include/appleseed/color/as_chromatic_adaptation.h:177: error: function 'inverse' was not declared in this scope /home/li/\344\270\213\350\275\275/appleseed-2.1.0-beta/src/appleseed.shaders/include/appleseed/color/as_chromatic_adaptation.h:177: error: No matching function call to 'inverse (matrix)' /home/li/\344\270\213\350\275\275/appleseed-2.1.0-beta/src/appleseed.shaders/include/appleseed/color/as_chromatic_adaptation.h:177: error: Not allowed: 'unknown * matrix' /home/li/\344\270\213\350\275\275/appleseed-2.1.0-beta/src/appleseed.shaders/include/appleseed/color/as_chromatic_adaptation.h:178: error: Not allowed: 'unknown * matrix' /home/li/\344\270\213\350\275\275/appleseed-2.1.0-beta/src/appleseed.shaders/include/appleseed/color/as_chromatic_adaptation.h:177: error: Cannot assign matrix chromatic_adaptation_matrix = unknown /home/li/\344\270\213\350\275\275/appleseed-2.1.0-beta/src/appleseed.shaders/include/appleseed/color/as_color_transforms.h:554: error: function 'inverse' was not declared in this scope /home/li/\344\270\213\350\275\275/appleseed-2.1.0-beta/src/appleseed.shaders/include/appleseed/color/as_color_transforms.h:550: error: No matching function call to 'inverse (matrix)' /home/li/\344\270\213\350\275\275/appleseed-2.1.0-beta/src/appleseed.shaders/include/appleseed/color/as_color_transforms.h:550: error: Cannot assign matrix invXYZ = unknown FAILED /home/li/下载/appleseed-2.1.0-beta/src/appleseed.shaders/src/max/as_max_color_balance.osl make[2]: *** [src/appleseed.shaders/CMakeFiles/appleseed.shaders.dir/build.make:454:../sandbox/shaders/max/as_max_color_balance.oso] 错误 1 make[1]: *** [CMakeFiles/Makefile2:532:src/appleseed.shaders/CMakeFiles/appleseed.shaders.dir/all] 错误 2 make: *** [Makefile:130:all] 错误 2

    opened by zhou0 0
  • 2.1.0-beta(Sep 3, 2019)

    These are the release notes for appleseed 2.1.0-beta.

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

    This release of appleseed has a DOI:


    This release is the result of more than ten months of work by the incredibly talented and dedicated appleseed development team.

    Many thanks to our code contributors for this release, in alphabetical order:

    • Stephen Agyemang
    • Luis Barrancos
    • Sagnik Basu
    • François Beaune
    • Mandeep Bhutani
    • Lovro Bosnar
    • Rafael Brune
    • Matt Chan
    • João Marcos Mororo Costa
    • Herbert Crepaz
    • Junchen Deng
    • Jonathan Dent
    • Mayank Dhiman
    • Dorian Fevrier
    • Karthik Ramesh Iyer
    • Dibyadwati Lahiri
    • Kevin Masson
    • Gray Olson
    • Achal Pandey
    • Jino Park
    • Sergo Pogosyan
    • Bassem Samir
    • Oleg Smolin
    • Esteban Tovagliari
    • Thibault Vergne
    • Luke Wilimitis
    • Lars Zawallich

    Many thanks as well to our internal testers, feature specialists and artists, in particular:

    • Richard Allen
    • François Gilliot
    • Juan Carlos Gutiérrez

    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.


    ⭐️ Cryptomatte AOVs

    appleseed now has native support for Cryptomatte via a pair of new Cryptomatte AOVs. Cryptomatte is a system to generate ID maps that work even in the presence of transparency, depth of field and motion blur.

    Cryptomatte AOV (IKEA Home Office scene by Chau Tran. Feel free to download the original OpenEXR file to inspect embedded metadata.)

    ⭐️ Render Checkpointing

    We've added render checkpointing, a mechanism to resume multi-pass renders after they were interrupted (voluntarily or not), and to add rendering passes to a finished render.

    At the moment render checkpointing is only exposed in appleseed.cli. Eventually it should become available in as well.

    Here's an example workflow: when starting your multi-pass render (notice the --passes option), you add the --checkpoint-create option to create/update the checkpoint file after each render pass:

    Creating a checkpoint

    After you've interrupted the render with CTRL+C, or, Heaven forbid, after appleseed crashed, you can simply resume the render from the last complete render pass by adding the --checkpoint-resume option:

    Resuming from a checkpoint

    You can also pass both --checkpoint-create and --checkpoint-resume at the same time to simultaneously resume rendering from a checkpoint and continuing updating it as new passes are rendered:

    Resuming and updating a checkpoint

    Finally, you can pass both options even if no checkpoint exists yet, in which case rendering will simply start from the first pass:

    Resuming or creating a checkpoint

    ⭐️ OSL Source Shaders Support

    appleseed now has the ability to compile OSL source shaders on the fly. We currently exposed this feature in our Blender plugin. In the following screenshot, the user has written a small OSL shader that remaps its input to a color using a custom color map, then has connected it to the V texture coordinate of the object:

    OSL source shaders support in blenderseed

    Future versions of the 3ds Max and Maya plugins will expose this feature in a similar manner.

    ⭐️ Fisheye Lens Camera

    We've added a new fisheye lens camera model with support for equisolid angle, equidistance, stereographic and Thoby projections.

    Here is a render of the Japanese Classroom scene with the fisheye lens using a 120° horizontal field of view and a stereographic projection:

    Japanese Classroom scene rendered with fisheye lens camera (Japanese Classroom scene by Blend Swap user NovaZeeke, converted to Mitsuba format by Benedikt Bitterli, then to appleseed format via the script that ships with appleseed.)

    ⭐️ Texture-Controlled Pixel Renderer

    We've added a way to control how many samples each pixel will receive based on a user-provided black-and-white mask. This allows to get rid of sampling noise in specific parts of a render without adding samples in areas that are already smooth. This is yet another tool in the toolbox, complementing the new adaptive tile sampler introduced in appleseed 2.0.0-beta and the per-object shading quality control that has been present in appleseed since its early days.

    In the following mosaic, the top-left image (1) is the base render using 128 samples for each pixel; the top-right image (2) is a user-painted mask where black corresponds to 128 samples/pixel, white corresponds to 2048 samples/pixel and gray levels correspond to intermediate values; the bottom-left image (3) is the render produced with the new texture-controlled pixel renderer using the mask; the bottom-right image (4) is the Pixel Time AOV where the color of each pixel reflects the relative amount of time spent rendering it (the brighter the pixel, the longer it took to render it):

    Teapot renders with texture-controlled pixel renderer

    ⭐️ Filter Importance Sampling

    We switched appleseed to use Filter Importance Sampling instead of filtered sample splatting. This new technique has three advantages over the previous one: lower noise for a given number of samples per pixel, less waste (tile borders are no longer required), and statistically independent pixels, meaning in practice that modern denoisers should work a lot better when applied to images produced by appleseed.

    To illustrate this last point, here is an appleseed render of the Modern Hall scene denoised with Intel® Open Image Denoise, a set of open source, high quality, machine learning-based denoising filters:

    Modern Hall scene denoised with Intel Open Image Denoise (Modern Hall scene by Blend Swap user NewSee2l035, converted to Mitsuba format by Benedikt Bitterli, then to appleseed format via the script that ships with appleseed.)

    Other New Features and Improvements


    New Features and Improvements
    • Added controls to fix or vary sampling patterns per frame.
    • Implemented optional dithering of the frame (AOVs are not affected).
    • Implemented new energy conservation algorithm.
    • Allow to stop progressive rendering after a given amount of time.
    • Print estimated remaining render time.
    • Record light paths due to image-based lighting.
    • Keep texture files open during a rendering session (in progressive mode or multi-pass final mode).
    • Added as_matte() closure and updated OSL shaders to use it.
    • Allow scaling render stamps.
    • Allow flipping environment maps.
    • Added Screen-Space Velocity AOV.
    • Added Pixel Error AOV.
    • Use Inferno color map in diagnostic AOVs (Pixel Sample Count, Pixel Time, Pixel Variation and Pixel Error AOVs).
    • Added an alpha channel to the Depth AOV, allowing background pixels to use depth = 0 instead of some extremely large value that causes problems with some applications.
    • Normalize pixel variation with respect to the noise threshold set by the user in the Pixel Variation AOV.
    Shading Overrides
    • Added Objects, Assemblies and World-Space Velocity shading overrides.
    • Prevent accidental shading override changes during final rendering.
    • Added Max Ray Intensity setting to SPPM lighting engine.
    • Disallow progressive rendering with SPPM lighting engine.
    • Display enabled library features as part of appleseed's version information.
    • Print texture store settings when rendering starts.
    • Improved tile statistics and log messages in Adaptive Tile Renderer.
    • Properly handle and report I/O errors when loading a reference image.
    • Increased average noise level precision in Adaptive Tile Renderer log message.
    • Increased precision of floating point values in *.obj and *.appleseed files.
    • Print project writing and packing times.
    • Emit log message when closing texture file.
    • Emit log messages when writing AOVs to disk.
    • Changed procedural assemblies expansion summary from debug to info messages.
    • Allow saving frames in all formats supported by OpenImageIO.
    • Look for OpenImageIO plugins in the project search paths.
    • Added sample procedural texture OpenImageIO plugin.
    • Bundled OpenImageIO's idiff tool.
    Bug Fixes
    • Fixed Oren-Nayar BRDF's diffuse model.
    • Fixed Albedo AOV for Oren-Nayar BRDF when roughness is zero.
    • Fixed Albedo AOV for Diffuse BTDF.
    • Fixed Position AOV for background pixels.
    • Handle multipass rendering in Pixel Sample Count AOV.
    • Handle multipass rendering in Pixel Variation AOV.
    • Don't set pixels outside the crop window in AOVs.
    • Don't apply Max Ray Intensity after specular bounces.
    • Load plugins from paths set in the APPLESEED_SEARCHPATH environment variable even if a project does not define any explicit search path.
    • Fixed rendering of Disney built-in materials that have an EDF set.
    • Fixed Sun orientation when bound to environment EDF with a transform.
    • Fixed banding with low resolution environment maps.
    • Fixed time displayed in render stamp when rendering has been paused.
    • Fixed occasional crash with procedural objects.
    • Fixed intersection of procedural objects.
    • Honor visibility flags on instances of procedural objects.
    • Fixed occasional NaN values in the latitude-longitude environment EDF.
    • Fixed invalid samples warnings in diagnostic surface shader.
    • Use case-insensitive comparison when checking file extensions.
    • Fixed infinite loop when OSL shading system's initialization fails.
    • Fixed Sampler combobox when loading project that uses adaptive sampling.
    • Removed redundant color and alpha parameters from color entities.
    • Switch built-in color maps to linear RGB.
    • Linearize custom color map image file if necessary.
    • Fixed anisotropy when shading samples is greater than 1.
    • Fixed required parameter "volume_parameterization" not found error message whenever an OSL shader uses the as_glass() closure.
    • Fixed crash in presence of light-emitting curves.
    • Fixed World-Space Position diagnostic mode to show normalized coordinates relative to the scene's bounding box instead of absolute coordinates.
    • Fixed World-Space Position diagnostic mode for flat (2D) or otherwise degenerate scenes.
    • Include all pixels when computing average noise threshold in Adaptive Tile Renderer.
    • Fixed Adaptive Tile Renderer metadata.
    • Fixed small robustness issues in Physical Sun light.
    Removed Features
    • The Glossy, Plastic, Metal and Glass BSDFs are now exclusively using the GGX microfacet model.
    • Removed deprecated Adaptive Pixel Renderer: it has been replaced by a new Adaptive Tile Renderer in appleseed 2.0.0-beta.

    New Features and Improvements
    • Switch to Qt 5.12. This may fix various issues on modern systems such as issues related to high DPI displays.
    • Allow setting the default number of rendering threads in the global Settings dialog.
    • Made Advanced sections in Rendering Settings dialog collapsible.
    • Expose light importance sampling option in Rendering Settings dialog.
    • Switch light paths visualization to OpenGL 3.3 (Core Profile).
    • Use Reinhard tone mapping in light paths visualization widget.
    • CTRL+Enter now closes the Search Paths dialog.
    • Made ViewFullscreen menu item checkable.
    • Allow drag and drop of materials to render widget.
    • Disallow dropping text into the main window.
    • Use OpenImageIO files filter instead of Qt one when saving renders.
    • Print paths to Python's site-packages and appleseed Python module's directories on startup.
    • Print warnings if Python's site-packages or appleseed Python module's directories cannot be found.
    • Manually saving settings now also saves the state of the user interface.
    • Print detailed diagnostic messages about the value of the PYTHONHOME environment variable and the likely consequences.
    • Adjust width of Noise Threshold widget.
    Bug Fixes
    • Fixed rare crash when quickly stopping then restarting a render.
    • Fixed crash if a numeric input has more than one value in the Entity Editor.
    • Search paths from the APPLESEED_SEARCHPATH environment variable were saved as explicit search paths in projects.
    • The project's root path was not updated when the project was saved to another location.
    • Fixed locale issues with OpenColorIO.
    • Fixed push button style on macOS.


    New Features and Improvements
    • Added --disable-abort-dialogs option to disable abort dialogs (Windows only).
    • appleseed.cli now prints its exit code.
    Bug Fixes
    • Fixed convergence statistics when using appleseed.cli.
    • Preserve post-processing stages when recreating frame in appleseed.cli.
    Removed Features
    • Removed --to-mplay and --to-hrmanpipe command line options.

    Python Bindings

    New Features and Improvements
    • Added the following class to Python bindings:

    • Added the following entry points to Python bindings:

    Removed Features
    • Removed the following entry point from Python bindings (breaking change):


    OSL Shaders

    New Features and Improvements
    • Added color inversion shader (as_invert_color).
    • Added Color Decision List shader (as_asc_cdl).
    • Increased default number of bounces in shaders from 4 or 8 to 100.
    • Increased default number of bounces in as_subsurface shader from 2 to 8.
    • Updated OSL language specification document (docs/osl/osl-languagespec.pdf) to version 1.10.
    • Removed blenderseed/as_closure2surface.osl shader as it is redundant with appleseed/as_closure2surface.osl.
    • Made Energy Compensation parameter of as_metal shader non-texturable.
    Bug Fixes
    • Fixed handling of Oren-Nayar BRDF's diffuse albedo in appleseed Standard Surface shader.
    • Fixed Fresnel at grazing angles when normal mapping is used with the appleseed Standard Surface shader.
    • Fixed normal blending in as_triplanar shader.

    Other Tools

    • The animatecamera tool now varies the sampling pattern per frame.
    • Added --motion-blur to animatecamera tool.
    • Added --disable-abort-dialogs option to all command line tools to disable abort dialogs (Windows only).
    • Allow input file of to be anywhere.
    Source code(tar.gz)
    Source code(zip) MB) MB) MB)
  • 2.0.0-beta(Nov 2, 2018)

    These are the release notes for appleseed 2.0.0-beta.

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

    This release of appleseed has a DOI:


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

    Many thanks to our code contributors for this release:

    • Luis Barrancos
    • François Beaune
    • Artem Bishev
    • David Coeurjolly
    • Herbert Crepaz
    • Jonathan Dent
    • Alex Fuller
    • Thomas Manceau
    • Kevin Masson
    • Fedor Matantsev
    • Jino Park
    • Sergo Pogosyan
    • Girish Ramesh
    • Esteban Tovagliari

    Many thanks as well to our internal testers, feature specialists and artists, in particular:

    • Richard Allen
    • François Gilliot
    • Juan Carlos Gutiérrez

    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.


    ⛏ Improved: Random-Walk Subsurface Scattering

    We made a number of improvements to our random-walk subsurface scattering implementation:

    • Fixed white edges artifacts.
    • Added volume anisotropy support.
    • The Random-Walk BSSRDF now supports two surface models: Lambertian BTDF (perfectly diffuse transparency) and Glass BSDF.
    • Fixed Fresnel term when using the Lambertian BTDF surface model.
    • Exposed Random-Walk BSSRDF to OSL:
      • For the Lambertian BTDF surface model: via a new randomwalk SSS profile for the as_subsurface() closure;
      • For the Glass BSDF surface model: via a new as_randomwalk_glass() closure.

    Head Scan scene with Random-Walk subsurface scattering (Geometry, textures and environment map by 3D Scan Store, scene reconstruction and skin shader by Juan Carlos Gutiérrez.)

    ⭐️ New: Non-Photorealistic Rendering

    We did some initial work on non-photorealistic rendering support in appleseed. We added two new OSL closures, as_npr_shading() and as_npr_contour(), as well as a new OSL shader, as_toon.

    Rolling Teapot scene, non-photorealistic rendering (Model by Brice Laville, concept by Tom Robinson, render by Esteban Tovagliari - RenderMan "Rolling Teapot" Art Challenge.)

    Non-Photorealistic Rendering 2 (Original model by Blend Swap user Ricardo28roi, rig by Blend Swap user daren, render by Luis Barrancos.)

    Finally, we added two new AOVs: NPR Shading (npr_shading_aov) and NPR Contour (npr_contour_aov).

    ⭐️ New: Post-Processing Pipeline

    This release introduces a new post-processing pipeline that allows to apply treatments to a render without leaving appleseed.

    The key (but still experimental) component of this new post-processing pipeline is the Color Map stage: it allows to visualize the Rec. 709 relative luminance of a render through a number of predefined color maps, or through a custom color map defined by an image file.

    Five predefined color maps are available: the venerable Jet color map popularized by MATLAB, and four modern, "perceptually uniform sequential" color maps from Matplotlib: Inferno, Magma, Plasma and Viridis.

    A color legend can also be included in the render.

    A future version of the Color Map stage may allow to visualize other quantities such as photometric luminance (in cd/m²), radiance (in W/sr/m²) or irradiance (in W/m²).

    Beauty render:

    Country Kitchen scene, beauty render (Country Kitchen scene by Blend Swap user Jay-Artist, converted to Mitsuba format by Benedikt Bitterli, then to appleseed format via the script that ships with appleseed.)

    False colors, Inferno color map:

    Country Kitchen scene, Inferno color map

    False colors, Jet color map:

    Country Kitchen scene, Jet color map

    False colors, Magma color map:

    Country Kitchen scene, Magma color map

    False colors, Plasma color map:

    Country Kitchen scene, Plasma color map

    False colors, Viridis color map:

    Country Kitchen scene, Viridis color map

    In addition, the Color Map stage can render relative luminance isolines, that is, lines of equal relative luminance in the render:

    Cornell Box, false colors and relative luminance isolines

    Color mapping and isolines can also be applied right from without having to add them as post-processing stages and re-rendering the scene:

    Applying false colors to the Cornell Box from

    Post-processed renders can be saved to disk:

    Saving post-processed render from

    Finally, the render stamp feature introduced in appleseed 1.9.0-beta has been converted to a post-processing stage (projects are automatically updated).

    ⭐️ New: Adaptive Tile Sampling

    During his Google Summer of Code 2018 participation, Kevin Masson implemented a new adaptive tile sampler that provides superior performance over the former adaptive pixel sampler (which is now deprecated). The new adaptive tile sampler is based on a number of recent papers. Please check out Kevin's GSoC 2018 report for details and references to relevant papers.

    Here is an equal-time comparison between the uniform tile sampler and the new adaptive one:

    Globe scene rendered with adaptive sampling (Earth texture from Shaded Relief, scene and renders by Kevin Masson. Top-left: uniform sampling; top-right: adaptive sampling; bottom-left: Pixel Sample Count AOV (see below); bottom-right: difference between uniform and adaptive sampling.)


    Globe scene closeup

    Here is another equal-time comparison:

    Cookies scene rendered with adaptive sampling (Cookies & Milk scene by Harsh Agrawal, render by Kevin Masson.)


    Cookies scene closeup

    Two AOVs have also been added:

    • In the Pixel Sample Count AOV (pixel_sample_count_aov), pixels in blue are those that received the fewest samples while pixels in red are those that received the most.
    • In the Pixel Variation AOV (pixel_variation_aov), pixels in blue are those that contain the lowest noise while pixels in red are those that contain the highest.

    ⭐️ New: Roughness Clamping

    appleseed now supports Roughness Clamping, a trick popularized by Arnold that allows to reduce fireflies in scenes with lots of glossy and specular surfaces:

    Enabling Roughness Clamping

    Roughness Clamping enabled:

    Spheres scene with roughness clamping enabled

    Roughness Clamping disabled:

    Spheres scene with roughness clamping disabled


    Spheres scene close-up

    ⭐️ New: Albedo AOV

    We added an Albedo AOV (albedo_aov) to capture the "base color" of surfaces. AOVs are not yet exposed in, however the Albedo AOV is accessible via the new Albedo diagnostic mode that replaced the old Color one:

    Enabling the Albedo diagnostic mode

    Here is the result of rendering the Wooden Staircase scene using the Albedo diagnostic mode:

    Wooden Staircase scene, beauty render and Albedo AOV (Wooden Staircase scene by Blend Swap user Wig42, converted to Mitsuba format by Benedikt Bitterli, then to appleseed format via the script that ships with appleseed.)

    ⭐️ New: Substance Painter-Compatible OSL Shader

    This release includes as_sbs_pbrmaterial, a new OSL shader that matches Allegorithmic's Substance Painter shading model in the metallic/roughness workflow.

    You can find all about this new shader in the documentation.

    Here are a few renders using this shader:

    Renders using the new as_sbs_pbrmaterial OSL shader (Renders by Luis Barrancos.)

    ⭐️ New: Shaderball Version 5

    We significantly redesigned and cleaned up our shaderball, now in version 5:

    Shaderball version 5 (Render by Juan Carlos Gutiérrez.)

    The shaderball scene is available in the following formats:

    • Native appleseed project
    • Autodesk® 3ds Max® 2016+ project
    • Autodesk® Maya® 2017+ project
    • OBJ file
    • Alembic file

    In addition, the shaderball is now also available as a low-poly model (15,140 triangles) in all formats.

    ⭐️ New: Search Paths Editor

    We added a search paths editor to To open it, right-click on the top-level item (Project) of the Project Explorer and choose Edit Search Paths...:

    Opening the Search Paths Editor

    In the search paths editor window, paths are ordered by ascending priority (paths lower in the list override those from higher up). Dark gray paths are those set via the APPLESEED_SEARCHPATH environment variable and cannot be edited while light gray ones are explicit paths that can be edited:

    Search Paths Editor

    Other New Features and Improvements


    New Features and Improvements
    • Experimental Intel® Embree-based intersection kernel for faster ray tracing.
    • Added support for camera shift.
    • Added appleseed Python 3 bindings.
    • Added fresnel_weight parameter to as_glossy() OSL closure (default is 1).
    • Added World Space Position AOV (position_aov).
    • Improved Energy Compensation handling in Glossy and Metal BRDFs.
    • appleseed's proprietary BinaryMesh geometry file format now supports single-precision geometry. All newly written BinaryMesh files will now use single-precision.
    • Updated to the latest version of the BCD Denoiser which features several bug fixes.
    • The color mode has been replaced by the albedo mode in the diagnostic_surface_shader surface shader.
    • If the PYTHONHOME environment variable is defined, will use the Python release (which must be of the Python 2.7 variety) it points to instead of the Python release bundled with appleseed. It was already the case on Windows; it is now also the case on Linux and macOS.
    • Enabled alpha premultiplication for environment hits.
    • Report environment map build time.
    Bug Fixes
    • Fixed view vector derivatives (dIdx and dIdy) in OSL.
    • Fixed NaN warnings when using OSL transparency.
    • Fixed Sun light intensity when using a custom Sun-scene distance.
    • Fixed writing of non-opaque pixels in PNG files.
    • Fixed minor alpha and color space issues in render stamp rendering code.
    • Don't warn about reaching hard iteration limit when it is intended.
    • Don't show AOV-related warning messages if the scene has no AOV.

    New Features and Improvements
    • Persist geometry of all windows across runs.
    • Renders can now be paused and resumed.
    • Rectangular selection of light paths is now supported.
    • Changing the viewpoint in light paths visualization mode no longer affects the rendering camera. A toolbar button has been added to manually synchronize them.
    • Allow panning and zooming light paths OpenGL widget.
    • Allow capturing the contents of the light paths OpenGL widget to the clipboard with CTRL+C.
    • Made geometry darker in light paths visualization mode.
    • Allow to manually create and instantiate textures.
    • Added third party libraries versions to About dialog.
    • Add extension based on selected filter in file save dialogs.
    • Adjusted font size in About dialog on macOS.
    Bug Fixes
    • Fixed some keyboard shortcuts in tooltips on macOS.


    New Features and Improvements
    • Light paths can now be saved to disk with the new --save-light-paths command line option.
    • Replaced the --select-object-instances command line option by --show-object-instances and --hide-object-instances.
    • Added a --libraries command line option to print third party libraries versions.

    Python Bindings

    New Features and Improvements
    • Added the following classes to Python bindings:

    • Added the following methods to Python bindings:

    Bug Fixes
    • Don't clear search paths set via the APPLESEED_SEARCHPATH environment variable when setting search paths from Python.
    Removed Features
    • Removed the following methods from Python bindings (breaking changes):


    OSL Shaders

    New Features and Improvements
    • Added shaders:

    • Added Blender metadata to all appleseed shaders.

    • Tweaked and improved help strings.

    Bug Fixes
    • Fixed texture wrap modes in as_texture shader.
    Removed Features
    • Removed shaders (breaking changes):

    • Removed all Gaffer-specific shaders.


    • Added THIRDPARTIES.txt file with the full license text of all third party libraries used in appleseed.
    • Added, a Python script that can convert Light Paths files (*.aspaths) to JSON.

    Known Issues


    With some Linux distributions (Fedora 29, Arch Linux), may fail to start with the following error:

    ./bin/ symbol lookup error: /usr/lib/ undefined symbol: FT_Done_MM_Var

    The reason appears to be newer libfontconfig and libz libraries in the system compared to those that ship with appleseed.

    One solution is to force using the system's one:

    env LD_PRELOAD="/usr/lib64/ /usr/lib64/"  ./

    Another solution is simply to delete and from appleseed's lib/ directory.

    Source code(tar.gz)
    Source code(zip) MB) MB) MB)
  • 1.9.0-beta(May 1, 2018)

    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.
    Source code(tar.gz)
    Source code(zip) MB) MB) MB)
  • 1.8.1-beta(Dec 21, 2017)

    These are the release notes for appleseed 1.8.1-beta.

    appleseed 1.8.1-beta is a minor release fixing issues discovered in appleseed 1.8.0-beta.

    Whiskey Glasses


    • Added energy compensation to glossy and metal BRDFs.
    • Fixed Max Ray Intensity which was partially broken in the previous release.
    • Fixed occasional warnings during rendering (NaN, negative or infinite pixel samples).
    • Improved handling of errors during loading of geometry assets.
    • Exposed Plastic BRDF to OSL via the as_plastic() closure.
    • Updated and improved dumpmetadata command line tool.
    • Light importance multiplier is now a numeric input.
    • Make's Windows icon multi-resolution.
    • Emit log message once packing project is complete.
    • Cleaned up appleseed OSL extensions (as_osl_extensions.h) file.
    Source code(tar.gz)
    Source code(zip) MB) MB) MB) MB)
  • 1.8.0-beta(Nov 26, 2017)

    These are the release notes for appleseed 1.8.0-beta.

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


    This release is the fruit of the formidable work of the appleseed development team over the last six months.

    Many thanks to our code contributors:

    • Aytek Aman
    • Luis Barrancos
    • François Beaune
    • Artem Bishev
    • Petra Gospodnetic
    • Roger Leigh
    • Gleb Mishchenko
    • Jino Park
    • Sergo Pogosyan
    • Esteban Tovagliari

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

    • Richard Allen
    • Dorian Fevrier
    • François Gilliot
    • JC Gutiérrez
    • Luke Kliber
    • Nathan Vegdahl

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


    Support for Procedural Objects

    We introduced support for procedurally-defined objects, that is objects whose surface is defined by a function implemented in C++. This opens up a vast array of possibilities, from rendering fractal surfaces such as the Mandelbulb shown below, to rendering raw CAD models based on Constructive Solid Geometry without tessellating them into triangle meshes. One could even use this mechanism to prototype new acceleration structures with appleseed.

    Mandelbulb Object

    appleseed ships with three samples procedural objects in samples/cpp/: an infinite plane object, a sphere object and the Mandelbulb fractal. This last sample is particularly interesting: it's actually a generic Signed Distance Field raymarcher and a great toy to tinker with if you like procedural graphics!

    Some good resources about Signed Distance Fields:

    Support for Procedural Assemblies

    We also introduced long-awaited support for procedural assemblies. In appleseed's terminology, an assembly is a "package" that represents a part of the scene. A procedural assembly is one that gets populated at render time instead of being described in the scene file. Somewhat schematically, a procedural assembly is defined by a C++ plugin which is invoked by the renderer when it needs to know the content of the assembly.

    Procedural assemblies allow to procedurally populate a scene, for instance to generate thousands of instances of a single object based on rules, without having to store all those instances on disk.

    Below is an example of a procedural assembly: it is a modern recreation of the sphereflake object designed by Eric Haines et al. and described in the 1987's article A Proposal for Standard Graphics Environments, rendered using subsurface scattering (using the Normalized Diffusion BSSRDF), a Disney BRDF and image-based lighting:

    Sphereflake with Subsurface Scattering

    For reference (and for fun; who doesn't love retro CG!) here is one early rendering of the Sphereflake by Eric Haines:

    Original Sphereflake Rendering by Eric Haines

    (Source:[email protected]/10865071225)

    A particular type of procedural assembly supported by appleseed is an archive assembly. An archive assembly is defined by a bounding box and a reference to another appleseed scene file (extension .appleseed or .appleseedz). The referenced scene file is loaded by the renderer at the appropriate time. This is a common but powerful mechanism to assemble large and complex scenes out of smaller parts.

    One important use of procedural assemblies in production is reading parts of scenes from Alembic archives, Pixar's USD scenes and other custom file formats. We recently started working on adding support for loading geometry directly from Alembic archives.

    AOV Subsystem Rewrite

    This release saw the previous AOV mechanism completely ripped out and reimplemented from scratch. While flexible, the previous AOV mechanism made it hard or in some cases impossible to composite AOVs back together. Moreover it lacked fundamental features such as splitting direct lighting from indirect lighting contributions or splitting diffuse from glossy scattering modes.

    The new AOV subsystem implements what you expect from a modern renderer. appleseed currently supports the following AOVs:

    • Direct Diffuse, Indirect Diffuse, Combined Diffuse
    • Direct Glossy, Indirect Glossy, Combined Glossy
    • Emission
    • Shading Normals
    • UVs
    • Depth

    Here is an example of AOVs rendered from our shaderball scene:

    Shaderball AOVs

    And the beauty render:

    Shaderball Beauty

    AOVs must currently be declared manually in the scene file:

        <frame name="beauty">
            <parameter name="camera" value="/group/camera" />
            <parameter name="resolution" value="640 480" />
            <parameter name="crop_window" value="0 0 639 479" />
                <aov model="diffuse_aov" />
                <aov model="glossy_aov" />

    The next release of appleseed will allow adding/removing AOVs directly from It will also add AOVs for our render denoiser, and if time allows, it will introduce native Cryptomatte support. We are also considering adding a motion vectors AOV in a future release.

    Color Pipeline Overhaul

    The color pipeline is another area that received a ton of attention in this release.

    First of all, remember that appleseed is fully capable of spectral rendering, currently using 31 equidistant wavelengths in the 400 nm to 700 nm visible light range.

    In the name of speed and accuracy, we no longer switch on-the-fly between RGB and spectral representations during rendering. We had a neat mechanism that supported this feature for many years but it had three main problems: it prevented us from being completely rigorous about color management, it incurred tremendous complexity in the very core of the renderer and it had nasty edge cases causing severe performance issues. Instead, we now let the user decide which color pipeline to use: RGB or spectral:

    Color Pipeline Setting

    The RGB pipeline is the default and for most purposes there is no point in changing it. However appleseed is one of the rare renderers with spectral capabilities and we will continue pushing and extending this mechanism over the releases to come. In particular the next release will extend the wavelength range to 380-780 nm and should feature a much improved RGB-to-spectral conversion algorithm.

    We also removed a lot of settings from Frame entities that didn't make much sense anymore. appleseed's internal framebuffer is now always linear, unclamped, premultiplied and uses 32-bit floating point precision.

    Finally, is now using OpenColorIO for color management. There is now a dropdown menu in to choose a display transform (an Output Device Transform in ACES terminology) at any point during or after rendering:

    Display Transform Dropdown Menu in will populate this dropdown menu with transforms listed in OpenColorIO's configuration on the user's machine.

    Support for Plugins (work-in-progress)

    In addition to the procedural objects and procedural assemblies described above, this release also allows to extend all "scene modeling components" of appleseed via external plugins written in C++. This includes cameras, BSDFs, BSSRDFs, EDFs, lights, materials, textures, environments... There are technicalities that make this work incomplete in this release; we will gradually fix them as the need arises.

    Substance Painter Export Presets

    We now include Substance Painter export presets in the share/ folder inside appleseed's package.

    Substance Painter with appeseed's Export Presets

    Maps exported using these presets can be used in appleseed-maya and Gaffer with appleseed's new standard material:

    Shaderball with Substance Material

    Python Console in (work-in-progress)

    Our Google Summer of Code 2017 student Gleb Mishchenko implemented a Python console inside, our scene tweaking, rendering, inspecting and debugging application:

    Python Console in

    Here is a closeup of the Python console loaded with a simple script that prints the name of all objects in the scene:

    Python Console Closeup also supports Python plugins: any directory with a file inside studio/plugins/ will be imported and registered at startup. There are example plugins in samples/python/studio/plugins/.

    Our motivation behind the Python console is threefold: simplify and speed up the development of; let users extend using Python plugins, and let users automate tedious tasks using one-off Python scripts directly inside, with immediate feedback on their scene.

    This work is still very much in progress: our Python API is quite low-level and not as comfortable to use as it could be, and we have yet to bundle PySide to let scripts extend the user interface and add menus, panels and dialogs (however we did play with this and it already works on Linux).

    Details of Gleb's GSoC project can be found in his report.

    Support for Participating Media (work-in-progress)

    Artem Bishev, another of our GSoC 2017 students, took upon himself the rather intricate task of implementing physically-based volumetric rendering in appleseed.

    In this release, appleseed supports fully raytraced single-scattering and multiple-scattering inside homogeneous participating media. Two phase functions are currently supported: a fully isotropic phase function and the Henyey-Greenstein phase function.

    A volumetric bunny in the Cornell Box (spectral render):

    Volumetric Bunny in Cornell Box

    This work is very much in progress. Main upcoming features are heterogeneous media and OpenVDB support.

    Details of Artem's project can be found in his report.

    New Light Sampling Algorithm (work-in-progress)

    Petra Gospodnetić, our third GSoC student this year, spent her summer implementing a new light sampling strategy in appleseed based on Nathan Vegdahl's Light Tree algorithm. The Light Tree is a simple yet clever unbiased sampling algorithm that picks better candidate points on area/mesh light sources.

    To illustrate the benefits of the Light Tree, here is a comparison between the existing light sampling algorithm and the new one on a scene making heavy use of mesh lights (both images were rendered with 16 samples/pixel):

    Animated comparison between the CDF and LightTree algorithms

    And here is the converged render:


    Full details of Petra's work can be found in her report.

    Other New Features and Improvements


    • The physical sun light can now cast soft shadows, and the observer-Sun distance can be changed.
    • Significantly improved our bump mapping implementation.
    • Fixed a number of artifacts on silhouettes of coarsely tessellated meshes.
    • Fixed artifacts due to high geometric complexity close to SSS materials.
    • Lookup environment after glossy bounces even if IBL is disabled.
    • Added instruction sets detection and release/host compatibility checks at startup.
    • Switched from CIE 1964 10° color matching funtions to CIE 1931 2° color matching functions.
    • Removed all color settings from Frame entities: pixel format, color space, clamping, premultiplied alpha, gamma correction.
    • Removed Shade Alpha Cutouts option.
    • Removed color and alpha multipliers from Physical Surface Shader.
    • Removed Velvet BRDF as it has been superseded by the Sheen BRDF.
    • Removed deprecated Microfacet BRDF in favor of higher-level ones such as Glass, Glossy, Metal or Plastic.
    • Save chromaticities in OpenEXR renders (currently: scene-referred linear sRGB / Rec. 709 primaries).
    • Made medium priorities signed (-128 to 127).
    • Fixed incorrect rendering when the number of direct lighting samples is fractional.

    • Improved the Entity Editor, in particular formatting and validation of numeric inputs.
    • Fixed bug where the Entity Editor would close after renaming the entity.
    • Fixed bug in material assignment editor window.
    • Automatically realign camera target if it is off the viewing direction.
    • Filtering regular expressions are now case-insensitive.
    • Added ability to close the project via FileClose.
    • Fixed multiple filtering bugs in the Tests dialog.
    • Added button in Tests dialog to check only visible items.
    • Improved handling of rendering failures such as out-of-memory errors.
    • Persist file filters in image/texture file dialogs.


    • Added --to-stdout mode to send rendered tiles to the standard output (in binary).
    • Removed --continuous-saving mode since it fundamentally could not work reliably.
    • Message coloring and verbosity settings set on the command line now have precedence over those set in settings/appleseed.cli.xml.
    Source code(tar.gz)
    Source code(zip) MB) MB) MB) MB)
  • 1.7.1-beta(Aug 2, 2017)

  • 1.7.0-beta(Jun 6, 2017)

    These are the release notes for appleseed 1.7.0-beta.


    The following people contributed code for this release, in alphabetical order:

    • Aytek Aman
    • Luis Barrancos
    • François Beaune
    • Artem Bishev
    • Andreea Dincu
    • Petra Gospodnetic
    • Andrei Ivashchenko
    • Kutay Macit
    • Nabil Miri
    • Gleb Mishchenko
    • Aakash Praliya
    • Animesh Tewari
    • Esteban Tovagliari



    Subsurface Scattering Overhaul

    We made deep improvements to our ray traced subsurface scattering implementation. The new code gives more accurate and consistent results. We also took this opportunity to add support for SSS sets:

    SSS Sets

    (On the left, each object is in its own SSS set; on the right, all objects are in the same SSS set.)

    We also modified the Gaussian BSSRDF to expose the same parameters as other BSSRDF models. This makes finding the right BSSRDF model much easier.

    Finally, we added Fresnel weight parameters to all BSSRDF models and we exposed the Gaussian BSSRDF to OSL.

    New Path Tracing Controls

    We added a few new controls to appleseed's unidirectional path tracer:

    • Low Light Threshold allows the path tracer to skip low contribution samples (thus saving the cost of expensive shadow rays) without introducing bias. By default the threshold is set to 0 (not skipping any sample) but we might change it in the future.

    • Separate diffuse, glossy and specular bounce limits, in addition to the existing global bounce limit.

    New Plastic BRDF

    appleseed now features a physically-based plastic BRDF:

    Coffee Maker scene showcasing the new plastic BRDF (Coffee Maker scene by Blend Swap user cekuhnen, lighting and material setup by Benedikt Bitterli, converted to appleseed using our new tool.)

    OSL Shader Library

    We added OSL shaders that expose some of appleseed' built-in BSDFs such as the Disney BRDF and our physically-based Glass BSDF, as well as Voronoi texture nodes (2D & 3D). We're continually growing and expanding this shader library.

    In addition, we have now high quality OSL implementations of many Maya shading nodes. They are used in appleseed-maya, our soon to be released integration plugin for Autodesk Maya, to translate Maya shading networks to appleseed.

    Other New Features and Improvements

    • The AOV subsystem has been rewritten to be more correct and to offer more features.
    • Added transparent support for packed project files (*.appleseedz).
    • Added initial support for archive assemblies.
    • Texture loading is now fully based on OpenImageIO, vastly expanding our image file format support.
    • Warn about invalid (NaN or negative) during interactive rendering.
    • Adjusted default rendering settings.
    • Added cube mesh primitive.
    • Added support for *.mitshair files (Mitsuba's curves file format).
    • Added alternative volume parameterization to glass BSDF.
    • Improved RGB <-> spectra conversions.
    • Improved bump mapping implementation.
    • Switched to OpenImageIO 1.7.10.
    • Use same defaults in Disney BRDF and Disney material.
    • Improved handling of project update errors.
    • Rely on the geometric normal for side determination when vertex normals are absent.
    • Allow to flip normals of an object instance with <parameter name="flip_normals" value="true" />.
    • Use faster probe ray mode in more cases.
    • Added highlight falloff controls to several BSDF models.
    • Added support for NDC and raster OSL coordinate systems.

    Bug Fixes

    • Fixed sampling of Disney BRDF (also affects Disney material). The results are now more accurate.
    • Fixed rendering of textured area lights.
    • Fixed a number of cases where NaN values would be generated.
    • Properly close texture files when rendering ends.
    • Fixed bug in Unidirectional Path Tracer when the last bounce of a path is purely specular.
    • Properly handle infinite values in environment maps.
    • Fixed incorrect warning when using object alpha maps.
    • Fixed incorrect alpha mapping detection when OSL materials have alpha maps.
    • Fixed missing intersection filters on first renders.
    • Fixed ray differentials after transparent (alpha) intersections.
    • Fixed crash with OSL and nested dielectrics.

    Removed Features

    • Removed experimental Frozen Display interactive rendering mode.
    • Removed fake translucency support from physical surface shader.
    • Removed aerial perspective support from physical surface shader.
    • Removed the Distributed Ray Tracing engine as it is now fully redundant with the Unidirectional Path Tracing engine configured with zero diffuse bounces.
    • Removed the systematic depth AOV that was generated with every render.


    • Exposed creation of mesh primitives.
    • Exposed environment EDF transforms.
    • Exposed logger verbosity levels.
    • Improved progress update in sample.

    • Lock down in final rendering mode.
    • Fixed rare bug where aborting a render was not working.
    • Fixed corner cases in camera controller.
    • Don't show irrelevant inputs in entity editor.
    • The scene picker now prints more information about the picking point.
    • Fixed color value not updating in entity editor when cancelling color picker dialog.
    • Update crop window in entity editor when setting or clearing crop window in render widget.
    • Added tooltips in rendering settings dialog.
    • Added File → Pack Project As... to pack a project to a single *.appleseedz file.
    • Added regular expression-based filter for tests in the Tests dialog.
    • Added keyboard shortcuts to tooltips.


    • Replaced updateprojectfile by projecttool, a new command line tool with more features.
    • Added to convert Mitsuba scenes to appleseed.
    Source code(tar.gz)
    Source code(zip) MB) MB) MB)
  • 1.7.0-beta-preview-1(Jan 19, 2017)

  • 1.6.0-beta(Dec 15, 2016)

    These are the release notes for appleseed 1.6.0-beta.

    The following people contributed code for this release, in alphabetical order:

    • Luis Barrancos
    • François Beaune
    • Esteban Tovagliari

    Note: We are providing builds relying on the SSE 4.2 SIMD instruction set. Please contact us if your machine does not support SSE 4.2 and you would like a build relying on SSE 2 instead.


    • Fixed color shifting problems in SSS.
    • Fixed rare hanging in presence of SSS materials.
    • Fixed rare problems when mixing RGB colors and spectra.
    • Fixed rare problems with lat-long environment maps with fully black rows.
    • Fixed bug leading to absolute texture paths in projects when saving projects in place.
    • Reimplemented built-in mesh primitives to have better UV parameterizations.
    • Added support for multiple cameras.
    • We're now providing Visual Studio 2015 builds, in addition to Visual Studio 2013 ones.
    • Fixed bug when interpolated normals/tangents were null.


    • Added matrix[] and int[] parameters support.
    • Fixed a number of bugs in the background() closure.
    • Fixed crash with empty string parameters.
    • Improved shader compatibility with other renderers.
    • Added first set of shaders matching Maya shading nodes.
    • Removed mean cosine (g) parameter from appleseed subsurface closures.


    • Added missing Object and MeshObject methods to Python bindings.
    Source code(tar.gz)
    Source code(zip) MB) MB) MB) MB)
  • 1.5.1-beta(Sep 22, 2016)

  • 1.5.0-beta(Sep 11, 2016)

    These are the release notes for appleseed 1.5.0-beta.

    The following people contributed code for this release: François Beaune, Ramon Blanquer, John Haddon, Esteban Tovagliari.

    Glasses (appleseed render by François Gilliot, inspired by ferronne's amazing Revolution glassware collection.)


    • Massive scaling, responsiveness and speed improvements during interactive rendering.
    • Added support for parametric surface generation (plane, sphere and torus are currently implemented).
    • Diffuse Mean Free Path inputs in BSSRDFs are now colors instead of scalars.
    • Improved handling of asset files referenced by projects. In particular, textures referenced by SeExpr expressions are now properly tracked as project dependencies (
    • Improved UV diagnostic surface shader.
    • Added facing ratio diagnostic shader.
    • Added background environment shader to shade the background with a solid color or a texture.
    • Fixed default range for IOR inputs.
    • Allow negative number of rendering threads (
    • Added optional automatic computation of smooth normals and tangents on mesh objects at loading time.
    • Added support for environment transforms.
    • Fixed wrong background color for colored messages in console on Windows (
    • BSSRDFs now benefit from automatic IOR tracking; replaced Inside/Outside IOR with a single IOR value.
    • Print more rendering settings when rendering starts.
    • Changed default tile ordering to spiral.
    • Changed default reconstruction filter to 1.5-pixel Blackman-Harris.
    • Emit proper error messages when texture files referenced in SeExpr expressions cannot be loaded.
    • Emit proper error messages when failing to write project files to disk.
    • Fixed crash at exit time in appleseed.cli in benchmark mode.
    • Fixed several problems with the glass BSDF.
    • Fixed crash when loading deforming meshes without normals.
    • Fixed bug when path tracing a scene with specular BSDFs and a limited number of bounces.
    • Improved reporting and handling of invalid pixel samples.
    • Reduced startup time and memory usage in scenes with multiple lat-long environment EDFs.
    • Print full paths of entities instead of just entity names in log messages.


    • Improved the as_subsurface_surface shader.
    • Added Mari-style UDIM support to texture shaders.
    • Allows negative values of anisotropy in the Disney closure.

    • Improved the way entities bound to inputs are shown and behave.
    • Fixed crash when rendering the current project, after loading another project failed.
    • Persist the state of geometry of windows, dialogs and dockable panels.
    • No longer print camera settings every time the camera changes.
    • Fixed the file picker in entity edtor: file changes were not applied unless Enter was pressed.


    • Expose methods to set and retrieve the frame's crop window in appleseed.python.
    • Command line tools now load their settings from settings/
    • Message verbosity of all tools can now be set in settings files. Default verbosity is Info.
    Source code(tar.gz)
    Source code(zip) MB) MB) MB) MB)
  • 1.4.0-beta(Mar 31, 2016)

    These are the release notes for appleseed 1.4.0-beta.

    The following people contributed code for this release: François Beaune, Alexey Dokuchaev, Esteban Tovagliari.


    Major Changes

    The highlights of this release revolve around improving our support of dielectrics:

    • Support for arbitrarily nested dielectrics with user-specified priorities
    • Automatic tracking of indices of refraction

    Here is a render using these new facilities (download this test scene):

    Whisky Glass

    And here are a couple examples of how dielectrics priorities affect rendering:

    Nested Dielectrics 1 Nested Dielectrics 2

    We also added new BSDFs: sheen, glossy, metal, and glass. They are based on recent research and have user-friendly parameters.

    Metal BRDF Test Glass BRDF Test

    OSL support was improved in this release. We made the new BSDFs available as closures. The new closures make it easier to write shaders. They compute internally many terms that previously had to be computed on the shaders and they benefit from automatic tracking of indices of refraction.

    In addition, it's now possible to write view-independent shaders that will work correctly with bidirectional rendering methods, a direction we would like to explore in future appleseed releases.

    We also revamped the OSL shader library to use the new closures, added a new subsurface shader and improved the quality of the code in general.

    Finally, we replaced all the icons in by a new set of modern icons. Big thanks to François Gilliot for the great work!

    New Icons

    Minor Changes

    • Fixed artifacts that start to appear after 4 billions pixel samples.
    • The Oren-Nayar BRDF now matches the Lambertian BRDF when roughness is set to 0.
    • Added new sheen BRDF (extracted from the Disney BRDF).
    • Fixed position of orthographic cameras.
    • Added 3ds Max-compatible Omni and Spot light source models.
    • Added exposure controls to lights and lat-long environment EDF.
    • Fixed occasional crash when interrupting rendering.
    • BSDFs now support anisotropy in the V direction. The anisotropy parameter range is now [-1, 1]: values from 0 to 1 stretch the specular highlights in the U direction while values from 0 to -1 stretch them in the V direction.
    • The specular BTDF now supports absorption based on Beer's law.


    • New as_sheen, as_glossy, as_metal and as_glass closures.
    • Removed reflection, refraction and microfacet closures.
    • Added smooth tangents and bitangents to OSL.
    • Fixed orientation of tangents in OSL.
    • OSL closure parameters have now better names.
    • Abort rendering if there are OSL errors.
    • Fixed wrong OSL subsurface closure weight in the presence of multiple subsurface closures.
    • Updated the OSL shader library.

    • now remembers the position/dimensions of its main window.
    • now loads all its icons from disk, making it easy for anyone to tweak or replace them.
    • Added Reload and Rendering Settings toolbar buttons.
    • Use alternating colors in Project Explorer.
    • Miscellaneous UI cleanups and improvements.


    • Allow creating OSL and Disney materials from Python.
    • Added Python bindings for vector operators (dot and cross products, norm, normalize).
    • Exposed 4D vectors in Python bindings.
    • Exposed 3D orthonormal basis (Basis3d) in Python Bindings.
    • Added insert_path() and remove_path() Python methods to Configuration class.
    • Execute any pending Python tile callbacks when rendering terminates.
    • Added PauseRendering enumeration value to IRenderControllerStatus.
    • It is no longer necessary to override all methods of ITileCallback when only some are necessary.
    Source code(tar.gz)
    Source code(zip) MB) MB) MB) MB)
  • 1.3.0-beta(Nov 3, 2015)

    These are the release notes for appleseed 1.3.0-beta.

    The following people contributed code for this release: François Beaune, Alexey Dokuchaev, Koji Nakamaru, Esteban Tovagliari.

    Special thanks to Toshiya Hachisuka and Jeppe Revall Frisvad for the fruitful conversations.


    Major Changes

    The major new feature of this release is full support for state of the art, raytraced subsurface scattering.

    We implemented most of the diffuse scattering models available today:

    • A simple Gaussian profile
    • The Standard and "Better" Dipoles (for the "gummy" look common in animation)
    • The newly published Directional Dipole
    • And Pixar's new Normalized Diffusion profile for highly accurate subsurface scattering

    Here are a few renders:

    Digital Emily 2 from the Wikihuman Project:

    Digital Emily 2 from the Wikihuman Project Digital Emily 2 from the Wikihuman Project

    A LEGO® character based on a free 3D model found on TurboSquid:

    LEGO® character LEGO® character

    A rather creepy and disgusting flower made of raw chicken-like material (!) using an OpenShadingLanguage shader that combines three diffusion profiles with different depth and color parameters. The 3D model for this scene comes from the Keenan Crane's 3D Model Repository:

    Flower made of raw chicken)

    Thanks to the great work of Alexey Dokuchaev (a.k.a. danfe in the FreeBSD community), appleseed is now available in the FreeBSD Ports Collection (x86/x64 only for now).

    appleseed is also back on OS X (10.10 and later).

    Finally, OpenShadingLanguage was updated to version 1.6.8.

    Minor Changes

    • Fixed the Oren-Nayar BRDF.
    • Added support for OSL matrix shader arguments.
    • Added ray differentials for secondary rays and a new ray spread diagnostic mode.
    • Fixed regression in SPPM photon tracing.
    • Fixed crash when using BSDFMix or BSDFBlend with DisneyBRDF.
    • Warn when a project file follows a format revision that is posterior to the current format revision.
    • Improved reporting of invalid pixel samples.
    • Fixed wrong IBL computations in some cases when using more than 1 sample.
    • The Max Ray Intensity feature now works in more cases.
    • Increase default texture store from 256 MB to 1 GB.
    • Fixed a regression where OSL textures where flipped on the v axis.

    • Fixed rare crash when stopping a render.
    • Autosaving of images is now off by default.
    • Added support for optional user settings files: on Linux and FreeBSD will look for settings files in $HOME/.appleseed/settings/. This allows installing appleseed in system (read-only) directories.
    • Fixed some edge cases around entity deletion.


    • The --threads (-t) option now accepts value auto.
    • Autosaving of images is now off by default.
    • Added support for optional user settings files: on Linux and FreeBSD will look for settings files in $HOME/.appleseed/settings/. This allows installing appleseed in system (read-only) directories.
    Source code(tar.gz)
    Source code(zip) MB) MB) MB) MB)
  • 1.2.0-beta(Jun 22, 2015)


    These are the release notes for appleseed 1.2.0-beta.

    The following people contributed code for this release: François Beaune, John Haddon, Hans Hoogenboom, Esteban Tovagliari.


    Major Changes

    Added ray differentials for primary rays, screen-space derivatives and texture filtering for OSL shaders:

    Ray Differentials

    OSL bump mapping is now supported:

    OSL Bump Mapping

    Added a new Velvet BRDF:

    Velvet BRDF

    Added support for photon targets. Photon targets are used by the SPPM engine to shoot photons toward volumes of interests (such as a window in a wall).

    A photon target can be defined by adding a "photon_target" parameter with value "true" to an object instance:

    <object_instance name="window_inst" object="window">
        <parameter name="photon_target" value="true" />

    We now ship the beginnings of an OSL node library.

    Surface shaders in materials are now optional. If a material doesn't have a surface shader assigned to it, it will use the scene's default surface shader (which is a physical surface shader with all inputs set to their default values).

    • The sampling mode (RNG, QMC) can now be switched at runtime. The default is RNG.
    • Implemented an orthographic camera model.
    • Added support for motion-blurred vertex normals and vertex tangents.

    Minor Changes

    • Added "Color" diagnostic mode.
    • Added support for OSL background closures.
    • Added compile-time and run-time appleseed version information for OSL shaders.
    • Default tile ordering is now 'spiral' instead of 'hilbert'.
    • Use barycentric coordinates when UV coordinates are not available.
    • Don't trace environment photons if IBL is disabled.
    • Fixed crash with OSL materials without shaders.
    • Fixed Disney BRDF bug when all component weights are zero.
    • Fixed crash in SPPM lighting engine with large number of photons + Disney BRDFs.
    • Properly handle empty scenes in SPPM lighting engine.
    • Make sure OIIO texture files get closed when rendering terminates.
    • Fixed bug in Blinn microfacet sampling code.
    • Take into account shutter times when doing deformation motion blur.
    • Fixed crash when rendering triangles with more than one motion segment.
    • Fixed OIIO texture cache size.
    • Improved OIIO/OSL-related log output.
    • The geometric normal is now always front-facing in the absence of per-vertex normals.
    • Threads are now named.
    • Fixed non-determinism in rendered images in progressive rendering mode with a limited max number of samples.
    • Implemented surfacearea() OSL function.
    • Fixed bump/normal mapping for Disney material.
    • Fixed alpha mapping for Disney material.
    • Removed redundant 'alpha' and 'color' parameters in <color> entities.
    • Fixed crash when a curve object has a light-emitting material.

    • Right-clicking in the render widget will now bring the context menu of the entity underneath the mouse cursor.
    • The camera pivot point can now be set by clicking on an object and pressing 'f'.
    • Preserve outside pixels when setting a render region.
    • Improved responsiveness of during interactive rendering.
    • Added a way to assign new Disney materials to multiple object instances at once.
    • When creating a new assembly, automatically create an instance of that assembly.
    • Always expand top-level Assemblies and Assembly Instances items, and if there's a single assembly item, expand it as well.
    • Print world coordinates of picking point.
    • Display supported file formats (by OIIO) when picking texture file to use in Disney material.
    • Remember last directory and filter string in all file dialogs.
    • Increased number of recently opened project files from 5 to 15.
    • Prevent from closing when a project is being loaded.
    • Fixed an occasional crash with the pixel tracker (that prints RGBA values of the pixel under the mouse cursor).
    • When importing a Disney material, rename it if there is already a material with the same name.
    • Apply changes after assigning texture to color input of Disney material via texture file picker in Attribute Editor.
    • Changed type of horizontal FOV inputs from text to numeric.
    • Don't adjust range of slider when input value is empty.
    • After importing a Disney material, select it.
    • Only show the Attribute Editor if a single entity is selected.
    • Started adding help strings to entity inputs.


    • Fixed possible crash when an appleseed.MasterRenderer instance is garbage collected.
    • Added appleseed.Project.get_metadata() to retrieve configurations metadata.
    • Added get_model_metadata() methods to all appleseed entities.


    • is a new Python script to extract metadata from OSL shaders.
    • is a new Python script to convert RenderMan-for-Maya Disney BRDF presets to appleseed materials.
    • Removed maketiledexr. Use the provided maketx tool instead.
    Source code(tar.gz)
    Source code(zip) MB) MB) MB) MB)
  • 1.1.0-beta(Jan 26, 2015)


    These are the release notes for appleseed 1.1.0-beta.

    Note: we now switched to plain simple semantic versioning.

    The following people contributed code for this release: François Beaune, Esteban Tovagliari.


    This is the first release that can be used with Image Engine's Gaffer:


    Major Changes

    appleseed's internal color pipeline will now remain in pure RGB mode for as long as possible, and will automatically switch to spectral mode when necessary. This results in better color fidelity when using RGB colors only.

    Object and assembly instances now support visibility flags:

    Visibility Flags Demo

    By default, all flags are set, i.e. we have:

    <object_instance name="myInstance" object="myObject">
        <parameters name="visibility">
            <parameter name="camera" value="true" />
            <parameter name="light" value="true" />
            <parameter name="shadow" value="true" />
            <parameter name="transparency" value="true" />
            <parameter name="probe" value="true" />
            <parameter name="diffuse" value="true" />
            <parameter name="glossy" value="true" />
            <parameter name="specular" value="true" />

    The physical sun light model is now fully functional.

    The sampling of microfacet BSDF has been improved. Scenes using those BSDFs will render with less noise with the same number of samples:

    Microfacet BTDF

    Minor Changes

    • Added Ashikhmin-Shirley and Phong OSL closures.
    • Fixed a regression in the way bump mapping is computed.
    • Fixed directional light when instantiated in scaled assemblies.
    • Fixed possible artifacts with directional lights.
    • Fixed multiple instancing of point, spot, directional and sun lights.
    • Fixed automatic updated of project files from revision 7 to revision 8.
    • Fixed a crash when an OSL shader cannot be found.
    • Fixed a crash when vertex normals of a triangle are absent.
    • Fixed horizontal/vertical shifting in latitude-longitude environment EDF.
    • The bump offset is now adjustable via the bump_offset material parameter. The default value is 2 (texels).
    • Don't replace spaces by underscores in AOV file names.
    • Search paths may now be added using the APPLESEED_SEARCHPATH environment variable (paths must be separated with :).
    • Project file parsing errors now include approximate line and column numbers.
    • Renamed inputs of point, spot, directional and sun lights according to the actual physical quantities they represent. As always, projects will be automatically updated, project files remain fully backward-compatible.
    • Fixed installation of appleseed.python on OSX.
    • Added a version header in renderer/api that can be used by clients of the C++ API.

    Minor Changes

    • Fixed crashes and user interface issues in the Disney material editor.
    • Fixed bug: the entity browser would not show colors and textures from parent assemblies or from the scene.
    • Fixed intermittent rendering interruptions during live scene edition.
    • Fixed crash after deleting an assembly from a scene that had already been rendered.
    • Automatic adjustment of sliders range now works with negative values.


    • Exposed previously missing methods in Assembly, Object and Texture entities.


    • New command line tool dumpmetadata to dump entity metadata as XML or Markdown.
    • Added a --passes command line option to appleseed.cli.
    • If an output_filename parameter is present in the frame, appleseed.cli will now write the main output image to disk. If an output_aovs parameter is also present, it will also write the AOVs to disk.
    Source code(tar.gz)
    Source code(zip) MB) MB)
    gafferseed- MB)
  • 1.1.0-alpha-24-preview-1(Dec 20, 2014)

  • 1.1.0-alpha-23(Oct 23, 2014)


    These are the release notes for appleseed 1.1.0 alpha-23.

    The following people contributed code for this release (in alphabetical order): François Beaune, Srinath Ravichandran, Esteban Tovagliari.


    Major Changes

    • Added support for OSL emission.
    • Exposed the Disney BRDF as an OSL closure.
    • Added support for degree-1 (linear) curves.
    • Added support for external display drivers (as shared libraries / DLLs).
    • Implemented monochromatic photons in SPPM lighting engine (~5x memory reduction).
    • Added support for smooth tangent vectors.

    OSL emission:


    A variant of the Cornell Box scene rendered using SPPM with monochromatic photons:


    Smooth tangent vectors (on the foot):


    Minor Changes

    • The Tangent and Bitangent modes of the diagnostic surface shader are now based on the actual tangent vectors instead of dP/du and dP/dv.
    • Added support for OSL camera coordinate system.
    • Added support for OSL dtime and dPdtime.
    • Fixed hierarchical instancing of assemblies.

    Experimental Changes

    • Experimental "Frozen Display" mode when manipulating the camera during interactive rendering.

    Frozen Display mode:

    Frozen Display mode

    Minor Changes

    • Scene picking now prints the depth at the picking point.
    • Fixed bug: slider can no longer be moved after having set the value to exactly 0.
    Source code(tar.gz)
    Source code(zip) MB) MB)
  • materialtester-1.0(Sep 15, 2014)

  • 1.1.0-alpha-22(Aug 24, 2014)


    These are the release notes for appleseed 1.1.0 alpha-22.

    The following people contributed code for this release (in alphabetical order): Marius Avram, François Beaune, Srinath Ravichandran, Esteban Tovagliari, Zhaotian Wang, Nicholas Yue.

    I would particularly like to acknowledge the amazing work done by Esteban, and by our Google Summer of Code students Marius and Srinath. Congrats!


    Major Changes

    Open Shading Language

    We now ship appleseed with OpenShadingLanguage (OSL) support on all platforms, including Windows. We're still missing a few important functionalities such as light emission, but we're getting close to full support. Check out the OSL Support Status page for a more detailed overview of what's supported.

    Disney Material

    We have added a new multi-layer material based on Disney's principled BRDF model.

    Teapot using a multi-layer, expression-driven Disney material:


    Curve Rendering (Hair, Fur)

    We now support direct rendering of cubic Bézier curves with per-vertex width, without pre-tessellation (GSoC 2014 project).

    Fluffy Cornell Box:


    Important Changes

    • New microfacet BTDF (rough glass) closure, accessible from OSL.
    • Fixed major bug in specular BTDF.
    • It is now possible to use an image to define the shape of the thin lens camera diaphragm.
    • Multiple assemblies with the exact same geometry will now share a single triangle tree.
    • Bug fix in SPPM Lighting Engine: incorrect illumination scaling when using different numbers of photons for lights and environment.
    • Bug fix in SPPM Lighting Engine: caustics from the environment were missing when IBL was disabled.
    • Bug fix: Max Ray Intensity wasn't honored for secondary rays hitting the environment in Unidirectional Path Tracing engine.
    • Major performance improvements for photon maps with large differences in density, when using the SPPM lighting engine.

    OSL shader based on the new microfacet BRDF (rough glass) closure:


    Minor Changes

    • Emit a warning if an object instance has alpha transparency on one side but not on the other.
    • Reduced wire thickness in screen-space wireframe diagnostic surface shader.
    • Normalize flux when viewing the photons directly (for debugging) in SPPM lighting engine.
    • Fixed logging of focal distance when thin-lens camera's autofocus cannot find a target.

    Major Changes

    Disney Material Editor

    We have created a powerful, user-friendly material editor for materials based on the Disney multi-layer material. In addition, we support Disney's SeExpr expressions for all inputs (GSoC 2014 project).

    In addition, Disney materials can now be exported / imported, allowing to create material libraries and to reuse them in other projects.

    Disney Material Editor

    Check it out on action:

    Disney Material Editor in Action

    Minor Changes

    • Added an application icon on Windows.
    • Fixed sporadic crashes when exiting
    • Adjusted step sizes for integer inputs in Render Settings dialog.
    • Allow two decimals for alpha parameter in SPPM radiance estimation settings.
    • Changed Max Ray Intensity step from 0.5 to 0.1 in Render Settings dialog.
    • Fixed styling of radio buttons in
    • Respect user / system settings regarding font sizes in the user interface.
    • In newly created projects, frame resolution is now 1024x576 (quarter 2K, 1.78 aspect ratio) and film dimensions are 10.24mm x 5.76mm.
    • Tweaked default SPPM settings: changed direct lighting method from SPPM to Ray Traced, and increased light and environment photon counts from 100,000 to 1,000,000.
    • Bug fix: the color of object instance items would not always change after assigning materials to the object instances.
    • Textures imported from now default to 'wrap' addressing mode.


    • Improved command line parsing and reporting of errors and warnings.

    Other Tools and Miscellaneous Changes

    • New makefluffy tool to grow hair on any appleseed scene.
    • Added a new devkit sample called heightfield that is so fun to play with that we released it as a standalone tool.
    • All appleseed tools can now load built-in projects (e.g. builtin:cornell_box).
    • We no longer ship the old blenderseed exporter. Blenderseed is now being developed independently by Joel Daniels and is hosted in its own appleseedhq repository:
    • Improved the organization of the Linux and OS X packages to better reflect the conventions of these platforms.

    Sample works by Thomas Arthus and François Beaune, made with heightfield:




    Source code(tar.gz)
    Source code(zip)
    appleseed-1.1.0-alpha-22-0-gcdbec94-linux64-gcc48.tgz(45.33 MB) MB) MB)
  • 1.1.0-alpha-22-preview-4(Aug 20, 2014)

  • heightfield-1.0(Aug 13, 2014)


    heightfield is a simple tool to generate a heightfield from a texture and make images like the ones below. The tool generates a complete standalone appleseed scene.

    appleseed 1.1.0 alpha-22-preview-3 or later is required to render the generated scene. You can find releases of appleseed in the Releases page on GitHub.


    1. Unzip the package somewhere.
    2. Place a PNG image called heightfield.png into the data directory.
    3. Run heightfield (on Windows, simply double-click on heightfield.exe from the Explorer).
    4. Start
    5. Open the heightfield.appleseed scene from the output directory.

    The package comes with a sample heightfield.png image, so to get started you can simply run the tool, open the scene in and start rendering in seconds.

    Please post your renders to the appleseed forum!





    Source code(tar.gz)
    Source code(zip) MB)
  • 1.1.0-alpha-22-preview-3(Aug 10, 2014)

  • 1.1.0-alpha-22-preview-2(Aug 5, 2014)

  • 1.1.0-alpha-22-preview-1(Jul 29, 2014)

  • 1.1.0-alpha-21(Apr 24, 2014)


    These are the release notes for appleseed 1.1.0 alpha-21.

    The following people contributed code for this release (in alphabetical order): Marius Avram, Luis Barrancos, François Beaune, Chris Camargo, Freddy Chaleur, Vidar Nelson, Srinath Ravichandran, Liisa Sailaranta, Jonathan Topf, Esteban Tovagliari, Garvit Verma, Davis Wen, Rémi Weng, Nicholas Yue, Xin Zhao.

    We would also like to acknowledge the amazing work of Jonathan Topf (mayaseed), Hans Hoogenboom (houseed) and Thomas Arthus (appleseed website).


    Major Changes

    Open Shading Language

    appleseed now supports a large subset of Open Shading Language (OSL).

    Note that OSL support is at pre-alpha level and is not yet ready for general usage. It is thus disabled in release packages. Adventurous users are however welcome to try the experimental OSL package for Linux, or build appleseed with OSL in and give it a spin.

    Oren-Nayar BRDF

    We added support for the Oren-Nayar BRDF.

    New Rule-Based Render Layer Mechanism

    This new system allows to assign render layers to scene entities via a series of rules. The only rule currently available is based on Perl regular expressions. Rules are normal scene entities and as such can be added/edited/removed from Projects using the old render layer system are automatically migrated to the new one.

    Important Changes

    • Added support for light-emitting geometry in nested assemblies.
    • AOVs now have alpha channels.
    • Added support for arbitrary linear texture transforms.
    • Added Light Near Start support to Emission Distribution Functions (EDFs).
    • Print total and process virtual memory in log messages.
    • Intersection filters are now cached across renders.
    • Bug fix: some caustics-generating paths were still followed even when caustics were disabled.

    Minor Changes

    • Implemented spiral tile ordering.
    • Added Shade Alpha Cutouts boolean parameter on materials.
    • Most surface shaders should not override alpha, and no longer do.
    • Added World Space Position diagnostic mode.
    • Changed Physical Surface Shader's thin translucency to be a color instead of a scalar.
    • The scene entity may now have parameters.
    • Fixed invalid texture and assembly binding rules.
    • Added search paths support in project files.
    • Support aborting during scene preparation.
    • Improved handling of assets when writing project files to disk.
    • Prune redundant transforms in transform sequences.
    • Improved robustness of ray tracer in presence of degenerate static or moving triangles.
    • Improved adaptive rendering mode.
    • Removed experimental surface shaders.
    • The color space of the default project is now linear RGB instead of sRGB.
    • By default, caustics are now disabled for the unidirectional path tracer.
    • Changed default autofocus target from top-left corner of the image to center of the image.
    • Print camera and frame settings when rendering starts.
    • Project files with multiple entities of the same type and name in a given scope are invalid.
    • Base alpha value for surface shaders in a collection is now the same as for the collection surface shader itself.
    • Improved several log messages.
    • Add ability to assign materials to both sides of an object instance at once with side="both" attributes on <assign_material> elements.
    • Set default thin translucency value to 0.0 instead of empty in the Physical Surface Shader.
    • The Uniform Pixel Renderer now uses the actual number of samples requested when decorrelation is enabled.
    • Added transparency threshold to SPPM parameters.
    • Allow negative sample and pixel values.
    • The version string now states whether QMC is enabled.

    Added parameters to texture store to enable tracking messages. The new parameters are:

    texture_store.track_tile_loading    (boolean, default is false)
    texture_store.track_tile_unloading  (boolean, default is false)
    texture_store.track_store_size      (boolean, default is false)

    Major Changes

    User Interface Overhaul

    The user interface of has been overhauled and cleaned up:

    appleseed studio-1 1 0-alpha-21

    Attribute Editor

    Added an attribute editor to

    Known issue: when editing an entity through the Entity Editor dialog (by double-clicking on the entity), the Attribute Editor is not updated with the new values after the Entity Editor dialog is closed.

    Important Changes

    • Added RGBA readout.
    • Added a pixel inspector tool under the mouse with a button to toggle on/off that provide NDC, RGBA and pixel position information.
    • Added project file watcher to automatically reload project files when they have changed on disk.
    • Added tile ordering option in the Render Settings dialog.
    • It is now possible to filter entities (using regular expressions) in the Entity Browser dialog.
    • Improved camera handling when zoomed in/out.
    • The state of the user interface is now preserved across launches.
    • Dockable widgets can now be hidden or made visible from the status bar; all dockable widgets can be toggled at once using F11.
    • CTRL+Enter will apply the changes and close the Entity Editor.
    • Implemented preview of spectral colors in the entity editor.
    • SPPM settings are no longer available in interactive configurations since this combination is not supported by the renderer.
    • Image plane sampling settings are irrelevant for interactive configurations: hide them.
    • Allow assigning materials to instances of objects without material slots.
    • Fixed crash when picking an object instance without a material.
    • Sliders for numeric inputs now adapt their range when entering out-of-range values.
    • It is now possible to instantiate objects from the Project Explorer.
    • Project files can now be dragged-and-dropped into's main window.

    Improved the behavior of the log panel in

    • Fix a bug where message coloring broke completely when text was selected.
    • Don't scroll to the bottom of the log panel if text is selected.
    • Maintain scroll position if not fully scrolled to the bottom.

    Minor Changes

    • Only compute the final average luminance if the print_final_average_luminance setting is set to true (false by default).
    • Many small bug fixes.
    • Print a log message when copying the render to the clipboard.
    • The Quicksave All AOVs button now generates both numbered and unnumbered image files.
    • Fixed minor visual glitch: the render widget was not repainted if rendering failed early.
    • The Import Objects file dialog now show *.binarymesh files.
    • Bug fix: don't enable File -> Reload Project if the project has no path.
    • Fixed Qt runtime warning.
    • Changed the type of the IOR inputs of the Specular BTDF from text to numeric.
    • Added toolbar button to reset zoom to 100%.
    • Removed unimplemented user interface elements.
    • Added a toolbar button to clear the frame to black.
    • Bug fix: the Clear Filter button in the Project Explorer was not always properly disabled.
    • The Project Explorer filter is cleared when an entity is picked.


    • Clarified the description of the --window command line argument.
    • Added syntax for --configuration <name> command line argument.
    • Added support for Houdini's mplay. 1.18

    • Tweaked timestamps formatting.
    • Added --print-missing-deps flag.
    • Fixed label in message headers.
    • Improved error handling. 2.9

    From-scratch rewrite fixing speed and robustness problems of the 1.x series.

    • Dependency tracking is now much more robust.
    • Dependencies are now incrementally updated instead of being calculated from scratch at every step.
    • Missing dependencies will now be detected and re-uploaded at any time.
    • Support for tracking multiple shots concurrently in the same target directory.
    • Print ping times.
    • The render manager can now be terminated (by pressing CTRL-C) during updates of the dependency databases.

    Other Tools

    • Tweaked output of
    • allow to forward additional arguments to appleseed, and to select the output format.
    • On Windows, the appleseed Python module now has the .pyd extension.
    • mayaseed no longer ships with appleseed.
    • Demo scenes no longer ship with appleseed.
    • All command line tools now understand the --message-verbosity <level> argument. Level can be: debug, info, warning, error, fatal.
    • Missing positional arguments are now a fatal error for all command line tools.
    • The devkit sample now starts by printing appleseed's version string.
    • For all command line tools on Linux and OS X, disable console coloring if stderr is not bound to a terminal.
    Source code(tar.gz)
    Source code(zip) MB) MB) MB)
    appleseed-1.1.0-alpha-21-0-OSL-g5c5df0b-linux64-gcc4.tgz(43.23 MB) KB)
  • 1.1.0-alpha-21-preview-2(Feb 13, 2014)

  • 1.1.0-alpha-21-preview-1(Feb 13, 2014)

Modern, physically-based production rendering
Source code for pbrt, the renderer described in the third edition of "Physically Based Rendering: From Theory To Implementation", by Matt Pharr, Wenzel Jakob, and Greg Humphreys.

pbrt, Version 3 This repository holds the source code to the version of pbrt that is described in the third edition of Physically Based Rendering: Fro

Matt Pharr 4.4k Jan 7, 2023
ORE (OpenGL Rendering Engine) is a rendering engine developed for my college minor project assessment.

ORE (OPENGL RENDERING ENGINE) What is ORE? ORE(OpenGL Rendering Engine) is a rendering engine with great and easy to use UI that allows the user to lo

SoL (for Speed of Light, or sun in Spanish) is a Physically-based rendering library written in modern C++

SoL (for Speed of Light, or sun in Spanish) is a small rendering library written in C++20. Its goal is to strike a good balance between performance and usability, and allow easy experimentation for rendering researchers.

Arsène Pérard-Gayot 10 May 19, 2022
Bullet Physics SDK: real-time collision detection and multi-physics simulation for VR, games, visual effects, robotics, machine learning etc.

Bullet Physics SDK: real-time collision detection and multi-physics simulation for VR, games, visual effects, robotics, machine learning etc.

Bullet Physics SDK 10.1k Jan 7, 2023
physically based renderer written in DX12 with image-based lighting, classic deffered and tiled lighting approaches

Features Classical Deferred Renderer Physically Based shading Image Based Lighting BRDF Disney model (Burley + GGX) Tangent space normal mapping Reinh

Alena 35 Dec 13, 2022
Binary visualization tool primarily aimed at videogame reverse engineering & research.

binviz Binary visualization tool. Allows you to load a binary and pan/zoom around its content. Each byte (or 4 bytes in 4-byte mode) is represented by

Nick Renieris 31 Dec 6, 2022
Legion Low Level Rendering Interface provides a graphics API agnostic rendering interface with minimal CPU overhead and low level access to verbose GPU operations.

Legion-LLRI Legion-LLRI, or “Legion Low Level Rendering Interface” is a rendering API that aims to provide a graphics API agnostic approach to graphic

Rythe Interactive 25 Dec 6, 2022
Yocto/GL: Tiny C++ Libraries for Data-Driven Physically-based Graphics

Yocto/GL: Tiny C++ Libraries for Data-Oriented Physically-based Graphics Yocto/GL is a collection of small C++17 libraries for building physically-bas

Fabio Pellacini 2.4k Dec 27, 2022
Vulkan physically based raytracer including denoising

VulkanPBRT Vulkan physically based raytracer including denoising. The GPU raytracer is based on Vulkan only, as well as for the denoising only the Vul

null 18 Nov 25, 2022
🌞 A physically based monte carlo path tracer written in C++

Physically Based Path Tracer The below 3D model for the Head of Michelangelo's David bust was taken from this link. Other .obj files taken from The St

Aman Shenoy 45 Dec 27, 2022
A modern C++ physically based renderer

The Dakku Renderer Warning: This project is currently under developing and does not guarantee any consistency. About Dakku is a physically based rende

xehoth 6 Apr 15, 2022
A physically based shader for woven cloth

ThunderLoom A physically based shader for woven cloth This projects consits of three main parts: Irawan shading model At its core is an implementation

null 92 Oct 29, 2022
Open 3D Engine (O3DE) is an Apache 2.0-licensed multi-platform AAA Open 3D Engine

Open 3D Engine (O3DE) is an Apache 2.0-licensed multi-platform 3D engine that enables developers and content creators to build AAA games, cinema-quality 3D worlds, and high-fidelity simulations without any fees or commercial obligations.

O3DE 5.8k Jan 7, 2023
Monster Mash: New Sketch-Based Modeling and Animation Tool

Monster Mash is a new sketch-based modeling and animation tool that allows you to quickly sketch a character, inflate it into 3D, and promptly animate it. You can perform all interactions in the sketching plane. No 3D manipulation is required.

Google 1.2k Dec 27, 2022
Source Code for "Ray Tracing Gems: High-Quality and Real-Time Rendering with DXR and Other APIs" by Eric Haines and Tomas Akenine-Möller

Apress Source Code This repository accompanies Ray Tracing Gems: High-Quality and Real-Time Rendering with DXR and Other APIs by Eric Haines and Tomas

Apress 862 Dec 29, 2022
Vire is a C++ voxel rendering engine. It is written in C++14 and uses OpenGL for graphics.

Vire Vire is a C++ voxel rendering engine. It is written in C++14 and uses OpenGL for graphics. Downloads If you'd just like to just download and try,

null 33 Dec 22, 2022
After Effects Plug-in to write GLSL with a format of glslCanvas

glslCanvas4AE After Effects plug-in to run codes written at The Book of Shaders Editor. NOTE: This codes is working in progress and has many problems

Baku 麦 176 Dec 19, 2022
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.

bgfx - Cross-platform rendering library GitHub Discussions Discord Chat What is it? Cross-platform, graphics API agnostic, "Bring Your Own Engine/Fram

Бранимир Караџић 12.6k Jan 8, 2023
Pencil2D is an animation/drawing software for Windows, macOS, Linux, and FreeBSD.

Pencil2D is an animation/drawing software for Windows, macOS, Linux, and FreeBSD. It lets you create traditional hand-drawn animation (cartoon) using both bitmap and vector graphics. Pencil2D is free and open source.

Pencil2D 1.2k Jan 7, 2023