Happy new year everyone! We’re starting off the new year with a fresh release. This release updates the engine with support for Python 3.12, improvements to the shader system, and a wide range of bug fixes. Upgrading is recommended.
Go ahead and download the new release, or upgrade it with pip install -U panda3d
if you have installed it using pip. The full list of changes follows below:
API
- Accept bytes object in DatagramOutputFile.write_header()
- Add missing clear_color() method to CardMaker
- Add file_version properties to BamFile and BamWriter, mirroring BamReader
- Add missing method for getting current display mode index (#1550)
Shader Generator
- Add support for perspective points (#1440)
- Implement remaining missing TexGenAttrib modes (#1437)
- Fix support for hardware point sprites
- Support missing texture types: cube map arrays, 1D arrays, buffer textures
Rendering
- Add texconst_i input for Cg shaders to access TexGenAttrib constants
- Fix bug when same texture is used with different TexGenAttrib modes
- OpenGL 3.2+/ES: Correctly handle 4-component texcoords in default shader
- DX9: fix bugs setting some kinds of shader inputs
- OpenGL: guard against exceeding max supported vertex attribute stride
- Add missing handling for 1D array textures in Cg shaders
- OpenGL: improve handling of SM5 Cg shaders
- Fix p3d_LightModel.ambient not updating properly
- Work around wireframe rendering bug in Panfrost drivers
- Fix assertion error when preparing texture fails
- Fix image load/store support in GLES 3.1 (set gl-immutable-texture-storage)
Windowing
- Windows: Fix issues switching fullscreen while maximized (#1469)
- macOS: Fix undecorated setting ignored when switching back to windowed mode
- macOS: Fix window sizing bug when simultaneously changing undecorated
- macOS: Fix black bar when switching to fullscreen with Z-Order set to Top
- macOS: Squelch secure restorable state warning on macOS 14 “Sonoma”
- X11: Fix crash on shutdown when using custom cursor
- EGL: Fix invalid operation error when using headless pbuffer
- EGL: Add support for resizing (offscreen) pbuffers
- Windows: Message loop is no longer disabled when using tk with threaded draw
- Windows: Fix handling of invalid raw mouse devices
Deployment
- Fix crash when running executable built with Python 3.11 (#1423)
- Fix for thirdparty packages that use delvewheel (#1492)
- Strip .abi3.so suffix from libraries
- Silently ignore missing hidden imports
- Add missing hidden imports for setuptools and shapely
- Show better error message when targeting no-longer-supported platforms
- Fix issues running pfreeze on macOS
- Fix crash using on arm64 systems with 16 KiB pages (eg. Asahi Linux)
- Fix error using bam_model_extensions with bdist_apps
Pipeline
- Support reading .bmp files with RLE8 compression
- Fix wrong magfilter being written by egg-palettize (#1585)
- Fix memory leaks when writing TIFF files
- Fix hang in .egg loader when
<Collide>
used with<Line>
(#1515) - Add assimp-disable-extensions config var (see #1537)
- Fix assert/crash when reading multiple recorders from bam file (#1561)
Build
- Add support for building with Python 3.12
- macOS .dmg are now built as HFS+ for 10.9 compatibility (#1502)
- Don’t use RTTI features in headers when building with
-fno-rtti
- Fix some new compiler warnings
- Fix compile errors with some versions of png.h
- Work around GCC 13.2 bug compiling interrogate-generated code (#1580)
- Support building with LibreSSL on Windows (#1503)
- Fix some issues in anticipation of Python 3.13+ (#1523, #1526)
- More robust parsing of version in setup.cfg (incl. #1539)
- Avoid using deprecated distutils module (#1549)
- Add _d suffix to .pyd files when building debug build on Windows (#1566)
Miscellaneous
- Fix bug causing textures to sometimes be randomly downloaded
- Fix PStats Python profiling exception when using metaclasses (#1505)
- Fix segfault when ConnectionRepository is verbose (#1430)
- Fix broken minusnode icon in dmodels (#1449)
- Fix wrong delete operator in ARToolKit
- Fix crash when encountering corruption in OpenAL stream (#1452)
- Fix SimpleHashMap error reporting at static init time
- Fix assorted code issues, typos, and Python 2-isms in direct tree
- Code size reductions for interrogate-generated bindings
- Assorted docstring corrections and additions
- Interrogate supports explicit cls parameter for static methods
- Interrogate: fix enum scope issue
- Don’t assume presence of softspace attribute on files in directnotify
- Use importlib.metadata (not pkg_resources) for entry points in Python 3.8+