bluntman, great stuff, that's clear but i would like to have a closer look on your implementation as it looks very well prepared ( PM sent )
My effects manager is a class that takes care of the whole 'post processing' stuff and it is finally complete. The name can be confusing, but it's working v.well. Effects can be managed within scripts, and the only thing left now is Materials management. The approach i was thinking about is to have a global engine MaterialsManager class holding a list of loaded materials within.
When an object is to be loaded - it calls materialsmanager to load/parse a material file and stores a pointer to struct held in materialsmanager list.
Now when render kicks in, model calls:
// m_Model->material - pointer to a materialsmanager list entry