Terrain HSR.
This is my first post here btw
I''ve searched through the forum, and couldn''t really find much on this, so I hope I''m not bringing up boring sutff here.
I''ve been working on a terrain renderer for the last couple of weeks, and the other day I made what I see as a break through...
Fast, Real-time Hidden surface removal.
And I ain''t talking Frustum culling here.
Its not in a fit state to give out... so I''ve got some pics... And I''d like a bit of feedback please..
ok, first off, here is a rather boring part of the map, but it shows the effect HSR has...
(please excuse the ugly height map)
And here it is with NO HSR.
Finally, here it is with HSR. Quite a difference.
Note: you can see that the last shot, due to teh huge number of extra verticies/tris to draw, it has to lower the LOD in the distance, which impacts on visuals ... (its set up to maintain 30fps)
The method I use is really fast, if not totally accurate, and its memory usage is REALLY small, (About 20k), unlike octrees or such, which at this scale consume insane amounts of memory... (the xterminate engine used up some 700mb of swap when I put in this height map)
Ohh yeah. and it was taken on a 533 with a GeForce 1.
here''s a nive big, open shot...
http://www.voyager.co.nz/~gta/landscape.jpg
and a shot of a older, but more ''eye candy'' type renderer I did...
http://www.voyager.co.nz/~gta/render_1.jpg
RipTorn
www.upmod.com
Xtremely sweeeeeeet!!!
I''d love to see some tutorials on that!
Dude is that sweeet! Makes my day!
Way to go!
I''d love to see some tutorials on that!
Dude is that sweeet! Makes my day!
Way to go!
A very interesting engine
very nice indeed
question:
In your old engine, how are you making the reflection to the water? Do you just define a clip plane, and invert the visible landscape and blend a water on it, or do you render to a texture?
Is it me, or clipping planes are slow ?
In my engine, rendering the landscape two times is faster than rendering it with one clip plane.., weird not ?
nice work,
Bruno
very nice indeed
question:
In your old engine, how are you making the reflection to the water? Do you just define a clip plane, and invert the visible landscape and blend a water on it, or do you render to a texture?
Is it me, or clipping planes are slow ?
In my engine, rendering the landscape two times is faster than rendering it with one clip plane.., weird not ?
nice work,
Bruno
Really cool stuff!!
I''ve seen you other examples!! I love the landscape one!!!
I would love to see some of your tutorials if you have any!!
If you don''t have any then I think you should make some as you seem to know this stuff very well!!!!
Please keep informing us about your new stuff!!
I''ve seen you other examples!! I love the landscape one!!!
I would love to see some of your tutorials if you have any!!
If you don''t have any then I think you should make some as you seem to know this stuff very well!!!!
Please keep informing us about your new stuff!!
ok, for the reflections, its just an opposite view rendered to a texture, with a TexGen alpha tested texture to act as a clip plane, it is then projected onto the water, and the Q coords are very slightly varied in a sine type patteren to add an undulation (which isn''t present in the pic)....
As for the method, its a REALLY really fast line of sight test, which I tested at running at about 80,000 times / sec ... The tests are ''accumulated'' over time, depending on how fast you move, at normal speed, the HSR is updated about 3 times a second... It reduced the polygon /sec count by about 5% at this speed, but more than makes up for that with the lowered poly count...
As for tutorials, heh, I don''t really know , I don''t like the idea of people using ''cut and past coding'' and then come running because they don''t know whats wrong... I may do ''theory'' type tutorials though...
BTW: I will release the code for this ''engine'' when its done.
- but with what I want to do to it, that will be a while
As for the method, its a REALLY really fast line of sight test, which I tested at running at about 80,000 times / sec ... The tests are ''accumulated'' over time, depending on how fast you move, at normal speed, the HSR is updated about 3 times a second... It reduced the polygon /sec count by about 5% at this speed, but more than makes up for that with the lowered poly count...
As for tutorials, heh, I don''t really know , I don''t like the idea of people using ''cut and past coding'' and then come running because they don''t know whats wrong... I may do ''theory'' type tutorials though...
BTW: I will release the code for this ''engine'' when its done.
- but with what I want to do to it, that will be a while
May 19, 2001 02:18 AM
I have some ideas for some nice, very fast HSR, with almost no overdraw. I think you might be doing something similar to what I have planned.
Wow, I''m messing around with my first terrain renderer right now and your pics are pure inspiration. I''m really curious how you did your texture blending. That looks amazing!
~Wave
~Wave
The texture blending is just there for while I''m getting the basics done I want it to be much better when its finished...
Its currently just a generated texture, either 1024x1024 or 2048x2048... using two base textures, blended, where the z normal sets how transparent the second one is (ie, you get rocks on steep faces, grass on the ground)... The detail texture is simply a modulate multi-texture which I ripped (the texture, not code) from the xterminate engine (its just here for testing)...
I''m now working on a multi-pass system. using CVA to prevent pointless extra transforms (The older renderer does this).
I plan for 3 passes. each with a multi-texture.
1 for detail texture and an optional clip plane (using alpha testing)
1 for the two basic terrain textures...
and the last for the shadow map, and with another shadow map, (say, shadows cast from clouds), which will likly scroll.. because its a multi-texture, the second map would not further darken the shadows of the first.
A note to all those working on terrain engines, DO NO PER-TRIANGLE calculations. NONE. even drawing them (say, two loops, with glVertex calls)... at the lowest detail, I do calculations (frustum, etc) for about 12 polygons, and at the highest, about 130. I found out this the hard way.
Its currently just a generated texture, either 1024x1024 or 2048x2048... using two base textures, blended, where the z normal sets how transparent the second one is (ie, you get rocks on steep faces, grass on the ground)... The detail texture is simply a modulate multi-texture which I ripped (the texture, not code) from the xterminate engine (its just here for testing)...
I''m now working on a multi-pass system. using CVA to prevent pointless extra transforms (The older renderer does this).
I plan for 3 passes. each with a multi-texture.
1 for detail texture and an optional clip plane (using alpha testing)
1 for the two basic terrain textures...
and the last for the shadow map, and with another shadow map, (say, shadows cast from clouds), which will likly scroll.. because its a multi-texture, the second map would not further darken the shadows of the first.
A note to all those working on terrain engines, DO NO PER-TRIANGLE calculations. NONE. even drawing them (say, two loops, with glVertex calls)... at the lowest detail, I do calculations (frustum, etc) for about 12 polygons, and at the highest, about 130. I found out this the hard way.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement