Originally posted by DIMA
Okay guys, let's get all the facts straight:
1. R300's branching in Vertex Shaders is based on constants, thus, it's static, as definted by the Vertex Shaders 2.0 specifications and also mentioned in the whitepapers on ATI's site.
2. NV30's branching in Vertex Shaders is dynamic, which goes beyond the Vertex Shaders 2.0 specifications and more suits the Vertex Shaders 3.0 specifications but not fully complies to it.
3. R300 doesn't offer any sort of branching in Pixel Shaders.
4. NV30 doesn't offer any sort of "real" branching in Pixel Shaders, although what it does offer are "condition codes", which are a form of "branching" that executes all branches choosing the right one in the end. Many things can be accomplished with branching can also be accomplished with condition codes.
That's my understanding for VS too.
I know about condition codes, but it seems vastly inefficient. If programmers begin to use that, get ready for some REALLY fill rate bound games! That's AFAIK, anyway.