IP Library Granted Patent US 12,307,608
Granted Patent B2
US 12,307,608 · App. 17/982,501 · Granted May 20, 2025

Efficient GPU/CPU pipeline for providing augmented reality content

Inventors: Erik Murphy-Chutorian (Palo Alto, CA); Nicholas Butko (Cupertino, CA); Rigel Gareth Benton (Mountain View, CA); Dat Chu (San Francisco, CA); Scott Pollack (San Francisco, CA); Alvin Portillo (San Francisco, CA)
Assignee: Niantic, Inc.
G06T19/006G06T7/246G06T15/005
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,307,608
App. No.
17/982,501
Granted
May 20, 2025
Kind
B2
Abstract

Implementations generally relate to providing augmented reality in a web browser. In one implementation, a method includes capturing images of a physical scene with a camera of a device. The method further includes determining motion of the camera using six degrees of freedom (6DoF) markerless tracking. The method further includes overlaying virtual three-dimensional (3D) content onto a depicted physical scene in the images, resulting in augmented reality (AR) images. The method further includes rendering the AR images in a browser of the device.

Claims (52)

1. A method for providing Augmented Reality (AR) content, the method comprising:

receiving images of a physical scene captured by a camera of a device;

processing the images in a pipeline to generate AR images, wherein each image is processed by a graphics processing unit (GPU) before being processed by a central processing unit (CPU) while the GPU is processing a subsequent image, the processing of each image including:

computing, by the GPU, feature points of the image from one or more real-world objects in the physical scene;

transmitting the feature points from the GPU to the CPU;

determining, by the CPU, changes in a position and an orientation of the camera using the feature points;

transmitting the changes in the position and the orientation of the camera from the CPU to the GPU;

overlaying, by the GPU, virtual content onto the physical scene depicted in the image using the changes in the position and the orientation of the camera, resulting in an AR image, following computing, by the GPU, the features points of the subsequent image with a timestamp subsequent to a timestamp of the image; and

generating, by the GPU, one or more buffer frames based on the image and by interpolating feature points from at least one other processed image; and

providing the AR images and the buffer frames to be displayed, wherein the buffer frames are interlaced between the AR images.

2. The method of claim 1 , wherein the processing is performed based on a web application, and wherein the web application is based at least in part on C++ code that is revised to optimize performance of generated JavaScript.

3. The method of claim 1 , wherein the processing is performed using a predetermined subset of JavaScript transpiled or compiled from source code of another programming language.

4. The method of claim 1 , further comprising switching between different computation pipelines based on one or more of device characteristics or runtime performance evaluation.

5. The method of claim 1 , wherein the feature points are extracted using a shader executing on the GPU.

6. The method of claim 1 , wherein the AR images are provided to a browser executing on the device for display within the browser.

7. The method of claim 1 , further comprising performing multithread execution of JavaScript.

8. The method of claim 7 , wherein performing the multithread execution comprises:

executing, by the CPU, a first JavaScript operation in a main thread;

executing, by the CPU, one or more second JavaScript operations in one or more background threads, wherein the main thread and the one or more background threads are performed asynchronously.

9. The method of claim 1 , further comprising:

accessing from the device one or more of sensor data, camera image data, or inertial measurements using web frameworks; and

rendering the AR images based on at least one of the sensor data, the camera image data, or the inertial measurements.

10. The method of claim 1 , further comprising:

obtaining camera data from a device library;

parsing the camera data; and

determining one or more intrinsic parameters of the camera from the camera data, wherein the one or more intrinsic parameters include at least one of a field of view, a principal point, or distortion parameters.

11. A non-transitory computer-readable medium comprising instructions for providing Augmented Reality (AR) content, the instructions, when executed by a computing system, causing the computing system to perform operations including:

receiving images of a physical scene captured by a camera of a device;

processing the images in a pipeline to generate AR images, wherein each image is processed by a graphics processing unit (GPU) before being processed by a central processing unit (CPU) while the GPU is processing a subsequent image, the processing of each image including:

computing, by the GPU, feature points of the image from one or more real-world objects in the physical scene;

transmitting the feature points from the GPU to the CPU;

determining, by the CPU, changes in a position and an orientation of the camera using the feature points;

transmitting the changes in the position and the orientation of the camera from the CPU to the GPU;

overlaying, by the GPU, virtual content onto the physical scene depicted in the image using the changes in the position and the orientation of the camera, resulting in an AR image, following computing, by the GPU, the features points of the subsequent image with a timestamp subsequent to a timestamp of the image; and

generating, by the GPU, one or more buffer frames based on the image and by interpolating feature points from at least one other processed image; and

providing the AR images to be displayed and the buffer frames to be displayed, wherein the buffer frames are interlaced between the AR images.

12. The non-transitory computer-readable medium of claim 11 , wherein the processing is performed based on a web application, and wherein the web application is based at least in part on C++ code that is revised to optimize performance of generated JavaScript.

13. The non-transitory computer-readable medium of claim 11 , wherein the processing is performed using a predetermined subset of JavaScript transpiled or compiled from source code of another programming language.

14. The non-transitory computer-readable medium of claim 11 , wherein the operations further comprise switching between different computation pipelines based on one or more of device characteristics or runtime performance evaluation.

15. The non-transitory computer-readable medium of claim 11 , wherein the feature points are extracted using a shader executing on the GPU.

16. The non-transitory computer-readable medium of claim 11 , wherein the AR images are provided to a browser executing on the device for display within the browser.

