The Persistence of Vision Raytracer (POV-Ray).
This is the Bug Tracking System for the POV-Ray project. Before opening a new task, please read How to make a Bug Report
Please do not issue bugs reports against versions earlier than 3.6.
FS#24 - isosurface, bounding box & threads
Attached to Project:
POV-Ray
Opened by Grimbert Jérôme (Le_Forgeron) - Monday, 11 May 2009, 17:02 GMT
Last edited by Chris Cason (chrisc) - Friday, 07 August 2009, 06:27 GMT
Opened by Grimbert Jérôme (Le_Forgeron) - Monday, 11 May 2009, 17:02 GMT
Last edited by Chris Cason (chrisc) - Friday, 07 August 2009, 06:27 GMT
|
DetailsLinux beta 32, 64bits, compiled from sources.
povray -w800 -h600 +a0.3 +kfi1 +kff78 Important issue: +WT5 +MB1
Seems Fine for +WT1 +MB1
The intersection with the containing box displays some two-shades of grey
Impacted frames (of 78): |
This task depends upon
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)) {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.
Fixed with changelist 4790