Download the Panda3D SDK
This version of the Panda3D SDK was released on December 20, 2022 and is now obsolete. The most recent version was released on January 10, 2024. Use at your own risk.
Already a Python user? You can install this version of Panda3D with pip!
pip install panda3d==1.10.13
Other Downloads
Ubuntu
Source Code
Sample Programs
Release Notes - SDK 1.10.13
This is a significant release containing many important bug fixes and a couple of interesting new features. See the official announcement for an overview.
Rendering
- Fix single texture stage limit when
gl-version 3 2
or higher is set (#1404) - Fix some render-to-texture bugs with multithreaded pipeline (incl. #1364)
- Fix failure to unset divisor after rendering with hardware instancing
- Add “MSAA” filter to CommonFilters class as convenience to enable MSAA
- Fix multisample FBOs with MRT resolving aux target into color target
- Fix shader generator not responding to fog color changes
- Fix OpenGL error when downloading GL_LUMINANCE8 texture
Windowing
- Fix incorrect “without” event generation when mouse leaves window (#1400)
- Windows: Fix lost “up” events when dragging cursor outside window while multiple mouse buttons are pressed down (#1396)
- macOS: Fix crash with threading-model on newer macOS versions (#1286)
- macOS: Fix black screen when going fullscreen on Apple M1-based macs (#1316)
- macOS: Fix window overlapping Dock when requesting very large height
- macOS: Improve application termination handling, now sends proper exit events
- X11: tinydisplay handles window resizes more efficiently
- X11: Work around window not rendering at first on swaywm (#1087)
Deployment
- Not all code was being built with optimize level 2
- Add
keep_docstrings
option to switch to optimize level 1 (#1341) - Add
prefer_discrete_gpu
option to force dedicated GPU on Windows (#680) - Add
bam_model_extensions
for converting non-egg models to .bam (#714) - Work around autodiscovery error when using
setuptools>=61.0.0
(#1394) - Default Linux target to
manylinux2014_x86_64
on Python 3.11+
PStats
- Add support for Python profiling with
pstats-python-profiler
Config.prc var - Fix PStats crash at launch from pip installs in newer Linux distros (#1391)
- Performance improvements to time-based strip chart views
- Time-based strip charts now can show start/stop count in corner of graphs
- Optimize client performance when sending a large number of samples
- Fix dropped frames by changing value for
pstats-max-queue-size
from 1 to 4 - Server accept clients using PStats protocol version 2.3
Assimp
- Fix assertion when loading meshes with multiple primitive types
- Add
assimp-collapse-dummy-root-node
option to remove root node (see #366) - Import custom object properties as tags
- Add support for additional texture maps, including PBR textures
- Support reading tangent and binormal vectors
- Improve performance when loading geometry
- Fix problems reading external files (see #366)
- Support reading alpha mode when loading .glTF models
- Add support for texture transforms
- Add support for texture wrapping modes
- Fix memory corruption bugs
Build
- Fixes to
pview.desktop
file on Linux - makepanda: Fix problems when building on arm64 on macOS without
--arch
flag - makepanda: Fix detection issues with newer macOS / XCode versions
- makepanda: Fix motiontrail header files not being copied
- Windows: Fix HTTPClient not working when nativenet module is disabled
- macOS: Fix OpenCV library refusing to load in arm64 build (#1393)
- Fix compiler error when compiling for e2k (MCST Elbrus 2000) (#1367)
Miscellaneous
- Add new motion trails sample program
MotionTrail.add_vertex()
method now directly accepts a vertex position- Significant performance optimization of C++-based motion trail implementation
- Fix race condition when destructing/constructing NodePaths in thread (#1366)
- Add implementation of capsule-into-polygon collision test (#1369)
- Fix texture transforms sometimes not being flattened (#1392)
- Fix support for
#pragma include <file.glsl>
in GLSL shaders - Fix
ShaderBuffer.prepare()
not doing anything - Implement deepcopy for PointerToArray
- Fix Texture deepcopy keeping a reference to the original RAM image
- Fix bf-cbc encryption no longer working when building with OpenSSL 3.0
- PandaNode bounds_type property was erroneously marked read-only
- Fix warnings when copying OdeTriMeshGeom objects
- Fix a crash when using
Notify.set_ostream_ptr()
from Python (#1371) - Fix GarbageReport not working with Python 3 (#1304)
- Make
mat.cols[n]
andmat.rows[n]
assignable - Fix
ExecutionEnvironment.args
being empty on Linux - Add various useful functions to interrogatedb module
- Fix Python 3 issues unpacking uint types in Python 3 (#1380)
- Fix interrogate syntax error with C++11-style attributes in declarators
- Fix double-precision color values not being clamped by GeomVertexWriter
- Fix regression with BufferViewer in double-precision build (#1365)
- Fix
PandaNode.nested_vertices
not updating properly - Prevent Panda calculating bounding volume of Geom with custom bounding volume
- Add
do_events()
andprocess_event()
snake_case aliases in eventMgr - Support second arg of None in
replace_texture()
/replace_material()
- Support
os.fspath()
for ConfigVariableFilename objects (#1406) - rplight: Fix PSSM calculation failing with infinite far distance (#1397)
- Remove spurious print in
direct.showutil.Effects.createBounce()
(#1383) - Fix assorted compiler warnings