<동영상 강좌 링크>
언리얼 엔진 5의 루먼 기초이론 이해하기
주제: 언리얼 5의 루먼(*또는 루멘)에 관한 기초 이론 강좌입니다.
GI를 실시간으로 구현 한다는 것은 기존에 없던 컨셉이기 때문에,
과연 이 시스템이 큰 틀에서 어떻게 돌아가는지 알고 싶어서 공부한 내용을 공유하게 되었습니다.
*이 페이지 하단의 보충설명을 참조 하되, 동영상 강좌를 먼저 봐야 도움이 됩니다.
<강좌 PPT 자료 링크: Free Download>
[ 보충 설명 ]
Screen Space 렌더링
Screen Space = Camera Space or Eye Space
즉, 월드 스페이스 좌표(world-space coordinate)를 Camera의 스크린 스페이스 좌료로 변환 한 것을 의미한다.
이렇게 되면 화면에 보이는 것들만 고려하기 때문에 씬의 복잡성에서 좀 더 자유로울 수 있다.
Depth buffer는 스크린 스페이스에서 만들어진 씬 텍스쳐이기 때문에 루멘은 기본적으로 depth buffer 정보를 기반으로 한다.
루멘 씬의 Signed Distance Field
Sparse Voxel Octree (so called SVO) 데이터 포맷을 채택하고 있다.
여기서 SVO의 장점은 빈 공간의 복셀(voxel)을 스킵할 수 있는 볼륨 데이터 시스템이다.
거기다 루멘은 Screen Space이기 때문에 메모리 관리에도 용이하다.
루멘 씬, 즉 볼륨 씬을 통해 폴리곤을 렌더링하는 과정
Pipeline: Lumen Scene -> Triangle Mesh-> Rendering
Lumen Scene = Mesh Volume + Surface Cache
Surface Cache = 컬러 텍스쳐 (머티리얼 + 라이팅 정보)
루멘은 볼륨(Lumen Scene)을 통해 레이트레이싱을 해서 폴리곤을 렌더링한다.
그럼 루멘은 어떻게 볼륨을 통해 해당 폴리곤 서페이스를 찾아낼까?
이에 관한 것은 Low Level의 개발 정보이기 때문인지 유저 매뉴얼이나 소개 영상에는 자세히 기술되어 있지 않다.
아마도 메쉬를 볼륨으로 바꿀때, 그리고 메쉬로 부터 Surface Cache를 뽑아낼때 관련 메쉬의 정보, 즉 해당 메쉬의 버텍스(vertices) 정보들을 복셀이나 서페이스 캐시 텍스쳐에 베이킹(baking)하는 것으로 추측되어진다.
Lumen's Reflections
루멘의 리플렉션 패스는 아래 그림과 같이 Reflection Probes의 텍스처들을 실시간으로 업데이트 하면서 사용하는 것으로 보인다.
직접 리플렉션 되는 면은 폴리곤 메쉬들이지만 바닥과 같이 반사되어 보이는 오브젝트들은 볼륨 오브젝트들인 것이 특징이다. (단, 루멘의 디폴트 셋업의 경우)
Lumen with Alembic Objects
얼렘빅과 같이 움직이는 또는 디폼 되는 오브젝트 데이터는 Lumen Scene에서 보이지 않는다.(아래 이미지 참조)
얼렘빅 오브젝트 임포트시에 볼륨으로 변환하는 옵션은 아직 없는 것으로 보임
그러나 루멘의 GI와 Reflection 페스에서는 폴리곤으로 인식되어 처리 되기 때문에 Software RT로도 렌더링은 가능하다.
얼렘빅 오브젝트들이 씬에 많이 배치되어 있다면 렌더링 속도는 현저히 느려질 것으로 보인다.
Lumen Scene
Lumen's Reflection Probes
루멘의 리플렉션 패스는 아래 그림과 같이 Reflection Probes의 텍스처들을 실시간으로 업데이트하면서 사용하는 것으로 보인다. (왼쪽)
오른쪽 그림 처럼 직접 리플렉션되는 면은 폴리곤 메쉬들이지만 바닥과 같이 반사되어 보이는 오브젝트들은 볼륨 오브젝트들인 것이 특징이다. (단, 루멘의 디폴트 셋업의 경우)
최종 아웃풋 (Final Output of an Alembic Object with LUMEN) - Lumen Scene 분석
LUMEN Scene
얼렘빅과 같이 움직이는 또는 디폼 되는 오브젝트 데이터는 Lumen Scene에서 보이지 않는다.(아래 이미지 참조)
얼렘빅 오브젝트 임포트시에 볼륨으로 변환하는 옵션은 아직 없는 것으로 보임
Lumen's Global Illumination
루멘의 GI와 Reflection 페스에서는 얼렘빅이 폴리곤으로 인식되어 처리 되기 때문에 Software RT로도 렌더링은 가능하다.
얼렘빅 오브젝트들이 씬에 많이 배치되어 있다면 렌더링 속도는 현저히 느려질 것으로 보인다.