
"감마 공간(sRGB)"과 "감마 보정"은 다른 이야기예요.
모니터는 전기신호를 받으면 자동으로 어둡게 출력하는 특성이 있어요 (CRT 시절부터 이어진 물리적 특성, 감마 2.2).
그래서 사진/텍스처를 저장할 때 미리 반대로 밝게 저장해둬요 → 이게 sRGB(감마 공간).
모니터가 어둡게 출력할 거니까, 미리 밝게 저장해서 최종 결과가 정상으로 보이게
렌더링 연산(조명, 블렌딩 등)은 선형 공간에서 해야 정확해요.
그래서 sRGB 텍스처를 GPU에 올릴 때 감마 보정(디코딩) 을 해서 선형 값으로 되돌려요.
sRGB(밝음) → 감마 보정 → Linear(어두워짐) → 연산 → 다시 sRGB 인코딩 → 모니터
| 감마 파이프라인 | 선형 파이프라인 | |
|---|---|---|
| ADD 연산 시점 | sRGB 상태(이미 밝음)에서 더함 | Linear 상태(어두움)에서 더함 |
| 결과 | 밝은 값 + 밝은 값 = 과하게 밝아짐 | 정확한 물리값끼리 더해서 올바른 밝기 |
한 줄 요약:
모니터는 전기신호를 받으면 물리적으로 어둡게 출력하는 특성이 있어요 (감마 2.2).
그래서 이미지를 저장할 때 미리 밝게 보정해서 저장해두는데, 이게 sRGB(감마 공간) 이에요.
저장할 때 밝게 → 모니터가 어둡게 출력 → 눈에는 정상으로 보임
| sRGB (감마 공간) | Linear (선형 공간) | |
|---|---|---|
| 저장 방식 | 밝게 보정해서 저장 | 빛의 물리량 그대로 저장 |
| 눈에 보이기엔 | 밝고 자연스러움 | 어둡고 단조로워 보임 |
| 어두운 영역 | 세밀하게 표현됨 | 정보가 적어 뭉개짐 |
| 연산 정확도 | 조명/블렌딩 계산이 틀림 | 물리적으로 정확 |
위쪽 그라데이션 = sRGB 저장 상태 (밝게 보정됨)
↓ 감마 디코딩 적용 Linear = sRGB ^ 2.2
아래쪽 그라데이션 = Linear 변환 후 (물리적 실제값, 어두워짐)
예시: sRGB 0.5 → 0.5 ^ 2.2 ≈ 0.217 로 확 어두워짐
감마 파이프라인 (잘못된 방식)
선형 파이프라인 (올바른 방식)
텍스처의 sRGB 체크박스를 켜두면 GPU가 자동으로 디코딩 처리
텍스처(sRGB 저장)
→ GPU가 자동 디코딩 → Linear값으로 셰이더에 전달
→ 조명/블렌딩 연산 (정확)
→ 다시 sRGB 인코딩 → 모니터 출력
sRGB 체크박스를 끄면 GPU가 디코딩을 안 해서 감마 공간 상태로 연산하게 되고, 조명 계산이 틀어짐