Just an idea to think about: what if there was a pigment, that instead of giving
off color, it would transport and rotate the incoming ray? This would have
1) move and rotate the ray somewhere else and re-sample it. This would allow to
define surfaces that act as portals/windows into another part of the scene.
2) keep the origin, but perturb the direction. This way, a user could reproduce
any effect involving irregular reflections (normal perturbation) and
refractions, but with more control (such as using the input ray information as a
parameter for generating the external ray)
3) the portal idea can be used to simulate stuff like pictures and TV screens
(and crystal balls) that render another part of the scene. Possibly, you could
have a warp, that would transform rays, falling on the TV screen into rays that
exit a camera, creating the "TV is showing picture of itself" effect.
4) Strange universe boundary conditions (make such a universe, that a ray that
hits a sphere at a large distnace comes back at you from behind). Very useful
for mathematical abstract art.
So, we have a single feature that allows a lot of different imaginative and
artistic effects that are not possible otherwise. Infinite recursion is
prevented by max_trace_depth.
In essence, you have a user-defined function that takes input ray in the form
(location,direction) and returns another (location,direction).
Post a reply to this message