Premultiplied Alpha
- Computer Graphics에서 Alpha값을 표현하는 방법은 두가지 존재.
1) Straight alpha
- RGB로 그리는 물체의 색상을 표현
- 독립된 채널의 Alpha값이 존재
* Alpha와 RGB는 독립적, 객체를 fade-in/out할 때 RGB변경없이 Alpha만 변경하여 적용가능
실제 화면에 그릴땐 아래와 같이 계산한다.
result = (source.RGB * source.A) + (dest.RGB * (1 - source.A))
2) Premultiplied alpha
- RGB값에 Alpha값이 적용된 값,
그리려는 source의 RGB값에 이미 alpha값이 적용되어 있으므로 alpha값 계산 없이 바로 더하게 된다.
result = (source.RGB) + (dest.RGB * (1 - source.A))
* Premultiplied alpha를 사용 시 Image Filtering을 사용하거나 다른 레이어를 구성할 때 더 나은 결과를 제공한다.
(->링크참조 :https://blogs.msdn.microsoft.com/shawnhar/2009/11/06/premultiplied-alpha/)
premultiplied alpha를 적용하기 위해선 alpha값을 RGB에 곱해주면 된다.
color.rgb *= color.a
3) Converting between alpha formats
premultiplied.R = (byte)(straight.R * straight.A / 255); premultiplied.G = (byte)(straight.G * straight.A / 255); premultiplied.B = (byte)(straight.B * straight.A / 255); premultiplied.A = straight.A;
[출처]
https://microsoft.github.io/Win2D/html/PremultipliedAlpha.htm
https://blogs.msdn.microsoft.com/shawnhar/2009/11/06/premultiplied-alpha/
https://blogs.msdn.microsoft.com/shawnhar/2009/11/07/premultiplied-alpha-and-image-composition/
'Software Development > Graphics' 카테고리의 다른 글
유니티 알파블렌드 쉐이딩 이슈 해결 (0) | 2022.05.30 |
---|---|
Shadertoy (0) | 2019.12.31 |
텍스쳐 맵 (2) | 2018.09.15 |
SDL Sprite Animation (0) | 2018.08.19 |
프레임 드롭현상과 대책 (3) | 2018.08.18 |