IP Library Granted Patent US 11,429,690
Granted Patent B2
US 11,429,690 · App. 17/067,512 · Granted Aug 30, 2022

Interactive path tracing on the web

Inventors: Francisco Avila (San Francisco, CA); Lucas Crane (San Francisco, CA); Abhishek Tripathi (San Francisco, CA)
Assignee: HOVER, INC.
G06F16/9577G06T1/20G06T15/005G06T15/08G06T15/50G06T17/10G06T17/205H04L67/02
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 11,429,690
App. No.
17/067,512
Granted
Aug 30, 2022
Kind
B2
Abstract

A method renders photorealistic images in a web browser. The method is performed at a computing device having a general purpose processor and a graphics processing unit (GPU). The method includes obtaining an environment map and images of an input scene. The method also includes computing textures for the input scene including by encoding an acceleration structure of the input scene. The method further includes transmitting the textures to shaders executing on a GPU. The method includes generating samples of the input scene, by performing at least one path tracing algorithm on the GPU, according to the textures. The method also includes lighting or illuminating a sample of the input scene using the environment map, to obtain a lighted scene, and tone mapping the lighted scene. The method includes drawing output on a canvas, in the web browser, based on the tone-mapped scene to render the input scene.

Claims (53)

1. A method of rendering photorealistic images in a web browser, the method performed in a computing device having a general purpose processor and a graphics processing unit (GPU), the method comprising:

obtaining an environment map that includes illumination values, positional vectors and transforms of a plurality of objects in an environment;

obtaining at least one image of an input scene;

computing textures for the input scene including by encoding, as part of the textures, an acceleration structure of the input scene;

transmitting the textures to one or more shaders executing on a GPU;

generating, on the GPU, samples of the input scene, by performing at least one path tracing algorithm in the one or more shaders according to the textures;

lighting or illuminating, on the GPU, a respective sample of the input scene using the environment map, to obtain a lighted scene;

tone mapping the lighted scene to obtain a tone-mapped scene; and

drawing output on a canvas, in the web browser, based on the tone-mapped scene to render the input scene.

2. The method of claim 1 , wherein the at least one image is derived from at least one aerial image or oblique capture.

3. The method of claim 2 , wherein the at least one image is obtained from a camera that is configured as a perspective camera that models a thin lens to produce a photorealistic depth-of-field effect of the input scene.

4. The method of claim 1 , wherein the acceleration structure is a bounding volume hierarchy (BVH).

5. The method of claim 1 , further comprising, prior to computing textures for the input scene, obtaining and substituting a 3D model for an object of the plurality of objects in the input scene.

6. The method of claim 1 , further comprising:

obtaining a first image and a second image of the input scene;

determining if a mesh in the input scene changed between the first image and the second image of the input scene; and

in accordance with a determination that a mesh in the input scene changed, regenerating the acceleration structure of the input scene using the second image.

7. The method of claim 1 , wherein the encoding of the acceleration structure is limited to static geometry based on size of the input scene and hardware capabilities of the general purpose processor.

8. The method of claim 1 , wherein the at least one path tracing algorithm includes a cumulative distribution function of the environment map.

9. The method of claim 8 , wherein the lighting or illumination multiple importance samples the input scene using the cumulative distribution function of the environment map averaged with a bidirectional reflectance distribution function of a material of the input scene.

10. The method of claim 1 , further comprising selecting a material for the input scene including specifying a level of refraction for the material, and sending data corresponding to the material along with the texture to the one or more shaders executing on the GPU, thereby causing the one or more shaders to utilize the data corresponding to the material while generating samples of the input scene.

11. The method of claim 10 , wherein the material is a surface material and is represented using property maps that include at least one of: diffuse maps that control reflective color of the material, normal maps that perturbs a normal vector to the surface, and roughness and metalness maps describing texture of the surface.

12. The method of claim 10 , wherein the material is a surface material that is represented using an artist-tailored BRDF.

