Another experiment with my POINTS library. This is basically an old physarum/slime demo I made a while ago, but rebuilt with compute shaders, particles and a lot more efficient than before.
With the new version of my WebGPU library POINTS v0.6.0 (https://github.com/Absulit/points), I added a bunch of new features like support for depth maps, cameras, bloom and others, so I wanted to make a demo that used all of these.
This demo has a 262K+ instanced particles (cubes) animated in compute shader, movement driven by a noise texture, it uses the depth map to create a slight depth of field and also some particles are emissive and to make the effect complete it has some bloom that affects only the bright particles, this thanks to the HDR output that allows those cubes to have a brightness beyond white and then those values are tonemapped to fit in the final output.
I've been playing with Graphviz to automatically layout my render graph debug, and the side effect is that I can create a graph representation of how a frame gets rendered in my engine!
First image is the Graphviz result, and second is the debug window inside the engine (which already existed before)
Graph of the author's engine render passes. Same content than the first image, but this time directly inside the engine via an ImGui window. Contents are cropped to fit on a regular monitor.
Question for Vulkan people: Is it possible to usefully use vkCmdDrawMeshTasksIndirectEXT? gl_InstanceIndex seemingly isn't available in task or mesh shaders so I can't figure out how the shaders are meant to know which instances they belong to
Am I missing something here? #vulkan#graphics#graphicsprogramming#3dgraphics#gpu
Just rendered my first Vulkan triangle in raw x86-64 Assembly.
No C, no C++, no Rust.
Pure MASM64. Pure pain. Pure control.
This is what it means to go full bare metal.
More to come. ⚙️🔥 https://github.com/IbrahimHindawi/masm64-vulkan