WO2024072703A1 - Test spatial de volumes englobants pour le tramage - Google Patents

Test spatial de volumes englobants pour le tramage Download PDF

Info

Publication number
WO2024072703A1
WO2024072703A1 PCT/US2023/033474 US2023033474W WO2024072703A1 WO 2024072703 A1 WO2024072703 A1 WO 2024072703A1 US 2023033474 W US2023033474 W US 2023033474W WO 2024072703 A1 WO2024072703 A1 WO 2024072703A1
Authority
WO
WIPO (PCT)
Prior art keywords
scene
planes
bounding volume
frustum
plane
Prior art date
Application number
PCT/US2023/033474
Other languages
English (en)
Inventor
Christopher J. Brennan
Matthaeus G. CHAJDAS
Original Assignee
Advanced Micro Devices, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices, Inc. filed Critical Advanced Micro Devices, Inc.
Publication of WO2024072703A1 publication Critical patent/WO2024072703A1/fr

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/30Clipping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/12Bounding box
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/21Collision detection, intersection

Definitions

  • processing systems To support rasterization processes for a scene, processing systems often implement various visibility techniques to determine which primitives in a scene to rasterize. For such visibility techniques, processing systems determine which primitives are visible in a scene based on a first set of data structures representing the scene. Based on the primitives that are visible in the scene, the processing system identifies which primitives to rasterize. Similarly, to support ray tracing processes for the scene, processing systems often rely on one or more acceleration structures.
  • An acceleration structure includes, for example, a bounding volume hierarchy (BVH), which is a tree structure representing a set of geometric objects (e.g., triangles or other primitives) within the scene to be rendered.
  • BBVH bounding volume hierarchy
  • the geometric objects are enclosed in bounding boxes or other bounding volumes that form leaf nodes of the tree structure, and then these nodes are grouped into small sets, with each set enclosed in their own bounding volumes that represent a parent node on the tree structure, and these small sets then are bound into larger sets that are likewise enclosed in their own bounding volumes that represent a higher parent node on the tree structure, and so forth, until there is a single bounding volume representing the top node of the tree structure and which encompasses all lower-level bounding volumes.
  • maintaining the respective data structures for rasterization and acceleration structures for ray tracing increases the amount of memory needed by the processing system to render the scene, potentially causing increased processing times and decreased processing efficiency for the processing system.
  • FIG. 1 is a block diagram of a processing system configured to perform one or more spatial tests of one or more bounding volumes using one or more compute units, in accordance with some implementations.
  • FIG. 2 is a block diagram of an accelerated processing unit configured to perform a spatial test of a bounding volume on a compute unit, in accordance with some implementations.
  • FIG. 3 is a diagram of an example acceleration structure including one or more bounding volumes used for performing a spatial test, in accordance with some implementations.
  • FIG. 4 is a flow diagram of an example operation for performing a spatial test of a bounding volume on a compute unit, in accordance with some implementations.
  • FIG. 5 is a block diagram of compute unit configured to perform multiple spatial tests of one or more bounding volumes, in accordance with some implementations.
  • FIG. 6 is a flow diagram of an example method for performing a plane test of a bounding volume on a compute unit, in accordance with some implementations.
  • FIG. 7 is a flow diagram of an example method for performing a frustum test of a bounding volume on a compute unit, in accordance with some implementations.
  • a processing system e.g., accelerated processing unit (APU), central processing unit (CPU)
  • APU accelerated processing unit
  • CPU central processing unit
  • the processing system then implements one or more stages of a graphics pipeline (e.g., an assembler stage, vertex shader stage, hull shader stage, tessellator stage, domain shader stage, geometry shader stage) to generate a data structure representing one or more primitives, objects, or both within the scene as indicated in the draw calls of the command stream.
  • a graphics pipeline e.g., an assembler stage, vertex shader stage, hull shader stage, tessellator stage, domain shader stage, geometry shader stage
  • the processing system supports rasterization of the scene by, for example, determining which primitives, objects or both are visible in the scene.
  • the processing system To determine which primitivei ves, objects, or both are visible in the scene, the processing system performs one or more spatial tests (e.g., plane tests, frustum tests) on the data structures. To perform such spatial tests (e.g., plane tests, frustum tests), the processing system first receives a set of plane equations. Using these plane equations, the processing system generates one or more sets of planes in the scene, one or more frustums for specific views inside the scene, or both.
  • plane tests e.g., plane tests, frustum tests
  • the processing system generates a frustum of a scene that includes two or more planes forming an unbounded shape (e.g., unbounded prism, unbounded rectangular pyramid, unbounded triangular pyramid) within the scene (e.g., at a location in the scene).
  • the processing system then performs a plane test, frustum test, or both of one or more portions of the data structure to determine, for example, if one or more primitives represented in the data structure intersect with one or more planes of a set of planes in the scene, if one or more primitives represented in the data structure are at least partially within a frustum of the scene, or both.
  • the processing system Based on the plane tests and frustum tests (e.g., spatial tests), the processing system generates intersection data identifying, for example, if one or more planes of a set of planes in a scene intersect with one or more primitives represented in a data structure, whether one or more primitives represented in a data structure are at least partially within a frustum of the scene, whether one or more primitives represented in a data structure are fully within a frustum of the scene, or any combination thereof. Based on the intersection data, the processing system identifies which primitives, objects, or both are visible in the scene, which draw calls include one or more visible primitives or objects, which primitives, objects, or both to rasterize, or any combination thereof.
  • intersection data identifying, for example, if one or more planes of a set of planes in a scene intersect with one or more primitives represented in a data structure, whether one or more primitives represented in a data structure are at least partially within a frustum of the scene, whether one
  • the processing system based on the intersection data, identifies which primitives, objects, or both are visible in a scene (e.g., those primitives, objects, or both that are least partially within a frustum) and determines which draw calls to execute for the scene based on the identified visible primitives, objects, or both (e.g., determines to execute only draw calls including one or more visible primitives, objects, or both to render the scene).
  • the processing system is configured to generate one or more bounding volumes based on the scene geometry.
  • bounding volumes for example, each represents a partition (e.g., closed volume) of at least a portion of the scene that contains one or more primitives, objects, or both of the scene and includes, for example, an axis-aligned bounding box (AABB), oriented bounding box (OBB), bounding shape (e.g., capsule, cylinder, ellipsoid, sphere, slab, triangle), or discrete oriented polytope (DOP), to name a few.
  • AABB axis-aligned bounding box
  • OOBB oriented bounding box
  • bounding shape e.g., capsule, cylinder, ellipsoid, sphere, slab, triangle
  • DOP discrete oriented polytope
  • An acceleration structure includes, for example, a data structure that has two or more nodes (e.g., boxes, leaves) with each node representing a bounding volume (e.g., a partition of at least a portion of the scene that contains one or more primitives, objects, or both within that portion of the scene).
  • a bounding volume e.g., a partition of at least a portion of the scene that contains one or more primitives, objects, or both within that portion of the scene.
  • an acceleration structure includes a bounding volume hierarchy (BVH), binary space partitioning (BSP) tree, k-dimensional tree, or R-tree, to name a few.
  • Such ray states are then used to render the primitives, objects, or both indicated in the scene geometry, perform physics calculations (e.g., physics simulations) for physics engines, perform lighting calculations for lighting engines, or any combination thereof.
  • physics calculations e.g., physics simulations
  • lighting calculations for lighting engines, or any combination thereof.
  • the resources and memory needed by the processing system to render the scene are increased.
  • a compute unit e.g., processing core, thread, single instruction, multiple data (SIMD) unit
  • SIMD single instruction, multiple data
  • the processing system first receives a scene description indicating, for example, one or more primitives of a scene, scene geometry, scene layout, or any combination thereof. Based on the scene description, the processing system generates one or more bounding volumes each representing a partition of a scene that contains one or more primitives, objects, or both of the scene.
  • the processing system generates one or more acceleration structures each including one or more bounding volumes.
  • a spatial test e.g., plane test, frustum test, or both
  • the processing system is configured to generate one or more sets of planes in a scene, a frustum for a specific view inside the scene, or both based on one or more plane equations.
  • Each set of planes in the scene for example, includes one or more planes in the scene and each frustum for a specific view inside the scene, for example, includes two or more planes defining an unbounded shape (e.g., rectangular pyramid, triangular pyramid) in the scene.
  • a compute unit e.g., processing core, thread, SIMD unit
  • a compute unit performs plane tests, frustum tests, or both of one or more of the bounding volumes.
  • Each plane test of a bounding volume includes an operation in which the compute unit determines if one or more planes of a set of planes in the scene intersect with the bounding volume.
  • Each frustum test of a bounding volume includes an operation in which the compute unit determines whether the bounding volume is at least partially within the frustum, in the scene wholly within the frustum in the scene, partially outside the frustum in the scene, wholly outside the frustum in the scene, or any combination thereof.
  • the compute unit For each plane test of a bounding volume, in response to the compute unit determining that a bounding volume intersects with one or more planes of a set of planes in a scene, the compute unit generates intersection data indicating whether the bounding volume intersects with one or more planes of a set of planes in the scene.
  • the compute unit in response to the compute unit determining that the bounding volume is at least partially within a frustum of the scene, wholly within the frustum of the scene, partially outside the frustum of the scene, or wholly outside the frustum of the scene, the compute unit generates intersection data indicating whether the bounding volume is at least partially within the frustum of the scene, wholly within the frustum of the scene, partially outside the frustum of the scene, or wholly outside the frustum of the scene.
  • the compute unit After generating intersection data, the compute unit provides the intersection data to an output buffer where it is made available, for example, to a shader program, to help render one or more primitives, perform one or more physics operations for a physics engine, perform one or more lighting operations for a lighting engine, or any combination thereof, to name a few.
  • the processing system uses the intersection data to determine which primitives are visible in the scene (e.g., primitives contained in a bounding volume that is at least partially within a frustum), which primitives are to be rasterized (e.g., primitives that are in a bounding volume that is wholly within a frustum), which primitives in the scene are hidden (e.g., primitives contained in a bounding volume that is wholly not within a frustum), or any combination thereof.
  • a compute unit of the processing system is configured to perform a spatial test (e.g., a plane test, a frustum test, or both) of a bounding volume.
  • the processing system determines visibility data, physics data, and lighting data by performing frustum tests of bounding volumes from, for example, acceleration structures (e.g., shared acceleration structures) rather than other data structures, helping reducing the amount of memory and resources used by the processing system to render a scene.
  • acceleration structures e.g., shared acceleration structures
  • FIG. 1 is a block diagram of a processing system 100 configured to perform one or more spatial tests of one or more bounding volumes according to implementations.
  • the processing system 100 includes or has access to a memory 106 or other storage component implemented using a non-transitory computer- readable medium, for example, a dynamic random-access memory (DRAM).
  • DRAM dynamic random-access memory
  • the memory 106 is implemented using other types of memory including, for example, static random-access memory (SRAM), nonvolatile RAM, and the like.
  • the memory 106 includes an external memory implemented external to the processing units implemented in the processing system 100.
  • the processing system 100 also includes a bus 112 to support communication between entities implemented in the processing system 100, such as the memory 106.
  • Some implementations of the processing system 100 include other buses, bridges, switches, routers, and the like, which are not shown in FIG. 1 in the interest of clarity.
  • APU 114 includes, for example, vector processors, coprocessors, graphics processing units (GPUs), general-purpose GPUs (GPGPUs), non-scalar processors, highly parallel processors, artificial intelligence (Al) processors, inference engines, machine learning processors, other multithreaded processing units, scalar processors, serial processors, or any combination thereof.
  • the APU 114 renders scenes according to one or more applications 110 for presentation on a display 120.
  • the APU 114 renders objects (e.g., textures) to produce values of pixels that are provided to the display 120, which uses the pixel values to display a scene that represents the rendered objects.
  • the APU 114 implements a plurality of processor cores 116-1 to 116-N that execute instructions concurrently or in parallel.
  • the APU 114 executes instructions from a graphics pipeline 124 using a plurality of processor cores 116 to render one or more textures.
  • one or more processor cores 116 operate as SIM D units that perform the same operation on different data sets. Though in the example implementation illustrated in FIG.
  • the APU 114 can include any number of cores 116. Some implementations of the APU 114 are used for general-purpose computing.
  • the APU 114 executes instructions such as program code 108 for one or more applications 110 stored in the memory 106 and the APU 114 stores information in the memory 106 such as the results of the executed instructions.
  • the processing system 100 also includes a central processing unit (CPU) 102 that is connected to the bus 112 and therefore communicates with the APU 114 and the memory 106 via the bus 112.
  • the CPU 102 implements a plurality of processor cores 104-1 to 104-N that execute instructions concurrently or in parallel.
  • processor cores 104 operate as SIMD units that perform the same operation on different data sets.
  • processor cores 104 operate as SIMD units each having two or more lanes each configured to perform an operation (e.g. spatial test) of a wave.
  • the number of processor cores 104 implemented in the CPU 102 is a matter of design choice.
  • the CPU 102 can include any number of cores 104.
  • the CPU 102 and APU 114 have an equal number of cores 104, 116 while in other implementations, the CPU 102 and APU 114 have a different number of cores 104, 116.
  • the processor cores 104 execute instructions such as program code 108 for one or more applications 110 stored in the memory 106 and the CPU 102 stores information in the memory 106 such as the results of the executed instructions.
  • the CPU 102 is also able to initiate graphics processing by issuing draw calls to the APU 114.
  • the CPU 102 implements multiple processor cores (not shown in FIG. 1 in the interest of clarity) that execute instructions concurrently or in parallel.
  • the APU 114 is configured to render one or more objects for a scene to be rendered according to a graphics pipeline 124.
  • a graphics pipeline 124 includes, for example, one or more steps, stages, or instructions to be performed by APU 114 in order to render one or more objects for a scene.
  • a graphics pipeline 124 includes data indicating an assembler stage, vertex shader stage, hull shader stage, tessellator stage, domain shader stage, geometry shader stage, binner stage, rasterizer stage, pixel shader stage, output merger stage, or any combination thereof to be performed by APU 114 in order to render one or more objects for a scene.
  • APU 114 is configured to receive input data (e.g., a command stream) indicating, for example, a scene (e.g., primitives of the scene, objects of the scene) and associated scene information.
  • scene information includes, for example, data pertaining to how primitives of the scene, objects of the scene, or both are to be rendered based on a viewpoint of that scene.
  • APU 114 is configured to receive a command stream from, for example, an application 110 that indicates one or more draw calls for one or more primitives, objects, or both of the scene and associated scene information that includes, for example, a viewpoint of the scene.
  • APU 114 renders one or more primitives, objects, or both indicated in the input data using graphics pipeline 124 and according to the associated scene information.
  • APU 114 is configured to generate one or more bounding volumes 128 based on a scene description received, for example, from an application 110.
  • a scene description indicates, for example, one or more primitives of a scene, scene geometry, scene layout, a viewpoint of the scene, or any combination thereof.
  • Each bounding volume 128 includes, for example, a partition (e.g., closed volume) of at least a portion of the scene that contains one or more primitives, objects, or both of the scene and includes, for example, an AABB, OBB, bounding shape (e.g., capsule, cylinder, ellipsoid, sphere, slab, triangle), or DOP, to name a few.
  • APU 114 is configured to generate one or more acceleration structures that each include one or more bounding volumes.
  • APU 114 is configured to generate one or more acceleration structures that each include a data structure that has two or more nodes (e.g., boxes, leaves) with each node representing a bounding volume 128 of the scene, a primitive of the scene, or both. That is to say, each node of an acceleration structure represents the primitives and objects contained in a bounding volume 128. According to implementations, the nodes of one or more acceleration structures each represents hierarchically arranged bounding volumes 128. Such acceleration structures, include, for example, BHVs, BSP trees, k-dimensional trees, R-trees, or any combination thereof. In implementations, APU 114 generates one or more bounding volumes 128 each representing a respective portion of the scene to be rendered.
  • APU 114 is configured to divide a scene into two or more portions and generate a respective bounding volume 128 (e.g., generate a respective acceleration structure that includes a bounding volume 128) for each portion of the scene.
  • APU 114 stores the bounding volume 128 in a cache 126 included in or otherwise communicatively coupled to APU 114.
  • APU 114 stores one or more acceleration structures each including one or more bounding volumes 128 in cache 126. While the example implementation illustrated in FIG. 1 presents three bounding volumes (128- 1 , 128-2, 128-K) representing a K number of bounding volumes 128, in other implementations, the processing system 100 may generate any number of bounding volumes 128.
  • processing system 100 e.g., CPU 102, APU 114 is configured to generate one or more sets of planes in the scene to perform one or more spatial tests (e.g, plane tests, frustum tests, or both).
  • Each set of planes in the scene includes, for example, one or more planes at respective locations in the scene.
  • the processing system 100 is configured to receive a set of plane equations from, for example, an application 110.
  • Such plane equations include, for example, a view reference point (e.g., camera location, eye location) in the scene, one or more normals of one or more planes (e.g., top plane, right plane, left plane, bottom plane, near plane, far plane), a vector position (e.g., vector position of the camera, vector position of the eye), a vector direction (e.g., vector direction of the camera, vector direction of the eye), one or more projection matrices, one or more view matrices, one or more corners, or any combination thereof.
  • a set of plane equations includes data indicating one or more normals for each of four planes (e.g., top plane, right plane, left plane, bottom plane).
  • processing system 100 defines the set of planes by, for example, determining one or more planes using the plane equations.
  • defining a set of planes includes processing system 100 generating data indicating that one or more planes of the defined set of planes are inclusive planes, one or more planes of the defined set of planes are exclusive planes, or both.
  • Such inclusive planes for example, indicate that one or more intersections of the plane with a bounding volume 128 are to be reported (e.g., output) during a plane test, frustum test, or both.
  • Such exclusive planes indicate that an intersection with the exclusive plane by one or more bounding volumes reports a failure (e.g., output) during a plane test, frustum test, or both.
  • a failure e.g., output
  • data e.g., a flag
  • processing system 100 is configured to generate one or more frustums of a scene based on one or more plane equations.
  • processing system 100 defines a frustum of the scene including two or more planes (e.g., inclusive planes, exclusive planes) in the scene forming an unbounded shape and generates the frustum of a scene.
  • Each generated frustum of the scene includes, for example, two or more planes forming an unbounded shape (e.g., unbounded prism, unbounded rectangular pyramid, unbounded triangular pyramid) within a scene (e.g., at a location in the scene).
  • APU 114 is configured to perform one or more plane tests, frustum tests, or both (e.g., spatial tests) of one or more bounding volumes 128 using one or more compute units (e.g., cores 116, threads, SIMDs) of processing system 100.
  • APU 114 is configured to perform one or more plane tests of one or more bounding volumes 128 based on one or more sets of planes in the scene using one or more compute units.
  • plane tests each include, for example, instructions to determine whether a bounding volume 128 intersects one or more planes of a set of planes in the scene.
  • a compute unit e.g., cores 116, threads, SIMDs
  • the compute unit uses the selected set of planes in the scene to determine whether the bounding volume 128 intersects with one or more planes of the selected set of planes in the scene. For example, the compute unit determines whether the partition of the scene represented by a bounding volume 128 intersects with one or more planes of the selected set of planes in the scene.
  • the compute unit In response to a bounding volume 128 intersecting with one or more planes of the selected set of planes in the scene, the compute unit generates intersection data indicating whether the bounding volume 128 intersects with one or more planes of the selected set of planes in the scene. For example, the compute unit generates a flag (e.g., intersection data) for one or more planes of the set of planes in the scene indicating whether the bounding volume 128 intersects with a respective plane of the set of planes in the scene.
  • intersection data e.g., intersection data
  • the compute unit generates intersection data indicating a failure in response to an intersection between a bounding volume 128 and an exclusive plane of the set of planes in the scene, indicating intersections between bounding volumes 128 and an inclusive plane of the set of planes in the scene, or both.
  • APU 114 is configured to perform one or more frustum tests of one or more bounding volumes 128 based on one or more frustums of the scene using one or more compute units.
  • Such frustum tests each include, for example, instructions to determine whether a bounding volume 128 is at least partially within a frustum of the scene, wholly within a frustum of the scene, partially outside a frustum of the scene, wholly outside a frustum of the scene, or any combination thereof, whether a bounding volume 128 intersects with one or more planes of the frustum of the scene, or both.
  • a compute unit e.g., cores 116, threads, SIMDs
  • the compute unit uses the selected frustum of the scene to determine whether the bounding volume 128 is at least partially within, wholly within, partially output, wholly outside, or any combination thereof, the selected frustum of the scene, whether one or more planes of the selected frustum of the scene intersect the bounding volume 128, or both.
  • the compute unit In response to a bounding volume 128 being at least partially within, wholly within, partially output, wholly outside, or any combination thereof, the selected frustum of the scene, the compute unit generates intersection data indicating whether the bounding volume 128 is at least partially within, wholly within, partially output, or wholly outside the selected frustum of the scene. For example, the compute unit generates one or more flags (e.g., intersection data) indicating whether the bounding volume 128 is at least partially within, wholly within, partially output, or wholly outside the selected frustum of the scene.
  • intersection data indicating whether the bounding volume 128 is at least partially within, wholly within, partially output, or wholly outside the selected frustum of the scene.
  • the compute unit in response to a bounding volume 128 intersecting with a plane of the frustum of the scene, the compute unit generates intersection data indicating whether the bounding volume 128 intersects one or more planes of the selected frustum of the scene. For example, the compute unit generates a flag (e.g., intersection data) for one or more planes of the frustum of the scene indicating whether the bounding volume 128 intersects with a respective plane of the frustum of the scene.
  • intersection data e.g., intersection data
  • the compute unit generates intersection data indicating a failure in response to an intersection between a bounding volume 128 and an exclusive plane of the frustum in the scene, indicating intersections between bounding volumes 128 and an inclusive plane of the frustum in the scene, or both.
  • the compute unit stores generated intersection data in a buffer where the intersection data is made available for rendering one or more primitives (e.g., determining which primitives to rasterize, determining which draw calls are visible), performing instructions for a physics engine, performing instructions for a lighting engine, or any combination thereof.
  • the compute unit traverses an acceleration structure by recursively applying plane tests, frustums tests, or both to the leaf bounding volumes 128 of the acceleration structure. In this way, the compute unit determines which leaf bounding volumes 128 of an acceleration structure intersect with one or more planes of a set of planes in the scene, are at least partially within a frustum of the scene, or both and generates intersection data indicating as such.
  • APU 114 is configured to determine which primitives to rasterize based on the primitives included in bounding volumes 128 indicated to intersect with one or more planes of a set of planes in the scene, to be at least partially within a frustum of a scene, or both. That is to say, APU 114 rasterizes the primitives in the bounding volumes 128 indicated to intersect with one or more planes of a set of planes in the scene, be at least partially within a frustum of the scene, or both by the intersection data.
  • a compute unit is configured to perform multiple spatial tests (e.g., plane tests, frustum tests, or both) of one or more bounding volumes 128 for one or more waves.
  • a compute unit e.g., a SIMD unit
  • APU 114 assigns one or more bounding volumes 128 to the lanes of a compute unit. For example, APU 114 assigns two or more lanes of a compute unit the same bounding volume 128 (e.g., in the same acceleration structure) stored in cache 126.
  • APU 114 assigns two or more lanes of a compute unit different bounding volumes 128 (e.g., from different acceleration structures) stored in cache 126.
  • APU 114 assigns bounding volumes 128 from respective acceleration structures to each lane of a compute unit with each acceleration structure representing a respective and distinct portion of the scene to be rendered.
  • Each lane of the compute unit is then configured to perform a plane test or frustum test on its assigned bounding volume 128.
  • two or more lanes of a compute unit select a same set of planes in the scene, two or more lanes of a compute unit select different sets of planes in the scene, or both.
  • first and second lanes of a compute unit select a same set of planes in the scene.
  • first and second lanes select different sets of planes in the scene.
  • each lane of a compute unit uses a respective selected set of planes, each lane of a compute unit then determines whether an assigned bounding volume 128 intersects with one or more planes of the respective selected set of planes.
  • the compute unit In response to an assigned bounding volume 128 intersecting with a plane of a respective selected set of planes, the compute unit generates intersection data indicating the bounding volume 128 intersects with the plane.
  • each lane of a compute unit selects a frustum of a scene previously generated by processing system 100 based on, for example, one or more instructions received from an application 110, one or more instructions in graphics pipeline 124, or both.
  • two or more lanes of a compute unit select a same frustum of the scene, two or more lanes of a compute unit select different frustums of the scene, or both.
  • first and second lanes of a compute unit select a same frustum of the scene.
  • first and second lanes of a compute unit select different frustums.
  • each lane of a compute unit determines whether an assigned bounding volume 128 is at least partially within, wholly within, partially output, wholly outside, or any combination thereof, the selected frustum. For example, the lane of the compute unit determines whether the partition of the scene represented by a bounding volume 128 is at least partially within the selected frustum. Additionally, in implementations, each lane of a compute unit determines whether an assigned bounding volume 128 intersects with one or more planes of the frustum.
  • the lane of the compute unit In response to an assigned bounding volume 128 being at least partially within, wholly within, partially output, wholly outside, or any combination, the selected frustum, the lane of the compute unit generates intersection data indicating whether the bounding volume 128 is at least partially within, wholly within, partially output, or wholly outside the selected frustum. In response to an assigned bounding volume 128 intersecting with a plane of the frustum, the lane of the compute unit generates intersection data indicating the bounding volume 128 intersects with the plane.
  • the compute unit stores generated intersection data in a buffer where it is made available for rendering one or more primitives (e.g., determining which primitives to rasterize, determining which draw calls are visible), performing instructions for a physics engine, performing instructions for a lighting engine, or any combination thereof.
  • An input/output (I/O) engine 118 includes hardware and software to handle input or output operations associated with the display 120, as well as other elements of the processing system 100 such as keyboards, mice, printers, external disks, and the like.
  • the I/O engine 118 is coupled to the bus 112 so that the I/O engine 118 communicates with the memory 106, the APU 114, or the CPU 102.
  • the I/O engine 118 reads information stored on an external storage component 122, which is implemented using a non-transitory computer-readable medium such as a compact disk (CD), a digital video disc (DVD), and the like.
  • the I/O engine 118 is also able to write information to the external storage component 122, such as the results of processing by the APU 114 or the CPU 102.
  • APU 200 configured to perform a spatial test (e.g., plane test, frustum test, or both) of a bounding volume using a compute unit is presented.
  • APU 200 similar to or the same as APU 114, is configured to render one or more objects of a scene based on a command stream received from an application 110 that indicates, for example, one or more draw calls for one or more primitives of the scene and associated scene information that includes, for example, a viewpoint of the scene.
  • APU 200 is configured to render one or more primitives according to graphics pipeline 224, similar to or the same as graphics pipeline 124.
  • Graphics pipeline 224 includes one or more steps, stages, or instructions to be performed by APU 200 in order to render one or more primitive, objects, or both for a scene to be rendered, for example, an assembler stage, a vertex shader stage, a hull shader stage, a tessellator stage, a domain shader stage, a geometry shader stage, a binner stage, a rasterizer stage, a pixel shader stage, an output merger stage, or any combination thereof.
  • graphics pipeline 224 includes a pipeline frontend 236 that includes one or more stages of graphics pipeline 224 (e.g., an assembler stage, a vertex shader stage, a hull shader stage, a tessellator stage, a domain shader stage, a geometry shader stage, a binner stage) and a pipeline backend 238 that includes one or more other stages of graphics pipeline 224 (e.g., a rasterizer stage, a pixel shader stage, an output merger stage).
  • stages of graphics pipeline 224 e.g., an assembler stage, a vertex shader stage, a hull shader stage, a tessellator stage, a domain shader stage, a geometry shader stage, a binner stage
  • pipeline backend 238 that includes one or more other stages of graphics pipeline 224 (e.g., a rasterizer stage, a pixel shader stage, an output merger stage).
  • APU 200 in response to receiving a command stream indicating one or more primitives to be rendered for a scene, is configured to perform one or more stages of the pipeline frontend 236 (e.g., an assembler stage, a vertex shader stage, a hull shader stage, a tessellator stage, a domain shader stage, a geometry shader stage) to at least partially construct one or more primitives, objects, or both indicated in the command stream.
  • stages of the pipeline frontend 236 e.g., an assembler stage, a vertex shader stage, a hull shader stage, a tessellator stage, a domain shader stage, a geometry shader stage
  • APU 200 includes bounding volume engine 232.
  • Bounding volume engine 232 includes hardware-based circuitry, software-based circuitry, or both configured to generate one or more bounding volumes 228, similar to or the same as bounding volumes 128, based on a scene description received from application 110 indicating, for example, one or more primitives of a scene, scene geometry, scene layout, or any combination thereof.
  • a bounding volume 228 includes, for example, a partition (e.g., closed volume) of at least a portion of the scene that contains one or more primitives, objects, or both of the scene and includes, for example, an AABB, OBB, bounding shape (e.g., capsule, cylinder, ellipsoid, sphere, slab, triangle), or DOP, to name a few.
  • bounding volume engine 232 is configured to generate one or more acceleration structures that each includes one or more bounding volumes 228.
  • An acceleration structure includes, for example, a data structure that has two or more nodes (e.g., boxes, leaves) with each node representing a respective bounding volume 228, primitive, or both.
  • acceleration structures include BHVs, BSP trees, k-dimensional trees, R-trees, or any combination thereof.
  • one or more bounding volumes 228 each represent a respective portion of the scene to be rendered. That is to say, in implementations, bounding volume engine 232 is configured to divide a scene into two or more portions and generate a respective bounding volume 228 (e.g., of a respective acceleration structure) for each portion of the scene. In response to generating a bounding volume 228, bounding volume engine 232 stores the bounding volume 228 in a cache 226, similar to or the same as cache 126, included in or otherwise communicatively coupled to APU 114. While the example implementation illustrated in FIG. 2 presents three bounding volumes (228-1 , 228-2, 228-N) representing an N number of bounding volumes 228, in other implementations, bounding volume engine 232 may generate any number of bounding volumes 228.
  • APU 200 is configured to perform one or more spatial tests (e.g., plane tests, frustum tests, or both) on one or more bounding volumes 228 to generate intersection data.
  • APU 200 includes plane engine 240 that includes hardware-based circuitry, software-based circuitry, or both configured to generate one or more sets of planes 242 in a scene.
  • plane engine 240 receives one or more plane equations from, for example, an application 110.
  • plane equations include, for example, a view reference point (e.g., camera location, eye location) in the scene, one or more normals of one or more planes (e.g., top plane, right plane, left plane, bottom plane, near plane, far plane), a vector position (e.g., vector position of the camera, vector position of the eye), a vector direction (e.g., vector direction of the camera, vector direction of the eye), one or more projection matrices, one or more view matrices, one or more corners, or any combination thereof.
  • plane engine 240 defines a set of planes by, for example, determining one or more planes using the plane equations.
  • plane engine 240 when defining a set of planes, is configured to generate data indicating that one or more planes of the defined set of planes are inclusive planes, one or more planes of the defined set of planes are exclusive planes, or both.
  • Such inclusive planes for example, indicate that one or more intersections of the inclusive plane with a bounding volume 128 are to be reported (e.g., output) during a plane test, frustum test, or both.
  • exclusive planes for example, indicate that, in response to one or more intersections of the exclusive plane with a bounding volume 128, one or more failures are to be reported (e.g., output) during a plane test, frustum test, or both.
  • plane engine 240 is configured to generate one or more frustums of a scene using one or more plane equations. For example, using one or more plane equations indicating at least two planes forming an unbounded shape, plane engine 240 defines a frustum of the scene including at least two planes (e.g. inclusive planes, exclusive planes) in the scene forming an unbounded shape.
  • plane engine 240 defines a frustum of the scene including at least two planes (e.g. inclusive planes, exclusive planes) in the scene forming an unbounded shape.
  • APU 200 includes one or more compute units 230 (e.g., cores 116, threads, SIMD units) that each includes hardware-based circuitry, software-based circuitry, or both configured to perform one or more plane tests, frustum tests, or both.
  • compute units 230 e.g., cores 116, threads, SIMD units
  • FIG. 2 presents APU 200 having three compute units (230-1 , 230-2, 230-N) representing an N number of compute units, in other implementations, APU 200 may include any number of compute units 230.
  • a compute unit 230 is configured to select a set of planes 242 in a scene based on, for example, one or more instructions received from an application 110, one or more instructions in graphics pipeline 224, or both. Using the selected set of planes 242, the compute unit 230 then determines whether the bounding volume 228 intersects one or more planes of the selected set of planes 242. In response to the bounding volume 228 intersecting with a plane of the selected set of planes, the compute unit 230 generates intersection data (e.g., one or more flags) indicating the bounding volume 228 intersects the plane.
  • intersection data e.g., one or more flags
  • a compute unit 230 is configured to select a frustum of a scene previously generated by, for example, plane engine 240, based on, for example, one or more instructions received from an application 110, one or more instructions in graphics pipeline 224, or both. Using the selected frustum of the scene, the compute unit 230 then determines whether the bounding volume 228 is at least partially within, wholly within, partially output, wholly outside, or any combination thereof the selected frustum of the scene, whether the bounding volume 228 intersects one or more planes of the selected frustum of the scene, or both.
  • the compute unit 230 In response to a bounding volume 228 being at least partially within, wholly within, partially output, wholly outside, or any combination thereof, the selected frustum of the scene, the compute unit 230 generates intersection data indicating whether the bounding volume 228 is at least partially within, wholly within, partially output, or wholly outside the selected frustum of the scene. For example, the compute unit 230 generates intersection data that includes one or more flags indicating whether a bounding volume 228 is at least partially within the frustum of the scene.
  • the compute unit 230 in response to a bounding volume 228 intersecting with a plane of the selected frustum of the scene, the compute unit 230 generates intersection data (e.g., one or more flags) indicating the bounding volume 228 intersects the plane.
  • intersection data e.g., one or more flags
  • the compute unit 230 stores the generated intersection data in a buffer where it is made available, for example to a shader, for rendering one or more primitives (e.g., determining which primitives to rasterize, determining which draw calls are visible), performing instructions for a physics engine, performing instructions for a lighting engine, or any combination thereof.
  • the compute unit 230 traverses an acceleration structure by recursively applying plane tests, frustums tests, or both to the leaf bounding volumes 228 of the acceleration structure.
  • the compute unit 230 determines which leaf bounding volumes 228 of an acceleration structure intersect with one or more planes of a set of planes in the scene, are at least partially within a frustum of the scene, or both and generates intersection data indicating as such. Based on such intersection data, for example, APU 200 determines which primitives to rasterize based on the primitives included in bounding volumes 228 indicated to intersect with one or more planes of a set of planes 242 in the scene, to be at least partially within a frustum of a scene, or both.
  • one or more compute units 230 are configured to perform multiple spatial tests (e.g., plane tests, frustum tests, or both) of one or more bounding volumes 228 for one or more waves.
  • one or more compute units 230 are each configured to perform multiple plane tests, frustum tests, or both of one or more bounding volumes 228 for a wave.
  • one or more compute units 230 e.g., SIMD units
  • APU 200 assigns one or more bounding volumes 228 to the lanes of a compute unit 230.
  • APU 200 assigns two or more lanes of a compute unit the same bounding volume 228 stored in cache 226. As another example, APU 200 assigns two or more lanes of a compute unit 230 different bounding volumes stored in cache 226. Each lane of the compute unit 230 is then configured to perform a plane test or frustum test on its assigned bounding volume 228. To perform a plane test in its assigned bounding volume 228, a lane of a compute unit 230 selects a set of planes 242 in a scene previously generated by, for example, plane engine 240 based on, for example, one or more instructions received from an application 110, one or more instructions in graphics pipeline 224, or both.
  • two or more lanes of a compute unit 230 select a same set of planes 242 in the scene, two or more lanes of a compute unit 230 select different sets of planes 242 in the scene, or both.
  • a lane of a compute unit 230 determines whether an assigned bounding volume 228 intersects with one or more planes of the respective selected set of planes 242 in the scene.
  • the lane of the compute unit 230 generates intersection data indicating the bounding volume 228 intersects with the plane.
  • the compute unit 230 then stores the generated intersection data in a buffer where it is made available for rendering one or more primitives (e.g., determining which primitives to rasterize, determining which draw calls are visible), performing instructions for a physics engine, performing instructions for a lighting engine, or any combination thereof.
  • a buffer where it is made available for rendering one or more primitives (e.g., determining which primitives to rasterize, determining which draw calls are visible), performing instructions for a physics engine, performing instructions for a lighting engine, or any combination thereof.
  • a lane of a compute unit 230 selects a frustum of a scene previously generated by, for example, plane engine 240 based on, for example, one or more instructions received from an application 110, one or more instructions in graphics pipeline 224, or both.
  • two or more lanes of a compute unit 230 select a same frustum of the scene, two or more lanes of a compute unit 230 select different frustums of the scene, or both.
  • a lane of a compute unit 230 determines whether an assigned bounding volume 228 is at least partially within, wholly within, partially output, wholly outside, or any combination thereof, the selected frustum. Additionally, in implementations, a lane of a compute unit 230 determines whether an assigned bounding volume 228 intersects with one or more planes of the selected frustum of the scene.
  • the lane of the compute unit In response to an assigned bounding volume 228 being at least partially within, wholly within, partially output, wholly outside, or any combination, the selected frustum of the scene, the lane of the compute unit generates intersection data indicating whether the bounding volume 228 is at least partially within, wholly within, partially output, or wholly outside the selected frustum of the scene. In response to an assigned bounding volume 228 intersecting with a plane of the selected frustum of the scene, the lane of the compute unit 230 generates intersection data indicating the bounding volume 228 intersects with the plane.
  • the compute unit 230 then stores the generated intersection data in a buffer where it is made available for rendering one or more primitives (e.g., determining which primitives to rasterize, determining which draw calls are visible), performing instructions for a physics engine, performing instructions for a lighting engine, or any combination thereof.
  • a buffer where it is made available for rendering one or more primitives (e.g., determining which primitives to rasterize, determining which draw calls are visible), performing instructions for a physics engine, performing instructions for a lighting engine, or any combination thereof.
  • an APU similar to or the same as APU 114, 200, is configured to generate an acceleration structure 300 that represents at least a portion 310 of the scene to be rendered.
  • the APU first determines the primitives in the portion 310 of the scene. Referring to the example implementation presented in FIG.
  • the APU first determines that the portion 310 of the scene includes groups of primitives (e.g., graphics objects) 345-1 , 345-2, 345-3, 345-4, 345-5, 345-6, 345-7, 345-8. Though the example implementation presented in FIG. 3 presents a portion 310 of the scene including eight graphics objects 345, in other implementations, a portion 310 of the scene may have any number of primitives, graphics objects, or both.
  • the APU generates a predetermined number of bounding volumes, similar to or the same bounding volume 128, 228, that each contain one or more graphics objects 345 of the portion 310 of the scene. For example, in the example implementation presented in FIG.
  • the APU generates a first bounding volume (e.g., BOX 3) 320 containing graphics objects 345- 1 , 345-2, and 345-3, a second bounding volume (e.g., BOX 4) 325 containing graphics object 345-4, a third bounding volume (e.g., BOX 5) 335 containing graphics objects 345-5, 345-6, and a fourth bounding volume (e.g., BOX 6) 340 containing graphics objects 345-7, 345-8.
  • the APU then generates a second set of bounding volumes such that each bounding volume of the second set of bounding volumes contains one or more of the previously generated bounding volumes.
  • the APU generates a set of one or more bounding volumes that each contains one or more of the previously generated bounding volumes. For example, in the example implementation presented in FIG. 3, the APU generates a fifth bounding volume (e.g., BOX 1) that contains the first bounding volume (e.g., BOX 3) 320 and the second bounding volume (e.g., BOX 4) 325 and a sixth bounding volume (e.g., BOX 2) that contains the third bounding volume (e.g., BOX 4) 335 and the fourth bounding volume (e.g., BOX 5) 340.
  • the APU is then configured to generate a bounding volume that encompasses all of the previously generated bounding volumes.
  • the APU generates a seventh bounding volume (e.g., BOX 0) 370 encompassing all the previously generated bounding volumes.
  • the APU is configured to generate an acceleration structure 300 based on the bounding volumes.
  • the APU is configured to generate a hierarchical structure having nodes each representing a bounding volume and arranged such the node of the largest bounding volume is at the highest level of the structure and nodes of subsequently smaller bounding volumes are at increasingly lower levels of the structure.
  • the seventh bounding volume e.g., BOX 0
  • the seventh bounding volume encompassing all the other bounding volumes (e.g., the largest bounding volume) is represented as a node at a root (e.g., top) level 350 of the acceleration structure 300.
  • the fifth bounding volume (e.g., BOX 1) 315 encompassing the first bounding volume (e.g., BOX 3) 320 and the second bounding volume (e.g., BOX 4) 325 and the sixth bounding volume (e.g., BOX 2) 330 encompassing the third bounding volume (e.g., BOX 5) 335 and the fourth bounding volume (e.g., BOX 6) 340 are represented as nodes at a second level (e.g., level 1) 355 of the acceleration structure.
  • first bounding volume (e.g., BOX 3) 320, the second bounding volume (e.g., BOX 4) 325, the third bounding volume (e.g., BOX 5) 335, and the fourth bounding volume (e.g., BOX 6) 340 are represented as nodes at a third level (e.g., level 2) of the acceleration structure 300.
  • the nodes representing the first bounding volume (e.g., BOX 3) 320, the second bounding volume (e.g., BOX 4) 325, the third bounding volume (e.g., BOX 5) 335, and the fourth bounding volume (e.g., BOX 6) 340 are each connected to the node in the first layer 355 representing the larger bounding volume that encompasses the bounding volume of the node.
  • the last level (e.g., level 3) 365 of the acceleration structure 300 includes nodes each representing the graphics objects 345 in the portion 310-5 of the scene 305. Each node representing a graphics object 345 is connected to the node in the second layer 360 representing the bounding volume that encompasses the graphics object 345 of the node.
  • the nodes representing graphics objects 345-1 , 345-2, 345-3 are each connected to the node representing the first bounding volume (e.g., BOX 3) 320 that encompasses the graphics objects 345-1 , 345-2, 345-3.
  • the first bounding volume e.g., BOX 3
  • operation 400 for performing a spatial test (e.g. plane test, frustum test, or both) of a bounding volume on a compute unit is presented.
  • operation 400 includes an APU, similar or the same as APU 114, 200, performing a bounding volume generation operation 405.
  • the bounding volume generation operation 405 first includes the APU receiving a scene description that includes, for example, one or more primitives of a scene, scene geometry, scene layout, or any combination.
  • the APU is configured to generate bounding volume 428, similar to or the same as bounding volumes 128, 228, based on the scene desciption.
  • Bounding volume 428 includes, for example, a data structure (e.g., AABB, OBB, bounding shape (e.g., capsule, cylinder, ellipsoid, sphere, slab, triangle), or DOP) representing a partition (e.g., closed volume) of at least a portion of the scene that contains one or more primitives, objects, or both of the scene.
  • the APU is configured to generate an acceleration structure (e.g., BHV, BSP tree, k-dimensional tree, R-tree) that includes bounding volume 428.
  • an acceleration structure e.g., BHV, BSP tree, k-dimensional tree, R-tree
  • example operation 400 includes a processing system, similar to or the same as processing system 100, performing a plane generation operation 410 that includes the processing system generating one or more sets of planes 415 (e.g., sets of planes 242) in the scene, one or more frustums 420 of the scene, or both.
  • a plane generation operation 410 that includes the processing system generating one or more sets of planes 415 (e.g., sets of planes 242) in the scene, one or more frustums 420 of the scene, or both.
  • the processing system first receives a set of plane equations from, for example, an application 110.
  • Such plane equations include, for example, a view reference point (e.g., camera location, eye location) in the scene, one or more normals of one or more planes (e.g., top plane, right plane, left plane, bottom plane, near plane, far plane), a vector position (e.g., vector position of the camera, vector position of the eye), a vector direction (e.g., vector direction of the camera, vector direction of the eye), one or more projection matrices, one or more view matrices, or any combination thereof.
  • a set of plane equations includes data indicating one or more normals for each of four planes (e.g., top plane, right plane, left plane, bottom plane).
  • the processing system defines a set of planes 415 including one or more planes in the scene.
  • plane generation operation 410 further includes generating one or more frustums 420 of a scene based on one or more plane equations. For example, using one or more plane equations indicating two or more planes defining an unbounded shape, the processing system defines a frustum 420 of a scene that includes two planes in the scene that form an unbounded shape.
  • a frustum 420 of the scene includes two or more planes forming an unbounded shape (e.g., unbounded prism, unbounded rectangular pyramid, unbounded triangular pyramid) within a scene (e.g., at a location in the scene) be rendered.
  • the example operation 400 further includes compute unit 430 (e.g., core 116, thread, SIMD unit), similar to or the same as compute units 230, performing a plane test operation 425, frustum test operation 445, or both on bounding volume 428.
  • compute unit 430 is configured to select a set of planes 415 in a scene based on, for example, one or more instructions received from an application 110, one or more instructions in a graphics pipeline, or both. Using the selected set of planes 415, compute unit 430 then determines whether bounding volume 428 intersects with one or more planes of the selected set of planes 415. For example, compute unit 430 determines whether the partition of the scene represented by bounding volume 428 intersects with one or more planes of the selected set of planes 415 in the scene.
  • compute unit 430 In response to bounding volume 428 intersecting one or more planes of the selected set of planes 415 in the scene, compute unit 430 generates intersection data 435 indicating whether bounding volume 428 intersects with one or more planes of the selected set of planes 415 in the scene. For example, compute unit 430 generates intersection data 435 that includes one or more flags indicating whether bounding volume 428 intersects with respective planes of the selected set of planes 415 in the scene.
  • compute unit 430 is configured to select a frustum 420 of the scene based on, for example, one or more instructions received from an application 110, one or more instructions in a graphics pipeline, or both. Using the selected frustum 420, compute unit 430 then determines whether bounding volume 428 is at least partially within, wholly within, partially output, wholly outside, or any combination thereof, the selected frustum 420, whether bounding volume 428 intersects one or more planes of the selected frustum 420, or both. For example, compute unit 430 determines whether the partition of the scene represented by bounding volume 428 is at least partially within the selected frustum 420.
  • compute unit 430 In response to bounding volume 428 being at least partially within, wholly within, partially output, wholly outside, or any combination, the selected frustum 420, compute unit 430 generates intersection data 435 indicating whether bounding volume 428 is at least partially within, wholly within, partially output, or wholly outside the selected frustum 420. For example, compute unit 430 generates intersection data 435 that includes one or more flags indicating whether bounding volume 428 is at least partially within the selected frustum 420. Additionally, in implementations, in response to bounding volume 428 intersecting with a plane of the selected frustum 420, compute unit 430 generates intersection data 435 indicating that bounding volume 428 intersects with one or more planes of the selected frustum 420. For example, compute unit 430 generates a flag indicating that bounding volume 428 intersects with a respective plane of the selected frustum 420.
  • Compute unit 430 then stores intersection data 435 in output buffer 440 where it is made available for rendering one or more primitives (e.g., determining which primitives to rasterize, determining which draw calls are visible), performing instructions for a physics engine, performing instructions for a lighting engine, or any combination thereof.
  • primitives e.g., determining which primitives to rasterize, determining which draw calls are visible
  • Compute unit 500 configured to perform multiple spatial tests (e.g., plane tests, frustum tests, or both) of one or more bounding volumes.
  • Compute unit 500 similar to or the same as compute units 230, 430, includes two or more lanes (e.g., execution units, slots) 520 each configured to perform a respective plane test 525, frustum test 530, or both.
  • compute unit 500 includes a SIMD including two or lanes 520 each configured to perform a respective plane test 525 or frustum test 530 of a bounding volume as part of a single wave.
  • processing system 100 assigns one or more generated bounding volumes 505, similar to or the same as bounding volumes 128, 228, 428, to each lane 520 of compute unit 500 based on, for example, instructions received from an application 110.
  • processing system 100 receives instructions (e.g., a wave) from an application 110 indicating that one or more plane tests 525, frustum tests 530, or both are to be performed for one or more bounding volumes 505.
  • processing system 100 assigns a bounding volume 505 to each lane 520 such that each lane performs a plane test 525 or frustum test 530 on the assigned bounding volume 505.
  • processing system 100 assigns two or more lanes 520 the same bounding volume 505, two or more lanes 520 different bounding volumes 505, or both.
  • processing system 100 assigns each lane 520 the same bounding volume 505.
  • processing system 100 assigns each lane 520 a different bounding volume 505.
  • a lane 520 is configured to first select a set of planes 510 in a scene, similar to or the same as sets of planes 242, 415, generated by, for example, processing system 100.
  • a lane 520 selects a set of planes 510 based on instructions received from an application 110, one or more stages of a graphics pipeline (e.g., graphics pipeline 124, 224), or both.
  • two or more lanes 520 performing a plane test 525 select the same set of planes 510 in a scene, select different sets of planes 510 in the scene, or both.
  • each lane 520 performing a plane test 525 for a wave selects the same set of planes 510 in a scene.
  • each lane 520 performing a plane test 525 for a wave selects different sets of planes 510 in a scene.
  • each lane 520 determines if one or more planes of the selected set of planes 510 in a scene intersect with an assigned (e.g., respective) bounding volume 505.
  • an assigned bounding volume 505 For example, a lane 520 determines if the partition of the scene represented by an assigned bounding volume 505 intersects with one or more planes of a selected set of planes 510 in the scene.
  • intersection data e.g., one or more flags
  • intersection data 435 indicating that the bounding volume 505 intersects with the plane of the set of planes 510 and stores the intersection data in an output buffer 535, similar to or the same as output buffer 440, where it is made available to help render one or more primitives, perform one or more physics operations for a physics engine, perform one or more lighting operations for a lighting engine, or any combination thereof.
  • a lane 520 is configured to first select a frustum 515 of a scene, similar to or the same as frustums 420, generated by, for example, processing system 100.
  • a lane 520 selects a frustum 515 of a scene based on instructions received from an application 110, one or more stages of a graphics pipeline (e.g., graphics pipeline 124, 224), or both.
  • two or more lanes 520 performing a frustum test 530 select the same frustum 515 of a scene, select different frustums 515 of the scene, or both.
  • each lane 520 performing a frustum test 530 for a wave selects the same frustum 515 of a scene.
  • each lane 520 performing a frustum test 530 for a wave selects different frustums 515 of a scene.
  • each lane 520 determines whether an assigned bounding volume 505 is at least partially within, wholly within, partially output, wholly outside, or any combination thereof, the selected frustum 515, whether an assigned bounding volume 505 intersects with a plane of the selected frustum 515, or both.
  • a lane 520 determines whether the partition of the scene represented by an assigned bounding volume 505 is at least partially within the selected frustum 515.
  • the lane 520 In response to an assigned bounding volume 505 being at least partially within, wholly within, partially output, wholly outside, or any combination thereof, the selected frustum 515, the lane 520 generates intersection data (e.g., one or more flags) indicating whether the bounding volume 505 is at least partially within, wholly within, partially output, or wholly outside the selected frustum 515 and stores the intersection data in an output buffer 535.
  • intersection data e.g., one or more flags
  • the lane 520 in response to an assigned bounding volume 505 intersecting a plane of the selected frustum 515, the lane 520 generates intersection data (e.g., one or more flags) indicating that the bounding volume 505 intersects with the plane and stores the intersection data in the output buffer 535.
  • intersection data e.g., one or more flags
  • the processing system 100 then makes the intersection data stored in the output buffer 535 available to help render one or more primitives, perform one or more physics operations for a physics engine, perform one or more lighting operations for a lighting engine, or any combination thereof.
  • an example method 600 for performing a plane test of a bounding volume using a compute unit is presented.
  • an APU similar to or the same as APU 114, 200, generates one or more bounding volumes, similar to or the same as bounding volumes 128, 228, 428, 505, based on the scene description.
  • Each bounding volume includes a data structure (e.g., AABB, OBB, bounding shape (e.g., capsule, cylinder, ellipsoid, sphere, slab, triangle), DOP) that represents a partition (e.g., closed volume) of at least a portion of the scene that contains one or more primitives, objects, or both of the scene.
  • the APU generates one or more acceleration structures that each include one or more bounding volumes.
  • the APU generates one or more acceleration structures that each include a data structure (e.g., BHVs, BSP trees, k-dimensional trees, R-trees) that has two or more nodes (e.g., boxes, leaves) with each node representing a bounding volume.
  • a data structure e.g., BHVs, BSP trees, k-dimensional trees, R-trees
  • nodes e.g., boxes, leaves
  • a processing system similar to or the same as processing system 100, defines a set of planes.
  • the processing system first receives a set of plane equations from, for example, an application 110.
  • plane equations include, for example, a view reference point (e.g., camera location, eye location) in the scene, one or more normals of one or more planes (e.g., top plane, right plane, left plane, bottom plane, near plane, far plane), a vector position (e.g., vector position of the camera, vector position of the eye), a vector direction (e.g., vector direction of the camera, vector direction of the eye), one or more projection matrices, one or more view matrices, or any combination thereof.
  • a view reference point e.g., camera location, eye location
  • normals of one or more planes e.g., top plane, right plane, left plane, bottom plane, near plane, far plane
  • vector position e.g., vector position of the camera, vector position of the eye
  • a set of plane equations includes data indicating one or more normals for each of four planes (e.g., top plane, right plane, left plane, bottom plane). Based on the plane equations, the processing system defines a set of planes in a scene.
  • a compute unit e.g., core 116, thread, SIMD unit
  • a compute unit performs a plane test on one or more bounding volumes.
  • a compute unit performs a plane test on a bounding volume assigned to the compute unit by processing system 100, the APU, or both.
  • the compute unit selects a previously defined set of planes in the scene based on, for example, one or more instructions received from an application 110, one or more instructions in a graphics pipeline, or both.
  • the compute unit determines whether the bounding volume intersects with one or more planes of the selected set of planes in the scene.
  • the system moves on to step 630.
  • the compute unit generates intersection data indicating that the bounding volume intersects with one or more planes of the selected set of planes in the scene.
  • the compute unit generates one or more respective flags each indicating that the bounding volume intersects a respective plane of the selected set of planes in the scene.
  • the compute unit then stores the generated intersection data in an output buffer, similar to or the same as output buffer 440, 535 where it is made available to help render one or more primitives, perform one or more physics operations for a physics engine, perform one or more lighting operations for a lighting engine, or any combination thereof.
  • step 625 the compute unit generates intersection data indicating that the bounding volume does not intersect with any planes of the selected set of planes and stores. For example, the compute unit generates a flag indicating that the bounding volume does not intersect with any planes of the selected set of planes in the scene. The compute unit then stores such intersection data in the output buffer where it is similarly made available to help render one or more primitives, perform one or more physics operations for a physics engine, perform one or more lighting operations for a lighting engine, or any combination thereof.
  • an example method 700 for performing a frustum test of a bounding volume using a compute unit is presented.
  • an APU similar to or the same as APU 114, 200, generates one or more bounding volumes, similar to or the same as bounding volumes 128, 228, 428, 505, based on the scene description.
  • Each bounding volume includes a data structure (e.g., AABB, OBB, bounding shape (e.g., capsule, cylinder, ellipsoid, sphere, slab, triangle), DOP) that represents a partition (e.g., closed volume) of at least a portion of the scene that contains one or more primitives, objects, or both of the scene.
  • the APU generates one or more acceleration structures that each include one or more bounding volumes.
  • the APU generates one or more acceleration structures that each include a data structure (e.g., BHVs, BSP trees, k-dimensional trees, R-trees) that has two or more nodes (e.g., boxes, leaves) with each node representing a bounding volume.
  • a data structure e.g., BHVs, BSP trees, k-dimensional trees, R-trees
  • nodes e.g., boxes, leaves
  • a processing system receives a set of plane equations from, for example, an application 110.
  • plane equations include, for example, a view reference point (e.g., camera location, eye location) in the scene, one or more normals of one or more planes (e.g., top plane, right plane, left plane, bottom plane, near plane, far plane), a vector position (e.g., vector position of the camera, vector position of the eye), a vector direction (e.g., vector direction of the camera, vector direction of the eye), one or more projection matrices, one or more view matrices, one or more corners, or any combination thereof.
  • a view reference point e.g., camera location, eye location
  • normals of one or more planes e.g., top plane, right plane, left plane, bottom plane, near plane, far plane
  • vector position e.g., vector position of the camera, vector position of the eye
  • a vector direction e.g., vector direction of the camera, vector direction of the
  • a set of plane equations includes data indicating one or more normals for each of four planes (e.g., top plane, right plane, left plane, bottom plane).
  • the processing system defines a frustum of the scene by determining a frustum using the plane equations.
  • Each frustum in the scene includes, for example, a list of one or more planes within a scene, an unbounded shape (e.g., unbounded prism, unbounded rectangular pyramid, unbounded triangular pyramid) within a scene (e.g., at a location in the scene), or both.
  • a compute unit e.g., core 116, thread, SIMD unit
  • a compute unit performs a frustum test on one or more bounding volumes.
  • a compute unit performs a frustum test on a bounding volume assigned to the compute unit by processing system 100, the APU, or both.
  • the compute unit selects a previously defined frustum of the scene based on, for example, one or more instructions received from an application 110, one or more instructions in a graphics pipeline, or both.
  • the compute unit determines whether the bounding volume is at least partially within the selected frustum of the scene. In response to the bounding volume being at least partially within the frustum, the system moves on to step 730. At step 730, the compute unit generates intersection data indicating that the bounding volume is at least partially within the frustum. For example, the compute unit generates a flag indicating that the bounding volume is at least partially within the frustum.
  • the compute unit is configured to store the generated intersection data in an output buffer, similar to or the same as output buffer 440, 535 where it is made available to help render one or more primitives, perform one or more physics operations for a physics engine, perform one or more lighting operations for a lighting engine, or any combination thereof.
  • the system moves on to step 725.
  • the compute unit generates intersection data indicating that the bounding volume is not at least partially within the frustum and stores the intersection data in the output buffer. For example, the compute unit generates a flag indicating that the bounding volume is not at least partially within the frustum and stores the flag in the output buffer.
  • a method includes: in response to receiving a request to render a scene, generating, at an accelerated processing unit, a bounding volume based on the scene; performing, by a compute unit of the accelerated processing unit, a spatial test on the bounding volume; and rendering the scene based on the spatial test.
  • the method includes: defining a frustum of the scene based on a set of planes; and using the frustum of the scene for the spatial test.
  • the frustum includes an unbounded shape in the scene.
  • the spatial test of the bounding volume includes: determining whether the bounding volume is at least partially within the frustum of the scene; and in response to the bounding volume being at least partially within the frustum of the scene, storing intersection data indicating the bounding volume is at least partially within the frustum of the scene in an output buffer.
  • the scene is rendered based on the intersection data in the output buffer.
  • the method includes: determining whether the bounding volume intersects a plane of the frustum of the scene; and in response to the bounding volume intersecting the plane of the frustum of the scene, storing intersection data indicating the bounding volume intersects the plane in the output buffer.
  • the spatial test is performed by a lane of the compute unit.
  • a method includes: in response to receiving a request to render a scene, assigning one or more bounding volumes based on the scene to a plurality of lanes of a compute unit; performing, by each lane of the plurality of lanes of the compute unit, a respective spatial test of an assigned bounding volume; and rendering the scene based on the respective spatial tests of the assigned bounding volumes.
  • each bounding volume is in a respective acceleration structure.
  • two or more lanes of the plurality of lanes of the compute unit are assigned different bounding volumes.
  • the method includes: defining a plurality of frustums of the scene from a plurality of sets of planes; and selecting, by each lane of the plurality of lanes of the compute unit, a respective frustum of the scene of the plurality of frustums of the scene to perform a respective spatial test.
  • each lane of the plurality of lanes of the compute unit selects a same frustum of the scene from the plurality of frustums of the scene.
  • two or more lane of the plurality of lanes of the compute unit select different frustums of the scene from the plurality of frustums.
  • a respective spatial test of an assigned bounding volume comprises: determining whether the assigned bounding volume is at least partially within a frustum of the scene; and in response to the assigned bounding volume being at least partially within the frustum of the scene, storing intersection data in an output buffer indicating the assigned bounding volume it at least partially within the frustum of the scene.
  • an accelerated processing unit includes: a plurality of compute units each including circuitry configured to: select a set of planes in a scene for performing a spatial test; and perform the spatial test of a bounding volume of a scene to be rendered by determining whether the bounding volume intersects with one or more planes of the selected set of planes in the scene, wherein the accelerated processing unit is configured to render the scene based on the plane test.
  • the accelerated processing unit is configured to: define the set of planes in the scene based on a set of plane equations.
  • the set of planes in the scene comprises one or more planes in the scene.
  • the plurality of compute units each include circuitry configured to: in response to one or more planes of the set of planes in the scene intersecting the bounding volume, store intersection data in an output buffer indicating the bounding volume intersects one or more planes of the set of planes in the scene.
  • the scene is rendered based on the intersection data in the output buffer.
  • at least one plane of the set of planes in the scene is an exclusive plane.
  • the apparatus and techniques described above are implemented in a system including one or more integrated circuit (IC) devices (also referred to as integrated circuit packages or microchips), such as the operations for performing frustum queries of one or more acceleration structures as described above with reference to FIGs. 1-6.
  • IC integrated circuit
  • EDA electronic design automation
  • CAD computer-aided design
  • These design tools typically are represented as one or more software programs.
  • the one or more software programs include code executable by a computer system to manipulate the computer system to operate on code representative of circuitry of one or more IC devices so as to perform at least a portion of a process to design or adapt a manufacturing system to fabricate the circuitry.
  • This code can include instructions, data, or a combination of instructions and data.
  • the software instructions representing a design tool or fabrication tool typically are stored in a computer-readable storage medium accessible to the computing system.
  • the code representative of one or more phases of the design or fabrication of an IC device may be stored in and accessed from the same computer- readable storage medium or a different computer-readable storage medium.
  • a computer-readable storage medium may include any non-transitory storage medium, or combination of non-transitory storage media, accessible by a computer system during use to provide instructions and/or data to the computer system.
  • Such storage media can include, but is not limited to, optical media (e.g., compact disc (CD), digital versatile disc (DVD), Blu-ray disc), magnetic media (e.g., floppy disc, magnetic tape, or magnetic hard drive), volatile memory (e.g., random access memory (RAM) or cache), non-volatile memory (e.g., read-only memory (ROM) or Flash memory), or microelectromechanical systems (MEMS)-based storage media.
  • optical media e.g., compact disc (CD), digital versatile disc (DVD), Blu-ray disc
  • magnetic media e.g., floppy disc, magnetic tape, or magnetic hard drive
  • volatile memory e.g., random access memory (RAM) or cache
  • non-volatile memory e.g., read-only memory (ROM) or Flash
  • the computer-readable storage medium may be embedded in the computing system (e.g., system RAM or ROM), fixedly attached to the computing system (e.g., a magnetic hard drive), removably attached to the computing system (e.g., an optical disc or Universal Serial Bus (USB)-based Flash memory) or coupled to the computer system via a wired or wireless network (e.g., network accessible storage (NAS)).
  • system RAM or ROM system RAM or ROM
  • USB Universal Serial Bus
  • NAS network accessible storage
  • certain aspects of the techniques described above may be implemented by one or more processors of a processing system executing software.
  • the software includes one or more sets of executable instructions stored or otherwise tangibly embodied on a non-transitory computer-readable storage medium.
  • the software can include the instructions and certain data that, when executed by the one or more processors, manipulate the one or more processors to perform one or more aspects of the techniques described above.
  • the non-transitory computer-readable storage medium can include, for example, a magnetic or optical disk storage device, solid-state storage devices such as Flash memory, a cache, random access memory (RAM), or other non-volatile memory device or devices, and the like.
  • the executable instructions stored on the non-transitory computer-readable storage medium may be in source code, assembly language code, object code, or other instruction format that is interpreted or otherwise executable by one or more processors.

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Abstract

