All Versions
12
Latest Version
Avg Release Cycle
275 days
Latest Release
90 days ago

Changelog History
Page 1

  • v1.10.4

    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 python.org
    • 👌 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

    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

    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

    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

    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

    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.

    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.
  • v1.9.4

    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
  • v1.9.3

    December 26, 2016

    🛠 This issue fixes several bugs that were still found in 1.9.2.

    • 🛠 Fix crash when using homebrew Python on Mac OS X
    • 🛠 Fix crash when running in Steam on Linux when using OpenAL
    • 🛠 Fix crash using wx/tkinter on Mac as long as want-wx/tk is set
    • 🛠 Fix loading models from 'models' package with models/ prefix
    • 🛠 Fix random crashes in task system
    • 🛠 Fix various race conditions causing threading issues
    • 🛠 Fix memory leaks in BulletTriangleMesh
    • 🛠 Fix loading old models with MovingPart
    • 👌 Improve performance of CPU vertex animation somewhat
    • 👉 Show framebuffer properties when fbprop request fails
    • Show error instead of crash on use of object before init
    • 🛠 Fix hang on exit when using Python task on threaded task chain
    • 🛠 Fix inability to get RGBA renderbuffer in certain cases
    • ↪ Work around GLSL issue with #pragma and certain Intel drivers
    • 👌 Improve performance of texture load and store operations
    • 🛠 Fix crashes with pbuffers on Intel cards on Windows
    • 👌 Support for Autodesk Maya 2016.5
    • ➕ Add shadow-depth-bits config var to control shadow map depth
    • 🛠 Fix cull issue when rendering cube map (or any multi-lens setup)
    • 🛠 Fix crash rendering with the same camera to different contexts
    • 🛠 Fix compile error when making static build with DX9 renderer
    • 🛠 Fix assertion when using aux render targets in DX9
    • ↪ Work around Cg bug generating invalid ASM for saturated tex loads
    • 🛠 Fix issues with certain Cg shader inputs in DX9
    • 👌 Support uint8 index buffers in DX9
    • 🛠 Fix occasional frame lag when loading a big model asynchronously
    • 🛠 Fix interrogate parsing issue with "const static"
    • ➕ Add back missing libp3pystub.a to Mac OS X SDK
    • 🛠 Fix RAM caching of 2D texture arrays
    • 🛠 Fix Ctrl+C interrupt propagation to runtime applications
    • 👌 Support for InvSphere, Box and Tube solids in bam2egg
    • Preserve "intangible" and "level" collide flags in bam2egg
    • ➕ Add normalized() method to vectors
    • asyncFlattenStrong with inPlace=True caused node to disappear
    • 🛠 Fix asyncFlattenStrong called on nodes without parent
    • 🛠 Fix is_playing() check when playing an animation backwards
    • 🏁 Windows installer no longer clears %PATH% if longer than 1024 chars
    • 🛠 Fix inoperative -tbn/-tbnall/-tbnauto options in egg-optchar
    • 🛠 Fix tinydisplay texture errors on shutdown
    • 🛠 Fix mipmap filtering issues in tinydisplay renderer
    • 🛠 Fix exception when creating intervals before ShowBase is started
    • 🛠 Fix rare X11 .ico cursor bug; also now supports PNG-compressed icons
    • ➕ Add keyword argument support to make() methods such as Shader.make()
    • 🛠 Fix compilation errors with Bullet 2.84
    • 🛠 Fix exception when trying to pickle NodePathCollection objects
    • 🛠 Fix error when trying to raise vectors to a power
    • GLSL: fix error when legacy matrix generator inputs are mat3
    • 🏁 Now tries to preserve refresh rate when switching fullscreen on Windows
    • 🛠 Fix back-to-front sorting when gl-coordinate-system is changed
    • 🐧 Now also compiles on older Linux distros (eg. CentOS 5 / manylinux1)
    • get_keyboard_map now includes keys on layouts with special characters
    • 🛠 Fix crash due to incorrect alignment when compiling Eigen with AVX
    • 🛠 Fix crash when writing 16-bit .tif file (now silently downsamples)
  • v1.9.2

    December 25, 2016

    🛠 This is a minor bugfix release, fixing a few minor issues that
    🚀 remained in the 1.9.1 release, including:

    • 🛠 Fix compile errors with more recent versions of ffmpeg
    • 🏁 Include .lib files for pyd modules in Windows SDK
    • 0️⃣ packp3d now recognizes default egg-object-type definitions
    • 🛠 Fix issues with sphere-into-box and box-into-sphere collisions
    • Texture VRAM usage is now correctly reported by pstats
    • 👌 Support for reading BMP files with alpha channel
    • 🛠 Fix OpenGL crashes in very ancient OpenGL versions
    • 🛠 Fix rare compile issues and crashes with esoteric Python set-ups
    • 🛠 Fix crash when extracting texture that's not a multiple of 4 bytes
    • Work around buggy NVIDIA driver that reports main* shader inputs
    • ➕ Add version of transform_vertices that accepts a SparseArray
    • Clamp shininess to 0 to avoid GL error when shininess < 0
    • 🛠 Fix various bugs in RopeNode and NurbsCurveEvaluator
    • 🛠 Fix clock-mode Config.prc settings
    • NodePath render_mode setters no longer reset wireframe color
    • 🛠 Fix constant reloading of texture when gl-ignore-mipmaps is set
    • 🚀 BamReader now releases the GIL (so it can be used threaded)
    • 🛠 Fix AttributeError in direct.stdpy.threading module
  • v1.9.1

    November 25, 2015

    🚀 This minor release fixes some important regressions and bugs found
    in 1.9.0, but also introduces a few minor features.

    🚀 It also reintroduces the deployment tools that were absent from
    🚀 the previous release.

    🛠 The following issues were fixed:

    • SDK now properly installs in Mac OS X 10.11 "El Capitan"
    • 🏁 Windows 8.1+ no longer applies DPI virtualization to Panda window
    • 🛠 Fix ffmpeg library load issue on Mac OS X
    • 🛠 Fix issues running maya2egg on Mac OS X
    • 🛠 Fix compiler errors on different platforms
    • 🛠 Fix various rare crashes
    • 🛠 Fix crashes on shutdown in threaded pipeline
    • 🛠 Fix low-level threading crash on ARM machines
    • More reliably and robustly handle failures opening OpenAL device
    • Textures were not being scaled to power-of-2 in some cases
    • Correct scaling of normal vectors with flatten operation
    • Correct positioning of viewing axis when showing lens frustum
    • ➕ Add dpi-window-resize option to auto-resize window on DPI change
    • 🛠 Fix assertions when alpha-file-channel references unknown channel
    • 💅 Use OpenGL-style vertex colors by default on non-Windows systems
    • 0️⃣ Default vertex column alignment is now 4 bytes
    • ➕ Add PNMImage premultiply/unpremultiply methods.
    • 🛠 Fix incorrect parsing of numbers with exponents in Config.prc
    • 🛠 Fix for reading URLs mounted via the virtual file system
    • 🛠 Fix shader generator memory leaks and runtime performance
    • 🛠 Fix shader generator scaling of binormals and tangents
    • Expose _NET_WM_PID to window managers in X11
    • 🛠 Fix a range of bugs in tinydisplay renderer.
    • Don't error when setting lens far distance to infinity
    • 👍 Allow passing custom lens to saveCubeMap/saveSphereMap
    • 🛠 Fix errors in saveCubeMap/saveSphereMap in threaded pipeline
    • 🛠 Fix DynamicTextFont.makeCopy()
    • 👉 Make Texture memory size estimation more accurate
    • 🛠 Fix various window resizing issues
    • 🛠 Fix PandaSystem.getCompiler() value for clang (it reported gcc)
    • x2egg no longer replaces face normals with vertex normals
    • 🏁 Include Eigen headers in Mac and Windows SDK
    • ➕ Added geomipterrain-incorrect-normals setting, default=true
    • 🏁 DisplayInformation resolution list was missing on Windows
    • ⬆️ Upgrade FMOD and Bullet versions on Windows and Mac OS X
    • 🐎 Various performance optimizations
    • 🛠 Fixed various other bugs not listed here.

    🛠 Fixes and improvements for the runtime:

    • 🛠 Fix splash screen freezing in the X11 web plug-in
    • 🚀 pdeploy will now handle extracted files (eg. .ico and .cur)
    • ➕ Added more options for customizing splash screen
    • 🛠 Fix missing xml and ast modules from morepy package
    • Certificate dialog is now localized to various languages
    • 🛠 Fix packp3d error when Python file is not in a package
    • 📦 Pass on failing exit status from packaged application
    • ✂ Remove annoying ":Packager(warning): No such file" warning
    • 🛠 Fix issue installing pdeploy-generated .pkg on OS X 10.11

    🛠 Fixes for the Python API:

    • 🛠 Fix mysterious and rare crash in tp_traverse
    • 0️⃣ Bullet step function accidentally defaulted to step size of 0
    • 🛠 Fix overflow of file offsets (eg. when seeking in huge files)
    • 🛠 Fix regression with memoryviews
    • 🛠 Fix hasattr/getattr of vector classes for invalid attributes
    • 👍 Allow passing a long to methods accepting an int
    • 🛠 Fix crash when passing None to Filename constructor
    • MouseWatcherGroup was erroneously not exposed in 1.9.0
    • 👉 ShowBase no longer unmounts VFS when shutting down
    • No longer requires setting PATH to import panda3d.*
    • 0️⃣ DirectDialog default geom is once again respected
    • DirectDialog no longer overrides custom frameSize
    • 🛠 Fix WebcamVideo/MicrophoneAudio.getOptions() methods

    🔄 Changes relating to the OpenGL renderer:

    • 🐎 Various performance improvements
    • 🛠 Fix point/line thickness setting
    • 👌 Improve GLSL error reporting
    • 🛠 Fix Intel driver issues, particularly with geometry shaders
    • ➕ Add more error checking for parameter types
    • Integer shader inputs were not being converted to float properly
    • 🛠 Fix crash passing an undersized array to a GLSL shader input
    • p3d_ColorScale et al may now be declared as vec3
    • Fix flickering when using trans_model_to_apiview in Cg
    • 👌 Support wireframe and point rendering modes in OpenGL ES
    • 🛠 Fix issue with model disappearing in rare cases with GLSL
    • 🛠 Fix ColorWriteAttrib not working as it should
    • 👍 Allow deactivating PStats collectors for GPU timers
    • Memory residency of graphics buffers now tracked by PStats
    • 👍 Allow changing OpenGL coordinate system with gl-coordinate-system

    🛠 Fixes for libRocket integration:

    • libRocket did not work on Mac OS X in 1.9.0
    • 🛠 Fix inconsistent behavior with non-power-of-2 textures in rocket
    • 🍱 Use model-path for finding libRocket assets
    • ➕ Add missing keys to libRocket keymap
    • libRocket elements showed up white in tinydisplay

    🆕 New features:

    • ➕ Add -L (lighting) and -P (graphics pipe) pview options
    • ➕ Add M_confined mouse mode that keeps cursor in window
    • ➕ Add sample program demonstrating mouse modes
    • 👍 bam2egg supports collision sphere and plane solids
    • p3d_TransformTable GLSL input backported from 1.10 branch
    • ➕ Add openal-device setting for selecting OpenAL audio output
    • ➕ Add limited modification timestamp tracking for Ramdisk mounts
    • 👌 Support for Autodesk Maya 2016