DarkAngel wrote:
Passes can still be useful for simplifying the "combinations of shaders" problem.
That is a good point. However, breaking up an effect into different passes will usually be slower (additional vertex processing and bandwidth for each pass, maybe re-sampling of a few textures, etc.). Horde's übershader system makes handling the permutations relatively convenient for the programmer. A good example for reducing shader complexity by performing orthogonal steps are deferred techniques. These are handled very well by Horde's pipeline system.
DarkAngel wrote:
As you suggest, this might be possible to implement using pipelines (and also more efficient). I haven't experimented with this enough to know if pipelines are enough, or if passes would be required within an FX file...
In general the pipeline system should allow to do most common effects. However, there may be some very special effects that can be realized in a cleaner way with the local FX passes. Well, if it turns out that FX passes are convenient, nothing stops us from adding them.