Arnold 2024 (aka Arnold 7.2 and then Arnold 7.2.1) are here:
Arnold 7.2.0 brings performance improvements, instancer support for light linking, control over the sky in physical_sky, and autotx improvements.
|
|
|
|
|
|
|
|
options.light_samples
to a non-zero value. When enabled, the light sample settings on individual lights are ignored and the overall, global contribution of all lights together is computed using options.light_samples
number of samples only. In this release, global light sampling does not apply to environment, directional lights, volumes, and GPU rendering. See the full documentation for more details. (ARNOLD-12860)
|
|
without Global Light Sampling: 2 mins, 41 secs | with Global Light Sampling: 44 secs |
|
For equal-quality renders of this scene, the new light sampling technique becomes progressively faster than per-light sampling as more lights are used. |
enable_sun
parameter, the physical_sky shader now also has an enable_sky parameter for disabling the sky. This allows, for instance, to have two suns. (ARNOLD-12584)
|
my_texture.jpg
with an sRGB color space and ACEScg rendering color space will produce: my_texture_sRGB_ACEScg.jpg.tx
. Textures that are not supposed to have colorspace changes get the tag raw
, such as my_texture_raw.jpg.tx
. (ARNOLD-11919)AI_MAX_THREADS
has been increased from 256 to 1024, which allows Arnold to now create up to 1024 threads for full CPU utilization on machines with up to 1024 cores. (ARNOLD-11015, ARNOLD-12967, ARNOLD-12997)alembic.objectpath
changed to an array : The Alembic procedural parameter objectpath
is now an ARRAY type, so multiple object paths can be given to a single Alembic procedural. (ARNOLD-12950)uv_transform
improvements : The uv_transform shader now has a wset
parameter, which is the name of a float user data value. A new matrix attribute uvw_matrix
returns new coordinates based on the uvw values. If the new attribute uvcoords
is linked to a shader, the values returned by that shader override the uv coordinates, at the cost of efficiency because this prevents Arnold from using the correct filtering. (ARNOLD-13049, ARNOLD-13156)set_transform
operator now has a matrix attribute, that can be animated. This allows set_transform
to apply animations and get correct motion blur. (ARNOLD-13068)autotx 1
added to the TX file. (ARNOLD-13025)ARNOLD_AUTO_GENERATE_TX
overrides the options parameter texture_auto_generate_tx
. This environment variable can be either never
or when_outdated
, which are equivalent to disabling or enabling the global autotx option. (ARNOLD-12875)layer
, mix
, and add
, are now supported in USD as well as the following shaders : triplanarprojection
, switch
, and constant
.RenderVar
parameter driver:parameters:aov:name is now used as the output aov layer name. usd#1408MaterialX displacement shaders: MaterialX displacement shaders are now interpreted correctly. usd#1366
Arnold shader metadata: We now register all Arnold shader metadata in the Sdr registry. Before only the Help and Role metadata were passed to the registry. usd#1390
AutoTX environment variable: HDARNOLD_auto_generate_tx
can be set to override the default AutoTX behaviour in the render delegate. usd#1353
Driver options in the RenderProduct primitive: It is now possible to set the driver options in the RenderProduct primitive using attribute names prefixed with the driver name in the Arnold namespace. For example arnold:driver_jpeg:quality
will set the quality when rendering with the jpeg driver. usd#1346
AiSetSystemHandlers()
and the environment variable ARNOLD_SYSTEM_HANDLER_MASK
have been added, allowing a user to mask Arnold built-in system handlers. The supported masks are listed in AtSystemHandlerMask
and currently allow all handlers to be either fully enabled or disabled. (ARNOLD-13014)AiTextureTxFileNeedsUpdate()
returns true if the TX file needs to be regenerated from its source texture. This can happen if the source texture was modified or if Arnold was updated with a newer OpenImageIO library. (ARNOLD-12994)AiTextureGetTxSourceFileName()
returns the name of the texture file used to generate a given TX file. (ARNOLD-13047)Load/Read, Write, and Resize image API changes: The Image API functions introduced in 7.1.4 now also take an optional AtParamValueMap
so that in the future we can add or change parameters to these functions without breaking the API. Currently there are no parameters these functions expect. Additionally, AiLoadImage()
has been deprecated and replaced with the more appropriately named AiReadImage()
; functionally they do the same thing. (ARNOLD-12937)
bool AiReadImage(const char* filename, const uint8_t format, AtImage& image, AtParamValueMap* params = nullptr);
bool AiWriteImage(const char* filename, const AtImage& image, AtParamValueMap* params = nullptr);
bool AiResizeImage(const AtImage& inImage, AtImage& outImage, AtParamValueMap* params = nullptr);
Specify connected inputs in AiMaterialxGetOslShaderCode: The new optional connected_input
parameter enables client code to specify input connection on a MaterialX node reference. This is needed for Geometry Property input connections like UV coordinates, to prevent them from being removed from the generated OSL code. (ARNOLD-12712)
New API to get the name of the TX file generated for a given texture: TX file names now include the color spaces and the extension of the original file, so we added AiTextureGetTxFileName to allow client code to get the exact name of the generated TX file. (ARNOLD-12970)
AtString AiTextureGetTxFileName(const char* filename, AtString texture_color_space, AtString render_color_space, const AtUniverse* universe);
This version breaks binary compatibility: Shaders, procedurals, and other plugins compiled against older versions of Arnold are not compatible with this version of Arnold and need to be updated and recompiled.
Autodesk Network Licensing version : Arnold 7.2 switches to ARNOL_2024
licensing. (ARNOLD-12833)
ARNOL_2024
licenses.AiLoadImage: AiLoadImage()
has been deprecated and replaced with the more appropriately named AiReadImage()
; functionally they do the same thing. (ARNOLD-12937)
inline AI_DEPRECATED bool AiLoadImage(const char* filename, const uint8_t format, AtImage& image)
{
return AiReadImage(filename, format, image, nullptr);
}
Removed deprecated functions: The following previously deprecated functions have now been removed. (ARNOLD-12938)
// replace with init() as there is no benefit to specifying an init bound
void AtBBox::init(float bound);
// replace with AtMutex
void AiCritSecInit(AtCritSec* cs);
void AiCritSecInitRecursive(AtCritSec* cs);
void AiCritSecClose(AtCritSec* cs);
void AiCritSecEnter(AtCritSec* cs);
void AiCritSecLeave(AtCritSec* cs);
// Replace with variants that specify the universe or render session
int AiDeviceSelect(AtDeviceType device_type, const AtArray* device_ids);
int AiDeviceAutoSelect();
AtDeviceType AiDeviceGetSelectedType();
const AtArray* AiDeviceGetSelectedIds(AtDeviceType device_type);
int AiASSWrite(const char* filename, int mask = AI_NODE_ALL, bool open_procs = false, bool binary = true);
int AiASSWriteWithMetadata(const char* filename, int mask = AI_NODE_ALL, bool open_procs = false, bool binary = true, const AtMetadataStore* mds = NULL);
int AiASSLoad(const char* filename, int mask = AI_NODE_ALL);
void AiMsgSetLogFileFlags(int flags);
void AiMsgSetConsoleFlags(int flags);
int AiMsgGetLogFileFlags();
int AiMsgGetConsoleFlags();
AtNode* AiNode (const AtString nentry_name, const AtString name = AtString(), const AtNode* parent = NULL);
AtNode* AiNodeLookUpByName (const AtString name, const AtNode* parent = NULL);
AtNode* AiNode (const char* nentry_name, const char* name = "", const AtNode* parent = NULL);
AtNode* AiNodeLookUpByName (const char* name, const AtNode* parent = NULL);
bool AiOpSetTarget(AtNode* node);
AtNode* AiOpGetTarget();
AtSessionMode AiGetSessionMode();
void AiRenderAddInteractiveOutput(uint32_t output_index);
bool AiRenderIsInteractiveOutput(uint32_t output_index);
bool AiRenderRemoveInteractiveOutput(uint32_t output_index);
void AiRenderRemoveAllInteractiveOutputs();
void AiRenderSetInteractiveOutput(uint32_t output_index);
uint32_t AiRenderGetInteractiveOutput();
bool AiRenderSetHintBool(AtString hint, bool value);
bool AiRenderSetHintInt(AtString hint, int32_t value);
bool AiRenderSetHintFlt(AtString hint, float value);
bool AiRenderSetHintStr(AtString hint, AtString value);
bool AiRenderSetHintArray(AtString hint, AtArray *value);
bool AiRenderGetHintBool(AtString hint, bool& value);
bool AiRenderGetHintInt(AtString hint, int32_t& value);
bool AiRenderGetHintFlt(AtString hint, float& value);
bool AiRenderGetHintStr(AtString hint, AtString& value);
bool AiRenderGetHintArray(AtString hint, const AtArray*& value);
AtRenderErrorCode AiRender(AtRenderMode mode = AI_RENDER_MODE_CAMERA);
AtRenderErrorCode AiRenderBegin(AtRenderMode mode = AI_RENDER_MODE_CAMERA, AtRenderUpdateCallback update_callback = NULL, void* callback_private_data = NULL);
AtRenderErrorCode AiRenderEnd();
AtRenderStatus AiRenderGetStatus();
void AiRenderInterrupt(AtBlockingCall blocking = AI_NON_BLOCKING);
void AiRenderAbort(AtBlockingCall blocking = AI_NON_BLOCKING);
void AiRenderResume();
void AiRenderRestart();
bool AiRendering();
bool AiUniverseIsActive();
bool AiUniverseCacheFlush(int cache_flags);
AtNode* AiUniverseGetOptions();
AtNode* AiUniverseGetCamera();
AtBBox AiUniverseGetSceneBounds();
AtNodeIterator* AiUniverseGetNodeIterator(unsigned int node_mask);
AtAOVIterator* AiUniverseGetAOVIterator();
Removed min_optix_denoiser_sample option: Removed the deprecated and redundant min_optix_denoiser_sample
option. (ARNOLD-11714)
Removed non-functioning kick -of
flag: kick -of
was removed because it was never able to actually change the output file type. The one thing it could properly do was to output the output file types Arnold can write to, however that functionality can already be reproduced through kick -nodes | grep driver_
. (ARNOLD-12857)
Better autobump visibility masking: Camera ray visibility must now be explicitly set (before, camera ray visibility was enabled regardless of the autobump_visibility setting). Existing scenes that use autobump_visibility may need to enable camera ray visibility. (ARNOLD-8863)
License Manager log folder changed on Linux: License Manager application and diagnostic logs are now stored under the ~/.autodesk folder on Linux. (ARNOLD-12993)
kick -nostdin
replaced with -stdin
: kick no longer automatically reads from stdin, because in the past, waiting for input from stdin caused problems with some tools. If you want kick to read from stdin, use the new -stdin flag. (ARNOLD-6908)
AiTextureAutoTxFlags
not resolving auto color spacetexture_auto_tx_path
even when autotx generation is disabledAiMaterialxGetOslShaderCode
fails on ND_separate3_color3
AiMaterialxGetOslShaderCode
fails on ND_switch_color3
fStop
and aperture_size
depth_tolerance
are ignoredappend
parameter (for checkpointing renders) is not translatedThank you, Stephen.
Hi @Stephen.Blair,
I just ran the "Colorspace included in TX filename" around the block for a test drive and found that the file names it creates have spaces in them (I'm on linux). I expected to find underscores not spaces like the example above 'my_texture_sRGB_ACEScg.jpg.tx'. Instead I'm getting this: 'my_texture_Utility - sRGB - Texture_ACEScg.exr.tx' or 'my_texture_ACES - ACEScg_ACEScg.exr.tx'
Is this expected behavior? If so, can I petition for the removal of spaces in the file names?
Can't find what you're looking for? Ask the community or share your knowledge.