|
|
I found this bug in UV-Pov alpha 5. I have not tested it in alpha 6 but
it may probably appear there too.
It looks a lot like a normal flipping problem similar to the old
average normal bug. It seems exclusive to photon mapping since the bug
doesn't appear when photon mapping is turned off.
In the following scene there are two cylinders casting shadows over two
gaps in the wall. The left one is a real gap made by differencing a box
from the wall. The right one is a "fake" gap made with a normal pattern.
The dim caustic light in the left one is ok, while in the right one the
gap is dark.
This caused a problem in my "landmarks" irtc entry, but I didn't study
that carefully until now.
If you don't have my photons.inc, here it is:
//-----------------------------------------------------------------------
#ifndef(UsePhotons) #declare UsePhotons=yes; #end
#ifndef(phd) #declare phd=1; #end
global_settings
{
#if(UsePhotons)
photons
{ gather 20,100
radius 0.1*phd, 2, 0.1*phd
autostop 0
jitter .4
expand_thresholds 0.2, 40
#ifdef(PhotonsMaxTraceLevel) max_trace_level PhotonsMaxTraceLevel #end
#ifdef(PhotonsADCBailout) adc_bailout PhotonsADCBailout #end
}
#end
}
#macro Photons(Refl,Refr,Ignore)
#if(UsePhotons)
photons
{ separation .01*phd
reflection Refl
refraction Refr
#if(Ignore) ignore_photons #end
}
#end
#end
//-----------------------------------------------------------------------
And here is the scene showing the bug:
//-----------------------------------------------------------------------
#declare phd=2;
#include "photons.inc"
camera { location <0,10,-15> look_at 0 angle 35 }
light_source { <120,2,-100> 1 }
difference
{ plane { y,0 }
box { <-.5,-.5,-10><.5,.5,10> rotate z*45 scale <1,.1,1> translate -x*2 }
pigment { rgb 1 }
normal
{ gradient x .5 slope_map
{ [0 <1,-1>][.1 <0,-1>][.1 <0,1>][.2 <1,1>][.2 <1,0>][1 <1,0>]
}
scale 7 translate x*10
}
rotate x*-90
}
#declare Obj=
difference
{ cylinder { .001,y*2,.5 scale 2 }
cylinder { 0,y*2.01,.45 scale 2 }
pigment { rgbf <.5,1,.5,.98> }
interior { ior 1.5 }
Photons(no,yes,yes)
}
object { Obj translate <4+.2,-1,-1.5-.2> }
object { Obj translate <0+.2,-1,-1.5-.2> }
//-----------------------------------------------------------------------
--
main(i,_){for(_?--i,main(i+2,"FhhQHFIJD|FQTITFN]zRFHhhTBFHhhTBFysdB"[i]
):5;i&&_>1;printf("%s",_-70?_&1?"[]":" ":(_=0,"\n")),_/=2);} /*- Warp -*/
Post a reply to this message
|
|