13. The method of claim 10 , wherein the material is a glass material that realistically reflects and refracts light.

14. The method of claim 1 , wherein the at least one path tracing algorithm iteratively renders samples of the input scene.

15. The method of claim 14 , further comprising, in accordance with a determination that a user has performed a predetermined action, causing the one or more shaders to pause the at least one path tracing algorithm.

16. The method of claim 14 , wherein the at least one path tracing algorithm averages each generated sample with previously generated samples.

17. The method of claim 14 , further comprising, in accordance with a determination that the scene has changed, causing the one or more shaders to pause the at least one path tracing algorithm.

18. The method of claim 1 , wherein the at least one path tracing algorithm is implemented in WebGL, the method further comprising, causing the one or more shaders to rasterize a full-screen quad to the screen prior to executing the at least one path tracing algorithm, and using a fragment shader to execute the at least one path tracing algorithm for the full-screen quad to output one or more pixels to a framebuffer.

19. The method of claim 1 , wherein each sample is rendered to an internal buffer.

20. The method of claim 1 , wherein computing the textures for the input scene is performed on the general purpose processor and the computing device is a low-power device that does not have a high-speed Internet connection.

21. A computer system for rendering photorealistic images in a web browser, comprising:

one or more processors, including a general purpose processor and a graphics processing unit (GPU);

a display; and

memory;

wherein the memory stores one or more programs configured for execution by the one or more processors, and the one or more programs comprising instructions for:

obtaining an environment map that includes illumination values, positional vectors and transforms of a plurality of objects in an environment;

obtaining at least one image of an input scene;

computing textures for the input scene including by encoding, as part of the textures, an accelerations structure of the input scene;

transmitting the textures to one or more shaders executing on a GPU;

generating, on the GPU, samples of the input scene, by performing at least one path tracing algorithm in the one or more shaders according to the textures;

lighting or illuminating, on the GPU, a respective sample of the input scene using the environment map, to obtain a lighted scene;

tone mapping the lighted scene to obtain a tone-mapped scene; and

drawing output on a canvas, in the web browser, based on the tone-mapped scene to render the input scene.

22. A non-transitory computer readable storage medium storing one or more programs configured for execution by a computer system having a display, one or more processors including a general purpose processor and a graphical processing unit (GPU), the one or more programs comprising instructions for:

obtaining an environment map that includes illumination values, positional vectors and transforms of a plurality of objects in an environment;

obtaining at least one image of an input scene;

computing textures for the input scene including by encoding, as part of the textures, an acceleration structure of the input scene;

transmitting the textures to one or more shaders executing on a GPU;

generating, on the GPU, samples of the input scene, by performing at least one path tracing algorithm in the one or more shaders according to the textures;

lighting or illuminating, on the GPU, a respective sample of the input scene using the environment map, to obtain a lighted scene;

tone mapping the lighted scene to obtain a tone-mapped scene; and

drawing output on a canvas, in a web browser, based on the tone-mapped scene to render the input scene.

Assignments (5)
TERMINATION OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Oct 6, 2022
From: SILICON VALLEY BANK
To: HOVER INC.
Reel/Frame 061622/0741 →
TERMINATION OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Oct 6, 2022
From: SILICON VALLEY BANK, AS AGENT
To: HOVER INC.
Reel/Frame 061622/0761 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded May 28, 2021
From: HOVER INC.
To: SILICON VALLEY BANK
Reel/Frame 056423/0199 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded May 28, 2021
From: HOVER INC.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 056423/0222 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 9, 2020
From: CRANE, LUCAS; AVILA, FRANCISCO; TRIPATHI, ABHISHEK
To: HOVER, INC.
Reel/Frame 054021/0735 →
Continuity (3)
Provisional Application 63067249 · Aug 18, 2020
Provisional Application 62913663 · Oct 10, 2019
Related Publication 20210109987A1 · Apr 15, 2021
Cited By (1)
US 12,235,925