나나이트 가상화 지오메트리

픽셀 스케일의 디테일과 방대한 양의 오브젝트를 구현하는 언리얼 엔진 5의 가상 지오메트리 시스템 개요입니다.

Choose your operating system:

Windows

macOS

Linux

나나이트는 언리얼 엔진 5의 가상 지오메트리 시스템으로, 새로운 내부 메시 포맷과 렌더링 기술을 사용하여 픽셀 스케일의 디테일과 방대한 양의 오브젝트를 렌더링합니다. 인식할 수 있는 디테일만 지능적으로 처리하며, 그 외의 디테일에는 작동하지 않습니다. 또한 나나이트의 데이터 포맷은 고도로 압축되어 있으며, 자동 레벨 오브 디테일을 통해 세부적인 스트리밍을 지원합니다.

나나이트 활용 예시 씬

나나이트의 장점

  • 지오메트리 복잡도가 대폭 증가하여 실시간으로 구현할 수 있는 트라이앵글과 오브젝트 수가 늘어났습니다.

  • 프레임 예산이 더 이상 폴리곤 수, 드로 콜, 메시 메모리 사용에 의해 제한되지 않습니다.

  • 이제 ZBrush 스컬프팅 및 사진측량 기술 스캔 등 영화 수준의 소스 아트를 직접 임포트할 수 있습니다.

  • 노멀 맵 텍스처에 디테일을 굽는 대신 하이 폴리 디테일을 사용할 수 있습니다.

  • 레벨 오브 디테일(Level of Detail, LOD)이 자동으로 처리되며 더 이상 개별 메시의 LOD를 수동으로 구성할 필요가 없습니다.

  • 퀄리티 손실이 거의 발생하지 않으며, 특히 LOD 트랜지션의 경우 더욱 그렇습니다.

나나이트를 사용하면 이렇게 탁월한 이점이 있지만, 실용적인 측면에서는 여전히 한계가 있습니다. 예를 들면 인스턴스 수, 메시당 트라이앵글, 머티리얼 복잡도, 출력 해상도, 퍼포먼스는 콘텐츠 및 하드웨어 조합에 따라 신중하게 측정해야 합니다. 나나이트는 언리얼 엔진의 향후 출시 버전에서 계속해서 기능을 확장하고 퍼포먼스를 향상할 예정입니다.

나나이트 메시와 스태틱 메시의 차이점

나나이트 메시는 나나이트가 활성화된 스태틱 메시입니다. 나나이트 메시는 여전히 본질적으로는 트라이앵글 메시로, 이 데이터에 많은 LOD와 압축이 적용된 상태입니다. 또한 나나이트는 매우 효율적인 방식으로 데이터 포맷을 렌더링하기 위해 완전히 새로운 시스템을 사용합니다.

스태틱 메시에서 플래그를 활성화하기만 하면 나나이트의 장점을 활용할 수 있습니다. 나나이트용 콘텐츠를 제작하는 것은 기존 메시와 다를 바가 없지만, 나나이트는 기존 방식으로 렌더링된 지오메트리보다 획기적으로 많은 트라이앵글과 인스턴스를 처리할 수 있다는 점에서 차별화됩니다. 카메라를 충분히 가까이 이동하면 나나이트가 임포트된 원본 소스 트라이앵글을 그립니다.

나나이트 메시는 다수의 UV 및 버텍스 컬러를 지원합니다. 머티리얼은 메시의 여러 섹션에 할당되며, 이러한 머티리얼은 셰이더에서 처리할 수 있는 다양한 셰이딩 모델과 다이내믹 이펙트를 사용할 수 있습니다. 머티리얼 할당은 다른 스태틱 메시와 마찬가지로 동적으로 전환할 수 있으며, 나나이트는 머티리얼을 굽는 프로세스를 거치지 않아도 됩니다.

나나이트와 함께 버추얼 텍스처를 반드시 사용해야 하는 것은 아니지만 강력하게 권장됩니다. 버추얼 텍스처는 나나이트가 메시 데이터를 사용하여 얻을 수 있는 텍스처 데이터와 그 목적이 유사한 언리얼 엔진의 직교 기능입니다.

나나이트로 작업하는 것은 스태틱 메시의 워크플로와 비슷하지만 아직 지원되지 않는 것도 많습니다. 자세한 정보는 이 페이지의 지원 기능 섹션을 참조하세요.

나나이트의 작동 방식

나나이트는 기존 엔진 워크플로에 매우 매끄럽게 통합되며 새로운 접근 방식으로 메시 데이터를 저장 및 렌더링합니다.

  • 임포트되는 동안 메시는 트라이앵글 그룹의 계층구조 클러스터로 분석 및 분해됩니다.

  • 렌더링되는 동안 클러스터는 카메라 뷰를 바탕으로 즉시 다양한 LOD로 전환되며, 동일한 오브젝트 내에서 인접한 클러스터에 크랙 없이 완벽하게 연결됩니다. 데이터는 온디맨드 방식으로 스트리밍되므로 표시되는 디테일만 메모리를 차지합니다. 나나이트는 기존 드로 콜을 완전히 우회하는 자체 렌더링 패스를 실행합니다. 나나이트 파이프라인을 검토해야 하는 경우에는 시각화 모드를 사용하면 됩니다.

나나이트는 디스크에서 온디맨드 방식으로 빠르게 메시 데이터를 스트리밍하는 기능을 활용하므로 런타임 스토리지의 경우 솔리드 스테이트 드라이브(Solid State Drive, SSD)사용이 권장됩니다.

나나이트를 사용해야 하는 메시 타입

나나이트는 되도록 모든 경우에 활성화해 두어야 합니다. 일반적으로 나나이트가 활성화된 스태틱 메시는 더 빠르게 렌더링되며 더 적은 메모리와 디스크 공간을 차지합니다.

나나이트를 사용하기 적합한 메시의 조건은 다음과 같습니다.

  • 트라이앵글이 많거나 화면상에 표시되는 트라이앵글이 아주 작은 경우

  • 씬 내에 인스턴스가 많은 경우

  • 다른 나나이트 지오메트리의 주요 오클루더 역할을 하는 경우

  • 버추얼 섀도 맵을 사용하여 섀도를 캐스팅하는 경우

단, 스카이 구체는 예외입니다. 스카이 구체는 화면상에서 크게 표시되고, 가리는 것이 없으며, 씬에 단 하나만 존재합니다. 이러한 예외 사례는 드물며 나나이트를 사용함으로써 발생하는 퍼포먼스 손실이 매우 적으므로, 사용 사례에 나나이트가 지원된다면 활성화할 수 없는 경우에 대해 크게 우려하지 않아도 됩니다.

일부 사용 사례는 현재 나나이트가 지원되지 않습니다. 자세한 정보는 이 페이지의 지원 기능 섹션을 참조하세요.

메시에서 나나이트 지원 활성화하기

다음과 같은 방법으로 지원되는 지오메트리에서 나나이트를 활성화할 수 있습니다.

지오메트리를 나나이트로 변환하려면 메시별 처리 시간이 다소 필요합니다. 대규모 프로젝트에서 나나이트 에셋이 많은 경우 공유 파생 데이터 캐시(Derived Data Cache, DDC)가 특히 유용합니다. 자세한 정보는 공유 DDC 문서를 참조하세요.

