Right now my renderer is kind of hardcoded with a special path to handle planar reflective materials (those that I generate a reflection map for by rendering the scene from a mirrored camera). Right now this is only used for water surfaces.
I want to generalize my renderer so it doesn't have this special path: it just inputs a list of render items (basically, mesh + material). My question is where should the reflective texture go? Should it be part of the material: like PondWaterMaterial owns the reflection map? Then I can't share the same material among different water surfaces unless they are on the same plane (which might not be a big deal). Should the reflection map somehow be coupled with the water mesh surface?
Also, if I do have a generic rendering system that just inputs a list of "render items", do I just perform a simple query to find out which render items require a reflection map to be generated by the engine?