On 28/11/06, Ivan Gyurdiev ivg231@gmail.com wrote:
- Software shaders currently simply don't work. If we do get software
shaders it'll likely be vertex only.
So, we should allow hardware pixel shaders, and software vertex shaders.
I could see someone using software vertex shaders if he's got no hardware support for shaders, although it's questionable if such a card would be able to effectively run an application that requires them anyway.
Software shaders are chosen if (1) there's no support for hardware, (2) the user elected software, or (3) the application elected software, and (3) is required as part of the DirectX spec.
Software shaders, sure. That doesn't mean you have to be able to mix them with hardware shaders. 1 doesn't apply if there's support for hardware pixel shaders, 2 is silly if there's support for hardware pixel shaders, and 3 selects software shaders for *both* vertex and pixel shaders.
Mesa is possibly a better option there. Either way, you're not going to be using software vertex shaders together with HW pixel shaders, that's just silly
Well, I was able to identify at least one bug that way [ improper initialization of vertex shader output register ].
Well, that's nice. However, I don't think that's enough of a reason to be able to mix backends for vs & ps.
So imo it just adds complexity to the code without giving much of a benefit.
You're taking two logically separate concepts, and merging them together for no good reason at all. I'm just not sure what the purpose is - at the very least you'd be able to turn off pixel and vertex separately as a user override. Once geometry shaders come into play, I think they should get their own flag too.
Vertex shaders and pixel shaders are not separate concepts at all. Not in GLSL, not in D3D, and even less so in D3D10. Either way, I still don't see the benefit of mixing different backends.