19. sRGB
지금은 모니터가 디지털이지만, 여전히 감마로 인코딩된 입력 신호를 수신합니다.
이미지 파일과 비디오 파일은 감마 공간에 있게 명시적으로 인코딩됩니다. 따라서
리니어 강도가 아닌 감마 인코딩 값을 포함합니다. 이 방식이 표준이며, 모든 것은
감마 공간에 있습니다.
널리 인정되는 감마 공간 표준을 sRGB(위키피디아 참조)이라고 합니다. 이 표준은
사람의 눈이 채널당 8비트 정밀도를 최대한 이용할 수 있게 하는 리니어 공간으로
의 매핑을 정의합니다. 이 매핑은 아래 다이어그램에 나와 있습니다
(유니티 공식 문서)
20.
21. 텍스쳐 Import
sRGB 체크 – 감마공간 텍스쳐 인지 유무, 리니어 컬러로 세팅된 경우에만 적용됨.
체크 – 리니어 공간에 맞게 감마 텍스쳐를 Gamma Correction 해준다
체크 해제 – 만약 텍스쳐가 리니어 컬러 공간(Gamma 1.0)에서 제작된 경우,
체크를 해제 하면, Gamma Correction을 적용 안함(Bypass)
35. Gamma UI Texture의 알파 문제 in Unity Linear Color
• 일반 UI Texture는 감마 스페이스 기준으로 제작됨
• 앞의 알파 블렌드 공식을 어떻게 적용해야 하나?!!
• 유니티에서 기본적인 해결 방법을 제공 안해줌!
36. Gamma UI Texture 해결 방법 #1
• 걍 모든 텍스쳐를 포토샵에서 Linear Color Space로 변환
• UI 아티스트만 고생하면됨(?)
• 프로젝트 변경 작업 불필요
• 하지만?
이미 너무 많이 만들었어?!!
37. Gamma UI Texture 해결 방법 #2
• 프로그래밍 사이드에서 해결 방법
• 언리얼 엔진의 해결 방법 차용
• 아래 방법의 정반대로 렌더링
• 텍스쳐는 sRGB 체크 해제 (감마 공간 그대로 사용)
38. Gamma UI Texture 해결 방법 #2
• 리니어 세팅에서 기본 렌더타겟은 리니어 스페이스
• 2대의 카메라 이용 (1 – 게임 렌더링 2 - UI만 렌더링)
UI를 제외한
게임 렌더링
Render Target
1번 카메라
게임 화면만을 렌더링, 이후 셰이더 코드를 통해서,
렌더 타겟을 Linear -> Gamma로 변환
42. Gamma UI Texture 해결 방법 #2
• 리니어 세팅에서 기본 렌더타겟은 리니어 스페이스
• 2대의 카메라 이용 (1 – 게임 렌더링 2 - UI만 렌더링)
UI를 제외한
게임 렌더링
Render Target
43. Gamma UI Texture 해결 방법 #2
• 2번째 UI 카메라로 감마공간으로 변환된 렌더 타겟에 UI만
• 이때는, 렌더타겟과 텍스쳐 둘다 Gamma라서 알파 블렌딩이
제대로 수행됨
UI를 제외한
게임 렌더링
Render Target
UI Texture
UI만 렌더링UI 카메라
sRGB 체크 해제(bypass)
감마 그대로 사용
44. Gamma UI Texture 해결 방법 #2
• UI 렌더링 이후 렌더 타겟을 다시 리니어로 보간
• 유니티의 리니어 렌더링 최종 렌더 버퍼는 리니어 공간이어야 함
UI를 제외한
게임 렌더링
Render Target
UI Texture
UI만 렌더링UI 카메라