스태틱 메시 임포트하기

나나이트용으로 메시를 임포트하는 경우 나나이트 빌드(Build Nanite) 박스를 체크하세요.

나나이트 FBX 임포트 옵션

라이트매스로 사전 연산된 라이팅을 사용하지 않는 경우에는 라이트 맵 UV 생성 프로퍼티를 비활성화하는 것을 권장합니다.

매우 디테일한 지오메트리의 경우 이 프로퍼티가 활성화되어 있으면 스태틱 메시 데이터를 임포트하고 빌드하는 데 시간이 많이 걸릴 수 있습니다. 또한 이 프로퍼티는 UV 채널을 추가하기 때문에 메시의 밀도가 아주 높은 경우에는 데이터 양이 상당히 커질 수 있습니다. 프로젝트에서 구운 라이팅이 필요하지 않은 경우에는 이 두 가지 사항을 감수할 필요가 없습니다.

에셋에 나나이트 활성화하기

나나이트를 활성화하려는 콘텐츠로 프로젝트가 이미 채워져 있는 경우 두 가지 선택지가 있습니다. 콘텐츠 브라우저를 사용하여 에셋을 일괄적으로 활성화하거나 개별 에셋을 각각의 에디터를 통해 활성화하는 것입니다.

일괄적으로 메시에 나나이트 활성화하기

스태틱 메시 에셋을 일괄 선택하여 나나이트를 활성화하려면 콘텐츠 브라우저(Content Browser) 를 사용하여 모두 선택합니다. 컨텍스트 메뉴에서 우클릭 하고 나나이트(Nanite) > 활성화(Enable) 를 선택합니다.

콘텐츠 브라우저 내 여러 에셋에서 나나이트 일괄 활성화

개별 메시에 나나이트 활성화하기

스태틱 메시와 지오메트리 컬렉션 등 나나이트를 지원하는 메시의 에디터를 열고 디테일(Details) 패널에서 나나이트를 활성화합니다.

스태틱 메시 에디터에서 나나이트 세팅(Nanite Settings) 을 찾아 나나이트 지원 활성화(Enable Nanite Support) 박스에 체크합니다.

스태틱 메시 에디터에서 나나이트 활성화

지오메트리 컬렉션 에디터에서 나나이트(Nanite) 섹션을 찾아 나나이트 활성화(Enable Nanite) 박스에 체크합니다.

지오메트리 캐시에서 나나이트 활성화

나나이트의 지원 기능

이 섹션은 지원되는 기능과 지원되지 않는 기능, 그리고 제한 사항을 통해 언리얼 엔진 프로젝트에서 나나이트를 가장 잘 활용할 수 있는 방법을 자세히 살펴봅니다.

지오메트리

나나이트는 스태틱 메시와 지오메트리 컬렉션에서 활성화할 수 있습니다.

나나이트 활성화 메시는 다음 컴포넌트 타입과 함께 사용할 수 있습니다.

  • 스태틱 메시

  • 인스턴스 스태틱 메시

  • 계층형 인스턴스 스태틱 메시

  • 지오메트리 컬렉션

현재 나나이트는 일반적인 씬에서 지오메트리의 90% 이상을 차지하는 리지드 메시로 한정됩니다. 나나이트는 리지드 메시의 동적 이동, 회전, 비균등 스케일링을 지원하지만 다이내믹 또는 스태틱 여부에 상관없이 일반적인 메시 디포메이션은 지원하지 않습니다. 이는 나나이트 메시의 모든 위치가 전체 메시에 단일 4x3 매트릭스 곱을 적용하여 표현할 수 있는 것보다 복잡하다는 것을 의미합니다.

다음 사항에는 디포메이션이 지원되지 않습니다.

  • 스켈레탈 애니메이션

  • 모프 타깃

  • 머티리얼의 월드 포지션 오프셋

  • 스플라인 메시

다음 사항에는 나나이트 메시가 지원되지 않습니다.

  • 커스텀 뎁스 또는 스텐실

  • 인스턴스의 버텍스 페인팅

    • 구체적으로 이는 에디터의 메시 페인트(Mesh Paint) 모드를 사용하여 인스턴스별로 페인팅된 컬러를 의미합니다.

    • 원본 메시에 임포트된 버텍스 컬러는 지원됩니다.

씬에 존재할 수 있는 인스턴스의 최대 수는 1,600만 개로 고정되어 있으며, 여기에는 나나이트를 사용하도록 활성화된 인스턴스뿐만 아니라 스트림 인되는 모든 인스턴스가 포함됩니다. 스트림 인되는 인스턴스만 총합으로 계산됩니다.

버텍스별 탄젠트는 나나이트가 활성화된 스태틱 메시에서 저장되지 않습니다. 대신 픽셀 셰이더에 탄젠트 스페이스가 파생됩니다. 데이터 크기를 줄이기 위해 탄젠트 데이터는 저장되지 않습니다. 이러한 접근 방식을 사용하는 탄젠트 스페이스에는 차이가 있어서 에지에 불연속성이 발생할 수 있습니다. 하지만 심각한 문제는 아니며, 향후 출시에서는 버텍스 탄젠트를 지원할 예정입니다.

머티리얼

나나이트는 블렌드 모드를 불투명(Opaque) 으로 설정한 머티리얼을 지원합니다. 다른 머티리얼 타입은 허용되지 않거나, 사용하더라도 나나이트 메시에 이펙트가 발생하지 않습니다.

지원되지 않는 머티리얼이 탐지될 경우, 디폴트 머티리얼이 할당되고 출력 로그 에 추가 정보와 함께 경고가 나타납니다.

다음은 지원되지 않는 나나이트 머티리얼 기능 중 일부입니다.

  • 마스크드(Masked) 또는 반투명(Translucent)을 사용하는 블렌드 모드

  • 디퍼드 데칼

    • 메시 데칼에 나나이트 메시를 사용하는 경우

    • 나나이트는 표면에 데칼이 투영되는 경우는 지원합니다.

  • 와이어프레임

  • 양면

  • 픽셀 뎁스 오프셋

  • 월드 포지션 오프셋

  • 커스텀 인스턴스별 데이터

나나이트 활성화 메시에 적용된 머티리얼에서 다음 기능을 사용하는 경우 메시가 눈에 띄게 깨져 보일 수 있습니다.

  • 버텍스 보간 툴 노드

  • 커스텀 UV

렌더링

다음 렌더링 기능은 현재 지원되지 않습니다.

  • 다음을 사용하는 오브젝트의 뷰 전용 필터링:

    • 최소 화면 반경

    • 디스턴스 컬링

  • 포워드 렌더링

  • 가상현실용 스테레오 렌더링

  • 분할 화면

  • 멀티샘플링 안티 에일리어싱(Multisampling Anti-Aliasing, MSAA)

  • 라이팅 채널

  • 완전한 디테일을 제공하는 나나이트 메시에 대한 레이 트레이싱

    • 레이 트레이싱 기능은 지원되지만 레이는 완전한 디테일을 제공하는 나나이트 메시 대신 낮은 퀄리티의 표현(예비 메시)과 교차됩니다.

  • 일부 시각화 뷰 모드에서는 아직 나나이트 메시 표시가 지원되지 않습니다.

    스태틱 메시 에디터에서 디테일 수준이 높은 지오메트리를 볼 때 일부 시각화 모드는 주의해서 사용해야 합니다. 노멀과 UV를 표시하면 에디터 퍼포먼스에 문제가 발생할 수 있습니다.

