Panda3D v1.10.0 Release Notes
Release Date: 2019-01-03 // about 5 years ago-
๐ 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.General
- ๐ 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 base.run() instead
- ๐ downcastTo*() methods have been removed, they were already no-ops
Rendering
- โ 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
Lighting
- ๐ 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
Textures
- ๐ 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
Text
- ๐ 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
Audio/video
- 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.
C++
- ๐ 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.