Vulkan progress report #4

By: Juan Linietsky Oct 12, 2019

Vulkan all day long

Over the course of September, I continued working on Vulkan all day long, and several improvements have been made.

Materials

3D materials are now working again. Post processes are still mostly missing, but the material testers demo is fully functioning.

materials.jpeg

The SpatialMaterial class has been renamed to StandardMaterial, as this name will be more user friendly and less ambiguous. All the settings and categories in this material have been reorganized:

smat.png

This should make editing 3D materials hopefully easier than it was before, as all the material options were crammed up in singled categories.

Added to this is a simple ORM material variant, which should make importing textures from GLTF2, or from applications such as Substance Painter, or similar much easier. It takes a single texture with Occlusion, Roughness and Metallic parameters and does not expose a lot more.

ormat.png

Finally, due to popular demand, the depth texture has been changed to height texture. It retains a flag to flip the color for compatibility.

EEgZSOSXkAIy0gB.png

Note that old SpatialMaterials will still work in Godot 4.0 and their data will be automatically remapped to StandardMaterials. Likewise, Meshes created in Godot 3.x will work using the mesh format in 4.x. The .import folder will need to be erased when switching between versions, though.

Visual Frame Profiler

Another very requested feature for 2D and 3D is performance analysis tools. Users often run on CPU or GPU side performance bottlenecks and it is not always obvious what the source of the problem is.

To better find what is going on, a new visual frame profiler was added. This profiler shows all the steps that take place during rendering a frame and their cost in both CPU and GPU. Inspecting the frame history is also possible, so going back in time to find what caused a peak is done the same way as with the script profiler.

vpf.gif

Shadows, Reflections, Skeletons, Multimesh, etc.

Most real-time lighting code has already been implemented, so the 3D platformer demo (and even the TPS demo) seems to work

pdemo.gif

Basis Universal

While not strictly Vulkan based, Basis Universal was added to Godot as an optional import format.

Basis Universal is mostly useful for 3D games and results in 75% smaller textures, at the cost of much slower import time (so, won't want to use it until deploy) and slightly worse visual quality and loading times.

bu.png

Stay tuned for next month!

October will be a fun month, with all the focus on the new real time global-illumination features that will be coming for Godot 4.0!