Ray Tracing with Shared Traversal

Shared ray traversal through pre-testing volumes in acceleration structures addresses computational inefficiencies in ray tracing, improving performance in real-time applications by reducing latency and costs.

JP2025539298APending Publication Date: 2025-12-05MICROSOFT TECHNOLOGY LICENSING LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025524556
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-12-16
Filing Date
2023-10-25
Publication Date
2025-12-05

AI Technical Summary

Technical Problem

Conventional ray tracing techniques face computational inefficiencies and high latency in real-time applications due to the extensive use of acceleration structures, which result in degraded user experiences.

Method used

Implementing shared ray traversal by pre-testing volumes against acceleration structures to identify candidate nodes, allowing rays to be tested directly against these nodes, thereby reducing the need to traverse the entire structure.

Benefits of technology

This approach significantly reduces computational costs and latency, enhancing the efficiency of ray tracing operations in real-time applications.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025539298000001_ABST
    Figure 2025539298000001_ABST
Patent Text Reader

Abstract

A system for implementing ray tracing operations with shared traversal performs a pre-test operation, including testing one or more volumes against an acceleration structure associated with a virtual environment to identify a set of candidate nodes for the acceleration structure. The virtual environment includes one or more virtual objects defined by one or more object components. The system also performs a ray tracing operation based on the set of candidate nodes for the acceleration structure.
Need to check novelty before this filing date? Find Prior Art

Description

[Background technology]

[0001] Ray tracing is a technique for generating reconstructed visible images in a 3D computer graphics environment. In some cases, ray tracing involves tracing a path from a virtual camera or viewing position through each pixel in a virtual image plane. The rays are extended into the virtual scene and intersect with virtual content that may be represented by the pixel. The visual properties of the intersected virtual content represented by the pixel can then be determined (this may include determining virtual object / material properties and / or tracing additional rays from the intersected virtual content). Ray tracing can be used to simulate reflection, refraction, shadows, scattering, and / or various other optical effects.

[0002] Ray tracing is generally associated with a high computational cost and has typically been used in implementations where long rendering times are feasible, such as for generating computer-generated still images or cinematic visual effects. In real-time applications, such as computer graphics for video games or other implementations where rendering speed impacts the user experience, the use of ray tracing is associated with many challenges. Summary of the Invention

[0003] The subject matter claimed herein is not limited to embodiments that solve any shortcomings or that operate only in such environments. Rather, this background is only provided to illustrate one example technology area where some embodiments described herein may be practiced. [Brief explanation of the drawings]

[0004] To illustrate how the above-mentioned and other advantages and features can be obtained, a more particular description of the subject matter briefly described above will be rendered by reference to specific embodiments that are illustrated in the accompanying drawings, the embodiments being described with additional specificity and detail by means of the accompanying drawings, with the understanding that these drawings depict only exemplary embodiments and are therefore not to be considered limiting in scope. [Figure 1] 1 illustrates exemplary components of an exemplary system that may include or be used to implement one or more disclosed embodiments. [Figure 2A] 1 illustrates a conceptual representation of an exemplary virtual environment. [Figure 2B] 1 illustrates a conceptual representation of an instance node of an acceleration structure associated with a virtual environment, conceptually illustrating rays of a ray tracing operation. [Figure 2C] 1 shows a conceptual representation of the volume associated with a ray for a ray tracing operation. [Figure 3A] 1 shows a conceptual representation of testing a volume against an acceleration structure to determine a set of candidate nodes. [Figure 3B] 1 illustrates a conceptual representation of testing a ray associated with a volume against a set of candidate nodes. [Figure 3C] 1 illustrates a conceptual representation of testing a ray associated with a volume against an alternative set of candidate nodes. [Figure 3D] 1 illustrates a conceptual representation of testing a ray associated with a volume against an alternative set of candidate nodes. [Figure 3E] 1 illustrates a conceptual representation of testing a ray associated with a volume against an alternative set of candidate nodes. [Figure 4A] 1 illustrates a conceptual representation of a volume that can be tested against an acceleration structure to determine candidate nodes. [Figure 4B] 1 illustrates a conceptual representation of a volume that can be tested against an acceleration structure to determine candidate nodes. [Figure 4C]1 illustrates a conceptual representation of a volume that can be tested against an acceleration structure to determine candidate nodes. [Figure 5] 1 illustrates an example flow diagram illustrating operations associated with ray tracing with shared traversal. DETAILED DESCRIPTION OF THE INVENTION

[0005] The disclosed embodiments are generally directed to systems, methods, and apparatus for performing ray tracing operations using shared traversals.

[0006] As mentioned above, implementing ray tracing in real-time computer graphics applications involves many challenges, particularly due to the computational burden associated with traditional ray tracing techniques. Attempts to adapt ray tracing techniques to real-time applications include utilizing acceleration structures, which partition object components (e.g., mesh triangles, quadrilaterals, surfaces, distance fields, high-level representations, and / or others) of virtual objects in a virtual environment into a structure of nodes. For example, a node of the acceleration structure may include either a number of child nodes (e.g., 2, 4, 8, 16, or any number of child nodes) or a set of object components of a virtual object in the virtual environment (e.g., in the case of a node at the last level of the acceleration structure).