지원 플랫폼

나나이트는 현재 PlayStation 5, Xbox Series S|X 및 다음 사양의 그래픽 카드를 갖추었으며 DirectX 12 최신 드라이버를 사용하는 PC에서 지원됩니다.

  • NVIDIA: Maxwell 세대 카드 이상

  • AMD: GCN 세대 카드 이상

  • DirectX 12 Agility SDK 지원이 포함된 Windows 10 이상의 모든 버전(버전 1909.1350 이상) 및 Windows 11이 지원됩니다.

    • Windows 10 버전 1909 — 리비전 번호가 .1350을 초과하거나 같아야 합니다.

    • Windows 10 버전 2004 및 20H2 — 리비전 번호가 .789를 초과하거나 같아야 합니다.

    • DirectX 12(셰이더 모델 6.6 atomics 포함) 또는 Vulkan(VK_KHR_shader_atomic_int64)

  • 최신 그래픽 드라이버

PlayStation 4 및 Xbox One에서도 나나이트가 지원되지만, 현재는 실험단계로 간주됩니다. 이 플랫폼의 경우 퀄리티가 매우 높은 콘텐츠에서 나나이트의 퍼포먼스가 출시 가능한 게임의 요구 사항을 충족하지 못할 수 있습니다.

나나이트 예비 메시 및 정밀도 세팅

스태틱 메시에는 나나이트 표현의 정밀도와 완전한 디테일을 제공하는 메시로부터 생성된 낮은 퀄리티 표현(예비 메시)의 정밀도를 제어하는 추가 프로퍼티가 포함됩니다.

이 세팅은 스태틱 메시 에디터 디테일(Details) 패널의 나나이트 세팅(Nanite Settings) 섹션에 있습니다.

스태틱 메시 에디터 나나이트 세팅

나나이트 세팅에는 다음 프로퍼티가 포함됩니다.

프로퍼티

설명

위치 정밀도(Position Precision)

나나이트 메시 생성 시 이 메시가 사용해야 하는 정밀도를 선택합니다. 자동(Auto) 은 메시 크기에 따라 적절한 정밀도를 결정합니다. 정밀도를 오버라이드하여 정밀도를 향상하거나 디스크 사용 공간을 최적화할 수 있습니다.

최소 메모리 상주(Minimum Residency)

이 메시가 항상 메모리에 확보할 메모리 바이트 크기를 설정하고, 나머지는 스트림 인합니다. 값이 높을수록 메모리가 더 많이 요구되지만, 일부 메시의 경우 스트리밍되는 팝인(pop-in) 문제를 줄여주기도 합니다.

트라이앵글 퍼센트 유지(Keep Triangle Percent)

소스 메시에서 유지하는 트라이앵글 퍼센트입니다. 이 퍼센티지를 줄여 디스크 크기를 최적화할 수 있습니다.

상대 오차 정리(Trim Relative Error)

나나이트 메시에서 제거가 허용되는 최대 상대 오차를 설정합니다. 이 상대 오차보다 시각적 영향이 적은 경우 소스 메시의 모든 디테일이 제거됩니다. 상대 오차는 유닛 크기를 가지지 않으며, 메시 크기에 상대적입니다. 기본적으로 나나이트는 원본 소스 메시의 모든 트라이앵글을 저장합니다.

예비 트라이앵글 퍼센트(Fallback Triangle Percent)

나나이트에서 소스 메시를 줄일 때 남길 트라이앵글 퍼센티지를 설정합니다. 플랫폼이 나나이트 렌더링을 지원하지 않는 등의 문제로 디테일이 완전히 표현된 나나이트 데이터를 사용할 수 없거나, 복합 콜리전과 같이 나나이트 데이터를 사용하는 것이 실용적이지 않은 경우에는 낮은 퀄리티로 표현(예비 메시)됩니다.

예비 상대 오차(Fallback Relative Error)

예비 메시에서 제거가 허용되는 최대 상대 오차를 설정합니다. 이 상대 오차보다 시각적 영향이 적은 경우 생성된 예비 메시의 모든 디테일은 제거됩니다. 상대 오차는 유닛 크기를 가지지 않으며, 메시 크기에 상대적입니다.

버텍스 정밀도

나나이트는 메시 버텍스 위치를 양자화하여 메모리 밀도를 최대화하고 디스크 점유 공간을 최소화합니다. 양자화 단계 크기는 2의 거듭제곱으로, 위치 정밀도 프로퍼티를 사용하여 개별 메시의 요구 사항을 충족하도록 선택할 수 있습니다. 기본적으로 설정되는 자동 은 메시 크기와 트라이앵글 밀도에 기반하여 적절한 정밀도를 선택합니다. 정밀도 크기를 선택하여 수동으로 오버라이드함으로써 정밀도를 향상하거나 디스크 점유 공간을 최적화할 수 있습니다.

위치 정밀도를 위한 스태틱 메시 에디터 나나이트 세팅

양자화는 손실 압축의 한 형태입니다. 손실 압축은 모듈형 메시 조각이나 바운더리를 공유하는 다른 메시로 작업하는 경우에 특히 문제가 발생할 수 있습니다. 지오메트리에 구멍이나 크랙이 생기지 않도록 바운더리를 완벽하게 정렬해야 하는 경우에는 더욱 심각할 수 있습니다.

일관성을 유지하기 위해 양자화는 메시 원점을 중심으로 정규화되지 않은 오브젝트 좌표에서 일어납니다. 이는 메시가 동일한 정밀도 세팅을 사용할 때 양자화가 크랙을 일으키지 않게 하며, 메시 중심 사이의 이동은 해당 정밀도의 배수입니다.

데이터 트리밍

나나이트가 저장하는 데이터 양을 줄여 디스크 크기를 최적화해야 할 때가 있습니다. 나나이트에는 제작 중 언제든지 저장된 나나이트 메시에서 디테일 데이터를 트리밍하는 세팅이 있으므로 안전하게 퀄리티를 최대한 오버슈팅하고 나중에 그에 맞추어 조정할 수 있습니다.

디테일 데이터를 트리밍하려면 트라이앵글 퍼센트 유지상대 오차 정리 프로퍼티를 사용해야 합니다. 이러한 프로퍼티는 나나이트 메시로 저장되기 전의 사전 데시메이션 옵션이라고 생각할 수 있습니다. 나나이트에서 디테일은 메시 전체에서 균등할 필요가 없습니다. 중요도가 가장 낮은 데이터를 먼저 제거하며, 손실 압축에 가깝습니다.

트라이앵글 퍼센트 유지 를 사용하여 소스 메시에서 유지할 트라이앵글의 퍼센티지를 설정합니다.

상대 오차 정리 를 사용하여 소스 메시에서 데이터를 트리밍할 때 허용되는 최대 상대 오차를 설정합니다. 제거될 경우 이 설정치보다 적은 상대 오차를 발생시키는 트라이앵글은 모두 제거됩니다. 다시 말해, 이 값보다 시각적 영향이 적은 모든 디테일은 트리밍된다고 할 수 있습니다. 상대 오차는 유닛 크기를 가지지 않으며, 메시 크기에 상대적입니다.

