DETAILED ACTION
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Specification
The specification is objected to as failing to provide proper antecedent basis for the claimed subject matter. See 37 CFR 1.75(d)(1) and MPEP § 608.01(o). Correction of the following is required: Claim 20 recites a “computer readable storage medium.” However, the Specification in [00155] discloses a “computer readable medium.” Thus, there is a lack of antecedent basis in the Specification for “computer readable storage medium.”
Claim Rejections - 35 USC § 102
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
The following is a quotation of the appropriate paragraphs of 35 U.S.C. 102 that form the basis for the rejections under this section made in this Office action:
A person shall be entitled to a patent unless –
(a)(1) the claimed invention was patented, described in a printed publication, or in public use, on sale, or otherwise available to the public before the effective filing date of the claimed invention.
(a)(2) the claimed invention was described in a patent issued under section 151, or in an application for patent published or deemed published under section 122(b), in which the patent or application, as the case may be, names another inventor and was effectively filed before the effective filing date of the claimed invention.
Claim(s) 1, 11, 20; 2, 4, 6, 12, 14 and 16 is/are rejected under 35 U.S.C. 102(a)(1) and 102(a)(2) as being anticipated by Obert U.S. Pub. No. 2017/0249779.
Re: claim 1 and 11 (which are rejected under the same rationale), Obert teaches,
1. A method of operating a graphics processor to generate a render output, (“GPU 12 may be configured to perform graphics operations to render one or more graphics primitives to display 8.”; Obert, [0021])
The GPU performs graphics operations to render one or more graphics primitives for display.
the render output representing a view of a scene comprising one or more objects, each object having a set of geometry defined for it, (“... processor cluster 46 may perform operations as discussed above to execute a graphics processing pipeline to render a three-dimensional (3D) graphics scene that includes one or more graphics objects within a model space or a world space, including rendering a plurality of primitives that make up the one or more graphics objects in the 3D scene.”; Obert, [0040])
The GPU executes a graphics processing pipeline to render a 3D graphics scene (render output representing a view of a scene) that includes one or more graphics objects (comprising one or more graphics objects), where each of the graphics objects include plural primitives (each object having a set of geometry defined for it).
the method comprising: determining which sets of geometry should be further processed for which region or regions of a plurality of regions into which the render output has been divided for rendering; (“To determine whether a particular shadow ray originating from a particular location of the 3D graphics scene and directed towards a light source for the 3D graphics scene intersects a primitive in the 3D graphics scene, GPU 12 may organize the primitives in the 3D graphics scene into a hierarchical structure, such as acceleration data structure (ADS) 41, that hierarchically groups scene primitives (e.g., triangles).”; Obert, [0042])
The GPU organizes the primitives in the 3D graphics scene into a hierarchical structure, such as an acceleration data structure.
(“Fig 3 is a conceptual diagram illustrating an example graphics scene onto which GPU 12 may perform shadow ray tracing and an example partitioning of the graphics scene into bounding volumes.”; Obert, [0043], Fig. 3)
Fig. 3 illustrates a graphics scene, which has been partitioned into bounding volumes (regions into which the render output has been divided for rendering).
(“As part of the shadow mapping process, GPU 12 may determine, for a particular location in graphics scene 50, whether a shadow ray originating from the particular location towards a light source intersects one of primitives 52. If GPU 12 determines that the shadow ray intersects a primitive that is situated between the light source and the location from which the shadow ray originates, then the location from which the shadow ray originates is shadowed from the light source by the intersected primitive and is therefore not illuminated by the light source.”; Obert, [0043])
The GPU determines for a particular location in a graphics scene whether a shadow ray intersects a primitive (determining which sets of geometry should be further processed for which region of the plurality of regions).
(“GPU 12 may systematically determine whether a primitive in primitives 52 intersects a particular shadow ray by dividing graphics scene 50, hierarchically arranging the divided portions of graphics scene 50, and recursively traversing the hierarchy of the divided portions of the graphics scene 50. GPU 12 may conceptually partition primitives 52 into bounding volumes 56A-56E (“bounding volumes 56”).”; Obert, [0044])
The divided portions of the graphics scene are hierarchically arranged and recursively traversed in order for the GPU to determine whether a shadow ray intersects a primitive in a bounding volume, that represents a location in the scene.
and rendering a region of the render output by processing the sets of geometry determined to be further processed for that region, (“GPU 12 may organize a plurality of primitives of a scene in a hierarchical data structure, wherein a plurality of bounding volumes are associated with a plurality of nodes of the hierarchical data structure. The GPU 12 may further rasterize a representation of each of the plurality of bounding volumes to an off-screen render target in the memory.”; Obert, [0026])
The GPU organizes plural primitives in a scene in a hierarchical data structure of bounding volumes (regions). The bounding volumes of the hierarchical data structure are recursively traversed to determine whether a shadow ray intersects a primitive. When there is an intersection, the GPU rasterizes a representation of each of the bounding volumes.
wherein the determining which sets of geometry should be further processed for which region or regions of the plurality of regions into which a render output has been divided for rendering uses a hierarchical data structure representing a plurality of volumes in a world space coordinate system, (“GPU 12 may organize a plurality of primitives of a scene in a hierarchical data structure, wherein a plurality of bounding volumes are associated with a plurality of nodes of the hierarchical data structure. The GPU 12 may further rasterize a representation of each of the plurality of bounding volumes to an off-screen render target in the memory.”; Obert, [0026])
The GPU organizes plural primitives in a scene in a hierarchical data structure of bounding volumes (hierarchical data structure representing a plurality of volumes in a world space).
(“GPU 12 may systematically determine whether a primitive in primitives 52 intersects a particular shadow ray by dividing graphics scene 50, hierarchically arranging the divided portions of graphics scene 50, and recursively traversing the hierarchy of the divided portions of the graphics scene 50. GPU 12 may conceptually partition primitives 52 into bounding volumes 56A-56E (“bounding volumes 56”).”; Obert, [0044])
The hierarchical data structure is recursively traversed (uses a hierarchal data structure) in order for the GPU to determine whether a shadow ray intersects a primitive in a bounding volume.
(“... processor cluster 46 may perform operations as discussed above to execute a graphics processing pipeline to render a three-dimensional (3D) graphics scene that includes one or more graphics objects within a model space or a world space, including rendering a plurality of primitives that make up the one or more graphics objects in the 3D scene.”; Obert, [0040])
The GPU executes a graphics processing pipeline to render a 3D graphics scene that includes one or more graphics objects within world space, where each of the graphics objects include plural primitives.
wherein a volume contains one or more sets of geometry, the hierarchical data structure thus being indicative of the distribution of geometry for the scene to be rendered in the world space coordinate system. (“GPU 12 may organize a plurality of primitives of a scene in a hierarchical data structure, wherein a plurality of bounding volumes are associated with a plurality of nodes of the hierarchical data structure. The GPU 12 may further rasterize a representation of each of the plurality of bounding volumes to an off-screen render target in the memory.”; Obert, [0026])
The GPU organizes plural primitives in a scene in a hierarchical data structure of bounding volumes (hierarchical data structure indicative of the distribution of geometry for the scene to be rendered).
(“... the drawing instructions, may collectively, define all or part of a graphics scene that includes one or more graphics objects within a model space or world space defined by the application.”; Obert, [0030])
The graphics scene that includes graphics objects is defined within world space.
(“Bounding volume 56A may be a bounding box that bounds all primitives 52 of graphics scene 50... In the example shown in Fig. 3, GPU 12 may partition primitives 52 into five bounding volumes 56A-56E...”; Obert, [0045], [0046], [0047], Fig. 3)
Fig. 3 illustrates that bounding volume 56A includes all primitives of the graphics scene (a volume contains one or more sets of geometry).
(“Bounding volumes 56 may be arranged into a hierarchical structure such that GPU 12 may traverse the hierarchical structure to determine possible shadow ray-primitive intersections.”; Obert, [0047], Fig. 4)
Fig. 4 illustrates that bounding volumes 56 are arranged in a hierarchical structure (the hierarchical structure thus being indicative of the distribution of geometry for the scene to be rendered in the world space coordinate system).
Claim 20 is a medium analogous to the method of claim 1, is similar in scope and is rejected under the same rationale. Claim 20 has an additional limitation. Re: claim 20, Obert teaches
20. A non-transitory computer readable storage medium storing computer software code which, when executing on a processor, performs a method of operating a graphics processor to generate a render output, (“Computer-readable media may include computer data storage media or communication media including any medium that facilitates transfer of a computer program from one place to another. Data storage media may be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and/or data structures for implementation of the techniques described in this disclosure”; Obert, [0080])
Computer-readable media includes data storage media that is accessed by a processor to implement techniques of the disclosure.
Re: claims 2 and 12 (which are rejected under the same rationale), Obert teaches
2. The method of claim 1, wherein determining which sets of geometry should be further processed for which region or regions of the plurality of regions into which the render output has been divided comprises: determining a volume in the world space coordinate system that a particular region of the render output corresponds to; (“When representations of at least a portion of bounding volumes 56 are rendered from the perspective of the light source, GPU 12 can determine that locations in graphics scene 50 are not illuminated by the light source if shadow rays that originate from those locations intersect a primitive of primitives 52.”; Obert, [0055])
When representations of bounding volumes are rendered, the GPU determines locations (determining a volume that a particular region in the render output corresponds to) in the graphics scene corresponding to particular bounding volumes that are not illuminated by the light source.
(“... the drawing instructions, may collectively, define all or part of a graphics scene that includes one or more graphics objects within a model space or world space defined by the application.”; Obert, [0030])
The graphics scene that includes graphics objects is defined within world space.
and testing the volume in the world space world space coordinate system that the particular region of the render output corresponds to for intersection with one or more volumes represented by the hierarchical data structure to determine whether the geometry contained within those volumes falls within the particular region and should thus be further processed for that particular region. (“As part of the shadow mapping process, GPU 12 may determine, for a particular location in graphics scene 50, whether a shadow ray originating from the particular location towards a light source intersects one of primitives 52. If GPU 12 determines that the shadow ray intersects a primitive that is situated between the light source and the location from which the shadow ray originates, then the location from which the shadow ray originates is shadowed from the light source by the intersected primitive and is therefore not illuminated by the light source.”; Obert, [0043])
The GPU, for a particular location in a graphics scene, whether a shadow ray intersects a primitive in the scene (testing the volume).
(“GPU 12 may systematically determine whether a primitive in primitives 52 intersects a particular shadow ray by dividing graphics scene 50, hierarchically arranging the divided portions of graphics scene 50, and recursively traversing the hierarchy of the divided portions of the graphics scene 50. GPU 12 may conceptually partition primitives 52 into bounding volumes 56A-56E (“bounding volumes 56”).”; Obert, [0044])
The GPU systematically determines whether a primitive intersects a particular shadow ray by recursively traversing the hierarch of the divided portions of the graphics scene (testing the volume in the world space coordinate system that the particular region of the render output corresponds to for intersection with one or more volumes represented by the hierarchical date structure to determine whether the geometry contained within those volumes falls within the particular region and should thus be further processed for that particular region).
(“Bounding volume 56 may be arranged into a hierarchical structure such that GPU 12 may traverse the hierarchical structure to determine possible shadow ray-primitive intersections.. Fig. 4 illustrates an example hierarchical data structure having nodes that are associated with the bounding volumes 56 and primitives 52 shown in Fig. 3.”; Obert, [0047], Figs. 3-4)
Fig 3 illustrate the bounding volumes and Fig. 4 illustrates the bounding volumes arranged into a hierarchical structure for the GPU to traverse in order to determine possible shadow ray primitive intersections (testing the volume in the world space coordinate system that the particular region of the render output corresponds to for intersection with one or more volumes represented by the hierarchical date structure to determine whether the geometry contained within those volumes falls within the particular region and should thus be further processed for that particular region). .
Re: claims 4 and 14 (which are rejected under the same rationale), Obert teaches
4. The method of claim 1, further comprising performing a ray tracing operation using the hierarchical data structure. (“Bounding volume 56 may be arranged into a hierarchical structure such that GPU 12 may traverse the hierarchical structure to determine possible shadow ray-primitive intersections.”; Obert, [0047], Figs 3-4)
Fig 4 illustrates a hierarchical structure (hierarchical data structure) that the GPU traverses to determine possible shadow ray-primitive intersections (performing a ray tracing operation using the hierarchical data structure).
Re: claims 6 and 16 (which are rejected under the same rationale), Obert teaches,
6. The method of claim 1, wherein the hierarchical data structure comprises a bounding volume hierarchy tree data structure. (“As shown in Fig. 4, one example of ADS 41 may be a bounding volume hierarchy (BVH) tree 60 in which nodes 62A-62E (“nodes 62”) of BVH tree 60 associated with bounding volumes 56 and primitives 52 of graphics scene 50 are hierarchically arranged into a tree-like structure.”; Obert, [0047], Fig. 4)
Fig. 4 illustrates that the accelerated data structure 41 (hierarchical data structure) is a bounding volume hierarchy tree data structure.
Claim Rejections - 35 USC § 103
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
The factual inquiries for establishing a background for determining obviousness under 35 U.S.C. 103 are summarized as follows:
1. Determining the scope and contents of the prior art.
2. Ascertaining the differences between the prior art and the claims at issue.
3. Resolving the level of ordinary skill in the pertinent art.
4. Considering objective evidence present in the application indicating obviousness or nonobviousness.
Claim(s) 3, 5, 10, 13 and 15 is/are rejected under 35 U.S.C. 103 as being unpatentable over Obert as applied to claims 1, 2, 4, 12 and 14 above, and further in view of Ramesh Babu et al. U.S. Patent No. 11,893,677 (hereinafter Ramesh).
Re: claims 3 and 13 (which are rejected under the same rationale), Obert is silent regarding determining a volume in the world space coordinate system that a particular region of the render output corresponds to comprises determining a volume in the world space coordinate system of a view frustum for the particular region of the render output, however, Ramesh teaches
3. The method of claim 2, wherein determining a volume in the world space coordinate system that a particular region of the render output corresponds to comprises determining a volume in the world space coordinate system of a view frustum for the particular region of the render output. (“.. a ray tracing system can perform ray tracing by casting a plurality of rays (e., ray 152a, ray 152b, and ray 152c) from a virtual or imaginary view camera 110 (e.g., which determines the view into the 3D scene), through the pixels 140 of a 2D viewing plane, out into the 3D scene.”; Ramesh, col. 5, lines 12-17, Fig. 1A)
Fig. 1 A illustrates a ray tracing system that performs ray tracing by casting a ray from a virtual or imaginary view camera (view frustum).
(“For example, when rays projected into the scene intersect with one or more objects (e.g., such as object 130), color and lighting information from the point(s) of intersection on the object(s) surfaces can contribute to the final colors and illumination levels of the pixels (e.g., pixels 140) associated with the rays (e.g., primary rays 152a-c)... For example, a ray intersection test can include... determining whether a primary ray intersects with one or more scene objects or primitives...”; Ramesh, col. 5, lines 42-47, col. 7, line 65-col. 8, line 8)
When rays projected into the scene intersect an object, color and lighting information from the points of intersection on object surfaces (determining a volume... of a view frustum for the particular region of render output) contribute to the final colors and illumination levels of pixels associated with the rays
(“Bounding boxes (e.g., AABBs or other bounding boxes) or other bounding regions can be defined with respect to world-space or object-space.”; Ramesh, col. 8, lines 63-65)
Bounding boxes or other bounding regions are defined with respect to world space. Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Obert by adding the feature of determining a volume in the world space coordinate system that a particular region of the render output corresponds to comprises determining a volume in the world space coordinate system of a view frustum for the particular region of the render output, in order to accelerate ray intersection testing techniques such as efficient BVH traversal during processing of collision checks associated with primary rays, shadow rays and reflection rays, as taught by Ramesh (col. 8, lines 51-55).
Re: claim 5, Obert is silent regarding the graphics processor comprises a programmable execution unit operable to execute graphics processing programs and also comprises a ray tracing circuit that can be messaged by the programmable execution unit as part of a program to perform ray tracing to perform some or all of the ray tracing operation, and wherein some or all of the determining which sets of geometry should be processed for which region or regions of a plurality of regions into which the render output has been divided for rendering is performed using the ray tracing circuit, however, Ramesh teaches
5. The method of claim 4, wherein the graphics processor comprises a programmable execution unit operable to execute graphics processing programs and also comprises a ray tracing circuit that can be messaged by the programmable execution unit as part of a program to perform ray tracing to perform some or all of the ray tracing operation, (“... the operations of one or more of the ray tracing engine 520, the acceleration data structure engine 522, the node fetch and caching engine 524, and the graphics processing engine 526 can be executed by the GPU 514.”; Ramesh, col. 14, lines 52-56, Fig. 5)
Fig. 5 illustrates a ray tracing system that includes a ray tracing engine (ray tracing circuit)
(“... the graphics processing engine 526 can include a graphics processing pipeline. For example, graphics processing engine 526 can include... one or more of a geometry processing state, a visibility stage, a rasterization stage, and a pixel processing pipeline... graphics processing engine 526 can communicate with or access the memory 516 of the computer components 510... graphics processing engine 526 can communicate with one or more of the RTU 518 and/or hardware accelerators 519... and/or the ray tracing engine 520.”; Ramesh, col. 15, lines 48-60)
Fig. 5 illustrates a graphics processing engine that includes a graphics processing pipeline (a programmable execution unit operable to execute graphics processing programs). The graphics processing engine communicates with ray tracing unit (RTU) 518 (ray tracing circuit) and/or ray tracing engine 520 (ray tracing circuit) to perform ray tracing operations (a ray tracing circuit that can be messaged by the programmable execution unit as part of a program to perform ray tracing to perform some or all of the ray tracing operation).
and wherein some or all of the determining which sets of geometry should be processed for which region or regions of a plurality of regions into which the render output has been divided for rendering is performed using the ray tracing circuit. (“ In one example, the ray tracing engine 520 can include one or more ray intersection engines. For example, ray tracing engine 520 can include one or more ray-primitive intersection engines and/or can include one or more ray-bounding volume intersection engines. In some cases, ray tracing engine 520 can include one or more ray-primitive intersection engines and/or can include one or more ray-AABB intersection engines.”; Ramesh, col. 15, lines 6-13, Fig. 5)
The ray tracing engine includes one or more ray intersection engines (some or all of the determining which sets of geometry should be processed for which region or regions of a plurality of regions into which the render output has been divided for rendering is performed using the ray tracing circuit). Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Obert by adding the feature of the graphics processor comprises a programmable execution unit operable to execute graphics processing programs and also comprises a ray tracing circuit that can be messaged by the programmable execution unit as part of a program to perform ray tracing to perform some or all of the ray tracing operation, and wherein some or all of the determining which sets of geometry should be processed for which region or regions of a plurality of regions into which the render output has been divided for rendering is performed using the ray tracing circuit, in order to accelerate ray intersection testing techniques such as efficient BVH traversal during processing of collision checks associated with primary rays, shadow rays and reflection rays, as taught by Ramesh (col. 8, lines 51-55).
Claim 15 is a graphics processor analogous to the method of claim 5, is similar in scope and is rejected under the same rationale. Claim 15 has an additional limitation. Re: claim 15, Obert is silent regarding some or all of the determining which sets of geometry should be processed for which region or regions of a plurality of regions into which the render output has been divided for rendering is performed using the ray tracing circuit, the sorting circuit comprising or having access to the ray tracing circuit, however, Ramesh teaches
wherein some or all of the determining which sets of geometry should be processed for which region or regions of a plurality of regions into which the render output has been divided for rendering is performed using the ray tracing circuit, the sorting circuit comprising or having access to the ray tracing circuit. (“ In one example, the ray tracing engine 520 can include one or more ray intersection engines. For example, ray tracing engine 520 can include one or more ray-primitive intersection engines and/or can include one or more ray-bounding volume intersection engines. In some cases, ray tracing engine 520 can include one or more ray-primitive intersection engines and/or can include one or more ray-AABB intersection engines.”; Ramesh, col. 15, lines 6-13, Fig. 5)
The ray tracing engine includes one or more ray intersection engines (some or all of the determining which sets of geometry should be processed for which region or regions of a plurality of regions into which the render output has been divided for rendering is performed using the ray tracing circuit).
(“... the graphics processing engine 526 can include a graphics processing pipeline. For example, graphics processing engine 526 can include... one or more of a geometry processing state, a visibility stage, a rasterization stage, and a pixel processing pipeline... graphics processing engine 526 can communicate with or access the memory 516 of the computer components 510... graphics processing engine 526 can communicate with one or more of the RTU 518 and/or hardware accelerators 519... and/or the ray tracing engine 520.”; Ramesh, col. 15, lines 48-60)
Fig. 5 illustrates a graphics processing engine that includes a graphics processing pipeline (which performs sorting). The graphics processing engine communicates with ray tracing unit (RTU) 518 (ray tracing circuit) and/or ray tracing engine 520 (ray tracing circuit) to perform ray tracing operations (a sorting circuit comprising or having access to a ray tracing circuit). Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Obert by adding the feature of some or all of the determining which sets of geometry should be processed for which region or regions of a plurality of regions into which the render output has been divided for rendering is performed using the ray tracing circuit, the sorting circuit comprising or having access to the ray tracing circuit, in order to accelerate ray intersection testing techniques such as efficient BVH traversal during processing of collision checks associated with primary rays, shadow rays and reflection rays, as taught by Ramesh (col. 8, lines 51-55).
Re: claim 10, Obert is silent regarding the hierarchical data structure indicative of the distribution of geometry for the scene to be rendered is generated by updating some but not all of a hierarchical data structure indicative of the distribution of geometry for a scene represented by a render output that was previously rendered by the graphics processor, however, Ramesh teaches
10. The method of claim 1, wherein the hierarchical data structure indicative of the distribution of geometry for the scene to be rendered is generated by updating some but not all of a hierarchical data structure indicative of the distribution of geometry for a scene represented by a render output that was previously rendered by the graphics processor. (“Each primitive in the BVH root node is assigned to either the left or right child node. The child nodes contain the AABBs containing their assigned geometry, and this geometry is likewise assigned to left or right child nodes, recursively until the BVH leaf nodes contain a small number of primitives, e.g., four or fewer. Depending on the extent of any scene changes and/or object deformations, the next and any subsequent frames may require one or more new BVH build operations or BVH refitting/update operations based on the scene changes.”; Ramesh, col. 8, lines 48, Fig. 2B)
Fig. 2B illustrates a bounding volume hierarchy (hierarchical data structure indicative of the distribution of geometry for the scene to be rendered) that is updated based on scene changes or object deformations. The subsequent frames may require BVH refitting/update operations based on scene changes (updating some but not all of a hierarchical data structure indicative of the distribution of geometry for a scene represented by a render output that was previously rendered by the graphics processor). Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Obert by adding the feature of the hierarchical data structure indicative of the distribution of geometry for the scene to be rendered is generated by updating some but not all of a hierarchical data structure indicative of the distribution of geometry for a scene represented by a render output that was previously rendered by the graphics processor, in order to accelerate ray intersection testing techniques such as efficient BVH traversal during processing of collision checks associated with primary rays, shadow rays and reflection rays, as taught by Ramesh (col. 8, lines 51-55).
Claim(s) 7, 8, 17 and 18 is/are rejected under 35 U.S.C. 103 as being unpatentable over Obert as applied to claims 6 and 11 above, and further in view of Ramesh and Saucedo et al. WO 2025/029477 A1.
Re: claims 7 and 17 (which are rejected under the same rationale), Obert is silent regarding the bounding volume hierarchy tree data structure comprises a top-level acceleration structure (TLAS) wherein at least some leaf nodes of the top-level acceleration structure represent instances of objects within the scene, wherein an instance of an object within the scene is associated with a respective bottom-level acceleration structure (BLAS), at least some leaf nodes of the bottom-level acceleration structure (BLAS) containing the sets of geometry for the associated object, however, Ramesh teaches
7. The method of claim 6, wherein the bounding volume hierarchy tree data structure comprises a top-level acceleration structure (TLAS) wherein at least some leaf nodes of the top-level acceleration structure represent instances of objects within the scene, (“Ray tracing can utilize a two-level acceleration structure system, such as a top-level acceleration structure (TLAS) and a bottom-level acceleration structure (BLAS), as depicted in Fig. 4A. For example Fig. 4A illustrates a TLAS 410 and a BLAS 430.”; Ramesh, col. 9, lines 19-23, Fig. 4A)
Fig. 4A illustrates a two-level acceleration structure that includes a top-level acceleration structure (TLAS) and a bottom-level acceleration structure (BLAS).
(“The TLAS 410 is built in world-space... A TLAS can be constructed as a BVH with leaf nodes containing a BLAS. For example, the TLAS leaf nodes 422, 424, 426, and 428 each contain or are otherwise associated with one of the two BLASs 440 and 460.”; Ramesh, col. 9, lines 25-30)
A TLAS is a BVH (bounding volume hierarchy tree data structure) with leaf nodes 422-428 that contain one of the two BLASs.
(“A BLAS can be constructed for each object in a scene, referred to as a scene object. For example, Fig. 4A illustrates a BLAS 440 that may be constructed for a first unique scene object and a BLAS 460 that may be constructed for a second unique scene object.”; Ramesh, col. 9, lines 34-38)
A BLAS is constructed for each object in a scene. Thus, a TLAS has leaf nodes that contain at least one BLAS, where the BLAS includes an object in the scene (at least some leaf nodes of the top-level acceleration structure represent instances of objects within the scene).
wherein an instance of an object within the scene is associated with a respective bottom-level acceleration structure (BLAS), at least some leaf nodes of the bottom-level acceleration structure (BLAS) containing the sets of geometry for the associated object, (“A BLAS can be constructed for each object in a scene, referred to as a scene object. For example, FIG. 4A illustrates a BLAS 440 that may be constructed for a first unique scene object and a BLAS 460 that may be constructed for a second unique scene object. BLAS primitives can be the triangles or the AABBs of procedural primitives used to build the scene object. A bottom level BVH is built over the set of these triangles or AABBs of the scene object, with each BLAS leaf node containing a small number (e.g., up to four, five, or some other number) of triangles or AABBs. For example, in the context of FIG. 4A, the BLAS leaf nodes 452-458 and 472-478 can each contain some quantity of triangles, AABBs, or other primitives used to build the scene object.”; Ramesh, col. 9, lines 34-47)
A bottom level acceleration structure (BLAS) is constructed for each object in a scene (an instance of an object within a scene is associated with a respective bottom-level acceleration structure (BLAS)). Fig. 4A illustrates BLAS 440 and BLAS 460 that are constructed for a first unique scene object and a second unique scene object, respectively. BLAS primitives are triangles used to build the scene objects. A bottom level BVH is built over these triangles of the scene object, with each BLAS leaf node containing a small number of triangles. For example, the BLAS leaf nodes 452-458 and 472-478 each contain some quantity of triangles or other primitives used to build the scene object (at least some leaf nodes of the bottom-level acceleration structure (BLAS) containing the sets of geometry for the associated object). Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Obert by adding the feature of the bounding volume hierarchy tree data structure comprises a top-level acceleration structure (TLAS) wherein at least some leaf nodes of the top-level acceleration structure represent instances of objects within the scene, wherein an instance of an object within the scene is associated with a respective bottom-level acceleration structure (BLAS), at least some leaf nodes of the bottom-level acceleration structure (BLAS) containing the sets of geometry for the associated object, in order to accelerate ray intersection testing techniques such as efficient BVH traversal during processing of collision checks associated with primary rays, shadow rays and reflection rays, as taught by Ramesh (col. 8, lines 51-55).
Obert and Ramesh are silent regarding wherein the determining which sets of geometry should be further processed for which region or regions of the plurality of regions into which the render output has been divided for rendering comprises determining whether a volume represented by the top-level acceleration structure (TLAS) falls within a region of the render output, however, Saucedo teaches
and wherein the determining which sets of geometry should be further processed for which region or regions of the plurality of regions into which the render output has been divided for rendering comprises determining whether a volume represented by the top-level acceleration structure (TLAS) falls within a region of the render output. (“... a bottom-level BVH may store multiple primitives in its leaf node, whereas a top-level BVH may store one bottom-level BVH in its leaf node.”; Saucedo, [0070])
The top-level BVH stores one bottom-level BVH in its leaf node.
(“... the apparatus may begin a BVH traversal from a root node of the BVH... The root node (i.e., a top-level node) of the BVH may be a node in the BVH that has no incoming edges. The root node may correspond to a volume that encompasses all objects (e.g., all primitives) in a scene. The traversal of the BVH may proceed from the root node to internal node(s)... of the BVH. An internal node may correspond to a volume that encompasses a portion... of the objects (e.g., primitives) in the scene. The traversal of the BVH may proceed from the internal node(s) to a leaf node of the BVH... When traversing the BVH from a first node to a second node in the BVH for a given ray, the apparatus may determine whether the given ray intersects a volume corresponding to the second node... If the given ray does not intersect the volume corresponding to the second node, the apparatus may cease traversal of the BVH... If the given ray intersects the volume corresponding to the second node, the apparatus may take one of two actions. First, if the second node is an intermediate node, the apparatus may continue traversal of the BVH from the second node... Second, if the second node is a leaf node and if the given ray intersects a volume associated with the leaf node, the apparatus may determine intersection information (i.e., coordinates of the intersection of the ray with the object (e.g., the primitive)).”; Saucedo, [0072], Fig. 7A)
Fig. 7A illustrates that BVH traversal begins from the top-level node (which includes all of the objects in the scene) and proceeds to the second nodes, each of which corresponds to a portion of the objects in the scene. When traversing the BVH from a first node to a second node, the apparatus determines whether the ray intersects a volume corresponding to the second node. If the ray intersects the volume of the second node and the second node is a leaf node, the apparatus determines intersection information such as, coordinates of the intersection of the ray with the object (determining whether a volume represented by the top-level acceleration structure (TLAS) falls within a region of the render output). Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Obert by adding the feature of determining which sets of geometry should be further processed for which region or regions of the plurality of regions into which the render output has been divided for rendering comprises determining whether a volume represented by the top-level acceleration structure (TLAS) falls within a region of the render output, in order to improve the speed of BVH traversals of first-hit rays, which improve performance of ray tracing workloads, as taught by Saucedo ([0035]).
Re: claims 8 and 18 (which are rejected under the same rationale), Obert Ramesh and Saucedo teach,
8. The method of claim 7, wherein the determining which sets of geometry should be further processed for which region or regions of the plurality of regions into which the render output has been divided for rendering does not use any bottom-level acceleration structures (BLAS) of the bounding volume hierarchy tree data structure. (“... the apparatus may begin a BVH traversal from a root node of the BVH... The root node (i.e., a top-level node) of the BVH may be a node in the BVH that has no incoming edges. The root node may correspond to a volume that encompasses all objects (e.g., all primitives) in a scene. The traversal of the BVH may proceed from the root node to internal node(s)... of the BVH. An internal node may correspond to a volume that encompasses a portion... of the objects (e.g., primitives) in the scene. The traversal of the BVH may proceed from the internal node(s) to a leaf node of the BVH... When traversing the BVH from a first node to a second node in the BVH for a given ray, the apparatus may determine whether the given ray intersects a volume corresponding to the second node... If the given ray does not intersect the volume corresponding to the second node, the apparatus may cease traversal of the BVH.”; Saucedo, [0072])
Fig. 7A illustrates that BVH traversal begins from the top-level node (which includes all of the objects in the scene) and proceeds to the second nodes, each of which corresponds to a portion of the objects in the scene. When traversing the BVH from a first node to a second node, the apparatus determines whether the ray intersects a volume corresponding to the second node. If the ray does not intersect the volume of the second node and the second node is a leaf node, the apparatus ceases traversal of the BVH (does not use any bottom-level acceleration structures (BLAS) of the bounding volume hierarchy tree data structure). Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Obert by adding the feature of determining which sets of geometry should be further processed for which region or regions of the plurality of regions into which the render output has been divided for rendering does not use any bottom-level acceleration structures (BLAS) of the bounding volume hierarchy tree data structure, in order to improve the speed of BVH traversals of first-hit rays, which improve performance of ray tracing workloads, as taught by Saucedo ([0035]).
Claim(s) 9 and 19 is/are rejected under 35 U.S.C. 103 as being unpatentable over Obert as applied to claims 1 and 11 above, and further in view of Uhrenholt et al. U.S. Pub. No. 2022/0319111.
Re: claims 9 and 19 (which are rejected under the same rationale), Obert is silent regarding processing the sets of geometry to generate a render output using tile-based rendering, wherein each of the regions that the render output was divided into for sorting is subdivided into a plurality of rendering tiles, each rendering tile representing a sub-area of the render output region, and wherein the rendering of a region comprises a step of preparing a set of one or more tile lists indicating which of the sets of geometry that have been indicated to be processed for the region should be processed for which of the rendering tiles, however, Uhrenholt teaches
9. The method of claim 1, comprising processing the sets of geometry to generate a render output using tile-based rendering, (“... a method of operating a graphics processor when generating a render output using tile based rendering, in which a plurality of tiles of a render output being generated separately, and the rendered tiles combined to form the render output...”; Uhrenholt, [0024])
A graphics processor generates render output using tile based rendering.
(“preparing one or more primitive lists for the render output, each primitive list listing primitives of a set of primitives to be processed for the render output to be processed for a respective region of the render output... The technology described herein relates to tile-based graphics processing in which primitive lists are prepared in order to identify primitives which are to be processed for regions of a render output.”; Uhrenholt, [0025], [0036])
Tile based rendering uses primitive lists for the render output, where each primitive list lists a set of primitives (sets of geometry to generate a render output) for each tile to be rendered.
wherein each of the regions that the render output was divided into for sorting is subdivided into a plurality of rendering tiles, each rendering tile representing a sub-area of the render output region, (“... the technology described herein relates to tile-based graphics processing, in which the render output... is divided into plural rendering tiles for rendering purposes... Each rendering tile should... span a (respective) sub-region (area) of the render output.”; Uhrenholt, [0043])
The render output is divided into plural tile for rendering, where each rendering tile spans a respective sub-region of the render output
(“... primitive lists are prepared, each primitive list identifying (listing) one or more primitives in which are to be processed for a respective region (area) of the render output in question... The regions for which primitive lists are prepared... encompass... one or more rendering tiles of the render output... a region for which a primitive list is prepared corresponds to one or more contiguous tiles...”; Uhrenholt, [0045], [0046])
Primitive lists are prepared, where each primitive list identifies primitives for a respective region (tile) to be processed for rendering.
(“To prepare the primitive lists, the (assembled) primitives are sorted (binned) into one or more primitive lists based on the region(s) of the render output which the primitive fall within.”; Uhrenholt, [0055])
To prepare primitive lists, the primitives are sorted (binned) into one or more primitive lists corresponding to the region(s) (tiles) that the primitives fall within.
and wherein the rendering of a region comprises a step of preparing a set of one or more tile lists indicating which of the sets of geometry that have been indicated to be processed for the region should be processed for which of the rendering tiles. (“After the primitive lists have been prepared, the primitive lists may be.. used for subsequent processing... The subsequent processing may comprise, for example, rendering... The subsequent processing for a... tile... comprises identifying a primitive list or lists relevant to the tile to be processed... and using the identified primitive list(s) when processing the tile.”; Uhrenholt, [0126], [0128])
After the primitive lists (tile lists), for each region (tile), have been prepared, the primitive lists are used for subsequent processing, which includes rendering. Therefore, it would have been obvious to one of ordinary skill in the art at the time of the effective filing date, to modify the method of Obert by adding the feature of processing the sets of geometry to generate a render output using tile-based rendering, wherein each of the regions that the render output was divided into for sorting is subdivided into a plurality of rendering tiles, each rendering tile representing a sub-area of the render output region, and wherein the rendering of a region comprises a step of preparing a set of one or more tile lists indicating which of the sets of geometry that have been indicated to be processed for the region should be processed for which of the rendering tiles, in order to identify those primitives that are actually present in a given rendering tile so as to avoid unnecessarily rendering primitives that are not actually present in a tile, as taught by Uhrenholt ([0012]).
Conclusion
Any inquiry concerning this communication or earlier communications from the examiner should be directed to DONNA J RICKS whose telephone number is (571)270-7532. The examiner can normally be reached on M-F 7:30am-5pm EST (alternate Fridays off).
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Devona Faulk can be reached on 571-272-7515. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of an application may be obtained from the Patent Application Information Retrieval (PAIR) system. Status information for published applications may be obtained from either Private PAIR or Public PAIR. Status information for unpublished applications is available through Private PAIR only. For more information about the PAIR system, see https://ppair-my.uspto.gov/pair/PrivatePair. Should you have questions on access to the Private PAIR system, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative or access to the automated information system, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/Donna J. Ricks/Examiner, Art Unit 2618
/DEVONA E FAULK/Supervisory Patent Examiner, Art Unit 2618