POV-Ray

The Persistence of Vision Raytracer (POV-Ray).

This is the legacy Bug Tracking System for the POV-Ray project. Bugs listed here are being migrated to our github issue tracker. Please refer to that for new reports or updates to existing ones on this system.

Attached to Project: POV-Ray
Opened by Grimbert Jérôme - 2009-05-11
Last edited by Chris Cason - 2009-08-07

FS#24 - isosurface, bounding box & threads

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.

Closed by  Chris Cason
Friday, 07 August 2009, 06:27 GMT
Reason for closing:  Fixed
Grimbert Jérôme commented on Monday, 11 May 2009, 17:07 GMT

Bugs is due to Bounding box handling in the isosurface object: on some condition, an intersection can be left on the IStack.
As the IStack is not reset, this leads to issue for color computation for the thread. Hence the square pattern.

Proposal of solution: pop the Intersection which has been added locally, so as to behave nicely at the global level.

diff -r da476cece3cc -r aaa984181c5b source/backend/shape/isosurf.cpp
--- a/source/backend/shape/isosurf.cpp  Mon Apr 13 14:10:46 2009 +0200
+++ b/source/backend/shape/isosurf.cpp  Mon Apr 13 20:16:24 2009 +0200
@@ -276,7 +276,13 @@
                tmax = Depth2 = min(Depth2, BOUND_HUGE);
                tmin = Depth1 = min(Depth2, Depth1);
                if((tmax - tmin) < accuracy)
-                       return (false);
+                {
+                   if (IFound==true) 
+                   {
+                      Depth_Stack->pop();
+                   }
+                   return (false);
+                }
                Thread->Stats[Ray_IsoSurface_Tests]++;
                if((Depth1 < accuracy) && (Thread->isosurfaceData->Inv3 == 1))
                {

Admin
Christoph Lipka commented on Sunday, 24 May 2009, 18:03 GMT

I checked most other objects' All_Intersection handlers, and they seemed to be "clean" regarding this issue, except for BicubicPatch and HField which I didn't check in detail.

Admin
Christoph Lipka commented on Sunday, 24 May 2009, 18:58 GMT

Fixed with changelist 4790

Loading...

Available keyboard shortcuts

Tasklist

Task Details

Task Editing