Mesh Shader Bounding Volume API for GPU Memory Optimization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The existing GPU pipeline faces bottlenecks due to dynamic output data size from mesh shaders, particularly on devices with limited memory and tiling GPUs, which affects performance and power consumption.

Innovation Solution

The implementation of a mesh shader that outputs 3D objects as vertices, primitives, and bounding volumes, with a rasterizer projecting these into 2D fragments and a fragment shader generating a 2D image, utilizing axis-aligned bounding boxes (AABBs) to optimize memory usage and reduce unnecessary computations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If mesh shaders output dynamic and large amounts of vertex data, then rendering flexibility and parallel processing capability are improved, but device memory and bandwidth bottlenecks occur

Engineering Contradiction:
Improverendering flexibilityVSAvoidoutput data size
Core Design Contradiction:
Adaptability or versatilityVSQuantity of substance

Solution Approach 1:

The patent segments the output data from mesh shaders into two distinct types: vertices/primitives for rendering and bounding volumes for culling. This segmentation allows the system to manage large dynamic output data by separating the data needed for rendering (vertices) from the data needed for optimization (bounding volumes), thereby reducing the memory and bandwidth burden while maintaining rendering flexibility.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent extracts and removes unnecessary meshlet data before the rendering pipeline by introducing a culling stage that uses bounding volumes to identify and eliminate invisible or unnecessary meshlets. This extraction occurs before the data reaches the vertex shader, significantly reducing the quantity of data that needs to be processed and transmitted through the pipeline.

Inventive Principle:
Principle #2Taking out (Extraction)

2Reliability

If all meshes are drawn first in traditional pipeline, then rendering completeness is ensured, but performance bottleneck occurs

Engineering Contradiction:
Improverendering completenessVSAvoidrendering performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent applies preliminary action by performing meshlet culling before the traditional rendering pipeline. The bounding volume culling stage acts as a preliminary filter that eliminates unnecessary meshlets before they enter the vertex shader processing stage. This preliminary action ensures rendering completeness for visible objects while significantly improving performance by reducing the total amount of data processed.

Inventive Principle:
Principle #10Preliminary action

3Quantity of substance

If pre-pass vertex shader is used to suppress geometry data, then vertex data reduction is achieved, but compatibility with mesh shaders is lost

Engineering Contradiction:
Improvevertex data amountVSAvoidmesh shader compatibility
Core Design Contradiction:
Quantity of substanceVSAdaptability or versatility

Solution Approach 1:

The patent creates a universal pipeline that works with both traditional vertex shaders and mesh shaders by introducing a common bounding volume output and culling mechanism. The mesh shader outputs bounding volumes that can be used by the culling stage, and the same bounding volumes can be used by traditional vertex shaders if needed. This multi-functionality allows the system to reduce vertex data amounts while maintaining compatibility with both shader types.

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

Data Source

PatentUS20240338881A1Application Programming Interface to Indicate Bounding Volume Output
Publication Date: 2024.10.10 MEDIATEK INC
  • US20240338881A1 patent drawing
  • US20240338881A1 patent drawing
  • US20240338881A1 patent drawing

AI summary

An application programming interface includes a mesh shader, a rasterizer, and a fragment shader. The mesh shader is used to process 3-dimensional objects and output vertices, primitives, and a plurality of bounding volumes of the 3-dimensional objects. The rasterizer is linked to the mesh shader, and used to project the vertices, the primitives, and the plurality of bounding volumes into 2-dimensional fragments. The fragment shader is linked to the rasterizer, and used to output a 2-dimensional image according to the 2-dimensional fragments.