Godot Daily

Godot Daily: HDR Revolution and Physics Polish

Eight pull requests merged today, headlined by major HDR output improvements across Windows, Apple, and Wayland platforms that eliminate the need for inefficient polling. The ThorVG library got a massive 1.0.3 update, physics transforms received performance optimizations, and several quality-of-life fixes landed including better error messages and build improvements.

Duration: PT3M57S

https://podlog.io/listen/godot-daily-33eb1ffe/episode/godot-daily-hdr-revolution-and-physics-polish-d4fe7c8a

Transcript

Good morning, fellow Godot developers! Welcome back to Godot Daily. I'm your host, and wow, do we have an exciting episode for you today. We've got eight merged pull requests that are going to make your development life significantly better, especially if you're working with HDR displays or physics-heavy scenes.

Let's dive right into today's headline story - the HDR revolution that's been brewing in the Godot codebase. We've got not one, but two fantastic pull requests from DarkKilauea and allenwp that are completely changing how HDR output works across platforms. Here's the thing - up until now, if you wanted to respond to HDR state changes, you had to poll the system every single frame. That's like constantly asking "Are we there yet?" on a road trip - it works, but it's exhausting for everyone involved.

DarkKilauea kicked things off with PR 115666, adding proper window events for HDR state changes on Windows. Then allenwp swooped in with PR 118076 to bring that same love to Apple and Wayland platforms. Now, instead of polling, your games can simply listen for events when the user adjusts their screen brightness or switches between HDR and standard displays. It's elegant, it's efficient, and it's exactly the kind of developer experience improvement that makes me excited about Godot's future.

Speaking of massive improvements, Chubercik just landed an absolutely enormous update - ThorVG 1.0.3. This is the library that handles SVG rendering in Godot, and we're talking about changes to 100 files with nearly 10,000 lines added. Now, Chubercik was refreshingly honest in their description, mentioning there might be a few bugs to squash since this is such a substantial update. But that's the beauty of open source - we ship improvements iteratively and fix issues as we find them, rather than waiting for perfection.

On the performance front, mihe delivered something really clever with PR 118080. They optimized physics transform propagation for RigidBody2D, RigidBody3D, and PhysicalBone3D nodes. The fix is beautifully simple - only update transforms when they've actually changed. It's one of those optimizations that makes you think "why wasn't it always like this?" but sometimes the obvious solutions only become obvious after someone smart points them out.

Now, here's a change that's going to save developers from some head-scratching moments. Akien-mga improved the error message for Node.get_path_to() when there's no common parent between nodes. Instead of getting a cryptic engine error, you'll now see a clear, user-friendly message explaining what went wrong. It's a small change, but these quality-of-life improvements really add up to a better development experience.

We also got some great housekeeping done today. ArchercatNEO fixed a build issue for Wayland when libdecor is disabled - those ifdef guards are easy to forget but crucial for people with different build configurations. HolonProduction cleaned up some unused code in the Language Server Protocol implementation, removing an unused function that was just taking up space. And Mister-Ky caught a double include in os.cpp - sometimes the smallest fixes prevent the biggest headaches.

Today's Focus section: If you're working with HDR displays, now is a perfect time to update your projects to use the new window events instead of polling. Check out the updated documentation for DisplayServer and Window classes to see how these new events work. And if you're doing any SVG work, keep an eye out for any issues with the ThorVG update and don't hesitate to report them - that's how we make Godot better for everyone.

That's a wrap on today's Godot Daily! Eight pull requests, countless improvements, and another step forward for the engine we all love. Keep building amazing things, and remember - every bug you report, every feature you request, and every line of code you contribute makes Godot better for developers everywhere. See you tomorrow for another dose of Godot goodness!