Because the system requires the programmer to explicitly and separately state
that an opaque instance is visible in the scene, and that an opaque instance
is casting a shadow, it becomes possible to effectively specify different
shadow geometry for a given instance. As an example,
a very complex and high resolution mesh may still have the silhouette of a simple
sphere, and therefore the user can separately add the high resolution mesh to
a scene as a visible instance, but add a low resolution version of the mesh
as an invisible shadow-casting instance with the same
transform. As a rather extreme
example, assuming a high resolution mesh
m0
added to the scene as both a visible instance and a shadow caster: