🔹 PBR에서 Point Light는 “형식은 유지, 방식은 진화”
항목 | 전통적 모델 (Phong/Blinn-Phong) | PBR (Physically Based Rendering) |
광원의 종류 | Point, Directional, Spot 등 | 동일하게 유지 |
조명 감쇠 (Attenuation) | 보통 수동 설정
| 실제 물리 법칙 기반 or 에너지 보존 모델 |
빛의 세기 | 임의의 RGB 색상 및 강도 | 실제 단위 (cd, lux 등) 기반 가능 |
조명 모델 | Phong or Blinn-Phong(분리된 Ambient, Diffuse, Specular) | Microfacet BRDF 기반(GGX, Cook-Torrance 등) |
표면 반응 | Diffuse = LambertSpecular = empirical | Diffuse + Fresnel + Geometry + Distribution에너지 보존 법칙 충실 |
법선 벡터 | 단순한 벡터 기반 조명 | tangent space normal map 사용 등 세밀한 광반응 계산 |
🔸 PBR에서 Point Light의 역할
PBR에서도 Point Light는 여전히:
- 3차원 공간상 하나의 위치에서
- 모든 방향으로 동일하게 빛을 방출하는 광원
으로 정의됩니다.
하지만 다음과 같은 방식으로 조명 방정식의 물리적 충실도가 높아집니다.
🔹 원래 PBR 랜더링 방적식
기호 | 의미 |
지점 에서 관찰 방향 로 반사되는 총 복사휘도 | |
입사광 방향 (광원이 있는 쪽) | |
출사광 방향 (관찰자 방향) | |
입사 방향 에서 들어오는 복사휘도 (광원의 세기) | |
반사 분포 함수 (BRDF): 입사/출사 방향에 따른 반사율 | |
입사각의 코사인: 에너지의 유효 투영면적 보정 | |
입사광이 올 수 있는 반구 영역 (표면 위쪽) | |
입사 방향에 대한 미분 solid angle (입사 방향의 집합에 대한 적분 변수) |
하지만 조명 계산에서 통합된 렌더링 방정식을 그대로 쓰지 않고, 처럼 diffuse와 specular를 분리해서 사용한다. 그 이유는 주로 계산 효율성, 표현 제어, 그리고 렌더링 컨텍스트의 차이에 있습니다.
🔷 1. 렌더링 방정식은 이론적으로 완전하지만 계산 비용이 너무 큼
하지만 이 식을 정확히 계산하려면 다음이 필요합니다.
- 모든 방향의 입사광 \omega_i에 대해 샘플링
- 각 입사 방향에서 를 계산 (즉, 광원 → 표면 경로 추적 필요)
- 재귀적 반사/투과 고려 필요 (간접 조명 포함)
→ 실시간 렌더링에서는 계산량이 매우 크고 비현실적
🔷 2. 따라서 실시간 렌더링에서는 광원을 “명시적으로” 분리
👉 핵심 전략: 광원 수만큼의 유한한 샘플링
렌더링 방정식의 적분을 점광원 단위의 유한한 합으로 근사합니다:
그리고 이 를 구현할 때:
- 일반적으로
- 따라서 계산도 분리해서:
이렇게 하면:
- 각 항목을 독립적으로 제어 가능 (예: roughness, metallic 등에 따른 가중치 조절)
- 최적화 가능성 증가 (특정 조건에서 생략 또는 LUT 사용 가능)
- 아티스트/사용자 편의성 증가 (쉐이더 파라미터로 쉽게 조절)
🔷 3. 조명 항목 분리는 BRDF 설계에서도 자연스러운 방식
많은 BRDF 모델은 본래부터 다음처럼 구성됩니다:
- Lambert, Oren–Nayar 등은 diffuse 계열
- Cook–Torrance, Blinn–Phong 등은 specular 계열
따라서 렌더링 방정식을 해석할 때도 분리된 항으로 정리하는 것이 논리적으로 타당하고, 실제 구현 시에는 표면 특성에 따라 한 쪽을 생략하는 것도 가능해집니다.
🔷 4. 실용적 장점: PBR 파라미터 적용이 직관적
Blender나 Unity, Unreal 같은 엔진에서는 사용자에게 다음과 같은 파라미터를 제공합니다:
- Base Color, Metallic, Roughness, Specular, Clearcoat …
이들은 Diffuse와 Specular를 따로 제어하는 데에 매우 적합하므로, 모델을 분리하여 사용하는 방식이 더 모듈화되고 직관적입니다.
🔷 5. 요약 비교
항목 | 렌더링 방정식 (적분형) | Diffuse + Specular 분리형 |
모델링 | 물리적으로 가장 정확한 일반식 | 실제 사용 시 계산 간략화된 형태 |
계산량 | 높음 (다방향 샘플링 필요) | 낮음 (광원별 단일 평가) |
적용 | 주로 오프라인 렌더링 (e.g. path tracing) | 주로 실시간 렌더링 |
제어 | 하나의 통합 함수 내에서 반응 | 사용자 파라미터 기반 제어 쉬움 |
확장성 | 이론적으로 매우 강력 | 성능과 직관성 중심으로 설계됨 |
✅ 결론
렌더링 방정식은 이론적으로 완전한 모델이지만, 실시간 렌더링과 인터랙티브 시스템에서는 효율성과 제어 용이성을 위해 일반적으로 Diffuse + Specular 분리형 모델 이것은 학문적 타당성과 실용적 필요성 사이의 균형을 반영한 결정입니다.
🔷 1. 수식 개요
PBR에서 Point Light로 인한 조명 계산은 다음과 같은 형태의 식으로 표현됩니다. 이 수식은 특정 지점에서 입사광 가 어떻게 반사되어 관찰자 방향 로 나오는지(=출사광 )를 계산합니다.
🔷 2. 물리적 해석: 각 요소의 의미
기호 | 명칭 | 설명 |
출사 복사휘도 (Outgoing Radiance) | 관찰자가 보는 방향으로 반사된 빛의 세기 | |
입사 복사휘도 (Incoming Radiance) | 광원으로부터 들어오는 빛의 세기 (예: Point Light의 세기) | |
입사 방향 (Light Direction) | 표면 지점에서 광원을 향한 단위 벡터 | |
출사 방향 (View Direction) | 표면 지점에서 카메라 또는 눈 방향으로 향하는 단위 벡터 | |
법선 벡터 (Normal Vector) | 표면의 수직 방향 (normalized) | |
half vector | 입사광과 반사광의 중간 벡터 (specular reflection 계산에 사용) |
🔷 3. 각 구성요소 세부 설명
🟨 1. Fresnel Term:
- 빛이 표면에 닿을 때 반사되는 비율을 각도에 따라 조절합니다.
- 입사각이 작을수록 (빛이 표면에 수직) → 반사 적음
- 일반적으로 Schlick 근사를 사용:
- : 표면의 정면 반사율 (예: 금속은 높고, 비금속은 낮음)
입사각이 클수록 (빛이 스치듯 들어옴) → 반사 많음
🟨 2. Geometry Term: G(\omega_i, \omega_o, \mathbf{n})
- 마이크로 표면에 의해 빛이 가려지거나 마스킹되는 정도를 나타냅니다.
- 즉, 입사광과 반사광이 얼마나 효율적으로 표면과 상호작용하는지 측정
- 여러 모델이 존재하나 대표적으로 Smith G term:
G = G_1(\omega_i) \cdot G_1(\omega_o)
Smith 함수 예시:
G_1(\omega) = \frac{2 (\mathbf{n} \cdot \omega)}{(\mathbf{n} \cdot \omega) + \sqrt{\alpha^2 + (1 - \alpha^2)(\mathbf{n} \cdot \omega)^2}}
- \alpha: 표면 거칠기 (roughness, 0~1)
🟨 3. Distribution Term: D(\mathbf{h})
- 마이크로 표면이 특정 방향을 얼마나 잘 따르는지를 나타냅니다.
- 즉, 얼마나 많은 마이크로면이 \mathbf{h} 방향으로 정렬되어 있는지
- 대표적으로 GGX 분포 함수가 사용됩니다:
D(\mathbf{h}) = \frac{\alpha^2}{\pi \left[(\mathbf{n} \cdot \mathbf{h})^2 (\alpha^2 - 1) + 1\right]^2}
- \alpha: 거칠기 roughness → 거칠수록 하이라이트가 넓어짐
🟨 4. 분모: 4 (\mathbf{n} \cdot \omega_i)(\mathbf{n} \cdot \omega_o)
- 이 항은 입사 및 반사 방향이 표면과 이루는 각도의 기하학적 보정입니다.
- 에너지 보존 및 BRDF 정상화 조건을 만족하기 위해 필요합니다.
🔹 PBR Point Light에서 달라지는 주요 특징
- 정확한 에너지 보존 (Energy Conservation)
- 반사되는 빛의 양은 입사광보다 클 수 없음
- Fresnel 반사 고려
- 각도에 따라 반사율이 변화 (Grazing angle에서 더 많이 반사됨)
- 마이크로 표면 구조 고려
- 표면의 거칠기 (roughness)가 하이라이트 모양과 확산 정도 결정
- 실제 물리 단위 활용 가능
- 광원의 밝기 단위를 candela, lux, lumens로 표현 가능
🔹 요약
항목 | PBR의 Point Light에 대한 특징 |
위치 및 방향성 | 전통 모델과 동일 |
감쇠 방식 | inverse-square law (자연스러움 강화) |
조명 모델 | BRDF 기반의 물리적 모델 |
표면 반응 | Roughness, Fresnel 등 포함 |
하이라이트 표현 | 더 정확하고 현실적인 specular 표현 |
필요하시면 Unity 또는 Unreal Engine에서 PBR 기반 Point Light가 어떻게 설정되고 계산되는지도 예시로 보여드릴 수 있습니다.
좋습니다.
아래는 **Physically Based Rendering (PBR)**에서 사용되는 핵심 반사 모델인 Cook-Torrance BRDF 기반 조명 수식의 원리와 변수 설명입니다.
🔷 1. 수식 개요
PBR에서 Point Light로 인한 조명 계산은 다음과 같은 형태의 식으로 표현됩니다:
L_o = \frac{F(\omega_i, \mathbf{h}) \cdot G(\omega_i, \omega_o, \mathbf{n}) \cdot D(\mathbf{h})}{4 (\mathbf{n} \cdot \omega_i)(\mathbf{n} \cdot \omega_o)} \cdot L_i
이 수식은 특정 지점에서 **입사광 L_i**가 어떻게 반사되어 **관찰자 방향 \omega_o**로 나오는지(=출사광 L_o)를 계산합니다.
🔷 3. 각 구성요소 세부 설명
🟨 1. Fresnel Term: F(\omega_i, \mathbf{h})
- 빛이 표면에 닿을 때 반사되는 비율을 각도에 따라 조절합니다.
- 입사각이 작을수록 (빛이 표면에 수직) → 반사 적음
- 일반적으로 Schlick 근사를 사용:
입사각이 클수록 (빛이 스치듯 들어옴) → 반사 많음
F(\omega_i, \mathbf{h}) = F_0 + (1 - F_0)(1 - (\omega_i \cdot \mathbf{h}))^5
- F_0: 표면의 정면 반사율 (예: 금속은 높고, 비금속은 낮음)
🟨 2. Geometry Term: G(\omega_i, \omega_o, \mathbf{n})
- 마이크로 표면에 의해 빛이 가려지거나 마스킹되는 정도를 나타냅니다.
- 즉, 입사광과 반사광이 얼마나 효율적으로 표면과 상호작용하는지 측정
- 여러 모델이 존재하나 대표적으로 Smith G term:
G = G_1(\omega_i) \cdot G_1(\omega_o)
Smith 함수 예시:
G_1(\omega) = \frac{2 (\mathbf{n} \cdot \omega)}{(\mathbf{n} \cdot \omega) + \sqrt{\alpha^2 + (1 - \alpha^2)(\mathbf{n} \cdot \omega)^2}}
- \alpha: 표면 거칠기 (roughness, 0~1)
🟨 3. Distribution Term: D(\mathbf{h})
- 마이크로 표면이 특정 방향을 얼마나 잘 따르는지를 나타냅니다.
- 즉, 얼마나 많은 마이크로면이 \mathbf{h} 방향으로 정렬되어 있는지
- 대표적으로 GGX 분포 함수가 사용됩니다:
D(\mathbf{h}) = \frac{\alpha^2}{\pi \left[(\mathbf{n} \cdot \mathbf{h})^2 (\alpha^2 - 1) + 1\right]^2}
- \alpha: 거칠기 roughness → 거칠수록 하이라이트가 넓어짐
🟨 4. 분모: 4 (\mathbf{n} \cdot \omega_i)(\mathbf{n} \cdot \omega_o)
- 이 항은 입사 및 반사 방향이 표면과 이루는 각도의 기하학적 보정입니다.
- 에너지 보존 및 BRDF 정상화 조건을 만족하기 위해 필요합니다.
🔷 4. 전체 동작 원리 요약
- Point Light는 위치와 색상을 가지며, 거리 제곱 감쇠에 따라 L_i를 제공합니다.
- 표면은 특정 방향(법선 \mathbf{n})과 거칠기(roughness), 금속성(metallic)에 따라 다르게 반사합니다.
- 위 BRDF 수식은 이런 반응을 기반으로 관찰자 방향으로 반사되는 빛 L_o를 계산합니다.
🔷 5. 추가: Diffuse 성분 포함 (보통은 다음과 같이 합쳐 계산)
PBR에서는 보통 전체 조명을 이렇게 구성합니다:
L_o = (k_d \cdot \text{Diffuse}) + (k_s \cdot \text{Specular})
- Diffuse (Lambert):
- Specular는 위 Cook-Torrance 모델
- k_d, k_s는 재질의 metalness에 따라 자동 분리됨:
\text{Diffuse} = \frac{L_i}{\pi} \cdot (\mathbf{n} \cdot \omega_i)
(비금속일 때만 활성화됨)
k_s = F(\omega_i, \mathbf{h}), \quad k_d = (1 - k_s)(1 - \text{metallic})
🔷 요약 도표
항목 | 의미 | 설명 |
L_o | 출사 휘도 | 화면에 그릴 픽셀의 조명 결과 |
L_i | 입사 휘도 | Point Light에서 오는 빛 |
\omega_i, \omega_o | 입사/출사 방향 | 광원 및 카메라 방향 |
\mathbf{n} | 법선 벡터 | 표면의 방향성 |
\mathbf{h} | half vector | 입사/출사 중간 벡터 |
F | Fresnel | 각도에 따른 반사율 변화 |
G | Geometry | 마이크로 면에 의한 가림 효과 |
D | Distribution | 하이라이트의 날카로움 결정 |
\alpha | roughness | 표면 거칠기, 하이라이트 넓이 조절 |
필요하시다면 이 모델을 기반으로 한 GLSL 쉐이더 구현 예제나, Unreal/Unity에서의 실제 적용 방식도 안내드릴 수 있습니다.
네, 정확히 그렇습니다.
당신이 제시한 이 수식은 diffuse term과 specular term 모두를 포함하는
통합적이고 일반적인 조명 모델, 즉 **렌더링 방정식(Rendering Equation)**의 표면 반사 성분에 대한 통합 표현입니다.
🔷 수식 다시 보기
L_o(\mathbf{p}, \omega_o) = \int_{\Omega} f_r(\omega_i, \omega_o) \cdot L_i(\omega_i) \cdot (\mathbf{n} \cdot \omega_i) \, d\omega_i
🔷 구성 요소 설명
🔷 핵심 포인트: f_r(\omega_i, \omega_o) = Diffuse + Specular
✔️ f_r: BRDF는 다음을 포함합니다
f_r = f_{\text{diffuse}} + f_{\text{specular}}
- 예: Cook-Torrance BRDF는 다음과 같이 구성됨:
f_r = \underbrace{\frac{(1 - F_0)(1 - \text{metallic})}{\pi}}{\text{Diffuse: Lambertian}} + \underbrace{\frac{F \cdot D \cdot G}{4 (\mathbf{n} \cdot \omega_i)(\mathbf{n} \cdot \omega_o)}}{\text{Specular: Microfacet}}
즉, 위 수식은 Lambertian과 Cook-Torrance 둘 다를 f_r 안에 포함하며,
이 적분 하나로 전체 반사 조명을 표현할 수 있습니다.
🔷 요약 정리
항목 | 설명 |
수식 역할 | 표면에서 나오는 총 반사 조명을 계산 |
포함 요소 | Diffuse + Specular 모두 포함 |
핵심 함수 | BRDF f_r: 재질에 따라 달라지며, diffuse + specular를 모두 포괄 |
왜 적분인가? | 입사 방향 전체를 고려해서 총 반사 조명을 합산하기 위해 |
실제 구현 시 | 이 적분은 실시간 렌더링에선 보통 근사 (예: point light 방향만 샘플링) |
✅ 결론
네, 이 수식은 Diffuse term과 Specular term을 모두 포함하는 일반적인 조명 모델입니다.
핵심은 f_r(\omega_i, \omega_o)이며, 이는 재질에 따라 구성되어 두 반사 성분 모두를 포함합니다.
필요하시면 이 수식이 실시간 렌더링에서는 어떻게 근사화되고, 레이트레이싱에서는 어떻게 샘플링 기반으로 구현되는지도 설명드릴 수 있습니다.