IP Library › Granted Patent US 10,867,434
Granted Patent B2
US 10,867,434 · App. 16/730,662 · Granted Dec 15, 2020

Variable rate shading

Inventors: Ivan Nevraev (Redmond, WA); Martin J. I. Fuller (Warwick, GB); Mark S. Grossman (Palo Alto, CA); Jason M. Gould (Woodinville, WA)
Assignee: Microsoft Technology Licensing, LLC
G06T15/80G06T11/40G06T15/005G06T15/04
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 10,867,434
App. No.
16/730,662
Granted
Dec 15, 2020
Kind
B2
Abstract

Methods and devices for rendering graphics in a computer system include a graphical processing unit (GPU) with a flexible, dynamic, application-directed mechanism for varying the rate at which fragment shading is performed for rendering an image to a display. In particular, the described aspects include determining, at a rasterization stage, map coordinates based on coarse scan converting a primitive of an object, the map coordinates indicating a location on a sampling rate parameter (SRP) map of a fragment within the primitive of the object, and identifying a lookup value for the fragment within the primitive of the object based at least on map coordinates, and calculating a respective fragment variable SRP value for the fragment within the primitive of the object based at least on the lookup value.

Claims (44)

1. A method of rendering graphics in a computer device, comprising:

receiving, by a graphics processing unit (GPU), at least one of a per-primitive shading rate parameter (SRP) or a SRP map from an application via an application programming interface (API);

determining, by the GPU, a fragment SRP value for a fragment within a primitive of an object based on one or both of the per-primitive shading rate parameter or the SRP map;

determining a number of samples for the fragment based on the fragment SRP value and a multi-sample antialiasing rate; and

shading, by the GPU, the fragment within the primitive of the object based on the fragment SRP value.

2. The method of claim 1 , further comprising:

determining one or more per vertex SRP values for one or more vertices within the fragment based on the per-primitive SRP; and

determining a look up value for the fragment based on the SRP map.

3. The method of claim 2 , wherein determining the fragment SRP value comprises selecting a maximum shading rate for the fragment from the one or more per vertex SRP values or the look up value.

4. The method of claim 2 , wherein determining the fragment SRP value comprises computing the fragment SRP value as a function of the one or more per vertex SRP values and the look up value for the fragment.

5. The method of claim 1 , wherein the shading comprises sending a coverage mask including a number of coverage bits corresponding to the number of samples to a shader thread.

6. The method of claim 1 , wherein the SRP map is bitmap indicating an absolute shading rate or shading rate change for one or more bits of screen or viewport coordinates.

7. The method of claim 1 , wherein determining the fragment SRP value based on the SRP map comprises:

determining, by the GPU, map coordinates for the primitive of the object, the map coordinates indicating a location on the SRP map of the fragment within the primitive of the object;

identifying, by the GPU, a lookup value for the fragment within the primitive of the object based at least on the map coordinates; and

calculating, by the GPU, the fragment SRP value for the fragment within the primitive of the object based at least on the lookup value.

8. A computer device, comprising:

a memory; and

a graphics processing unit (GPU) in communication with the memory, wherein the GPU is configured to:

receive at least one of a per-primitive shading rate parameter (SRP) or a SRP map from an application via an application programming interface (API);

determine a fragment SRP value for a fragment within a primitive of an object based on one or both of the per-primitive shading rate parameter or the SRP map;

determine a number of samples for the fragment based on the fragment SRP value and a multi-sample antialiasing rate; and

shade the fragment within the primitive of the object based on the fragment SRP value.

9. The computer device of claim 8 , wherein the GPU is further configured to:

determine one or more per vertex SRP values for one or more vertices within the fragment based on the per-primitive SRP; and

determine a look up value for the fragment based on the SRP map.

10. The computer device of claim 9 , wherein the GPU is configured to select a maximum shading rate for the fragment from the one or more per vertex SRP values or the look up value.

11. The computer device of claim 9 , wherein the GPU is configured to compute the fragment SRP value as a function of the one or more per vertex SRP values and the look up value for the fragment.

12. The computer device of claim 8 , wherein the GPU is configured to send a coverage mask including a number of coverage bits corresponding to the number of samples to a shader thread.

13. The computer device of claim 8 , wherein the SRP map is bitmap indicating an absolute shading rate or shading rate change for one or more bits of screen or viewport coordinates.

14. The computer device of claim 8 , wherein the GPU is configured to:

determine map coordinates for the fragment within the primitive of the object, the map coordinates indicating a location on the SRP map of the fragment within the primitive of the object;

identify a lookup value for the fragment within the primitive of the object based at least on the map coordinates; and

calculate the fragment SRP value for the fragment within the primitive of the object based at least on the lookup value.

15. A non-transitory computer-readable medium storing computer-executable instructions executable by a processor for rendering graphics in a computer device, comprising:

instructions for receiving, by a graphics processing unit (GPU), at least one of a per-primitive shading rate parameter (SRP) or a SRP map from an application via an application programming interface (API);

instructions for determining, by the GPU, a fragment SRP value for a fragment within a primitive of an object based on one or both of the per-primitive shading rate parameter or the SRP map;

instructions for determining a number of samples for the fragment based on the fragment SRP value and a multi-sample antialiasing rate; and

instructions for shading, by the GPU, the fragment within the primitive of the object based on the fragment SRP value.

16. The non-transitory computer-readable medium of claim 15 , further comprising:

instructions for determining one or more per vertex SRP values for one or more vertices within the fragment based on the per-primitive SRP;

instructions for determining a look up value for the fragment based on the SRP map; and instructions for computing the fragment SRP value as a function of the one or more per vertex SRP values and the look up value for the fragment.

17. The non-transitory computer-readable medium of claim 15 , further comprising instructions for sending a coverage mask including a number of coverage bits corresponding to the number of samples to a shader thread.

18. The non-transitory computer-readable medium of claim 15 , wherein the SRP map is bitmap indicating an absolute shading rate or shading rate change for one or more bits of screen or viewport coordinates.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 2, 2020
From: NEVRAEV, IVAN; FULLER, MARTIN J. I.; GROSSMAN, MARK S.; GOULD, JASON M.
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 051401/0904 →
Continuity (4)
Continuation 16178386 · Nov 1, 2018
Continuation 15629997 · Jun 22, 2017
Provisional Application 62460496 · Feb 17, 2017
Related Publication 20200134913A1 · Apr 30, 2020