Panda3D v1.10.0 Release Notes

Release Date: 2019-01-03 // over 3 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.