Does anyone know of any papers/blogs/whatever out there that discuss doing the projected-grid water approach with a sphere instead of a plane?
I'm using lat/long/altitude coordinates projected onto an ellipsoid for my terrain, and I have concerns that at high altitudes, the water horizon won't bend with the terrain horizon.
I assume this would involve line-sphere intersection tests instead of the line-plane tests in the projected-grid approach, but I don't really have any idea how to go about creating the screen-space grid so that it properly follows the curvature of the horizon...
Projected grid water using a sphere instead of a plane?
Started by magicstix, Nov 24 2012 11:12 PM
1 reply to this topic
Sponsor:
#2 Crossbones+ - Reputation: 745
Posted 25 November 2012 - 05:15 AM
Basically why you need paper, projected grid approaches are really simple thing. Just generate rays from your camera, test them against plane, sphere, ... and compute vertex locations for your grid*. For avoiding seams at screen edges, you basically use (for ray generation) camera with a little more fov, that your actual camera.
And because vertices you get are a grid, computing indices for drawing is very simple (same as indices for rendering quad-based uniform grid). Texture coordinates (this also counts for normals and tangent vectors) can be computed from vertex position (because you know it's a simple plane or sphere).
Then you just need some awesome FFT for displacement, good vertex & fragment shaders (maybe even tessellation one) and some render perfect water.
*Note for sphere you get 2 solutions, if you are above water surface, pick the closer one, if you're under water surface, pick the further one (basically it will be non-negative one).
And because vertices you get are a grid, computing indices for drawing is very simple (same as indices for rendering quad-based uniform grid). Texture coordinates (this also counts for normals and tangent vectors) can be computed from vertex position (because you know it's a simple plane or sphere).
Then you just need some awesome FFT for displacement, good vertex & fragment shaders (maybe even tessellation one) and some render perfect water.
*Note for sphere you get 2 solutions, if you are above water surface, pick the closer one, if you're under water surface, pick the further one (basically it will be non-negative one).
My current blog on programming, linux and stuff - http://linux-ninja.blogspot.com/






