핵심 정리
| 항목 | 의미 |
|---|---|
| Microfacet | 표면을 미세 거울들의 분포로 근사 |
| NDF | 미세 표면 방향 분포 |
| Geometry term | 미세 표면끼리 가리고 막는 효과 |
| Fresnel | 시야각에 따른 반사율 변화 |
| IBL | environment map으로 간접광과 반사를 근사 |
구조
microfacet PBR은 specular highlight를 단순한 지수 함수로 만들지 않습니다. 표면이 아주 작은 면들의 집합이라고 보고, 그중 half vector 방향을 향한 미세 표면이 빛을 얼마나 반사하는지 계산합니다.
specular ~= NDF * Geometry * FresnelNDF는 roughness에 따라 미세 표면 방향이 얼마나 퍼져 있는지 나타냅니다. roughness가 낮으면 정렬된 미세 표면이 많아 하이라이트가 작고 강하며, roughness가 높으면 넓고 흐린 반사가 됩니다.
Geometry term은 미세 표면끼리 빛을 가리거나 시야를 막는 효과를 근사합니다. Fresnel은 표면을 비스듬히 볼수록 반사가 강해지는 현상을 다룹니다.
IBL
IBL은 주변 환경을 texture로 저장해 간접광을 근사합니다. diffuse는 irradiance map처럼 넓게 적분한 환경광을 쓰고, specular는 roughness별로 prefilter된 environment map과 BRDF lookup table을 함께 씁니다.
연결 기준
| 문제 | 연결해서 볼 것 |
|---|---|
| 금속이 검게 보임 | environment lighting, reflection |
| roughness 변화가 약함 | specular prefilter, mip chain |
| 가장자리 반사가 어색함 | Fresnel |
| 재질이 플라스틱처럼 보임 | metallic workflow, baseColor |
| 전체가 씻겨 보임 | tone mapping, exposure |
PBR은 재질 카드 하나로 끝나지 않습니다. BRDF, texture color space, environment lighting, shadow, tone mapping이 함께 맞아야 자연스럽게 보입니다.
주의할 점
PBR 값이 물리적으로 그럴듯해도 조명 환경이 비어 있으면 결과는 어둡거나 납작하게 보입니다. 특히 금속은 diffuse가 거의 없고 반사에 크게 의존하므로 IBL 품질이 중요합니다.
또 roughness는 단순 blur 값이 아니라 BRDF와 environment prefilter를 함께 움직이는 파라미터입니다. roughness texture를 sRGB로 읽으면 반사 폭이 의도와 달라질 수 있습니다.
참고 링크
2 sources