Nick's Voxel Blog
Sunday, 8 October 2017
Complete source release
I had for quite a while intended on fixing various problems with the engine's code and then doing a release of the source code. I have never managed to get around to any of that so instead I have decided to just stick the code up github as-is, warts and all. You can find the code used for all the posts on this blog here: https://github.com/nickgildea/leven
Saturday, 11 March 2017
Mesh simplification library
I've released a mes simplification library here: https://github.com/nickgildea/ng_mesh
No external dependencies beyond the qef_simd.h single file library I released last week.
No external dependencies beyond the qef_simd.h single file library I released last week.
Thursday, 2 March 2017
SSE2 QEF implementation
I've ported the existing QEF implementation to SSE2. You can grab the code here: https://github.com/nickgildea/qef/blob/master/qef_simd.h
It should be possible to just drop that in to your project as a replacement, assuming you then enable SSE2 extentions when building. I saw ~2.5x speed up in my tests.
It should be possible to just drop that in to your project as a replacement, assuming you then enable SSE2 extentions when building. I saw ~2.5x speed up in my tests.
Tuesday, 22 December 2015
Improving Generation Performance
There are quite a few high profile games coming out in the next year or so that make use of voxels to drive dynamic content. Two in particular have really caught my attention, for different reasons. The first was Hello Games' No Man's Sky which is in a similar vein to my own project, using voxel data and Dual Contouring to generate traditional polygonal meshes.
Monday, 19 October 2015
Video update for October 2015
I've posted a new video to YouTube showing some of the speed improvements I've made recently.
Since the last video in Feburary I've moved the entire voxel -> mesh pipeline (except for the seam mesh generation) to the GPU via OpenCL and reworked how the volume is processed. I'm planning on a blog post to explain the changes but the main thing is that I no longer always sample the field at a 1:1 resolution. E.g. for a LOD1 node I now only sample a 128x128x128 volume instead of 8, and for LOD2 only 1 volume instead of 64. This has had a huge impact on the performance which has helped with other features, like the dragging operations you can see in the video.
Since the last video in Feburary I've moved the entire voxel -> mesh pipeline (except for the seam mesh generation) to the GPU via OpenCL and reworked how the volume is processed. I'm planning on a blog post to explain the changes but the main thing is that I no longer always sample the field at a 1:1 resolution. E.g. for a LOD1 node I now only sample a 128x128x128 volume instead of 8, and for LOD2 only 1 volume instead of 64. This has had a huge impact on the performance which has helped with other features, like the dragging operations you can see in the video.
Sunday, 26 July 2015
Fixing a seams bug
I've been sitting on the "fix" for a bug with the seams for a while now, and since I can't figure out a better solution I'll share my current one.
Thursday, 4 June 2015
Dual Contouring with OpenCL
I've spent the last few weeks rewriting the core component of my engine, the voxel pipeline. This encapsulates the whole process from density function to a triangle mesh. In terms of functionality the pipeline is essentially the same, but now is (almost) entirely implemented using OpenCL. In fact the OpenGL/OpenCL interop is used so that the generated mesh lives and dies exclusively on the GPU.
Subscribe to:
Posts (Atom)