두 프로퍼티 모두 기본적으로는 아무것도 트리밍하지 않도록 설정되어 있으며, 나나이트는 원본 소스 메시의 모든 트라이앵글을 저장합니다.

데이터 트리밍은 퍼포먼스 향상이 아닌 디스크 크기(다운로드 크기) 감소에 중요한 역할을 합니다. 자세한 설명은 아래의 데이터 크기 섹션을 참조하세요.

예비 메시

언리얼 엔진의 상당 부분은 기존에 렌더링된 메시가 제공하던 전통적인 버텍스 버퍼에 액세스해야 합니다. 스태틱 메시에서 나나이트가 활성화되면 디테일 수준이 높은 나나이트 데이터를 액세스하고 사용할 수 없는 곳에서 활용할 수 있는 낮은 퀄리티의 표현이 생성됩니다. 나나이트 렌더링이 지원되지 않는 경우 예비 메시가 생성되어 사용됩니다. 또한 복합 콜리전이 필요하거나 구운 라이팅에 라이트맵을 사용해야 할 때, 루멘으로 하드웨어 레이 트레이싱 리플렉션을 사용할 때와 같이 완전한 디테일을 제공하는 메시를 사용하는 것이 이상적이지 않은 상황에 사용됩니다.

예비 트라이앵글 퍼센트 프로퍼티는 낮은 퀄리티의 표현을 생성하는 데 사용되는 원본 소스 메시의 트라이앵글 퍼센티지를 나타냅니다. 트라이앵글 퍼센티지는 0~100% 사이로 지정할 수 있으며, 퍼센티지가 높을수록 원본 메시의 디테일이 더 많이 보존됩니다.

예비 상대 오차 는 소스 메시에서 디테일을 제거할 때 허용되는 최대 상대 오차를 설정합니다. 제거될 경우 이 설정치보다 적은 상대 오차를 발생시키는 트라이앵글은 모두 제거됩니다. 시각적 영향이 적은 디테일일수록 먼저 제거된다고 할 수 있습니다. 상대 오차는 유닛 크기를 가지지 않으며, 메시 크기에 상대적입니다.

예를 들어, 메시에 아예 데시메이션을 적용하고 싶지 않다면 예비 트라이앵글 퍼센트를 100으로, 예비 상대 오차를 0으로 설정하면 됩니다.

아래 예시는 원본 소스 메시로부터 생성된 디테일 수준이 높은 나나이트 메시와 생성된 나나이트 예비 메시(디폴트 세팅)를 비교한 것입니다.

하이 폴리 나나이트 메시

나나이트에서 생성한 예비 메시 | 디폴트 세팅

예비 상대 오차를 사용하여 원본 소스 메시에서 원본 디테일을 얼마나 보존할지 정하고, 예비 퍼센티지를 설정하여 그 디테일을 얼마나 사용할지 정할 수 있습니다.

아래의 비교에서 예비 메시는 예비 트라이앵글 퍼센트를 100%로 유지하지만, 원본 소스 메시에서 트라이앵글을 더 많이 사용하도록 예비 상대 오차를 조정했습니다. 이 값을 조정할 경우 뷰포트의 나나이트 트라이앵글에 나나이트 디테일을 값 변경 표시자로 사용할 수 있습니다.

나나이트에서 생성한 예비 메시 | 디폴트 세팅

나나이트에서 생성한 예비 메시 | 퀄리티를 위해 조정된 세팅

예비 메시 시각화

스태틱 메시 에디터에서는 표시(Show) 드롭다운 메뉴의 뷰포트 나나이트 예비(Nanite Fallback) 옵션을 사용하여 완전한 디테일을 제공하는 나나이트 메시와 나나이트 예비 메시 간에 토글할 수 있습니다. 또는 단축키 Ctrl + N 을 사용하여 두 시각화 옵션 간에 빠르게 토글할 수도 있습니다.

스태틱 메시 에디터 나나이트 예비 메시 토글

나나이트 활성화 메시에 커스텀 예비 메시 LOD 사용하기

예비 메시는 복합 폴리곤별 콜리전, 레이 트레이싱, 라이트 굽기 등의 엔진 기능에 사용됩니다. 또한, 나나이트를 지원하지 않는 플랫폼에서 사용되기도 합니다. 예비 메시를 생성할 때, 나나이트 활성화 메시는 항상 소스 메시의 LOD0 슬롯을 사용하여 예비 메시를 자동 생성합니다. 그러나 자동 생성된 메시가 아닌 수동 지정한 예비 메시나 기존 LOD 시리즈를 사용하고 싶을 수도 있습니다.

이러한 수준의 컨트롤을 통해 프로젝트에서 나나이트를 사용할 수 있을 뿐만 아니라, 레이 트레이스드 리플렉션 또는 나나이트를 지원하지 않는 플랫폼에 나타난 지오메트리를 직접 제어할 수 있습니다.

아래의 단계를 따라 자체 커스텀 예비 메시를 지정하거나, LOD 시리즈를 사용할 수 있습니다.

  1. 이 방법을 사용할 경우 예비 메시는 무시되므로, 예비 트라이앵글 퍼센트(Fallback Triangle Percent)0 으로 설정하여 예비 메시를 가능한 한 작게 만듭니다.

  2. 기존 LOD 설정 절차를 사용하여 메시에 하나 이상의 LOD를 추가합니다.

  3. LOD 세팅(LOD Settings) 섹션에서 LOD 임포트(LOD Import) 드롭다운의 임포트 LOD 레벨 1(Import LOD Level 1) 을 사용합니다.

  4. LOD 세팅(LOD Settings) 섹션에서 최소 LOD(Minimum LOD)1 로 설정합니다. 이렇게 하면 나나이트에서 생성한 예비 메시가 무시됩니다.

복합 콜리전은 특수한 경우에 해당합니다. 일반 세팅(General Settings) 아래의 콜리전에 대한 LOD(LOD for Collision) 프로퍼티를 사용하여 콜리전에 사용할 LOD를 지정합니다. LOD0을 포함한 모든 LOD는 콜리전에 사용할 수 있습니다.

이 특수한 접근 방법은 나나이트 프로젝트가 나나이트를 지원하지 않는 플랫폼과 자동으로 호환되도록 하는 데 적합하지 않을 수 있으며, 프로젝트에서 테스트 및 평가해야 합니다.

나나이트는 매우 많은 인스턴스를 효율적으로 처리하지만, 나나이트가 비활성화될 경우 기존 렌더 파이프라인에는 드로 콜의 수가 지나치게 많을 수도 있습니다. r.Nanite 0 으로 나나이트 지원을 토글함으로써 프로젝트에 적절한지 테스트할 수 있습니다.

자세한 정보는 이 페이지의 콘솔 변수 및 명령 섹션을 참조하세요.

퍼포먼스 및 콘텐츠 문제

대부분의 경우, 나나이트는 화면 해상도에 맞추어 아무런 문제없이 스케일링됩니다. 이는 세밀한 LOD와 오클루전 컬링이라는 두 가지 핵심 기술 덕분입니다. 일반적으로 이는 나나이트가 화면에 그리려고 하는 트라이앵글 수가 씬 내 소스 데이터의 지오메트리 복잡도와 관계없이 상당히 일정하며 픽셀 수에 비례한다는 것을 의미합니다.

나나이트는 픽셀보다 훨씬 많은 수의 트라이앵글을 그릴 필요가 없다는 디자인 원칙을 따릅니다.

콘텐츠 유형이 스케일링에 사용되는 나나이트 기술에 나쁜 영향을 미치는 경우도 있지만, 그렇다고 해서 나나이트를 해당 콘텐츠에 전혀 사용할 수 없거나 기존 파이프라인보다 렌더링이 훨씬 빠르다는 의미는 아닙니다. 이러한 콘텐츠 유형에서는 씬 복잡도가 아니라 픽셀에 따른 스케일링이 적용되지 않는다는 뜻입니다. 이러한 상황에 대해서는 언리얼 엔진에서 제공하는 프로파일링 기능을 사용하여 모니터링할 수 있습니다.

군집 지오메트리

군집 지오메트리는 헤어, 나뭇잎, 잔디 등 연결성이 없는 수많은 작은 요소가 원거리에서 볼륨을 이루는 것을 가리킵니다. 이러한 지오메트리 타입은 나나이트의 LOD와 오클루전 컬링 기술에 나쁜 영향을 미칩니다.

나나이트는 본질적으로 계층형 LOD로, 작은 트라이앵글을 커다란 트라이앵글로 간소화하고 그 차이가 인식할 수 없을 만큼 작다고 판단하면 보다 간소화된 것을 선택합니다. 연속적인 평면이 아닌 군집 지오메트리에서는 이 기능이 잘 작동하지 않으며, 멀리서 보면 솔리드 표면이 아니라 부분적으로 불투명한 클라우드처럼 보입니다.

따라서 나나이트는 군집 지오메트리를 일반적인 솔리드 표면과 같이 적극적으로 축소하지 못하며, 그 결과 커버된 픽셀에 대해 더 많은 트라이앵글이 그려지게 됩니다.

군집 지오메트리가 나쁜 영향을 미치는 두 번째 최적화 사례는 오클루전 컬링입니다. 오클루전 컬링은 아주 미세하며, 그 미세함의 정도가 픽셀 단위를 넘어섭니다. 구멍으로 가득한 지오메트리, 더 심한 경우 구멍이 가득하고 층층이 쌓인 지오메트리는 화면상의 영역이 그 뒤에 있는 것을 검게 처리하기 전에 다수의 뎁스 레이어를 빌드하게 만들기 때문에 막대한 오버드로를 유발합니다. 예컨대 화면에 8x8 픽셀 영역이 있다고 가정하고 모든 픽셀이 채워지기 전에 얼마나 많은 뎁스 레이어가 그려져야 하는지 생각해 볼 수 있습니다. 이렇게 과도한 오버드로로 인해 나나이트는 같은 픽셀 수에 대해 더 많은 트라이앵글을 그리게 되고 결과적으로 렌더링이 느려지게 됩니다.

폴리지는 이 문제가 가장 명확하게 드러나는 사례이지만, 그렇다고 해서 나나이트를 폴리지 타입 메시에 아예 사용하면 안 된다는 것은 아닙니다. 개별적으로 모델링된 잎으로 구성된 높은 나무가 하늘을 뒤덮고 있는 숲이라면 잘 실행되지 않을 것이 거의 확실하지만, 나무 둥치나 가지에는 사용할 수 있습니다. 건물 측면의 덩굴에서도 솔리드 표면 뒤에는 레이어가 하나만 존재하기 때문에 나나이트가 잘 작동할 수 있습니다.

다양한 사용 사례로 실험해 보고 프로젝트에서 어떤 것이 잘 작동하는지 살펴보는 것이 좋습니다. 이러한 메시 타입에서 나나이트의 좋은 퍼포먼스를 보장하기 위해 프로파일링 툴을 사용할 수 있습니다.

가깝게 스택된 표면

기존 메시의 오클루전 컬링은 실질적인 한계 때문에 대규모 스케일에서의 킷배싱 워크플로는 거의 불가능했습니다. 나나이트의 세밀한 오클루전 컬링은 이 워크플로를 개발 과정에서 더욱 원활하게 사용할 수 있도록 지원합니다.

위의 군집 지오메트리 섹션에서 설명했듯이, 보이는 표면 바로 아래 가까이에 있는 숨겨진 표면에서 오버드로가 발생할 수 있습니다. 보이는 표면 아래에 지오메트리가 잘 묻혀 있는 경우 나나이트가 이를 상당히 저렴한 비용으로 탐지하고 컬링하여 거의 비용 소모 없이 처리할 수 있습니다. 그러나 최상단 표면 가까이에 지오메트리가 쌓여 있는 경우 나나이트는 어떤 것이 위에 있는지 판단하지 못하고 두 개를 모두 그립니다.

이처럼 컬링 시 발생하는 특수한 문제는 최악의 시나리오로, 이 경우 나나이트가 어떤 표면이 위에 있는지 인식하지 못하고 모든 레이어를 그리게 됩니다. 이 부정확성은 화면의 크기와 거리에 따라 커지며, 10cm 정도에서는 레이어가 분리되어 가까이에서 봐도 양호할 수 있지만 거리가 멀어져서 거리 차이가 픽셀보다 작아지면 오버드로가 발생합니다.

게임 뷰

가깝게 스택된 여러 나나이트 인스턴스

아래 예시에서 카메라를 이동해 캐릭터가 서 있는 영역 아래를 내려다보면, 나나이트 오버드로 시각화를 통해 스택된 표면이 어떻게 렌더링되고 있는지 확인할 수 있습니다. 밝은 영역은 다른 영역보다 오버드로가 더 많이 발생한다는 것을 가리킵니다.

나나이트 오버드로 시각화

오버드로 시각화는 오버드로 문제를 찾아낼 수 있는 가장 효과적인 방법입니다. 어느 정도의 오버드로는 예상되는 문제이지만, 그 정도가 심하면 나나이트 컬링 및 래스터화 비용이 높아져 씬 복잡도와는 무관하게 프로세스 내 나나이트의 스케일링 효과가 떨어지게 됩니다.

패시팅된 하드 에지 노멀

유의할 문제 중 하나는 패시팅된 노멀이 있는 디테일 수준이 매우 높은 메시를 임포트하는 경우입니다. 이는 두 가지의 서로 다른 폴리곤 간의 노멀이 스무딩되지 않음을 의미합니다. 이 문제는 흔히 발생하며 놓치기 쉬우므로 주의해야 합니다. 메시에서 공유하는 버텍스 양이 적더라도 렌더링 퍼포먼스와 데이터 크기 양쪽에서 비용이 매우 높아질 수 있기 때문입니다.

이상적으로는 메시의 버텍스 수가 트라이앵글 수보다 적어야 합니다. 비율이 2:1 이상인 경우, 특히 트라이앵글 수가 많으면 문제가 될 수 있습니다. 비율이 3:1이면 메시가 완전히 패시팅되어 모든 트라이앵글이 자체 버텍스 3개를 갖게 되며 다른 트라이앵글과 버텍스를 전혀 공유하지 않게 됩니다. 이렇게 되는 가장 흔한 이유는 노멀이 스무딩되지 않아서 같지 않기 때문입니다.