[0007] When implementing the acceleration structure, the system can refrain from testing whether each ray intersects with all object components in the virtual environment to determine the intersected object components for each ray. Instead, for each ray, the system can determine the top-level (or starting level) node that the ray intersects, determine the child nodes of the intersecting top-level node that the ray intersects, and then traverse the acceleration structure for each ray (e.g., continue testing / traversing branches of nodes) in relation to the intersecting child node at the final level of the acceleration structure until a set of object components is reached. The ray can then be tested against the set of object components to determine the object components that the ray intersects.

[0008] While conventional acceleration structure technology can achieve some reduction in the computational costs associated with ray tracing, ray tracing based on acceleration structures is insufficient for many use cases. For example, acceleration structures often encompass a significant portion of a virtual environment, such as multiple rooms in a building, an entire building, multiple buildings, or an entire city. Testing rays against such acceleration structures can result in high latency, which degrades the user experience.

[0009] At least some embodiments of the present disclosure may utilize shared ray traversal in ray tracing operations to improve computational efficiency in ray tracing. For example, before testing individual rays against an acceleration structure associated with a virtual environment (e.g., according to conventional approaches), a system may perform a pre-test operation that includes testing a volume against the acceleration structure. A volume may be associated with multiple rays that require intersection testing with the virtual environment. For example, a volume may include ray starts (e.g., average origins of rays), ray stops, and / or potential ray intersections associated with multiple rays that require intersection testing. For example, a volume may include at least a portion of a view frustum volume, a volume associated with a structure in the virtual environment (e.g., a room or building), or a volume extended from a source object in the virtual environment (e.g., a sphere extending from a light source, sound source, etc.).

[0010] In some cases, testing a volume against an acceleration structure allows for the identification of a set of candidate nodes for the acceleration structure. For example, the nodes of the acceleration structure may be traversed (e.g., starting from the root or top level of the acceleration structure) to determine, for each traversed node of the acceleration structure, whether the volume intersects with or is contained within any child nodes of the traversed node of the acceleration structure. If a child node of a traversed node of the acceleration structure does not intersect with or is not contained within the volume, traversal of the child node may be avoided. If at least one, but fewer than all, child nodes of the traversed nodes of the acceleration structure intersect with or are contained within the volume, the intersecting / contained child nodes may be traversed. If all child nodes of a traversed node of the acceleration structure intersect with or are contained within the volume (or if the traversed node does not contain any child nodes, such as when the traversed node is an instance node), the traversed node may be included in the set of candidate nodes for the acceleration structure. As described in more detail below, additional logic, rules, and / or processes may be applied to effect the selection of the set of candidate nodes from the acceleration fabric.

[0011] The set of candidate nodes of the acceleration structure may be used to implement intersection testing of rays associated with a volume that has been pre-tested against the acceleration structure. For example, a ray may be tested directly against the set of candidate nodes of the acceleration structure (e.g., rather than first testing the ray against the entire acceleration structure). In some cases, utilizing the set of candidate nodes allows the system to refrain from testing the ray against the entire acceleration structure (e.g., where the candidate nodes include all potential intersections for the tested ray). Such functionality can significantly reduce the computational cost associated with ray tracing.

[0012] In some cases, after testing a ray against a set of candidate nodes, the system may test the ray against the remaining nodes of the acceleration structure while avoiding retesting any nodes in the set of candidate nodes of the acceleration structure.

[0013] Having described some of the various high-level features and advantages associated with the disclosed embodiments, attention is now directed to Figures 1 through 5, which illustrate various conceptual representations, architectures, methodologies, and supporting diagrams associated with the disclosed embodiments.

[0014] Examples of Systems and Components Figure 1 illustrates various exemplary components of a system 100 that may include or be used to implement one or more disclosed embodiments. For example, Figure 1 illustrates that system 100 may include a processor 102, a storage device 104, sensors 110, an input / output system 114 (I / O system 114), and a communication system 116. While Figure 1 illustrates system 100 including certain components, it will be understood in light of the present disclosure that system 100 may include any number of additional or alternative components.

[0015] The processor 102 may include one or more sets of electronic circuitry, including any number of logic units, registers, and / or control units, that implement the execution of computer-readable instructions (e.g., instructions forming a computer program). Such computer-readable instructions may be stored in storage device 104. Storage device 104 may include physical system memory, and may be volatile, non-volatile, or a combination thereof. Furthermore, storage device 104 may be a local storage device, a remote storage device (e.g., accessible via communication system 116 or otherwise), or a combination thereof. Additional details regarding processors (e.g., processor 102) and computer storage media (e.g., storage device 104) are provided below.

[0016] In some implementations, the processor 102 may include or be configured to execute any combination of software and / or hardware components operable to implement processing using machine learning models or other artificial intelligence-based structures / architectures. For example, the processor 102 may include and / or utilize hardware components or computer-executable instructions operable to execute functional blocks and / or processing layers configured as, by way of non-limiting example, a single-layer neural network, a feedforward neural network, a radial basis function network, a deep feedforward network, a recurrent neural network, a long short-term memory (LSTM) network, a gated recurrent unit, an autoencoder neural network, a variable autoencoder, a denoising autoencoder, a sparse autoencoder, a Markov chain, a Hopfield neural network, a Boltzmann machine network, a restricted Boltzmann machine network, a deep belief network, a deep convolutional network (or convolutional neural network), a deconvolutional neural network, a deep convolutional inverse neural network, a generative adversarial network, a liquid state machine, an extreme learning machine, an echo state network, a deep residual network, a Kohonen network, a support vector machine, a neural Turing machine, and / or otherwise.

