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.


FS#191 - Using interpolated image_maps in functions results in pixel-sized dot-artifacts

Attached to Project: POV-Ray
Opened by Jaime Vives Piqueres (jaimevives) - Friday, 28 January 2011, 13:13 GMT
Last edited by Christoph Lipka (clipka) - Thursday, 21 June 2012, 22:58 GMT
Task Type Definite Bug
Category Backend → Texture/Material/Finish
Status Closed
Assigned To Christoph Lipka (clipka)
Operating System All
Severity Low
Priority Normal
Reported Version 3.70 RC1
Due in Version 3.70 RC4
Due Date Undecided
Percent Complete 100%
Votes 0
Private No


Using interpolated image_maps in functions results in pixel-sized dot-artifacts when using the functions back into pigments.

This problem doesn’t shows using the same code on POV-Ray 3.6.

I qualified it as “low severity” because is not going to happen to most users: it will show only when using some advances techniques, for example when you want to decompose an image_map into the RGB components, perform operations, and mixing them back with an averaged pigment (example attached).

This task depends upon

Closed by  Christoph Lipka (clipka)
Thursday, 21 June 2012, 22:58 GMT
Reason for closing:  Fixed
Additional comments about closing:  no news, so I guess the fix was effective
Comment by Grimbert Jérôme (Le_Forgeron) - Monday, 07 February 2011, 15:32 GMT

I tested it with 3.7RC3 on linux: the issue is more visible without AA.
Could it be some clipping of the function value done differently (with round error in the process) ?

For instance, a function might value in theorie between 0 and 1.0; but it happens in fact (due to artefact of numerical calculus, so not for a pure mathematician), than it evolves between -0.000001 and 1.0001 (I have seen such result, such as computing the dot product of two unit vectors... it should stay below (or equal to) 1, but requesting the arcos of it sometime generate error (it was bigger than 1.)

Could the artefact be due to the rollover of the value ? (like with modulo (%))

Comment by Christoph Lipka (clipka) - Monday, 07 February 2011, 17:06 GMT
  • Field changed: Status (Unconfirmed → Investigating)
  • Field changed: Operating System (Linux → All)
  • Task assigned to Christoph Lipka (clipka)

This is indeed what is happening; it’s a precision problem in the interpolation code.

Comment by Christoph Lipka (clipka) - Monday, 07 February 2011, 23:54 GMT

Looks like I introduced the issue with change #4962; color computation in Interp() was done with double precision before, so I'll re-establish that.

Comment by Christoph Lipka (clipka) - Tuesday, 08 February 2011, 19:33 GMT

Done. See change #5400.

Comment by Grimbert Jérôme (Le_Forgeron) - Wednesday, 09 February 2011, 18:52 GMT

Tested: Artefact gone. Seems solved with #5400.