Systems and methods for distributed scalable ray processing
AssigneeImagination Technologies Limited
InventorsJoseph M. Richards, Luke T. Peterson, Steven J. Clohset
Life of this patent
Estimating the term…
Abstract
Ray tracing systems have computation units (“RACs”) adapted to perform ray tracing operations (e.g. intersection testing). There are multiple RACs. A centralized packet unit controls the allocation and testing of rays by the RACs. This allows RACs to be implemented without Content Addressable Memories (CAMs) which are expensive to implement, but the functionality of CAMs can still be achieved by implemented them in the centralized controller.
Claims20
A machine-implemented method of processing rays, comprising:
- at each of a plurality of computation units:
- processing rays for intersection with nodes of an acceleration structure, wherein each node of the acceleration structure is associated with a respective node identifier, and each of the computation units comprises a respective ray definition memory that stores definition data for rays, and
- outputting a node identifier and a number of rays;
- and
- at a central collector coupled with each of the plurality of computation units:
- receiving the node identifier and the number of rays,
- allocating one or more ray packet identifiers based on the number of rays,
- updating or creating, in a packet memory, a collection of ray packet identifiers indexed by a node identifier determined from the received node identifier to include the allocated one or more ray packet identifiers, thereby associating the node identified by the received node identifier with the allocated one or more ray packet identifiers,
- selecting one or more collections of ray packet identifiers, and
- outputting the ray packet identifiers of the one or more collections of ray packet identifiers to the plurality of computation units.
A rendering system comprising:
- a plurality of computation units, each comprising a ray definition memory and a ray packet index memory, each of the computation units being configured to:
- process rays for intersection with nodes of an acceleration structure, wherein each node of the acceleration structure is associated with a respective node identifier,
- store definition data for rays in its definition memory, and
- output a node identifier and a number of rays;
- and
- a central collector coupled with each of the plurality of computation units, the central collector comprising a packet memory, wherein the central collector is configured to:
- receive the node identifier and the number of rays,
- allocate one or more ray packet identifiers based on the number of rays,
- update or create, in the packet memory, a collection of ray packet identifiers indexed by a node identifier determined from the received node identifier to include the allocated one or more ray packet identifiers, thereby associating the node identified by the received node identifier with the allocated one or more ray packet identifiers,
- select one or more collections of ray packet identifiers, and
- output the ray packet identifiers of the one or more collections to the plurality of computation units.
A non-transitory computer readable storage medium having stored thereon a computer readable dataset description of an integrated circuit that, when processed in an integrated circuit manufacturing system, causes the integrated circuit manufacturing system to manufacture a rendering system comprising:
- a plurality of computation units, each comprising a ray definition memory and a ray packet index memory, each of the computation units being configured to:
- process rays for intersection with nodes of an acceleration structure, wherein each node of the acceleration structure is associated with a respective node identifier,
- store definition data for rays in its definition memory, and
- output a node identifier and a number of rays;
- and
- a central collector coupled with each of the plurality of computation units, the central collector comprising a packet memory, wherein the central collector is configured to:
- receive the node identifier and the number of rays,
- allocate one or more ray packet identifiers based on the number of rays,
- update or create, in the packet memory, a collection of ray packet identifiers indexed by a node identifier determined from the received node identifier to include the allocated one or more ray packet identifiers, thereby associating the node identified by the received node identifier with the allocated one or more ray packet identifiers,
- select one or more collections of ray packet identifiers, and
- output the ray packet identifiers of the one or more collections of ray packet identifiers to the plurality of computation units.
Dependencies are inferred from the claim text.