본문 바로가기

Unity3D/shader_스터디

[쉐이더] Float과 색깔 놀이

텍스쳐 포맷에서 이어지는 색깔 놀이

sunsimu1018.tistory.com/2

 

내용 정리

 

  • Float 이란?
  • 색상 표현 방법
  • 색깔 놀이
    • 더하기(Add)
    • 빼기(Subtract)
    • 1-x (One Minus)
    • 곱하기(Multiply)
    • 나누기(Divide)
    • 자리 바꾸기(Swizzling)

 


Float 이란?

프로그래밍에서 계산할 때의 단위

32bit=4바이트

Float: 부동 소수점 (0.0 이런 거)

소수점 아래 6번째까지 유효

 

색상을 표현할 때는 RGB를 float3(0.0,0.0,0.0)으로 표현.(24bit)

알파 값을 포함하면 RGBA를 float4(1.0,1.0,1.0,1.0)로 표현한다.(32bit)

 

수는 0~1로 나타낸다.

쉐이더 맨땅 박치기했을 때는 뭔가 했는데 지금 보면 이해함


색깔 놀이

 

1. 일단 만들어보기

 

Unlit Graph- 라이트 연산없음

 

컬러에서 바로 색상을 지정할 수 있다. 뒤의 (3)은 float3(vecter3)을 뜻함 

스페이스 또는 오른 클릭 후 Create Node로 노드 생성

 

2. 이미지 연산

 

간단한 단축키

  • ctrl+c (복사)
  • ctrl+v (붙여 넣기)
  • ctrl+x (지우기)
  • ctrl+z (뒤로)

 

 

Vector값 직빵 연결

 

Vector1=그레이 컬러

Vector2=RG

Vector3=RGB

 

 

더하기(Add)

 

float3(0.0,1.0,0.0)+float3(0.0,0.0,1.0)

=float3(0.0,1.0,1.0)

초록+파랑= 시안 (가산 혼합)

 

float3(1.0,0.0,0.0)+float3(0.0,0.0,1.0)

=float3(1.0,0.0,1.0)

빨강+파랑= 마젠타

 

 

합이 1이상이 되었을 때 색상으로만 봤을 때는 드러나지 않지만 값은 1이상이 되어있음

 

아래 이미지에서 색은 흰색이지만 B값은 11이 되었기 때문에 푸른빛을 띠게 된다.

 

빼기(Subtract)

자꾸 반전을 찾아서 헤매었음.

 

 

float3(1,1,1)-float3(0,0,1)

=float3(1,1,0)

흰색-파랑=노랑

 

Vecter1로 해도 결과는 같다.

R만 남기기

1-x (One Minus)

더보기

Subtract를 말하게 아니라 진짜 1-x였음. 찾아 헤매던 색 반전.

 

 

 

곱하기(Multiply)

 

float3(1,1,1)*float3(0,1,1)

=float3(0,1,1)

흰색x시안=시안

 

1*x=

1*0=0

1 이상 이하로 밝아지거나 어두워질 것

 

나누기(Divide)

0을 나누면 애가 맛이 가는 듯

 

float3(1,1,1)/float3(1,-1,1)

=float3(1,-1,1)

흰색/마젠타?=마젠타

 

곱셈과 반대. 1 이상 이하로 어두워지거나 밝아지는 것 같다.

 

 


자리 바꾸기(Swizzling)

 

Split을 이용해 바로 색으로 나타내면 해당 색의 값이 Vector1로 나타나는듯하다.

 

Combine으로 색 뒤섞기

색 바꿈 그 자체. 컬러 애니메이션 같은 곳에도 사용할 수 있을 것 같다.

 


후기

더보기

 

클레이 이후로 색깔놀이를 이렇게 오랫동안 한 건 처음입니다.