Skip to content

Port of FS226 - Near-coincident surface accuracy. Less accuracy in 3.7. #125

Open
@wfpokorny

Description

@wfpokorny

http://bugs.povray.org/task/226


Details:

This is a transparent box very close to a plane.

box {
    -1, 1
    pigment { rgbf <0, 0, 1, 1> }
}

plane {
    #if (version < 3.7)
        y, -1.0000007
    #else
        y, -1.00007
    #end
    pigment { rgb 1 }
    finish { ambient 1 }
}

camera {
    location <1, 2, 3>
    look_at 0
}

The box is placed 100 times closer to the plane for 3.6, but both 3.6 and 3.7 produce exactly the same black artifact (attached).

So apparently 3.7 is less accurate. (And the exact factor 100 feels suspicious.)

near.png (1.9 KiB)


Comments:


Comment by Grimbert Jérôme (Le_Forgeron) - Monday, 10 September 2012, 00:04 GMT+5

Historical search (ignore case needed)

  • Max_distance
    3.1g : 1.0e7
    3.6.1 : 1.0e7
    3.7RC5 : 1.0e7
    3.7RC6 : 1.0e7
  • Small_tolerance
    3.1g : 0.001
    3.6.1 : 0.001
    3.7RC5 : 0.001
    3.7RC6 : 0.001

From comment in objects.cpp, a change occurred for >= MIN_ISECT_DEPTH
(no such limit in 3.6.1), or some postcondition in FindIntersection

For instance: in trace.cpp, the postcondition is := dist > SMALL_TOLERANCE

The post condition somehow contradict the comment about MIN_ISECT_DEPTH

I will try to experiment with the post condition later.


Comment by Grimbert Jérôme (Le_Forgeron) - Monday, 10 September 2012, 00:25 GMT+5

Post condition is not relevant for the original test scene.

But MIN_ISECT_DEPTH is !
at 1.0e-4 and 1.0.e-5, it's the picture of 3.7RC...
at 1.0e-6, back to the picture of 3.6

The comment (of objects.cpp) seems to ask for a less rough value than SMALL_TOLERANCE as MIN_ISECT_DEPTH, yet 1.0e-4 seems not small enough (compared to 1.0e-3 of SMALL_TOLERANCE).

See attached zip file:
FS226.zip

Metadata

Metadata

Assignees

Labels

artefactresults in artefacts, i.e. render output that looks broken

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions