new water rendering demo

Started by
37 comments, last by vember 20 years ago
I thought some people here might be interested in having a look at this: It''s a water demo using a novel tessellation technique I call ''projected grid''. The basic concept is to project a regular grid into a world-space plane using the inverse camera transform. The working solution is more complex than that though..
Advertisement
Looks very nice, congrats.
Amazing demo! I really liked the sixth preset! Good work!
__________________I have a computer!
Best water I''ve ever seen.
Nice, I didn''t like preset 6 at first, but if you zoom out, it looks really nice, especially the cubemap reflections. Can you give out more detail on how you acheive this effect? That PDF would be nice, but just a general overview of the technique would suffice. Have you submitted this to any of the conferences? GDC/SigGraph/etc.
thanks for the feedback.. I like preset #6 as well..

ngill:
I don''t know exactly what particular effect you''re wondering about, but I assume you are referring to how the surface detail varies with the distance.. Well, thats a property of the projected grid, since it seamlessly scale the tessellation with the distance.

Anyway, I''ve uploaded the PDF now. I''ve been asked to do a proper article about the projected grid tessellation with the assistance of the cg. dept at the university so I''m considering doing just that. This would be published (through siggraph iirc) so we want a shorter, more focused and better researched paper.
The Xbox XDK (XBox Developers Kit) comes with a demo that does water this way as well

It uses a grid of screen space polygons that take up the lower half of the screen and uses a vertex shader to project them onto the water plane. (well, vice versa, it projects the water plane texture coordinate to them)

It does look very nice.

I wonder if someone could write a heightmap/ray collision in a vertex shader aand do terrain this way...constant screen space size poly''s would be great.



Waramp.

"Before you insult a man, walk a mile in his shoes.
That way, when you do insult him, you''ll be a mile away, and you''ll have his shoes."
Waramp.Before you insult a man, walk a mile in his shoes.That way, when you do insult him, you'll be a mile away, and you'll have his shoes.
"The Xbox XDK (XBox Developers Kit) comes with a demo that does water this way as well"

Is there anyway to get a look at this without being a registered xbox developer? Knowing about related work is a good thing to avoid nasty suprises.

"I wonder if someone could write a heightmap/ray collision in a vertex shader aand do terrain this way...constant screen space size poly''s would be great."

Well, it''s not heightmap/ray-collision but I''m doing heightmap displacement per-vertex. But not on the vertexshader since it doesn''t support texture reads (so it''s done on the CPU instead). I''m actually doing the exact same thing on the pixelshader as well, but only for the normals since we can''t render to vertex-buffers. Having per-vertex displacement means that you''ll need a large guard area (depeding on maximum allowed displacement) since you''ll have to make sure that the entire displaced grid is visible, and not only the original plane.

You could try setting the following parameters to get something similar to landscape rendering (albeit with a water shader):

Noise strength: 280
Noise falloff: 0.45
Noise scale: 0.05
Smooth heightmap: true
Pause animation: true
Projector elevation: 1

This works nice when you''re at high altitudes but the detail get lower the closer to the surface you move. There''s also a swimming artifact that could be dealt with by better filtering. It''s not noticable when animated but if you pause the animation it certainly is.

Anyway, I''m sceptical about ray/heightmap collision since that would make the rendered geometry quantitized to the screen-space grid. So by doing the ray/plane collision instead followed by displacement you avoid this quantitizing (in the direction of displacement at least) but you have to pay for it by rendering a guard area around the plane intersection. I wouldn''t mind combining the benifits of these two methods though!
"Is there anyway to get a look at this without being a registered xbox developer? Knowing about related work is a good thing to avoid nasty suprises. "

Alas, I think not. I will ask tho.
Waramp.Before you insult a man, walk a mile in his shoes.That way, when you do insult him, you'll be a mile away, and you'll have his shoes.
Awesome demo! Looks very relistic.

This topic is closed to new replies.

Advertisement