This extension adds a 4x4 matrix stack to the pixel transfer path. After the matrix multiplication, each resulting color component is scaled and biased by a programmed amount. The color matrix can be used to reassign and duplicate color components. It can also be used to implement simple color space conversions.
All matrix operations have the same effect on the color matrix as they do on the other matrices.
The color matrix operates only on RGBA pixel groups. If this extension is implemented, the color matrix is always active, and is applied to all RGBA pixel groups, regardless of the command used to generate them. There are no constraints on the values of the scale and bias variables. The operation of the color matrix during pixel copy and query operations is identical to the operation during pixel drawing and texture image definition. The scale and bias variables are queried using GetFloatv with set to the appropriate variable name.