Page tree


Here is the order in which various RixShadingPlugin API methods are called.

When a method is called for all shading plugins, we will use the RixShadingPlugin base class method.

OrderNameCommentGranularityAccess to optionsAccess to RixIntegratorEnvironment
Once per rendering session.


When the first instance of a shading plugin is created.For each plugin.Deprecated.No.
Before the first render and between renders.



When the first instance of a shading plugin is created, after the plugin's Init() has been called.

For each shading plugin instance.Deprecated.No.
RixLightFactory::CreateLight()At least once for each light plugin instance (*).
#3RixBxdf::GetInstanceHints()Shortly after RixBxdf::CreateInstanceData() is called.
For each render.
For each RixProjection.Yes.No.
RixIntegrator::RenderBegin()Responsible for filling the RixIntegratorEnvironment structure.For each RixIntegrator.Yes.Writing.
#5RixShadingPlugin::Synchronize()With the synchronization message k_RenderBegin.For each plugin.Yes.Yes.
#6RixShadingPlugin::SynchronizeInstanceData()Only if CreateInstanceData() returned a non-zero InstanceData::synchronizeHints.For each plugin instance.Yes.Yes.
Once per rendering session.
#7RixShadingPlugin::Finalize()Before unloading the shading plugins.For each plugin.Deprecated.No.

(*) RixLightFactory::CreateInstanceData() will be called once for each light plugin instance. RixLightFactory::CreateLight() will be called once per light plugin instance, per instance of the corresponding light. This is a behavior specific to the RixLight API.