IP Library › Granted Patent US 9,875,568
Granted Patent B2
US 9,875,568 · App. 13/911,650 · Granted Jan 23, 2018

Graphics effect data structure and method of use thereof

Inventor: Tristan Lorach (Santa Clara, CA)
Assignee: Nvidia Corporation
G06T15/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 9,875,568
App. No.
13/911,650
Granted
Jan 23, 2018
Kind
B2
Abstract

A graphics effect data structure and method of use thereof. One embodiment of the graphics effect data structure is embodied in an effect processing system, including: (1) a memory configured to store an effect data structure that describes a graphics effect implemented by a plurality of passes and shader code modules contained in the effect data structure, (2) a graphics processing unit (GPU) operable to render the graphics effect according to a shader program based on the shader code modules, assembled according to the plurality of passes, and (3) a central processing unit (CPU) configured to execute an application that employs the graphics effect and to gain access to the effect data structure during run time, at which time the shader program is passed to the GPU for processing.

Claims (32)

1. An effect processing system, comprising:

a memory configured to store an effect data structure that describes a graphics effect implemented by a plurality of passes and shader code modules contained in said effect data structure, wherein said effect data structure further includes additional elements and said shader code modules include different shader languages;

a graphics processing unit (GPU) operable to render said graphics effect according to a shader program based on said shader code modules and said additional elements, assembled according to said plurality of passes; and

a central processing unit (CPU) configured to execute an application that employs said graphics effect and to gain access to said effect data structure during run time, at which time said shader code modules are not parsed and are passed to said GPU for processing, wherein said additional elements include uniform parameters, constant buffers, render state groups, sampler states, texture bind points, and frame buffer definitions.

2. The effect processing system recited in claim 1 wherein said CPU treats said shader code modules as data.

3. The effect processing system recited in claim 2 wherein said shader code modules include OpenGL Shading Language (GLSL) code.

4. The effect processing system recited in claim 2 wherein said CPU is further configured to parse said effect data structure.

5. The effect processing system recited in claim 4 further comprising an application programming interface (API) by which said shader code modules are parsed and through which said shader program is passed to said GPU.

6. The effect processing system recited in claim 1 wherein said effect data structure includes a plurality of techniques respectively containing said plurality of passes.

7. The effect processing system recited in claim 6 wherein said effect data structure includes resource definitions.

8. A method of generating a shader program, comprising:

loading a graphics effect from an effect data structure stored in memory, said effect data structure having shader code modules of different shader languages, and additional elements including uniform parameters, constant buffers, render state groups, sampler states, texture bind points, resource definitions, and frame buffer definitions;

parsing said effect data structure, wherein said parsing excludes parsing said shader code modules of said effect data structure;

creating a runtime effect object encapsulating a plurality of passes based on parsed data from said parsing, wherein said plurality of passes employ said additional elements to define implementation of said graphics effect; and

employing a graphics application programming interface (API) in compiling said shader code modules of said effect data structure according to said runtime effect object, thereby generating said shader program.

9. The method recited in claim 8 wherein said effect data structure is decoupled from a single shader language.

10. The method recited in claim 8 wherein said effect data structure includes a technique that assembles at least one of said plurality of passes.

11. The method recited in claim 8 wherein said employing includes compiling said shader code modules at runtime.

12. The method recited in claim 8 further comprising employing said graphics API to create resources and retrieve binding points.

13. The method recited in claim 8 wherein said parsing said effect data structure includes parsing uniforms extracted from said shader code modules, and said runtime effect object includes binding points for said uniforms in said shader code modules.

14. The method recited in claim 8 wherein said different shader code languages include OpenGL Shading Language (GLSL) code, compute unified device architecture (CUDA), GLSL-Compute, high-level shading language (HLSL) and D3D.

15. A method of rendering a graphics effect on an object in a scene, comprising:

executing an application that calls for said graphics effect to be rendered;

parsing an effect file containing an effect data structure that describes said graphics effect, said effect data structure containing a pass, constant buffers, render state groups, sampler states, texture bind points, resource definitions, frame buffer definitions, uniform parameters and shader code modules of different shader languages for implementing said graphics effect, wherein said parsing excludes parsing said shader code modules;

creating a runtime effect object encapsulating said effect data structure;

employing a graphics application programming interface (API) to compile said shader code modules according to said pass, thereby generating a shader program, wherein said pass describes assembling of said shader code modules to form said shader program; and

executing said shader program by invoking said pass through said runtime effect object, thereby rendering said graphics effect.

16. The method recited in claim 15 wherein said different shader code languages include OpenGL Shading Language (GLSL) code, compute unified device architecture (CUDA), GLSL-Compute, high-level shading language (HLSL), D3D, and DX-compute.

17. The method recited in claim 15 wherein said pass is one of a plurality of passes in a technique.

18. The method recited in claim 15 wherein said parsing excludes parsing said shader code.

19. The method recited in claim 15 wherein said employing is carried out before runtime.

20. The method recited in claim 15 wherein said effect data structure is implemented in extensible markup language (XML).

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 6, 2013
From: LORACH, TRISTAN
To: NVIDIA CORPORATION
Reel/Frame 030560/0961 →
Continuity (1)
Related Publication 20140362093A1 · Dec 11, 2014