A look behind the curtains

Much has happened in Panda3D development for the upcoming 1.10 version. To bring you up-to-date with the latest developments, we will summarize some of the new changes here. Also, to further keep you informed about new and upcoming features, we’ll start a regular blog post series highlighting new developments.

Aside from a lot of optimization changes to improve various parts of Panda’s performance, as well as numerous bugfixes to improve stability and compatibility, there were some larger changes as well.

Python support

The first thing we’d like to highlight is the ability for Python users to install Panda3D via the pip package manager. No more fiddling with platform dependent installers—it takes only a single command to install the right version of Panda3D for your platform and Python version:

pip install panda3d

As a bonus feature, this allows you to install Panda into a virtualenv environment, allowing you to try out the latest development version in isolation without fear of contaminating your existing setup.

Furthermore, Panda3D has been updated to be compatible with the latest Python 3 versions. This includes interoperability with the pathlib module and the Python 3.6 path protocol, as well as fixes for the upcoming Python 3.7.

The Shader Generator

If you are using the shader generator in your application, you may significantly benefit from upgrading to 1.10. It has been overhauled to address a major performance concern for applications with complex scenes containing a large amount of render states, which could cause lag due to an excessive amount of shaders being generated.

Some new features have been added as well, such as support for hardware skinning and multiple normal maps.

Text rendering updates

The text rendering subsystem has been improved significantly. Panda’s text assembler used to perform well mainly for smaller texts, whereas frequently updating large blocks of text could cause considerable lag. But the improved text assembler code is up to 75 times as fast, making assembling large swaths of text a non-issue.

A comparison with HarfBuzz disabled and enabled. Of note is the spacing between the A and V, the "fi" ligature. The Arabic text renders like a mess without HarfBuzz.

A comparison with HarfBuzz disabled and enabled. Of note is the spacing between the A and V, the “fi” ligature. The Arabic text doesn’t render correctly at all without HarfBuzz.

Furthermore, the HarfBuzz library can now be utilized to implement text shaping, which not only enables support for ligatures and correct kerning but also allows us to better support languages with more complex shaping requirements, such as Arabic. This includes support for right-to-left text rendering, with automatic language detection enabled by default. Although bidirectional text is not yet fully supported, you can explicitly switch or re-detect direction for specific text segments using embedded TextProperties.

If Panda3D has been compiled with HarfBuzz support, it can be enabled using the text-use-harfbuzz variable. Otherwise, more basic kerning support can be enabled using text-kerning true, although many fonts will only kern correctly with HarfBuzz enabled.

Media playback

Panda3D now directly supports the Opus audio codec, a high-quality open standard designed to efficiently encode both speech and other audio. This is implemented via the opusfile library, so that it doesn’t require pulling in the heavier and more restrictively licensed FFmpeg libraries.

The FFmpeg plug-in now also supports loading video files with an embedded alpha channel, such as is possible with WebM files encoded with the VP8 codec. However, FFmpeg offers both a preferred native implementation and a decoder based on libvpx. The default is the native implementation, so if you wish to play VP8 videos with alpha channel, you should set the ffmpeg-prefer-libvpx configuration variable to true, to force FFmpeg to use the libvpx implementation.


We’d also like to highlight ongoing work outside the main Panda3D development branch. These things have been developed for Panda3D and will be merged into the main branch when they have reached maturity. But until then, they can be checked out from their respective branches on GitHub.


First off, significant progress has been made on a new deployment system thanks to invaluable contributions by the community. The project is tentatively named “deploy-ng” and intends to make it easier more reliable to package and distribute your finished application, and as such it stands to replace the current deployment system entirely.

This new deployment system builds upon the existing Python setuptools, adding an extra plug-in to easily package your Panda3D applications. It already is quite usable, but still needs some love and testing until it’s production ready.

Graphics back-ends

A significant amount of work has been done on the effort to support two new graphics back-ends. The first of these is the WebGL back-end, happening on the webgl-port branch. This allows us to run Panda3D applications in the browser without requiring the use of a browser plug-in. The bulk of the work on the renderer itself has already been done, but there remains work to be done to make it easier to package up a Panda application for the web. Check out the proof-of-concept demos or the online editor demo if you’re curious about the possibilities.

On the vulkan branch, a prototype renderer for the new Vulkan graphics API has materialized as well. Like OpenGL, Vulkan is a cross-platform open graphics standard developed by Khronos. Unlike OpenGL, however, Vulkan offers a more low-level interface to the underlying graphics hardware, enabling a reduction in driver overhead for CPU-bound applications. Before you get too excited though, it’s not yet capable of running much more than a few of the sample programs. There is a lot more work to be done before it will reach feature-parity with or performance benefits over the OpenGL renderer, and it is unlikely to be a priority for the next release.

