일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Custom Package
- Unity Editor
- unity
- Dots
- sha
- AES
- Dynamic Font
- Framework
- Job 시스템
- 가이드
- jumping ball
- 샘플
- base64
- RSA
- 최적화
- 2D Camera
- Tween
- 이미지 폰트
- 텍스트 메시 프로
- TextMeshPro
- DotsTween
- job
- 다이나믹 폰트
- ui
- 커스텀 패키지
- 프레임워크
- 암호화
- adfit
- C#
- 단말기 해상도
- Today
- Total
EveryDay.DevUp
[Unity] Gamma ( 감마 보정, 감마 색 공간 ) vs Linear ( 선형 색 공간 ) 본문
● Gamma ( 감마 보정, 감마 색 공간 )
: 선형적인 이미지의 색을 사람의 눈에 자연스럽게 모니터에 보일 수 있도록 이미지를 특정하게 수정하는 방법
※ 베버의 법칙
: 인간의 시각은 밝기에 대해 비선형적으로 반응하기 때문에 어두운 부분의 경우 밝기가 변할 때 부드럽게 느껴지지 않고 단절 되어 보이는 현상이 발생
: 왼쪽이 선형적인 그레디언트. 오른쪽이 인간의 시각으로 보았을 때의 그레디언트로, 왼쪽이 정상적으로 균일하게 색이 분할된 그레디언트이지만, 인간은 오른쪽의 그레디언드가 자연 스럽다고 생각함
▶ 감마 보정 방법
● Linear ( 선형 색 공간 )
: 감마 보정을 하지 않은 원본 이미지 ( 하지만 이미지는 저장 시 밝게 처리 됨, Unity에 이미지 임포트 시 sRPG를 체크함으로 써 선형 이미지를 사용할 수 있음 )
: 선형적인 처리가 감마 보정을 한 것보다 색을 정확하게 나타낼 수 있음
: 선형 색 공간을 사용하기 위한 제한 사항이 있기 때문에 감마 색 공간을 사용했었지만, 단말기 하드웨어 스펙의 상승으로 제한이 많이 없어짐
Android OpenGL 3.0 그래픽스 API , OS 4.3 이상
IOS Metal 그래픽스 API 필수
● Unity에서 Linear ( 선형 색 공간 ) 적용
: Unity에서는 밝게 저장된 이미지를 sRGB가 체크되어 있으면 정상적으로 모니터에 출력될 수 있도록 어둡게 처리함
( 감마일 경우에는 sRGB를 해제하거나 체크를 하여도 이미지에 변화가 없음, 리니어 일때만 위와 같은 변화가 생김 )
: 감마 색 공간에서는 밝게 보정된 이미지 2개가 합쳐지면서 너무 밝게 이미지가 ADD 되는 경우가 발생
: 리니어 색공간에서는 어둡게 처리된 이미지 2개가 합쳐진 후 다시 밝게 이미지가 처리되었다가, 모니터에 출력될 때는 다시 어둡게 처리가 됨
● Unity에서 Linear ( 선형 색 공간 ) 사용 시 이슈
▶ 이미지 텍스쳐는 sRGB, 데이터 텍스쳐는 sRGB를 체크 해제한 후 사용해야만 정상적인 동작이 가능함
: 데이터 텍스쳐에 sRGB 체크가 되어 있는 경우, 이미지를 다시 선형 영역으로 계산하는 문제가 발생하기 때문
ex) 0.5 회색 텍스쳐를 uv 좌표로 삼은 경우, 해당 이미지의 sRGB가 체크되면 Unity 내부적으로 텍스쳐를 어둡게 처리하면서 0.5->0.218로 변경 됨. 의도했던 값은 0.5이지만 실제 사용은 0.218을 하게 됨
▶ 라이트 맵을 감마 공간에서 베이크 한 뒤, 감마에서 리니어로 색 공간을 변경한 경우 라이트 맵을 다시 베이크 해야 함
: 라이트 맵은 항상 감마 공간에 저장되는데, 리니어 색 공간인 상태에서는 자동으로 라이트맵을 리니어 색 공간으로 변경하지만 감마 색 공간에서 베이크 했다면 리니어 색 공간으로 자동 변환되지 않기 때문
▶ 라이트 계산은 항상 리니어 색 공간에서 이루어 짐을 고려해야 함
: 감마 색 공간인 경우 밝은 이미지 x 리니어 색 공간의 라이트가 계산 되어 이미지의 품질이 떨어짐
: 리니어 색 공간인 경우 밝은 이미지를 어둡게 처리한 후 리니어 색 공간의 라이트 계산을 함으로써 이미지의 품질이 좋음
참고 자료 : https://docs.unity3d.com/kr/2018.4/Manual/LinearRendering-LinearOrGammaWorkflow.html
참고 자료 : https://www.youtube.com/watch?v=Xwlm5V-bnBc
'Unity' 카테고리의 다른 글
[Unity] DOTS - ECS ( Entity, Component, System ) (0) | 2020.06.02 |
---|---|
[Unity] DOTS ( Data Oriented Technology Stack ) (0) | 2020.06.02 |
[Unity] Editor Ui 스케일링 (0) | 2020.05.25 |
[Unity] URP ( Universal Render Pipeline ) (0) | 2020.05.24 |
[Unity] Addressable Asset System ( 어드레서블 어셋 시스템 ) (0) | 2020.05.24 |