LYSC STUDIO

LIST
Cover

물리 기반 렌더링(PBR)의 심연: 커스텀 엔진을 위한 고급 마이크로패싯 BRDF 구현 가이드

·3D Art & Tech

현대 3D 그래픽스의 핵심인 PBR의 수학적 기반을 해부하고, 독자적인 렌더링 엔진에 적합한 최적화된 마이크로패싯 모델을 구축하는 방법을 깊이 있게 탐구합니다.

1. 서론: 물리 기반 렌더링의 철학

현대의 인디 게임 개발과 상용 게임 엔진에서 물리 기반 렌더링(Physically Based Rendering, PBR)은 선택이 아닌 필수가 되었습니다. 단순한 휴리스틱 퐁(Phong) 셰이딩이나 블린-퐁(Blinn-Phong) 모델을 넘어서, 빛과 물질 간의 실제 물리적 상호작용을 수학적으로 모사하는 PBR은 아티스트에게 직관적인 파라미터(Base Color, Metallic, Roughness)를 제공하면서도, 어떠한 조명 환경에서도 일관되고 사실적인 결과를 보장합니다. 본 칼럼에서는 커스텀 렌더링 엔진을 개발하고자 하는 그래픽스 프로그래머와 테크니컬 아티스트를 위해, 마이크로패싯(Microfacet) 이론에 기반한 양방향 반사 분포 함수(BRDF)의 수학적 근간을 파헤치고, 이를 최적화하여 셰이더로 구현하는 전 과정을 상세히 논의합니다.

2. 렌더링 방정식(The Rendering Equation)과 에너지 보존 법칙

모든 빛의 계산은 제임스 카지야(James Kajiya)가 1986년에 발표한 렌더링 방정식에서 출발합니다. 특정 지점 x에서 방향 o로 향하는 빛의 양(Radiance)은 해당 지점에서 자체 발광하는 빛의 양과, 반구(Hemisphere) 내의 모든 방향 i에서 들어와 o 방향으로 반사되는 빛의 양의 적분합으로 표현됩니다. 여기서 가장 핵심적인 역할을 하는 것이 바로 BRDF입니다. 완벽한 PBR 모델을 구성하기 위해서는 이 BRDF가 반드시 '헬름홀츠 가역성(Helmholtz Reciprocity)'과 '에너지 보존 법칙(Energy Conservation)'을 만족해야 합니다. 즉, 들어온 빛보다 더 많은 빛이 반사되어서는 안 되며, 빛의 입사 방향과 반사 방향을 뒤바꾸어도 결과값은 동일해야 합니다.

3. 마이크로패싯 모델(Microfacet Model)의 해부

마이크로패싯 이론은 표면이 미시적인 관점에서 무수히 많은 미세한 평면(거울)들로 이루어져 있다고 가정합니다. 각 미세 표면은 입사광을 완벽하게 정반사(Specular reflection)하며, 이 미세 표면들의 법선(Normal) 분포에 따라 매크로 표면의 거칠기(Roughness)가 결정됩니다. 마이크로패싯 BRDF는 일반적으로 Cook-Torrance 모델을 따르며 크게 세 가지 항으로 구성됩니다. 법선 분포 함수(NDF, D), 프레넬 방정식(Fresnel, F), 그리고 기하 감쇠 함수(Geometry, G)입니다.

4. 각 항의 심층 분석 및 최적화 전략

4.1. 법선 분포 함수 (Normal Distribution Function, D)

NDF는 미세 표면의 법선 m이 하프 벡터 h와 일치하는 비율을 통계적으로 나타냅니다. 에픽게임즈의 언리얼 엔진 4에서 채택하여 현재 업계 표준으로 자리 잡은 GGX (Trowbridge-Reitz) 분포는 긴 꼬리(Long tail) 특성을 가져 금속 표면의 하이라이트를 매우 사실적으로 렌더링합니다. 모바일이나 저사양 하드웨어에서는 분모의 제곱 연산이 병목을 일으킬 수 있으므로, 하프 정밀도(fp16) 연산을 활용하거나 근사식을 사용하는 최적화 기법이 종종 적용됩니다.

4.2. 프레넬 방정식 (Fresnel Equation, F)

프레넬 항은 빛이 관찰 각도에 따라 반사되는 비율과 굴절되는 비율이 어떻게 달라지는지를 설명합니다. 굴절률(IOR)이 다른 두 매질의 경계에서 시야각이 얕아질수록 반사율이 극적으로 증가하는 현상을 시뮬레이션합니다. 실시간 렌더링에서는 복잡한 프레넬 방정식을 계산하는 대신, Schlick의 근사식을 광범위하게 사용합니다. 여기서 F0는 수직 입사 시의 기본 반사율을 의미하며, 비금속(Dielectric)의 경우 주로 0.04(4%) 상수 값을 사용합니다.

4.3. 기하 감쇠 함수 (Geometry Function, G)

미세 표면들은 서로를 가리거나(Shadowing) 빛을 차단(Masking)할 수 있습니다. 기하 함수는 이러한 미세 표면 간의 차폐 현상을 확률적으로 모델링하여 하이라이트가 과도하게 밝아지는 것을 방지합니다. Schlick-GGX 모델이 주로 사용되며, 시야 방향에 대한 차폐와 빛 방향에 대한 차폐를 각각 계산하여 곱하는 Smith 방법(Smith's method)이 보편적입니다. 최근에는 Correlated Smith 모델이 대두되어, 그림자와 마스킹이 완전히 독립적이지 않다는 물리적 사실을 반영함으로써 더욱 정확한 에너지 보존을 달성하고 있습니다.

5. 다중 산란(Multiple Scattering)과 에너지 손실 문제 해결

전통적인 Cook-Torrance 마이크로패싯 모델의 가장 큰 한계점 중 하나는 '단일 산란(Single Scattering)'만을 가정한다는 것입니다. 즉, 미세 표면 사이에서 여러 번 반사되는 빛(다중 산란)을 무시하기 때문에, 거칠기가 높은 표면일수록 렌더링 결과물이 물리적으로 불가능할 정도로 어두워지는 에너지 손실 현상이 발생합니다. 이를 해결하기 위해 최근의 하이엔드 렌더링 파이프라인에서는 다방향 룩업 텍스처(LUT)를 활용하여 잃어버린 에너지를 보충하는 기법을 구현하고 있습니다.

6. 결론: 커스텀 엔진으로의 통합

PBR 파이프라인을 커스텀 엔진에 이식하는 과정은 단순히 공식 몇 개를 HLSL이나 GLSL로 옮기는 것이 아닙니다. 톤 매핑(Tone Mapping), 감마 교정(Linear Color Space), 그리고 이미지 기반 조명(IBL)과의 유기적인 결합이 필수적입니다. 디퍼드 렌더러(Deferred Renderer)의 G-Buffer 설계 시 Roughness, Metallic, Normal, BaseColor를 어떻게 압축하여 대역폭(Bandwidth)을 절약할 것인지에 대한 엔지니어링적 고민도 동반되어야 합니다.

Implementation Code
float D_GGX(float NdotH, float roughness)
{
    float a = roughness * roughness;
    float a2 = a * a;
    float NdotH2 = NdotH * NdotH;
    float num = a2;
    float denom = (NdotH2 * (a2 - 1.0) + 1.0);
    denom = 3.14159 * denom * denom;
    return num / max(denom, 0.0000001);
}
PBR 모델에 대한 깊은 이해는 그래픽 프로그래머가 셰이더의 성능을 최적화하고, 테크니컬 아티스트가 머티리얼 시스템의 한계를 극복하는 데 핵심적인 통찰을 제공합니다.