[0017] As will be described in more detail, the processor 102 may be configured to execute instructions 106 stored in the memory device 104 to perform certain operations related to ray tracing. The operations may depend at least in part on data 108 stored in the memory device 104 in a volatile or non-volatile manner.

[0018] In some examples, operations may rely at least in part on the communications system 116 for receiving data from a remote system 118. The remote system 118 may include, for example, a separate system or computing device, a sensor, and / or the like. The communications system 116 may include any combination of software or hardware components operable to facilitate communication between components / devices on the system and / or with components / devices outside the system. For example, the communications system 116 may include ports, buses, or other physical connections for communicating with other devices / components. Additionally or alternatively, the communications system 116 may include systems / components operable to wirelessly communicate with external systems and / or devices via any suitable communications channel, such as, by way of non-limiting example, Bluetooth, ultra-wideband, WLAN, infrared communications, and / or the like.

[0019] 1 shows that system 100 includes or is in communication with sensor 110. Sensor 110 may include any device for capturing or measuring data representative of a perceptible or detectable phenomenon. By way of non-limiting example, sensor 110 may include one or more image sensors, microphones, thermometers, barometers, magnetometers, accelerometers, gyroscopes, and / or the like.

[0020] 1 further illustrates that system 100 includes or is in communication with I / O system 114. I / O system 114 may include any type of input or output device, such as, but not limited to, a touch screen, a mouse, a keyboard, a controller, and / or the like, by way of non-limiting example. For example, I / O system 114 may include a display system that may include any number of display panels, optics, a laser scanning display assembly, and / or other components.

[0021] 1 conceptually illustrates that the components of system 100 may include or utilize various types of devices, such as a mobile electronic device 100A (e.g., a smartphone), a personal computing device 100B (e.g., a laptop), a mixed reality head-mounted display 100C (HMD 100C), an aerial vehicle 100D (e.g., a drone), and / or other devices. System 100 may take other forms in accordance with this disclosure.

[0022] Ray Tracing with Shared Traversal 2A shows a conceptual representation of an exemplary virtual environment 200 including various virtual objects, such as virtual object 208 (e.g., a box), virtual object 210 (e.g., a table), virtual light source 214, etc. The virtual objects in virtual environment 200 can include or be represented by respective object components, which can take various forms (e.g., mesh triangles, quadrilaterals, surfaces, distance fields, high-level representations, and / or others). For clarity, the object components are not shown in FIG. 2A.

[0023] FIG. 2A illustrates a camera 202 disposed within a virtual environment 200, which may be associated with a view frustum associated with a user experience. To determine the portion of the virtual environment 200 that is visible from the viewpoint of the camera 202, one or more ray tracing operations may be performed. As shown in FIG. 2B, the ray tracing may include tracing a ray 206 from an origin (e.g., the camera 202) through a pixel of an image plane 204 to the virtual environment 200. The pixel of the image plane 204 may correspond to a display pixel that is presented to a user to show the virtual environment 200 to the user. Thus, the ray 206 may be used to determine (e.g., on a frame-by-frame basis) which portion of the virtual environment 200 to display at the corresponding display pixel.

[0024] As described above, under conventional ray tracing techniques, each ray 206 can be individually tested against an acceleration structure that divides the virtual environment 200 through a multi-level hierarchy of nodes, child nodes, etc. Each ray 206 can be tested against the acceleration structure via node traversal until it reaches an instance node (e.g., the lowest level of the acceleration structure). In some implementations, the instance node of the acceleration structure contains the object components of the object in the virtual environment with which the acceleration structure is associated. The ray can then be tested against the object components contained in the instance node to determine the object components with which the ray intersects.

[0025] FIG. 2B illustrates an instance node 220 of the acceleration structure of virtual environment 200. The instance node 220 of the acceleration structure of virtual environment 200 may contain child nodes of higher-level nodes of the acceleration structure (not shown in FIG. 2B). The instance node 220 of FIG. 2B enables reuse of object components (e.g., triangles, not shown) of a virtual object at different locations within virtual environment 200. Each of the rays 206 may be individually tested against higher-level nodes of the acceleration structure of virtual environment 200 via node traversal (e.g., starting from the top level) to determine whether the ray intersects with any of the instance nodes 220. If it is determined that the ray 206 intersects with the instance node 220, the ray 206 may be tested against the object components included in the instance node 220 to determine the intersecting object components of the ray 206. Display pixels corresponding to pixels on the image plane 204 through which the ray 206 was traced may be configured / controlled to depict / represent the intersecting object component (e.g., for a particular frame), and properties of the intersecting object component may be accessed and / or determined (which may include additional ray tracing operations) to achieve a realistic representation of the intersecting object component with the corresponding display pixel.

[0026] As described above, conventional ray tracing techniques are associated with computational inefficiencies. Intuitively, when rays 206 are individually tested against a comprehensive acceleration structure associated with virtual environment 200, they traverse the nodes of the acceleration structure (especially higher-level nodes) in similar paths until they reach a level (of sufficient granularity) where the node traversal paths of different rays diverge. For example, if the acceleration structure associated with virtual environment 200 encompasses virtual objects / spaces not shown in FIG. 2B (e.g., other rooms, other buildings, entire cities, etc.), rays 206 tested against the acceleration structure will share a common node traversal path (starting from the top level) until they reach a level of the acceleration structure where virtual objects of virtual environment 200 shown in FIG. 2B are encompassed by multiple nodes.

[0027] As described below, by pre-testing a volume associated with a set of rays against the acceleration structure of the virtual environment, the system can avoid testing multiple rays along a shared node traversal path. Through testing the volume against the acceleration structure, a set of candidate nodes (e.g., start nodes and shortcut nodes) can be identified. The candidate nodes can provide starting points for intersection testing of individual rays of a set of rays associated with the volume (e.g., rather than initiating intersection testing of individual rays at the top level of the acceleration structure). Such functionality can significantly reduce the computational load associated with ray tracing in the virtual environment.

[0028] FIG. 2C illustrates a conceptual diagram of a volume 222 associated with the ray 206 of FIG. 2B for which a ray intersection test is required. In the example of FIG. 2C, the volume 222 comprises a view frustum volume extending over the length of the ray 206 of FIG. 2B. Other volumes (e.g., containing at least partially the start of the ray, the end of the ray, and / or the intersection point of the ray for a set of rays) can be utilized in accordance with the principles described herein (see, e.g., FIGS. 4A-4C). In some implementations, rather than first testing each ray 206 against the acceleration structure of the virtual environment 200, the system tests the volume 222 against the acceleration structure. As described above, testing the volume 222 against the acceleration structure can facilitate the identification of a set of candidate nodes for the acceleration structure (which may be at any level within the acceleration structure). The candidate nodes can be utilized as starting points for intersection testing of each ray associated with the volume 222 (e.g., the ray 206 of FIG. 2B).

[0029] 3A shows a conceptual representation of a pre-test operation that involves testing a volume against an acceleration structure to determine a set of candidate nodes. In particular, FIG. 3A shows a portion of an acceleration structure 300, with the nodes of the acceleration structure shown as circles. The acceleration structure 300 of FIG. 3A includes a quadtree structure in which each node includes four child nodes. Other node configurations are within the scope of this disclosure (e.g., each node of the acceleration structure includes 2, 8, 16, 32, or any number of child nodes).

[0030] In the example of Figure 3A, node 302 comprises the top (or root) node of the acceleration structure. The four child nodes of node 302 (indicated by arrows extending from node 302) divide the virtual environment into four quadrants. The child nodes of each child node of node 302 further divide the virtual environment into four sub-quadrants, and so on (until the child nodes include instance nodes that contain object components of the virtual environment). Figure 3A conceptually illustrates volume testing 320, in which a volume (e.g., volume 222 in Figure 2C) is tested against acceleration structure 300 (e.g., starting from node 302). In the example of Figure 3A, volume testing 320 involves traversing the nodes of acceleration structure 300 to determine, for each traversed node of acceleration structure 300, whether the tested volume intersects with or contains any child nodes of the traversed node of acceleration structure 300.

[0031] For example, volume test 320 of node 302 involves determining whether the tested volume intersects with or is contained within child nodes of node 302. Whether the tested volume intersects with or is contained within child nodes of the traversed node can affect the continuation of the node traversal path of volume test 320 and the determination of candidate nodes that can be used to test individual rays associated with the tested volume.

[0032] For example, if at least one, but fewer than all, child nodes of the traversed node of acceleration structure 300 intersect with or are contained within the tested volume, the system may proceed to traverse (i.e., test against the volume) the intersected / contained child nodes of the traversed node of acceleration structure 300. FIG. 3A illustrates traversed nodes of acceleration structure 300 where at least one, but fewer than all, child nodes intersect with or are contained within the tested volume as solid white circles (child nodes in the range [1, N-1] are labeled as missing nodes in the tested volume, where N is the number of child nodes in the non-leaf node of acceleration structure 300). Furthermore, if the child nodes of the traversed node of acceleration structure 300 do not intersect with or are not contained within the tested volume, the system may not traverse (i.e., not test against the volume) the child nodes of the traversed node of acceleration structure 300. FIG. 3A shows traversed nodes of acceleration structure 300 whose child nodes do not intersect with or are not contained in the tested volume as solid black circles (labeled as nodes with N child nodes missing in the tested volume).

[0033] In some cases, the system may include, in the set of candidate nodes, traversed nodes of the acceleration structure 300 that have at least one of the following characteristics: (i) all child nodes of the traversed node intersect with or are contained within the tested volume, or (ii) the traversed node is a leaf node with no child nodes of its own. As described in more detail below, in some implementations, the set of candidate nodes may include nodes where more than one, but not all, child nodes intersect with or are contained within the tested volume, such as when there are practical limitations on the number of candidate nodes. FIG. 3A illustrates candidate nodes of the acceleration structure 300 as circles with diagonal lines (labeled as candidate nodes). In some cases, the system may order the candidate nodes of the acceleration structure based on one or more importance factors. The importance factors may include, by way of non-limiting example, the node level within the acceleration structure 300, node proximity (or proximity of object components contained by the node), ray origin (e.g., the average ray origin of rays associated with the tested volume, camera position, etc.). As will be explained below, the candidate nodes can be used for ray testing according to the order of the candidate nodes.

[0034] As described above, the set of candidate nodes in the acceleration structure 300 can be utilized for ray tracing of rays associated with the volume of the volume test 320 to determine the set of candidate nodes. FIG. 3B conceptually illustrates ray testing 350 for rays associated with the volume of the volume test 320 of FIG. 3A. Ray testing 350 involves testing rays against (at least a portion of) the set of candidate nodes (determined via the volume test 320 of FIG. 3A) to determine one or more intersecting object components for the tested ray. For each ray, ray testing 350 can start at one of the candidate nodes in the acceleration structure 300 and continue (child) node traversal until an instance node is reached. If an instance node is reached, the ray can be tested against object components contained in the instance node. If an instance node is not reached, ray testing can continue at another candidate node in the acceleration structure 300, and so on. If the candidate nodes in acceleration structure 300 are ordered (eg, by importance as described above), ray testing 350 may start and proceed according to that order.

[0035] 3B, by performing ray testing 350 using candidate nodes, the system can advantageously avoid testing each individual ray against nodes in the acceleration structure 300 between node 302 and the candidate nodes, thereby improving the computational efficiency of the ray trace. In some instances, such as when at least one candidate node substantially encompasses the tested volume and / or region containing its associated ray, the system can refrain from testing the remaining (non-candidate) nodes in the acceleration structure 300 even if the system determines that the ray does not intersect with any object components included in the set of candidate nodes.

[0036] 3A and 3B, the volume test 320 resulted in a set of four candidate nodes. However, the set of candidate nodes may include any number of candidate nodes in accordance with this disclosure. Furthermore, in some implementations, there may be practical limits (e.g., based on hardware constraints) on the number of candidate nodes that the system can utilize for ray testing. In such implementations, the system may accommodate such practical limits by limiting and / or modifying the number of nodes in the set of candidate nodes.

[0037] As an illustrative example, candidate nodes for the acceleration structure 300 of FIG. 3A may initially be identified via volume test 320. The identified candidate nodes may be considered an initial set of nodes for the acceleration structure 300. The number of nodes in the initial set of nodes may be compared to a node count parameter associated with a system tasked with performing volume test 320 and ray test 350. In some examples, the node count parameter is based on hardware and / or computational limitations of the system. If the number of nodes in the initial set of nodes is less than or equal to the node count parameter, the initial set of nodes may be defined as a set of candidate nodes (that may be used for ray test 350). If the number of nodes in the initial set of nodes is greater than the node count parameter, the system may determine a modified set of nodes to use as the set of candidate nodes.

[0038] For example, continuing with the example of FIG. 3A , the initial set of nodes may include four nodes, and an example of the number of nodes parameter may be set to three nodes. Because the number of nodes in the initial set of nodes exceeds the number of nodes parameter, the system may modify the initial set of nodes to obtain a set of candidate nodes that satisfies the number of nodes parameter. FIG. 3C illustrates the acceleration structure 300 of FIG. 3A after the system has modified the initial set of nodes (i.e., the candidate nodes defined in FIG. 3A ) to obtain a modified set of nodes (i.e., the candidate nodes defined in FIG. 3C ). In the example of FIG. 3C , the system replaced two nodes (i.e., nodes 304 and 306) of the initial set of nodes with a higher-level node (i.e., node 308) that encompasses the two replaced nodes. In light of the present disclosure, it will be understood that any number of nodes in the initial set of nodes may be replaced with a single node to form a modified set of candidate nodes (e.g., achieved in accordance with the number of nodes parameter). FIG. 3C conceptually illustrates a ray test 360 using the modified set of candidate nodes illustrated in FIG. 3C .

[0039] 3D provides another example of modifying the initial set of nodes to satisfy a node count parameter of two nodes, where nodes 310 and 312 of the initial set of nodes (i.e., the candidate nodes defined in FIG. 3A) are replaced with a higher level node (i.e., node 314) to provide a modified set of candidate nodes for use in ray test 370.

[0040] In some implementations, rather than retroactively modifying the initial set of nodes based on the node count parameter as described with reference to Figures 3C and 3D, the system can be configured to selectively stop traversal of nodes in the acceleration structure when the number of nodes in the set of candidate nodes satisfies the node count parameter (e.g., when all child nodes intersect with the volume being tested or the number of nodes contained therein satisfies the node count parameter). Figure 3E shows an example in which node 304 is the only candidate node in a set of candidate nodes limited by a node count parameter of 1, resulting from stopping node traversal during volume testing based on the number of candidate nodes satisfying the node count parameter.

[0041] As shown in FIG. 3E, ray test 380 can be performed utilizing a set of candidate nodes (including node 304). FIG. 3E also shows a dashed arrow extending from ray test 380 toward node 302 (i.e., the top node of acceleration structure 300); in some cases, the ray test can include testing other nodes (e.g., remaining nodes) of acceleration structure 300 (e.g., starting with the top node) that are not included in the set of candidate nodes (e.g., if the set of candidate nodes does not substantially encompass the region that includes the tested volume used to determine the set of candidate nodes). In some cases, after testing a ray against the set of candidate nodes of acceleration structure 300, the system can refrain from re-testing nodes in the set of candidate nodes of acceleration structure 300 when testing the ray against the remaining nodes of acceleration structure 300.

