IP Library Granted Patent US 8,988,433
Granted Patent B2
US 8,988,433 · App. 13/096,585 · Granted Mar 24, 2015

Systems and methods for primitive intersection in ray tracing

Inventors: Stephen Purcell (Mountain View, CA); Christopher Philip Alan Tann (San Jose, CA); Jason Rupert Redgrave (Mountain View, CA); Cüneyt Özdaş (Berkeley, CA)
Assignee: Imagination Technologies, Limited
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,988,433
App. No.
13/096,585
Granted
Mar 24, 2015
Kind
B2
Abstract

Aspects include systems, methods, and media for implementing methods relating to increasing consistency of results during intersection testing. In an example, vertexes define edges of primitives composing a scene (e.g., triangles defining a mesh for a surface of an object in a 3-D scene). An edge can be shared between two primitives. Intersection testing algorithms can use tests involving edges to determine whether or not the ray intersects a primitive defined by those edges. In one approach, a precedence among the vertexes defining a particular edge is enforced for such intersection testing. The precedence causes an intersection tester to always test a given edge in the same orientation, regardless of which primitive defined (at least in part) by that edge is being intersection tested.

Claims (17)

1. An apparatus, comprising:

an intersection testing unit configured for testing rays for intersection with primitives of a 3-D scene being ray traced, wherein the primitives are defined by edges defined by respective selections of pairs of vertexes from vertex data, and the edges can be shared among definitions of multiple primitives; and

an input pre-processor coupled with the intersection testing unit operable to receive vertexes to be submitted to the intersection testing unit, and to determine an order in which the vertexes are to be submitted to the intersection testing unit, the order determined by enforcing a canonical pre-determined relative order among all vertex positions in the 3-D scene, the enforcing comprising reordering a presentation order of vertexes to the intersection testing unit in response to determining that an order in which those vertexes were received by the input pre-processor violates the pre-determined relative order of the positions of those vertexes.

2. The apparatus of claim 1 , wherein the input pre-processor is operable to determine the relative positions of the vertexes in scene space by sorting the vertexes using respective values of one or more coordinate axes of the scene space.

3. The apparatus of claim 1 , wherein the input pre-processor is configured to orient an edge defined by a pair of received vertexes based on which vertex of that pair has a smallest or a largest value in a selected axis of the scene space.

4. The apparatus of claim 1 , wherein the input pre-processor is configured to orient an edge defined by a pair of received vertices based on determining a min/max value in any one or more of scene dimensions of the space for those vertexes.

5. The apparatus of claim 3 , wherein the input pre-processor is configured to sequentially select each axis of a 3-D scene space according to a determined order, and the vertexes sorted for that axis until a smallest or a largest value is determined.

6. The apparatus of claim 1 , wherein the input pre-processor is operable to receive the vertexes during a setup phase, to determine a relative ordering of the vertexes defining the edge, and associate a flag with the edge, wherein the intersection testing unit is operable to interpret the flag and responsively reorder the vertexes, if indicated by the flag.

7. The apparatus of claim 1 , wherein the intersection testing unit is operable to perform one of a triple half plane test and an unsigned volume test.

8. A computer-implemented method for use in ray tracing, comprising:

in a ray intersection testing component, testing a ray for intersection with a surface defined by a plurality of curves, wherein the curves are defined at least in part by pairs of vertexes submitted to the ray intersection testing component;

in a pre-processor component,

inputting a pair of vertexes that are to be submitted to the ray intersection testing component, the inputting of the pair of vertexes occurring a plurality of times during testing of multiple different primitives for intersection,

determining a constant relative ordering of the vertexes in the pair, wherein the constant relative ordering is preserved for every time that the vertexes of the pair are to be submitted to the ray intersection testing component and conforms to a canonical pre-determined relative order among all vertex positions in the 3-D scene, and

submitting vertexes of the pair to the ray intersection testing component in the determined constant relative ordering.

9. The method of claim 8 , wherein the surface is a first primitive defined by a plurality of line segments, and at least one line segment of the plurality is shared with a second primitive.

10. The method of claim 9 , wherein the first primitive and the second primitive are from different triangle strips.

Assignments (3)
SECURITY INTEREST Recorded Jul 31, 2024
From: IMAGINATION TECHNOLOGIES LIMITED
To: FORTRESS INVESTMENT GROUP (UK) LTD
Reel/Frame 068221/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 13, 2014
From: CAUSTIC GRAPHICS, INC.
To: IMAGINATION TECHNOLOGIES, LTD
Reel/Frame 032446/0219 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 28, 2011
From: PURCELL, STEPHEN; TANN, CHRISTOPHER PHILIP ALAN; REDGRAVE, JASON RUPERT; OZDAS, CUNEYT
To: CAUSTIC GRAPHICS, INC.
Reel/Frame 026195/0737 →
Continuity (2)
Provisional Application 61329265 · Apr 29, 2010
Related Publication 20110267347A1 · Nov 3, 2011