RGB와 알파의 약속
왼쪽은 sRGB 0.08의 어두운 배경, 오른쪽은 조절한 불투명 배경입니다.
반투명 경계가 어두워지면 알파 표현부터 확인합니다. 밝은 배경에서 가산 효과가 사라지면 합성 결과와 배경의 대비를 확인합니다.
Straight는 C를, premultiplied는 Cα를 저장합니다. 후자에 SrcAlpha를 곱하면 Cα²가 됩니다. 배경 버퍼도 Cbαb를 저장해야 하며 출력 알파는 αs+αb(1−αs)입니다. RGB와 같은 SrcAlpha를 알파에도 쓰면 αs²가 되어 잘못됩니다.
‘저장 표현에 인자 맞추기’는 straight에 SrcAlpha, premultiplied에 One을 선택하고 알파에는 별도 One을 씁니다. 결과 co는 premultiplied 값으로 유지하고 필요할 때만 Co=co/αo로 복원합니다. 아래 숫자는 도형 중심의 겹친 픽셀입니다.
가산은 Cb+Csα, 곱셈은 Cb×(1−α+Csα)로 계산합니다. 이 두 모드는 불투명 배경 비교입니다. 선형 모드에서는 입력 sRGB를 광량으로 복원하고 계산 뒤 sRGB로 되돌립니다. 가산이 1을 넘는 채널은 화면에서 LDR로 잘립니다.
각 픽셀의 수식을 CPU로 계산해 보여줍니다. 텍스처 압축·필터링의 테두리 오류, HDR 디스플레이·톤 매핑·실제 빛의 산란은 포함하지 않습니다. 투명 이미지의 저장 형식을 바꾸려면 출력 버퍼와 이후 패스도 함께 맞춰야 합니다.
W3C source-over 식 · Unity RGB·알파 합성 인자