My Terrain Engine [demo posted]

Started by
18 comments, last by greenwire 18 years, 1 month ago
Quote:Original post by kapru
so Geomipmapping is when you have 2 vertex streams one for the x and x position this one would never change and be the same for all patches. And one for the height. these would be joined together in a vertex shader??


It's one possible way of doing it i think.
I've not implemented it in that way (yet) but i think it could work. At least that's what Greg Snook does in his book (in his ROAM implementation).
Advertisement
any one wanna explain exactly what it is no need to go on how it works tho
Quote:Original post by kapru
any one wanna explain exactly what it is no need to go on how it works tho


Check this two articles :
[Geomipmapping] - http://www.flipcode.com/articles/article_geomipmaps.pdf
[Geomorphing] - http://www.gamedev.net/reference/articles/article1936.asp
Quote:Original post by Ivo Leitao
Quote:Original post by Valor Knight
Quote:Original post by Ivo Leitao
I think that with this arrangement you cannot use triangle strips... This is the method described in focus in terrain rendering book and in my opinion it's not performance friendly...

I wasnt using strips anyway. Performance wise, is a dynamic index buffer (or many) faster than a dynamic vertex buffer? I want to start geomorphing, but when using index buffers instead of strips, it will be interesting to say the least, (unless there is an easy way)


Index buffers instead of strips ? I'm sorry but i'm not understanding.. In my geomipmapping implementation i'm using triangle strips and index buffers. I'm talking about the primitive type (i.e. triangle strips, trinagle fan etc)


I am currently doing DrawIndexedPrimitive() - I didnt know you can do both, but what would that matter? do you do indexed for lod's and tri strip for base lod. This is why I think geomorphing will be difficult - perhaps Im doing it wrong, I dont know.

When I get off work, I will post the demo - its better than looking at 2 images and deducing problems that way
There is no life without honor
demo posted, let me know how it fares.
shader 3.o is required
There is no life without honor
I tried it out, I get ~300fps on my 6800 GT. The geomipmapping is working nicely but the program consistently crashes after about 20 seconds.

Why the SM3 restriction? Your vertex shaders compile under 1.1, and 2.0 for your pixel shaders. A little bird once told me you should always use the lowest shader model you can.
humm, 20 seconds crash? I have no idea what that can be, but will look into it asap. What were you doing when it happened? Unfortunatly I dont have any logging methods yet (I will make a basic one right now though).

I am using sm 3.0 for my sky coloring (I have dynamic sky coloring in a vertex and pixel shader) - I could lower it but I am probably use some methods later, if I am not already.
There is no life without honor
Just tried out the demo. Between 390 and around 500fps on AMD Barton 3000+ and GeForce6800GT. With more than one texture (as you´re going to implement) and lighting this could look nice. Didn´t spot any artifacts or anything like that and got no crashes.

One thing though: Are you doing one Draw-call per patch you render? If so, try to combine the index buffers of the patches into one and render as many patches as you can with one Draw-call. Perhaps it aids performance. On the other hand it might be better to just keep going and implement some more stuff until it gets too slow. Then benchmark it and find the real bottlenecks.
Quote:Original post by matches81
With more than one texture (as you´re going to implement)


Sweet no crashes, thanks for testing it. I am using more than one texture, I am using 3 currently, the only thing is that if you look, the blend map is the clouds plugin from the gimp, so it blended all 3 together to look like 1 texture, but I can add paths and patches of grass if I edited the blend map rather easily.

I will try to put everything into one call but how would I do it? Would I create another dynamic vertex buffer and then somehow load it every frame and then render once for every vertex buffer. I have VB goals in that only fill the vb to about 5 mb and then create a new one, I read somewhere this was the most optimized way to do it, and it works fine until I hear differently.


There is no life without honor
350-500fps. AthlonXP 2.8ghz. Geforce 6800GT.
no crashes or artifacts. very smoooth.

i like the way the tide comes in on a landlocked lake :D

This topic is closed to new replies.

Advertisement