버텍스가 많을수록 데이터도 많아진다는 것을 항상 염두에 두어야 합니다. 또한 이 경우 버텍스 트랜스폼 작업이 늘어나며, 2:1보다 비율이 높아지면 렌더링 패스 속도가 떨어지게 됩니다. 하드 서피스 모델링에서 의도적으로 사용할 경우 문제가 되지 않으며 사용하지 않을 이유 또한 없습니다. 하지만 실수로 100% 패시팅된 밀도 높은 메시를 임포트하는 경우 생각보다 훨씬 높은 비용을 치러야 합니다. 또한 로우 폴리 메시에서 감지할 수 있는 하드 노멀 한계치를 사용하여 다른 DCC 패키지에서 생성된 밀도 높은 유기체 타입 표면에 임포트된 노멀은 나나이트에 불필요한 비용을 더할 수 있으므로 주의해야 합니다.

아래의 왼쪽 이미지에 있는 두 메시를 예시로 들어 설명해 보겠습니다. 왼쪽의 메시에는 패시팅된 노멀이 있고, 오른쪽에는 스무딩된 노멀이 있습니다. 나나이트의 트라이앵글 시각화 기능을 통해 보면 각각을 그리는 데 사용된 트라이앵글 수가 눈에 띄게 차이나는 것을 알 수 있습니다. 왼쪽의 패시팅된 예시는 오른쪽의 스무딩된 예시보다 훨씬 더 많은 트라이앵글을 그립니다.

패시팅된 노멀(왼쪽)과 스무딩된 노멀(오른쪽)이 있는 나나이트 활성화 메시

패시팅된 노멀(왼쪽)과 스무딩된 노멀(오른쪽)이 있는 나나이트 활성화 메시의 나나이트 트라이앵글 시각화

이미지를 클릭하면 전체 크기로 확대됩니다.

이미지를 클릭하면 전체 크기로 확대됩니다.

일반 콘텐츠의 퍼포먼스

비교를 위해 다음 GPU 타이밍은 PlayStation 5 언리얼 엔진 5 테크니컬 데모인 나나이트 세계의 루멘에서 가져왔습니다.

  • 평균 렌더 해상도 1400p가 4K로 템포럴 업샘플링되었습니다.

  • 이 데모의 거의 모든 메시에 해당하는 모든 나나이트 메시를 컬링 및 래스터화하는 시간은 ~2.5밀리초입니다.

    • 거의 모든 지오메트리에 나나이트 메시가 사용되었습니다.

    • 100% GPU 기반이므로 CPU 비용이 거의 들지 않습니다.

  • 모든 나나이트 메시를 평가하는 시간은 ~2밀리초입니다.

    • 씬에 존재하는 머티리얼당 드로 콜은 1회로, CPU 비용이 매우 낮습니다.

GPU 시간을 모두 합치면 약 4.5밀리초로, 언리얼 엔진 4의 뎁스 프리패스와 베이스 패스를 합친 것에 해당하는 시간입니다. 따라서 나나이트는 60FPS를 목표로 하는 게임 프로젝트에 적합합니다.

이러한 수치는 앞 섹션에서 언급된 퍼포먼스 저하를 유발하지 않는 콘텐츠에서 예상되는 수치입니다. 인스턴스와 고유 머티리얼 수가 매우 많은 경우에도 비용이 높아질 수 있기 때문에 나나이트 개발 과정에서 이 영역에 대해 집중적으로 작업이 진행되고 있습니다.

데이터 크기

나나이트를 통해 고도의 디테일을 확보할 수 있기 때문에, 지오메트리 데이터가 많이 늘어나면 게임 패키지 크기와 플레이어의 다운로드 용량도 커질 것이라고 생각할 수도 있습니다. 하지만 실제로 용량에 미치는 영향은 거의 없습니다. 나나이트에 특화된 메시 인코딩 덕분에 나나이트의 메시 포맷은 표준 스태틱 메시 포맷보다 훨씬 작습니다.

예를 들어 언리얼 엔진 5 샘플인 에인션트의 협곡에서 나나이트 메시는 입력 트라이앵글당 평균 14.4바이트입니다. 이는 디스크에서 100만 트라이앵글 나나이트 메시 하나의 평균 크기가 ~13.8MB라는 것을 의미합니다.

기존의 로우 폴리 메시와 노멀 맵을 나나이트의 하이 폴리 메시와 비교하면 다음과 같습니다.

로우 폴리 메시

  • 트라이앵글: 19,066

  • 버텍스: 10,930

  • LOD 수: 4

  • 나나이트: 비활성화됨

스태틱 메시 압축 패키지 크기: 1.34MB

나나이트 메시

  • 트라이앵글: 1,545,338

  • 버텍스: 793,330

  • LOD 수: 해당 없음

  • 나나이트: 활성화됨

스태틱 메시 압축 패키지 크기: 19.64MB

로우 폴리 스태틱 메시 | 4k 노멀 맵 사용

하이 폴리 스태틱 메시 | 4k 노멀 맵 사용

압축 패키지 크기는 에셋 전체의 크기가 아닙니다. 이 메시에서만 사용되는 고유 텍스처 또한 고려해야 합니다. 메시에 사용되는 머티리얼 다수는 여러 노멀, 베이스 컬러, 메탈릭, 스페큘러, 러프니스, 마스크 텍스처 등으로 구성된 고유한 텍스처를 갖습니다.

이 에셋은 베이스 컬러와 노멀이라는 두 가지 텍스처만 사용하므로 고유 텍스처가 여러 개 있는 에셋만큼 디스크 공간을 많이 차지하지 않습니다. 예를 들어 트라이앵글 수가 최대 150만 개인 나나이트 메시의 크기(19.64MB)는 4k 노멀 맵 텍스처보다 작습니다.

텍스처 타입

텍스처 크기

디스크상의 크기

BaseColor

4k x 4k

8.2MB

노멀

4k x 4k

21.85MB

메시 및 텍스처의 총 압축 패키지 크기:

  • 로우 폴리 메시: 31.04MB

  • 하이 폴리 메시: 49.69MB

나나이트 메시는 이미 디테일 수준이 매우 높기 때문에 고유 노멀 맵을 다른 에셋과 공유되는 디테일 노멀 타일링으로 대체해 볼 수 있습니다. 이 경우 퀄리티에서 손실이 발생하지만 이는 매우 미미한 수준이며, 로우 폴리외 하이 폴리 버전 사이의 퀄리티 차이보다는 훨씬 적습니다. 따라서 150만 개의 트라이앵글로 구성된 나나이트 메시는 4k 노멀 맵이 있는 로우 폴리 메시보다 외관상 더 뛰어나면서 크기도 더 작아질 수 있습니다.

나나이트 활성화 메시 및 텍스처의 총 압축 패키지 크기: 27.83MB

하이 폴리 스태틱 메시 | 4k 노멀 맵 사용

나나이트 메시 | 4k 디테일 노멀 맵 사용

텍스처 해상도와 디테일 노멀 맵으로 많은 실험을 할 수 있지만, 이러한 비교를 통해 나나이트 메시의 데이터 크기가 아티스트들에게 이미 익숙한 데이터와 크게 다르지 않다는 점을 알 수 있습니다.

마지막으로, 동일한 LOD0 상태에서 나나이트 압축과 하이 폴리를 사용하는 표준 스태틱 메시 포맷을 비교해 보겠습니다.

하이 폴리 스태틱 메시

  • 트라이앵글: 1,545,338

  • 버텍스: 793,330

  • LOD 수: 4

  • 나나이트: 비활성화됨

스태틱 메시 압축 패키지 크기: 148.95MB

나나이트 메시

  • 트라이앵글: 1,545,338

  • 버텍스: 793,330

  • LOD 수: 해당 없음

  • 나나이트: 활성화됨

스태틱 메시 압축 패키지 크기: 19.64MB

이전의 나나이트 압축 크기인 19.64MB 와 비교하면 4 LOD의 표준 스태틱 메시 압축에 비해 7.6배 작습니다.

나나이트 압축과 데이터 크기는 언리얼 엔진의 향후 출시에서 향상할 핵심 영역입니다.

데이터 크기에 대한 일반적인 조언

나나이트와 버추얼 텍스처링 시스템을 속도가 빠른 SSD 하드 드라이브와 함께 사용할 경우 지오메트리와 텍스처의 런타임 예산에 대한 우려를 줄여줍니다. 하지만 이 데이터를 사용자에게 전달하는 방식에서 가장 큰 병목 구간이 발생합니다.

디스크상의 데이터 크기는 물리적 미디어나 인터넷을 통한 다운로드 등 콘텐츠 전달 방식을 고려할 때 중요한 요소이며 압축 기술만으로는 한계가 있습니다. 평균적인 최종 사용자의 인터넷 대역폭, 광학 미디어 크기 및 하드 드라이브 크기는 하드 드라이브 대역폭 및 액세스 레이턴시, GPU 컴퓨팅 파워 및 나나이트 같은 소프트웨어 기술과 동일한 레이트로 스케일링되지 않습니다. 따라서 데이터를 고객에게 전달하는 것은 여전히 까다로운 문제입니다.

디테일 수준이 매우 높은 메시를 효율적으로 렌더링하는 것은 나나이트에 있어서 큰 문제가 아니지만, 디스크에 데이터를 저장하는 것은 반드시 확인이 필요합니다.

시각화 모드

나나이트에는 현재 씬에서 데이터를 검토하는 여러 시각화 모드가 포함되어 있습니다.

레벨 뷰포트에서 뷰 모드(View Modes) 드롭다운의 나나이트 시각화(Nanite Visualization) 에 마우스를 올려 나오는 옵션 중 선택합니다.

뷰포트의 나나이트 시각화 메뉴

개요(Overview) 시각화는 이미지 중앙에 렌더링된 씬을 표시하고, 엄선된 나나이트 시각화를 화면 주변에 참고용으로 표시합니다.

나나이트 개요 시각화

선택할 수 있는 나나이트 시각화 모드는 다음과 같습니다.

나나이트 시각화

설명

마스크(Mask)

나나이트(초록)와 비나나이트(빨강) 지오메트리를 표시하는 시각화입니다.

트라이앵글(Triangles)

현재 씬에서 나나이트 메시의 모든 트라이앵글을 표시합니다.

클러스터(Clusters)

현재 씬 뷰에서 렌더링되는 모든 트라이앵글 그룹을 색으로 표시합니다.

프리미티브(Primitives)

인스턴스 스태틱 메시(Instance Static Mesh, ISM)의 모든 인스턴스에 대한 컴포넌트를 같은 색으로 표시하는 시각화입니다.

인스턴스(Instances)

씬의 각 인스턴스마다 다른 색을 적용하는 시각화입니다.

오버드로(Overdraw)

씬 지오메트리에서 발생하는 오버드로의 양을 표시합니다. 가깝게 스택된 작은 오브젝트가 큰 오브젝트보다 더 많은 오버드로를 유발합니다.

머티리얼 복잡도(Material Complexity)

나나이트 지오메트리에서 머티리얼의 복잡도를 표시합니다.

머티리얼 ID(Material ID)

개별 나나이트 메시의 각 머티리얼 ID를 별도의 색으로 표시합니다.

라이트맵 UV(Lightmap UV)

나나이트 메시 표면의 UV 좌표를 표시하는 시각화입니다.

나나이트는 나나이트 시각화 메뉴에서 추가적인 시각화 옵션을 활성화하는 고급 시각화 모드가 포함되어 있습니다. 이 시각화 모드는 나나이트의 다양한 로우 레벨 측면을 디버깅 또는 프로파일링하는 프로그래머에게 유용합니다.

콘솔 변수 r.Nanite.Visualize.Advanced 1 로 이 고급 시각화 모드를 활성화할 수 있습니다.

나나이트 콘텐츠 검사

언리얼 엔진의 일부 기능은 아직 나나이트에서 지원되지 않으며, 몇몇 기능은 아예 지원되지 않을 수도 있습니다. 나나이트 툴 을 사용하면 창 하나에서 사용 가능한 나나이트 지원 에셋을 검사할 수 있습니다. 콘텐츠 브라우저에서 에셋을 검사하여 오류를 찾거나, 나나이트를 비활성화 또는 활성화함으로써 에셋을 최적화할 기회가 있는지 파악할 수 있습니다.

툴(Tools) > 나나이트 툴(Nanite Tools) 을 선택하여 메인 메뉴에서 나나이트 툴 창을 열 수 있습니다.

에셋 검사를 위한 나나이트 툴 창

나나이트와 함께 사용하면 오류를 발생시키는 스태틱 메시를 표시하는 나나이트 툴 창

나나이트 툴 창을 열면 다음과 같은 두 개의 탭이 있습니다.

  • 오류(Errors) 탭은 나나이트를 지원하지 않는 머티리얼이 적용된 에셋 등 나나이트와 함께 사용하면 현재 오류를 발생시킨다고 알려진 나나이트 활성화 에셋을 표시합니다.

  • 최적화(Optimize) 탭은 에셋이 가진 트라이앵글 수와 지원되지 않는 머티리얼을 사용하는 에셋 제외 여부에 따라 프로젝트에서 나나이트 지원 에셋을 필터링합니다.

나나이트에서 오류나 최적화가 어떻게 나타날지 평가하려면 각각 검사를 수행해야 합니다.

나나이트 툴: 오류

오류 탭은 나나이트 활성화 에셋에 적용된 지원되지 않는 머티리얼 타입을 빠르게 식별하는 데 유용합니다. 일괄 선택 방법을 사용하는 프로젝트 등 나나이트를 사용하도록 변환되는 프로젝트에서 오류 탭은 검사를 수행한 후 지원되지 않는 나나이트 에셋을 모두 표시합니다.

나나이트 툴의 오류 탭

프로젝트에서 나나이트 활성화 에셋 검사를 시작하려면 검사 수행(Perform Audit) 버튼을 클릭합니다.

나나이트 툴에서 에셋 검사 수행

검사 동안 나나이트 에셋에서 활성화된 머티리얼 오류 의 모든 머티리얼은 에셋 목록에 캡처되는 오류를 생성합니다.

