US 12,067,668 B2
Graphics processing
Richard Bruce, Cambridge (GB); William Robert Stoye, Cambridge (GB); Mathieu Jean Joseph Robart, Cambridge (GB); and Jørn Nystad, Trondheim (NO)
Assigned to Arm Limited, Cambridge (GB)
Filed by Arm Limited, Cambridge (GB)
Filed on Jun. 3, 2022, as Appl. No. 17/805,387.
Claims priority of application No. 2108053 (GB), filed on Jun. 4, 2021.
Prior Publication US 2022/0392146 A1, Dec. 8, 2022
Int. Cl. G06T 15/06 (2011.01); G06T 15/00 (2011.01)
CPC G06T 15/06 (2013.01) [G06T 15/005 (2013.01); G06T 2210/21 (2013.01)] 17 Claims
OG exemplary drawing
 
1. A method of operating a graphics processor when rendering a frame that represents a view of a scene comprising one or more objects using a ray tracing process, the graphics processor comprising a programmable execution circuit operable to execute programs to perform graphics processing operations, and in which a program can be executed by groups of plural execution threads together;
the method comprising:
when a group of execution threads is executing a program to perform a ray tracing operation for a corresponding group of rays that are performing a traversal of the ray tracing acceleration data structure together, in response to the execution threads executing a set of one or more ray-primitive testing instructions that are included in the program in respect of a set of primitives defined for the scene:
testing one or more rays from the group of plural rays that are performing the ray tracing operation together for intersection with the primitives in the set of primitives being tested, wherein the ray-primitive intersection testing is configured such that when a ray intersects a shared boundary of two or more primitives in the subset of primitives being tested, the ray-primitive intersection testing will return a result that only one of the primitives is intersected by the ray, wherein the primitives are defined in terms of a set of vertices with edges connecting the primitive's vertices, and wherein when the ray-primitive intersection testing determines that a ray intersects an edge of primitive, the ray-primitive intersection testing further comprises: determining whether the ray falls inside or outside of the primitive by: determining a perpendicular-ray vector that is perpendicular to the direction of the ray; determining an edge vector in the direction of the edge that the ray intersects; determining a dot product of the perpendicular-ray vector and the edge vector; and using the sign of the dot product to determine whether the ray is inside or outside the primitive; and
returning a result of the intersection testing for the ray tracing operation.