Patent Drafting Analysis of NVIDIA Corporation’s Ray-Traced Light Resampling Using Screen Space Visibility | US 11,922,556 B2
Patent Drafting Analysis of NVIDIA Corporation's Ray-Traced Light Resampling Using Screen Space Visibility | US 11,922,556 B2
A structural and strategic analysis of US 11,922,556 B2 examining claim architecture, drafting quality, critical gaps, and prosecution positioning for NVIDIA's ReSTIR visibility parameter reuse rendering technology.
Structural Overview
The detailed description dominates at approximately 71% of total specification words (~14,200 of ~18,400), providing extensive GPU and software stack context that, while thorough for enablement, devotes substantial real estate to generic hardware descriptions unrelated to the core inventive concept. The claim architecture comprises 27 claims across three independent claims (Claims 1, 13, and 20) covering method, system, and CRM formats, with a dependent-to-independent ratio of 8:1. The 44 drawing sheets include both the core rendering method figures (FIGS. 1–6) and a very large set of generalized GPU architecture figures (FIGS. 7–38) that provide broad hardware context but add limited specific support for the novel visibility-reuse limitations.
Section Word Distribution
↗ Click bars to exploreFigure Inventory — 44 Sheets
| Figure | Description | Role |
|---|---|---|
| FIG. 1 | Block diagram of a computing system 100 with computing device 102, memory 106 storing instructions 104, 3D geometry module 108, image rendering module 110, and reservoirs 112.Search in Eureka ↗ | Key embodiment |
| FIG. 2A | Example virtual camera 208 capturing image of scene 200 with surface 202, objects 203/204, and multiple light sources 206A-206C projecting onto pixel grid 220.Search in Eureka ↗ | Key embodiment |
| FIG. 2B | Light sources shining light on intersection point 212 on surface 202 that is reflected toward virtual camera 208, illustrating initial light sample directions A1–A4.Search in Eureka ↗ | Key embodiment |
| FIG. 2C | Final visibility rays A1 and A4 shining light on intersection point 212 after occlusion testing, illustrating the third ReSTIR stage with selected final visibility rays.Search in Eureka ↗ | Claim support |
| FIG. 3 | Flow diagram of method 300 showing pixel-level rendering loop: receive 3D geometry, identify frame, select pixel/create reservoir, generate primary ray, generate/select light samples, check for neighbors, trace final visibility rays, store visibility parameters/age/distance, shade pixel, check for last pixel/frame.Search in Eureka ↗ | Flow diagram |
| FIG. 4 | Two successive frames 220 and 420 showing pixel 222 moving to pixel 422 and corresponding reservoirs 400, 424, and 434 with data fields: relevant samples 402, statistical info 404, visibility parameters 410, age 412, and distance 414.Search in Eureka ↗ | Claim support |
| FIG. 5 | Flow diagram of method 500 for neighboring reservoir processing: combine neighboring reservoirs, store final relevant light samples, obtain visibility parameters and age/distance values, evaluate age threshold (block 508) and distance threshold (block 510), then copy visibility parameters or trace new final visibility rays and store results.Search in Eureka ↗ | Flow diagram |
| FIG. 6 | Experimental output comparing raw sample images versus 1000+ accumulated frames at 0.1, 0.3, and 0.95 rays per pixel, demonstrating image quality improvements of method 300.Search in Eureka ↗ | Other |
| FIG. 7 | Exemplary data center 700 architecture with infrastructure layer 710, framework layer 720 (job scheduler 732, configuration manager 734, resource manager 736, distributed file system 738), software layer 730, and application layer 740.Search in Eureka ↗ | System architecture |
| FIG. 8 | Processing system 800 block diagram showing processor 802, graphics processor 808, memory device 820, external graphics processor 812, display device 811, platform controller hub 830, and various I/O controllers.Search in Eureka ↗ | System architecture |
| FIG. 9 | Computer system 900 block diagram with processor 910, display 924, touch screen 925, GPS 955, WWAN unit 956, WLAN unit 950, Bluetooth 952, SSD 920, and numerous sensors and I/O components.Search in Eureka ↗ | System architecture |
| FIG. 10 | System 1000 block diagram with processor 1010, memory controller hub 1016, graphics/video card 1012, I/O controller hub 1030, data storage 1024, wireless transceiver 1026, and network controller 1034.Search in Eureka ↗ | System architecture |
| FIG. 11 | Exemplary integrated circuit 1100 showing application processors 1105, graphics processor 1110, image processor 1115, video processor 1120, memory 1165, and various peripheral interface controllers including USB, UART, and HDMI.Search in Eureka ↗ | System architecture |
| FIG. 12 | Computing system 1200 with processing subsystem 1201 containing processors 1202, memory hub 1205, I/O subsystem 1211, parallel processors 1212, and display devices 1210A/B via I/O switch 1216.Search in Eureka ↗ | System architecture |
| FIG. 13 | AMD accelerated processing unit (APU) 1300 with core complex 1310, graphics complex 1340 (SIMD units 1352, shared memory 1354), fabric 1360, I/O interfaces 1370, memory controllers 1380, display controller 1392, and multimedia engine 1394.Search in Eureka ↗ | System architecture |
| FIG. 14 | AMD CPU 1400 showing core complexes 1410(1)-(N), core 1420 with fetch/decode unit 1422, integer execution engine 1424, floating point execution engine 1426, L2/L3 caches, fabric 1460, I/O interfaces 1470, and system memory 1490.Search in Eureka ↗ | System architecture |
| FIG. 15 | Exemplary accelerator integration slice 1590 showing processor 1507, system memory 1514 with application effective address space 1582 and OS virtual address space 1585, and graphics acceleration module 1546 with MMU 1539 and interrupt management 1547.Search in Eureka ↗ | System architecture |
| FIG. 16A | Graphics processor 1610 of SoC type with vertex processor 1605, multiple fragment processors 1615A-1615N, MMUs 1620A/B, caches 1625A/B, and circuit interconnects 1630A/B.Search in Eureka ↗ | System architecture |
| FIG. 16B | Higher-performance graphics processor 1640 featuring inter-core task manager 1645, multiple shader cores 1655A-1655N, tiling unit 1658, MMUs 1620A/B, caches 1625A/B, and interconnects 1630A/B.Search in Eureka ↗ | System architecture |
| FIG. 17A | Graphics core 1700 with shared instruction cache 1702, texture unit 1718, slices 1701A-1701N each containing instruction cache, thread scheduler, thread dispatcher, registers, and execution units (AFU, FPU, ALU, ACU, DPFPU, MPU), plus cache/shared memory 1720.Search in Eureka ↗ | System architecture |
| FIG. 17B | General-purpose graphics processing unit (GPGPU) 1730 with host interface 1732, global scheduler 1734, compute clusters 1736A-1736H, cache memory 1738, memory controllers 1742A/B, memory 1744A/B, I/O hub 1739, and GPU link 1740.Search in Eureka ↗ | System architecture |
| FIG. 18A | Parallel processor 1800 architecture with parallel processing unit 1802 containing I/O unit 1804, front end 1808, scheduler 1810, processing array 1812 (clusters 1814A-1814N), memory crossbar 1816, memory partition units 1820A-1820N, and parallel processor memory 1822.Search in Eureka ↗ | System architecture |
| FIG. 18B | Processing cluster 1894 showing pipeline manager 1832, graphics multiprocessor 1834, texture unit 1836, raster engine 1408, PROP unit 2404, data crossbar 1840, preROP 1842, MMU 1845, and L1 cache 1848.Search in Eureka ↗ | System architecture |
| FIG. 18C | Graphics multiprocessor 1896 internals: instruction cache 1852, instruction unit 1854, address mapping unit 1856, register file 1858, GPGPU cores 1862, LSUs 1866, memory and cache interconnect 1868, shared memory 1870, and cache memory 1872.Search in Eureka ↗ | System architecture |
| FIG. 19 | Graphics processor 1900 showing ring interconnect 1902, pipeline front-end 1904, media engine 1937, and graphics cores 1980A-1980N each with sub-cores 1950A/1960A and shared resources 1970A including execution units and samplers.Search in Eureka ↗ | System architecture |
| FIG. 20 | Processor 2000 out-of-order execution engine 2003 with front end 2001, allocator/register renamer 2040, fast/slow schedulers, integer and FP register file/bypass networks 2008/2010, and execution block 2011 with AGUs, ALUs, FP units.Search in Eureka ↗ | System architecture |
| FIG. 21 | Processor 2100 with cores 2102A-2102N, integrated graphics processor 2108, cache units 2104A-2104N, shared cache units 2106, ring 2112, system agent core 2110 with display/memory controllers, I/O 2113, and embedded memory module 2118.Search in Eureka ↗ | System architecture |
| FIG. 22 | Graphics processor core 2200 showing graphics SoC interface 2237, graphics microcontroller 2238, fixed function block 2230 with geometry/fixed function pipeline 2236, sub-cores 2201A-2201F each with EU arrays, 3D samplers, TD/IC logic, media samplers, shader processors, and SLM.Search in Eureka ↗ | System architecture |
| FIG. 23 | Parallel processing unit (PPU) 2300 with I/O unit 2306, front-end unit 2310, scheduler unit 2312, work distribution unit 2314, hub 2316, general processing clusters (GPC(X)) 2318, crossbar (Xbar) 2320, memory partition units 2322, and memory 2304.Search in Eureka ↗ | System architecture |
| FIG. 24 | General processing cluster (GPC) 2400 with pipeline manager 2402, PROP unit 2404, raster engine 2408, DPC(V) 2406 containing primitive engine 2412 and streaming multiprocessor (SM) 2414, work distribution crossbar (WDX) 2416, and MMU 2418.Search in Eureka ↗ | System architecture |
| FIG. 25 | Streaming multiprocessor (SM) 2500 showing instruction cache 2502, scheduler units 2504 with dispatch 2506, register file 2508, processing cores 2510, SFUs 2512, LSUs 2514, interconnect network 2516, and shared memory/L1 cache 2518.Search in Eureka ↗ | System architecture |
| FIG. 26 | Software stack 2600 architecture with application 2601, APIs/libraries 2602/2603, runtime 2605 with API(s) 2604, device kernel driver 2606, and hardware 2607 showing programming platform layering.Search in Eureka ↗ | Other |
| FIG. 27 | CUDA software stack 2700 implementation of FIG. 26 with application 2701, CUDA APIs 2702, CUDA libraries 2703, CUDA runtime API 2704, CUDA runtime 2705, CUDA driver API 2706, CUDA driver 2707, device kernel driver 2708, and hardware 2709.Search in Eureka ↗ | Other |
| FIG. 28 | ROCm software stack 2800 implementation with application 2801, language runtime 2803, ROCr system runtime API 2804, ROCm thunk API 2806, thunk 2807, ROCm driver 2808, and hardware 2809.Search in Eureka ↗ | Other |
| FIG. 29 | OpenCL software stack 2900 with application 2901, OpenCL kernel 2902, OpenCL framework 2910 (platform API 2903, compiler 2904), OpenCL runtime 2906 with runtime API 2905, device kernel driver 2907, and hardware 2908.Search in Eureka ↗ | Other |
| FIG. 30 | Software layers supported by programming platform 3004 including multiple frameworks 3001(1-N), middleware/library layers 3002(1-M), and programming models 3003(1-O) built on programming platform 3004.Search in Eureka ↗ | Other |
| FIG. 31 | Compiling code on programming platforms showing source code 3100 fed to compiler 3101 producing host executable code 3102 and device executable code 3103.Search in Eureka ↗ | Other |
| FIG. 32 | Detailed compilation flow 3201 with compiler front end 3202 splitting source code 3200 into host code 3203 and device code 3204, compiled separately by host compiler 3205 and device compiler 3206, linked by linker 3209 into executable file 3210.Search in Eureka ↗ | Other |
| FIG. 33 | Source code translation flow: source code 3300 through translation tool 3301 to translated source code 3302, then compiler 3303 to host executable code 3304 and device executable code 3305.Search in Eureka ↗ | Other |
| FIG. 34A | System 3400 for compiling and executing CUDA source code 3410 showing CUDA-to-HIP translation tool 3420, HIP source code 3430, HIP compiler driver 3440, CUDA compiler 3450, and HCC 3460 producing host and device executables for CPU 3490 and CUDA/HCC GPUs.Search in Eureka ↗ | Other |
| FIG. 34B | System 3404 configured to compile CUDA source code using CPU 3490 and CUDA-enabled GPU 3494, with HIP/NVCC compilation path through CUDA compiler 3450 using HIP-to-CUDA translation header 3452.Search in Eureka ↗ | Other |
| FIG. 34C | System 3406 for compiling CUDA source code using CPU 3490 and non-CUDA-enabled GPU 3492, with HIP/HCC compilation path through HCC 3460 using HCC header 3456 and HIP/HCC runtime library 3458.Search in Eureka ↗ | Other |
| FIG. 35 | Exemplary CUDA source code 3410 kernel MatAdd and main function alongside HIP source code 3430 equivalent after CUDA-to-HIP translation, illustrating hipLaunchKernelGGL syntax versus CUDA triple-chevron syntax.Search in Eureka ↗ | Other |
| FIG. 36 | Non-CUDA-enabled GPU 3492 with command processor 3610, programmable processing units 3620(1/E) each containing workload manager 3630 and compute units 3640 with SIMD units 3650 and shared memory 3660, plus DMA engines 3680 and memory controllers 3670.Search in Eureka ↗ | System architecture |
| FIG. 37 | CUDA grid 3720 thread mapping showing thread blocks 3730(BX,BY) with threads 3740 mapped to compute units 3640(1) and 3640(2) of programmable processing unit 3620(1), illustrating SIMD execution model.Search in Eureka ↗ | Other |
| FIG. 38 | CUDA-to-DPC++ code migration workflow: CUDA source code 3800 through DPC++ compatibility tool 3802 to human readable DPC++ 3804, then complete coding and tune to desired performance 3806, yielding DPC++ source code 3808.Search in Eureka ↗ | Other |
Claim Architecture Analysis
The patent contains 3 independent claims: Claim 1 (computer-implemented method), Claim 13 (system), and Claim 20 (non-transitory machine-readable medium/CRM), providing the standard tripartite enforcement structure across all major claim types. With 24 dependent claims across 3 independent claims, the dependent-to-independent ratio of 8:1 is above average for the G06T software/graphics class (industry norm: 4–6:1), indicating above-norm fallback depth. Claims 2–12 depend from Claim 1, Claims 14–19 depend from Claim 13, and Claims 21–27 depend from Claim 20, creating three parallel claim families that mirror each other, raising strategic efficiency concerns about claim differentiation.
Independent Claim Dissection
| Claim | Preamble | Transition | Key Body Elements |
|---|---|---|---|
| Claim 1 | A computer-implemented method | comprising | computing first lighting effects for first image region using at least one visibility parameter based on at least one final visibility ray traced from light samples obtained by ray tracing initial visibility rays; computing second lighting effects for second image region based at least in part on the at least one visibility parameter, the second image region neighboring the first image region at least one of spatially or temporallySearch prior art ↗ |
| Claim 13 | A system | comprising | one or more processors; one or more memories storing instructions causing processors to: obtain light samples at least in part by ray tracing first rays; trace a second ray from a point on a surface visible in first image region to a selected light sample (second ray being more computationally costly than at least one first ray); determine at least one visibility parameter indicating light contribution; determine second amount of light for second image region based on the visibility parameter, second image region neighboring first image region spatially or temporallySearch prior art ↗ |
| Claim 20 | A non-transitory machine-readable medium having stored thereon a set of instructions, which if performed by one or more processors, cause the one or more processors to | at least: | determine second amount of light for second image region based at least in part on at least one visibility parameter determined for first image region using at least one first ray traced from light samples obtained using second rays (first ray being of higher quality than second rays); visibility parameter indicating first amount of light from light samples to apply to first image region; second image region neighboring first image region at least one of spatially or temporallySearch prior art ↗ |
Claim Dependency Tree
| Metric | This Application | Software / GPU / Graphics Norm |
|---|---|---|
| Total claims | 27 | 15 – 25 |
| Independent claim count | 3 | 2 – 4 |
| Dependent : Independent ratio | 8.00 : 1 | 4 – 7 : 1 |
| Method claims present? | Yes — Claim 1 | Always |
| System / apparatus claims? | Yes — Claim 13 | Common |
Drafting Quality Signals
The patent's strongest drafting feature is its consistent tripartite claim coverage across method (Claim 1), system (Claim 13), and CRM (Claim 20) formats, providing enforcement flexibility across hardware vendors and software licensees. However, the three independent claims diverge in their characterization of the core concept — Claim 1 uses "first amount of light" and "second amount of light" language, while Claim 13 introduces "more computationally costly" language not present in Claim 1, and Claim 20 frames the quality hierarchy differently again — creating potential inconsistency vulnerabilities during prosecution or litigation.
Strategic Intent Scorecard
Multi-dimensional assessment of this application's patent strategy quality, based on claim structure, specification depth, and prosecution positioning.
3 Critical Gaps in This Claim Set
A senior-attorney lens on the three highest-priority structural weaknesses — what each exposes in prosecution and litigation, and what a stronger filing would have done differently.
3 Critical Gaps in This Claim Set
See the full attorney-level analysis of what this application leaves unprotected — and how to draft it more defensively for your own filings.
US 11,922,556 B2 — key questions answered
Disclaimer: This analysis is generated by PatSnap Eureka AI based on publicly available patent data from the USPTO. It does not constitute legal advice and should not be relied upon as such. Patent data may be subject to change as prosecution progresses. Scores and assessments reflect automated analysis and may not capture all relevant legal or technical nuances. Always consult a qualified patent attorney for formal legal opinions on patentability, freedom to operate, or infringement.
PatSnap Eureka searches patents and data to answer instantly.