Robust ray-triangle intersection
First Claim
1. A computing device configured to test for intersection of a ray by a triangle, the computing device comprising:
- a processor configured to generate a ray intersection test request for testing for intersection between a ray and a triangle; and
a ray intersection test unit configured to receive the ray intersection test request and to test for intersection between the ray and a triangle, by;
determining a location of an intersection between the ray and the triangle;
detecting that the intersection is on one of an edge or a vertex of the triangle;
classifying the intersection as one of an intersection with a left edge, a right edge, a top edge, a bottom edge, a vertex bordering both left edges or one left edge and one top edge, or a vertex bordering a right edge or a bottom edge; and
based on the classifying, classifying the intersection as a hit or a miss.
1 Assignment
0 Petitions
Accused Products
Abstract
A technique for classifying a ray tracing intersection with a triangle edge or vertex avoids either rendering holes or multiple hits of the same ray for different triangles. The technique employs a tie-breaking scheme in which certain types of edges are classified as hits and certain types of edges are classified as misses. The test is performed in a coordinate space that comprises a projection into the viewspace of the ray, and thus where the ray direction has a non-zero magnitude in one axis (e.g., z) but a zero magnitude in the two other axes. In this coordinate space, edges are classified as one of top, bottom, left, and right, and an intersection on an edge counts as a hit if the intersection hits a top or left edge, but a miss if the intersection hits a bottom or right edge. Vertices are processed in a related manner.
-
Citations
20 Claims
-
1. A computing device configured to test for intersection of a ray by a triangle, the computing device comprising:
-
a processor configured to generate a ray intersection test request for testing for intersection between a ray and a triangle; and a ray intersection test unit configured to receive the ray intersection test request and to test for intersection between the ray and a triangle, by; determining a location of an intersection between the ray and the triangle; detecting that the intersection is on one of an edge or a vertex of the triangle; classifying the intersection as one of an intersection with a left edge, a right edge, a top edge, a bottom edge, a vertex bordering both left edges or one left edge and one top edge, or a vertex bordering a right edge or a bottom edge; and based on the classifying, classifying the intersection as a hit or a miss. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method for testing for intersection of a ray by a triangle, the method comprising:
in response to a ray intersection test request for testing for intersection between the ray and the triangle; determining a location of an intersection between the ray and the triangle; detecting that the intersection is on one of an edge or a vertex of the triangle; classifying the intersection as one of an intersection with a left edge, a right edge, a top edge, a bottom edge, a vertex bordering both left edges or one left edge and one top edge, or a vertex bordering a right edge or a bottom edge; and based on the classifying, classifying the intersection as a hit or a miss. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18)
-
19. A ray intersection test unit configured to receive a ray intersection test request and to test for intersection between the ray and a triangle, by:
-
determining a location of an intersection between the ray and the triangle; detecting that the intersection is on one of an edge or a vertex of the triangle; classifying the intersection as one of an intersection with a left edge, a right edge, a top edge, a bottom edge, a vertex bordering both left edges or one left edge and one top edge, or a vertex bordering a right edge or a bottom edge; and based on the classifying, classifying the intersection as a hit or a miss. - View Dependent Claims (20)
-
Specification