Basic Shader Support [solved]

I built the 1.7.0 release code from source, on 32-bit debian 5.0.4. I used --installer --everything and then used dpkg to install the resulting .deb file.

I’m using the proprietary Nvidia driver, version 185.18.14, which is slightly out of date, but I don’t think that’s the problem (I’ll upgrade to the latest when I get a chance). My video card is a GeForce 7300 LE (OpenGL version 2.1.2).

GLSL Shaders work fine using other libraries. And Panda3d shows they’re supported (I haven’t actually tried one yet). According to glxinfo, GL_ARB_fragment_program, GL_ARB_fragment_program_shadow, and GL_ARB_vertex_program are all supported (as are their NV equivalents)…I’m guessing those are what are needed for “Basic shader” support.

HAVE_CG isn’t defined during the build, so (AFAICT) the block of code in glGraphicsStateGuardian_src.cxx that would check to see whether my card supports Cg is getting preprocessed away.

When I built it originally, I did not have nvidia’s Cg toolkit installed (I was clued in by a “WARNING: Could not locate thirdparty package …” message). I installed it, wiped my built directory, and tried to rebuild. The message about the missing thirdparty Cg package went away, but that macro still isn’t getting defined.

After that, I tried makepanda --nothing to be sure the dependency cache is gone, then rebuilt with --everything --installer. Same result.

I can live without Cg shaders, but I’d really like to be able to use Panda’s auto-generated shaders (those would be a huge selling point when I get around to showing a demo).

I imagine using the pre-built binary would fix the problem, but not being able to build from source would be a show-stopper for my boss.

I’m out of ideas, so I figured I’d check to see if anyone here has any suggestions about what I might be missing.

Thanks in advance,

You need to make sure that you have all versions of Panda3D uninstalled from the system when you build it. It might conflict.
Also, to truly clean the build, you should remove the “built” subdirectory in the Panda source, then build again.

It seems I was reading the code wrong. HAVE_CG still didn’t get defined after I did this, but the auto-shaders seem to be working.

Thanks very much!

– James