Blog

ENGINEERING NOTE

[ Rendering ] 12. Lighting

해당 포스팅은 이상윤님께서 공유해주신 2025 TA Campus 수업 문서 링크를 바탕으로 작성했습니다. 12. Lighting 리얼 빛의 동작을 그대로 모사하는 건 레이트레이싱처럼 어려우니까, 렌더링과 셰이더에서는 빛을 세분화해서 각각 구현 Direct Diff

Unreal Engine
해당 포스팅은 이상윤님께서 공유해주신 2025 TA Campus 수업 문서 링크를 바탕으로 작성했습니다.

12. Lighting

리얼한 빛의 동작을 그대로 모사하는 것은 매우 어렵다. Ray Tracing처럼 광선의 경로를 실제와 가깝게 추적하는 방식은 높은 연산 비용을 요구한다.

따라서 실시간 렌더링과 셰이더에서는 빛을 하나의 복잡한 현상으로 다루지 않고, 여러 구성 요소로 세분화하여 각각을 계산하는 방식을 사용한다.

  • Direct Diffuse
  • Direct Specular
  • Indirect Diffuse
  • Indirect Specular

이 네 가지 요소는 물리적으로 정확한 빛을 완벽히 재현하기 위함이 아니라, 현실과 유사한 시각적 결과를 효율적으로 얻기 위한 실용적인 분해 방식이다.

Direct & Indirect

빛은 반사 횟수에 따라 Direct와 Indirect로 구분된다.

Direct는 광원에서 출발한 빛이 한 번 표면에 닿은 뒤 곧바로 카메라에 도달하는 빛이다.

Indirect는 두 번 이상 반사된 빛이다. 어떤 표면에서 한 번 확산된 빛이 다른 표면에 영향을 주고, 다시 반사되어 카메라에 도달하는 경우가 이에 해당한다.

Diffuse & Specular

빛은 표면에서 반응하는 방식에 따라 Diffuse와 Specular로 구분된다.

Diffuse는 표면이 빛을 받아 여러 방향으로 확산시키는 성분이다. 이는 주로 물체의 Albedo 색에 의해 결정된다. 표면이 가진 고유 색이 빛을 받아 재방출되는 개념에 가깝다.

Specular는 거울 반사에 가까운 성분이다. 빛이 특정 방향으로 강하게 반사되며, 하이라이트를 형성한다. 표면의 매끄러움(Roughness)에 따라 반사의 선명도가 달라진다.

Diffuse VS Albedo

Albedo는 표면의 고유 반사율을 의미한다. 빛의 세기나 조명 정보는 포함하지 않는다.

태양빛이 표면에 닿으면, 표면의 Albedo에 따라 빛이 확산 반사된다. 이 결과가 Direct Diffuse이다. 그리고 이 반사된 빛을 카메라가 관측한다.

Legacy Diffuse Texture는 표면에서 나오는 빛에 대한 정보까지 기록한 텍스쳐이며, PBR에서는 빛 정보와 Albedo, Roughness, AO 텍스쳐를 통해 Diffuse를 셰이더에서 계산한다.

12-1. Direct Diffuse

Direct Diffuse는 광원에서 출발한 빛이 표면에 한 번 닿은 뒤, 확산되어 카메라에 도달하는 빛이다.

예를 들어 태양빛이 물체에 직접 닿고, 그 표면의 Albedo에 따라 여러 방향으로 퍼져 나오는 빛이 이에 해당한다.

12-2. Indirect Diffuse

Indirect Diffuse는 Diffuse 반사가 한 번 더 다른 표면에 영향을 준 뒤, 다시 반사되어 들어오는 빛이다.

즉, 한 표면에서 확산된 빛이 주변 공간을 밝히고, 그 결과가 다시 다른 표면에 기여하는 현상이다. 실내 공간에서 벽의 색이 바닥에 은은하게 묻어나는 현상이 대표적인 예이다.

12-3. Direct Specular

Direct Specular는 광원에서 직접 들어온 빛이 표면에서 거울 반사에 가깝게 반사되어 카메라에 도달하는 빛이다.

태양이나 강한 조명이 금속 표면에 맺히는 하이라이트가 대표적인 예이다. 이는 네 가지 빛 중 가장 강하고 선명한 성분이다.

12-4. Indirect Specular

Indirect Specular는 주변 환경이 표면에 반사되어 보이는 성분이다.

거울처럼 매끄러운 표면은 주변 오브젝트를 또렷하게 반사하며, 거친 표면은 흐릿하게 블러된 환경을 반사한다.

12-5. Modern Lighting Trend

Indirect Diffuse나 Indirect Specular를 정확하게 계산하려면 다중 반사(Multi-bounce)를 고려해야 하므로 연산 비용이 매우 크다. 따라서 실시간 렌더링에서는 Lightmap, Spherical Harmonics, Screen Space GI, 또는 Unreal Engine 5의 Lumen과 같은 근사 기법을 사용한다.

특수한 사례를 제외하면, 대부분의 셰이더는 이 네 가지 빛을 어떤 방식으로 조합하고 해석할 것인지에 대한 구현상의 선택이다.

물리적으로 완전한 정답이 있다기보다는, 현실에 가까운 결과를 얼마나 효율적으로 근사할 것인가가 실시간 렌더링의 본질이다.