On 28/11/06, Ivan Gyurdiev ivg231@gmail.com wrote:
http://oss.sgi.com/projects/ogl-sample/registry/ARB/vertex_shader.txt
Interactions with ARB_vertex_program and ARB_fragment_program
Mixing a high level ARB_vertex_shader shader with a low level ARB_fragment_program shader is allowed. However, a high level ARB_vertex_shader shader and a low level ARB_vertex_program shader cannot be active at the same time.
http://oss.sgi.com/projects/ogl-sample/registry/ARB/fragment_shader.txt:
Interactions with ARB_vertex_program and ARB_fragment_program
Mixing a high level ARB_fragment_shader shader with a low level ARB_vertex_program shader is allowed. However, a high level ARB_fragment_shader shader and a low level ARB_fragment_program shader cannot be active at the same time.
"Allowed" is not quite the same as "useful" though.
Another issue that comes up when trying to mix eg a software vertex shader with a hardware pixel shader is that you can't actually pass varyings from the software vertex shader to the hardware pixel shader.
allowing the mixing of types probably leads to a more complete feature set in the end.
Except that there are no actual meaningful combinations to make.
Well, at least you can turn the pixel and vertex shaders off individually, rather than turn off shaders completely (using the NONE backend). I think up until a few releases ago pixel shaders were off by default.
Note, when you read the patch, that the "none" backend is only used when *both* vertex and pixel shaders are disabled. Turning of individual shaders is completely separate from the backend being used. Currently the ps_selected / vs_selected flags are used for that, but the idea is to turn that into a flag specific for turning on/off the respective shader type.