Home Creators Posts Import Register Favorites Logout

Content

Version 1.8.1 released today, featuring dev builds for Linux and Mac and Godot improvements.

This post covers the latest features and improvements, plans for future versions, concerns around OpenAL / FMOD and progress on the Unreal Engine plugin.

Read the full changelog here.

In case you missed it, raytraced audio is now available for Godot! Watch the announcement video here.

Links

Download the SDK here.

Download the Godot plugins here:

2D C# Godot plugin

3D C# Godot plugin

3D Standard Godot plugin

Godot - Native

The native Godot plugin now runs on Linux and Mac. Please note the debug window does not currently work on Mac - a fix is planned for 1.9.0 (read more below).

Download the Native Godot plugin here.

A native plugin for 2D worlds is also on the roadmap.

Godot - Materials

Some users noticed rays were getting stuck on the surface of objects. This occurred in cases where there was a pair of MeshInstance3D and CollisionShape3D nodes - both would be added to the raytracing simulation, causing 'z-fighting' on the overlapping faces.

The temporary workaround was to set a material on each CollisionShape3D, rather than on the parent node. However individually assigning materials is tedious.

In 1.8.1, there are new settings to control how materials propagate to child nodes.

On the VAWorld node, you can now select which Render Layers and Collision Layers should be added to the raytracing simulation:

Separately, Node3D nodes have a new 'Propagate To' setting that controls whether this node's materials should apply to:

All child nodes

Child collision nodes only, e.g. CollisionShape3D

Child visual nodes only, e.g. MeshInstance3D

This solves the issue with the Terrain node above - by selecting 'Colliders Only', the Terrain node's grass material will only apply to the MeshInstance3D nodes.

Please let me know if you face any issues with these new settings.

I have also received a few comments about using Resources for materials rather than metadata strings. I think this is a great idea and plan to add it to 1.9.0.

Linux + Mac

A native dev SDK is now shipped for Linux and Mac, which renders the raytracing scene to a separate debug window.

The Mac SDK also supports this debug window, but it breaks when spawned from within a Godot process. This is because both debug window and Godot use GLFW as their window manager, causing both fight for control over each window, resulting in a crash.

A fix is planned for 1.9.0, which will move the debug window out into its own process. As a bonus, this will also allow the debug window to appear alongside games that use the GL Compatibility renderer on Godot.

1.9.0 Roadmap

As mentioned above, 1.9.0 will feature:

Improved debug window - can run alongside Mac Godot processes, and the GL Compatibility renderer in Godot

Material resources for Godot

Indoor Optimisations1.9.0 will also deprecate of the 'Is Indoors' World setting. This setting currently controls whether reverb rays stop bouncing after hitting the skybox, to simulate the rays escaping and losing all energy.

Instead, reverb rays will stop bouncing after losing 99% of their energy. This threshold will be customisable. This will also result in faster raytracing, as currently rays continue bouncing even if they have very little energy.

To replicate the old 'Is Indoors' setting, adjust the Absorption properties of the air material. By default it has 1.0f absorption (all energy is lost on bounce), and by lowering this value the rays will keep some energy when bouncing off he world edge.

Polygon and Path InstancingThe 3D SDK features a Mesh class that stores vertex data and can be reused in multiple mesh primitives. The 2D SDK lacks this functionality for its polygon and path primitives, and 1.9.0 will feature new Polygon and Path classes that can be reused in multiple primitives.

The Godot plugin should also create a Mesh for each mesh resource attached to MeshInstance3D nodes, and re-use it across multiple MeshInstance3D nodes.

Unreal Engine

The Unreal plugin is currently lacking a few features that the Godot plugins have:

VASourceLeech nodes - this is currently coupled into the VAudioRelativeSource actor. Need to separate into separate actors for simplicity

Stream nodes - Unreal has no support for spatialising local microphone data or VOIP data

Ability to resize + position the World actor in the editor viewport

Automatic muffling targets - currently actors need to be manually added to the VAListener's targets array

The Unreal plugin will be updated in 1.10.0. I understand many of you are waiting for Unreal support. It is planned, but there are loose ends to tie off with the Godot plugins first. Thank you for your patience!

So far I've only tested the plugin with Unreal Engine 5.7, but I plan for this plugin to work on other engine versions (v4, 5.7, etc). There's nothing specific about 5.7 that this plugin relies on, it's just the only version I have tested with so far.

Audio Engines

I'd like to clarify a few concerns were raised about OpenAL Soft / FMOD.

GodotFirstly, Godot's audio engine:

does not support HRTF / binaural audio - it's difficult to tell when sounds are infront/behind, or above/below you

doesn't have the best spatialisation - sounds seem to fall off unnaturally over distance

doesn't support 'outdoor' reverb - even while standing outdoors, it still sounds like you are indoors

doesn't support directional reverb - a gunshot that fires in a building next to you will not have any reverb

This is why I recommend using OpenAL Soft or FMOD.

OpenAL SoftOpenAL Soft is free to use and is cross-platform. The Godot plugins now include .so, .dylib and .dlls for OpenAL Soft in their release packages:

2D C# Godot plugin

3D C# Godot plugin

3D Standard Godot plugin

Shipping is simple - just place these binaries next to your game's .exe file.

I have tested this on Ubuntu and Mac (arm64) and faced no issues. Please let me know if you're having issues with audio playback or running the plugin.

FMODAs an alternative to OpenAL Soft, I also plan to support FMOD as an audio backend. This will require 4 new Godot plugins:

2D C# Plugin

3D C# Plugin

2D Native Plugin

3D Native Plugin

I will aim to keep the API surface (VA nodes and settings) identical across all plugins, but there may be differences between OpenAL and FMOD that can't be avoided.

WwiseI have been asked if there will be Godot plugins for Wwise. A few months ago I created a Wwise + Vercidium Audio .NET demo that demonstrates muffling and reverb, but it was a mission to set up.

It will take a lot more time to create a Wwise Godot plugin than the FMOD one, as the Wwise workflow is still very confusing to me. It's still on the roadmap, but unfortunately won't be ready for quite some time.

UnrealUnreal's audio system is excellent, I had no issues setting up filters and reverb there. It doesn't support directional reverb, but I've created a custom submix that pans the reverb from left to right speakers based on its direction to the listener. This is much better than nothing, but doesn't support full HRTF directionality like OpenAL does.

An Unreal + FMOD plugin will also be created, which uses FMOD as the backend (similar to how the current Godot plugin uses OpenAL Soft as its audio engine).

That's All

Thank you for reading, and thank you to everyone for the positive support on my latest YouTube video! I am excited to hear what you create with raytraced audio.

Files

Comments

J.C.

, , ,