안동민 개발노트

본문 시작

글로벌 일루미네이션과 파티클

Lumen을 비롯한 전역 조명에서 파티클이 간접광을 받거나 이미시브·Light Renderer로 주변을 밝히는 조건을 익힙니다.

글로벌 일루미네이션(GI)은 직접광 외에 표면 사이에서 반사되는 간접광을 다룹니다. 파티클이 간접광을 받는 경로와, 효과가 주변에 빛을 공급하는 경로를 나누어 살펴보겠습니다.

GI 방식과 지원 조건

  • Lumen: 동적인 간접광과 반사를 계산합니다. Lit Translucency에도 낮은 품질의 GI를 제공하지만, 모든 Niagara 파티클이 같은 방식으로 영향을 받는 것은 아닙니다. Unlit 표면은 Lit처럼 입사광을 받지 않습니다.
  • SSGI: 화면 정보에 의존하므로 가려지거나 화면 밖에 있는 광원 정보를 잃을 수 있습니다. 비용이 Lumen보다 항상 낮다고 단정하지 말고 목표 품질과 해상도에서 비교합니다.
  • Baked GI: 정적인 환경 조명을 사전 계산합니다. 움직이는 Lit 오브젝트는 지원되는 경로에서 Volumetric Lightmap 등의 간접광 정보를 이용할 수 있지만, 움직이는 파티클마다 라이트맵을 베이크하거나 실시간 빛을 다시 굽는 것은 아닙니다.

프로젝트의 GI 방식·플랫폼·품질과 머티리얼의 블렌드/셰이딩을 함께 결정합니다. Lumen 개요

파티클이 간접광을 받도록 구성

파편처럼 형태가 분명한 Mesh 파티클에 Default Lit 머티리얼을 적용하고 Base Color, Roughness, Normal을 설정합니다. 파티클별 색은 Particle Color, 추가 제어값은 앞 절의 DynamicParameter 바인딩으로 전달합니다.

밝은 표면 옆과 어두운 공간에서 파티클이 어떻게 달라지는지 비교합니다. 반투명 Sprite라면 해당 Translucency Lighting Mode와 GI 경로의 지원을 확인합니다. Default Lit 선택만으로 모든 종류의 GI 수신이 보장되는 것은 아닙니다.

빛을 받아야 하는 먼지·눈·파편과 자체 발광 중심의 마법·불꽃은 필요한 표현이 다릅니다. 같은 효과 안에서도 다른 머티리얼을 사용할 수 있으며 비용을 따로 측정합니다.

Emissive와 주변 조명 기여

Lumen은 지원되는 장면 표현에서 emissive 표면을 간접광 소스로 처리할 수 있습니다. 다만 밝은 Niagara Sprite를 추가한 것만으로 안정적인 광원이 되는 것은 아닙니다. 블렌드 모드·장면 표현·화면 추적·플랫폼에 따른 지원을 확인해야 합니다.

작고 매우 밝은 emissive 소스는 노이즈를 일으킬 수 있고, 작은 메시가 Lumen Scene에서 제외되면 화면 추적에만 의존할 수 있습니다. 카메라에서 벗어나거나 가려질 때 결과가 달라지는지 확인합니다. Emissive 값을 무조건 100배로 올리는 것은 지원 문제를 해결하지 못하고 노출과 색상만 무너뜨릴 수 있습니다. Lumen 기술 세부 사항

Light Renderer가 벽을 직접 비추는 것과, 그 빛이 다시 반사되어 다른 표면을 밝히는 것은 다릅니다. 모든 Niagara Light Renderer에 Affect Global Illumination이라는 공통 옵션이 있다고 가정하지 않습니다. 안정적인 주변 조명이 필요하면 소수의 별도 Point Light 등 프로젝트가 지원하는 광원으로 역할을 나누고 그 GI 기여를 검증합니다.

직접 해보기: 보이는 발광과 실제 조명 분리

앞 절의 Light Renderer가 있는 NS_BasicSpawn 복사본을 사용합니다. 특정 스위치를 켜서 성공을 보장하는 실습이 아니라, 각 경로의 실제 기여를 비교하는 실습입니다.

Lumen을 지원하는 프로젝트와 품질 설정에서 Lit 벽·바닥이 있는 방을 준비합니다. 카메라 노출을 고정하고 다른 광원의 상태를 기록합니다.

Light Renderer를 끄고 Sprite의 Emissive만 보이게 합니다. 파티클이 밝은 것과 주변 벽의 밝기가 변하는 것을 구분합니다. Bloom도 켜고 꺼서 화면 번짐을 실제 표면 조명으로 오해하지 않는지 확인합니다.

카메라를 돌리거나 효과를 다른 물체로 가려도 주변 기여가 유지되는지 봅니다. 화면에 있을 때만 나타나는 빛이나 잔상은 안정적인 장면 광원으로 취급하지 않습니다.

Light Renderer를 켜고 이전 상태와 비교합니다. 라이트가 직접 닿는 벽이 밝아졌다는 사실만으로 간접광 성공이라고 결론내리지 않습니다. 직접 비추지 않는 면의 변화와 차폐 조건을 별도로 비교합니다.

원하는 조명이 불안정하면 별도 Point Light를 소수 배치해 효과의 수명과 동기화하는 방법을 비교합니다. 실제 프로젝트의 GI·광원 설정으로 결과를 확인하고, 최대 동시 효과 수에서 GPU 비용도 측정합니다.

색·알파·Bloom으로 분위기만 표현할지, 실제 주변 조명까지 필요한지 먼저 정하면 비용을 줄이기 쉽습니다. 플랫폼별로 GI 지원이 다르므로 편집기 한 장면의 결과를 모든 실행 환경의 보장으로 일반화하지 않습니다.