[0042] While Figures 3C through 3E generally describe modifying and / or limiting the set of candidate nodes for the acceleration structure 300 based on a node count parameter, it will be understood in light of the present disclosure that nodes in the set of candidate nodes for the acceleration structure 300 may be selectively modified for other reasons. As a non-limiting example, the system may replace at least one node in the set of candidate nodes with a higher-level node. In some cases, the higher-level node is selected to substantially encompass an area that includes a volume tested to identify the set of candidate nodes. In some cases, the higher-level node is selected to encompass a structure within the virtual environment (e.g., a room, building, vehicle, or other structure that encompasses the volume being tested). In some cases, the higher-level node is selected to substantially encompass a volume determined based on a perceptual range associated with the virtual environment (e.g., a visual acuity range, a hearing acuity range). In some cases, the higher-level node is the top node of the acceleration structure.

[0043] While the preceding examples have, at least in some respects, focused on a single volume associated with a view frustum, the principles described herein may be applied when multiple volumes are associated with the same view frustum (and in other contexts as well). For example, FIG. 4A illustrates a first volume 422A associated with a near region of a view frustum associated with a camera 202 in a virtual environment 200 and a second volume 422B associated with a far region of a view frustum associated with the camera 202. The different volumes 422A and 422B may be associated with different sets of rays (or different portions of the same set of rays). In some examples, the different volumes 422A and 422B are individually tested against an acceleration structure associated with the virtual environment 200 to obtain respective sets of candidate nodes (or respective subsets of candidate nodes). Each set (or subset) of candidate nodes can be used to implement intersection testing of the respective sets of rays associated with the different volumes 422A and 422B.

[0044] In light of the present disclosure, it will be understood that volumes other than volumes associated with the view frustum can be used in pre-testing operations to determine candidate nodes for ray intersection testing. For example, FIG. 4B illustrates an exemplary volume 424 extending from a virtual light source 214 in virtual environment 200. Such volumes may be utilized to identify candidate nodes for ray intersection testing related to determining shadow effects, reflection effects, and / or other visual characteristics of objects in virtual environment 200. Volumes associated with other source objects (e.g., sound sources) may be utilized in accordance with the principles described herein (e.g., to identify candidate nodes for determining sound effects by ray tracing). FIG. 4C illustrates an exemplary volume 426 associated with a structure containing a virtual object in virtual environment 200 described herein. Volumes associated with other structures and / or structure partitions may be utilized for volume pre-testing within the scope of the present disclosure. Other types of volumes not explicitly illustrated herein may additionally or alternatively be utilized to determine candidate nodes for ray intersection testing (e.g., volumes associated with visual, auditory, and / or other perceptual ranges).

[0045] Exemplary Methods The following description refers to a number of methods and method operations that may be performed in accordance with the present disclosure. Although the method operations are described in a particular order and shown in flowcharts as occurring in a particular order, no particular order is required unless specifically stated or required because an operation is dependent on another operation being completed before it can be performed. It will be understood that certain embodiments of the present disclosure may omit one or more of the operations described herein.

[0046] FIG. 5 illustrates an example flow diagram 500 illustrating operations associated with ray tracing with shared traversal.

[0047] 5 includes performing pre-testing operations. Operation 502A of the pre-testing operations of operation 502 includes testing one or more volumes against an acceleration structure associated with a virtual environment to identify a set of candidate nodes for the acceleration structure. In some cases, the virtual environment includes one or more virtual objects defined by one or more object components.

[0048] The one or more volumes may include one or more view frustum volumes. In some cases, the one or more view frustum volumes include a view frustum volume that extends along the length of one or more rays associated with the ray tracing operation. In some cases, the one or more view frustum volumes include multiple view frustum volumes, each of the multiple view frustum volumes associated with a respective set of rays of the ray tracing operation being performed. The set of candidate nodes may include a respective subset of candidate nodes for each view frustum volume of the multiple view frustum volumes.

[0049] The one or more volumes can include a volume extended from a source object in the virtual environment (e.g., a light source). In some cases, the one or more volumes include a volume associated with a range of perception. In some implementations, the one or more volumes include a volume associated with a structure in the virtual environment.

[0050] In some cases, testing one or more volumes against the acceleration structure begins at a top level of the acceleration structure. Testing one or more volumes against the acceleration structure may include traversing the nodes of the acceleration structure by determining, for each traversed node of the acceleration structure, whether the one or more volumes intersect with or are contained within any child nodes of the traversed node of the acceleration structure. Testing one or more volumes against the acceleration structure may include, for each traversed node of the acceleration structure: (i) in response to determining that none of the child nodes of the traversed node intersects with or is contained within one or more volumes, not traversing any child nodes of the traversed node; (ii) traversing at least one, but less than all, child nodes of the traversed node in response to determining that at least one, but less than all, child nodes of the traversed node intersect with or are contained within one or more volumes; and (iii) including the traversed node in the set of candidate nodes in response to determining that all child nodes of the traversed node intersect with or are contained in one or more volumes, or in response to determining that the traversed node does not contain any child nodes.

[0051] Testing one or more volumes against the acceleration structure includes stopping traversal of the nodes of the acceleration structure when the number of nodes in the set of candidate nodes satisfies a node number parameter.

[0052] Identifying the set of candidate nodes (i) identifying an initial set of nodes for the acceleration structure by testing one or more volumes against the acceleration structure; (ii) comparing the number of nodes in the initial set of nodes to a node number parameter; (iii) in response to determining that the number of nodes in the initial set of nodes is less than or equal to the node number parameter, defining the initial set of candidate nodes as the set of candidate nodes; (iv) in response to determining that the number of nodes in the initial set of nodes is greater than the node count parameter; (a) modifying the initial set of nodes by replacing at least two nodes of the initial set of nodes with a higher-level node that contains at least two nodes to obtain a modified set of nodes; (b) defining the revised set of nodes as a set of candidate nodes.

