UE5 루멘에 대해 저와 함께 공부하고 싶으신 분들은 우측 Categories에서 Lumen을 클릭해주세요!

루멘, 어떻게 써야할까?

공식 문서에 있는 내용과 문서에는 없지만 개발자 토크에서 발표된 내용들을 정리하였습니다. 기본적으로 Software Ray Tracing 기준 설명드리겠습니다. Hardware Ray Tracing 활용법은 가장 아래 후술하겠습니다.

  1. 언리얼 엔진 4 프로젝트를 언리얼 엔진 5로 가져오신 분들은 기존 UE4 프로젝트에서 넘어왔을 때 주의사항을 참고해주세요! Progect Settings(프로젝트 세팅)에서 루멘을 활성화 하셔야합니다! 언리얼 엔진 5에서 프로젝트를 생성하신 경우 루멘이 디폴트로 활성화 되어 있습니다.


  2. Post Process Volume(포스트 프로세스 볼륨)에서 Global Illumination(글로벌 일루미네이션)Reflection(리플렉션)Method(메서드)Lumen으로 설정되어 있는지 확인해주세요. 프로젝트 세팅에서 Dynamic Global Illumination과 Reflection Mode가 Lumen으로 잘 설정되어 있다면 위 두 메서드도 Lumen이 디폴트로 설정되어 있을 것 입니다.

    ue5_lumen_ppv

    1. Global Illumination
      Global Illumination(글로벌 일루미네이션)의 경우 하위 메뉴 중 Lumen Global Illumination(루멘 글로벌 일루미네이션)에서 Final Gather Quality(최종 수집 퀄리티)를 활성화해주세요. Lumen은 러프니스 0.4 이상의 머테리얼의 리플렉션을 구현할 때 이 Final Gather을 재사용합니다. 따라서 Final Gather Quality(최종 수집 퀄리티)는 글로벌 일루미네이션뿐만 아니라 리플렉션에도 중요합니다.

      Lumen의 개발자 Daniel Wright에 의하면 Final Gather Quality(최종 수집 퀄리티)를 4.0으로 설정하면 루멘의 글로벌 일루미네이션을 최상의 조건으로 사용할 수 있습니다.

    2. Reflection
      Reflections(리플렉션)의 경우 하위 메뉴 중 Lumen Reflections(루멘 리플렉션)에서 Quality(퀄리티)을 활성화해주세요. 루멘의 리플렉션은 러프니스 0.4 이상의 머테리얼에선 Final Gather을 재사용하며, 러프니스가 0.4 미만인 머테리얼에선 Final Gather과 더불어 추가적인 연산을 실시합니다.

      Lumen Reflection(루멘 리플렉션)의 Quality(퀄리티)는 4.0 미만의 값에선 리플렉션을 Surface Cache에 의존합니다. 반면, 4.0으로 설정 시 Surface Cache를 바탕으로 한 연산과 더불어 실제 매쉬 표면에서 반사되는 빛을 모두 계산합니다. 따라서 Lumen Reflection(루멘 리플렉션)의 Quality(퀄리티)는 4.0으로 설정해야 루멘의 리플렉션을 최상의 조건으로 사용할 수 있습니다. 하지만 이는 루멘의 Hardware Ray Tracing(하드웨어 레이 트레이싱) 기능을 활성화했을 때만 해당합니다. Hardware Ray Tracing(하드웨어 레이 트레이싱) 기능은 아래에 후술하겠습니다.

      rt with hw 출처: Unreal Engine Youtube: Lumen | Inside Unreal


  3. 루멘을 사용할 때는 스태틱 라이팅의 사전 연산된 라이팅이 제거됩니다. 프로젝트 세팅에서 Allow Static Lighting(스태틱 라이팅 허용)을 비활성화하셔서 셰이더 순열과 스태틱 라이팅 오버헤드를 절약하세요.

    ue5_allow_static_lighting 이미지가 잘 안 보일 경우 우클릭 후 ‘새 탭에서 이미지 열기'로 봐주세요!

    이 경우 Material Ambient Occlusion(머테리얼 앰비언트 오클루전)을 루멘과 함께 사용하실 수 있게 됩니다. example 예제 화면

    example_1 Allow Static Lighting이 활성화 되었을 때 Material Ambient Occulsion

    example_2 Allow Static Lighting이 비활성화 되었을 때 Material Ambient Occulsion


  4. Mesh Distance Field 조정

    1. Distance Field Resolution
      루멘 환경 아래 메쉬의 Mesh Distance Field가 깔끔하지 않을 땐 빛이 메쉬의 표면을 제대로 인식하지 못합니다. 따라서, 메쉬들의 Mesh Distance Field가 깔끔하게 계산되는지 확인해서 그렇지 않은 경우 Distance Field Resolution을 높여야합니다.

      Mesh Distance Field는 Show->Visualize->Mesh DistanceFields에서 확인할 수 있습니다.

      mesh_distance_field

      Mesh Distance Field가 깔끔하게 나오지 않는 메쉬는 스태틱 메쉬 에디터에서 Distance Field Resolution Scale값을 높입니다. distance_field_res 이미지가 잘 안 보일 경우 우클릭 후 ‘새 탭에서 이미지 열기'로 봐주세요!

      distance_field_scale_compare Distance Field Resolution Scale 1.0(left) / 2.0(right)

    2. Distance Field Voxel Density
      전체적으로 Mesh Distance Field가 더 깔끔하길 바란다면 프로젝트 세팅에서 Distance Field Voxel Density 값을 올리면 됩니다. 하지만 프로젝트 크기가 커집니다.

      distance_field_voxel_density 이미지가 잘 안 보일 경우 우클릭 후 ‘새 탭에서 이미지 열기'로 봐주세요!

      distance_field_voxel_compare Distance Field Voxel Density 0.2(left) / 0.3(right)



  5. 이미시브큰 메쉬에 어둡게 사용하세요.
    작은 메쉬에 사용하거나 밝기가 너무 세면 노이즈가 심하게 발생합니다. Lumen의 개발자 Daniel Wright는 밝은 이미시브를 표현하고자 할 때 이미시브는 어둡게 하되 주변에 라이트를 설치하여 유사한 효과를 내시길 권유합니다. 또한 이미시브를 라이팅 소스로 사용하지 말 것을 권유합니다.


  6. 베이스 컬러를 밝게 유지하세요!
    사실상 가장 중요합니다! 빛이 물체의 표면에 반사될 때 베이스 컬러에 의해 빛의 세기가 감소합니다. 밝을수록 반사가 많이 되고 어두울수록 반사가 덜 됩니다. 간접광은 반사된 빛이 다시 반사가 되고, 이 과정이 반복, 누적되어 구현되기 때문에 베이스 컬러가 어두우면 글로벌 일루미네이션은 기하급수적으로 그 효과가 떨어집니다.

    예컨대, 베이스 컬러가 0.1이라면 첫번째 반사에서 빛의 세기는 10분의 1로 줄어들고, 두번째 반사에선 처음 빛의 100분의 1에 그칠 것입니다. 간접광이 안 보이는 지경이 되어버립니다.

    base_color Base Color(left) / Global Illumination(right)
    출처: Unreal Engine Youtube: Lumen | Inside Unreal


  7. 메쉬의 내부 구조가 단순해야합니다. 더 풀어 설명하자면, 메쉬를 여섯 방향(위/아래/좌/우/앞/뒤)에서 봤을 때 모든 면이 보여야합니다.

    이는 루멘이 글로벌 일루미네이션을 구현할 때 사용하는 Surface Cache의 구성 방식 때문입니다. 루멘의 원리를 구체적으로 서술하기엔 복잡하기 때문에 간략히 설명하자면, 루멘은 메쉬의 표면 정보를 Surface Cache라는 메모리에 저장해서 소프트웨어 레이 캐스팅을 구현합니다. 메쉬 마다의 표면 정보를 읽어올 때 각 메쉬를 둘러싸는 육면체 상자(Cards)를 생성하여 여섯 방향에서 표면 정보를 추출합니다. 만약 여섯 방향에서 보이지 않는 내부 면이 있다면 해당 면의 표면 정보는 레이 캐스팅에 기여하지 못하고, 따라서 글로벌 일루미네이션 효과를 얻을 수 없습니다.

    simple_interior 출처: Unreal Engine Youtube: Lumen | Inside Unreal


  8. Lumen Scene을 주기적으로 확인하세요!
    루멘을 구성하는 가장 중요한 두 가지인 Surface Cache와 Mesh Distance Field에 이상이 있는지 확인할 수 있는 방법이 Lumen Scene입니다. Lumen Scene에서 메쉬가 검게 나타나면 7번 문제일 가능성이 높으며, 메쉬의 모양이 너무 뭉게져 나오거나 아예 나오지 않는 경우 4번 문제일 가능성이 높습니다.

    Lumen Scene은 Show->Visualize->Lumen Scene 활성화 시 볼 수 있습니다. Unlit 모드로 보시길 추천드립니다.

    lumen_Scene


  9. Hardware Ray Tracing(하드웨어 레이 트레이싱)
    개인적으로 언리얼 엔진 5 얼리 액세스에선 추천드리지 않는 기능입니다. 개발 중에 있어서 제약이 많다고 발표되었습니다.

    루멘은 하드웨어에 의존하는 고전적이고 무거운 레이 트레이싱 방식을 최적화한 소프트웨어 레이 트레이싱을 디폴트로 하여 구동됩니다. 퍼포먼스는 올라가지만 정확성은 떨어집니다. 하지만, 프로젝트 설정에서 Use Hardware Ray Tracing when available을 활성화하면 하드웨어 레이 트레이싱 모드로 루멘을 사용할 수도 있습니다.

    우선, 프로젝트 세팅에서 Platform -> Windows로 진입 후 Default RHIDirectX 12로 설정합니다.

    default rhi

    프로젝트 세팅에서 Hardware Ray Tracing 메뉴 아래 Support Hardware Ray Tracing을 활성화한 후 엔진을 재시작하면 Lumen 메뉴 아래 Use Hardware Ray Tracing when available을 활성화할 수 있습니다.

    hardware_raytracing

    1. 하드웨어 성능과 버전에 따라 하드웨어 레이 트레이싱 모드가 사용이 불가할 수 도 있습니다. 공식 문서를 참고하세요.

    2. 나나이트 메시의 경우 나나이트 프록시 메시에 적용되기 때문에 원본의 완전한 디테일이 레이 트레이싱 되지 못합니다. 스크린 트레이스가 그 한계를 보완하지만 불일치가 큰 경우도 생깁니다. 이럴 땐 Proxy Triangle Percent(프록시 트라이앵글 퍼센트)를 높여서 원하는 효과를 도출해낼 수는 있습니다.

    3. 포스트 프로세스의 Lumen Reflection 메뉴 아래 Quality를 4.0으로 설정하면 소프트웨어 레이 트레이싱에서는 불가능한 최상의 루멘 리플렉션을 경험할 수 있습니다.

    4. 얼리 엑세스에서는 10,000 인스턴트 이상의 경우 하드웨어 레이 트레이싱이 제대로 작동하지 않습니다.



