• Advertisement
Sign in to follow this  

Cg tex2D problem

This topic is 3282 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I'm having immense difficulty trying to access the pre-computed derivative version of tex2D in a Cg fragment shader. Specifically, I'm calling this one to try and access a specific mip map for a depth of field shader: float4 tex2D(sampler2D samp, float2 s, float2 dx, float2 dy) The Cg effect compiles just fine using the glslf profile (no warnings or errors), but when I try and bind the pass, I get the following CG error: CG ERROR : The program could not load. I've checked my card, and the GL_ARB_shader_texture_lod extension is supported (it's a ATI X1600 card in an OSX powerbook). I'm pretty sure this is the extension I need - and even if it's not, it should mean the lod/bias versions would work, and they don't either. It's definitely not a problem with too many instructions or some-such, as I've reduced the entire fragment shader to that one lookup and it still refuses to load. I get similar issues with the explicit LOD texture samplers (tex2Dlod, tex2Dbias), except these load in and just seem to ignore the LOD level I'm specifying entirely. I know the LOD levels exist in the texture (as limiting the texture to use them with GL_TEXTURE_BASE_LEVEL and GL_TEXTURE_MAX_LEVEL allows me to see any level I want) - but I'm just having no luck accessing the LODs dynamically from inside the fragment shader. Is this a compatibility issue because of the (non-NVIDIA) ATI card/driver? Is there some magic I need to do to make the Cg compiler pick up/use the extension correctly? (for example, I know the GLSL compiler has a directive to tell it to use a given extension) Should I just give up on Cg and move to GLSL? Any help/advice is much appreciated! Thanks!

Share this post


Link to post
Share on other sites
Advertisement
I have almost the same problem - tex2D with precomputed derivatives doesn't work, but tex2Dlod does. ATI X1600 on windows.

Cg compiles fine, loading fails.

However, when I take the generated glsl and feed it to gl directly, it doesn't compile, writing:
Fragment shader failed to compile with the following errors:
ERROR: 0:120: 'tex2D' : no matching overloaded function found

because, cg doesn't generate texture2DGrad as it should.

I should have gone for glsl directly ... [sad]

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement