본문 바로가기

Unity3D/2021_엔진 심화

[Unity] 색상 연산, 블렌더

오늘은 쉐이더의 색상 연산 방식에 대해 얘기해봅시다.

 

-복습-

 

'색상=숫자'

 

색상을 나타낼 때 가산 혼합 방식을 사용하는데

(한 픽셀당 빨강, 초록, 파랑 각 8비트 정도를 분배해 가산 혼합을 통해 다양한 색을 나타내는 방식)

포토샵에서는 256색상을 이용하며, 쉐이더에서는 백분율로 나타내 0~1까지로 색상을 나타내게 됩니다.

R float3(1,0,0)

G float3(0,1,0)

B float3(0,0,1)

 

검정 flaot3(0,0,0)

흰색 float3(1,1,1)

 

이런식으로 RGB를 섞어 다양한 색을 내는 거죠.

노란색을 내고 싶다면?

Y float3(1,1,0) 이런식으로 할 수 있습니다.

 

 

float1=그레이 컬러

float2=RG (뒤의 값이 버려짐)

float3=RGB

float4=RGBA(알파까지)

 

 

이제 텍스쳐의 색상도 float1의 색상으로 볼 수 있습니다.

 

 

쉐이더 그래프를 통해 색상 연산을 알아봅시다.

Texture 2D를 추가하고 Sample Texture 2D에 연결, 컬러로 내보내 텍스쳐를 출력할 수 있습니다. 

 

 

+ Convert To > Property 로 노드를 블랙보드로 가져올 수 있습니다. 외부에서도 값을 변경해보며 색상 연산에 대해 알아봅시다.


x+0.5

텍스쳐에 float0.5를 더하면 0이었던 곳은 0.5, 0.5였던 부분은 1, 1이었던 부분은 색상값이 1.5가 되면서 HDR이미지가 됩니다. 불룸을 적용하면 눈으로 직접 확인할 수 있습니다. 

 

 

포토샵의 그래프로는 아래와 같이 이동한 것과 같습니다.

 

 

x-0.5

이번에는 0이었던 곳은 -0.5, 0.5는 0, 1은 0.5의 색상이 나타나게 됩니다. 0이하의 음수도 1이상의 값과 같이 검정색보다 더 어두운 검정이 나오게 됩니다.

 

 

제곱(x,2pow)

1*1=1

0.5*0.5=0.25

0*0=0

1과 0은 그래도이나 나머지 값들에 변화가 생깁니다.

 

 

반전/ 1-x 

1-1=0

1-0.5=0.5

1-0=0

One Minus라고도 부릅니다. 1에서 기존 값을 빼면서 색이 반전되게 됩니다.

 

 

 

절대값(ABS)

abs(x-0.5)

새로 그라데이션 텍스쳐를 준비했습니다. 0.5를 빼고 절대값을 적용할 경우 음수로 내려간 값도 양수로 나타납니다.

 

 

아래 링크를 통해 그래프로 위의 공식들을 확인해 볼 수 있습니다.

주의 : float은 부동 소수점이기 때문에 1.0 ,2.0 과 같이 적어줘야 합니다.

GLSL Grapher (fordhurley.com)

 

GLSL Grapher

 

fordhurley.com

 

 


알파 블렌더

 

알파값을 출력하기 위해서는 텍스쳐의 Alpha값을 Alpha로 출력, Surface를 Transparent로 변경하고 저장합니다.

 

 

무늬, 단면 오브젝트 등에 사용 가능합니다.

 

 

Blend 옵션을 변경함으로서 여러 표현이 가능합니다.

 Alpha- 알파 이미지를 출력. 겹친다고 해도 투명도 외의 변화는 없습니다.

 

 

 

Additive- 포토샵의 더하기와 같다. 빛, 조명을 비춘듯한 연출이 가능합니다.

 

 

Multiply- 포토샵과 동일한 곱하기 기능입니다. 얼룩 등의 표현을 하기 좋습니다. 

'Unity3D > 2021_엔진 심화' 카테고리의 다른 글

[Unity Shader] 좌표계, 벡터  (0) 2021.05.26
[Unity] Z-buffer, Shader Lab  (0) 2021.05.05
[Unity] 키워드, 색상 연산2  (0) 2021.04.21
[Unity] Shader Graph 기초 / UI  (0) 2021.04.01