next up previous contents
Next: 16.4.4 Details Up: 16.4 Line Integral Convolution Previous: 16.4.2 Using OpenGL to

16.4.3 Line Integral Convolution Procedure

Next, make some simplifying assumptions to make the procedure simple:

The supplied flow field vector grid matches the tessellated textured surface; there's a one-to-one correspondence between vector and vertex.
Set a fixed number of displacements (n) at each vertex.

These assumptions allow you to simply use the vector associated with each vertex on the tessellated surface when computing texture displacements. You can also simply calculate the displacements by parameterizing the vector and computing evenly spaced texture coordinate locations displaced along the vector direction, both forwards and backwards.

Given these assumptions, the procedure looks like this:

Update the texture coordinates at each vertex on the surface.
Render the surface using the noise texture and the displaced texture coordinates.
Accumulate the resulting image in the accumulation buffer, scaling by 1/n.
Repeat the steps above n times, then return the accumulated image.
Perform histogram equalization or image scaling to maximize contrast.

David Blythe