Download the Panda3D SDK
The latest and most stable release of the Panda3D SDK, released on December 20, 2022. Recommended for production use.
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