Home Creators Posts Import Register Favorites Logout

Content

A new raytraced audio demo is available for download here.

This demo runs on Windows, and may be functional on Linux via Wine or Proton. I'm unsure about Mac as they've deprecated OpenGL support.

Troubleshooting

If you have any issues running the demo, please send me your log files. Log files are stored in the bin/logs folder.

Controls

This demo uses a typical third-person controller with WASD for movement and mouse to look around. All controls can be viewed in-game by pressing escape and clicking Controls in the bottom-right.

You can also change between third-person and first-person using the scroll wheel.

Benchmarks

Press F1 to view 3D rendering and raytracing stats. All times are in milliseconds:

Main thread time

Preparation time

Raytracing time (collated across multiple threads)

Analysis time

Please let me know your CPU model and how long it takes to perform raytracing when moving your character around.

Settings

Press Escape and click 'Settings' in the bottom-right to toggle Audio Visualisation and adjust ray and bounce counts. You can double click on the sliders to enter an exact number.

Note the visualisation is only enabled for rabbits at the moment

Please let me know how well this demo runs, or if you run into any issues.

Changelog

Crepuscular rays now render correctly

Fixed a startup crash on AMD graphics cards

Fixed a startup crash on NVIDIA graphics cards with Linux drivers

Fixed multiple startup crashes on Intel graphics cards

Files

Comments

Antonio Lobato

I just tried it on various proton releases in linux via adding non-steam game to steam, and it loads, i hear sound, but there's no video (grey screen). I have the logs -- how do I (and others) send them to you?

vercidium

Thanks for letting me know, can you please upload the logs to Google drive or pastebin and send a link here? Or you can email me at mitchell@vercidium.com

vercidium

Thank you for the log files, I've published a new version that should fix this startup crash. Please download it again from the top of this post

vercidium

I've just published a new version, please download it again from the top of this post and let me know how it goes :)

matiasgql

Everything works as expected, in my Ryzen 9 7950x i got these numbers: VAudio: Main: 0,11 Prepare: 0,02 Raytrace: 0,38 (while moving, otherwise is 0,05) Analyse: 0,05 Rays: 1896/20592 Cache: 90% Ambient LF: 100% Ambient HF: 100% I Hope this become useful to you

Stanislav Yuliyanov

