GS Alpha Blending
42h
/43h
ALPHA_1/2
- 0-1 Spec A
- 2-3 Spec B
- 4-5 Spec C
- 6-7 Spec D
- 8-15 Alpha FIX
The GS's alpha blending formula is fixed but it contains four variables that can be reconfigured:
Output = (((A - B) * C) >> 7) + D
A, B, and D are colors and C is an alpha value. Their specific values come from the ALPHA register:
- | A | B | C | D |
---|---|---|---|---|
0 | Source RGB | Source RGB | Source alpha | Source RGB |
1 | Framebuffer RGB | Framebuffer RGB | Framebuffer alpha | Framebuffer RGB |
2 | 0 | 0 | FIX | 0 |
3 | Reserved | Reserved | Reserved | Reserved |
Internally, alpha-blending treats each color component as 9-bit. The output is then clamped accordingly by COLCLAMP.
46h
COLCLAMP
- 0 8-bit signed clamp (0=8-bit AND)
When COLCLAMP is 1, RGB components will be 0 if negative after alpha-blending or 0xFF
if 0x100
or above. Otherwise, each color component will be ANDed with 0xFF
.