Advertisement Jump to content
Sign in to follow this  

Cg tex2D problem

This topic is 3642 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
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

Important Information

By using, you agree to our community Guidelines, Terms of Use, and Privacy Policy. is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!