Winter is over and it’s time for a spring-cleaning. Many issues have been fixed this month and we’ve also completely refreshed the forum system. Also, changes have been made towards cleaning up the codebase and removing obsolete code. Keep an eye open for the awesome things our developers have in store for later this year!
The forums got a complete overhaul and has been moved over to Discourse, a 100% free and open source discussion board with plenty of neat features and a modern look. It has become quite a popular system of late, so it may appear familiar to some. The new software is considerably better at preventing spam and the increased mobile usability, code highlighting support and better notifications are welcome features as well. However, due to the conversion to Markdown, some formatting in old forum posts may not have been converted correctly.
If you have any trouble or concerns using the new forum, let us know! We’ll do our best to make the transition as smooth as possible.
Support has been added to the OpenGL renderer for adjacency information. This is primarily useful for geometry shaders that need to access information about vertices connected to the primitive that is being processed, which is useful when implementing effects such as silhouette rendering (as seen in the screenshot to the right). Panda3D can automatically generate adjacency information for existing meshes, but can also take precomputed adjacency information.
Logging in deploy-ng
A new addition to deploy-ng which could help with debugging deployed apps—especially on Windows—is the possibility to provide a path to a log file to which a packaged app will automatically write all of its output. As GUI applications on Windows can’t write to the console, this new way of logging can be used to easily reroute the output to a log file without having to write an extra logging mechanism in your application.
To enable this feature for your application, you simply have to set the
log_filename variable in your setup.py script. For an example, take a look at the setup script in the asteroids example in the deploy-ng branch. By default the log file will be rewritten every time, but with a simple switch of the
log_append variable, you can preserve the previous content.
Dropping support for MSVC 2010
Since we are continuing to take greater advantage of C++11 features in the Panda3D codebase, we can no longer support the Microsoft Visual C++ 2010 compiler. The 2015 version has been made the new default for building Panda3D from source on Windows systems, and we intend to cease supporting 2010 very soon. If this is causing issues for you or your team, please make your voice heard as soon as possible on the corresponding GitHub issue!
Dropping Mac OS X 10.6 “Snow Leopard” support
Furthermore, we also intend to stop supporting Mac OS X 10.6 “Snow Leopard” due to the limits it imposes on how much of the C++11 standard can be used in the Panda3D codebase. However, if your application is still targeting this version of macOS, please give your opinion on the corresponding GitHub issue.
Panda3D now supports the grayscale pixel format on Linux which is used for example by some infrared (IR) cameras. Additionally, the reading of video frames from the camera is now done asynchronously, meaning that the framerate of the application is no longer locked to the framerate of the camera in Augmented Reality applications. The previous behaviour can be restored by enabling the
v4l-blocking configuration variable.
Better Python 3 Support
Support for Python 3 has been enhanced by replacing usage of the C++
string type with
vector_uchar where it is used to refer to binary data. Since all strings are seen as UTF-8 now, this avoids exceptions which were raised due to confusion about whether buffers contained UTF-8 strings or binary data. Convenience functions have been added for efficiently dealing with the new way of representing binary buffers.
Media decoding and playing
CFSworks, who regularly contributes to the project, has done some work on various parts of the audio system, among many other changes. Firstly, he implemented workarounds for some rare OpenAL implementation bugs which are particularly prevalent on the Apple implementation. He also helped to clean up use of deprecated APIs in the FFMpeg integration and implemented features available to newer versions of this library. We are very grateful to him for his continued contributions.