Skip to content

appleseed 2.0.0-beta

Compare
Choose a tag to compare
@dictoon dictoon released this 02 Nov 14:05
· 806 commits to master since this release

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: https://zenodo.org/record/3384658

Contributors

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.

Changelog

⛏ 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 mitsuba2appleseed.py 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 appleseed.studio without having to add them as post-processing stages and re-rendering the scene:

Applying false colors to the Cornell Box from appleseed.studio

Post-processed renders can be saved to disk:

Saving post-processed render from appleseed.studio

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.)

Close-up:

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.)

Close-up:

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

Close-ups:

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 appleseed.studio, 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 mitsuba2appleseed.py 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 appleseed.studio. 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

appleseed

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, appleseed.studio 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.

appleseed.studio

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.

appleseed.cli

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:

    BlenderProgressiveTileCallback
    IPostProcessingStageFactory
    IVolumeFactory
    MurmurHash
    PostProcessingStage
    PostProcessingStageContainer
    PostProcessingStageFactoryRegistrar
    ProjectPoints
    ShaderCompiler
    ShaderGroupContainer
    Vector2u
    Vector3u
    Vector4u
    Volume
    VolumeContainer
    VolumeFactorRegistrar
    
  • Added the following methods to Python bindings:

    AOV.get_channel_count()
    AOV.get_channel_names()
    AOV.get_image()
    AOV.has_color_data()
    Assembly.bssrdfs()
    Assembly.clear()
    Assembly.volumes()
    AssemblyInstance.set_transform_sequence()
    BaseGroup.clear()
    Camera.set_transform_sequence()
    EnvironmentEDF.set_transform_sequence()
    Frame.get_input_metadata()
    Frame.post_processing_stages()
    MeshObject.reserve_vertex_tangents()
    MeshObject.push_vertex_tangent()
    MeshObject.get_vertex_tangent_count()
    MeshObject.get_vertex_tangent()
    ShaderQueryWrapper.open_bytecode()
    Tile.get_storage()
    TransformSequence.optimize()
    
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):

    Frame.aov_images()
    Tile.blender_tile_data()
    Tile.copy_data_to()
    

OSL Shaders

New Features and Improvements
  • Added shaders:

    as_closure2surface
    as_manifold2D
    as_sbs_pbrmaterial
    as_texture2surface
    
  • 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):

    as_maya_closure2Surface
    as_maya_texture2Surface
    
  • Removed all Gaffer-specific shaders.

Miscellaneous

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

Known Issues

Linux

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

./bin/appleseed.studio: symbol lookup error: /usr/lib/libfontconfig.so.1: 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/libfreetype.so /usr/lib64/libz.so"  ./appleseed.studio

Another solution is simply to delete libfreetype.so.6 and libz.so.1 from appleseed's lib/ directory.