Tuesday, 11 January 2022

Hybrid SDF volume renderer

Working on my hybrid SDF volume renderer. Going pretty good for now. Below you can see 1/4 of  a SDF sphere. SVO raycast + raymarch (primary and shadow rays). ~70 FPS on 1680x1050 without optimization on my old GTX 750 TI. After optimization it should be around 300 fps ;)



Monday, 10 January 2022

Our team games

Last year we released 3 games under a community team named "Bad Arts" (don't ask why such name - it's a joke). General idea was to release small and quick made games. Below are the links:

https://play.google.com/store/apps/developer?id=Bad+Arts

https://www.roblox.com/games/5824687152/Cube-Maze

I would say results are not bad :D for first attempt to conquer the gaming market. In summary we reached ~2k players without any promotion.  And again lots of experience. 

My work on Marching Cubes and Transvoxel

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.


New hobbies

I am currently making serious commitment to Machine learning and studying quantum physics. I actually have been doing this for a while, but ...