By default, RenderMan attempts to flatten instances to improve performance and allow for more options when applying variation. However, there are times when this might not be desired. Large scenes, like a forest scene, may have worse performance when flattened especially when it comes to memory usage. Flattened instances multiply when nested, i.e. 1,000 instances of 1,000 instances becomes 1,000,000 instances. Nested instances add, i.e. 1,000 instances of 1,000 instances is 2,000 instances. As such we have an option to manually disable this behavior by choosing Nested Instancing exposed in the bridge products.
Attributes like trace sets and visibility cannot be altered when using Nested instances. This is the current trade-off for the improved memory usagethat are not supported when nested are:
- Lighting Subsets and Exclude (light linking)
- Lightfilter Subsets
- Visibility Flags (camera, indirect, transmission visibility, etc)
Note that they will inherit the properties of the parent instance, procedural, or archive.
There is an internal limit on nested instances, after 4 levels/parents, after this limit we automatically flatten the hierarchy.
Even though the driving factor behind instancing is to minimize the variability between copies in order to maximize reuse and save memory, it is often still very desirable to be able to shade each variant differently. RenderMan supports shading variation primarily by the following methods: