Panda3D 1.11 Roadmap

Primary goals

These are the most important goals we need to focus on in the next release.

Shading

Most major engines have switched to the new PBR-based material model that is now in use by UE4, Unity, Frostbite, Blender 2.8 and more, so we cannot stay behind.  We need to make sure that we have reliable and powerful shaders out of the box and a reliable pipeline to import PBR-ready models.
  • Create a new material model
  • Better sRGB handling; being gamma-correct should be easy
  • Image-Based Lighting support
  • Reflection/ambient probes
  • Ability to load glTF 2.0 files with PBR materials (third-party extension OK)
  • Pathway for supporting Principled material nodes from Blender (via glTF or otherwise)
  • Easy HDR support and other post effects; benefits from “blueprints” design of +Rendering API design overview, but simple tonemapping operators could be implemented in CommonFilters

Build pipeline

As Panda is written in C++, it would benefit us to attract C++ developers to the engine who are to contribute back to the engine itself. We need to remove any barriers that might prevent attracting C++ developers or obstruct people from wanting to contribute to Panda3D, and make sure we are not distracted too much by having to maintain our build system. This also decreases the effort to port Panda to additional platforms.
  • CMake support (should be added soon after 1.10 release)
  • Ship config files to make it easier for C++ developers to write plug-ins and games for Panda using C++
  • Delete makepanda very soon (either before 1.11, or immediately after 1.11 so that 1.11 is the only release to have both buildsystems)

Secondary goals

These are features that would be a major assets for Panda.  As we should endeavour to “release often” when we have something to show, we will probably not be able to implement all of these before the release, but all of these are major assets nonetheless; we may need to choose which ones are “musts” and which ones are “nice-to-have” depending on available human resources, otherwise they will become targets for 1.12.

Android support

  • Do not require writing a custom shader to get anything other than a triangle on screen (probably requires new shader pipeline)
  • Deployment system should be able to produce Android games 

Browser support

  • Deployment system should be able to produce WebGL games
  • Strongly benefits from new shader pipeline

New render API / postprocessing framework

  • It should be easy to define postprocessing filters/shaders.
  • Written in C++, not Python
  • Easy plugging of effects like tone-mapping operators, lighting passes, bloom, etc.
  • Better support Vulkan rendering model by having upfront definition of render passes
  • Better support VR by Panda being able to know which passes correspond to VR scene

VR support

  • Strongly benefits from rendering API overhaul

Vulkan support

Not very important for a release goal, but “nice-to-have”.
  • Requires new shader pipeline
  • Strongly benefits from rendering API overhaul

Long-term goals

These are “primary goals” in scope, but likely not worth delaying the next release to achieve. In other words, they should be worked on in a parallel branch, and not prioritized over the primary goals.

These goals are also better off for a 2.0 release, as the bump in major version number does signify a major paradigm shift.

Modernize (i.e. demote direct)

  • Completely replace the app framework.
  • New app framework should better support Android and VR app lifecycles.
  • Create new samples using the new app framework - using some mix of C++ for some and Python for others
  • Kick direct/samples out to their own GitHub repo under the panda3d/ organization.
  • Installer will still bundle direct/samples, but those building from scratch will need to first build panda3d/panda3d, then panda3d/direct. When installing from pip, direct is provided separately as direct