Jump to content
  • Advertisement
Sign in to follow this  
Milkshake

Cg tex2D problem

This topic is 3430 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
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!