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.