Per-pixel shader thread dispatch for super-sampling efficiency
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current 3D graphics processing techniques face inefficiencies in pixel shading operations, particularly with super-sampling, where multiple samples per pixel lead to increased resource consumption and inconsistent blending of graphics objects due to the fixed function nature of raster operations units and the lack of guaranteed processing order of pixel shaders.
Innovation Solution
A method is introduced to dispatch pixel information efficiently by generating samples based on a graphics primitive, calculating values once for the pixel and each sample, combining these values, and storing them in output registers, allowing for per-sample operations with reduced resource usage and improved image quality.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Measurement precision
If super-sampling mode is used to render multiple samples per pixel, then image quality is improved, but pixel shader resources are consumed four times more for four samples per pixel
Solution Approach 1:
The patent segments the pixel processing into two distinct stages: per-pixel shading operations and per-sample blending operations. The pixel shader program executes once per pixel to compute shading values, which are then stored in output registers. A separate blending stage performs the sample-level operations using these pre-computed pixel values. This segmentation allows the expensive per-pixel calculations to be performed only once per pixel rather than once per sample, reducing pixel shader resource consumption by a factor of four for 4x super-sampling while maintaining full image quality through subsequent per-sample blending operations.
2Productivity
If pixel shader programs are allowed to execute in parallel on multiple graphics processing pipelines, then processing speed is improved, but blending order consistency deteriorates
Solution Approach 1:
The patent applies preliminary action by completing all per-pixel shading computations and storing results in output registers before any blending operations begin. This pre-computation phase establishes a definitive intermediate state that all subsequent blending operations will reference. By separating the shading phase (which determines the final pixel values) from the blending phase (which combines multiple samples), the system ensures that parallel pipeline execution does not affect blending consistency, as all pipelines will blend from the same pre-computed pixel shader outputs.
3Measurement precision
If per-pixel shading is performed for each sample in super-sampling mode, then image quality is maximized, but resource consumption increases four times compared to per-pixel shading
Solution Approach 1:
The patent merges the per-pixel shading computations across all samples by executing the pixel shader program once per pixel and storing the results in output registers that are shared by all samples. Instead of launching four separate pixel shader instances for four samples, the system computes the shading values once and reuses them for all sample blending operations. This merging eliminates redundant per-pixel calculations while maintaining per-sample image quality through the subsequent blending stage that operates on the shared pixel shader outputs.
Data Source
AI summary
Techniques for dispatching pixel information in a graphics processing pipeline. A fragment processing unit generates a pixel that includes multiple samples based on a first portion of a graphics primitive received by a first thread. The fragment processing unit calculates a first value for the first pixel, where the first value is calculated only once for the pixel. The fragment processing unit calculates a first set of values for the samples, where each value in the first set of values corresponds to a different sample and is calculated only once for the corresponding sample. The fragment processing unit combines the first value with each value in the first set of values to create a second set of values. The fragment processing unit creates one or more dispatch messages to store the second set of values in a set of output registers.


