I’m currently thinking of a possibility to write a shader generator in Python. The current one is IMO fairly limited (cares only about the object itself e.g. no reflections) and it doesn’t looks like someone tries to extend it.

I asked myself some basic question. E.g. should I write a new PointLight class that includes new parameters (like another falloff function, or a cast shadow boolean) or should I try to stick with the existing classes. If I try to reuse the classes I see some problems I currently don’t know how to solve. A PointLight e.g. has some methods like setAttenuation. The shader generator should be clever enough to setup a shader with the attenuation as input. But who updates this input if the user updates the PointLight instance? I can traverse each (previously registered) PointLight in each and every frame, but that would be awfull slow I guess.

To repeat myself: I don’t care about the Cg stuff, at least for the Ambient-, Point-, Directional-Light stuff that’s easy. I currently have no good idea how the framework should looks like.

Just a small note: a lot of the stuff currently in the shader generator is also in python, such as the FilterManager and the CommonFilters. It might also be an idea to extend those classes with the features you want them to have, or create a similar setup like those classes do.

AFAIK this shaders are only for post processes. But anyway there is a note in the header about a possible better “framework”.