Graphics Effect Data Structure Decoupling Shaders

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing graphics processing systems are limited by proprietary effect frameworks that are no longer supported or are limited in their application due to their association with specific APIs or hardware, lacking the ability to decouple the effect container from the shader language and support multiple shading languages.

Innovation Solution

An effect processing system that includes a memory to store an effect data structure describing a graphics effect, a GPU to render the graphics effect, and a CPU to execute an application that employs the graphics effect, with methods for loading, parsing, and compiling shader code modules to generate a shader program, allowing for the use of multiple shading languages and decoupling the effect container from the shader language.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If proprietary effect frameworks are used that are associated with specific APIs or hardware, then the graphics effect can be efficiently rendered on that specific platform, but the effect framework becomes obsolete when no longer supported and the system lacks ability to support multiple shading languages

Engineering Contradiction:
Improvesupport for multiple shading languagesVSAvoideffect framework support
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The system separates the effect container (XML-based effect file) from the shader language implementation. The effect file contains effect definitions, parameters, and resource references that are independent of any specific shading language, while separate shader files in different languages (HLSL, GLSL, CUDA) provide the actual rendering logic. This segmentation allows the effect container to remain language-agnostic and maintainable while supporting multiple shading languages through configuration rather than code changes.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The effect container is designed as a universal framework that can work with multiple shading languages (HLSL for DirectX, GLSL for OpenGL, CUDA for compute shaders). The same effect definition file can be used across different platforms and APIs by simply changing the associated shader language files, making the effect system universally applicable rather than proprietary to a single platform or API.

Inventive Principle:
Principle #6Universality (Multi-functionality)

2Ease of manufacture

If the effect container is coupled with a specific shader language, then the implementation is simpler for that language, but code replication is required for each shading language and the system cannot support multiple languages

Engineering Contradiction:
Improvesimplification of application codeVSAvoidcode replication across languages
Core Design Contradiction:
Ease of manufactureVSDevice complexity

Solution Approach 1:

The shader language-specific code is extracted from the effect container and placed in separate shader files. The effect container only contains language-agnostic definitions, parameters, and resource references. This extraction eliminates the need to replicate effect definitions across multiple languages while still allowing each language to have its own optimized shader implementation, reducing code duplication while maintaining simplicity.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The effect container acts as an intermediary layer between the application and the shader language implementations. It provides a unified interface for defining effects and manages the selection and loading of appropriate shader files based on the target platform and API. This mediator approach simplifies application code by providing a single effect management interface while handling the complexity of multiple shader language support in the background.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Productivity

If proprietary effect frameworks are used, then the graphics effect can be implemented efficiently on that platform, but the framework is limited to specific APIs or hardware and becomes obsolete when no longer supported

Engineering Contradiction:
Improverendering efficiencyVSAvoidplatform independence
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The system dynamically selects and loads appropriate shader language files based on the target platform, API, and hardware capabilities at runtime or compile time. The effect container remains static and language-agnostic, while the shader implementations are dynamically chosen to match the execution environment. This dynamic approach maintains rendering efficiency by using optimized shaders for each platform while preserving platform independence through the universal effect container.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS9875568B2Graphics effect data structure and method of use thereof
Publication Date: 2018.01.23 NVIDIA CORP
  • US9875568B2 patent drawing
  • US9875568B2 patent drawing
  • US9875568B2 patent drawing

AI summary

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.