[SOLVED] Problem with NVIDIA card and particles

Hello panda3d community,

I’m playing with the smoke particle system from the panda examples, and noted something weird when using an NVIDIA graphic adapter. The relevant part of the code is

self.p = ParticleEffect()
self.p.loadConfig('smoke.ptf')
self.p.start(parent = render, renderParent = render)

where smoke.ptf and the texture smoke.png where taken from the example without modifications.

I’m attaching two screenshots. On the first the integrated intel adapter is used. On the second one the discrete NVIDIA 550 adapter is used. I have a laptop with optimus system. I’m running linux and using bumblebee to access the nvidia card (both optirun and primusrun were used, with the same results)

Apparently, when running on the NVIDIA card, the following property p0.renderer.setAlphaMode(BaseParticleRenderer.PRALPHAOUT)
is not enforced, as you can see the smoke particles are solid from birth to death.
On the Intel card there is no issue

The same example was tried on a computer running Linux having a NVIDIA 570 (no optimus), and the same behavior was observed.

Is there a configuration or flag that I should turn on/off for this to work properly on the nvidia card?

cheers



Go to your driver control panel; do you have any specific overrides set regarding antialiasing or transparency or anything like that for either of your drivers that would override a specific Panda setting?

AA is set to “Use app settings”, I don’t see any option regarding transparency

I found a solution for my problem, setting the following configuration option to True fixes the particle blending for my NVIDIA card,

ConfigVariableString('basic-shaders-only').setValue('1')

I tried this after reading the entry on Known shader bugs which referred to a problem with Nvidia Cg, in my example the shader generator was activated as I was using per-pixel lighting.

Note that the option shown above is not needed if the shader generator is off, as the particle blending works ok in that case.

cheers