So at some point I decided to develop a Voxel Plugin for Flax engine written in C++. Mostly inspired by how awesome UE Voxel Plugin is and how awesome and fast Flax is. It was fun and I learned a lot about voxels and Iso surface extraction. About acceleration structures (mainly octree), signed distance field and so on. I got pretty far with the code.
Near camera, full resolution surface.
Camera far away, 2 resolutions and between Transvoxel (marked yellow)
At some point I played around with free UE Voxel Plugin and understood the enormous work I would have to put in in my project to get any near that. Probably at the time I would be finished, this tech would be grown super old and nobody would use it (ray tracing is coming in fast). So I took from it what I learned and ditched the project.
Well not fully. Some vision, idea come to my mind and started to port the code to Roblox. And for some part I nailed it. The performance or/and generation times are poor :/, but otherwise it work great.
In the image you see a complex case a corner transits to a lower resolution. And it looks damn ugly when implemented as Transvoxel paper suggests (image below):
Below is mine solution. The transition is much more smoother (it can't really get any better). But holes are opened, that I currently have no idea how to fill them.
Bugling around this problem I got annoyed on this project and left it hanging for now, but I hope to get back to it and finish. Would be great if that happens when Roblox Parallel LUA goes live. Because parallel execution (multi treading) would help a lot for performance and/or generation times. Some say its a must be for procedurally generated worlds.
No comments:
Post a Comment