본문 바로가기

Unreal Engine

Lumen에 대해 알아보자 (Inside Unreal)

https://youtu.be/QdV_e-U7_pQ

Inside Unreal 영상의 내용을 개인적인 공부 목적으로 요약 정리한 것입니다.

 

Lumen의 목표

  • 차세대 콘솔, 넓게는 하이엔드 PC까지를 타겟으로 한 Fully Dynamic Global Illumination
  • 리플렉션과 혼합된 GI (그 전까지 GI는 리플렉션과 함께 쓰기 어려웠음)
  • 넓은 오픈월드에서 나나이트같은 많은 트라이앵글을 처리할 수 있어야 함
    → 모든 것은 실시간으로, GPU 기반으로 이루어져야 함
  • 실외에서의 수많은 인스턴스들을 처리 가능해야함과 동시에, 아주 적은 영역의 광원으로도 실내를 하이 퀄리티로 밝힐 수 있으면서, 실내와 실외가 심리스하게 연결되어야 함
    (실내는 직접광이 풍부한 실외에 비해 간접광만으로 라이팅되는 영역이 훨씬 많기 때문에, GI만으로 고품질의 장면을 얻기가 더 어려움)

Lumen 이 제공하는 기능

  • Global Ilumination
  • Shadow Skylight
  • Emissive로 씬을 밝힐 수 있음 (광원을 완전히 대체할 수는 없지만, 이미시브에서 나오는 빛을 씬을 라이팅하는 데 사용함)
  • Reflection - 매끄러운 머터리얼의 경우, 추가적인 레이트레이싱으로 리플렉션 처리
    리플렉션이 GI와 통합되기 때문에, 리플렉션에 비친 상에 GI가 적용되어 있음

 

(그렇지 않다면, 광원이 직접 닿지 않는 욕조 안쪽 부분은 아주 어두울 것임)

리플렉션이 GI에 다시 영향을 미치지는 않음 (= 물 표면에서 반사된 빛이 천장에 어리는 등의 Caustics는 지원하지 않음)

  • ClearCoat의 두 겹 리플렉션도 지원함
  • 반투명과 volumetric fog에 대해서도 다이내믹 GI와 Sky Shadowing을 지원하지만, 비교적 낮은 퀄리티이다.
    (투명한 픽셀이 여러 겹의 레이어로 겹쳐 있는 픽셀에 GI를 적용하는 것이 불투명한 경우보다 더 어려운 문제임)

 

