핵심 정리
| 항목 | 의미 |
|---|---|
| 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를 사용해 하이라이트를 만듭니다.
point light와 spot light는 거리 감쇠를 함께 봐야 합니다. 방향만 맞아도 빛에서 멀어질수록 약해지고, spot light는 cone 안팎의 각도까지 밝기에 영향을 줍니다.
ambient는 실제 간접광 계산이 아니라 “어두운 곳이 완전히 검게 죽지 않게 하는” 단순 근사입니다. 그래서 ambient, diffuse, specular를 더하는 기본 모델은 학습용으로 좋지만, 실제 재질 일관성은 PBR과 IBL에서 더 중요해집니다.
공간 일치
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