Leadwerks

Vertex texture fetch causes shader to not link

Discussion created by Leadwerks on Mar 13, 2009
Latest reply on Mar 13, 2009 by Leadwerks

GPU: Radeon X1550

Operating system: Windows Vista 32 bit home premium

Driver: 8.582.0.0 dated 2/3/2009

This is the lead developer of Leadwerks Engine.  I am happy to see how ATI's drivers have improved over the last year, and we have finally got our engine working completely correctly with ATI hardware. 

I have been wanting to try a new technique of storing terrain data in a texture and performing a texture lookup in the vertex program to get the height.  I have found about a 50% increase in speed using this technique on a Radeon 3870, and similar results on NVidia hardware.  The real reason I want to do this is so that grass instances no longer have to be calculated on the CPU...I can just throw a single mesh at the GPU and let it read the height texture to align the grass to the terrain.

On my Radeon 3870, it works great, but on my Radeon X1550, the line that performs the texture lookup in the vertex program causes the shader to fail to link.  Here is an example:

http://www.leadwerks.com/post/newterrain.zip

The shader fails to link and the engine write this line to the log:

Error: Failed to link shader program.
Fragment shader(s) linked,  vertex shader(s) failed to link.

If you look in "Shaders\Terrain\terrain.vert" and comment out line 29, the shader will successfully link.  According to GPU Caps Viewer, the GL_ARB_texture_float extension is supported by this card, which I think is required for vertex texture fetch.

Outcomes