In the last thread about the terrain shit I was doing, Syranide commented telling of his success with geometry clipmaps. So I decided to give it a go.
And long story short, I implemented it and it rocks.
The old way of doing terrain involves getting a grid of heights, then generating a mesh from it. Then subdividing the mesh a few times and generating LOD’d versions of all of the sub-meshes. Which is very CPU bound.
This way is basically doing it all on the GPU. You’re throwing out a flat mesh, then in the vertex shader moving the vertices relative to the values on a texture. This means it’s a pixel shader 3.0 technique. Which is why I was glad to see that the huge majority of people are ps3.0 capable according to the latest Steam Survey.
It rocks. I haven’t bothered to do any of the LOD stuff yet, because it isn’t really being used for anything massive yet. Once that changes I’ll get at it.
Looks pretty awesome.
Is the first picture supposed to look like a penis?
No
An erect penis
So… You like cocks? I think I’ve got a girl for you now.
“It rocks. I haven’t bothered to do any of the LOD stuff yet, because it isn’t really being used for anything massive yet.”
That penis looks pretty massive to me.
That’s quite a throbber
where get your engine ?
The balls look all soggy and shit.
My biggest concern with special techniques for rendering terrain is that it seems to disconnect it from the rest of the world. You always see rocks and stuff just clipping through it. What are you feelings?
I don’t know why it would be inaccurate? It’s as accurate as you make it..
I think he’s referring to games like CSS and TF2 where stones and objects have been very carefully placed by hand to look good and blend with the terrain, whereas in crysis and oblivion with “open worlds” it’s often just a bunch of prefab stones and stuff thrown in which clip into the ground.
If that is in-fact what he is referring to then I’d say it’s more of a problem with the cost of large open worlds rather than a specific technique (as there is no real tangible difference between source’s bounded heightmaps and “terrains”).
Anyway, glad it turned out well for you!
PS. Also, I know there is some fallback method for when the required pixelshader support is unavailable, the paper I implemented specifically improved on a previous more CPU-bound attempt that worked with older hardware. Although I really don’t remember how it actually worked, but I remember it stated that it performed rather poorly.
And can you use the same data for collisions? (My immediate reaction would be no)
Yeah, it IS using the same data for collisions. It’s sampling from the texture and putting it into a heightmap for Bullet
Everybody loves steam’s surveys!
Now, give a demo where i can walk the fucked volcano.
I think he means Height Maps, not “Clip Maps”. But WTF do I know. I’m not the all might Garry.
I believe the ‘clip’ refers to being able to dynamically adjust how much detail you use from the source (in this case the heightmap).
So once you get this engine finalised do you plan on making a game with it, if so, are you going to sell it on steam?
The lighting on the volcano is sexy, minus points for the rendering artifacts.
Which artifacts?
http://dl.dropbox.com/u/1632334/04Jan2010_006.png ??
(When you zoom in you will see that they dont look like artifacts anymore)
Are you doing your heightmap updates on the GPU or the CPU?
I’ve written an implementation running that does the updates on the CPU, but for large heightmaps, as you can imagine… it’s sloooow. If you factor in paging from disk (with massive datasets) then it just becomes painful.
Whenever I go to try and implement the updates on the GPU I just seem to hit a complete mind-block and can’t visualise in my mind how to do it.
With that all said, if you are doing the updates on the GPU, any change of some pointers on how to get it going? If you’re feeling particularily generous a little bit of source would be amazing.
It’s just the updates I’m having difficulty with, everything else seems to be running perfectly.