감마(Gamma) and 선형(Linear) Color Space 에 대해

디지털 이미지들은 Gamma Encoding이 되어서 저장되어 있다.

왜?
사람의 눈이 어두움에 훨씬 민감하다.
그래서 어두운 칼러에는 많은 비트 영역을 할 당하고, 빛의 변화가 있는 밝은 쪽은 조금 적은 비트를 할당하여 한정된 비트를 최대한 사용하여 사람 눈과 비슷하게 저장하는 Gamma Encoding을 한다.

이렇게 Gamma Encoding된 이미지들을 모니터에서 보여줄 때는 Video Card에서 Decoding해서 최종 보정된 이미지를 보여준다. Gamma가 적용된 이미지의 encoding/deconding 작업을 Gamma Correction이라고 부른다.
그리고 그 연산 시에 사용되는 Input 값의 지수값을 감마(Gamma)라고 부른다.

결국, 밝게 저장된 Gamma Encoding된 이미지를 모니터에서 Decoding해서 보여주게 되면 Gamma Correction이 발생하여 어두운 영역이 잘 살아 있는 우리 눈이 잘 보이는 것과 비슷한 이미지로 보여지게 되는 것이다.

반면 Linear Color Space는 Gamma Encoding을 사용하지 않는 Color Space다. 수학적으로 정확한 포멧이다.
따라서 Gamma Color Space와는 달리 쉐이더나 색 연산 시에 강점을 가진다.

sRGB는 de-facto standard로 업계에 많이 쓰여지는 색공간이다.
따라서 encode/decode가 하드웨어서 공짜로 지원되는 색공간.
sRGB 형태로 저장된 이미지라면 자동으로 감마 correction 되어 화면에 보여준다.

유니티(2018 버젼부터)는 Linear, Gamma 두 Color Space 모두 지원한다.

참고할 만한 reference:
https://www.cambridgeincolour.com/tutorials/gamma-correction.htm