Urho3D cubic voxel surfaces


#1

Here’s a test run of something I’m working on that uses Urho3D, Polyvox and OpenSimplexNoise:


#2

That looks pretty cool already!

Also, welcome to the forums. :confetti_ball: :slightly_smiling_face:


#3

I implemented my own light-weight voxel volume and cube voxel surface generator classes. I also switched to FastNoise SIMD. This version is using a texture atlas and has some related mipmap issues I need to fix.


#4

Fixed issue with mipmaps and texture altas. Enabled Urho3D shadows again.


P.S. I’m using Freeture (aka Faithful 16x16) WTFPL licensed / public domain textures.

#5

Generation of a 384 x 256 x 384 voxel world in about 9 seconds. This is using my own voxel volume and cubic voxel surface code, open_simplex_noise (3D) and C++11’s std::thread (std::mutex) to achieve this performance on an Intel (quad) Core i5-6500 CPU @ 3.20GHz. Video card is a GeForce GTX 560.

P.S. Project was in debug build. If I switch to release build, FastNoiseSIMD (simplex) and push the thread count higher, I can get it to generate in about 2 seconds.


#6

Awesome world generation performance improvement:


#7

this looks great! Are you using polyvox?


#8

Thank you. I started the project using Polyvox, but then wrote my own C++ code to replace the Polyvox functionality I was using.


#9

Even though I’m as anti-voxel as you can get (long live surface walkers!), this is nice to look at - you do a great job with presentation in these videos, especially the most recent one where you hesitate before moving in on the detail.

Nice work.


#10

I’ve added a user interface to adjust various world generation parameters. Here are some screenshots. In each, I’ve re-selected the field (parameter) which was just changed prior to clicking “Apply” to make it easier to see what was changed. I revert each change before changing the next field.


#11

I very much improved how multi-threading is handled, added more world generation parameters as well as heightfield support. A lot of code clean up and abstraction to handle different procedural terrain generators which each have their output combined together to generate a single world (in chunks). Todo: Heightfield should have its own set of world generation parameters. Add trees, water, caves, ores, other rock types, world traversal chunk paging, player, mining, additional lighting system for darkness in underground areas, etc.