Another episode in All Our ALUs:
Someone is being led straight down the primrose path. I'm sorry, but the bulk of that absolutely does not read like it was written by Brent.
Edit: Oh, and enabling vertex texture fetching in Pacific Fighters is great, if you like frame rates from 5-15 fps on high-end systems.
Yesterday we wrote a short news piece on some realizations that have come to light about what features the X1000 series support in regards to Shader Model 3.0. We asked ATI specifically if texture lookups in the vertex shader were supported, this is their response:
"Vertex texture fetch (an optional feature in SM 3.0) is not supported directly; 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."
The claim here is that the feature “Vertex Texture Fetch†is actually an optional feature in Shader Model 3.0 and this specific feature is not supported directly with the Radeon X1000 family. They then go on to explain how there is a work around to enable the same result as doing a texture lookup from the vertex shader using pixel shaders. While the technique is very intriguing from a technical standpoint the fact is that ATI lacks a major Shader Model 3.0 feature in hardware.
Vertex Texture Lookups are necessary for some effects such as displacement mapping, hardware raytracing, advanced hardware skinning, hardware based collisions and soft body deformations, bone system generation, and many other areas of research developers are working on. To not include a very standardized feature means the progression of games utilizing these features will be dwarfed. In fact there is indeed already one game that supports the “Vertex Texture Fetch†feature and is using it to provide better image quality with water.
The way the workaround works with the Radeon X1000 family requires game content developers to specifically write in special code just for ATI X1000 family hardware if they want to gain the same result as doing a texture lookup from the vertex shader. This requires more time and effort on their part to specifically support these kinds of features within the X1000 family. With NVIDIA’s GeForce 6 and 7 series however this same result can easily by done officially through the supported Shader Model 3.0 feature in DirectX. This workaround that ATI has in place reminds us of their backdoor method of performing Geometry Instancing in R420 hardware which was not officially supported in DirectX. We all know how well that turned out, basically no developers used it in their games, instead opting for the Shader Model 3.0 implementation, and one example is FarCry. CryTek added in a patch the ability to do geometry instancing using the Shader Model 3.0 implementation and not ATI’s specific implementation that only works on their hardware and is not part of the DirectX standard.
This seems to us a case of ATI believing they are doing something better or “Right†but in reality they are lacking a very important specific feature of Shader Model 3.0. Therefore we hold our ground in saying that the slogan “Shader Model 3.0 Done Right†should really be called “Shader Model 3.0 Done the ATI Way.†Wasn’t this the mentality NVIDIA had when they created the high level language CG and the GeForce FX? We all know how that turned out.
Someone is being led straight down the primrose path. I'm sorry, but the bulk of that absolutely does not read like it was written by Brent.
Edit: Oh, and enabling vertex texture fetching in Pacific Fighters is great, if you like frame rates from 5-15 fps on high-end systems.
Last edited by a moderator: