Ok so I spent quite some time developing a VR world in Unity a few years back but felt the compile and test cycle was very slow and at one point I stopped that project. I then discovered Babylonjs which also supported WebXR and in a couple of months I had ported and added many more features for my VR world builder thingy. But the moment I started working more with rich outdoor scenes I got into trouble with performance and I had to seriously reduce the visual fidelity in general but still struggled with the engine not handling many objects or draw calls. No doubt because it was single threaded JS and it seems the WebXR translation layer just added a lot of overhead even with thin instances (which is how you speed up drawing considerably for outdoor flora).
I had read a lot about Godot and saw some dev videos, mostly pixel graphics side scrollers. I never really thought that Godot had come this far in 3D rendering until I started experimenting and saw that it supported VR brilliantly and had every bells and whistle I could want. Naturally I dove into the outdoor rendering immediately and have been gradually migrating part for part from my Babylonjs version to Godot except my server connection and house construction parts. I want to improve both anyway so those come last anyway in my Godot adventure.
I have enclosed some screenshots below to showcase some of the things. Everything is running at 72hz stable on my 4070 Ti Super with MSAA 4 on my Quest 3.
This image above was the first I took when I had working splat maps in my terrain which added a needed level of texture to the world. Everything is infinitely procedurally generated at this point with 32x32m chunks added and removed as you move about in endless exploration. The plan however is to have limited worlds/planets generated on the server to which all the things happen on a particular setting/scenario/quest/whatever (still so many options to choose how to build this).
Here I am showing the glass UI I made where the UI elements are physical objects as I simply hate the flat screens everywhere in many UIs made for VR and just wanted to experiment some. Atm the bits that are ported is where you can select objects from templates and spawn them into the world (some in the background there). I have made it somewhat generic so that I can grow the features to the UI as needed.
All objects have behaviours that can be attached to them so that e.g. the Arcade here can connect to a server that streams the arcade to the screen and sends input back to the same server as the user controls the joystick or presses buttons on the actual 3d model. At least that worked in my Babylonjs version but my Godot version above I have not wired it all up yet.
Playing a bit with two cloud layers I now have a working weather system that makes it transition between weather configurations that affect everything from lighting to wind speed (affecting cloud movement, all flora and water). The clouds are simple noise textures though as volumetrics is the most taxing part to render which I use for the fog when the weather goes stormy as well as misty mornings and evenings. The atmosphere this adds is amazing in VR.
The latest addition to the world is smaller bodies of water that can fit within a 32x32m chunk. It adds some nice elements and I am soon going to add some flora that likes in and around water like reeds to make them look a bit better.
So many things I want to do now going forward and I just want to say that Godot has been amazing to work with and is giving the performance I was seeking for my VR project as well. Hoping to post some updates here as I go along if that is of interest to people here. Please dont ask for binaries or anything, as it is in no shape to be shared at this point and besides the goal is for it to connect to a server for multi user access at one point too. But feel free to ask how things are done.
PS: Getting weather and all the dynamics to work feels like an analog synth with 100 knobs to turn so you can spend days just tweaking this down to how much motion grass should have vs a tree trunk. There is still a lot I want to do and try out there but I now try to balance the time I spend on the outdoor areas vs the actual VR mechanics and stuff like having a real avatar which is sorely missing and is a big can of worms as well.




















