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.

Tasklist

FS#313 - radiosity.cpp pov::RadiosityFunction::BeforeTile assertion failed

Attached to Project: POV-Ray
Opened by André Vitor de Lima Matos (andre.vmatos) - Saturday, 16 November 2013, 11:42 GMT
Last edited by William F Pokorny (wfpokorny) - Friday, 28 October 2016, 15:09 GMT
Task Type Definite Bug
Category Backend → Radiosity
Status Tracked on GitHub
Assigned To Christoph Lipka (clipka)
Operating System All
Severity High
Priority High
Reported Version 3.70 release
Due in Version Undecided
Due Date Undecided
Percent Complete 20%
Votes 1
Private No

Details

With 3.7.0 final, rendering attached files (for Computer Engineering college course),
which renders without issues in povray 3.6.1, fails with following error:

...
==== [Rendering...] ========================================================
povray: backend/lighting/radiosity.cpp:324: virtual void pov::RadiosityFunction::BeforeTile(int, unsigned int): Assertion `(pts >= PRETRACE_FIRST) && (pts <= PRETRACE_MAX)' failed.

Command line:

povray +K0.6500 \
+FN +Q9 +MB1 \
+W600 +H400 \
+AM1 +A0.0 +R2 \
+D +SP32 +EP4 \
+L/usr/share/povray-3.7/include \
+Imain.pov \
+Omain-0.6500.png

Using Arch Linux testing current:
Linux archmidi 3.12.0-1-ARCH #1 SMP PREEMPT Wed Nov 6 09:06:27 CET 2013 x86_64 GNU/Linux

Downstream bug report:
https://bugs.archlinux.org/task/37689

This task depends upon

Comment by André Vitor de Lima Matos (andre.vmatos) - Saturday, 16 November 2013, 11:48 GMT

Sorry, main.pov in bug report had a little typo due to vim (B). Follow fixed version, with .pov-state dump file generated.

Comment by Christoph Lipka (clipka) - Saturday, 16 November 2013, 12:46 GMT

Thanks for submitting this bug report.

Can you confirm that avoiding mosaic pretrace (i.e. removing the +SP32 and +EP4 options) works around this issue?

Comment by André Vitor de Lima Matos (andre.vmatos) - Saturday, 16 November 2013, 13:25 GMT

Hi. Thanks for you quick reply.
Confirming that removing given options avoid this issue.

Comment by Christoph Lipka (clipka) - Saturday, 16 November 2013, 14:17 GMT

Preliminary fix submitted as change #6092.

Comment by Grimbert Jérôme (Le_Forgeron) - Monday, 31 March 2014, 16:14 GMT

Grepping the code for BeforeTile, it seems that all but one calls are using only one parameter, defaulting to pts=FINAL_TRACE) (and FINAL_TRACE is 255 a.k.a UCHAR_MAX / OT_PASS_FINAL ).

Instrumenting the code of tracetask, the radiosity is done via TraceTask::SimpleSamplingM0P which does not provide the second parameter. Hence the failure of assertion.

Comment by Grimbert Jérôme (Le_Forgeron) - Sunday, 11 May 2014, 11:10 GMT

I would suggest the following correction, because the mosaic preview at that time is the final render (as far as radiosity is concerned, the radiosity computation has been done previously).

The false/ true change is for the "isFinalTrace" member of RadiosityFunction / radiosity.

Did I misinterpret anything ?

--- a/smp/source/backend/scene/view.cpp       Sat Mar 08 17:08:19 2014 +0100
+++ b/smp/source/backend/scene/view.cpp       Sun May 11 13:03:01 2014 +0200
@@ -1094,7 +1094,7 @@
        {
                // do render with mosaic preview start size
                for(int i = 0; i < maxRenderThreads; i++)
-                       viewThreadData.push_back(dynamic_cast<ViewThreadData *>(renderTasks.AppendTask(new TraceTask(&viewData, 0, jitterscale, aathreshold, aadepth, aaGammaCurve, previewstartsize, false, false, highReproducibility))));
+                       viewThreadData.push_back(dynamic_cast<ViewThreadData *>(renderTasks.AppendTask(new TraceTask(&viewData, 0, jitterscale, aathreshold, aadepth, aaGammaCurve, previewstartsize, false, true/*false*/, highReproducibility))));
 
                for(unsigned int step = (previewstartsize >> 1); step >= previewendsize; step >>= 1)
                {
@@ -1109,7 +1109,7 @@
 
                        // do render with current mosaic preview size
                        for(int i = 0; i < maxRenderThreads; i++)
-                               viewThreadData.push_back(dynamic_cast<ViewThreadData *>(renderTasks.AppendTask(new TraceTask(&viewData, 0, jitterscale, aathreshold, aadepth, aaGammaCurve, step, true, ((step == 1) && (tracingmethod == 0)), highReproducibility))));
+                               viewThreadData.push_back(dynamic_cast<ViewThreadData *>(renderTasks.AppendTask(new TraceTask(&viewData, 0, jitterscale, aathreshold, aadepth, aaGammaCurve, step, true, true/*((step == 1) && (tracingmethod == 0))*/, highReproducibility))));
                }
 
                // do render everything again if the final mosaic preview block size was not one or anti-aliasing is required
Comment by William F Pokorny (wfpokorny) - Friday, 28 October 2016, 15:09 GMT
  • Field changed: Status (Investigating → Tracked on GitHub)

Now tracked on github as issue #137.

Sample code runs with our current 3.7.1, but code questions remain.

Loading...