[0053] In some implementations, identifying the set of candidate nodes includes: (i) identifying an initial set of nodes for the acceleration structure by testing one or more volumes against the acceleration structure; (ii) obtaining a modified set of nodes by replacing at least one node of the initial set of nodes with a node at a higher level; (iii) defining the revised set of nodes as a set of candidate nodes. In some cases, the higher-level node is selected to substantially encompass one or more volumes. In some cases, the higher-level node is selected to substantially encompass a structure in the virtual environment that encompasses one or more volumes. In some cases, the higher-level node is selected to substantially encompass a second volume determined based on a range of perception associated with the virtual environment. In some cases, the higher-level node includes a top node of an acceleration structure.

[0054] Operation 504 of flow diagram 500 includes ordering the nodes of the set of nodes according to an importance factor. In some cases, the importance factor includes proximity to an average ray origin or camera position associated with a ray tracing operation. In some cases, the importance factor includes a node level within an acceleration structure.

[0055] Operation 506 of flow diagram 500 includes performing a ray tracing operation based on a set of candidate nodes of the acceleration structure. In some cases, performing the ray tracing operation based on the set of candidate nodes includes testing one or more rays against one or more nodes of the set of candidate nodes to determine one or more intersecting object components of the one or more object components of the virtual environment. In some cases, performing the ray tracing operation includes testing one or more rays against one or more nodes of the set of candidate nodes according to an ordering of the nodes in the set of nodes (e.g., the ordering of operation 504). Performing the ray tracing operation may include refraining from testing the ray against remaining nodes of the acceleration structure that are not included in the set of candidate nodes. In some cases, operation 506 includes operation 506A, which includes testing the ray against remaining nodes of the acceleration structure while refraining from re-testing the ray against any nodes in the set of candidate nodes.

[0056] Additional details related to the computing system The disclosed embodiments may include or utilize special-purpose or general-purpose computers, including computer hardware, as discussed in more detail below. The disclosed embodiments also include physical and other computer-readable media for carrying or storing computer-executable instructions and / or data structures. Such computer-readable media may be any available media accessible by a general-purpose or special-purpose computer system. Computer-readable media that store computer-executable instructions in the form of data are one or more "physical computer storage media" or "hardware storage devices." Computer-readable media that do not store computer-executable instructions but simply carry them are "transmission media." Thus, by way of example, and not limitation, the present embodiments may include at least two distinctly different kinds of computer-readable media: computer storage media and transmission media.

[0057] A computer storage medium (also known as a "hardware storage") is a computer-readable hardware storage device such as RAM, ROM, EEPROM, CD-ROM, RAM, flash memory, solid-state drives ("SSD") based on phase-change memory ("PCM") or other types of memory, or other optical disk storage, magnetic disk storage or other magnetic storage, or any other medium that can be used to store desired program code means in hardware in the form of computer-executable instructions, data, or data structures and that can be accessed by a general-purpose or special-purpose computer.

[0058] A "network" is defined as one or more data links that enable the transport of electronic data between computer systems and / or modules and / or other electronic devices. When information is transferred or provided over a network or other communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a computer, the computer properly views the connection as a transmission medium. Transmission media can include networks and / or data links used to transmit program code in the form of computer-executable instructions or data structures and accessible by a general-purpose or special-purpose computer. Combinations of the above are also included within the scope of computer-readable media.

[0059] Furthermore, upon reaching various computer system components, program code means in the form of computer-executable instructions or data structures may be automatically transferred from transmission computer-readable media to physical computer-readable storage media (or vice versa). For example, computer-executable instructions or data structures received over a network or data link may be buffered in RAM within a network interface module (e.g., a "NIC") and then ultimately transferred to the computer system's RAM and / or to the computer system's less volatile computer-readable physical storage media. Thus, computer-readable physical storage media may be included in computer system components, which also (or primarily) utilize transmission media.

[0060] Computer-executable instructions comprise, for example, instructions and data that cause a general-purpose computer, special-purpose computer, or special-purpose processing device to perform a certain function or group of functions. Computer-executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, or source code. Although the subject matter has been described in language specific to structural features and / or methodological acts, it will be understood that the subject matter defined in the appended claims is not necessarily limited to the described features or acts. Rather, the described features and acts are disclosed as example forms of implementing the claims.