Lumen 사용하기

  • 프로젝트 셋팅에서 GI Method를 Lumen으로 변경
    • Reflection Method를 Lumen으로,
    • 소프트웨어 레이트레이싱 카테고리의 Generate Distance field = true로
    • 리플렉션과 GI Method는 포스트프로세스 볼륨에서 오버라이드 가능함
  • 루멘의 레이 트레이싱 퀄리티를 보다 높이려면 (하드웨어 레이트레이싱을 사용하려면), Use Hardware tracing when available / Support Hardware Raytracing 도 On으로→ 켜고 끄고 차이가 있음)
    (하드웨어 레이트레이싱을 위한 구조체를 셰이더에서 컴파일할 수 있도록 해줌
  • 루멘 GI의 Final Gather Quality 파라미터 값과, 루멘 Reflection 카테고리의 Quality 파라미터로 루멘의 퀄리티를 올릴 수 있음. 이것은 플랫폼별로 다른 값을 조절하는 목적이 아닌, 레벨의 각 부분별로 / 각 레벨별로 퀄리티를 조절하는 목적의 파라미터임.
    (플랫폼별 값 설정은 Scalability ini 에서 가능)

Lumen 자체의 설정값은 위 파라미터가 전부이다

  • 루멘에 영향을 주는 메인 요소들은 다음과 같다. 이들 값을 조정하면 루멘도 조절할 수 있다.
    • 라이트 셋팅
    • 머터리얼의 BaseColor와 Roughness
    • 카메라 노출

Lumen은 어떻게 동작하는가

Software Raytracing을 사용 (하드웨어 레이트레이싱도 지원하지만,

  • 스크린에서 깊이 버퍼를 향해 레이 트레이싱 수행→ 레이가 이 SDF에 부딫히면, 표면 캐시(Surface Cache)를 활용해 레이가 부딫힌 해당 부분의 라이팅을 적용함
  • 레이가 무언가를 통과해서 지나가거나, 스크린 바깥으로 튕겨나갈 경우, 루멘은 씬을 나타내는 또다른 정보인, 메시의 SDF에 레이트레이싱을 수행함

이 과정을 나타낸 이미지.. (시각화를 위해 코드 일부를 수정하였음)

루멘은 여러 가지 레이트레이싱 방법을 혼합해서 활용하는 파이프라인임, 각 방법마다 처리할 수 있는 부분들이 다름

Screen Trace에서 수행한 헤이트레이싱에서 화면 바깥으로 나갈 경우 아무것도 찾을 수 없으므로 (빨간색 부분) 다음 방법인 Mesh Distance Field에 레이트레이싱을 사용- 개별 오브젝트의 디스턴스 필드를 트레이스함 (초록색 부분)

메시 트레이스는 비용이 비싸기 때문에, 레이가 더 멀리 나갈 경우는, 모든 걸 병합한 Global Distance Field 만 트레이스함(가장 빠름)

→ 이 모든 것이 하나의 씬에서 이루어지는 것임. 각 픽셀의 GI가 이런 과정의 조합으로 처리됨

 

여기에서 말하는 Raytrace 기술은 모두 UE5에서 새로 개발한 방식들임.

Screen Trace는 완전히 새로운 방법이고, Mesh DIstance Field는 UE4에도 존재했으나 지금처럼 Sparse하지는 않았음 (?). 글로벌 디스턴스 필드도 마찬가지임. UE5에서 훨씬 향상된 버전으로 다시 만들었다고 함

 

위 이미지는 UE4에서 쓰인 디스턴스 필드, DFAO와 UE5를 비교한 것임.

메시 디스턴스 필드는 UE5에서 아주 많이 향상되었고, 루멘은 여기에 크게 의존함

Sparse하다는 것은 필요한 표면 근처에만 데이터를 저장할 수 있다는 것을 의미

 

디스턴스 필드의 밉맵을 생성하기 때문에, 거리에 따라 필요한 버전을 로드하면 됨

(거리에 따라 디스크에 스트리밍됨)

→ 결과적으로 4배 해상도의 복셀 밀도를 사용가능 (3D이기 때문에 데이터는 8배)

메시당 최대 4배 해상도 향상

UE4에서 지원 불가능했던 대형 메시(산 같은..)를 지원 가능

표현이 sparse하고, 데이터가 스트리밍되기 때문에 + 최적화되었기 때문에 UE4의 절반 정도의 메모리를 사용

메시 Distance field를 빌드하는 속도는 10배 빨라짐

 

메시 디스턴스 필드로 레이가 닿은 히트포인트와 그 노멀을 알 수 있지만, 해당 부분의 머터리얼 컬러와 들어오는 빛은 알 수 없음 - 그 해결책이 표면 캐시(Surface cache)임

  • 오프라인로 미리 배치된 카드를 사용해서 다양한 방향에서 메시를 캡쳐해서 아틀라스에 저장
    : 저장된 데이터는 머터리얼 프로퍼티들별로 분류되어 있음
  • 이 카드들은 r.Lumen.Visualize.CardPlacement 1 콘솔 명령으로 확인할 수 있음

아틀라스에 저장된 Surface Cache의 모습. 이것은 유저가 씬을 이동할 때마다 다시 캡쳐됨..

화면에 보이는 것은 4096 텍스처임, 모두 캐시되기 때문에 전체를 다시 캡쳐할 필요가 없고, 아주 작은 일부만 업데이트 해도 됨

(캐시 가능한 부분만 캡쳐, 가까이 다가가면 고해상도로 캡쳐)

나나이트가 없다면, 해상도가 낮은 캡쳐에도 아주 많은 트라이앵글이 사용되기 때문에 아주 작은 해상도 캡쳐도 매우 느리다.

하드웨어 래스터라이저는 한번에 1개의 뷰만 렌더할 수 있는 한계가 있지만, 나나이트는 커스텀 래스터라이저이기 때문에, 한번에 여러 개의 뷰를 동시에 렌더할 수 있음 - 메시의 여러 가지 다른 방향에서의 프로젝션을 동시에 렌더링할 수 있음! - 측정한 바로는 이것이 (메시 효율성에 따라 다르지만) 10~ 100배 정도 더 빠름

이 이유 때문에, 하이 폴리 메시 혹은 인스턴스된 스태틱 메시에 루멘을 사용하려는 경우,

이 메시들에 대한 나나이트 사용은 필수적임,, 그렇지 않으면 사용 가능한 속도가 나오지 않음

나나이트 매시가 아닌 경우, 효율적인 LOD 셋업이 필수적임

  • 이렇게 캡쳐된 각 표면 캐시에 Direct Lighting을 계산해 적용하고, 표면 캐시에서 낮은 퀄리티의 GI Gather도 수행함
  • → 이것이 루멘의 멀티 바운스가 작동하는 원리임
  • 표면 캐시가 가진 콘텐츠 한계 (= 루멘의 가장 큰 한계)는, 아래처럼 복잡한 구조에 대해서는 적용하기 힘들다는 것임

각 벽과 천장은 각각 별도의 메시여야 함. 인테리어가 단순해야 표면 캐시가 제대로 작동함.

Lumen Scene 시각화 모드 - GI Reflection 을 트레이싱할 때 루멘이 보는 광경임

스크린 트레이스의 결과가 없거나 화면 밖으로 벗어나면, 루멘은 이 씬을 가지고 레이트레이싱을 계속함.

→ 루멘에게 가장 중요한 뷰 모드. 이것이 실제 씬과 일치하지 않은 부분이 있을 경우, 그 부분에 GI 아티팩트가 생기게 됨

(에디터에서 G 키로 토글하면서 비교 가능)

트레이싱 비용은 아티스트가 배치하는 메시의 갯수에 달림.. 메시가 많거나 서로 겹칠 경우 특히 비용이 비싸짐

모든 메시 디스턴스 필드를 합쳐 하나의 글로벌 디스턴스 필드를 생성(UE4때보다 2배 고해상도이고, Sparse하며 캐시 사용이 효율적임)

 

오른쪽 : 병합된 Global distance field으로 복셀 라이팅을 수행한 모습

(레이 트레이싱이 훨씬 빠름, 근사값임)

 

최적화

  • 기본값은 2미터 단위로 개별 메쉬를 최적화하는 것임
    • 처음 2미터는 개별 메시를 트레이싱함
    • 그 다음 2미터는 병합된 버전의 글로벌 디스턴스 필드를 트레이싱
    → 아주 효율적인 소프트웨어 레이트레이싱이 가능
    • 아주 많은 메시들이 겹쳐 있는 장면의 경우, 루멘이 글로벌 버전만을 레이트레이싱하도록 설정할 수 있음 (프로젝트 셋팅에서 가능)
    • Software tracing mode - Detail Tracing / Global tracing

 

Software Raytracing의 한계점

  • 스태틱메시와 인스턴싱된 스태틱 메시만을 지원
  • (Screen trace는 모든 메시에 대해 적용 가능하지만, 디스턴스 필드는 스태틱 메시와 인스턴스드 스테틱 메시에만 지원됨)
  • 랜드스케이프 미지원(얼리 엑세스 당시)
  • World Position Offset은 아티팩트를 만듬.. 디스턴스 필드는 디포메이션 되기 전 메시를 사용하기 때문
  • 루멘 문서를 공들여 작성했으니 그쪽을 참고할 것
    https://docs.unrealengine.com/5.0/en-US/lumen-technical-details-in-unreal-engine/
  • 비디오 카드 사양에 상관없이, DX11 환경에서 작동함

Hardware Raytracing (프로젝트 셋팅에서 설정 가능)

  • 가장 품질이 높지만, 그만큼 비용도 비쌈 / 비디오 카드에서 지원해야 가능
  • PC : D3D12 에서만 가능
    • NVidia RTX-2000 시리즈 이상
    • AMD RX-6000 시리즈 이상
  • 얼리 액세스에서는 루멘의 리플렉션과 일부 Final Gather지원함
  • 나나이트 예비 메시에 대해서만 트레이싱 수행함
    Screen trace는 풀 해상도 버전을 트레이싱하므로, 이 차이를 보완해줌. 내부 프로젝트에서는 대부분 나나이트 디폴트 셋팅을 사용하였지만 (메시당 2000 트라이앵글 정도), 자동차처럼 얇고, 애초에 매우 하이폴리 메시일 경우는 아티팩트 때문에 트라이앵글 갯수를 아주 조금만 올려 주었음. (기본 1%에서 2~3%으로)
  • 아티팩트를 찾을 때는 루멘 씬 시각화를 적극 활용할 것
    일반적으로는 이 셋팅을 올릴 필요가 없음.
    → 루멘 아티팩트가 있을 경우, 나나이트 Proxy mesh의 트라이앵글을 올리는 것이 도움될 수 있음
  • 1만 개 이상의 인스턴스에서는 지원하지 않음아직 개발 진행중. 10만 개까지 가능하도록
    → 씬 규모를 작게 유지할 것 ..
  • 하이 폴리의 스키닝된 메시(캐릭터 등 스켈레탈 매시..) 은 비용이 많이 듦. Raytracing LOD Bias도 사용중
    (루멘 계산에는 낮은 LOD를 사용하도록)
  • 디포메이션 되는 메시이기 때문에, 매 프레임마다 메시의 BVH를 다시 빌드해야 하기 때문
    → 폴리곤을 적게 유지하는 것이 루멘에는 유리함
  • 메시를 너무 여러 겹 겹치지 말것..
  • 소프트웨어 트레이싱보다 50%정도 느리지만, 결과물은 더 정확함
    → 하드웨어 트레이싱을 사용하기로 결정했을 경우, 위 사항들을 씬 작성시 고려할 것.

 

Final Gather (GI 노이즈 감소책)

  • Final Gather : Lumen 씬에서 화면의 최종 픽셀로 빛을 전파하는 프로세스의 이름.
  • 아주 적은 양의 노이즈로 빛을 전파..
  • 픽셀 당 반 개의 레이 정도만 트레이싱 할 수 있음.. 이것은 매우 적은 양인데, 레이 트레이싱으로는 빛이 처음에 어디로부터 왔는지 알 수 없음
    : Global Illumination은 씬 전체에서 바운스되는 빛이므로, 그에 대한 리스트라는게 없음. 그냥 레이를 쏴 보내고, 결과를 확인하는 것이다.
  • 따라서 구역이 더 작을수록, 그리고 더 밝을수록 더 처리하기 힘들기 때문에ㅡ 최종 이미지에서 더 많은 노이즈가 생기는 것임.. 라이트를 찾기 더 힘들기 때문에
    (장면 내의 모든 라이트 목록이 있고, 각 라이트마다 레이를 쏘는 Direct Lighting과는 다름)
  • 실내 씬에서는 좋은 품질을 위해 적어도 픽셀 당 200개 정도의 레이가 필요함

 

아래는 더 읽을거리..

https://en.wikipedia.org/wiki/Ray_tracing_(graphics) 

 

Ray tracing (graphics) - Wikipedia

From Wikipedia, the free encyclopedia Rendering method In 3D computer graphics, ray tracing is a technique for modeling light transport for use in a wide variety of rendering algorithms for generating digital images. On a spectrum of computational cost and

en.wikipedia.org

https://www.ksakosmos.com/post/%EB%A0%88%EC%9D%B4-%ED%8A%B8%EB%A0%88%EC%9D%B4%EC%8B%B1-ray-tracing-%EA%B3%BC-%EB%B9%9B%EC%9D%98-%EB%AC%BC%EB%A6%AC%ED%95%99

 

  • 루멘은 Final Gather 과정에서 스크린 스페이스 래디언스 캐싱 기법 사용
    • 스크린을 1/16으로 다운샘플링
    • 각 포지션에서의 레이 트레이싱을 늘림이를 주변 픽셀에 보간함
      → 각 프로브에서 래디언스 캐시가 더 안정적인 라이팅을 갖게 됨.

 : 스크린의 아주 작은 위치에서도 트레이싱 가능

 

포인트 당 훨씬 더 많은 레이를 처리하여 더 안정적인 라이팅을 얻을 수 있었음

(왼쪽 위)

여기에 아주 디테일한 나나이트 노멀을 통합 (왼쪽 아래)

 

월드 스페이스 래디언스 캐시를 사용해서, 적은 갯수의 프로브에서 트레이싱 된 결과물을 여러 픽셀에 재사용

 

이 월드스페이스 래디언스 캐시는 위와 같이 시각화할 수 있음

 

인풋 자체가 루멘 쪽이 훨씬 노이즈가 적기 때문에, 필터링 할 것도 적음.. (?)

여기에서 필터링을 해야 함

 

Reflection

  • 루멘은 머터리얼의 러프니스값이 높을 경우(표면이 거칠 경우) Final Gather의 트레이싱을 재사용 (이미 노이즈가 제거된 버전이기 때문)
  • 러프니스가 증가할수록, 스페큘러 로브는 점점 넓어지다가, 결국 디퓨즈처럼 반구 형채로 수렴함.
  • 스크린에서 보이는 리플렉션의 절반은 루멘의 Final Gather에서 나온 것이므로, 루멘과 루멘 리플렉션이 잘 어우러지는 것임 ..
  • 아주 매끄러운 표면인 픽셀의 경우, 추가적인 레이를 트레이싱해서 리플렉션 원뿔(Reflection Cone)(?) 안의 리플렉션을 처리함 - 루멘 코스트 증가
  • Spatial, Temporal 디노이저 작동

Lumen Reflection 과 Raytraced Reflection 비교

  • 루멘 리플렉션을 기본값으로 테스트하면, 레이트레이스 리플렉션보다 퀄리티가 낮음
    → 루멘 리플렉션 퀄리티를 매직 넘버인 4로 설정하면, 더 정확한 라이팅과 리플렉션 표현 가능
  • (퀄리티가 4일 경우, Surface Cache가 아닌 Hit 포인트 부분의 리플렉션이 직접 평가됨)
    : 루멘의 리플렉션 트레이스가 기본값으로 Surface cache를 사용하기 때문
  • 레이트레이싱 리플렉션이 비해 루멘 리플렉션은 보완할 부분이 아직 많지만, 계속 개선될 것임.
  • 레이트레이싱 섀도우는 나나이트 예비 메시를 트레이싱하기 때문에, 셀프 섀도우 아티팩트가 많이 생기지만, 루멘은 그렇지 않음
  • 장기적으로 봤을 때 레이트레이스드 리플렉션은 폐기되고, 루멘 리플렉션에 나머지 기능을 전부 통합시킬 예정임

Lumen 실제 모범 적용사례 or 적용시 주의점

Emissive

  • 이미시브로 광원을 대체할 수 없음 - 만약 그렇게 시도할 경우, 많은 노이즈가 발생할 것임.
    (미구현 기능이라고 생각하면 됨)
    루멘 입장에서는 이미시브 메쉬가 어디에 있는지 모르고, 모든 방향에서 Ray를 수집하기 때문에.. 메시가 작고 밝을수록 노이즈가 심해짐

이미시브를 최대한 넓게, 강도를 약하게 유지하는 것이 좋음

 

이렇게… 별도의 포인트라이트를 설치해야 함

 

BaseColor

  • 베이스컬러는 GI에 엄청난 영향을 줌 - 베이스컬러에 노이즈가 있거나 어두울 경우, GI의 퀄리티도 좋지 않을 수 밖에 없음.
  • 직접광의 경우, 햇빛을 직접 받는 표면의 밝기가 0.1일 경우, 햇빛 에너지의 10%만 받는 것임 → 거의 안보이는 수준..
  • 그런데 간접광의 경우, 이 수치가 매 바운스마다 적용됨 - 직접광을 받는 표면은 베이스컬러 감쇠가 1번만 적용되기 때문에 태양광의 10%만큼의 빛 에너지를 튕겨내지만, 100 번째로 바운스 된 태양광은 거의 안보이게 될 것임.
    (광선이 표면에 바운스 될 때마다, 베이스컬러 밝기를 기반으로 감쇠되기 때문)

  • 아래가 조정된 베이스컬러..에인션트의 협곡을 작업할 때는 베이스컬러도 올리고, 스카이라이트를 1.3 또는 1.5 로 올렸음
  • GI가 충분하려면 베이스컬러가 충분히 밝아야 함
  • 스캔된 에셋을 사용하더라도, 루멘에서는 베이스컬러를 보강해야 할 수 있음
    베이스컬러에 멀티플라이어를 두고, 이것을 MPC에 등록해서 글로벌하게 조정해보면서 테스트해 보는것이 도움이 되었다. - 씬 전체에 같은 값이 적용되도록
    → 메가스캔 라이브러리도 루멘에 보다 적합한 방향으로 개선 중
    (스캔된 텍스처들이 완벽하다고 생각하지 말 것)

Indirect Lighting Intensity

  • 스크린 트레이스 단계에서 인식되지 않는 버그가 있음..
    • 1보다 높은 값으로 설정할 경우, 시점에 따라 아티팩트 발생할 수 있음
    • (보는 시점에 따라 GI가 달라짐..)

Surface Cache

  • Show > Visualize > Lumen Scene에서 확인 가능..검은색으로 나타나는 경우는 메시 내부가 너무 복잡한 것임. 방 전체가 하나의 메시라던지 ..
    : 최대한 원본 씬에 가깝게 유지되도록 컨텐츠들을 수정하는 것이 좋음 (그렇지 않으면 시점에 따라 GI 가 달라질 것임)

Platform

  • 목표였던 차세대 콘솔, 하이엔드 PC에서는 잘 작동함
  • 모바일 지원 안함 (퍼포먼스 충분하지않음)
  • VR에서 작동하지 않음 (아주 높은 해상도와 프레임레이트가 함께 요구되기 때문)

Performance

  • 작업 시 에디터 퍼포먼스를 높이려면 Screen Percentage를 낮춰볼 것내부적으로 1080p를 사용해도, 4k 아웃풋을 얻을 수 있도록
  • 그런데 에디터에서 PC 기본 스크린 퍼센티지는 100이니까., 이걸 줄여도 된다는 말인 것 같음
    (Temporal Super Resolution 으로 보다 작은 해상도를 인풋으로 사용해도, 내부적으로 높은 해상도의 루멘 결과물을 낼 수 있도록 되어 있음 (?)
  • 엔진 Scalability 셋팅이 Epic일 경우, 차세대 콘솔에서 30프레임 타겟이 디폴트임
    타겟 프레임 60일 경우, High 로 설정하는 것이 좋음 (계속 개선 예정)
  • 에인션트의 협곡에서는 물리적인 라이팅 값을 사용하지 않았음
    : 실제 태양 광량을 사용할 경우, 루멘은 잘 작동하지만, 노출 값이 햇빛에 적응되기 때문에 이미시브를 사용하려면 이미시브 값도 같이 만 배 정도 밝아져야 하는 문제가 있기 때문에.

QnA

  • 작고 빠르게 움직이는 강한 이미시브를 가진 이펙트의 경우는, 루멘과 제대로 작동하지 않을 수 있음
  • 씬에서 특정 메시만 루멘에서 제외시킬 수 있는지? (이미시브 등)
    • 지금은 방법이 없지만 (스크린 스페이스 트레이싱 때문) 추가가 필요한 기능임
  • 렌더 큐에서 약간의 아티팩트 생길 수 있음 (웜업 프레임이 필요할 때가 있음)
  • 각각의 메시를 블루프린트에서 조립해서 배치하는 것은 문제없음
  • 퍼포먼스 향상
    • 화면 해상도가 퍼포먼스에 많은 영향을 미침 - 내부 아웃풋을 4k로 하지 말 것 (?)
    • 인스턴스끼리 겹치는 문제 - 겹침이 많을수록 퍼포먼스가 떨어짐
    • 0.4 이하의 매끄러운 머터리얼도 비용이 더 비쌈
      → 실시간 라이팅 환경에서는 루멘 뿐 아니라 다른 기능들에서도 마찬가지임
  • 콘솔 셋팅으로 낮은 해상도의 Distance FIeld를 사용하는 것도 가능
  • 오브젝트 스케일을 한쪽 축으로 4 이상으로 늘릴 경우, Mesh Distance field에 아티펙트가 보일 수 있음.. (ue4부터 있던 문제임)
  • 서브서페이스 셰이딩 모델 아직 지원 안함
  • 베이킹 된 GI와 루멘을 함께 사용하는 것은 지금은 불가능 (심리스하게 연결 불가)
  • 루멘이 스크린 스페이스로 계산되는 부분이 있기 때문임..
  • 메가스캔에서 받은 에셋의 베이스컬러에 멀티플라이어를 곱할 때, 베이스컬러 고유의 밝기를 고려해야 함→ 곱한 최종 결과값이 1이 되지 않도록 주의할 것. 1은 들어오는 빛 에너지의 100%를 반사한다는 것이므로, 물리적으로도 정확하지 않음.
    : 바위 같은 머터리얼의 경우 0.01에 가깝기 때문에 몇 배를 올려도 상관없지만, 흰 벽의 경우는 베이스컬러가 이미 1에 가깝기 때문에 이걸 잘못 올리면 화면 전체가 허옇게 빛날 수 있음
  • 숲 씬에서의 문제
    • 거리에 따라 사라지는 GI 문제..
    • 루멘 씬 - 특히 표면 캐시는 약 200미터로 제한되기 때문에 스크린 트레이싱이 그냥 지나쳐 버림.
    • 나나이트 세계의 루멘에서는 디스턴스 씬이라는 다른 기법을 사용함콘솔 변수로 거리 조정은 가능.. 나뭇잎 주변에 생길 노이즈는 현재 수정 중
      : 루멘이 1km 까지 작동함 (실험 기능이라 기본적으로는 꺼져 있음)