POV-Ray : Newsgroups : povray.programming : A couple of things which confuse me about povray lighting engine Server Time
2 May 2024 13:42:23 EDT (-0400)
  A couple of things which confuse me about povray lighting engine (Message 1 to 1 of 1)  
From: Tilps
Subject: A couple of things which confuse me about povray lighting engine
Date: 17 Oct 2006 20:05:00
Message: <web.45356bc4ae6650f4e6c7ea530@news.povray.org>
I was looking through the 3.6 code - and I found a few things which don't
seem to make sense to me.

1) Reflection is not filtered, but conserve energy scales the filtered value
like as if it is.  Shouldn't it subtract from the filter color?  Either that
or reflection should be filtered (which I can see majorly breaking everyons
pov files, since people wouldn't think to set filtering for a
non-transparent object).

2) Photon tracing doesn't multiply the photon weight by the diffuse
coefficient - but then I also see some magic 'diffuse fixing' dot product
in the photon gather phase.  Are they connected?

3) Global photon tracing, appears to have a very high die rate, which means
photon strength generally grows with each photon interaction at a specular
interface.  I suspect, but haven't tested, this could cause issues with
photon trace depth set high and complex transparent objects.  Maybe the die
rate should be filtered to match the filtering of the diffuse component? t=1
or white f=1 would be a bit strange then I guess. Maybe a minimum cap on the
die rate to ensure photon depth is actually controled somewhat.

4) Total internal reflection is not filtered in ray tracing, which means TIR
violates conservation of energy.  I would think it should probably at least
be modified to not exceed the max reflection specified in the finish
reflection characteristics.  This problem disappears in any case where TIR
is picked up by the reflection code and results in a zero transmittence -
which is a pretty limited set of circumstances.

5) In caustic photon tracing, TIR is filtered, but reflection isn't.  This
means in a fresnel reflection situation as you approach TIR, you get a
discontinuity, at one angle reflection equals reflection_max, next it
equals filtered.  (Unless TIR is picked up by the reflection code and
results in zero trans.)  In global photon tracing, in a TIR situation, it
randomly
switches between the two, which I guess is kinda okay since it will be
averaged.  But neither of these match the TIR behaviour in normal-tracing.


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.