|
300 | Other | Feature Request | 3.70 RC7 | Defer | Very Low | Reference Documentation Support | Tracked on GitHub | |
|
Task Description
As emerged as an idea during the discussion of FS#299, an SDL / POV-Ray editor feature would be useful that allows API documentation via formal comments, e.g. in include files:
/**
* Creates a car object.
* @param a
* description of param a
* ...
*/
#macro car(a,b,c)
...
#end
In addition to the ability of (auto-)generating a documentation file from such comments, an editor window feature would be convenient that allows popup display of a macro’s (object’s / parameter’s / ...) documentation section.
|
|
303 | Other | Definite Bug | 3.70 RC7 | Defer | Very Low | wrong bit depth reported for OpenEXR file format | Tracked on GitHub | |
|
Task Description
When using OpenEXR output file format, POV-Ray erroneously reports it as “24 bpp EXR” in the message output, while in fact it generates a 3×16 = 48 bpp file.
|
|
323 | User interface | Possible Bug | 3.70 release | Very Low | Very Low | Tooltip for render speed status bar has wrong unit | Tracked on GitHub | |
|
Task Description
Tooltip popup for render speed always displays as “Pixels per Second” rather than matching status bar. I’ve noticed it in 3 renders so far. Most of my renders are fast enough not to see any other unit besides PPS, but I should be able to reproduce again if necessary.
|
|
331 | Geometric Primitives | Definite Bug | 3.70 release | Very Low | Medium | Intersection causes quadric to disappear | Closed | |
|
Task Description
The following paraboloid renders correctly:
intersection
{ quadric { <1, 0, 1>, <0, 0, 0>, <0, 1, 0>, -1 }
cylinder { 0, y, 1 }
}
However, when I extend the clipping cylinder downward:
intersection
{ quadric { <1, 0, 1>, <0, 0, 0>, <0, 1, 0>, -1 }
cylinder { -y, y, 1 }
}
the object disappears completely in POV-Ray 3.7 and 3.7.1. In POV-Ray 3.6.1, it renders as expected.
POV-Ray 3.7.0.unofficial (self-compiled with g++ 4.8, but completely unaltered) POV-Ray 3.7.1-alpha.8150025.unofficial openSUSE 13.2 GNU/Linux
This scene file illustrates the problem:
// +w480 +h240
#version 3.6; //[sic]
global_settings { assumed_gamma 1 }
camera
{ location <0, 1, -7.5958>
look_at <0, 1, 0>
right 2 * x
up y
angle 43.1038
}
#default { finish { diffuse 0.6 ambient rgb 0.15618 } }
light_source
{ <-4.3125, 9.6250, -7.4695>,
rgb 6856.3
fade_power 2 fade_distance 0.10417
spotlight point_at <0, 1, 0> radius 45 falloff 90
}
box
{ -<9, 11, 9>, <9, 11, 9>
pigment { rgb 1 }
}
plane
{ y, 0
pigment { checker rgb 0.05 rgb 1 }
}
intersection
{ quadric { <1, 0, 1>, <0, 0, 0>, <0, 1, 0>, -1 }
cylinder { 0, y, 1 }
pigment { green 0.5 }
translate <-1.25, 1, 0>
}
intersection
{ quadric { <1, 0, 1>, <0, 0, 0>, <0, 1, 0>, -1 }
cylinder { -y, y, 1 }
pigment { green 0.5 }
translate <1.25, 1, 0>
}
On the right side, there should have been a cylinder capped with a paraboloid. A thread has been started in povray.bugreports. Jerome has started to look at it.
|
|
259 | Parser/SDL | Definite Bug | 3.70 RC6 | Very Low | Low | Stack Overflow with the write-directive with missing cl ... | Closed | |
|
Task Description
As I posted yesterday to the POV bugreports, I observed a bug with the #write directive, having forgotten the closing bracket. I looked a little bit closer and found different behaviours of POV with different array sizes.
With ArrayDim=100 (please look at the attached SDL-code, which is reduced as much as possible and produces only the bug and no scene) one get the Parse Error: “Expected ‘string’, End of File found instead” and the last line is highlighted. With ArrayDim=1024 you get an Stack Overflow and POV crashes.
I observed this at two different core i7 windows machines. On one of them (16 GB RAM, if this is of importance) the threshold between both behaviours was between 300 and 400. Hope this helps.
Best regards, Michael
|
|
298 | Geometric Primitives | Definite Bug | 3.70 RC7 | Very Low | Low | the warning for isosurface does not appears as often as ... | Closed | |
|
Task Description
From synthetic post of Cousin Ricky in p.beta-test, 2013-06-24 circa 3:19 pm (MST)
William F Pokorny anonymous@anonymous.org wrote: > It seems to be the case the gradient warnings are only generated if the > isosurface is naked. If it is wrapped in an object as was the case with > my thread safety example, we get no warnings.
Confirmed. If only I still had the concentration required to investigate computer code.
#version 3.7;
#ifndef (MG) #declare MG = 40/9; #end
#ifndef (Naked) #declare Naked = no; #end
global_settings
{ assumed_gamma 1
radiosity {} //force isosurface calculations from all directions
}
light_source { <-3.3125, 7.6250, -5.7374>, rgb 1 }
camera
{ location <0.0000, 1.0000, -5.6713>
look_at <-0.7969, 1.2000, -0.0598>
angle 10.7447
}
#include "functions.inc"
#if (Naked)
isosurface
{ function { f_sphere (x, 0, z, (2660 - 40*y) / 9) }
contained_by { box { <-80, 31, -24>, <-128, 56, 24> } }
max_gradient MG
pigment { rgb <1, 0.75, 0> }
scale 1/128
rotate -35 * x
translate y
}
#else
#declare Test = isosurface
{ function { f_sphere (x, 0, z, (2660 - 40*y) / 9) }
contained_by { box { <-80, 31, -24>, <-128, 56, 24> } }
max_gradient MG
pigment { rgb <1, 0.75, 0> }
scale 1/128
rotate -35 * x
translate y
}
object { Test }
#end
On the command line, try:
declare=MG=1 declare=Naked=1
and
declare=MG=1 declare=Naked=0
To lose the warning, I had to declare the isosurface. Just wrapping the naked isosurface in an object{} generated a warning.
Further analysis
isCopy seems to be intended to avoid displaying the same warning over and over for the same isosurface (as duplicated isosurface indeed are not copied but reference the same sub-structure).
#declare Ob = isosurface{...}; that’s not a copy object {Ob ... } that’s a copy
Previously (3.6.1) the warning was displayed at the destruction of the isosurface (when the sub-structure was actually referenced by no one else)
if((Stage == STAGE_SHUTDOWN) && (mginfo->refcnt == 0))
In 3.7, isCopy was introduced with change 4707, 16th February 2009, along with the change introducing means for objects to submit message on shutdown. It was reported in windows source with change 4714, 21th February 2009.
If the symptom “isosurface embbeded in object (CSG) does not show the warning” is correct, it might be a “feature/bug”. The parser copied the isosurface object and deleted the original before the render started. When the render ends, it find only copies and because the refcnt is not used anymore (for that purpose), it miss the last remaining true data to display.
Instead of isCopy, what about adding in mginfo a boolean “printed_warning” (actual name should be more appropriate), set to false on creation, and turn to true on the first call (instead of last for 3.6.1) of the warning displaying function (test for false, set to true if false) ? (and dropping isCopy in the process)
For instance, i’m afraid the following sequence would fails with current code:
#declare Foo = isosurface{ ... }; #declare Bar = object { Foo ... }; #undef Foo;
(or any pop of #local context, such as building the isosurface via macro or loop, or replacing the value of a previous #declare/#local )
|
|
307 | Image format | Definite Bug | 3.70 RC7 | Very Low | Low | netpbm, ppm, read bug where first data byte CR char | Closed | |
|
Task Description
I’ve recently been working with the netpbm ppm format and I have hit what I believe to be a bug in the way ppm files are read – very likely a bug in all netpbm formats. I am aware of the long standing povray issue with the netpbm file formats header where the height and width need to be on the same line as the magic number though that is not a requirement of the official format. This bug is different.
Namely in working with a larger number of ppm files I hit cases where a few would fail with the message : “Possible Parse Error: Unexpected EOF in PPM file” though the ppm files are fine. What is happening is that the first byte of data after the line feed (LF) (Ubuntu linux 12.04) happens to have a carriage return (CR) value.
The code which is set up to interpret the netpbm headers is reading a lines with “file→getline (line, 1024);” and this line reading code is pulling in the first byte of data with the CR value as part of the line. When the read by binary data, 8 or 16 bits at a time, starts, the povray read code is offset into the data by one byte too many.
The result from 10,000 meters, if input values were completely random file to file, would be netpbm read fails for size that make no sense in 1/256 files. In practice & depending on data some might never see fails while an unfortunate few might almost always fail.
I’d make some argument any CR following a LF character should not be pulled in as part of the line read even on windows/dos systems where CRLF is the usual line termination order. I think though the real fix is better netpbm header reading code which more strictly breaks apart the header on the first whitespace character doing the last depth break, aware of the file size, so it can decide what portion of any valid sequence of whitespce characters after the decimal depth value is data and not whitespace.
The attached tarball when unpacked has both a passing and failing case. To run “povray fails.pov” or “povray works.pov”. The only difference between the two ppm files if the fails.ppm data is all 0x0D while works.ppm data bytes are all 0x0C. The image rendered is meaningless.
Thanks for your time. Bill P.
|
|
317 | Preview | Definite Bug | 3.70 release | Very Low | High | problem with +D option at specific output file dimensio ... | Closed | |
|
Task Description
Reported in p.beta-test by James Dietrich (2013-12-12)
when the display window must be scaled (because one or both dimensions are larger than the actual screen), the ratio of scale might be too large in some occasion, performing a memory corruption in two places and usually crashing povray.
How to reproduce, with a 1920×1080 display (or 1920×1200):
povray +W2596 +H1003 +Ispiral.pov +Ospiral.png +D
|
|
238 | Parser/SDL | Possible Bug | 3.70 RC4 | Very Low | High | Error during #read causes file to be kept open | Closed | |
3.70 RC7 |
Task Description
Consider the following script:
#fopen F "foo.txt" read
#read (F, Foo)
#debug concat ("'", Foo, "'\n")
#fclose F
Now assume that foo.txt erroneously contains unquoted text (which will result in a parse error):
Blah
When the error is reported, POV-Ray for Windows will helpfully open foo.txt, but any attempt to save a corrected version of foo.txt will fail until you exit the POV-Ray GUI, presumably because foo.txt is not properly closed by the parser.
|
|
174 | Setup/Install | Definite Bug | 3.70 beta 39 | Very Low | Medium | I/O Restriction defaults not being properly set for POV ... | Closed | |
3.70 RC7 |
Task Description
I/O Restriction defaults are not being properly set on a fresh install of POVWIN.
See this thread for more information.
|
|
239 | Setup/Install | Definite Bug | 3.70 RC4 | Very Low | Medium | Owner and group of user's local configurations on insta ... | Closed | |
Future release |
Task Description
I reinstall a system, (so ~/.povray was not existant), and then installed povray from sources, as a normal user (excepted the installation step):
$ ./configure ... $ make $ make check $ sudo make install
I find these steps pretty much standard.
The problem I’m noticing is that the $HOME/.povray hierarchy get owned by root (hey, it’s *MY* directory !). There is a chown in the Makefile for the target files (povray.ini & povray.conf), as well as subtree but:
* povowner & povgroup are hard coded to 0 (I would expect a copy of the owner & group of $HOME, wouldn’t I ?)
For getting povowner, I would suggest `stat -c “%u” $HOME` For povgroup, `stat -c “%g” $HOME`
Are they portable enough ? (I could ask on Monday a Solaris system, but I do not have bsd and the other flavours of unix)
(Stat is in section 1 of man, part of gnu coreutils, /usr/bin/stat)
Side note: This is fine to install for the local user, but new later users could benefit also from a ~/.povray/3.7/ subtree ; what about also filling the /etc/skel (when available) ? (and in /etc/skel, root owner is fine!)
|
|
43 | Editor | Definite Bug | All | Very Low | Low | Commas in path name | Closed | |
3.70 RC7 |
Task Description
In POV-ray 3.7 beta 33 under Windows XP, the editor’s MRU list incorrectly handles files that have a comma in the pathname. Only the part of the name before the comma appears on the MRU list, but the rest of the name is left off. Consequently, the file cannot be reopened via the MRU list. The file is also not reopened on launch if pov was closed with the file open. This also occurs in 3.6.1, I haven’t tried it under 3.6.2 yet.
Interestingly enough, a quick peek in the registry shows that both 3.6 and 3.7 are saving the entire path name correctly under HKEY_CURRENT_USER\Software\POV-Ray\v3.6\POV-Edit\Recent (or \v3.7\POV-Edit\Recent).
This seems to be limited strictly to the editor’s MRU list. The file can still be opened normally using the open dialog box. Calling POV-ray from the command line and using a file or path name with commas in it works correctly. Included files with commas in the path work correctly, and the Tools→Edit last rendered file/View last rendered file work correctly also.
To duplicate, save a file with a comma in the pathname (either in the directory name or the filename itself). Close the file, then attempt to reopen it using the MRU list in the file menu.
|
|
150 | Frontend | Compatibility Issue | 3.70 beta 37a | Very Low | Low | Windows file association problems (Win7 only??) | Closed | |
|
Task Description
Windows allows you to associate programs with file extensions using the “Open with” file manager right-click menu extension.
I’m running Windows 7 64bit, and installed the 64 bit versions of 3.6.2 and the beta appropriately.
A couple of problems that I haven’t tested very thoroughly:
1. If you have both POV 3.6.2 and the beta installed at the same time, you can no longer using this dialog change the association to the beta once it has been created for 3.6.2. There’s no error or anything; it just opens the file inside 3.6.2 instead. Maybe because both versions appear as “POV-Ray for Windows” to this dialog? Would adding the version number to the name fix things? Anything I can do on my end of things to resolve this?
2. In POV-Ray 3.6.2, I can use this dialog to open *.inc, *.txt and other files in POV-Ray, but only if POV-Ray isn’t already running. If POV-Ray is already running I get an “Only /EDIT and /RENDER may be passed to previous instance” error. Files with the *.pov extension open properly regardless, without any error. I am unable to test this in the beta at the moment due to the first problem unfortunately. Could someone please test this with the beta and confirm whether the behavior also exists?
3. With the POV-Ray 3.7 beta, entering the following command in the command prompt results in the same error:
"C:\Program Files\POV-Ray for Windows v3.7\bin\pvengine64.exe" "D:\Working\Povray\GearHead\LoadingScreen\btr_maanji.pov"
If I change it to the following it works however:
"C:\Program Files\POV-Ray for Windows v3.7\bin\pvengine64.exe" /EDIT "D:\Working\Povray\GearHead\LoadingScreen\btr_maanji.pov"
Is this error/behavior really necessary? Would it be OK to instead change the behavior when the /EDIT flag is omitted in the command-line such that the file is opened in the editor by default, without throwing an error?
|
|
233 | Parser/SDL | Possible Bug | 3.70 RC3 | Very Low | Low | Picture index out of range. - Fatal error in renderer: ... | Closed | |
3.70 RC7 |
Task Description
As posted in povray.beta-test 2012-01-14 with the same subject.
OS Win7 32 bit
The following code fails with the following message: Picture index out of range. Picture index out of range. Fatal error in renderer: Uncategorized error. Render failed
The texture scale is relevant.
It does not fail in Pov 3.62 The image map can be downloaded from: http://www.mmedia.is/~bjj/data/s_rings/sat_ring_color.png
(Attached)
#version 3.7;
global_settings { adc_bailout 0.0039 ambient_light rgb <1.000,1.000,1.000> assumed_gamma 1.00 irid_wavelength rgb <0.250,0.180,0.140> max_trace_level 5 number_of_waves 10 noise_generator 3 charset ascii }
background { colour rgb <0.000,0.000,0.000> }
#declare Ring_Texture1 = texture { uv_mapping pigment {
image_map{
png "sat_ring_color.png"
interpolate 2
map_type 0
}
rotate <90.000,90.000,0.000>
}
finish {
ambient rgb <0.100,0.100,0.100>
brilliance 1.000
crand 0.000
diffuse 0.600
metallic 0.000
phong 0.000
phong_size 40.000
specular 0.000
roughness 0.050
}
}
#declare Camera0 = camera { perspective location <3843.816,38.892,-2660.667> up y right 1.333*x angle 33.000 sky ←0.004,1.000,0.002> look_at < 0.449, 18.943, 0.102 > } end Camera0
disc { Disc0 0,y,4.400000,2.500000 texture{ Ring_Texture1 }
scale <750.000000,750.000000,750.000000> // Fails 32 bit
scale <800.000000,800.000000,800.000000> Fails 64 bit scale <600.000000,600.000000,600.000000> does not fail rotate <0.000000,0.000000,-20.000000> translate ←3500.000000,900.000000,900.000000> } end Disc0
camera{ Camera0 }
///
|
|
234 | Frontend | Definite Bug | 3.70 RC3 | Very Low | Low | The +GD flag does not work | Closed | |
3.70 RC7 |
Task Description
The +GD flag gives me an “Invalid parameter” error, whether on the command line or in a .ini file.
Debug_File= still works.
I reported this in povray.beta-test, but did not receive a response.
The problem occurs in both Windows 7 and in Linux.
|
|
249 | Parser/SDL | Definite Bug | 3.70 RC6 | Very Low | Low | UTF-8 files with BOM not accepted | Closed | |
3.70 RC7 |
Task Description
POV-Ray fails to accept UTF-8 encoded files with a leading Byte Order Mark.
According to the code it was intended to recognize a leading BOM (or, more precisely, leading non-ASCII code sequences) and automatically switch to UTF-8, so this must be considered a bug rather than a missing feature.
|
|
266 | Frontend | Definite Bug | 3.70 RC6 | Very Low | Low | command line options in ini files don't accept quoted s ... | Closed | |
3.70 RC7 |
Task Description
Quoted strings as parameters to command-line options work on the command line but not in INI files; e.g.:
+i"test.pov"
Root cause has already been identified (actually the problem was found during code inspection) and a fix is under way.
|
|
294 | Geometric Primitives | Definite Bug | 3.70 RC7 | Very Low | High | Thread safety issue in functions using splines. 3.7.0.R ... | Closed | |
3.70 release |
Task Description
Thread safety issue in functions using splines. 3.7.0.RC7.
First vetting in p.bugreports where several users were able to reproduce the fail on the following systems:
1) Ubuntu 12.1 i7 920 using 3.7.0.RC7 2) Ubuntu 12.04, AMD 2431 CPU, Linux 3.2.0-45 kernel using 3.7.0.RC7 (g++ 4.6 @x86_64-unknown-linux-gnu) 3) POV-Ray 3.7.0.RC7 (icpc 13.1.0 @x86_64-unknown-linux-gnu)
Intel(R) Xeon(R) CPU E5-2680 0 @ 2.70GHz
uname -or
2.6.32-279.14.1.el6.x86_64 GNU/Linux
lsb_release -irc
Distributor ID: CentOS
Release: 6.3
Codename: Final
4) Confirmed with openSUSE 12.2. 5) Just to add to the system list: with Windows and a core i7 one yields the same result. 6) “Le_Forgeron” ran under Intel Inspector (XE 2013) and provided this feedback :
...
that might be less than 60 seconds, but with Intel Inspector (XE 2013),
it becomes 42:50 (just 14 data races, oh well, that's just so friendly).
ID Type Sources Modules State
P1 Data race isosurf.cpp; mutex.hpp povray New
P2 Data race mutex.hpp; povms.cpp povray New
P3 Data race povray.cpp povray New
P4 Data race povray.cpp povray New
P5 Data race mutex.hpp; pov_mem.cpp; splines.cpp povray New
P6 Data race mutex.hpp; pov_mem.cpp; splines.cpp povray New
P7 Data race mutex.hpp; pov_mem.cpp; splines.cpp povray New
P8 Data race recursive_mutex.hpp; scene.cpp; task.cpp; taskqueue.cpp;
view.cpp povray New
P9 Data race condition_variable.hpp; vfe.cpp; vfesession.cpp povray New
P10 Data race condition_variable.hpp; unixconsole.cpp; vfesession.cpp
povray New
P11 Data race condition_variable.hpp; unixconsole.cpp; vfesession.cpp
povray New
P12 Data race unixconsole.cpp; vfesession.cpp; vfesession.h povray New
P13 Data race unixconsole.cpp; vfesession.cpp povray New
P14 Data race [Unknown]; unixconsole.cpp; vfesession.cpp
libboost_thread.so.1.49.0; povray New
Numbers 2, 3, 4, 8, 9, 10, 11, 12, 13 & 14 are related to the handling
of session (and occur once or twice only, excepted #8, four times).
Number 1 is about isosurface (adjusting gradient at isosurf.cpp:1099 vs
1098 (testing its value), and copying the isosurface) (IMHO, rendering
threads updating the object... not the best move without some
atomic/protection (and not sure a DBL is/can be atomic)) (occurs 2505
times).
Number 5, 6 and 7 are about splines
* sp->Cache_Type & Cache_Point, splines.cpp :803 vs :814/815 (2024 times)
* sp->Cache_Valid, :805 vs :813 vs :904 (1770 times)
* sp->Cache_Data, :807 vs :903 (5025 times)
Only my 0.02¢ (yes, very cheap), but it seems to confirm
For test code see attached files or SplineThreadSafety.pov attachment to p.bugreports and images were posted to p.b.images.
Issue shows up any time more than one thread is used. Use of AA tends to hide the problem so do not use it if using the output image for testing.
Thanks. Bill P.
|
|
308 | Geometric Primitives | Definite Bug | 3.70 RC7 | Very Low | Medium | Heightfield computation from color (not palette) red/gr ... | Closed | |
|
Task Description
Due to a recent thread in povray.general (7th September 2013), I dive into the code of height field creation.
There is 2 TODO in source/backend/support/imageutil.cpp, for image_height_at() (circa line 512)
The first one is about using the index of palette-image: As far as *257 would indeed perform a better job to cover the full range than *256, it would break backward compatibility with previous versions of povray (3.6 included) which only promoted the index as the Most significant byte, keeping the least one at 0.
But on the second one, the new formula is plain wrong: (r*255+g)*255 should be (r*256+g)*255. In previous versions, r*255 was the Most significant byte, and g*255 was the least one. Ergo, the value was r*255*256 + g*255, which can and should be only factored as (r*256+g)*255;
I know it is damn late in the release schedule, but can that be either be fixed before final official delivery or a memo added to the release note that it would be fixed later and backward-bug will not be maintained for that specific point (using rgb-8 or less bit per channel-image for height field)
(it was not bugged in 3.6.1 nor before, it’s just that tiny little bit of 3.7 that would should that bug)
If you look carefully at the attached pictures (povray +I... +H700 +W700 +A0.01) of scene and scene36, there is a significant difference at the top. With 3.6, it matched exactly (hence the noise on the top pixels row) the view. With 3.7, it cannot reach the top and leave a white area (another difference is the slope on the side are also a bit more lower with 3.7, easier to spot when alternating the display of both pictures)
If you want to regenerate hf.png, it was rendered with povray 3.7RC7, +W400 +H400 +A0.01 +Ihf.pov
The white line at the bottom is expected, as the minimal value of the height field is “full green”
|
|
262 | Setup/Install | Definite Bug | 3.70 RC6 | Very Low | Low | sources are being compiled twice on Linux | Closed | |
3.70 release |
Task Description
When running make on Linux, the backend source files (and possibly others?) are apparently compiled twice: first from the .../source/backend/ directory, and another time from the .../source/ directory. As an example, here are the corresponding lines for sphsweep.cpp:
g++ -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../source -I../../source -I../../source/base -I../../unix -I../../vfe
-I../../vfe/unix -pthread -I/usr/include/OpenEXR -pthread -I/usr/include -pipe -Wno-multichar -Wno-write-strin
gs -fno-enforce-eh-specs -s -O3 -ffast-math -pthread -MT sphsweep.o -MD -MP -MF .deps/sphsweep.Tpo -c -o sphsweep.
o `test -f 'shape/sphsweep.cpp' || echo './'`shape/sphsweep.cpp
g++ -DHAVE_CONFIG_H -I. -I.. -I.. -I../source/backend -I../source/base -I../source/frontend -I../unix -I../vfe -I.
./vfe/unix -pthread -I/usr/include/OpenEXR -pthread -I/usr/include -pipe -Wno-multichar -Wno-write-strings -fno
-enforce-eh-specs -s -O3 -ffast-math -pthread -MT sphsweep.o -MD -MP -MF .deps/sphsweep.Tpo -c -o sphsweep.o `test
-f 'backend/shape/sphsweep.cpp' || echo './'`backend/shape/sphsweep.cpp
This is especially annoying on platforms that are rather slow at compiling.
|
|
271 | Texture/Material/Finish | Definite Bug | 3.70 RC6 | Defer | Low | filter affects object's own brightness in an improper w ... | Closed | |
3.70 release |
Task Description
The following scene has four spheres with different pigment color & filter settings:
- Left: filter 1 - Right: filter 0
- Top: red 0.0 green 0.5 blue 1.0 - Bottom: red 0.00 green 0.05 blue 0.10 (10% of the above)
Background is set to black, so that we only see the diffuse component of the object’s effective color.
Theoretically, both left spheres should be invisible, as they are fully transmissive (with a filtering effect), but apparently with a high filter setting, reducing an object’s pigment color actually increases the object’s effective diffuse color.
//+w600 +h600
global_settings{ assumed_gamma 1.0 }
camera {
orthographic
location <0,0,-10>
right 4*x
up 4*y
look_at <0,0,0>
}
light_source{<10,10,-10> color rgb 1 parallel }
background { color rgb 0 }
default {
finish {
ambient 0
diffuse 1
specular 0
phong 0
reflection { 0.0 }
}
}
sphere { <-1, 1, 0>, 0.8 texture { pigment { color rgb <0,0.5,1.0> filter 1.0 } } }
sphere { < 1, 1, 0>, 0.8 texture { pigment { color rgb <0,0.5,1.0> filter 0.0 } } }
sphere { <-1,-1, 0>, 0.8 texture { pigment { color rgb <0,0.5,1.0>*0.1 filter 1.0 } } }
sphere { < 1,-1, 0>, 0.8 texture { pigment { color rgb <0,0.5,1.0>*0.1 filter 0.0 } } }
This bug has been around in 3.6 already.
|
|
274 | Subsurface Scattering | Definite Bug | 3.70 RC7 | Very Low | Low | light source fading doesn't work properly with area_ill ... | Closed | |
3.70 release |
Task Description
When using fade_distance and fade_power in combination with area_illumination, the light source fading is not applied to materials with subsurface scattering; see the following code for an example:
#version 3.7;
global_settings {
assumed_gamma 1.0
mm_per_unit 10
subsurface { samples 200,20 }
}
camera {
right x*image_width/image_height
angle 30
location <0,1.5,-4>
look_at <0,0,0>
}
sky_sphere {
pigment {
gradient y
color_map {
[0.0 rgb <0.6,0.7,1.0>]
[0.7 rgb <0.0,0.1,0.8>]
}
}
}
plane {
y, 0
texture {
pigment {
checker
color rgb <1.0, 0.8, 0.6>
color rgb <1.0, 0.0, 0.0>
scale 0.5
}
}
}
light_source {
<50,50,50>
color rgb 30
area_light 5*x,5*y,17,17 adaptive 1 jitter circular orient
area_illumination on
fade_distance 10
fade_power 2
}
cylinder {
<0,0,0>, <0,0.2,0> 1
texture {
pigment { color rgb 1 }
finish {
ambient 0
diffuse 0.7
specular albedo 0.3
reflection { 0.3 fresnel }
conserve_energy
subsurface { translucency 0.1 }
}
}
interior { ior 1.5 }
}
sphere {
<0,0.4,0>, 0.2
texture {
pigment { color rgb <1,0.6,0.0> }
finish {
ambient 0
diffuse 0.0
specular albedo 0.8 metallic
reflection { 1.0 metallic }
conserve_energy
}
}
}
|
|
304 | Parser/SDL | Definite Bug | 3.70 RC7 | Very Low | Low | #for-loop may fail to perform last iteration | Closed | |
3.70 release |
Task Description
Using an end value of 1048576 or larger in a #for loop will cause the last iteration to be skipped, as can be demonstrated by the following code:
#declare N = 2000000; #debug concat(”N = “,str(N, 0,50),”\n”) #debug concat(”N-5 = “,str(N-5,0,50),”\n\n”) #for (I, N-5, N, 1)
#debug concat("I = ",str(I,0,50),"\n")
#end
(The limit was observed with a Win64 build; other builds may exhibit other limits or might even work fine, depending on the floating point engine used.)
As this limit is still far below the numeric precision limit, and a corresponding #while loop works fine with much higher values, this must be considered a bug rather than an inevitable limitation.
The bug can be tracked down to a faulty condition in tokenize.cpp, Parser::Parse_Directive(), CASE(END_TOKEN), case FOR_COND:
if ( ((Step > 0) && (*CurrentPtr >= End + EPSILON)) ||
((Step < 0) && (*CurrentPtr <= End - EPSILON)) )
which should instead be:
if ( ((Step > 0) && (*CurrentPtr > End + EPSILON)) ||
((Step < 0) && (*CurrentPtr < End - EPSILON)) )
|
|
315 | Geometric Primitives | Definite Bug | 3.70 release | Very Low | Low | inverse keyword does not work properly with quadrics | Closed | |
3.71 release |
Task Description
As the following scene demonstrates, the “inverse” keyword produces unexpected results with quadrics.
Left: a sphere primitive as reference Right: a sphere-shaped quadric primitive (sphere-shaped)
Top: plain Bottom: inverse
The objects are clipped in half to better demonstrate the effect. Regular texture is shown in white, interior_texture in red; the surface normal of a selected point (blue) as returned by trace() is shown in green.
Note how the sphere’s surface normal, as well as the textures, are flipped when “inverse” is used (this is the intended standard behaviour of all objects), while the quadric’s normal and textures erroneously remain uchanged.
// +w800 +h600
#version 3.7;
global_settings{ assumed_gamma 1.0 }
#default{ finish { ambient 0.1 diffuse 0.9 specular 0.5 }}
camera {
perspective
angle 40
right x*image_width/image_height
location <0,0,-10>
look_at <0,0,0>
}
light_source{ < 1000,3000,-3000> color rgb 1 }
background { color rgb 0.5 }
#declare T_White = texture { pigment { color rgb 1 } }
#declare T_Red = texture { pigment { color red 1 } }
#declare T_Green = texture { pigment { color green 1 } }
#declare T_Blue = texture { pigment { color blue 1 } }
#declare TopLeft = sphere { 0, 1 }
#declare BottomLeft = sphere { 0, 1 inverse }
#declare TopRight = quadric { <1,1,1>, <0,0,0>, <0,0,0>, -1 }
#declare BottomRight = quadric { <1,1,1>, <0,0,0>, <0,0,0>, -1 inverse }
#macro Mac(Obj, P, D)
union {
#local N = <0,0,0>;
#local O = <-0.6,0.4,-10>;
#local Q = trace(Obj, O, D, N);
#if (vlength(N) > 0)
sphere { Q, 0.05 texture { T_Blue } }
cylinder { Q, Q + N, 0.02 texture { T_Green } }
#else
cylinder { O, O + D*10000, 0.02 texture { T_Red } }
#end
object { Obj texture { T_White } interior_texture { T_Red } clipped_by { box { <-1,-1,-1>, <0,1,1> rotate y*30 } } }
translate P
}
#end
Mac(TopLeft, <-1.2, 1.2, 0>, z)
Mac(TopRight, < 1.2, 1.2, 0>, z)
Mac(BottomLeft, <-1.2,-1.2, 0>, z)
Mac(BottomRight, < 1.2,-1.2, 0>, z)
|
|
316 | Geometric Primitives | Definite Bug | 3.70 release | Very Low | Low | inverse keyword does not work properly with fractals | Closed | |
3.71 release |
Task Description
As the following scene demonstrates, the “inverse” keyword produces unexpected results with fractals.
Left: a sphere primitive as reference Right: a julia fractal
Top: plain Bottom: inverse
The objects are clipped in half to better demonstrate the effect. Regular texture is shown in white, interior_texture in red; the surface normal of a selected point (blue) as returned by trace() is shown in green.
Note how the sphere’s surface normal, as well as the textures, are flipped when “inverse” is used (this is the intended standard behaviour of all objects), while the fractal’s normal and textures erroneously remain uchanged.
// +w800 +h600
#version 3.7;
global_settings{ assumed_gamma 1.0 }
#default{ finish { ambient 0.1 diffuse 0.9 specular 0.5 }}
camera {
perspective
angle 40
right x*image_width/image_height
location <0,0,-10>
look_at <0,0,0>
}
light_source{ < 1000,3000,-3000> color rgb 1 }
background { color rgb 0.5 }
#declare T_White = texture { pigment { color rgb 1 } }
#declare T_Red = texture { pigment { color red 1 } }
#declare T_Green = texture { pigment { color green 1 } }
#declare T_Blue = texture { pigment { color blue 1 } }
#declare TopLeft = sphere { 0, 1 }
#declare BottomLeft = object { TopLeft inverse }
#declare TopRight = julia_fractal{ <-0.083,0.0,-0.83,-0.025> quaternion sqr max_iteration 8 precision 20 scale 0.9 }
#declare BottomRight = object { TopRight inverse }
#macro Mac(Obj, P, D)
union {
#local N = <0,0,0>;
#local O = <-0.6,0.4,-10>;
#local Q = trace(Obj, O, D, N);
#if (vlength(N) > 0)
sphere { Q, 0.05 texture { T_Blue } }
cylinder { Q, Q + N, 0.02 texture { T_Green } }
#else
cylinder { O, O + D*10000, 0.02 texture { T_Red } }
#end
object { Obj texture { T_White } interior_texture { T_Red } clipped_by { box { <-2,-2,-2>, <0,2,2> rotate y*30 } } }
translate P
}
#end
Mac(TopLeft, <-1.2, 1.2, 0>, z)
Mac(TopRight, < 1.2, 1.2, 0>, z)
Mac(BottomLeft, <-1.2,-1.2, 0>, z)
Mac(BottomRight, < 1.2,-1.2, 0>, z)
|
|
318 | Texture/Material/Finish | Definite Bug | 3.70 release | Very Low | Low | method 3 (default) scattering media is too bright & cau ... | Closed | |
3.71 release |
Task Description
The following scene demonstrates how media sampling method 3 gives inaccurate results with scattering media.
The scene shows four spheres with uniform media, using (left to right) sampling methods 1, 2 and 3 with default settings, and sampling method 3 with high minimum sample count, respectively.
Note how changing the sample count significantly affects the result, despite the media being uniform.
Code analysis shows that the root cause is an underestimation of the extinction effect on the light scattered by the media, corresponding in order of magnitude to half the distance between mandatory samples (as defined by minimum sample count).
The effect also leads to visible artifacts when nesting hollow objects inside the media, as can be demonstrated by un-commenting the four smaller spheres.
#version 3.7;
camera {
perspective angle 25
location <0.0 , 0.0 ,-20.0>
right x*image_width/image_height
look_at <0.0 , 0.0 , 0.0>
}
light_source {
<0,3000,-3000> color rgb 1
}
background { color rgb 0.5 }
plane {
<0,1,0>, -1
texture { pigment { checker color rgb<1,1,1>*1.2 color rgb<0.25,0.15,0.1>*0 } }
}
#declare T_Transparent = texture {
pigment { color rgbt <1,1,1,1> } finish { diffuse 1 }
}
sphere { <-3,0,0>, 1.00
texture { T_Transparent }
hollow
interior {
media {
scattering { 1 color rgb 2 extinction 1 }
method 1
}
}
}
sphere { <-1,0,0>, 1.00
texture { T_Transparent }
hollow
interior {
media {
scattering { 1 color rgb 2 extinction 1 }
method 2
}
}
}
sphere { <1,0,0>, 1.00
texture { T_Transparent }
hollow
interior {
media {
scattering { 1 color rgb 2 extinction 1 }
method 3
}
}
}
sphere { <3,0,0>, 1.00
texture { T_Transparent }
hollow
interior {
media {
scattering { 1 color rgb 2 extinction 1 }
method 3
samples 100
}
}
}
/*
sphere { <-3,0,0>,0.8 texture { T_Transparent } hollow }
sphere { <-1,0,0>,0.8 texture { T_Transparent } hollow }
sphere { < 1,0,0>,0.8 texture { T_Transparent } hollow }
sphere { < 3,0,0>,0.8 texture { T_Transparent } hollow }
*/
|
|
336 | Parser/SDL | Definite Bug | 3.70 release | Very Low | Low | #fopen w/o OPEN_TYPE crash povray (segfault) | Closed | |
3.71 release |
Task Description
#fopen directive w/o OPEN_TYPE (yeah, I forgot it, some other languages have ‘read’ as default value)
expected behavior: Parse error msg “line XXX, OPEN_TYPE missing in #fopen directive”, then stop.
observed behavior: crash - Segfault err (core dump) in Parsing stage
minimal working example attached
|
|
24 | Geometric Primitives | Definite Bug | 3.70 beta 32 | Very Low | Critical | isosurface, bounding box & threads | Closed | |
3.70 beta 33 |
Task Description
Linux beta 32, 64bits, compiled from sources.
povray -w800 -h600 +a0.3 +kfi1 +kff78 -L/usr/local/share/povray-3.7/scenes/incdemo -Ii_internal.pov +WT5 +R4 +AM1 +MB1
Important issue: +WT5 +MB1
Seems Fine for +WT1 +MB1 Also fine for +WT5 +MB9
The intersection with the containing box displays some two-shades of grey random checkered patterns. Size of square looks like size of renderering thread. Position too.
Impacted frames (of 78): 01, 02, 03, 30, 48, 74, 76.
|
|
34 | Configure/Build | Possible Bug | 3.70 beta 32 | Very Low | Critical | configure: error: Could not link against boost_thread-b ... | Closed | |
3.70 beta 33 |
Task Description
I’ve been trying to upgrade povray 3.6.1 to 3.7-beta-32. I’ve configured with no additional arguments, and the configure dies with:
checking whether to build the boost thread library from sources... no checking for boostlib >= 1.35... yes checking whether the Boost::Thread library is available... yes checking for exit in -lboost_thread... no checking for exit in -lboost_thread-boost_thread... no configure: error: Could not link against boost_thread-boost_thread !
I figured that the problem was with my boost installation (1.35) and upgraded boost to 1.39; the problem remains. I tried to see if exit was defined in libboost_thread and/or libboost_thread-boost_thread and it isn’t. Just to be sure that my currrent setup works for the released version, I rebuilt/reninstalled 3.6.1, which went without problem.
I’m on a slackware-12.2 box, using gcc-4.4.0.
|
|
51 | Parser/SDL | Definite Bug | 3.70 beta 32 | Very Low | Critical | POV-Ray crashes hard on missing parenthesis | Closed | |
3.70 beta 35 |
Task Description
The following (bogus) SDL code causes POV-Ray 3.7 beta to crash hard with an access violation:
#include "fubar.inc"
Bar(42)
#macro FooBar() #end
//fubar.inc
#macro Foo(Fnord) #end
#macro Bar(Ignord) Foo(23 #end
|
|
104 | Image format | Definite Bug | 3.70 beta 37 | Medium | Critical | Output file gamma broken for File_Gamma=1.0 | Closed | |
3.70 beta 37a |
Task Description
Setting File_Gamma=1.0 produces unexpectedly bright output files for most output file formats, as if File_Gamma was set to 2.2 instead.
The underlying problem is a bug that, when File_Gamma is set to exactly 1.0, causes the encoding gamma function to be undefined, which was not meant to happen in current versions, and instead was reserved for future versions to signal that a file-format-specific default encoding gamma should be used. The image file output handlers already support this, most of them choosing the sRGB transfer function, giving roughly the same output as setting File_Gamma=2.2.
As a preliminary workaround, users may want to set File_Gamma=1.02 (any value smaller than 0.99 or greater than 1.01 should do).
|
|
77 | Geometric Primitives | Definite Bug | 3.70 beta 35 | Very Low | High | Cone is not on good place when first base point is lowe ... | Closed | |
|
Task Description
Cone is not on good place when first base point is lower then end cap point. Example:
cone { <0, 0, 0>, 2, <0, 1, 0>, 1 } - good
cone { <0, 0, 0>, 1, <0, 1, 0>, 2 } - bad
This is on 3.7 beta 35 version.
|
|
78 | Photons | Possible Bug | 3.70 beta 35a | Very Low | High | Wrong rendering of BeamTest-Scene in 3.7.beta.35a | Closed | |
3.70 beta 37 |
Task Description
Hi,
following scene will not be rendered correctly in 3.7.beta.35a:
http://lib.povray.org/collection/beamtest/cousin%20ricky%201.1/beamtest.html
maybe it is a configuration problem or it is a real bug.
|
|
92 | Geometric Primitives | Definite Bug | 3.70 beta 36 | Low | High | Sphere_Sweep Bug | Closed | |
3.70 beta 37 |
Task Description
This item may need to be merged with item FS#81. This is another sphere sweep bug, though they are of different spline types.
The code is
#include "colors.inc"
camera {
location <0, 0.0, -4.0>
direction 1.5*z
right x*image_width/image_height
look_at <0.0, 0.0, 0.0>
}
light_source {
<0, 0, 0> // light's position (translated below)
color rgb <1, 1, 1> // light's color
translate <-30, 30, -30>
}
#declare i_start = 0;
#declare i_stop = 3;
#declare i_step = 0.05;
#declare i_inc = i_start;
sphere_sweep {
linear_spline // linear curve
(i_stop - i_start)/i_step + 1, // number of specified sphere positions
#while(i_inc<=i_stop)
#declare y_coor = 0.23*sin(7.1*i_inc);
<i_inc, y_coor, 0>, 0.05
#declare i_inc = i_inc + i_step;
#end
pigment{color Orange}
}
|
|
94 | Texture/Material/Finish | Definite Bug | 3.70 beta 36 | Very Low | High | Unexpected refraction angle in interfaces with changing ... | Closed | |
3.70 beta 37 |
Task Description
I’ve tried to model this setup: http://kschwebke.webng.com/povray/ior-interfaces/drawing.png with the following SDL: http://kschwebke.webng.com/povray/ior-interfaces/rs2.pov.txt
A small overlap between the two transparent solids is needed, because a gap would lead to total reflection. The camera in the test scene looks in the direction of the ray in the setup drawing. The setup is surrounded with angular markers, so one can easily read the final resulting looking angle.
POV-Ray 3.6.1 renders the expected result (~53° in the center of the screen): http://kschwebke.webng.com/povray/ior-interfaces/rs2-35.jpeg
POV-Ray 3.7.0b35a (compiled Unix source) renders a different (and in my opinion wrong) angle (~67°), however – for the very same scene file: http://kschwebke.webng.com/povray/ior-interfaces/rs2-37b35a.jpeg
I’ve started a discussion about this issue in povray.beta-test: http://news.povray.org/povray.beta-test/thread/%3Cweb.4bba4677730ab9f3e8c084b40%40news.povray.org%3E/
All linked documents are also attached.
|
|
95 | Photons | Definite Bug | 3.70 beta 36 | Low | High | Photons are over-attenuated by semi-transparent surface ... | Closed | |
3.70 beta 37 |
Task Description
The code to attenuate transmitted photons according to surface texture was apparently duplicated during refactoring of the source code for version 3.7. Behavior has changed from 3.6 to 3.7 (beta.36) accordingly, as can be demonstrated with the following scene:
global_settings {
assumed_gamma 1.0
max_trace_level 10
photons { spacing 0.02 }
}
camera {
right x*image_width/image_height
location <0,2.6,-10>
look_at <0,0.75,0>
}
light_source {
<500,300,150>
color rgb 1.3
photons {
refraction on
reflection on
}
}
sky_sphere {
pigment {
gradient y
color_map {
[0.0 rgb <0.6,0.7,1.0>]
[0.7 rgb <0.0,0.1,0.8>]
}
}
}
plane {
y, 0
texture { pigment { color rgb <1.0, 0.8, 0.6> } }
}
#declare M_Glass=
material {
texture {
pigment {rgbt 1}
finish {
ambient 0.0
diffuse 0.05
specular 0.6
roughness 0.005
reflection { 0.1, 1.0 fresnel on }
conserve_energy
}
}
interior {
ior 1.5
fade_power 1001
fade_distance 0.9
fade_color <0.5,0.8,0.6>
}
}
#declare M_PseudoGlass2=
material {
texture {
pigment {rgbf <0.8,0.2,0.2,0.8>}
finish {
ambient 0.0
diffuse 0.05
specular 0.6
roughness 0.005
reflection { 0.1, 1.0 fresnel on }
conserve_energy
}
}
interior {
ior 1.0
}
}
sphere {
<1.1,1,-1.3>, 1
material { M_Glass }
photons {
target 1.0
refraction on
reflection on
}
}
box {
<2.4,0,-2.3>, <2.6,4,0.3>
material { M_PseudoGlass2 }
photons { target 1.0 refraction on reflection on }
}
|
|
113 | Texture/Material/Finish | Definite Bug | 3.70 beta 37a | Low | High | Multi-layered reflections broken | Closed | |
3.70 beta 38 |
Task Description
Reflections in multi-layered textures are broken in 3.7 betas, as can be demonstrated with the following scene showing two reflective hemispheres on a checkered plane:
camera {
location <1.0, 0.5, -4.0>
direction 1.5*z
right x*image_width/image_height
look_at <0.0, 0.0, 0.0>
}
sky_sphere {
pigment {
gradient y
color_map {
[0.0 rgb <0.6,0.7,1.0>]
[0.7 rgb <0.0,0.1,0.8>]
}
}
}
light_source {
<0, 0, 0> // light's position (translated below)
color rgb <1, 1, 1> // light's color
translate <-30, 30, -30>
}
default {
finish { diffuse 0 ambient 0 specular 0 }
}
// ----------------------------------------
plane { // checkered floor
y, -1
texture
{
pigment { checker color rgb 1 color blue 1 }
finish{ diffuse 0.8 ambient 0.1 }
}
}
// left hemisphere
intersection {
sphere { 0, 1 }
plane { x, -0.002 }
texture {
pigment { color rgb 1 }
finish{ reflection { 0.5 } }
}
texture {
pigment { color rgbt 1 }
finish{ reflection { 0.4 } }
}
texture {
pigment { color rgbt 1 }
finish{ reflection { 0.1 } }
}
}
// right hemisphere
intersection {
sphere { 0, 1 }
plane { -x, -0.002 }
texture {
pigment { color rgb 1 }
finish{ reflection { 1.0 } }
}
}
Note that the reflection parameters of the left, multi-layered hemisphere sum up to 1.0, i.e. the same value as used in the single layer in the right hemisphere.
The first attached file (test_3.6.2.png), rendered with POV-Ray 3.6.2, shows the expected output: Both hemispheres appear to have the same reflectivity.
The second attached file (test_3.7.0.beta37a.png), rendered with POV-Ray 3.7.0.beta.37a, shows a much brighter left (multi-layered) sphere.
As it turns out, in order to get the expected result with POV-Ray 3.7.0.beta.37a, the reflectivity of each layer must be divided by 3, 2 and 1, respectively (which obviously does not sum up to 1.0):
...
texture {
pigment { color rgb 1 }
finish{ reflection { 0.5 / 3 } }
}
texture {
pigment { color rgbt 1 }
finish{ reflection { 0.4 / 2 } }
}
texture {
pigment { color rgbt 1 }
finish{ reflection { 0.1 / 1 } }
}
...
|
|
179 | Runtime error | Definite Bug | 3.70 beta 40 | Very Low | High | unix version segfaults when $HOME not set | Closed | |
3.70 beta 41 |
Task Description
unixoptions.cpp has a getenv(”HOME”) that does an assignment without checking to see if getenv returns NULL.
This causes an immediate and unceremonious segfault in those situations where $HOME is not set such as in the case where povray is launched by a daemon.
Best solution might be to set the home to /tmp and print a warning message about $HOME not being set.
|
|
182 | Texture/Material/Finish | Definite Bug | 3.70 beta 40 | Low | High | multi-textured blobs in intersections / differences bro ... | Closed | |
3.70 beta 41 |
Task Description
Multi-textured blobs are broken with 3.7 beta 40 when used inside an intersection, as can be demonstrated by the following scene:
#default { texture { pigment { rgb 1 } } }
camera {
right x*image_width/image_height
location <0,1.5,-4>
look_at <0,1,0>
}
light_source { <500,500,-500> color rgb 1 }
difference { blob {
threshold 0.6
sphere { < 0.75, 0, 0>, 1, 1 texture { pigment { color red 1 } } }
sphere { <-0.375, 0.65, 0>, 1, 1 texture { pigment { color green 1 } } }
sphere { <-0.375, -0.65, 0>, 1, 1 }
} }
With POV-Ray 3.7.0 beta 40, the entire blob is rendered with the default texture.
The same problem can be seen with “difference” or “merge” instead of “intersection”.
Omitting the CSG “envelope”, using “union”, or assigning the blob to a variable first and then using it inside an intersection, will yield the expected result.
POV-Ray 3.62 renders all variants as expected.
According to initial analysis, the problem appears to be caused by the dual use of the “MULTITEXTURE_FLAG”, which is used in CSG to indicate use of the “cutaway_textures” feature, and in blobs to indicate per-element texturing. (The same flag is also used in meshes to indicate per-face or per-vertex texturing, so similar problems are to expected there.)
My proposal is to use an entirely separate flag for the “cutaway_textures” feature (the blob and mesh can safely continue to share the MULTITEXTURE_FLAG).
|
|
188 | Texture/Material/Finish | Definite Bug | 3.70 RC1 | Low | High | no_reflection broken | Closed | |
3.70 RC2 |
Task Description
I rendered attached .pov file with both 3.62 and 3.7RC1, and got different output between them. In 3.7RC1, it looks like no_reflection option of the black sphere doesn’t work.
|
|
208 | Parser/SDL | Definite Bug | 3.70 RC3 | Low | High | Use-after-free when returning local function or spline ... | Closed | |
3.70 RC4 |
Task Description
#macro A()
#local foo = function { x }
foo
#end
#local bar = A();
This causes either a segfault, corruption detected by malloc, or “Parse Error: Unknown user defined function”.
After some debugging I think this is what happens.
In source/backend/parser/parse.cpp, Parser::Parse_RValue is called to define the value of bar. Get_Token is called, which invokes A() and which ultimately returns foo as a FUNCT_ID_TOKEN. This token is handled by CASE_VECTOR in Parse_RValue. The relevant clause calls Parse_Unknown_Vector to parse additional tokens (e.g. “foo ( 1 )”). There aren’t any other tokens, but in the process of determining that, #end is reached and Return_From_Macro destroys the symbol table of A, including foo.
So by the time the CASE_VECTOR clause decides that foo is a function identifier that should be copied, the function is destroyed (both the function itself and its number in the symbol table). So here:
Temp_Data = (void *) Copy_Identifier((void *)*Token.DataPtr,*Token.NumberPtr);
if *Token.DataPtr (in this case, a function index) was already overwritten, we get “Unknown user defined function”; if it still has the valid function number, it increments the reference count of the function (which has already been freed) back from 0, and we get a double-free later.
A similar problem occurs when foo is a spline.
A tentative patch for the function case is attached.
|
|
235 | Platform-specific | Definite Bug | 3.70 RC3 | Very Low | High | Segmentation fault with animation of large image | Closed | |
|
Task Description
Hopefully platform specific, other ports are welcome to check their scaling code.
Reported originally in p.beta-test (28 january 2012) by Cousin Ricky (email dropped)
Symptom: crash on start of second frame rendering Environment: Unix, with display of rendered picture, rendered picture does not fit at 1:1 on the display
Demo (adjust the H/W to your setting to get them larger, both or any of them):
global_settings { assumed_gamma 1 }
light_source { <-1, 1, -1> * 1000, rgb 1 }
sphere { 2.5 * z, 1 pigment { red 1 } }
povray +H2000 +W2000 +KI0 +KF1 +KFI0 +KFF10 code.pov
|
|
244 | Texture/Material/Finish | Unimp. Feature/TODO | 3.70 RC5 | Very Low | High | Crand is disabled in 3.7 code | Closed | |
3.70 RC7 |
Task Description
Turns out the crand feature, which depends on a real random number generator (and hence has threading issues) was disabled early on during 3.7 development, and hasn’t been fixed yet. The code is commented out in line 2426/2427 of trace.cpp.
|
|
270 | Other | Definite Bug | 3.70 release | Medium | High | render abort-continue (+C) sometimes skips blocks | Closed | |
|
Task Description
When aborting a render when there are unfinished blocks among finished ones, under certain conditions some of those blocks are skipped when continuing the render later.
|
|
10 | Parser/SDL | Feature Request | 3.70 beta 32 | Very Low | Medium | Add support for specifying input images' gamma pre-corr ... | Closed | |
3.70 beta 40 |
Task Description
Input image files may have been created with gamma pre-correction for some specific target gamma, which may vary from image to image. Some file formats like PNG or HDR support embedding gamma pre-correction information in the image file, but this information may be missing or faulty, and some formats don’t support it at all. Additionally, it may be desirable to tamper with an input image’s gamma for artistic reasons.
Therefore, I suggest adding a means to explicitly specify input images’ originally intended target gamma on a per-image basis, like:
image_map { jpeg "MyImage.jpg" assumed_gamma 1.8 }
|
|
31 | Texture/Material/Finish | Definite Bug | 3.70 beta 32 | Very Low | Medium | function pattern in image map | Closed | |
3.70 beta 33 |
Task Description
Function use in image maps is broken.
The following should result in a white and green checkered unit square, but is transparent.
camera {
location <0.0, 0.5, -4.0>
direction 1.5*z
right x*image_width/image_height
look_at <0.0, 0.0, 0.0>
}
background {rgb <1,1,1>}
light_source {
<-30, 10, -30>
color rgb <1, 1, 1>
}
plane {y,-1 pigment{checker rgb <1,0,0> rgb <1,0.5,0.5> }}
plane {y,-0.99
pigment {
image_map {
function 10,10 {
pigment {checker rgb <0,1,0>, rgb <1,1,1> scale 0.1}
}
once
}
rotate <90,0,0>
}
}
|
|
32 | Other | Definite Bug | 3.70 beta 32 | Very Low | Medium | tiff file extention error | Closed | |
|
Task Description
The parser is failing to read the .tiff file extension from the input string...
bump_map { tiff "earth03_hf2.tiff" }
Results in file not found, but
bump_map { tiff "earth03_hf2" }
will find the file. It might be that it’s not a three character extension?
|
|
39 | Distribution | Definite Bug | 3.70 beta 32 | Very Low | Medium | "cats" and "life" sample scenes broken | Closed | |
3.70 release |
Task Description
The following files were garbled in changelist #4648 by stripping all line terminators, making the files unusable:
.../scenes/advanced/cats/cattext.inc
.../scenes/animations/life/blink4.inc
.../scenes/animations/life/walker.inc
Line terminators of these files were already problematic in previous versions of the file, having been CR-only.
The following files changed with #4648 should be reviewed closely as well, as they were previously CR-only, too, and at least some of them exhibit some peculiarities regarding line and/or file terminators:
.../scenes/animations/pentmap/pentmap.ini
.../scenes/animations/pentmap/pentmap.pov
.../scenes/animations/slinky/slnk.ini
.../scenes/incdemo/metals/metals.doc
.../scenes/incdemo/stones/stones.doc
.../scenes/incdemo/woods/morewood.doc
.../scenes/incdemo/woods/woods.doc
.../scenes/textures/pigments/skies/skies.doc
|
|
40 | Platform-specific | Compatibility Issue | 3.70 beta 32 | Very Low | Medium | Compilation on freebsd | Closed | |
3.70 beta 33 |
Task Description
Reported for freebsd 7.2 (current production version, true for previous version, unknown for 8.0 in beta now)
freebsd does not provide CLOCK_PROCESS_CPUTIME_ID (even if CLOCK... is posix).
As a consequence, compilation of the unix-source is currently not possible for freebsd target.
Might be a simple selection for Change 4356 ? (assuming a relevant test in ./configure) (getrusage() seems available on freebsd, but does it provide the pieces of information needed, I do not know that code good enough to assert that)
|
|
53 | Geometric Primitives | Definite Bug | 3.70 beta 32 | Very Low | Medium | Blob trace level | Closed | |
|
Task Description
It appears that reflective bounces from blobs are not incrementing the trace level, causing self- reflecting hall of mirror portions to stall renders.
|