오늘은 쉐이더의 색상 연산 방식에 대해 얘기해봅시다.
-복습-
'색상=숫자'
색상을 나타낼 때 가산 혼합 방식을 사용하는데
(한 픽셀당 빨강, 초록, 파랑 각 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 과 같이 적어줘야 합니다.
알파 블렌더
알파값을 출력하기 위해서는 텍스쳐의 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 |