17. The non-transitory computer-readable medium of claim 11 , wherein the operations further comprise performing multithread execution of JavaScript.

18. The non-transitory computer-readable medium of claim 17 , wherein performing the multithread execution comprises:

executing, by the CPU, a first JavaScript operation in a main thread;

executing, by the CPU, one or more second JavaScript operations in one or more background threads, wherein the main thread and the one or more background threads are performed asynchronously.

19. The non-transitory computer-readable medium of claim 11 , wherein the operations further comprise:

accessing from the device one or more of sensor data, camera image data, or inertial measurements using web frameworks; and

rendering the AR images based on at least one of the sensor data, the camera image data, or the inertial measurements.

20. The non-transitory computer-readable medium of claim 11 , wherein the operations further comprise:

obtaining camera data from a device library;

parsing the camera data; and

determining one or more intrinsic parameters of the camera from the camera data, wherein the one or more intrinsic parameters include at least one of a field of view, a principal point, or distortion parameters.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2025
From: NIANTIC, INC.
To: NIANTIC SPATIAL, INC.
Reel/Frame 071555/0833 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 16, 2023
From: MURPHY-CHUTORIAN, ERIK; BUTKO, NICHOLAS; BENTON, RIGEL; CHU, DAT; POLLACK, SCOTT; PORTILLO, ALVIN
To: 8TH WALL INC.
Reel/Frame 064614/0966 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 16, 2023
From: 8TH WALL, INC.; 8TH WALL, LLC
To: NIANTIC, INC.
Reel/Frame 064614/0970 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 3, 2023
From: 8TH WALL, INC. AND 8TH WALL LLC
To: NIANTIC, INC.
Reel/Frame 063525/0412 →
Continuity (2)
Continuation 16124124 · Sep 6, 2018
Related Publication 20230206565A1 · Jun 29, 2023
References Cited (25)
US 6636214B1 · Leather · 2003 [cited by examiner]
US 20130187947A1 · Barringer et al. · 2013 [cited by applicant]
US 20130245429A1 · Zhang · 2013 [cited by examiner]
US 20150178939A1 · Bradski et al. · 2015 [cited by applicant]
US 20170243352A1 · Kutliroff et al. · 2017 [cited by applicant]
US 20170243403A1 · Daniels et al. · 2017 [cited by applicant]
US 20180047332A1 · Kuwahara · 2018 [cited by examiner]
US 20180114372A1 · Nagy et al. · 2018 [cited by applicant]
US 20180262713A1 · Huang · 2018 [cited by examiner]
US 20180293802A1 · Hendricks et al. · 2018 [cited by applicant]
US 20180365871A1 · Nahman · 2018 [cited by examiner]
US 20190005602A1 · Storey et al. · 2019 [cited by applicant]
US 20190088027A1 · Viseh · 2019 [cited by applicant]
Göttl, F. et al. “Efficient Pose Tracking from Natural Features in Standard Web Browsers.” Proceedings of the 23rd International ACM Conference on 3D Web Technology, arXiv:1804.08424v1, Apr. 23, 2018, pp. 1-4. [cited by applicant]
Lima, J., et al. “Markerless Tracking Solutions for Augmented Reality on the Web.” Proc. of IEEE Symposium on Virtual and Augmented Reality. 2010, pp. 1-8. [cited by applicant]
Millikin, K., “A New Crankshaft for VS,” Dec. 7, 2010, 4 pages, [Online] [Retrieved on Mar. 10, 2023] Retrieved from the Internet <URL:https://blog.chromium.org/2010/12/new-crankshaft-for-v8.html>. [cited by applicant]
Rister, B. et al. “A Fast and Efficient Sift Detector Using the Mobile GPU.” 2013 IEEE International Conference on Acoustics, Speech and Signal Processing, May 2013 pp. 2674-2678. [cited by applicant]
Schechter, S. “The Ultimate Guide to Markerless Augmented Reality?” AR Bites, May 9, 2014, 20 pages, [Online] Retrieved from the Internet <URL:www.marxentlabs.com/what-is-markerless-augmented-reality-dead-reckoning/>. [cited by applicant]
Taheri, S. et al., “Computer Vision for the Masses: Bringing Computer Vision to the Open Web Platform*,” EETimes, May 31, 2018, 14 pages, [Online] Retrieved from the Internet <URL: https://www.eetimes.com/computer-visio… [cited by applicant]
Zandaqo, M. D., “JavaScript. C++: Modern Ways to Use C++ in JavaScript Projects,” Sep. 17, 2017, 5 pages, [Online] [Retrieved on Mar. 10, 2023] Retrieved from the Internet <URL:https://medium.com/netscape/javascript-c-m… [cited by applicant]
United States Patent Office, U.S. Appl. No. 16/124,124, filed Jan. 26, 2022, 14 pages. [cited by applicant]
United States Patent Office, U.S. Appl. No. 16/124,124, filed Jul. 2, 2021, 12 pages. [cited by applicant]
United States Patent Office, U.S. Appl. No. 16/124,124, filed Dec. 1, 2020, 11 pages. [cited by applicant]
United States Patent Office, U.S. Appl. No. 16/124,124, filed Apr. 6, 2020, 13 pages. [cited by applicant]
United States Patent Office, U.S. Appl. No. 16/124,124, filed Nov. 6, 2019, 11 pages. [cited by applicant]