핵심 정리
| 항목 | 의미 |
|---|---|
| Ambient | 간접광을 단순 근사한 기본 밝기 |
| Diffuse | 표면 normal과 빛 방향의 관계 |
| Specular | 시선 방향으로 반사되는 하이라이트 |
| Lambert | max(dot(N, L), 0) diffuse |
| Blinn-Phong | half vector 기반 specular 근사 |
구조
조명 모델은 빛, 표면, 카메라의 관계를 계산해 색을 만듭니다. 가장 기본적인 diffuse 조명은 표면 normal과 빛 방향의 dot product를 사용합니다.
diffuse = max(dot(normal, lightDir), 0)normal이 빛을 향하면 밝고, 옆을 향하면 어두우며, 반대 방향이면 0이 됩니다. specular는 view direction과 reflection 또는 half vector를 사용해 하이라이트를 만듭니다.
공간 일치
normal, light direction, view direction은 같은 좌표 공간에 있어야 합니다. 하나는 world space이고 다른 하나는 view space이면 dot product가 의미를 잃습니다.
선택 기준
| 목표 | 모델 |
|---|---|
| 기본 조명 개념 학습 | Lambert + Blinn-Phong |
| 물리 기반 재질 | PBR, microfacet BRDF |
| 스타일화된 표면 | toon, ramp shading |
| 실시간 다중 조명 | 비용과 light culling 고려 |
| 간접광 표현 | ambient, IBL, GI |
기본 조명 모델은 이해하기 쉽지만 에너지 보존, 재질 일관성, 환경광 반사 표현에는 한계가 있습니다. 현대 실시간 렌더링은 대개 PBR 모델을 사용합니다.
주의할 점
ambient 값을 단순히 크게 올리면 그림자가 사라지고 재질이 납작해 보일 수 있습니다. 어두운 영역을 밝히려면 간접광, ambient occlusion, image-based lighting 같은 축을 함께 봐야 합니다.
또 specular 색과 강도를 임의로 조절하면 금속/비금속 재질의 일관성이 깨질 수 있습니다.
참고 링크
1 sources