어도비 포토샵에서의 블렌딩 모드 |
1. 개요
서로 다른 색을 섞는 것을 의미하는 컴퓨터 그래픽 용어로, 알파 블렌딩이라고도 부른다. 컴퓨터 그래픽과 디지털 사진 편집 분야에서는 서로 다른 레이어나 오브젝트의 색을 혼합하는 방식을 가리키는 용어이다. 유니티 등의 게임 엔진에서 셰이더를 이용하여 불빛이나 그림자 효과를 만드는 것을 예로 들 수 있다.2. 용어
포토샵 등의 프로그램을 사용한다면, 마우스 클릭 몇 번만으로 다양한 혼합 모드의 적용이 가능하지만, 실제로는 아래와 같은 구성 요소들 사이의 연산으로 이루어진다. 아래 용어들은 예시 문단에서 사용할 용어들이다.2.1. 색상 값
흔히 0부터 255 사이의 값으로 정의되는 색상 및 알파 값이다. 블렌딩 연산에 사용하는 수치는 0에서 1 사이의 실수이다.2.2. 활성 레이어, 배경 레이어
- 활성 레이어 :
SRC
- 배경 레이어 :
DEST
활성 레이어는 현재 자신이 편집하고 있는 레이어이고, 배경 레이어는 활성 레이어가 올라가 있는 하위 레이어들의 집합이다. 블렌딩 옵션은 이들간의 연산으로 이루어진다.
2.3. 블렌딩 함수
blend(SrcAlphaFunc, DestAlphaFunc) = SRC * SrcAlphaFunc + DEST * DestAlphaFunc
유니티 엔진의 셰이더 등에서는 위와 같은 함수식으로 결정하기도 한다.
SrcAlphaFunc
와 DestAlphaFunc
는 SRC
와 DEST
에 곱해지는 값을 결정하는 인자이다.2.4. 상수
위 문단의 함수식에서SRC
또는 DEST
에 곱해지는 상수들이다. 아래의 값들이 SrcAlphaFunc
와 DestAlphaFunc
자리에 들어간다.One
: 1. 대상 레이어의 색상과 알파 값을 그대로 유지한다.Zero
: 0. 대상 레이어의 색상과 알파 값을 모두 소거한다.
SrcColor
: 대상 레이어에SRC
의 색상 값을 곱한다.InvSrcColor
: 대상 레이어에SRC
의 색상 값을 반전하여 곱한다.SrcAlpha
: 대상 레이어에SRC
의 알파 값을 곱한다.InvSrcAlpha
: 대상 레이어에SRC
의 알파 값을 반전하여 곱한다.
DestColor
: 대상 레이어에DEST
의 색상 값을 곱한다.InvDestColor
: 대상 레이어에DEST
의 색상 값을 반전하여 곱한다.DestAlpha
: 대상 레이어에DEST
의 알파 값을 곱한다.InvDestAlpha
: 대상 레이어에DEST
의 알파 값을 반전하여 곱한다.
3. 예시
가장 많이 쓰이는 몇 가지 옵션을 알아본다. 각 문단의 제목은 포토샵의 혼합 모드 옵션 이름을 따른다.3.1. 표준(Normal)
Result = SRC = blend(SrcAlpha, InvSrcAlpha)
blend(One, Zero)
가 있다. 단, 투명도를 적용하지 않을 때만 유효하다.3.2. 곱하기(Multiply)
Result = SRC * DEST = blend(DestColor, InvSrcAlpha)
blend(DestColor, Zero)
가 있다. 단, 투명도를 적용하지 않을 때만 유효하다.두 레이어를 곱한다는 이야기에서 '색상값을 곱하면 밝아져야 하는 것 아닌가'라는 의문을 제기할 수도 있으나, 블렌딩 함수는 일반적인 0~255를 사용하는 것이 아니라 0~1 사이의 실수를 사용함에 주의해야 한다. 따라서 각 채널의 최소와 최대 사이의 중간값은 반드시 진분수이기 때문에, 그 값을 곱하면 당연히 색상이 어두워진다.
3.3. 선형 닷지(추가)(Linear Dodge)
Result = SRC + DEST = blend(SrcAlpha, DestAlpha)
blend(SrcAlpha, One)
, blend(One, One)
가 있다. 단, 투명도를 적용하지 않을 때만 유효하다.3.4. 스크린(Screen)
Result = SRC + DEST - (SRC * DEST)
3.5. 차이(Difference)
Result = absolute(SRC - DEST)
absolute
는 절댓값을 나타낸다. DEST
의 색상을 반전하려면 SRC
를 하얀색으로 놓고 blend(InvDestColor, InvSrcAlpha)
등을 사용할 수 있다.