Development Builds

Warning: Here be dragons!

This page contains unstable and untested development builds of Panda3D. These builds may contain bugs and may crash unexpectedly. Click here to go back to the list of stable versions of Panda3D.

master branch

The easiest way to install the latest development build is with pip:

pip install -U --pre --extra-index-url https://archive.panda3d.org/ panda3d

See other platforms

Recent successful builds for focal on branch master

6274b478aad8bac262471c361e677d45804a2295

View changes - 2025-02-27T14:11:16Z

  • 6274b47 pstats: Better handle overlapping collectors in Timeline
  • 5a97488 gtk-stats: Support trackpad zoom/pan gestures in Timeline view
  • 7c16720 webgl: Improve canvas resizing behavior
  • 85541de grutil: Add support for playing video via HTML video+WebGL
  • c960874 downloader: Add url property to VirtualFileHTTP
  • ab57b3c downloader: Fix HTTP downloads on latest emscripten
  • f4da124 pgraphnodes: Add setter for shadow buffer sort
  • 8de9859 showbase: Annotate basic `Loader` methods (#1723)


a7f8c57681522dedfb7d24290c98f3b09bed2a07

View changes - 2025-02-05T09:12:52Z

  • a7f8c57 display: Add per-shader PStats timer for compute dispatches
  • c729c75 display: Add queries for max work group count/size/invocations
  • fef27a7 Update emscripten to 4.0.2, Python to 3.12.8, enable bulk memory
  • 6452907 Improvements for env handling with node.js and emscripten
  • 8a1159f makepanda: Only build pnmimagetypes with exceptions if using OpenEXR
  • 79d6727 Move MAIN_DIR initialization code from interrogate to panda3d
  • ea1cbe4 dist: Add missing hidden import for panda3d.core on enum
  • 3f0f90d makepanda: Don't try to call interrogate_module with -vv
  • b0e1e0c showbase: Annotate callback methods
  • 0404feb windisplay: Fix IME result not showing up without `ime-aware true`
  • e681c17 glgsg: Use glClearTexImage even when tex has no storage
  • f188c8a tests: Use approx comparison for test_depth_bias
  • 99b3888 gobj: Fix Texture::clear_clear_color()
  • f6f391b glgsg: Don't override texture clear color for FBO attachments


8114971c56ce89781e58336be6d5b349aca07b5a

View changes - 2025-01-29T16:05:21Z

  • 8114971 webgl: Improve handling of canvas focus
  • 1281875 linmath: Fix degenerate case in decompose_matrix
  • 1fa8e2b webgl: Don't use stringToUTF32 for keypress handling
  • 287e456 glgsg: Fix BGR swap regression for sync uploads
  • fa64a52 glgsg: Do not prefer depth-stencil ms renderbuffers on macOS
  • 1234388 glgsg: Make multisample renderbuffer format match regular one
  • 9c7e9e9 glgsg: Add more debug prints for renderbuffer creation
  • 97fcbc2 glgsg: Fix error message for unhandled external formats




55a3a0d2af41db31a937f960dcc84d58a694dbe4

View changes - 2025-01-27T18:36:04Z

  • 55a3a0d glgsg: async screenshot refactor, general mechanism for fences
  • 2a47826 glgsg: Big refactoring of texture uploading, add async upload support
  • 2ea02ef putil: Add new primitives for async callbacks/futures
  • 67723ca display: Generalized method for running things on draw thread
  • 5b0cf9e glgsg: More efficient handling of texture memory barriers
  • a55860b glgsg: Fix memory barrier for extract_shader_buffer_data


3833866801806568670e5fd8c100726e271b3088

View changes - 2025-01-25T17:08:54Z

  • 3833866 display: Add method to synchronously download SSBO contents
  • 7ba4fe3 display: Add gsg.engine property
  • 3082d28 pstatclient: Fix out-of-order events with thread profiling
  • da4e2ca express: Use monotonic clock on POSIX (has nanosecond precision)
  • 674fa44 task: Fix first frame on task chain missed by PStats
  • 91f124e display: Allow setting a custom clock for a GraphicsEngine
  • 8c9ba6d cocoa: Fix compilation error
  • f872a82 display: Support sharing graphics context between GraphicsEngines
  • 8f4d0c8 gobj: Make BufferContextChain thread-safe


db692edfa9fc6f0bb808891d772d637dfbc89c1e

View changes - 2025-01-20T19:58:14Z

  • db692ed glgsg: Issue memory barriers for SSBOs
  • 271fa9d glgsg: Fix issues with render-to-texture and cube map arrays
  • eb5366b tests: Update mypy to version 1.14.1 (#1715)
  • cc6646a cull: Fix crash caused by freeing a cull object with empty volume
  • be382a8 makewheel: Exclude some more system libs
  • 770e2ff windisplay: Remove unused config.prc variable definitions:
  • f433733 readme: Update Android build instructions
  • 598a94a android: Set minimum to API level 21
  • 5965d5b windisplay: Prevent window resize to zero (#1705)
  • 899af61 pgraph: Fix ModelPool return value reference count
  • e43dc87 Fix unit test failures on Python 3.13
  • 46cf9c0 showbase: Fix Loader when destroying and recreating ShowBase
  • 3f2b9cd pgraph: Make ModelPool.load_model() work same as Loader.load_sync()
  • 343ec6b showbase: Create Loader before ShowBase, importable from ShowBaseGlobal
  • 5d465be samples: Remove unused CardMaker import from procedural-cube sample
  • 5e05049 collide: Add custom owner field to CollisionNode
  • 6f33bbe glgsg: Fix use after free with gl-force-fbo-color and layered FBO
  • 26dd784 gobj: Make BufferResidencyTracker::_residency a const field
  • ff11113 android: Draw to whole window, ignoring contentRect
  • d87cbbc dist: Validate application_id when building for Android
  • 7d753d4 dist: Set various AndroidManifest.xml attribs, support appCategory
  • 6f0fa2b dist: Fix for Android configuration changes restarting app
  • 73c6759 android: Exit process after activity shutdown
  • 8a1d0f7 makepanda: use javac from JAVA_HOME, check for deprecations
  • a855071 showbase: Fix regressions on Android due to not running on main thread
  • d6acaaf dist: Android fixes, esp. for Python 3.13
  • 46e9005 android: Fix crash on shutdown if stdout/err is not redirected
  • d1707c4 makewheel: Correct path to libpython on Android
  • a32030d framework: Clean up task manager on close_framework()
  • ff3e7da pipeline: Never try to detach external pthread (fixes Android crash)
  • ac68b85 shader: Fix compilation warning
  • 3471641 text: Don't try to use harfbuzz if freetype is not enabled either
  • c31041c android: Fix assorted errors and deprecations
  • 44a4116 makepanda: Fix assorted Android compile / package issues
  • 7191fb1 makepanda: Don't look for macOS framework when cross-compiling
  • fa25c51 notify: Fix compile error on Android
  • 6394973 windisplay: Fix recursive loop in adjust_z_order
  • 22381c9 pgraphnodes: Disable lighting when rendering shadow cam
  • d173086 putil: Fix SparseArray get_lowest_on_bit and get_lowest_off_bit
  • 804d49f tinydisplay: Fix extracted texture not having sRGB format
  • 2b88594 tinydisplay: Fix vertex color being multiplied in even with material present
  • 134f0bb tinydisplay: Fix material diffuse being ignored with only ambient light
  • 05d23ca tinydisplay: Set correct number of depth bits in buffer
  • d23e44e Merge branch 'release/1.10.x'


e270a073f490c7ec3ccd1719581a45de94b35743

View changes - 2024-11-08T09:55:33Z

  • e270a07 readme: Update download link to 1.10.15
  • f26009b Add Python 3.13 to setup.cfg


9dbd20d7bd0bd5a2f5d311a0d1307c4697003f3e

View changes - 2024-11-07T15:20:49Z

  • 9dbd20d workflow: No longer skip Python 3.13 builds on Windows
  • e199f25 Update thirdparty links to 1.10.15
  • d8cc57a doc: Add release notes for 1.10.15
  • f5433fa CMake/makewheel: properly determine and pass platform tag
  • a6a386a text: Fix text-native-antialias not properly taking effect
  • b51dd4d Merge branch 'release/1.10.x'
  • 1643174 parametrics: fix RopeNode breaks due to float imprecision
  • 001d29e workflow: Fix correct outputdir for makepackage
  • a076dd4 CMake: Fix issues locating Python in thirdparty on Windows
  • 69498f2 workflow: Add double-precision builds
  • 0a4d22a express: Fix VFS mount points not being listed as directories
  • 4da5158 CMake: change how thirdparty directory is detected
  • 5caace1 imageprogs: Fix compilation with CMake and STDFLOAT_DOUBLE
  • cdebca4 CMake: Only pass -fno-rtti and -frtti for C++ targets
  • 36d07e4 makepanda: Remove unnecessary filesystem flags for emscripten run_tests
  • c3326fa tests: Fix node check for other envs
  • 8d24a5d workflow: Disable Eigen on CMake macOS builder for now
  • 3585adf workflow: Updates for runner deprecations
  • 72b9dd9 parser-inc: add emscripten/heap.h to squelch interrogate warning
  • 221d35d Allow running test suite with emscripten via node.js
  • 8fcaea6 makepanda: pip-install interrogate before setting PYTHONHOME
  • 271cd14 makepanda: Fix custom Python build location for cross-compile
  • 5722e40 makepanda: Expand tilde in -incdir and -libdir options
  • e0c4096 makepanda: Set extension suffix for emscripten properly
  • 7a690bb makepanda: Link libmpdec.a et al in emscripten even with custom libdir
  • 7c74060 dtoolutil: Read environment variables in emscripten under node.js
  • 94c63fe dtoolutil: Remove silly unused variable
  • 1a4ca17 tests: Properly skip Pmw tests when tkinter is not present
  • 60d7d9e makepanda: Re-link executables with --static if dependency changed
  • c060b2f linmath: Fix vector printing issues with big values on emscripten
  • 8ff71ae webgl: Fix precision issues with default shaders
  • f4d9a67 makepanda: Add missing static libs for Python 3.12 emscripten build
  • 6823634 cull: Use more efficient arena allocation for CullableObject
  • 50b984c dtoolbase: Fix test failure on 32-bit Windows with pftoa
  • 7926d10 text: Unbreak small caps support with text-use-harfbuzz
  • 55fa0e9 Merge branch 'release/1.10.x'
  • 6f22316 build_apps: Add bam_embed_textures option
  • 89c0371 putil: BamWriter doc fix, initialize _root_node field properly
  • 5dcd70d build_apps: Fix wrong relative paths with bam_model_extensions
  • 2a6f4fc putil: Fix file_texture_mode on BamWriter not being writable
  • 32ad388 gobj: Don't try to resolve empty alpha filename when writing bam
  • a311ad8 test_wheel: Add --ignore option to ignore tests
  • e5ac1d0 build_apps: Don't warn about missing ld-linux lib on aarch64
  • ff91f12 py_compat: Fix Python 2.7 compilation error
  • 5b6318e makepanda: Don't set macOS deployment target to 10.13 except when linking with Python
  • c2de5c3 makepanda: Don't link p3dcparse with pystub
  • e2d9d3e makepanda: Fix python DLL not being copied into wheel on 3.13t
  • cfe3726 makepanda: Python 3.13 requires macOS 10.13
  • 957c4b9 Merge branch 'release/1.10.x' into master
  • 6d54aee Remove runtime dependency on interrogatedb
  • 27ce5c9 dist: Python 3.13 requires macOS 10.13+
  • 0c1a079 Fix faulty auto-merge
  • 6010c71 tests: Add bin dir to PATH when running FreezeTool test
  • 5b80f19 Changes in preparation for Python 3.14
  • e58449c dtoolutil: Let Python do Filename conversion to UTF-8
  • 7560a1e Merge branch 'release/1.10.x'
  • f47b34d Fix remaining uses of ._PyType member in extension code
  • df5f8d7 makepanda: Build fixes for Python 3.13t on Windows
  • e238588 makepanda: Fix wrong flag for excluding pythonXX_d.lib
  • 0ba2aad Introduce Py_IS_TYPE, use for Py_TYPE comparisons
  • 64454b1 Replace direct uses of ob_type, which gives problems in nogil build
  • 10da05e workflow: Skip Windows builds for Python 3.13 for now
  • a8d0f61 makepanda: Run correct interpreter when running --tests with 3.13t
  • b6e0088 makepanda: Specify --upgrade when installing interrogate
  • a632365 win-stats: Handle app commands, support back keybind in flame graph
  • f9a5445 workflow: Test Python 3.13, update setup-python to v5
  • dbeab0b makepanda: Backport Python 3.13t build fixes
  • 12bb7d1 showbase: Fix DistancePhasedNode exception at module clean-up time
  • 7b02aa7 makewheel: Fix NameError on Windows build
  • e0a8f7d makepanda: Fix Windows wheel naming for 3.13t, it has no sys.abiflags
  • e9e9fb3 makepanda: Fixes for wheel naming in 3.13t build
  • fd7da19 tests: Fix test suite with 3.13t build
  • 1f6ed88 makepanda: Use PythonT.framework when using free-threaded build
  • 6885edc build: Update interrogate to 0.3.0 to support 3.13t build
  • c8a918a pstats: Add Alt+Left in GTK flame graph to go back
  • 024b46b workflow: dependabot updates
  • cd2ab8d Create dependabot.yml (#1637)
  • c487214 pstats: Allow scrolling through frames in flame charts
  • 9cbc45b collide: Handle CollisionBox bam read without 2D info
  • 71e2b7f collide: CollisionBox cleanup, remove redundant code, reduce mem use
  • a1fd79c collide: Rewrite sphere-into-box collision test
  • 3d432ed collide: Fix sphere coming out wrong end of sphere with respect-prev-transform
  • 5f96cc5 Merge branch 'release/1.10.x'
  • d758d2b pgui: Fix crash when PGEntry removes itself w/ background focus
  • aa0462a fsm: Fix "no attribute notifier" error in requestNext/Prev
  • b022fc9 stdpy: Fix glob not finding files in VFS
  • f5b0b1e showbase: Annotate basic `ShowBase` setup/shutdown methods (#1558)
  • 42e2659 filter: Add Khronos PBR Neutral tonemapping operator
  • 583f736 linmath: Significant perf optimizations for decompose_matrix
  • f50fef3 Switch over to C++14, drop support for MSVC 2015
  • c6ed5ac fix building panda (#1694)
  • ad97e88 Enable OpenAL-Soft extensions for non-framework builds and add config for disabling HRTF (#1620)
  • 905a7dd glgsg: Fix missing include
  • 90d31bf github: Update issue templates, add links to forums/discord etc.
  • 7c9c4cd gobj: devirtualize calls to GeomPatches::get_num_vertices_per_primitive()
  • 822d35d putil: Minor SimpleHashMap::remove() optimization
  • 61f8df2 general: Fix assorted compiler warnings
  • 777ab67 display: Fix double-precision build
  • 52a7224 Fix various compiler warnings
  • ca25efc makepanda: Remove --memory-init-file flag on emscripten
  • bd4dc8a display: Fix ability to copy wdxGraphicsBuffer to RAM on DX9
  • 3041815 dxgsg9: Allow getting alpha bits in buffer when host has no alpha
  • a59c857 dxgsg9: Replace old A2W10V10U10 format with A32B32G32R32F
  • eac1cb5 dxgsg9: Add missing formats to DXTextureContext9::get_bits_per_pixel
  • 05cf72e dxgsg9: Fix texture clear color not working for 3D textures
  • 7557826 Merge branch 'release/1.10.x'
  • 51e469d Update BACKERS.md