Download the Panda3D SDK
This version of the Panda3D SDK was released on September 17, 2020 and is now obsolete. The most recent version was released on November 8, 2024. Use at your own risk.
Already a Python user? You can install this version of Panda3D with pip!
pip install panda3d==1.10.7
Other Downloads
Ubuntu
Source Code
Sample Programs
Release Notes - SDK 1.10.7
Note: The installers were updated on October 6th to include Python 3.9 bindings.
This is primarily a bugfix release, but includes a few new features as well. Also see the release announcement.
Rendering
- Add High Dynamic Range filter with ACES tone mapping to CommonFilters
- Add sRGB filter to CommonFilters (to be used as fallback to framebuffer-srgb)
- Fix (shadow) buffer no longer working after host buffer is destroyed (#890)
- Fix rare bug with shader parameters not being set right across render passes
- Fog density passed to shader now defaults to 0 when no fog is applied
- Don’t check sampler/light type mismatch for non-shadow-casting lights (#942)
- Shader generator now makes use of Material alpha values if present (#912)
- Support sRGB textures and framebuffers in OpenGL ES 2 renderer
Asset Loading
- Egg files can now be loaded with sRGB texture formats automatically
- Fix maya2egg regression not creating animations properly (#1004)
- Fix FMOD issue reading sounds from read-write-opened multifiles (#1002)
Stability
- Fix faulty collision detection when sphere is under polygon (#907)
- Fix PStats misreporting an exploding number of RenderState/TransformState
- Fix memory leak when removing a task that is awaiting a non-Panda future
- Optimize RenderState cache for case where texture is replaced repeatedly
- PNMImage add_sub_image() / mult_sub_image() now properly adds offset (#903)
- Fix some ServerRepository issues in Python 3
- Fix has_tags() still returning true after clearing all Python tags (#936)
- Fix crash in BitArray.has_any_of()
- Fix errors in PythonUtil.detectLeaks() and PythonUtil.report()
- Fix runtime error during ControlManager deletion (#884)
- Some error messages in nativenet are changed to debug messages
- Fix TexMemWatcher crash when graphics memory reaches 1 GB (#975)
- Fix a Triangulator crash dealing with certain invalid polygons (#985)
- Fix in
MultiplexStreamBuf::Output::write_string()
(#902) - Fix a buffer overrun on FreeBSD when extracting very long command-line args
Input and Windowing
- M_confined mouse mode on Windows now confines mouse to client rectangle
- Fix incorrect handling of shift modifier on macOS (#959)
- Fix erroneous dpad_*-up events when emulating a dpad on Linux (#973)
- Fix tab handling in DirectEntry with certain versions of Windows CRT (#994)
- Fix parented window receiving WS_POPUP style on Windows (#915)
Deployment
- macOS app bundle now performs chdir into Resources folder upon launch
- No longer defaults to FMOD audio on macOS unless FMOD is explicitly bundled
- Improvements to Config.prc handling (strip comments, sort files, etc.)
- Line buffering is now used on Windows when writing to log files (#947)
- stdout/stderr output streams are now flushed on exit (#946)
- Build paths are now properly stripped from compiled Python code (#991)
- Update to support a change in location of numpy/Pillow libraries (#914)
- Fix libffi-7.dll not being included in official wheels
- PYTHONINSPECT mechanism is no longer enabled when building with optimizations
- A few unnecessary warning messages are squelched
- Windows builds now include previously missing CRT dlls
API
- Add pickle support to Datagram class
- Unexpose a crashing CollisionPolygon constructor and method (#908)
- FilterManager has new parameter to control framebuffer clamping
- Add snake_case aliases for functions in DirectGuiGlobals
- Global delete operator is now safe to call with a null pointer
- Improvements to API reference documentation
Build
- Fix issues building with development versions Python 3.9 and 3.10
- Fix an ABI incompatibility issue with MouseWatcher in NDEBUG builds
- Fix incorrect NaN/inf detection in double-precision release builds (#987)
- interrogate C++ parser supports arbitrary constant expressions in bitfields
- interrogate C++ parser supports sizeof with constant expression