나나이트 툴의 오류 머티리얼 오류 필터

나나이트 메시 오류 목록은 문제가 되는 에셋의 이름, 트라이앵글의 수, 레벨에 사용된 인스턴스 수, 생성하는 오류의 수를 표시합니다.

나나이트 툴의 검사된 에셋 오류 목록

컴파일 목록을 살펴봄으로써 나나이트를 활성화한 채로 남겨둘지, 창 우측 하단의 나나이트 비활성화(Disable Nanite) 버튼을 사용하여 선택된 항목을 일괄적으로 선택 해제할지 결정할 수 있습니다.

나나이트 툴 창에서 선택된 에셋에서 나나이트 비활성화

나나이트 툴: 최적화

최적화 탭은 현재 나나이트를 활성화하지 않은 미지원 머티리얼 타입을 사용하지 않으면서 지정된 트라이앵글 수를 넘는 나나이트 지원 에셋을 빠르게 식별하는 데 유용합니다.

나나이트 툴 창의 최적화 탭

검사를 수행하기 전, 디폴트 트라이앵글 수보다 트라이앵글 수가 적은 에셋을 변환해야 하는 경우 지오메트리 필터(Geometry Filters)트라이앵글 한계치(Triangle Threshold) 세팅을 고려해 볼 수 있습니다.

나나이트 툴 최적화의 트라이앵글 한계치 필터

프로젝트에서 나나이트가 활성화되지 않은 모든 에셋의 검사를 시작하려면 검사 수행(Perform Audit) 을 클릭합니다.

나나이트 툴 최적화 탭의 에셋 검사 수행

필터 기준에 맞는 모든 비나나이트 에셋이 비나나이트 메시(Non-Nanite Meshes) 목록에 표시됩니다.

나나이트 툴 최적화의 비나나이트 메시 목록

나나이트 활성화(Enable Nanite) 를 클릭하여 목록에서 어떤 에셋의 나나이트를 활성화할지 결정할 수 있습니다.

나나이트 툴 최적화에서 선택한 모든 메시에서 나나이트 활성화

콘솔 변수 및 명령

다음과 같은 통계 및 콘솔 변수를 사용하여 나나이트를 디버깅 및 환경설정할 수 있습니다.

콘솔 변수 r.Nanite 0 을 사용하여 런타임에 전체적으로 나나이트 렌더링을 활성화 및 비활성화할 수 있습니다. 나나이트를 비활성화하는 것은 지원되지 않는 플랫폼을 에뮬레이트하는 좋은 방법입니다.

나나이트 예비 렌더링 모드

나나이트는 비활성화되거나 플랫폼이 나나이트를 지원하지 않을 때를 대비해 예비 메시 렌더링 모드를 제공합니다. 콘솔 변수 r.Nanite.ProxyRenderMode 로 사용할 모드를 제어할 수 있습니다.

  • 0 은 디폴트 모드로, 설정할 경우 예비 메시를 렌더링하거나 화면 공간 기반 LOD를 사용합니다. 여기에는 스태틱 메시 에디터 프로퍼티의 최소 LOD 인식이 포함됩니다. 이 내용은 위의 예비 메시 섹션에 설명되어 있습니다.

  • 1 은 나나이트 활성화 메시의 모든 렌더링을 비활성화합니다.

  • 2 는 1 모드와 비슷하게 작동하지만, 스태틱 메시 에디터에서 표시(Show) > 나나이트 예비(Nanite Fallback) 시각화가 나나이트 예비를 렌더링하도록 합니다.

예비 렌더 모드 1과 2는 나나이트 없이 지원 가능한 것보다 인스턴스 수가 훨씬 더 많은 씬에 유용합니다. 두 모드를 사용하면 나나이트를 지원하지 않는 플랫폼의 에디터에서 씬을 열 수 있습니다.

예를 들어, 언리얼 엔진 5 샘플 프로젝트인 에인션트의 협곡에서 나나이트를 비활성화하면 일반 드로 콜이 수십, 수천 개 발생하여 나나이트 미지원 플랫폼에서 맵을 열기가 어렵습니다.

나나이트 통계 명령

Nanitestats 명령은 뷰포트 오른쪽 상단에 나나이트 컬링 통계의 오버레이를 추가합니다. 화면에 나타나는 나나이트 통계 표시

명령 실행인자는 나나이트가 화면에 어떤 통계를 표시할지 지정하는 데 사용됩니다. 실행인자가 제공되지 않으면 기본 뷰가 사용됩니다.

Nanitestats List 를 사용하여 디버그 출력에서 사용 가능한 모든 뷰를 표시할 수 있으며, 이는 다음과 같습니다.

  • 기본

  • VSM_Directional

  • VSM_Perspective

  • ShadowAtlas0

  • ShadowAtlas1

  • ShadowAtlas2

뷰를 선택할 때는 명령을 입력하고 원하는 뷰의 실행인자를 입력합니다. 예를 들어 Nanitestats VSM_Directional 을 입력하여 통계를 표시합니다.

패스가 2개인 오클루전 컬링을 사용하는 뷰의 경우, 통계가 메인 패스와 포스트 패스로 분리되어 표시됩니다.

나나이트 스트리밍 풀 크기 제어

콘솔 변수 r.Nanite.Streaming.StreamingPoolSize 를 사용하여 나나이트 스트리밍 데이터를 저장할 전용 메모리의 양을 제어할 수 있습니다. 더 큰 풀을 사용하면 씬에서 이동할 때 IO와 압축 해제 작업이 줄어들지만 메모리 점유율이 늘어납니다.

풀이 뷰에 필요한 모든 데이터를 저장하기에 충분하지 않은 경우 캐시 스래싱이 발생하여 정적인 뷰에서도 스트리밍이 안정화되지 않을 수 있습니다.

이 콘솔 변수는 런타임에 변경할 수 없으며 반드시 환경설정(.ini) 파일에서 지정해야 합니다.

단일 패스에서 최대 클러스터 설정

콘솔 변수 r.Nanite.MaxCandidateClustersr.Nanite.MaxVisibleClusters 로 단일 패스에서 사용되는 후보 및 가시 클러스터의 최대 수를 지정할 수 있습니다. 이 값은 중간 버퍼의 크기 설정에 사용되며, 디폴트값은 일반적인 게임 렌더링 작업을 고려하여 선택되었습니다.

이 버퍼를 동적으로 크기 변경하거나 오버플로 시에 자동으로 퀄리티를 낮추는 메커니즘은 제공되지 않으므로 씬 복잡도에 비해 버퍼가 너무 작아져서 렌더링 아티팩트를 유발할 수 있으며, 이는 일반적으로 누락되거나 깜빡이는 지오메트리로 나타납니다. 이러한 유형의 아티팩트가 발생하면 Nanitestats 를 사용하여 후보 및 가시 클러스터에 대해 바운드를 보수적으로 설정합니다. 보다 구체적인 내용은 ClustersSWClustersHW 통계를 살펴보세요. 후보 클러스터의 메모리 비용은 현재 12바이트이며, 가시 클러스터는 16바이트입니다.

이 콘솔 변수는 런타임에 변경할 수 없으며 반드시 환경설정(.ini) 파일에서 지정해야 합니다.