▲ 90 r/vulkan+2 crossposts

Multithreaded Game Engine - Midnight

Hi guys, I'm working on a very early-stage game engine built on top of a fairly optimized renderer. Here's a quick demo!

The furthest-along system I have at my disposal is a multithreaded task graph with work stealing (Chase-Lev, with slight modifications to minimize stealing) which currently supports the terrain streamer.

You can see the ultra low CPU profile at the end of the flight sim. While streaming terrain into existence I'm barely poking 5% utilization! The memory model is also constrained to wrap the necessary demand quite tight, and implements a demand-paging (reserve/commit) approach and both the Windows and Linux system calls are included to do so. Cache coherence is preserved aggressively. Performance first!

Other improvements I've made this year, in regards to better perf:

- "Bindless" descriptor indexing. No more binding descriptors per model draw

- Frame packet construction. Zero pipeline thrashing

- Compute skinning pipeline. Duh

The new MT and memory models are hands down the pride and joy of my achievements so far this year.

I'd like to implement MDI, but that may wait until further down the road, as I seem to have plenty of headroom for the task at hand. Thanks for peepin'

u/YoshiDzn — 8 days ago
▲ 157 r/vulkan+1 crossposts

Nailed it! Procedural Terrain Streaming

Hi guys. I recently wrapped up my new multithreading and memory models and now my Vulkan (C++) engine, Midnight, has a working terrainstreamer! This video shows the linear streaming policy since im designing a game much like Starfox64. There's also an "AllRange" policy where chunks are maintained given a radius around the player.

Generation is seeded determinism so I can recreate the same worlds across different runtime. Terrain stages are

- Points

- Aggregate neighboring points

- Height field

- Triangulation a mesh

- Build a spatial acceleration structure (for O(1) queries in space for hit detection and the erosion simulation)

- The erosion simulation which has 4 sub-stages (hardness distribution, hydraulic erosion, thermal erosion, ridge enhancement)

- Asset packing to transfer to the graphics device

Next up I'll be doing the triplanar mapping of textures and designing biome weights. Then collision detection.

This took me 8 months and a ton of research and I'm thrilled with the results. This is actually version 2. The first used a different parallelization schema which proved to be too CPU intensive as it wasn't lockless. I could go into detail about the MT and memory optimizations but thats for the cpp subreddit.

u/YoshiDzn — 14 days ago
▲ 67 r/wow

Homage

I'm officially a raid mob (Savvys - Defias Pillager)

u/YoshiDzn — 1 month ago

My new World of Warcraft Tatt

Black Altar Collective - Lancaster PA - By Emily

Loving how much detail she packed into this design!! If you know the game, you know this symbol well! I love it!!

u/YoshiDzn — 1 month ago