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) :
Hantverk'n
Status | In development |
Author | Teknologicus |
Genre | Adventure |
Tags | Exploration, Open World, Voxel |
More posts
- Parallel Reduction of Voxel Coordinates1 day ago
- Global illumination pre-req visualizations4 days ago
- Rasterized triangles are evil!8 days ago
- Procedurally Generated Blocks (Video)11 days ago
- Fog is working again14 days ago
- Improved fragment/compute shading rates16 days ago
- Debugging variable compute shader rates21 days ago
- Deferred gbuffer rendering update22 days ago
- Deferred gbuffer rendering via compute shader ray marching output23 days ago
- Fast and Accurate Color Depth Conversion28 days ago
Comments
Log in with itch.io to leave a comment.
looking good
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... :)