최근 수정 시각 : 2021-01-18 13:32:45

블렌딩(컴퓨터 그래픽스)


파일:PsBlendMode.png
어도비 포토샵에서의 블렌딩 모드

1. 개요2. 용어
2.1. 색상 값2.2. 활성 레이어, 배경 레이어2.3. 블렌딩 함수2.4. 상수
3. 예시
3.1. 표준(Normal)3.2. 곱하기(Multiply)3.3. 선형 닷지(추가)(Linear Dodge)3.4. 스크린(Screen)3.5. 차이(Difference)

1. 개요

서로 다른 색을 섞는 것을 의미하는 컴퓨터 그래픽 용어로, 알파 블렌딩이라고도 부른다. 컴퓨터 그래픽과 디지털 사진 편집 분야에서는 서로 다른 레이어나 오브젝트의 색을 혼합하는 방식을 가리키는 용어이다. 유니티 등의 게임 엔진에서 셰이더를 이용하여 불빛이나 그림자 효과를 만드는 것을 예로 들 수 있다.

2. 용어

포토샵 등의 프로그램을 사용한다면, 마우스 클릭 몇 번만으로 다양한 혼합 모드의 적용이 가능하지만, 실제로는 아래와 같은 구성 요소들 사이의 연산으로 이루어진다. 아래 용어들은 예시 문단에서 사용할 용어들이다.

2.1. 색상 값

흔히 0부터 255 사이의 값으로 정의되는 색상 및 알파 값이다. 블렌딩 연산에 사용하는 수치는 0에서 1 사이의 실수이다.

2.2. 활성 레이어, 배경 레이어

  • 활성 레이어 : SRC
  • 배경 레이어 : DEST

활성 레이어는 현재 자신이 편집하고 있는 레이어이고, 배경 레이어는 활성 레이어가 올라가 있는 하위 레이어들의 집합이다. 블렌딩 옵션은 이들간의 연산으로 이루어진다.

2.3. 블렌딩 함수

blend(SrcAlphaFunc, DestAlphaFunc) = SRC * SrcAlphaFunc + DEST * DestAlphaFunc

유니티 엔진의 셰이더 등에서는 위와 같은 함수식으로 결정하기도 한다. SrcAlphaFuncDestAlphaFuncSRCDEST에 곱해지는 값을 결정하는 인자이다.

2.4. 상수

위 문단의 함수식에서 SRC 또는 DEST에 곱해지는 상수들이다. 아래의 값들이 SrcAlphaFuncDestAlphaFunc 자리에 들어간다.
  • 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) 등을 사용할 수 있다.