Milestone 3.3

Enhancements

API additions

Example:

node_initialize
{
   AtCustomData *data = (AtCustomData*)AiMalloc(sizeof(AtCustomData));
   node->local_data = (AtVoid*)data;
}

node_update
{
   AtCustomData *data = (AtCustomData*)node->local_data;

   // Evaluate data based on current scene state.
   // This is called at the begining of each rendered frame
   // (such as each "pass" of an interactive session with
   // progressive refinement).
}

node_destroy
{
   AiFree(node->local_data);
}

Example:

noise
{
   name noisesource
}

flat
{
   name shader1
   color.r noisesource
}

flat
{
   name shader2
   color.b noisesource
   color.r noisesource
}

At the same time, the AiNodeLink() and AiNodeGetLink() API functions have support for component specification in the parameter name:

AiNodeLink(shader1, "color.r", noisesource);

For now, only target parameters support separate linking of shader components. In the future we will also add support for specifying components in the source data (e.g. linking the red component of a node's output to the green component of a node's input parameter).

Incompatible changes

Bug fixes

  
#1854-INF values in alpha channel are not properly filtered on the beauty
#1856possible deadlock with SSS and instancing
#1864AiNodeReset() should remove all shader links
#1858light sample cache can allocate the wrong number of samples in SSS