본문 바로가기

유니티 쉐이더 스타트업

[ 유니티 쉐이더 스타트업 ] 02 . 색과 빛의 기본원리

[ 모니터에 표현되는 색과 빛의 기본원리 ]

[ 모니터가 색을 표현하는 방법 ]

우리가 알고 있는 모니터에서 표현되는 색은 가산혼합(색을 더하면 더할수록 밝아짐)으로 만들어진다 . 

cf) 감산혼합 : 색을 더하면 더할수록 어두워짐 

https://www.samsung.com/sec/glossary/tvs/sub-pixel/

=>일반적인 컬러모니터는 RGB3개로 구성된 서브픽셀 ( 픽셀을 표현하기 위해 구성된 작은 소자의 집합)로 이루어져 있다.

그러므로 , 모니터의 한 픽셀을 이루는 기본구조는 마치 R,G,B의 색으로 빛나는 3개의 조명이 붙어있는 모습이다 .


 

[ 모니터에 나타나는 색을 숫자로 표현하기 ]

=>컴퓨터에서는 이 3가지 조명밝기를 %로 생각한다 .

즉 , RGB가 모두 켜져서 흰색일 경우 100%,100%,100%이다 .

=>모두 꺼졌을때는 검정색이고 0%,0%,0% 이다 .


 

 

[ 컬러를 숫자로 나타내보기 ]

=>우리는 이렇게 픽셀마다 특정한 색상을 출력해주는 일을 하게 될 것이다 .

이 한 픽셀의 색을 결정하는 코드를 픽셀 쉐이더라고 부른다

 

=>아래 이미지를 프로그래밍에서 이해 할 수 있는 숫자로 표현하려면 %를 소수점 숫자로 적으면 된다

프로그래밍에서 소수점숫자를 표현시 Float 단위를 자주사용한다 .

=>(100%,100%,100%) 는 Float3(1.0,1.0,1.0) 이다 .

=>(0%,0%,0%) 는 Float3(0,0,0) 이다 .

 


 

 

[ 컬러를 연산하기 ]

 

01 . 컬러의 덧셈과 뺄샘

Q . 회색 (0.5 , 0.5 , 0.5) 둘을 더하면 무슨 색일까 ?

=>흰색이다 (1.0 , 1.0 , 1.0 )

Q . 노란색 (1 , 1 , 0) 에 빨간색 (1 , 0 , 0) 을 더하면 무슨 색일까 ?

=>노란색이다 (1.0 , 1.0 , 1.0 )

비록 숫자는 1을 넘어섰지만 모니터에서 1 이상의 색상은 표현되지 않기에 노란색으로 보인다 .

즉 , 1보다 밝은 색은 표현되지 않는다

 

Q . 노란색 (1 , 1 , 0) 에 빨간색 (1 , 0 , 0) 을 빼면 무슨 색일까 ?

=>초록색이다 (0 , 1.0 , 0 )

또한 뺄셈도 0 이하의 색이 만들어 질 수 있지만 0 이하의 숫자는 0으로 보이기때문에 그대로 보인다 .

다만 , 숫자로는 -1과 같이 음의 값을 여전히 가지고 있음을 주의해야 한다

 

02 . 곱셈과 나눗셈

Q . 회색 (0.5 , 0.5 , 0.5) 둘을 곱하면 무슨 색일까 ?

=>진한 회색이다 ( 0.25 , 0.25 , 0.25 )

 

+나눗셈도 동일하게 계산은 가능하지만 , 나눗셈은 상대적으로 계산도 느리고 곱셈연산으로

대치 가능하기에 잘 사용하지 않는다 .

 

03 . 컬러의 반전

Q . 빨간색을 반전시키면 어떤 색일까?

=>하늘색이다 (0,1,1)

1에서 어떤 색을 빼면 그색이 반전된다

 

+ 1- x 연산은 흰색을 검정으로 , 검정을 흰색으로 뒤집어주는 등의 역할을 할 수 있기에 실제 쉐이더 계산에서 자주 사용됨

 

 

출처

https://www.youtube.com/watch?v=BMT0xCxP6w8

https://www.youtube.com/watch?v=aYTJY_DneSY&t=20s

https://rito15.github.io/posts/rendering-pipeline/

유니티 쉐이더 스타트업

https://www.youtube.com/watch?v=aYTJY_DneSY