|
![](/i/fill.gif) |
scott <sco### [at] scott com> wrote:
> > No.
> >
> > As you'll recall, you have to specify the max_gradient for a POV-Ray
> > isosurface. That means that if you evaluate the function at a specific
> > point, based on the maximum gradient you can compute a sphere of maximum
> > radius that cannot contain any solutions. And that's how far you move
> > along the ray. (Rather than having a constant step width.)
>
> Distance Fields are similar to isosurfaces, but the isosurface value is
> used to store the minimum possible distance to any surface. Then it
> makes your raymarcher algorithm very simple:
>
> do{
> point = rayStart + rayDirection * distance
> stepSize = EvaluateDistanceField(point)
> distance += stepSize
> }
> while( stepSize > someVerySmallAmount)
>
/That/ is raymarching alright. Orchid's explanation made me wonder if I had been
over-simplifying things for myself ;)
> There are also some clever tricks you can do to get soft shadows and
> ambient occlusion for free.
>
Free ambient occlusion? How free? One type of AO from Fragmentarium requires 6
samples to be taken from the DE. Because the DE is smooth, it makes for a nice,
fast (not quite free) solution (also works with POV isosurfaces), but I wouldn't
call it AO. It's a proximity pattern :)
Post a reply to this message
|
![](/i/fill.gif) |