This is the first public experimental build of 2021.1. The plan is to wrap up the feature development for 2021.1 in the next couple of weeks and then stabilize it soon after. This is the first CUDA based version without macOS support as it has been very hard to maintain and requires macOS 10.13 or older. We are planning to release an Octane X version of 2021.1, but it will be a few weeks behind the Windows and Linux releases.
As with all experimental builds, we advise to not to use this release for production purposes. We are trying to, but we can't guarantee that scenes saved with this version will be compatible in future releases.
This version supports NVidia Ampere GPUs and as a consequence we had to drop support for old Kepler cards with a compute model < 3.5. And please make sure to use a NVIDIA Studio driver with version at least 456.38 on Windows or 455.23 on Linux.
As we made some changes to the authentication system, dongles don't work with this version and will have to be updated with a new license installer tool. We are planning to have that sorted out with version 2021.1 XB2.

What's new in 2021.1
Geometry
- Improved support for RTX hardware ray tracing including accelerated instance motion blur on Ampere GPUs
- UV surface tangents are now interpolated if the material has anisotropy set to a value != 0, to avoid visible facets in stretched highlights
- A node to create a surface SDF from a mesh node which can then be combined with other SDFs using the Vectron operators
- Improved Scatter on surface to provide more control for placing scattered objects
- Improved rendering of overlapping volumes and increased the number of volumes allowed to overlap in one location to 16
- Added support for light-linking of volumes
- Improved rendering of transparent surfaces inside volumes
- Added support for user instance IDs to volume rendering
- Added support for volumes in Cryptomatte AOVs
- Clipping material
- Added a new energy preserving GGX BRDF model
- Improved Hair material
- Improved AI Light rendering
- New texture nodes
- New projection nodes
- Added the ability to specify a color space for textures
- Added wide-gamut support for textures
- Added the ability to specify the white point for spectral colors
- More accurate color processing across the board
- Switched to OCIO v2
- Refactored render AOVs
- Added custom AOVs
- Added ability to write object layer masks and material masks to custom AOVs
- Added capture texture to write textures into custom AOVs
- Added global texture AOVs
- A node to mix light passes
- New output AOV nodes providing additional operations
Improved RTX support
RTX Hardware Motion Blur (1.5x faster on Ampere)
NVIDIA's Ampere architecture introduces a new generation of RT cores with support for hardware acceleration of animated mesh instances as well as triangle deformations to produce motion blur effects. This version of Octane introduces support for leveraging the new hardware with animated triangle mesh instances.
Before this version, any mesh with at least one animated instance would be handled via software. Instead, now Octane can deal with both static and animated instances in one go and using RTX hardware when running on an Ampere device, this comes especially useful if the scene would also contain static instances of other meshes, which before would require some extra work on the GPU. Removing this overhead produces performance improvements of ~1.5x in production scenes.

We also plan to add support for leveraging RTX hardware with triangle deformations in a future build.
Comprehensive RTX shader support
We are now able to evaluate all our shaders that require some form of ray tracing using RTX. This comes after Octane 2020.2 added RTX support for evaluating our dirt shader in a similar way.
This enables geometry which used to be handled via a software fallback (this happened when one or more instances of a triangle mesh would make use of the accurate rounded edges shader) to now fully leverage RT cores in both Turing and Ampere devices, which can yield significant performance boosts in a number of scenes.

