ATI has been selling the "Shader Model 3.0 Done Right" slogan along with the launch of their Radeon X1000 line of video cards. (Which we still have not seen for sale without delayed delivery.) ATI proclaims that they have done Shader Model 3.0 "right" by improving dynamic branching performance and turning batches of pixels into threads. However, with some recent news that has come to light we wonder if this slogan is really correct.
According to The Tech Report, the Radeon X1000 series lack a Vertex Shader 3.0 feature called "Vertex Texture Fetching." Vertex Texture Fetching is useful when you need a vertex shader to read from texture memory. There are certain 3D effects which can benefit from this ability such as true dynamic displacement mapping. Now, this 3D effect itself may not be currently used in current games, and in fact may not even be used until the next generation of DX10 video cards. However, the case here is that ATI is claiming they have done Shader Model 3.0 "right," yet they are missing an official Shader Model 3.0 feature. This all seems a bit misleading. How can you claim to do Shader Model 3.0 right and then leave out a feature of the specification? The GeForce 6 and 7 series from NVIDIA supports this feature. So where does that leave ATI? Have they really done Shader Model 3.0 right or not?
It does appear that a workaround is possible. However this does put more work on the shoulders of the game content developer instead of exploiting an easy Shader Model 3.0 feature in their code. Isn’t the point of standards and Shader Model 3.0 to allow game content developers and programmers a standard API among graphics cards to make their job a little easier?
This may not be such a big deal if this particular 3D feature is never exploited until the next generation of video cards. But that isn’t the point. The point here is that ATI has claimed to do Shader Model 3.0 "right," and from what we have seen today, maybe it isn't so "right" at all. “Shader Model 3 The ATI Way?”
Hardocp.com
...
...
...
Mais olhem que oque disse o pessoal da techReport:
This question came up in the late stages of writing my Radeon X1000 series review, and I just got confirmation from ATI yesterday. Turns out that the vertex shaders in the Radeon X1000 series GPUs don't support a notable Shader Model 3.0 feature: vertex texture fetch. As it sounds, this capability allows the vertex shaders to read from texture memory, which is important because texture memory is sometimes treated as general storage in programmable GPUs. Vertex texture fetch is useful for techniques like displacement mapping, where the vertex and pixel shaders need to share data with one another.
I asked ATI's David Nalasco about this issue, and he suggested a possible workaround for this limitation:
No, vertex texture fetch is not supported. However, since the X1000 family does all pixel shader calculations with FP32 precision, just like the vertex shader, it is possible to get the same results using the render to vertex buffer capability. Basically, you do a quick pre-pass where you render to a special linear buffer in which each pixel represents a vertex. Textures can be used to modify each vertex through the pixel shader, and the result is then read back into the vertex shader. The result is fast vertex texturing with full filtering support, without requiring any special hardware in the vertex shader engine.
Note that render to vertex buffer is possible in R4xx as well, but is limited to FP24 which could cause precision issues in some cases.
Such a workaround would likely involve a performance penalty, but I doubt it would be a major hit. The larger issue is probably just the fact that the workaround would require special consideration from developers, because the GPUs lack a straightforward vertex texture fetch capability.
http://www.techreport.com/onearticle.x/8872
According to The Tech Report, the Radeon X1000 series lack a Vertex Shader 3.0 feature called "Vertex Texture Fetching." Vertex Texture Fetching is useful when you need a vertex shader to read from texture memory. There are certain 3D effects which can benefit from this ability such as true dynamic displacement mapping. Now, this 3D effect itself may not be currently used in current games, and in fact may not even be used until the next generation of DX10 video cards. However, the case here is that ATI is claiming they have done Shader Model 3.0 "right," yet they are missing an official Shader Model 3.0 feature. This all seems a bit misleading. How can you claim to do Shader Model 3.0 right and then leave out a feature of the specification? The GeForce 6 and 7 series from NVIDIA supports this feature. So where does that leave ATI? Have they really done Shader Model 3.0 right or not?
It does appear that a workaround is possible. However this does put more work on the shoulders of the game content developer instead of exploiting an easy Shader Model 3.0 feature in their code. Isn’t the point of standards and Shader Model 3.0 to allow game content developers and programmers a standard API among graphics cards to make their job a little easier?
This may not be such a big deal if this particular 3D feature is never exploited until the next generation of video cards. But that isn’t the point. The point here is that ATI has claimed to do Shader Model 3.0 "right," and from what we have seen today, maybe it isn't so "right" at all. “Shader Model 3 The ATI Way?”
Hardocp.com
...
...
...
Mais olhem que oque disse o pessoal da techReport:
This question came up in the late stages of writing my Radeon X1000 series review, and I just got confirmation from ATI yesterday. Turns out that the vertex shaders in the Radeon X1000 series GPUs don't support a notable Shader Model 3.0 feature: vertex texture fetch. As it sounds, this capability allows the vertex shaders to read from texture memory, which is important because texture memory is sometimes treated as general storage in programmable GPUs. Vertex texture fetch is useful for techniques like displacement mapping, where the vertex and pixel shaders need to share data with one another.
I asked ATI's David Nalasco about this issue, and he suggested a possible workaround for this limitation:
No, vertex texture fetch is not supported. However, since the X1000 family does all pixel shader calculations with FP32 precision, just like the vertex shader, it is possible to get the same results using the render to vertex buffer capability. Basically, you do a quick pre-pass where you render to a special linear buffer in which each pixel represents a vertex. Textures can be used to modify each vertex through the pixel shader, and the result is then read back into the vertex shader. The result is fast vertex texturing with full filtering support, without requiring any special hardware in the vertex shader engine.
Note that render to vertex buffer is possible in R4xx as well, but is limited to FP24 which could cause precision issues in some cases.
Such a workaround would likely involve a performance penalty, but I doubt it would be a major hit. The larger issue is probably just the fact that the workaround would require special consideration from developers, because the GPUs lack a straightforward vertex texture fetch capability.
http://www.techreport.com/onearticle.x/8872