Hi, the demo works fine on my Windows installation using 5700X3D and RTX 3090. I few things I noticed while trying the demo (maybe they're intentional): 1. When a player enters a house, external sounds are expected to gradually fade out, which generally works correctly. However, in third-person view, the camera may abruptly move through a wall to follow the player, causing the audio to instantly become muffled instead of fading smoothly. Would it make sense to base the audio listener position on the player’s model in third-person view, and switch to the camera position in first-person view? 2. When I entered free-roaming mode and moved several hundred feet into the air, the environmental audio didn’t change. It still sounded like the birds and trees were positioned around me at ground level. Excellent work overall, I see the potential! I'll be happy to follow your progress and provide feedback!

J

I am running CachyOS with the 6.19.6-2-cachyos Linux kernel with the Hyprland compositor. I tested the demo with Proton 10 through Steam, and it worked perfectly first try! I have a Ryzen 7 7700, and I got the following VAudio performance benchmark at one moment with the default configuration at 144fps when walking slowly through the shallow water. I added rough ranges for the fluctuations of these values, though they are not centered around where the values tended to most commonly, they are only approximate ranges for where I found the value to be across a few seconds Main: 0.24 (0.10 to 0.40) Prepare: 0.01 (0.00 to 0.04) Raytrace: 0.66 (0.40 to 0.70) Analyse: 0.02 (0.02 to 0.04) Rays: 1261 / 20592 (1000 to 1500) Cache: 93% (93 to 94) Ambient LF: 100% (steady) Ambient HF: 100% (steady) Note: the cache value rose to 99% exactly every time I stopped walking After cranking all audio settings to the max but leaving the framerate at 144, I got the following VAudio benchmark while walking slowly in shallow water Main: 0.17 (0.10 to 0.40) Prepare: 0.01 (0.01 to 0.02) Raytrace: 126.30 (126 to 136) Analyse: 0.07 (0.06 to 0.10) Rays: 271640 / 656880 (270000 to 340000) Cache: 58% (46 to 58) Ambient LF: 100% (steady) Ambient HF: 100% (steady) Note: this time the cache value rested at 59% when I stopped walking Overall, the demo ran very smoothly. I never maxed out the CPU usage at 144fps or when I tested later at 180fps (I didn’t record that benchmark). At maxed out settings, the CPU usage seemed to idle around 20%, but it did spike to roughly 90% when more sounds, like walking, were present, so I imagine lower end CPUs would get fps drops at those settings. I did notice a significant, and in my opinion, worthwhile improvement from the default configuration to maxed out settings, particularly in the transition between the house and the outdoors, as others have noted. By the way, the water effects, the sunrise/sunset, effects, and obviously the audio effects are beautiful!

J

One small extra note, I got some pretty heavy stutters when adjusting the shadow cascades setting

vercidium

This is excellent feedback, thank you! I'm glad it works on Proton. Interesting the cache sat at 59% in the water. I'll check what's going on there. Yeah max settings are pretty full-on, 64 bounces for occlusion/permeation don't help much as rays lose most of their energy after a few bounces (depending on the material), but the higher ray count does help I've also noticed areas in the villa where audio acts strange (ambient sounds fade in/out quickly). More rays definitely help in complex environments. I'd recommend to developers to let users adjust these settings (at least a low/medium/high quality setting) so that those with more powerful CPUs can increase the ray counts. Stutters when changing shadow settings makes sense, as it needs to re-create all the shadow textures. Thanks again for the feedback, this is very useful!

vercidium

Thank you for the feedback, great point about the third person camera. I was testing this in Arc Raiders too - their point of reference is the player, not the camera. I'll change this demo to match. The ambient sound files are only 4 channel (left/forward/right/back) so they don't have any vertical directionality. I'll see if there's a setting in OpenAL that I can use to position the sounds at ground level.

Abid Hasnine Mahi

Very cool demo! It ran buttery-smooth on my 5600X - RTX 3060 PC. Thank you very much for letting us experience this beauty. How's the progress on your Unreal Engine Plugin for Raytraced Audio btw?

Abid Hasnine Mahi

Exactly! Audio while going in-'n'-out through doors feels very strange...

vercidium

Great to hear, thank you! The C SDK and UE plugin development is paused at the moment as I'm finalising and launching the C# SDK and Godot plugin. If all goes smoothly I'll resume work on the C SDK soon

Abid Hasnine Mahi

I'm glad to see that. Hey, I was just wondering if I could contribute to your Raytraced Audio Plugin for Unreal Engine or, maybe the C/C++ SDK. I've been watching your videos since 2023; and they've fascinated me, and inspired me a lot! But your last video on Raytraced Audio was by far the coolest and the most fascinating stuff I've ever seen. Specially the Deaf Visualization part gave me goosebumps; it was very intelligent! Since then, I've been wanting to contribute on your brilliant project, it'd be a great honor. I thought you'd make the source code available, just like your other projects. Now, I am thinking that if I could contribute privately. Is this something you think possible? I'd love that! ❤️

Abid Hasnine Mahi

Hey! I recently came across Steam Audio. What makes your Raytraced Audio stand out from Steam Audio? I'm just genuinely curious... 👀

vercidium

Steam Audio is very similar - it also has real time raytracing for occlusion, permeation and reverb. I don't have concrete benchmarks to compare, but it seems Steam Audio only casts rays against triangulated meshes, whereas Vercidium Audio casts against primitives (cylinders, spheres, prisms, capsules, etc). My system might have faster raytracing and handle better rounded objects better. Steam Audio has compute support (Radeon Rays, Intel Embree) which I don't support yet. The main advantage I have over Steam Audio is clear documentation and a modern C# API that's easier to work with.

vercidium

Wow, sounds like a huge project! In this demo it takes 1-4ms to update all rays on my i7 10700F CPU, depending on how high the ray and bounce counts are set. Performance relies heavily on scene complexity - complex meshes are slow, whereas simple boxes and cylinders are very fast to raytrace against. For a 1/1 scale game you'd only add nearby geometry to the simulation, and add/remove geometry as the player moves around.

kyle

you might want to optimize this demo, i placed 500 torches in the same spot and now my game is lagging

Eric Nabor

Hi, great work ! Regarding the cpu usage : is it 1-4 ms per audio sourcec or for all sources ? Also I wonder how far the source can be from the listener in a very complex interior with closed rooms, lots of corridors, etc... : I guess the number of bounces needs to be limited to a certain order : is the source considered as inaudible if none of the rays reach the listener ? Finally, do you know any solution to simplify the complex geometry of a game ? Thanks and again, great work.

vercidium

In this demo it's 1-4ms for everything (reverb, ambience, muffling of all audio sources) I recommend tweaking the ray/bounce count based on how your environment is set up - every game is different and will require a bit of tweaking. You can edit any setting at runtime, so it's easy to experiment. The source is considered audible based on the amount of occlusion energy and permeation energy that reaches it. For example, your listener emitter might cast 1024 occlusion rays and 128 permeation rays. Then, on each source you'll set the 'energy cap', e.g. 15% of occlusion energy or 30% of permeation energy is required for the sound to be at max volume. For example if 0% of occlusion energy and 15% of permeation energy reached the source, it'll be at 50% volume The Godot/Unreal plugins use the same low-poly primitives that physics engines use - e.g. boxes, spheres, cylinders, capsules, etc. These are much faster than raytracing against meshes. If no low-poly collision shape is provided, it'll raytrace against the mesh (slower, but works). If your environment is mesh-heavy I'd recommend splitting the complex objects up into smaller box/sphere/etc-shaped objects, and then setting box/sphere/etc collision shapes on each one. The less it has to work with meshes, the faster it'll raytrace.

James Russell

When i try to download it, Brave says "Failed - Virus detected" It says it's Trojan:Win32/Suschil!rfn, which is a common false positive that happens based off of behaviours or file packaging rather than actual code.

vercidium

Which antivirus do you use? I'll submit a ticket with them Edit: ah, just the Brave browser?

vercidium

Thank you for letting me know - I'll submit this false positive to Microsoft