(Rungholt scene downloaded from Morgan McGuire's Computer Graphics Archive, Creative Commons CC BY 3.0)
The upcoming curvature shader is planned to leverage RTX in a similar way.
Infinite plane primitives
With this version we start our ongoing work to introduce support for ray tracing of non-triangle primitives from within the RTX pipeline itself.
We noticed that a typical scenario was finding a single infinite plane which would coexist with exclusively triangle primitives in a scene. This used to require some extra overhead on the GPU due to dealing with infinite planes outside the RTX pipeline which is now gone.
We plan to add RTX support for all remaining primitive types in upcoming versions.
Other optimizations
As part of our ongoing collaboration with NVIDIA, ray tracing performance with RTX has also been improved in most production scenes, with overall render results 1-5% faster.
Please note this version is not final and it does not fully represent the final performance of the production build.
Interpolated surface tangents
Octane now interpolates surface tangent vectors between vertices when a mesh uses anisotropic materials. This allows it to render smoother anisotropic highlights, as demonstrated in the following images with horizontal anisotropy.

SDF from mesh
The Mesh volume SDF node will load a mesh and convert it to a signed distance field. This way you can combine meshes with other Vectron primitives like union or smooth union.
The mesh must enclose a volume without holes. If a surface has a hole, both sides of it may be considered outside and it will not show up in the converted volume.

Improved Scatter on surface
The "Scatter on surface" node has received a number of improvements, including an increase in the maximum number of instances to ~16 million.
New distribution methods have been added to scatter on edges. Furthermore, scattering is now also supported for hair and particle primitives.
A new option, "Poisson disk sampling", ensures that instances scattered on surfaces by area or relative density are not placed too close together.

Volume rendering
Light-linking for volumes
The light pass mask works on volumes, so you can choose which lights will scatter in a volume.

Better overlapping volumes
You can increase the maximal amount of overlapping volumes to be ray marched to 16.

More accurate handling of volume boundaries
We have fixed a few sources of bias on boundaries between volumes, or where transparent objects intersect volumes. The most common artefacts are too much brightness where light from a strong light source is scattered, or a volume appearing somewhat thicker than it is. This effect got stronger with higher step length, leading to shifts in brightness when tuning step lengths.

Some volumes will change appearance, mainly those where the step length is large compared to the volume.
User instance IDs for volumes
Textures which rely on the user instance IDs, like instance color, can be used on volumes.

Volumes in Cryptomatte AOVs
The way volumes are handled by cryptomatte passes has changed. Octane 2020.2 will add all occlusion due to volume scattering to a single matte called “Volume occlusion”. In 2021 volumes will be separated into mattes similarly to surfaces. For passes relying on the material node name, the name of the medium node will be used.
Legacy mode
Legacy mode ("emulate old volume behavior") has been removed.
Clipping material
A clipping material allows trimming geometry within a volume in the space. This opens a number of new possibilities since it allows effectively modifying the original geometry interactively.
The clipping material makes use of the geometry it is attached to and uses this shape to cut out from another geometry that intersects with it. The clipping material by default has a priority of 100 and would clip every geometry with material of priority less than 100.

Energy preserving GGX BRDF
The energy preserving GGX addresses the energy loss of the general microfacet model, specifically the GGX BRDF model which was introduced in Octane 3.7. Traditionally, microfacet models can lose a significant amount of energy with increasing roughness, which can introduce unexpected darkening to the material surface as roughness increases. The new energy preserving GGX is aimed at overcoming this deficit and is available across different material nodes and material layer nodes in Octane involving the specular lobe, including:
Material nodes:
- Glossy material
- Metallic material
- Specular material
- Universal material
- Metallic layer
- Specular layer

Below we show images comparing the metallic materials of the old GGX model (top row) versus the energy preserving GGX model (bottom row) with increasing roughness from left to right:

Improved hair material
In Octane 2021.1, we have extended our Hair BSDF model to include some new parameters to enable artists to model an even wider range of appearance for hair/fur:
- Added Zinke’s diffuse lobe to hair material
- Added random roughness to hair material

The above image shows an increasing diffuse contribution of a dark grey diffuse colored lobe. As the diffuse contribution increases, the original specular contribution that was in the previous versions of the hair material would decrease accordingly, until diffuse contribution reaches 100% and specular contribution reaches 0%. Note that hair is generally modelled with a purely specular model, thus it is recommended to not use the Zinke’s diffuse model when rendering hair in general.

The random roughness parameter introduces some randomness to the fixed longitudinal/azimuthal roughness of the hair fiber. As the image above shows, with an increase of random roughness from left to right, the originally rough hair would have an increased variation in roughness. Since the variation ranges from -1 to 1, it is possible for hair with 1.0 roughness to get randomly reduced, thus resulting in less spread in the specular lobe.
Improved AI light
When AI light was first introduced it provided an improvement when sampling light in complex scenes containing both large numbers of emitters or when emitters are partially occluded.
In Octane 2021.1 we introduced improvements to our algorithm which aim to reduce shading variance even more with mesh emitters, allowing to reduce noise at low sample count compared to both non-AI light sampling and previous versions of AI-light.
Below are equal-sample comparisons of renders using the old an new methods:

(Amazon Lumberyard Bistro, Open Research Content Archive (ORCA), Creative Commons CC-BY 4.0)
New texture nodes
We have added a range of texture nodes that can be used to convert nodes of other types to textures, give access to data from the rendering engine, and perform mathematical operations on texture data:
- "Binary math operation" applies math operations on two texture inputs (see below)
- "Capture to custom AOV", which allows you to capture the texture into a custom AOV (see "Custom AOVs" below)
- "Float to greyscale" to allow feeding a float input into a texture input
- "Float3 to color" interprets a 3 dimensional value input as an RGB texture
- "Floats to color" interprets 3 float values as an RGB texture
- "Gradient generator", which generates linear, radial, angular, polygonal and spiral gradients
- "Normal", which converts the normal into an RGB texture
- "Position", which converts the shading position into an RGB texture
- "Random map", which feeds an input texture into a noise function and outputs the result as a greyscale texture
- "Range", which maps an input range to an output range using different interpolation functions
- "Ray direction", which converts the direction of the incoming ray into an RGB texture
- "Read VDB", which allows you to convert a grid of a VDB to a greyscale texture (see below)
- "Relative distance", which converts the distance to the origin in a specified reference transformation into a greyscale texture
- "Sample position", which takes the sample position and converts it into an RGB color with R and G in the range [-1, +1]
- "Surface tangent dPdu", which converts the surface tangent along the U axis (in world space) into an RGB texture
- "Surface tangent dPdv", which converts the surface tangent along the V axis (in world space) into an RGB texture
- "Unary math operation" applies math operations on one texture input (see below)
- "UV coordinate", which converts the UV coordinate to an RGB texture
- "Z depth", which converts the Z depth in camera space to a greyscale texture

This example project renders the gradients below, which were all generated with the new "Gradient generator" texture: gradient-generator.orbx

"Read VDB" can be connected to a VDB node, this allows reading the VDB data and using it as an input for another texture. The mapping can be controlled using a projection similar to other volumetric textures:


The "W coordinate" texture has been improved to support translation, scaling, inversion and several different border modes.
New projection nodes
We have also added several new projection nodes:
- "Color to UVW", which takes the color of an input texture and interprets it as the UVW coordinate of another texture
- "Distorted mesh UV", which does mesh UV mapping with additional distortions from texture inputs
- "MatCap", which allows you to map MatCap textures onto surfaces
- "Sample pos. to UV", which converts the screen space position of the current sample to the UVW coordinate - this is not the same as a screen space projection, which maps any position in world space into screen space
Improved color processing
Image textures can now have color spaces assigned - you can choose any of Octane's built-in color spaces or any OCIO color space. If you have ACES textures, you can use ACES2065-1 or ACEScg textures natively or apply any ACES IDT through OCIO. This means Octane can now be used in an end-to-end ACES workflow.

Octane now supports a much wider gamut for RGB colors, and generates smoother (more realistic) spectra without shifts in hue/saturation. Together with wider color spaces being available for textures this allows Octane to support textures containing practically any physically possible color. The smoother spectra may behave differently in the scene, so this new color pipeline can be disabled in kernel settings.

Spectral colors produced by daylight models, blackbody emitters and spectral OSL textures are now interpreted relative to a standard D65 daylight white point. This corrects a blue cast to spectral colors in previous versions of Octane, and can be disabled by selecting the legacy white light spectrum in kernel settings. This image shows the sky as generated by the Hosek-Wilkie daylight model.

Octane 2021.1 includes many other color processing accuracy improvements across the board, including improvements to desaturation and white point adaptation. It also incorporates OCIO v2, which gives more accuracy and means v2 OCIO config files are now supported.
Refactored render AOVs
The render passes node was becoming way too big and since it is static, it is hard to add more AOVs or even per-AOV options without making it explode in size. So we replaced it with a render AOV group node, to which you can add or connect nodes for those render AOVs you are actually interested in. Below is an example showing that some of the render AOV nodes have their own additional parameters and that you can create nested render AOV groups that can be enabled/disabled as a whole:

To avoid the list of render AOV nodes becoming too big, we combined several classes of render AOVs into one node each. For those you choose the actual render AOV via an enum pin. We do this for the following render AOVs:
- Cryptomatte AOVs
- Custom AOVs
- Global texture AOVs
- Light AOVs
- Light direct AOVs
- Light indirect AOVs
- If you add the same render AOV multiple times, only the first enabled render AOV node for this AOV will be taken into account.
- There is a maximum number of custom and global texture AOVs. At the moment the number is 10, but it can be increased if there is need for it.
- The global render AOV settings at the top of a render AOV group are only taken into account if it's directly connected with the render target node and ignored for any nested render AOV group nodes.
Custom AOVs are just an RGB container that can be used to capture certain aspects of your scene via different methods. You can write specific object layer or material masks into custom AOVs and choose whether the mask should be written into all channels or only into the red, green or blue channel:

We also added the possibility to capture textures via capture to custom AOV texture nodes. The idea behind those is to write the input texture to the specified custom AOV and pass the input texture value through to the destination of the capture texture node. You can also specify an "override" texture, which will be written to the customn AOV instead. The input texture is still what is passed through to the destination. This is useful if you either want to do some additional processing of the input texture before it's written to the custom AOV or to just record some other texture, whenever the input texture gets evaluated.

The custom AOVs themselves have an option to control whether it only records hits of camera/primary rays or if it should also record hits after specular reflections and/or refractions. This scene demonstrates various parts of the custom AOVs: custom-aovs.orbx
You can see the main AOV and custom AOVs 1, 2 and 4 below, rendered with different visibility options. The object layers for the plane and the two objects are recorded separately in the red, green and blue channels of custom AOV 1. A mask for the glass material is recorded in the RGB channels of custom AOV 2. And custom AOV 4 shows the captured opacity texture of the diffuse layer of the inner cylinder.




Global texture AOVs
Global texture AOVs allow you to apply a texture to the whole scene including or excluding the environment. They are rendered as info AOVs, which means that the info AOV settings are applied to them as well. You can overwrite the alpha channel with your own texture, or use the default behavior which is equal to the alpha channel of the other info AOVs.
This project contains all examples below: global-tex-aovs.orbx
Below you can see a quick example of a "debug" texture to quickly asses your UV maps, normals and back faces (indicated by a red tint) and where you can see the effect of the option "Include environment":


Here we use the global texture AOV to calculate some simple fog/haze that is then comped on top of the main AOV:

And this example uses a global texture to generate a gradient (using the new gradient generator) over the whole frame which is then used to blend between some wireframe "look" and the main AOV. The key here is to use the new "Sample pos. to UVW" projection in the gradient texture, which maps the sample position from screen space to UV space:

New output AOVs
- The "Light mixing" node is a utility node to conveniently edit the contributions of light AOVs. Please make sure that all the required light AOVs are enabled in the render AOV group for light mixer node to work as expected.
- The "Color correction" node can adjust the color of an output AOV - similar to the color correction texture.
- The "Clamp" node clamps an input value between a minimum and a maximum.
- The "Map range" node linearly maps an input range to an output range.

Downloads
Downloads for Enterprise subscription users:
OctaneRender Enterprise 2021.1 XB1 Standalone for Windows (installer)
OctaneRender Enterprise 2021.1 XB1 Standalone for Windows (ZIP archive)
OctaneRender Enterprise 2021.1 XB1 Standalone for Linux
OctaneRender Enterprise 2021.1 XB1 Node Windows (installer)
OctaneRender Enterprise 2021.1 XB1 Node for Windows (ZIP archive)
OctaneRender Enterprise 2021.1 XB1 Node for Linux
Downloads for Studio subscription users:
OctaneRender Studio 2021.1 XB1 Standalone for Windows (installer)
OctaneRender Studio 2021.1 XB1 Standalone for Windows (ZIP archive)
OctaneRender Studio 2021.1 XB1 Standalone for Linux
Happy rendering
Your OTOY team