|
![](/i/fill.gif) |
Wasn't it Slime who wrote:
>> The macro gets called 30000 times, and about 29965 of those times the
>> calculated values get returned into the Cp array, but on 35 of those
>> calls one of the calculated values doesn't get returned. The value in
>> the control point array is whatever the array was preloaded with (in
>> this case 0). So about 35 of the 30000 control points of the mesh are
>> incorrectly positioned, producing ugly spikes in the surface.
>>
>> Changes to other parts of the scene (e.g. adding the debugging code that
>> I used to determine what was going on) cause the errors to appear at
>> different points of the surface.
>>
>> I've so far failed to reproduce the effect in a minimal scene.
>
>Oh, wow. I've seen this exact same behavior recently in my POVCOMP WIP.
>Passing variables by reference (and changing their values within the macro)
>fails *very* occasionally for no apparent reason. Changing the code (even
>just the number of tokens in code that's never actually executed) changes
>the results. I was going to try to find the problem in the POV-Ray source,
>but I'm not familiar enough with that part of the code to do it in a
>reasonable amount of time. And as you said, it's incredibly difficult to
>reproduce the effect on purpose, so I couldn't make a minimal scene to do a
>bug report.
I've now produced a minimal scene. Under 3.5 the macro always returns
with X=1, but under 3.6 it returns with X=123 about one time in a
thousand.
POV 3.6.0.icl8.win32 under Windows 98SE on a Celeron II with 376Mb RAM.
#macro Wave (Xo)
#declare Xo = 1;
#end
#declare N=0;
#while (N<10000)
#declare X=123;
Wave(X)
#if (X != 1)
#debug concat("N = ", str(N,0,0), " X = ",str(X,0,0),"\n")
#end
#declare N=N+1;
#end
--
Mike Williams
Gentleman of Leisure
Post a reply to this message
|
![](/i/fill.gif) |