En réponse à la réception d'une description de scène, un système de traitement [100] génère un ensemble de plans [242] dans la scène et un volume englobant [128] représentant une partition de la scène. À l'aide de l'ensemble de plans dans la scène, une unité de calcul [230] d'une unité de traitement accéléré [200] effectue un test spatial sur le volume englobant pour déterminer si le volume englobant croise un ou plusieurs plans de l'ensemble de plans dans la scène. Sur la base du test spatial, l'unité de calcul génère des données d'intersection [435] indiquant si le volume englobant croise un ou plusieurs plans de l'ensemble de plans dans la scène. L'unité de traitement accéléré utilise ensuite les données d'intersection pour rendre la scène.
PCT/US2023/033474 2022-09-30 2023-09-22 Test spatial de volumes englobants pour le tramage WO2024072703A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/957,565 2022-09-30
US17/957,565 US20240112397A1 (en) 2022-09-30 2022-09-30 Spatial test of bounding volumes for rasterization

Publications (1)

Publication Number Publication Date
WO2024072703A1 true WO2024072703A1 (fr) 2024-04-04

Family

ID=90471008

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2023/033474 WO2024072703A1 (fr) 2022-09-30 2023-09-22 Test spatial de volumes englobants pour le tramage

Country Status (2)

Country Link
US (1) US20240112397A1 (fr)
WO (1) WO2024072703A1 (fr)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100128337A (ko) * 2008-03-21 2010-12-07 카우스틱 그래픽스, 아이엔씨. 광선 추적 렌더링을 위한 병렬화 교차 테스트 및 세이딩의 아키텍처
US20110316855A1 (en) * 2010-06-24 2011-12-29 International Business Machines Corporation Parallelized Streaming Accelerated Data Structure Generation
US20150317825A1 (en) * 2014-04-30 2015-11-05 Geomerics Ltd Graphics processing systems
US20190035139A1 (en) * 2017-07-26 2019-01-31 Alvin D. Zimmerman Bounding Volume Hierarchy Using Virtual Grid
US20200193675A1 (en) * 2017-03-06 2020-06-18 3D Patents, Llc Multi-view processing unit systems and methods

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100128337A (ko) * 2008-03-21 2010-12-07 카우스틱 그래픽스, 아이엔씨. 광선 추적 렌더링을 위한 병렬화 교차 테스트 및 세이딩의 아키텍처
US20110316855A1 (en) * 2010-06-24 2011-12-29 International Business Machines Corporation Parallelized Streaming Accelerated Data Structure Generation
US20150317825A1 (en) * 2014-04-30 2015-11-05 Geomerics Ltd Graphics processing systems
US20200193675A1 (en) * 2017-03-06 2020-06-18 3D Patents, Llc Multi-view processing unit systems and methods
US20190035139A1 (en) * 2017-07-26 2019-01-31 Alvin D. Zimmerman Bounding Volume Hierarchy Using Virtual Grid

