|
|
The following scene files fall into an infinite loop:
_____________________________________________________
#version 3.6;
global_settings { assumed_gamma 1 }
camera { location <0.5, 0.5, -1.1> }
light_source { -1000 * z, rgb 1 }
#include "colors.inc"
#local I = 0;
#while (I <= 360)
#debug concat (str(I,0,1), "\n")
#local I = I + 60;
#end
box
{ 0, 1
pigment
{ gradient x color_map
{ #local I = 0;
#while (I <= 360)
#debug concat (str(I,0,2), "\n")
[I / 360 rgb CH2RGB (I)]
#local I = I + 60;
#end
}
}
}
_____________________________________________________
#version 3.7;
global_settings { assumed_gamma 1 }
camera { location <0.5, 0.5, -1.1> }
light_source { -1000 * z, rgb 1 }
#include "colors.inc"
#for (I, 0, 360, 60)
#debug concat (str(I,0,1), "\n")
#end
box
{ 0, 1
pigment
{ gradient x color_map
{ #for (I, 0, 360, 60)
#debug concat (str(I,0,2), "\n")
[I / 360 rgb CH2RGB (I)]
#end
}
}
}
_____________________________________________________
The first loop runs from 0.0 to 360.0, as expected. The loop inside the
color_map block runs from 0.00 to 360.00, then repeats 60.00 to 360.00 until it
halts with a Blend_Map too long error. Here is sample output from the 3.6 run.
_______________________________________________________________
Persistence of Vision(tm) Ray Tracer Version 3.6.1 (g++ 3.4.1 @
i686-pc-linux-gnu)
.
.
.
Redirecting Options
All Streams to console..........On
Debug Stream to console.........On
Fatal Stream to console.........On
Render Stream to console........On
Statistics Stream to console....On
Warning Stream to console.......On
Parsing Options
Input file: temp.pov (compatible to version 3.61)
Remove bounds........On
Split unions.........Off
Library paths:
/usr/local/share/povray-3.6
/usr/local/share/povray-3.6/ini
/usr/local/share/povray-3.6/include
/home/ricky/Documents/POV-Ray/include
/home/ricky/Documents/POV-Ray/Object_collection
/home/ricky/Documents/POV-Ray/LightsysIV
/usr/share/fonts/truetype
Output Options
Image resolution 320 by 240 (rows 1 to 240, columns 1 to 320).
Output file: /home/ricky/Documents/POV-Ray/test/temp.png, 24 bpp PNG
Graphic display......On (gamma: 2.2)
Mosaic preview.......Off
CPU usage histogram..Off
Continued trace......Off
Tracing Options
Quality: 9
Bounding boxes.......On Bounding threshold: 3
Light Buffer.........On
Vista Buffer.........On Draw Vista Buffer....Off
Antialiasing.........Off
Clock value: 0.000 (Animation off)
0:00:00 Parsing
0.0
60.0
120.0
180.0
240.0
300.0
360.0
0.00
60.00
120.00
180.00
240.00
300.00
360.00
60.00
120.00
180.00
240.00
300.00
360.00
60.00
120.00
180.00
240.00
300.00
360.00
.
.
.
60.00
120.00
180.00
File: temp.pov Line: 21
File Context (5 lines):
{ gradient x color_map
{ #local I = 0;
#while (I <= 360)
#debug concat (str(I,0,2), "\n")
[I / 360 rgb CH2RGB (I)]
Parse Error: Blend_Map too long.
Total Scene Processing Times
Parse Time: 0 hours 0 minutes 0 seconds (0 seconds)
Photon Time: 0 hours 0 minutes 0 seconds (0 seconds)
Render Time: 0 hours 0 minutes 0 seconds (0 seconds)
Total Time: 0 hours 0 minutes 0 seconds (0 seconds)
_______________________________________________________________
Without the CH2RGB call, the loop completes normally. I cannot figure out
what's going wrong. (A similar, but more complicated scene ran fine with
CHSL2RGB.)
The scene files were run with POV-Ray 3.6.1 and 3.7RC5 respectively, under
openSUSE Linux 12.1.
Post a reply to this message
|
|
|
|
Le 21/05/2012 04:22, Cousin Ricky a écrit :
> Without the CH2RGB call, the loop completes normally. I cannot figure out
> what's going wrong. (A similar, but more complicated scene ran fine with
> CHSL2RGB.)
>
> The scene files were run with POV-Ray 3.6.1 and 3.7RC5 respectively, under
> openSUSE Linux 12.1.
>
>
CH2RGB starts like:
#macro CH2RGB (H)
#local H = mod(H, 360);
#local H = (H < 0 ? H+360 : H);
#switch (H)
Guess that the H used both as a local and an argument of the macro was
not a so smart idea: it ends up modifiying the original argument.
It should have been something like
#macro CH2RGB (H_not_modified)
#local H = mod(H_not_modified, 360);
#local H = (H < 0 ? H+360 : H);
#switch (H)
Just my 0.02€, tax not included.
--
Software is like dirt - it costs time and money to change it and move it
around.
Just because you can't see it, it doesn't weigh anything,
and you can't drill a hole in it and stick a rivet into it doesn't mean
it's free.
Post a reply to this message
|
|