I have most of the effects system in place, but there are still some slight things which need to be reconciled with the rest of the framework. For instance, let’s say the scene graph contains a subtree onto which shadow mapping must be applied. For a directional or a spotlight source, the shadow map must be rendered in a separate pass, which may or may not contain the same geometry as that visible within the frustum of the main camera. Therefore, a separate culling pass is required with the frustum adjusted to match the position and direction of the light source. With a point source model, light is emitted equally in all directions; this requires the use of more shadow maps and thus more culling passes. The situation is pretty much the same where dynamic environment maps and mirrors are concerned, so I thought of extending the Effect interface to allow access to a set of cameras; these cameras are queried during the culling stage by the active culler and the potential visibility sets for the respective frustums are generated and stored. The culling need not occur every frame, of course, and the interface will provide a means to specify a caching strategy and the expiration of a visibility set. This is also a means to avoid multiple culling calls within recursive effects during the same frame.