[0061] The disclosed embodiments may include or utilize cloud computing. The cloud model may consist of a variety of characteristics (e.g., on-demand self-service, broad network access, resource pooling, rapid elasticity, measured service, etc.), service models (e.g., Software as a Service (“SaaS”), Platform as a Service (“PaaS”), Infrastructure as a Service (“IaaS”), and deployment models (e.g., private cloud, community cloud, public cloud, hybrid cloud, etc.).

[0062] Those skilled in the art will appreciate that the present disclosure may be practiced in networked computing environments having many types of computer system configurations, including personal computers, desktop computers, laptop computers, message processors, handheld devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, cellular phones, PDAs, pagers, routers, switches, wearable devices, etc. The present invention may also be practiced in distributed system environments where tasks are performed by multiple computer systems (e.g., local and remote computer systems) that are linked through a network (using wired data links, wireless data links, or a combination of wired and wireless data links). In a distributed system environment, program modules may be located in both local and / or remote memory storage devices.

[0063] Alternatively or additionally, the functionality described herein may be performed, at least in part, by one or more hardware logic components. For example, and without limitation, illustrative types of hardware logic components that may be used include field programmable gate arrays (FPGAs), program specific integrated circuits (ASICs), application specific general purpose products (ASSPs), systems on a chip (SOCs), complex programmable logic devices (CPLDs), central processing units (CPUs), graphics processing units (GPUs), etc.

[0064] As used herein, the terms "executable module," "executable component," "component," "module," or "engine" may refer to a hardware processing unit or a software object, routine, or method that can run on one or more computer systems. The different components, modules, engines, and services described herein may be implemented as objects or processors that run (e.g., as separate threads) on one or more computer systems.

[0065] It will also be understood how any feature or operation disclosed herein can be combined with any one or combination of other features and operations disclosed herein. Furthermore, content or functionality from any one of the figures can be used in combination with any content or functionality used in any of the other figures. In this regard, content disclosed in any one figure is not mutually exclusive and, instead, can be combined with content from any of the other figures.

[0066] The present invention may be embodied in other specific forms without departing from its spirit or characteristics. The described embodiments are to be considered in all respects as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.

Claims

1. 1. A system for implementing a ray tracing operation with shared traversal, comprising: one or more processors; one or more hardware storage devices for storing instructions; the instructions are executable by the one or more processors, and the system comprises: performing pre-testing operations, the pre-testing operations including testing one or more volumes against an acceleration structure associated with a virtual environment to identify a set of candidate nodes for the acceleration structure, the virtual environment including one or more virtual objects defined by one or more object components; performing a ray tracing operation based on the set of candidate nodes of the acceleration structure; Configure your system as follows:

2. 2. The system of claim 1, wherein testing one or more volumes against the acceleration structure comprises traversing nodes of the acceleration structure by determining, for each traversed node of the acceleration structure, whether the one or more volumes intersect with or are contained within any child nodes of the traversed node of the acceleration structure.

3. Testing one or more volumes against the acceleration structure includes, for each traversed node of the acceleration structure: in response to determining that none of the child nodes of the traversed node intersect with or are contained within the one or more volumes, not traversing any child nodes of the traversed node; traversing at least one, but less than all, child nodes of the traversed node in response to determining that at least one, but less than all, child nodes of the traversed node intersect with or are contained within the one or more volumes; including the traversed node in the set of candidate nodes in response to determining that all child nodes of the traversed node intersect with or are contained within the one or more volumes or in response to determining that the traversed node does not contain any child nodes; The system of claim 2 , comprising:

4. 3. The system of claim 2, wherein testing one or more volumes against the acceleration structure includes stopping traversal of nodes of the acceleration structure when a number of nodes in the set of candidate nodes satisfies a node count parameter.

5. The system of claim 1 , wherein testing the one or more volumes against the acceleration structure begins at a top level of the acceleration structure.

6. Identifying the set of candidate nodes comprises: identifying an initial set of nodes for the acceleration structure by testing the one or more volumes against the acceleration structure; comparing the number of nodes in the initial set of nodes to a node number parameter; in response to determining that a number of nodes in the initial set of nodes is less than or equal to the node number parameter, defining an initial set of candidate nodes as the set of candidate nodes; In response to determining that the number of nodes in the initial set of nodes is greater than the node number parameter, modifying the initial set of nodes by replacing at least two nodes of the initial set of nodes with a higher-level node that encompasses the at least two nodes to obtain a modified set of nodes; defining the revised set of nodes as the set of candidate nodes; The system of claim 1 , comprising:

7. Identifying the set of candidate nodes comprises: identifying an initial set of nodes for the acceleration structure by testing the one or more volumes against the acceleration structure; obtaining a modified set of nodes by replacing at least one node of the initial set of nodes with a node at a higher level; defining the revised set of nodes as the set of candidate nodes; The system of claim 1 , comprising:

8. The higher level node substantially encompassing said one or more volumes; or substantially encompassing a structure within said virtual environment that encompasses said one or more volumes; or substantially encompassing a second volume determined based on a range of perception associated with the virtual environment; The system of claim 7, wherein the system is selected such that:

9. The system of claim 7 , wherein the higher level node comprises a top-level node of the acceleration fabric.

10. 2. The system of claim 1, wherein performing the ray tracing operation based on the set of candidate nodes includes testing one or more rays against one or more nodes in the set of candidate nodes to determine one or more intersecting object components of the one or more object components of the virtual environment.

11. The system of claim 10 , wherein the instructions are executable by the one or more processors to configure the system to order nodes of the set of nodes according to an importance factor.

12. The system of claim 11 , wherein the importance factor comprises (i) proximity to an average ray origin or camera position associated with the ray tracing operation, or (ii) a node level within the acceleration structure.

13. The system of claim 11 , wherein performing the ray tracing operation includes testing the one or more rays against the one or more nodes of the set of candidate nodes according to an order of the nodes in the set of nodes.

14. The system of claim 10 , wherein performing the ray tracing operation includes refraining from testing the ray against remaining nodes of the acceleration structure that are not included in the set of candidate nodes.

15. 11. The system of claim 10, wherein performing the ray tracing operation further comprises testing the ray against remaining nodes of the acceleration structure, and wherein testing the ray against remaining nodes of the acceleration structure comprises refraining from retesting the ray against any node in the set of candidate nodes.