|
|
>
> Until YOU are going to provide EACH pov object with a function which
> provide the derivative at any point of the object, including at the
> surface, but also inside and outside, the only approach would be
> to make a kind of guess by casting more rays.
> Thus it would require more rewrite of the pov-engine, and a serious
> slowdown. (I remind you that some object provide a normal only
> for a previously computed intersection... so you cannot 'sample' around
> the intersection to get a feeling about the variation of the normal...)
>
[Snip]
Yes, I know all these problems.
Additional problem, which comes with use of RenderMan shaders, is the
fact, that in RenderMan all surfaces are parametric (with respect to uv)
and surface derivatives are usually taken with respect of u and v (this
is done 'analytically' in BMRT (don't know about PRMan), other
derivatives are made by 'supersampling': running shader in u+du or v+dv
points and calculating required expression). This means, that using
RenderMan shaders with surface derivatives could be done to small subset
of POV-Ray objects (sphere, plane, box, mesh, ??).
I intend to create method for POV-Ray objects, which returns surface
derivatives and implement it for 'parametrizable' objects (as you put
it: 'safe approach'). For other objects dummy implementation (or
approximation??) could be made. This is not 'perfect' solution, but it
allows to use some advanced shaders with POV-Ray (current implementation
of shader support is limited and it will not be fully supported anyway,
for it would require too much work, easier would be to use RenderMan
compliant renderer in such case).
Post a reply to this message
|
|