Terrain Generator
-
Hi,
I currently work on the terrain generator, by adapting the following blogs:
https://www.redblobgames.com/maps/terrain-from-noise/
https://gist.github.com/nowl/828013
https://pypi.org/project/opensimplex/Here's the current result:
You can see more in the following video:
https://www.facebook.com/michal.conos/videos/10158618015753765/Anyway would love to create my own skybox, but in order to do that I need somehting like :
drawTriangle(v1, v2, v3, c1, c2, c3)
v1, v2, v3 - traingle vertices as vectors
c1, c2, c3 - triangle vertices colors as rgb vectorsThis function just adds triangle for batch processing and defers the drawing till drawObjects() is called.
-
Very nice, I'm impressed! Looks like it's pushing the switch quite hard
-
Very impressive, will be very interested to see what comes of this, keep up the good work
-
Thank you :-) Well, not sure what comes out of this, I'm more engine/library writer rather than a game developer but who knows :) . But I shared this work so whoever is interested in it can re-use it as as. It would be nice to put the references to the original blog posts (included in code).
@Martin I'd be interested in the profiling since it seems the interpreter when generating the terrain takes its time, but it's expected since there's quite some math behinf (opensimplex noise). But the drawing itself should go straight to switch gfx pipeline...
The complexity is as follows: terrain is 256x256 heightmap array resulting in 255x255x2 triangles - which is around 130k. Typically I draw around 600 trees (the max is 1500). Each tree might have 100-200 triangles? (just guessing) resulting in additional 60k or 120k triangles. All in all I should be under 500k triangles which is not that much :)
-
@mixaal I would also like profiling. I've encountered some code that runs very slow and it's not clear to me if there's a specific task that is very slow or if it's a equally distributed slowness.
-
The current status includes grass, clouds and skybox, also cleaned-up the code a bit ;)
Some clouds in the sky:
Overcast:
In the highlands:
-
This looks so cool! Awesome job man.
-
@Jongjungbu Thanks a lot :) !
-
Absolutely awesome beyond words. Just took a look at the code.. Think I've got some homework to be getting on with!
I think you should add a single, randomly placed, random object and the goal is to find it. (It should be ridiculously small)
-
Hi @Dave , Thanks for these words ! Good idea to make it a little more like a game rather than a demo. Will take a look at it !
-
Ridiculously small? @Dave
You are brutal! -
Isn’t that why people talk about needles in haystacks? Because they’re fun to find, right?
-
amazing work!
-
So tell us Mixaal... what could we do to the terrain generator to help you on this quest - any limitations? what does it need. The truth is it is an early function and one very much open to expansion. At this stage no one is better qualified to comment than you. I am truly 'gob-smacked' (classic English phrase!) by what you have achieved so far.
-
Hi @Jonboy
Thank you for your interest ! The limit I hit was the terrain size, anything bigger than 256x256 didn't finish (more precisely, didn't wait for it to finish), it might be that opensimplex noise uses quite a lot of math. So to put these into some RFE list:- Be able to generate huge terrains 4096x4096 or even bigger
- Having something like ROAM in place, i.e. user generates the terrain and the terrain is drawn in an optimized way, the further you're the bigger patches are drawn:
https://www.gamasutra.com/view/feature/131596/realtime_dynamic_level_of_detail_.php
https://developer.nvidia.com/gpugems/GPUGems2/gpugems2_chapter02.html
The latter one can be very efficient on modern GPUs when displaying large terrains - Having simplex noise or perlin noise implementation in F4NS might speed up things a lot, the noise generation is handy not only for mountains but for any "map": water, clouds, maze, 3D fractals (rocks), etc.
- I almost forget! Be able to specify textures for the terrain.
- Sometimes be able to draw triangle on my own would be handy ;)
-
Loving the terrain generator... I had a brief play and came across the same 256*256 limit.... Also something strange happens when the camera passing through zero on the Z axis...? (I started off at Z0 looking at Z0 and the image doesn't appear at all..... took me ages to work out what was wrong!)
Full code is in the first frame... still amazed at what you can do with so little code! -
-
This is absolutely awesome... Mandelbrot set is so fascinating and to see it like this is incredibly exciting.
-
Hi @Myddrak
Yes I assume this is a bug Fuze team is aware of since they have in their tutorial - 0.0001 shift for the camera Z-axis view as well ;-) I was wondering why and I bumbed into the same bug as you described here.
-
I found a bug. When you hit the -- button the clouds seem to studder a bit.