glTF 2.0

Behind the curtains there also is work going on to support glTF 2.0. This is a new JSON-based model transmission format recently standardized by the Khronos Group, the consortium that is also responsible for OpenGL, and plug-ins are already available to export it from various content creation tools. Importantly, glTF 2.0 defines a modern standard for physically-based materials, and as such is considered a milestone in the development of a physically-based rendering pipeline in Panda3D.

Input devices

Gamepad support is something that many in the community have been asking about for a long time. The input framework is receiving a significant overhaul to allow us to support game controllers, while also laying the groundwork for exposing commercial virtual reality hardware using a straightforward API. This work is happening on the input-overhaul branch and will be merged into the master branch soon.


That’s all for now, but keep an eye open for upcoming blog posts with all new and interesting updates in the coming months. In the meantime we encourage you to try the latest version for yourself and let us know how it works for you.


Tags: , , , , , , , , , , ,


  1. This post presents clear idea designed for the new people of blogging,
    that actually how to do running a blog.

    Comment by drop shipping — July 2, 2018 @ 6:05 pm

  2. Brand loyalty, client satisfaction, brand awareness, referrals and sales are typical achievable through marketing with email, however it is important for
    marketers to understand their objectives and priorities at the beginning of the campaign. No one moves in a business lacking the knowledge of what
    they are getting into. These reports will be accessible to Ad words users
    in the following weeks; however advertisers (Google’s customers) should
    have Ad – Words Conversion Tracking enabled.

    Comment by drmammel.extra.hu — July 5, 2018 @ 5:32 am

  3. This piece of writing offers clear idea for the new users of blogging, that in fact
    how to do blogging.

    Comment by Starfall 4 Games — July 6, 2018 @ 8:59 pm

  4. Great goods from you, man. I’ve understand your stuff previous
    to and you’re just extremely magnificent. I really like what
    you’ve acquired here, certainly like what you’re saying and the way in which you say it.
    You make it enjoyable and you still care for to keep it sensible.

    I cant wait to read far more from you. This is really
    a great web site.

    Comment by _____ — July 10, 2018 @ 9:32 pm

  5. I am actually grateful to the owner of this site who has shared this impressive article at at this place.

    Comment by _____ — July 15, 2018 @ 7:11 am

  6. You really make it seem so easy along with your presentation however I to find this topic to be really something
    that I feel I’d never understand. It seems too complex and
    extremely wide for me. I am looking ahead for
    your next post, I’ll try to get the grasp of it!

    Comment by Anonymous — July 18, 2018 @ 5:45 am

  7. Everʏthing is very oреn ѡіtһ
    a cⅼear eҳρⅼanatіߋn ᧐f tһe cһaⅼlengеѕ.
    It wаѕ гeallʏ informatіνе.
    Үօur ᴡеbѕitе іѕ ѵеrʏ һelⲣfսl.
    Mаny thankѕ for ѕһaгіng!

    Ɍevіеᴡ mу ԝeb ѕіtе …
    EroticalabseroticalabsMen Sexual HealthMen’s Sex EnhancementsWomen Sexual HealthWomen’s Sex EnhancementsMen’s SexWomen’s SexGirthMaxgirthmaxSemenFXsemenfxViviLastvivilastViviMalevivimaleViviRectvivirectVolume-Aidvolume-aidvolume aidBreastFXbreastfxClimaxiumclimaxiumSex Enhancement Products

    Comment by EroticalabseroticalabsMen Sexual HealthMen's Sex EnhancementsWomen Sexual HealthWomen's Sex EnhancementsMen's SexWomen's SexGirthMaxgirthmaxSemenFXsemenfxViviLastvivilastViviMalevivimaleViviRectvivirectVolume-Aidvolume-aidvolume aidBreastFXbreastfxClimaxi — July 20, 2018 @ 1:45 am

  8. When I initially commented I appear to have clicked the -Notify me when new comments are added- checkbox and now each
    time a comment is added I recieve four emails with the exact same comment.

    Is there a means you can remove me from that service?

    Comment by mug — July 20, 2018 @ 9:19 pm

  9. Why viewers still use to read news papers when in this technological globe all is
    accessible on web?

    Comment by Asian Porn — July 21, 2018 @ 9:16 am

  10. Chiropractor Culver City

    Panda3D Developer Blog

    Trackback by Culver City Massage Therapy — July 21, 2018 @ 10:39 pm

  11. What’s up, I wish for to subscribe for this weblog to
    take most up-to-date updates, so where can i do it please assist.

    Comment by ______ — July 22, 2018 @ 5:26 am

RSS feed for comments on this post. TrackBack URL

Leave a comment