appleseed 2.0.0-beta
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 theas_subsurface()
closure; - For the Glass BSDF surface model: via a new
as_randomwalk_glass()
closure.
- For the Lambertian BTDF surface model: via a new
(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
.
(Model by Brice Laville, concept by Tom Robinson, render by Esteban Tovagliari - RenderMan "Rolling Teapot" Art Challenge.)
(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 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:
False colors, Jet color map:
False colors, Magma color map:
False colors, Plasma color map:
False colors, Viridis color map:
In addition, the Color Map stage can render relative luminance isolines, that is, lines of equal relative luminance in the render:
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:
Post-processed renders can be saved to disk:
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:
(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:
Here is another equal-time comparison:
(Cookies & Milk scene by Harsh Agrawal, render by Kevin Masson.)
Close-up:
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:
Roughness Clamping enabled:
Roughness Clamping disabled:
Close-ups:
⭐️ 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:
Here is the result of rendering the Wooden Staircase scene using the Albedo diagnostic mode:
(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:
⭐️ New: Shaderball Version 5
We significantly redesigned and cleaned up our shaderball, now in 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...:
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:
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 toas_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 thealbedo
mode in thediagnostic_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
anddIdy
) 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.