Panda3D 1.9.0 released!


  • Runtime distributions (no packp3d etc yet)
  • Documentation downloads

Download it here!

The list below contains a subset of the changes introduced:

  • We now offer 64-bit Windows and Mac OS X builds.
  • Switch to MSVC 2010; no more assembly manifests.
  • Cocoa port for better Mac OS X support, esp. newer versions.
  • We now compile the Python modules into panda3d/*.pyd modules;
    no more imp.load_dynamic hackery needed.
  • Support for GPU profiling in OpenGL, see pstats-gpu-timing
  • sRGB framebuffers, see framebuffer-srgb
  • sRGB texture support, see Texture::F_srgb et al.
  • Integer vector support, including passing to shaders
  • Native .ogg vorbis and .wav loader (does not require ffmpeg)
  • FFmpeg support is a separate plug-in module now, libp3ffmpeg.
  • Sample programs are now part of the source code repository
  • Can be built with Python 3 (highly experimental)
  • Improvements to Windows installer
  • M_filled_wireframe rendering mode
  • Support specifying sampler state separate from textures
  • Support for bindless texture clearing
  • Texture LOD bias and min/max LOD settings
  • Framebuffer properties allows separate red/green/blue bits
  • Explicit float color and float depth specification in fbprops
  • Coverage samples settable via FrameBufferProperties
  • Stereo buffer implementation in OpenGL via FBOs
  • Support enumeration of pixel formats in WebcamVideo
  • Frame rate meter can be configured to show milliseconds
  • Changes to improve font crispness with default settings
  • Fix assertion error when using more than one GraphicsEngine
  • raw-w, raw-a, etc. keyboard events for layout-independent input
  • Allow querying active keyboard layout via win.get_keyboard_map()
  • Distinguish between lmeta and rmeta keys on Mac OS X
  • Floating-point image manipulation API, support float tiffs
  • Various new 16-bit and 32-bit and int texture formats
  • Man pages are now available for the majority of utilities


  • Fix bugs with group transformations in .egg
  • Don’t create unnecessary intermediate node when loading .egg
  • bam2egg supports materials, and correctly converts animations
  • dae2egg has some skeletal animation support
  • Support Maya versions up to 2015

OpenGL renderer changes:

  • Error checking is now OFF by default for performance reasons,
    set gl-check-errors or gl-debug to true to enable.
  • GL 4.2 shader_image_load_store support (incl. multi-bind)
  • Layered render-to-texture (using geometry shaders)
  • Seamless cube maps (on by default), see gl-cube-map-seamless
  • Added gl-debug for improved debug output support
  • Added GL object labels when gl-debug is enabled
  • gl-dump-compiled-shaders can be used to dump program binaries
  • Direct3D-style NT_packed_dabc vertex arrays now directly supported
  • Native rendering of line strips, using primitive restart
  • Immutable texture storage support (disabled by default)
  • Bindless texture support (disabled by default)
  • Specular component is now computed separately in FFP

Shader system:

  • Support for tessellation shaders
  • Support for compute shaders via ComputeNode
  • GLSL preprocessor with “#pragma include” support
  • Much better coverage of shader inputs in GLSL
  • GLSL error messages now show source filename
  • Fixes apiclip_of_x shader inputs
  • Matrices can be passed directly to setShaderInput
  • Support binding images to shaders
  • Viewport array support

Optimizations and performance improvements:

  • Use of C++11 move semantics to reduce refcounting overhead
  • Build with Eigen by default for faster linear math
  • Dramatic overhead reduction of generated bindings
  • Streamline culling process
  • Tighter bounding volume generation
  • Take advantage of CPU features for bit operations
  • Circumvent bounding volume generation when not required
  • Optimizations for interned strings
  • Use of GCC atomics should improve 64-bit Linux performance

API features:

  • Buffer protocol support for textures and arrays
  • Interrogate supports various C++11 features
  • Expose TextGlyph interfaces for making custom text renderers
  • Better handling of default arguments for many functions
  • Cyclic references can sometimes be tracked through tasks
  • ShowBase clean teardown possible
  • API documentation is more accurate
  • Improve interfaces for interop with other applications

Deprecated features:

  • Use of pandac.PandaModules is discouraged; use panda3d.core
  • Deprecate DirectStart and global run() function; use ShowBase
  • Remove old decal system
  • Remove Direct3D 8 renderer
  • Remove M_light_vector tex gen mode and FFP-based bump mapping

Bug fixes:

  • Various point rendering issues are fixed now
  • Fix pview issue with 1-frame and/or multiple animations
  • Fixes for multisampling in FBOs
  • Fix aspect ratio of frame rate meter
  • Support NaN and infinity values in Config.prc variables
  • Fixes for webcams on Linux that do not output Huffman tables
  • Better support for non-basic Cg shaders on non-NVIDIA cards
  • Many others

Download it now!

In case someone is wondering: no, this is NOT April Fools :stuck_out_tongue:

It could be! A hilarious prank to produce a version of Panda3D with a significantly improved feature set and platform support, years in the making. Hee hee.

I think it’s time to make some cool showcase demo (and update the screenshot section) to remind all the unity/udk infidels (not to mention CMU and Disney) about P3D ;]

Oh, and I think some cool features where not listed, like Google Panda and GBA support.

Congratulations! What a great release!

Arch Linux AUR updated:

Google Panda???
But I fear it’s as real as Panda3D on GameBoy Advanced :mrgreen:

Excellent. Take the rest of the day off chaps.

32-bit Windows build is now available.

Ah, wonderful! Congratulations, and thank you very much, both for the new version itself and for all of the work that went into it! :slight_smile:

Great! I can’t wait to download the new version! Thanks for releasing it.:smiley:

What do you guys think in terms of UX of the new Windows installer? I’m wondering whether the added functionality is useful or just more confusing.

I was suprised to learn 1.9.0 is out! Many thanks to rdb, who seems to commit 90% of code. Wish I knew C and all this low level stuff. About the UX: yes, it is helpful. I was not able to make Panda use my Python installation manually before. And I don’t know if it is me, but projects now seem to run faster with this version.


It’s not just you – there are a whole bunch of performance improvements in 1.9.0 as mentioned in the release notes. :slight_smile:

Do we have an idea of when the runtime distributions will be available? I’m somewhat eager to try a build using them, since I’m stilll having trouble with that.

Great job! :slight_smile:

This is great! One thing I would like to know is when will the runtime be out?

Bravo! Bravo! I can’t imagine all the work that went into this, great job all the team members that worked on this!

My congratulations! A bit belated, but as usually, I sometimes here and sometimes there )