요약

  1. Project Settings(프로젝트 세팅)에서 Dynamic Global Illumination Method(다이내믹 글로벌 일루미네이션 메서드)가 Lumen(루멘)으로 설정되어 있는지 확인.

  2. Post Process Volumn(포스트 프로세스 볼륨)에서 Global Illumination(글로벌 일루미네이션)과 Reflection(리플렉션) 메서드를 Lumen(루멘)으로 설정하고 Final Gather Quality(최종 수집 퀄리티)와 Lumen Reflections(루멘 리플렉션)의 Quality(퀄리티)를 적당히 설정. 하드웨어 레이 트레이싱 모드에선 리플렉션의 퀄리티가 4.0이어야 의도된 고퀄리티의 리플렉션을 보여줌.

  3. Project Settings(프로젝트 세팅)에서 Allow Static Lighting(스태틱 라이팅 허용) 비활성화.

  4. Mesh Distance Field를 조정. 스태틱 메쉬 에디터에서 Distance Field Resolution Scale을 조정하거나 Project Settings에서 Distance Field Voxel Density를 조정.

  5. 이미시브는 넓고 약하게 사용.

  6. 베이스 컬러는 밝게.

  7. 메쉬는 여섯 방향(위/아래/좌/우/앞/뒤)에서 모든 면이 보이도록 잘 쪼개서 임포트할 것.

  8. Lumen Scene 확인하기.


Reference

공식 문서 | 루멘 글로벌 일루미네이션 및 리플렉션
공식 문서 | 루멘의 기술적 디테일
Unreal Engine Youtube: Lumen | Inside Unreal