Face augmentation in video
US-12165275-B2 · Dec 10, 2024 · US
US9928637B1 · US · B1
| Field | Value |
|---|---|
| Publication number | US-9928637-B1 |
| Application number | US-201615064145-A |
| Country | US |
| Kind code | B1 |
| Filing date | Mar 8, 2016 |
| Priority date | Mar 8, 2016 |
| Publication date | Mar 27, 2018 |
| Grant date | Mar 27, 2018 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
Shader data can be fetched directly from render targets using languages that do not natively support such functionality. Flags can be set to ensure that render targets remain in memory of a graphics processing unit (GPU). Render targets can remain in GPU memory in part by avoiding an unbinding from the GPU, significantly reducing the data round trips needed between a central processing unit (CPU) and the GPU. The ability to fetch the data straight from on-chip memory provides better performance on the GPU since textures that reside on slower memory do not need to be sampled. Since fetching directly from render targets is not possible in certain languages, special texture registers can be dedicated. A compiler can be configured to detect when a special register is being used and to output the necessary shader instructions in a platform-specific language.
Opening claim text (preview).
What is claimed is: 1. A computer-implemented method, comprising: receiving, from a gaming application, instructions to render a scene of content for display on a display screen of a computing device, the instructions corresponding to a first shading language; determining a set of pixels to be rendered for an image frame of the scene; assigning a respective texture for each pixel of the set of pixels to a respective register of a graphics processing unit (GPU), the respective register having a register identifier indicating that the register is storing texture data; converting the instructions for a respective register to byte code; modifying a register slot number for the respective register based at least in part upon a range of registers associated with a respective texture type; translating the byte code into a second shading language corresponding to a platform to be used in rendering the scene; sending the translated code, the register slot number, and a texture-specific instruction to a shader compiler in the second shader language, wherein the texture data is able to be fetched directly from the respective register of the graphics processing unit; generating a shader binary using shader compiler; and storing the resulting pixel data for each of the set of pixels to a frame buffer for use in rendering the scene of content. 2. The computer-implemented method of claim 1 , further comprising: setting a flag for the respective register to ensure that the respective register is not unbound from the GPU during a current pass through a rendering pipeline corresponding to the scene; and reusing at least a subset of the texture data in the respective registers for at least one subsequent pass through the rendering pipeline. 3. The computer-implemented method of claim 1 , further comprising: designating at least one respective register as a special texture register, wherein the register slot number for the special texture register is outside a slot number range of the GPU. 4. The computer-implemented method of claim 3 , wherein the texture data in at least one respective register is a render target that is able to be sampled without having to first resolve the render target to a texture and bind that texture to the GPU. 5. The computer-implemented method of claim 1 , wherein the first shader language is the high level shading language (HLSL) and the second shader language is one of the Metal shader language, the OpenGL Shading Language (GLSL), or SPIR-V. 6. A computer-implemented method, comprising: determining object data for a set of objects to be rendered as part of an image to be displayed; determining a set of pixel shaders to be used in determining pixel values based at least in part on the object data; causing a respective texture for a pixel of the image to be stored to a respective register of a graphics processing unit (GPU), the respective register having a register identifier indicating that the register is storing texture data; designating the respective register as a special texture register, wherein the register identifier for the respective register includes a specified slot number outside a slot range for the GPU; performing a rastering process for the pixel using data fetched from the respective register of the GPU based at least in part upon the register identifier, in order to determine a pixel value for the pixel; and writing the pixel value for the pixel, with other pixel values for the image, to a frame buffer until such time as the pixel values in the frame buffer are retrieved for generating the image to be displayed. 7. The computer-implemented method of claim 6 , further comprising: receiving, from a graphics application, graphics instructions for rendering the image, the graphics instructions corresponding to a first shader language; and translating the graphics instructions to a second shader language to be used in performing the rastering process. 8. The computer-implemented method of claim 7 , wherein the first shader language is the high level shading language (HLSL) and the second shader language is one of the Metal shader language, the OpenGL Shading Language (GLSL), or SPIR-V. 9. The computer-implemented method of claim 7 , wherein the graphics instructions are received to an application programming interface (API) associated with the second shader language. 10. The computer-implemented method of claim 6 , wherein the register identifier includes the specified slot number and an indicator for special texture data being stored in the register. 11. The computer-implemented method of claim 10 , further comprising: subtracting a texture starting slot number from the specified slot number before enabling the data to be fetched from the respective register of the GPU. 12. The computer-implemented method of claim 6 , further comprising: directly sampling the data from memory of the GPU referred to by the respective register without first resolving the data to a texture and binding the texture to the GPU. 13. The computer-implemented method of claim 6 , further comprising: setting a flag for the respective register to ensure that the data in the register remains bound to the GPU during a current pass through a rendering pipeline corresponding to the image. 14. The computer-implemented method of claim 13 , further comprising: reusing at least a subset of the data in the respective register for at least one subsequent pass through the rendering pipeline. 15. The computer-implemented method of claim 6 , further comprising: compiling a pixel shader to byte code corresponding to the first shader language before translating the pixel shader to a second shader language. 16. A computing device, comprising: a display screen; a central processing unit (CPU); a graphics processing unit (GPU); and memory including instructions that, upon execution by at least one of the CPU or the GPU, cause the computing device to: obtain object data for a set of objects to be rendered as part of an image to be displayed on the display screen; determine a set of pixel shaders to be used in determining pixel values based at least in part on the object data; cause a respective texture for a pixel of the image to be stored to a respective register of the GPU, the respective register having a register identifier indicating that the register is storing texture data, the register identifier having a register number outside a register range of the GPU; perform rastering for the pixel using data fetched from the respective register of the GPU based at least in part upon the register identifier, in order to determine a pixel value for the pixel; store the pixel value for the pixel, with other pixel values for the image, to a frame buffer; and read the pixel values from the frame buffer in order to generate the image and cause the image to be displayed on the display screen. 17. The computing device of claim 16 , wherein the instructions when executed further cause the computing device to: receive, from a graphics application to the computing device, graphics instructions for rendering the image, the graphics instructions corresponding to a first shader language; and translate the graphics instructions to a second shader language to be used in performing the rastering process, wherein the first shader language is the high level shading language (HLSL) and the second shader language is one of the Metal shader language, the OpenGL Shading Language (GLSL), or SPIR-V. 18. The computing device of claim 16 , wherein the
General purpose rendering architectures · CPC title
Texture mapping · CPC title
Shading · CPC title
Memory management · CPC title
Compilation · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.