Also Published As

Publication number Publication date
US20240112397A1 (en) 2024-04-04

Similar Documents

Publication Publication Date Title
US11062501B2 (en) Vertex processing pipeline for building reduced acceleration structures for ray tracing systems
US20220245111A1 (en) Hierarchy Merging in Computer Graphics
US8253730B1 (en) System and method for construction of data structures for ray tracing using bounding hierarchies
US7773087B2 (en) Dynamically configuring and selecting multiple ray tracing intersection methods
US9679351B2 (en) Out-of-core ray tracing with memory-efficient page generation
US8004518B2 (en) Combined spatial index for static and dynamic objects within a three-dimensional scene
KR100889602B1 (ko) 광선 추적을 위한 광선-삼각형 충돌 처리 방법 및 장치
CN105469440B (zh) 用于产生和遍历加速结构的方法和设备
US8284188B1 (en) Ray tracing system, method, and computer program product for simultaneously traversing a hierarchy of rays and a hierarchy of objects
EP3933779A1 (fr) Tests d'intersection dans un système de tracé de rayons
KR102197067B1 (ko) 멀티 프레임들의 동일한 영역을 연속으로 렌더링하는 방법 및 장치
US8264484B1 (en) System, method, and computer program product for organizing a plurality of rays utilizing a bounding volume
CN108022284B (zh) 用于产生加速结构的方法和设备
WO2011104746A1 (fr) Dispositif d'affichage d'images
Willmott Rapid simplification of multi-attribute meshes
US20240112397A1 (en) Spatial test of bounding volumes for rasterization
Zirr et al. Memory-efficient on-the-fly voxelization and rendering of particle data
EP2715564B1 (fr) Format de fichier de séquence de maillages
KR100624455B1 (ko) 3차원 그래픽스 환경에서의 라이트맵 처리 방법 및 장치
US20240005601A1 (en) Hierarchical depth data generation using primitive fusion
US20230410426A1 (en) Volume intersection using rotated bounding volumes
Sommer et al. Geometry and rendering optimizations for the interactive visualization of crash-worthiness simultations
JP7368950B2 (ja) 効率的な建物フットプリント特定のための方法及び装置
EP3933780A1 (fr) Tests d'intersection dans un système de tracé de rayons
US20230419597A1 (en) Binning pass with hierarchical depth data determination

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 23873481

Country of ref document: EP

Kind code of ref document: A1