All Versions
Latest Version
Avg Release Cycle
250 days
Latest Release
1350 days ago

Changelog History
Page 1

  • v1.10.7

    September 14, 2020
  • v1.10.6

    March 19, 2020
  • v1.10.5 Changes

    January 08, 2020

    ๐Ÿ›  This is a recommended bugfix release, especially for macOS users.

    ๐Ÿš€ Read the announcement on our blog, or go straight to the download page for the binary builds.

    • ๐Ÿ›  Fix DPI scaling issue in macOS 10.15 "Catalina" (#794)
    • ๐Ÿ›  Fix crash on macOS Catalina without "Input Monitoring" permission (#795)
    • ๐ŸŽ macOS installer now installs to /Library/Developer/Panda3D (#760)
    • ๐ŸŽ macOS thirdparty packages are now linked with libc++ (#584)
    • Homebrew Python should now locate Panda libraries correctly (#755)
    • ๐ŸŽ Work around Tk bug cancelling Load Params in Particle Panel on macOS (#811)
    • ๐Ÿ›  Fix NaN assertions when particles get very large positions (#822)
    • โž• Add support for Autodesk Maya 2020
    • ๐Ÿ›  Fix maya2egg erroring when running from a pip installation (#709)
    • ๐Ÿ‘Œ Support DualShock 4 (2nd gen) controller on Windows
    • ๐Ÿ‘Œ Support .pz and .gz compressed models in deployment system
    • ๐Ÿ‘Œ Support implicit namespace packages in deployment system (#778)
    • ๐Ÿ›  Fix issues when using CEF Python on macOS with deployment system
    • ๐Ÿ›  Fix deployment system issues reading .pyc files in some Python versions
    • ๐Ÿ›  Fix error with distutils package when deploying in a "virtualenv" env (#747)
    • ๐Ÿ›  Fix "NameError: name 'mdef' is not defined" error when deploying (#721)
    • Deployment system now strips weird -psn_* argument passed to macOS GUI apps
    • ๐Ÿ›  Fix custom loader hooks sometimes not working with Actor (#750)
    • Fix defaults for package_data_dirs in deployment system (#779)
    • ๐Ÿ›  Fix issues with adding icons to deployed executable (#718)
    • โž• Add PNMImage.quantize() that palettizes using median cut algorithm
    • ๐Ÿ›  Fix stereo and MRT FBO rendering in OpenGL ES (#815)
    • RTM_copy_ram mode is now fixed for multiview textures in OpenGL
    • ๐Ÿ›  Fix OpenGL multisample FBO issue with 16-bit float buffer (#756)
    • ๐Ÿ›  Fix DirectX 9 crash when resizing vertex buffer in certain ways (#824)
    • โ†ช Workaround for infinite loop in Triangulator for certain polygons (#737)
    • ๐Ÿ›  Fix dcparser issue with unpacking uint64 and int64 (#751)
    • ๐Ÿ›  Fix ability to compile dcparser outside of the Panda3D codebase (#759)
    • ๐Ÿ›  Fix all direct.stdpy.threading2 threads behaving daemonically (#758)
    • direct.stdpy.threading2.Thread instances provide daemon and name properties
    • ๐Ÿ Workaround for Tkinter crash on Windows when resizing window (#586)
    • ๐Ÿ›  Fix possible stack overflow when reading many bytes from a stream (#754)
    • ๐Ÿ›  Fix mouse confinement region on Windows not updating on window resize (#727)
    • ๐Ÿ›  Fix mouse confinement being lost on Windows when window loses focus (#729)
    • ๐Ÿ‘Œ Support adjusting particle birth offset time (#769)
    • ๐Ÿ‘Œ Support building against OpenEXR 2.4 on Windows (#799)
    • ๐Ÿ›  Fix ability to pass a tuple to loader.loadModel
    • ๐Ÿ›  Fix an issue in interrogate with generating C bindings (#722)
    • ๐Ÿ›  Fix a variety of ABI compatibility issues with NDEBUG builds
    • ๐Ÿ›  Fix static linking of harfbuzz and freetype in makepanda
    • ๐Ÿ›  Fix ability to specify --python-incdir and -libdir to makepanda on macOS
    • ls() and bam-info -ls now list included animations
    • ๐Ÿ›  Fix white ambient color when loading PBR materials from .bam/cache (#828)
    • ๐Ÿ›  Fix inconsistent behavior when passing small values to shader inputs (#827)
    • ๐Ÿ›  Fix very rare NVIDIA driver crash when mixing GLSL and Cg shaders
    • ๐Ÿ›  Fix issue passing unicode to DirectScrolledList (#752)
    • ๐Ÿ›  Fix interrogate parser issue with function-like macro expansion
    • Interrogate now finds types nested in explicitly specialized template class
    • ๐Ÿ‘Œ Improve performance reading all data from a file with direct.stdpy.file
    • ๐ŸŽ PandaSystem now records whether libc++ or libstdc++ was used on macOS
    • ๐Ÿ— makepanda.bat now builds against Python 3.7 by default
    • ๐Ÿ“š Many improvements to API documentation
    • ๐Ÿ— pandac/input/*.in interrogatedb files are now included in .whl builds
    • ๐Ÿ›  Fix division exception in ServerRepository (#762)
    • ๐Ÿ›  Fix ShaderBuffer contexts not being cleared at GSG destruction
    • ๐Ÿ›  Fix DirectOptionMenu item text scale reset on item unhighlight (#768)
    • Python particle classes now have snake-case aliases
    • ๐Ÿ›  Fix crash printing out cached buffer contexts
    • Rudimentary, experimental, low-level handling of digitizer input devices
  • v1.10.4 Changes

    August 19, 2019

    ๐Ÿš€ Read the announcement on our blog, or go straight to the download page for the binary builds.

    ๐Ÿš€ This release fixes a regression with DirectScrolledList in 1.10.3, fixes various other bugs, and introduces a few minor features.

    • ๐Ÿ›  Fix exception trying to create DirectScrolledList
    • ๐Ÿ›  Fix flickering in DirectScrolledFrame and other scissor issues (#681)
    • ๐Ÿ‘ Experimental support for Python 3.8
    • ๐Ÿ‘Œ Support adding icons to deployed applications
    • Support non-affine (eg. projective) transforms in calc_tight_bounds
    • ๐Ÿ‘ Allow setting notify-output after initial import
    • ๐Ÿ›  Fix macOS issue locating Panda3D using Python 2.7.13+ from
    • ๐Ÿ‘Œ Support for Maya 2019
    • ๐Ÿ On Windows, pip is now installed by the installer (#690)
    • ๐Ÿ›  Fix Actor.makeSubpart on models with pre-bound animations (#647)
    • Properly interrupt task manager if first task chain raises error (#692)
    • ๐Ÿ›  Fix return value of encrypt_string in Python 3 (#684)
    • ๐Ÿ‘Œ Support writing loader plug-ins in Python
    • ๐Ÿ›  Fix reading multiple p3d_TextureMatrix[] values from GLSL shaders
    • ๐Ÿ›  Fix shader error flag not being set if GLSL compilation failed (#622)
    • โž• Add NodePath.replace_texture() convenience method
    • ๐Ÿ›  Fix deadlock when building with SIMPLE_THREADS=1 (#704)
    • ๐Ÿ›  Fix DirectOptionMenu cancelFrame not working inside scrolled frame (#658)
    • ๐Ÿ›  Fix assertion when calling analyze() on geometry with strip cut index
    • ๐Ÿ‘ Implement fallback in GL renderer when F_sluminance is not supported (#693)
    • Set reasonable limits for sliders in ParticlePanel
    • ๐Ÿ›  Fix for DirectEntry autoCapitalize feature on Python 3 (#628)
    • ๐Ÿ›  Fix various DirectGUI items not working before ShowBase is instantiated
    • ๐Ÿš€ Work around an MSVC compiler bug in the release build
    • PythonUtil.weightedChoice now raises IndexError on empty list
    • ๐Ÿ‘Œ Support changing DirectScrollBar width after initialiation (#699)
    • โ†ช Workaround for Bullet deadlock when adding shape to a scaled body (#689)
    • ๐Ÿ‘Œ Support setting DirectEntryScroll entry after initialization (#702)
    • ๐Ÿ›  Fix some missing imports in directtools (#698)
    • ๐Ÿ›  Fix undefined behavior issue when using musl-libc
    • โšก๏ธ Update Eigen in Windows thirdparty packages to 3.3.7
    • ๐Ÿ“‡ Update metadata of pip wheels
  • v1.10.4.1 Changes

    August 20, 2019

    ๐Ÿš‘ This release fixes only one critical regression in 1.10.4: calling destroy() on a DirectGUI item would cause an exception.

    ๐Ÿš€ Read the announcement on our blog, or go straight to the download page for the binary builds.

  • v1.10.3 Changes

    May 14, 2019

    ๐Ÿ›  This is another bugfix release that addresses a variety of issues in 1.10.2 and further improves the stability.

    ๐Ÿ— To download binary builds, please visit the download page.

    • ๐Ÿ›  Fix crash when unplugging certain devices on macOS
    • ๐Ÿ›  Fix crash on macOS when using RIME input
    • ๐Ÿ›  Fix logging issues/crashes in apps deployed with Python 2.7
    • ๐Ÿ›  Fix issues when starting in fullscreen on Linux/X11
    • ๐Ÿ›  Fix mapping of several gamepads including Trust GXT 24
    • ๐Ÿ›  Fix Linux crash when no input devices are present
    • ๐Ÿ‘ Unbreak support for matrix arrays in vertex data in OpenGL
    • ๐Ÿ‘ Allow creating multisample FBO in OpenGL with non-MS host window
    • ๐Ÿ‘Œ Support playing and looping compressed Ogg and WAV audio files
    • ๐Ÿ›  Fix generation of CollisionBox for transformed geometry in .egg
    • ๐Ÿ›  Fix Bullet rigid body transform not updating after reparenting
    • ๐Ÿ›  Fix sporadic color scales with lighting and custom GLSL shader
    • Prevent faulty shaders from shutting down GSG on some drivers
    • ๐Ÿ‘ Allow None as either argument to OdeJoint.attach()
    • ๐Ÿ›  Fix BufferViewer when main window is not opened right away
    • Properly detect extension of pz/gz compressed video/audio files
    • ๐Ÿ›  Fix for invalid behavior of SparseArray methods to clear bits
    • FilterManager now allows overriding framebuffer properties
    • ๐Ÿ›  Fix detection of core-only OpenGL profile on some drivers
    • โž• Add gl-forward-compatible config var for OpenGL context creation
    • โž• Add paste-emit-keystrokes variable to disable Ctrl+V on Windows
    • ๐Ÿ›  Fix in-place |= operator on Panda types (such as SparseArray)
    • ๐Ÿ›  Fix rare FFmpeg "bad src image pointers" errors after seek
    • ๐Ÿ›  Fix uses of types.InstanceType in some obscure direct functions
    • ๐Ÿ›  Fix capsule-into-sphere collision test in degenerate case
    • KeyboardButton.ascii_key now also accepts a str character
    • ๐Ÿ›  Fix errors in various Tkinter DIRECT widgets
    • Expose save_egg_file/save_egg_data functions in Python API
    • Fix assertion error in BoundingBox.set_min_max
    • Fix typo in CollisionTraverser.respect_prev_transform property
    • ๐Ÿ— Properly install Python bindings when building FreeBSD installer
  • v1.10.2 Changes

    March 11, 2019

    ๐Ÿš€ This release fixes several more bugs, including a few regressions
    โฌ†๏ธ in 1.10.1. Upgrading is highly recommended.

    • ๐Ÿ›  Fix regression on Windows causing freezes and instability
    • ๐Ÿ›  Fix a memory leak issue in Python applications
    • ๐Ÿ›  Fix crash reading unaligned float4 column in GeomVertexReader
    • ๐Ÿ›  Fixes for switching to fullscreen at runtime on Windows and Linux
    • ๐Ÿ›  Fix incorrect display mode listing in some Linux distributions
    • Fix threading crash on Linux when using get_keyboard_map()
    • Support from __future__ import division for Panda types
    • ๐Ÿ‘Œ Support building with Visual Studio 2019 in makepanda
    • โ†ช Work around Assimp crash when loading multiple .ply models
    • ๐Ÿ On Windows, a Python 3-compatible version of Pmw is included
    • ๐Ÿ›  Fix ParticlePanel spam when hovering over File menu items
    • ๐Ÿ›  TexMemWatcher has been fixed for Python 3
    • ๐ŸŽ Prevent macOS window getting stuck after base.destroy()
    • ๐Ÿ›  Fix assertion setting mass before shape with Bullet debug build
    • Don't error if DirectScrolledFrame is destroyed twice
    • Fix reference count corruption accessing task. __dict__
    • ๐Ÿ›  Fix writing to SequenceNode frame_rate property
    • ๐Ÿ›  Fix collider sort not copied when copying CollisionNode
    • โž• Add OpenCollective backer file
  • v1.10.1 Changes

    February 14, 2019

    ๐Ÿ›  This is a bugfix release with several critical bugfixes for 1.10.0. There are no known breaking changes from 1.10.0. It is recommended to upgrade as soon as possible.

    • ๐Ÿ›  Fix crashes when gamepad is plugged in on 32-bit Windows
    • ๐Ÿ›  Fix deploy-ng error regarding 'exist_ok' on Python 2
    • ๐Ÿ›  Fix Linux install from pip not working with some mesa drivers
    • ๐Ÿ›  Fix compatibility issues with upcoming Python 3.8
    • ๐Ÿ›  Fix regression with Audio3DManager.setSoundVelocityAuto()
    • ๐Ÿ›  Fix issues when awaiting loader.loadModel in Python 3.7
    • Audio3DManager accepts tuple in setSoundVelocity/setListenerVelocity
    • ๐Ÿ›  Fix lighting being disabled when only an AmbientLight is active
    • ๐Ÿ›  Fix an error saving from Particle Panel in Python 3
    • ๐ŸŽ Depth buffer now defaults to 24-bit on macOS (fixes flickering)
    • ๐Ÿ›  Fix no devices being detected on Windows with threading-model
    • โœ… Implement collision tests from Capsule and Box into InvSphere
    • ๐Ÿ›  Fix odd behavior and occasional crash in QuatInterval
    • ๐Ÿ›  Fix SpriteAnim error in particle system
    • ๐Ÿ›  Fix ShaderGenerator error when using too many shadowing lights
    • ๐Ÿ›  Fix interrogate crash in Python 3 with optional wstring args
    • ๐Ÿ›  Fix compilation errors for x86 Android platform
    • ๐Ÿ›  Fix permissions of directories created by installpanda
    • ๐Ÿ‘Œ Improvements to API reference documentation
    • ๐Ÿ›  Fix incorrect features printed out when printing an InputDevice
    • ๐Ÿ‘Œ Support cross-compiling for Android platforms in makepanda
    • โ†ช Work around various bugs when compiling with OS X 10.7's libc++
    • ๐Ÿ›  Fix wrong error sometimes being reported when loading plug-in
    • ๐Ÿ‘ Allow getting NodePath from CullTraverserData object
    • โž• Add config options to Assimp loader for generating normals
    • ๐Ÿ›  Fix multisampling in floating-point framebuffers on OpenGL
    • ๐Ÿ“œ Parse egg files with 4-component tangents (must be 1 or -1)
    • StencilAttrib.make() write_mask argument is now optional
  • v1.10.0 Changes

    January 03, 2019

    ๐Ÿš€ This is a major release with significant changes. Please review the
    โฌ†๏ธ changes when upgrading. The list below is by no means exhaustive, but
    should contain the most important changes.


    • ๐Ÿ— Experimental ability to build for Android
    • ๐Ÿ†• New input framework to natively support gamepads, joysticks, etc.
    • Multi-threaded render pipeline is a lot more stable now
    • ๐Ÿ†• New setuptools-based deployment pipeline
    • ๐Ÿ‘Œ Improvements to mouselook smoothness
    • Cache is now at $XDG_CACHE_HOME/panda3d (~/.cache/panda3d), not ~/.panda3d
    • โž• Addition of unit test suite
    • Many improvements to thread safety
    • ๐ŸŽ Many performance improvements
    • ๐Ÿ›  Tons of bugfixes
    • ๐Ÿ’… Big style cleanup of C++ source code

    Python API

    • ๐Ÿ‘ Complete support for Python 3
    • ๐Ÿ‘Œ Support for coroutines and async/await
    • Property interfaces have been added for many settings
    • More flexible handling for keyboard arguments in C++ APIs
    • Python bindings are completely separated out of the C++ libraries.
    • Interrogate binding generator has many improvements.
    • ๐Ÿ‘‰ Use of pandac.PandaModules is discouraged, use panda3d.core et al
    • ๐Ÿ‘‰ Use of libRocket is discouraged due to lack of Python 3 support
    • Tasks are now sorted in addition order when lacking a sort value
    • ๐Ÿ›  Fixes iris/fade transitions for extreme aspect ratios
    • WeakNodePath is now exposed to Python
    • ๐Ÿ—„ WindowProperties.size(x, y) deprecated; use WindowProperties(size=(x, y))
    • ๐Ÿ—„ Calling bare run() is deprecated, use instead
    • ๐Ÿšš downcastTo*() methods have been removed, they were already no-ops


    • โž• Add new shader-based terrain rendering method (ShaderTerrainMesh)
    • 0๏ธโƒฃ The default ColorAttrib mode is now T_vertex
    • The ColorAttrib T_off mode now properly disables vertex colors entirely
    • ๐Ÿ‘‰ Make handling of color attributes more consistent between renderers
    • Ability to create an OpenGL core profile context; set "gl-version 3 2"
    • ๐Ÿ‘ Experimental support for reverse-Z rendering for best depth precision
    • ๐Ÿ‘ sRGB framebuffers supported more widely
    • ๐Ÿ‘Œ Support for infinite near/far clip in lens
    • โž• Add some PBR material parameters to material class
    • โž• Addition of more built-in GLSL shader inputs; see manual.
    • โž• Add p3d_FragData[] GLSL output for MRT in GLSL 1.30
    • โž• Add flag enabling vertex shader control over point size
    • ๐Ÿ‘Œ Support signed ints and double-precision floats in vertex data with GLSL
    • ๐Ÿ‘Œ Support unsigned 11/10/10-bit floating-point textures and vertex data
    • ๐Ÿ‘Œ Support for SSBOs via ShaderBuffer class
    • ๐Ÿ‘Œ Support OpenGL FBO buffers without any attachments
    • ๐Ÿ‘Œ Support passing uint variables to GLSL shader
    • ๐Ÿ‘ Allow rendering objects with empty vertex data (for vertex pulling)
    • โž• Add LogicOpAttrib, for supporting logical operator blending
    • ๐Ÿ‘Œ Improvements to OpenGL ES support
    • ๐Ÿ‘Œ Support for geometry with adjacency information
    • ๐Ÿ”„ Change default alpha blending to improve blending rendered result
    • ๐Ÿ†• New method for obtaining native OpenGL texture object
    • ๐Ÿ‘Œ Support windowless offscreen rendering on macOS
    • ๐Ÿ‘ Panda resets OpenGL state better before and after draw callbacks
    • ๐Ÿ‘ OpenGL renderer better supports debugging tools like apitrace
    • ๐Ÿ‘Œ Support fixed-depth billboards, useful for 2D tags that don't change size

    Shader generator

    • ๐ŸŽ Significant performance improvements
    • ๐Ÿ‘Œ Support for point light shadows
    • ๐Ÿ‘ Hardware skinning support
    • ๐Ÿ”„ Changes to match fixed-function pipeline better
    • ๐Ÿ›  Fixes for normal vector normalization
    • ๐Ÿ‘Œ Support multiple normal maps (uses Reoriented Normal Mapping)
    • Tracks modifications to materials and texture stages automatically


    • ๐Ÿ‘ Allow specifying light color based on color temperature
    • ๐Ÿ—„ Setting specular color of a light separately is deprecated
    • ๐Ÿ†• New GLSL inputs to make implementing lighting in shaders much easier
    • โž• Add representation for sphere light and rectangle light
    • Efficiency improvements for passing light information to shader
    • 0๏ธโƒฃ Interocular distance for shadow cameras now always defaults to 0
    • โž• Add low-level lighting module from RenderPipeline


    • ๐Ÿ‘Œ Support cube map arrays
    • ๐Ÿ‘Œ Support buffer textures
    • ๐Ÿ‘ Many more texture formats supported
    • ๐Ÿ‘ BC4 and BC5 compression modes supported
    • ๐Ÿ‘ Proper depth textures supported in DirectX 9 renderer
    • set_ram_image(_as) directly supports buffer protocol
    • ๐Ÿ‘ TexturePeeker supports more formats and component types


    • ๐ŸŽ Dramatic improvements to text rendering performance
    • ๐Ÿ‘Œ Support for HarfBuzz for higher-quality text shaping and kerning
    • ๐Ÿ‘Œ Support for right-to-left text
    • ๐Ÿ‘Œ Support for signed-distance-field rendering in egg-mkfont


    • 0๏ธโƒฃ The default unit for audio is now 1 meter for each Panda unit.
    • Native .flac loader
    • ๐Ÿ‘Œ Support videos with alpha channel in ffmpeg
    • ๐ŸŽ OpenAL stability improvements, especially on macOS
    • ๐Ÿ‘Œ Support loading .opus files with libopusfile
    • ๐Ÿ›  Fix various memory leaks

    Physics / collisions

    • CollisionTube is renamed to CollisionCapsule.
    • โœ… Box-box collision test is improved to work well with the Pusher
    • โœ… More box tests for collision system: box-into-plane, box-into-poly
    • Capsule (tube) can be used as "from" shape into plane, sphere, capsule, box
    • Bullet objects are serializable to .bam files.
    • Bullet bindings are now thread safe.
    • Bullet debug drawer is more efficient; no longer inherits GeomNode.
    • ๐Ÿ”€ Various fixes to bullet vehicle wheel synchronization
    • ๐Ÿ—„ PhysX bindings are deprecated.

    Pipeline / loading

    • ๐Ÿ‘Œ Support for Assimp library to load a broad variety of model formats
    • Ability to specify min-lod, max-lod, lod-bias in .egg file
    • ๐Ÿ’… Egg file materials support PBR-style material parameterization
    • ๐Ÿ‘Œ Support loading more DDS files, including DX10-style ones
    • โž• Add support for OpenEXR and HDR textures
    • ๐Ÿ‘Œ Support line/point thickness in bam2egg
    • bam2egg no longer inserts a vestigial ModelNode at the top
    • โœ… bam2egg supports depth test, offset, cull bin attributes
    • Accept a .gz file wherever a .pz file is accepted
    • ๐Ÿ‘ egg-palettize supports mirror and border-color wrap modes
    • More robust checks against memory corruptions when loading bad .bam files
    • ๐Ÿ‘Œ Support for Maya 2017 and 2018
    • ๐Ÿ‘Œ Support preprocessing GLSL shaders created with Shader.make

    ๐Ÿ— Build

    • ๐Ÿ We now require using MSVC 2015 or 2017 to compile on Windows.
    • At least GCC 4.8 is now required.
    • With GCC/clang, enabling C++11 is now required.
    • ๐Ÿ‘ Allow building with more recent ffmpeg versions
    • ๐Ÿ‘Œ Support for old FFMpeg versions (before 1.1) dropped.
    • ๐Ÿ‘ท The ppremake build system has been removed.
    • ๐Ÿ‘Œ Support for OpenSSL versions before 0.9.7 has been dropped.


    • ๐Ÿ‘‰ Use of NULL is replaced with nullptr
    • ๐Ÿ”’ WeakPointerTo now requires use of lock() method for thread safety
    • Mutex et al now satisfy C++11 Lockable constraints
    • Panda headers no longer contain using namespace std;
    • ๐Ÿšš PN_int32 et al have been removed, use stdint.h types instead
    • ๐Ÿšš The need to link with pystub and add Python include dirs is removed.
  • v1.9.4 Changes

    April 01, 2017

    ๐Ÿ›  One of the bugfixes in the last 1.9.3 release introduced a regression,
    ๐Ÿš€ therefore it was decided to make another 1.9.x release.

    • ๐Ÿ›  Fix 1.9.3 regression with generating geometry in threaded pipeline
    • โš  Various compile warning fixes
    • Fix occasional crash in PNMImage::quick_filter_from()
    • ๐Ÿ›  Fix issue taking screenshots from an OpenGL FBO buffer
    • ๐Ÿ›  Fix various issues with MeshDrawer
    • ๐Ÿ›  Fix issue with collision sphere generation in bam2egg
    • ๐Ÿ›  Fix compile errors with more obscure Python configurations
    • Fix assert when using Texture.load_sub_image to load whole image
    • ๐Ÿ›  Fix fsm FourState