A 3D scene!
This is when things start getting exciting. Actually…no. Progressing from a triangle to rendering a 3D model was exciting. But progressing to an actual scene I can move around in is mind blowing!
First 3D scene in Nim.
This scene – which is based on Diligent Engine’s Shadow sample – has proven that I can create interactive 3D scenes using Diligent Engine and my cinterop library.
At this point the code to load GLTF models has taken shape, as that is required to load the entire scene in the first place. Diligent Engine already comes with an asset loader implementation for GLTF files, so all that has to be done is to wrap the existing C++ code with Nim.
I have decided to stick with Vulkan as my primary rendering target due to its ubiquity. It took a degree of fiddling since the original Shadow sample uses DirectX, but thankfully the API abstracts away the differences between rendering APIs well enough to let me figure out the equivalent Vulkan calls quickly.
Now that I have a scene that I can see, the next frontier is a scene that I can touch. Or one that my avatar can touch, anyway.