P3D Default Shaders

I’ve noticed P3D has made it to version 1.9+ but I’m wondering if the default shaders for the engine were improved…?

I’m referring to…

  • real-time shadows (on a larger scale)
  • volumetric lighting (that works)
  • controlled Anti-aliasing (that works)
  • controlled blur effect (instead of entire scene only)
  • bloom effect that doesn’t destroy Anti-aliasing (this one is forgiven)

What about fps…? Has the new engine build improved fps or made it worst (given the new overhead)? As someone who works with cross-platforming APIs (for apps :slight_smile: ), I know asking P3D to have android and IOS support is asking too much since that would basically require an entire re-write of the engine (with java as the basis),

but…

Really good shaders can help one get past the fact the engine is pretty much desktop/laptop only. Almost forgot about this one…

Vertex transforms…

Has that been moved to the graphic card side yet or are CPUs still being put in a strain with it? The graphic card really should handle that for performance reasons. I was actually looking for an Engine Specifications page at panda3d.org but didn’t see one, so that’s why I started this topic, to get some answers.

After I’ve reached my goals with apps, I want to go back to desktop/laptop hardware and develop commercially (hand-held hardware sucks!). It seems the biggest and best engine (that’s somewhat affordable) is Unity. The only thing that leans me in favor of Unity over Panda3D is the difference in shaders and that’s regardless of the fact Unity can convert to all platforms.

I like python and Unity is C…enough said.

Please don’t force me into dealing with C… :cry:

I think that shadows for point lights using cubemaps is the only new thing as far as the shader generator goes (spotlight and directional light also have shadows, but that’s not so new).

There are however some community efforts to replace the auto-shader with something better.
There’s the Render Pipeline by tobspr Deferred Pipeline w/ Physically Based Shading if you’re targetting modern hardware (ogl 4.3) and want PBR. It has a lot of features.
There’s also my attempt at it - the Auto-Deferred-Shader Auto Deferred Shader it’s more last-gen but has all the basic features and should run on a potato (tested on a atom tablet and 5 year old office pc).

By ‘vertex transforms’ you meant hardware skinning? Animating a mesh with a skeleton on the gpu? If that’s the case then yes, p3d can do that, but I’m not sure if the shader generator can, you may need to write your own shaders… and writing your own shaders may be the best solution to all your problems… then again you’d have to write your own shaders and that can suck (btw p3d has really good support for GLSL).

There’s also some experimental, proof of concept Android support, still in the woods, but it can be done.

That’s a lot of questions in one post. I’ll respond inline.

The built-in shadow system has only improved in that it now supports point lights in the latest master. However, writing custom shaders for shadow mapping has become significantly easier due to Panda being able to set up the shadow mapping and provide shadow maps and coordinates to the shaders automatically.

There is a filter for volumetric lighting, and it has not changed since 1.8.

Multisample antialiasing is supported, even for buffers, and various bugs were fixed that prevented this from working.

Not without writing your own shaders.

It has improved overall. We keep finding new opportunities to make Panda faster.

It would not require an entire rewrite. There are proof-of-concept ports for Android or iOS, but neither is getting the attention they deserve.

There is also an experimental WebGL port which works fine on my Android phone.

In 1.10, hardware skinning is now supported out of the box. From 1.9.1 and above we also make it easy for people to implement it in their own shaders. See:

I agree that the focus going forward should be on providing good shaders out of the box. One of my top priorities is to move towards providing physically based rendering out of the box. 1.9 was a big step in the right direction.

That said, if you want a configuration of Panda that has great PBR shaders, ambient occlusion, shadowing etc. by default, I heartily recommend that you check out the RenderPipeline, a modern physically based pipeline built on top of Panda3D:
github.com/tobspr/RenderPipeline