Overhaul of buffer use in voxel engine


I still haven't started in on implementing the global illumination part of my voxel engine.

I've overhauled the semantics of how Vulkan buffers are used in my engine to send/update shader buffer data.  This includes both using shared buffers between shader passes and using GPU to GPU buffer data transfers which are faster on discrete GPUs  than CPU to GPU buffer data transfers.  With these changes there are both performance improvements and lower GPU RAM usage.

Right now my voxel engine does ray marching in a fragment shader.  I've decided there is much more flexibility to be had to do voxel ray marching in a compute shader.  These changes will be advantageous both in implementing global illumination as well as optimizations in rendering scenes.

Here's a screen shot of procedurally generated mushrooms with grooved gills (smaller mushroom does not have grooved gills) :


Comments

Log in with itch.io to leave a comment.

(+1)

looking good

(+1)

Hey this is awesome! I've spend the last 3 or so weeks changing how my engine uses buffers, and hilariously, I changed from fragment rendering to compute rendering this last week actually :) I'm glad to see your still making progress!

Excellent!  I've been looking into using a gbuffer with the ray marching version of my compute shader...  :)