IP Library Granted Patent US 9,881,391
Granted Patent B2
US 9,881,391 · App. 14/043,928 · Granted Jan 30, 2018

Procedurally defined texture maps

Inventors: Blake Pelton (Redmond, WA); Amar Patel (Kirkland, WA); Chas Boyd (Woodinville, WA)
Assignee: Microsoft Technology Licensing, LLC
G06T11/001G06T15/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 9,881,391
App. No.
14/043,928
Granted
Jan 30, 2018
Kind
B2
Abstract

A procedural texture relates texel coordinates to color values through an arbitrary function, herein called a texel shader. The procedural texture is defined by a dimension, size, texel format and the texel shader. Texel coordinates are an input to the texel shader, which generates a color value for those texel coordinates. A renderer can be implemented either in hardware, such as part of a graphics processor, or in software as a computer program executed by a processor. The renderer samples from the procedural texture in response to texel coordinates, and evaluates the texel shader on demand. Filtering also can be applied automatically to results. The results of the texel shader invocations are stored in a texture cache to take advantage of spatial and temporal locality. Results are shared among threads, processes and the like through the texture cache.

Claims (52)

1. A computer comprising:

a memory storing instructions implementing a texel shader, wherein the instructions, when executed by a thread on a graphics processing unit, compute a color value of a pixel of a texture by evaluating a function applied to quantized texture coordinates for the pixel; and

a graphics processing unit processing multiple concurrent threads, the multiple concurrent threads executing at least the instructions implementing the texel shader to apply the texel shader to quantized texture coordinates to compute color values for pixels of the texture;

a texture cache accessible by and shared among the multiple concurrent threads;

wherein the multiple concurrent threads executed on the graphics processing unit store results of applying the texel shader in the texture cache, the results comprising the color values of pixels of the texture computed by evaluating the function applied to quantized texture coordinates; and

wherein, to apply the texture from the texture cache to a pixel for an object, each thread of the multiple concurrent threads executed on the graphics processing unit:

in response to determining that results of applying the texel shader to quantized texture coordinates corresponding to the pixel are in the texture cache, accesses color values for the quantized texture coordinates from the texture cache, and,

in response to determining that results of applying the texel shader to the quantized texture coordinates corresponding to the pixel are not in the texture cache, applies the texel shader to the quantized texture coordinates corresponding to the pixel to compute the color values for the quantized texture coordinates, and stores the computed color values for the quantized texture coordinates in the texture cache; and

applies the color values for the quantized texture coordinates from the texture cache to the pixel for the object.

2. The computer of claim 1 further comprising a texture filtering component comprising an input to receive the results from the texel shader and performing a weighted blending of the results to provide an output.

3. The computer of claim 1 wherein the texel shader is implemented in a high level shader language.

4. The computer of claim 1 wherein texture parameters comprise dimension, size, and texel format.

5. The computer of claim 1 wherein the texture cache is implemented in a main memory of the computer.

6. The computer of claim 5 , wherein texture data produced from an invocation of the texel shader is stored in a cache line of the texture cache.

7. The computer of claim 1 , wherein the texture cache is implemented using a page table, and wherein, in response to a page fault when one of the multiple concurrent threads requests texture data from a page, the one of the multiple concurrent threads invokes the texel shader to generate and stores texture data for the page.

8. An article of manufacture comprising:

a computer storage medium;

computer program instructions stored on the computer storage medium which, when processed by a computer, configure the computer to be comprising:

a rendering engine executed on a processing unit and receiving instructions defining a texel shader, wherein the instructions, when executed by a thread on a graphics processing unit, compute a color value of a pixel of a texture by evaluating a function applied to quantized texture coordinates for the pixel, and processing the texel shader in multiple concurrent threads on a graphics processing unit of the computer to generate texture data for each of the multiple concurrent threads;

a texture cache accessible by and shared among the multiple concurrent threads and in which texture data is stored; and

wherein the multiple concurrent threads executed on the graphics processing unit store results of applying the texel shader in the texture cache, the results comprising the color values of pixels of the texture computed by evaluating the function applied to quantized texture coordinates; and

wherein, to apply the texture from the texture cache to a pixel for an object, each thread of the multiple concurrent threads executed on the graphics processing unit:

in response to determining that results of applying the texel shader to quantized texture coordinates corresponding to the pixel are in the texture cache, accesses color values for the quantized texture coordinates from the texture cache, and,

in response to determining that results of applying the texel shader to the quantized texture coordinates corresponding to the pixel are not in the texture cache, applies the texel shader to the quantized texture coordinates corresponding to the pixel to compute the color values for the quantized texture coordinates, and stores the computed color values for the quantized texture coordinates in the texture cache; and

applies the color values for the quantized texture coordinates from the texture cache to the pixel for the object.

9. The article of manufacture of claim 8 , wherein the renderer further comprises a texture filtering component that receives results from the texel shader and performs an interpolation function using the results to provide an interpolated output.

10. The article of manufacture of claim 8 wherein the texture cache is implemented in memory and wherein texture data produced from an invocation of the texel shader is stored in a cache line.

11. The article of manufacture of claim 8 wherein the texture cache is implemented using a page table, and wherein texture data is produced in response to a page fault, using the texel shader to generate and store texture data for a page of data.

12. An article of manufacture comprising:

a computer storage medium;

computer program instructions stored on the computer storage medium which, when processed by a computer, configure the computer to be comprising a graphics runtime library, the graphics runtime library comprising:

an interface for an application program executed on the computer to support manipulation of procedural textures, a procedural texture including instructions implementing a texel shader, wherein the instructions, when executed by a thread on a graphics processing unit, compute a color value of a pixel of a texture by evaluating a function applied to quantized texture coordinates for the pixel; and

an interface for a renderer executed on the computer to render procedural textures, the renderer causing multiple concurrent threads to be executed on a graphics processing unit of the computer and storing, in a texture cache, texture data produced by the multiple concurrent threads from rendering the procedural textures, wherein the texture data comprises the color values for pixels of the texture computed by evaluating the function applied to quantized texture coordinates; and

wherein, to apply the texture from the texture cache to a pixel for an object, each thread of the multiple concurrent threads executing on the graphics processing unit:

in response to determining that results of applying the texel shader to quantized texture coordinates corresponding to the pixel are in the texture cache, accesses color values for the quantized texture coordinates from the texture cache, and,

in response to determining that results of applying the texel shader to the quantized texture coordinates corresponding to the pixel are not in the texture cache, applies the texel shader to the quantized texture coordinates corresponding to the pixel to compute the color values for the quantized texture coordinates and stores the computed color values for the quantized texture coordinates in the texture cache; and

applies the color values for the quantized texture coordinates from the texture cache to the pixel for the object; and

an interface for the texture cache for caching the texture data produced from rendering the procedural textures by the multiple concurrent threads executing on the graphics processing unit, wherein the texture cache is accessible by and shared among the multiple concurrent threads of the renderer.

13. The article of manufacture of claim 12 ,

wherein the renderer includes a graphic processing unit.

14. The article of manufacture of claim 13 ,

wherein the texture cache resides in the graphic processing unit.

15. The article of manufacture of claim 12 ,

wherein the renderer is implemented using a computer program processed by a central processing unit of a computer.

16. The article of manufacture of claim 15 ,

wherein the texture cache is a page table for the central processing unit.

17. The article of manufacture of claim 15 ,

wherein the texture cache resides in main memory of the computer.

18. The article of manufacture of claim 12 ,

wherein the renderer comprises a texture filtering component that receives results from a texel shader and performs an interpolation function using the results to provide an interpolated output.

19. The article of manufacture of claim 12 wherein the texel shader is implemented in a high level shader language.

20. The article of manufacture of claim 12 wherein texture parameters comprise dimension, size, and texel format.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 039025/0454 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 24, 2014
From: PELTON, BLAKE; BOYD, CHAS; PATEL, AMAR
To: MICROSOFT CORPORATION
Reel/Frame 032749/0106 →
Continuity (1)
Related Publication 20150091931A1 · Apr 2, 2015