이 페이지에서는 나나이트의 지오메트리 시스템에 대한 심도 깊은 정보와 사용 예시를 제공합니다.
나나이트 예비 메시 및 정밀도 세팅
스태틱 및 스켈레탈 메시에는 나나이트 표현의 정밀도와 임포트된 원본 소스 메시에서 생성된 예비 메시의 정밀도를 제어하는 추가 프로퍼티가 포함됩니다.
이 세팅은 메시 에셋 에디터 디테일(Details) 패널의 나나이트 세팅(Nanite Settings) 섹션에 있습니다.
| 프로퍼티 | 설명 |
|---|---|
나나이트 지원 활성화(Enable Nanite Support) | 이 메시를 활성화하여 나나이트와 함께 사용하고, 나나이트를 사용할 수 없는 경우 예비 메시를 생성합니다. |
영역 보존(Preserve Area) | 단순화로 인해 표면 영역을 잃을 수 있는 나나이트 메시를 활성화하고, 열린 바운더리 에지를 확장하여 잃은 영역을 남은 트라이앵글에 재분배합니다. 이 세팅은 단순화로 인해 나뭇잎이 연결되지 않은 트라이앵글 및 쿼드가 될 가능성이 높은 폴리지에 사용하면 가장 유용합니다. 각 나뭇잎의 스케일을 확장하는 효과가 있습니다. 풀잎 등 지오메트리 리본의 경우 두껍게 하는 효과가 있습니다. 이 세팅은 모든 폴리지 메시에서만 활성화되어야 합니다. |
명시적 탄젠트 | true인 경우 원본 모델 탄젠트가 에셋별로 저장되고 사용됩니다. 이 세팅을 통해 탄젠트는 런타임에 묵시적으로 파생되는 대신 디스크에 명시적으로 저장됩니다. 탄젠트 정밀도 세팅은 버텍스 탄젠트의 추가적인 제어에 사용할 수 있습니다. 이 세팅을 활성화하면 스토리지가 대략 10% 증가하며, 묵시적 탄젠트가 충분히 정밀하지 않을 때 바람직합니다. |
선형보간 UV(Lerp UVs) | 단순화 시 UV 보간 여부입니다. 이 세팅은 가능한 경우 활성화해야 합니다. 실제 UV 좌표의 경우 이를 사용하면 단순화 시 새 버텍스에 대한 오차가 가장 낮은 최적의 UV를 계산할 수 있으며, UV가 노멀 텍스처 좌표로 사용되고 트라이앵글의 페이스에 걸쳐 보간한다고 가정합니다. 이 세팅은 인덱스가 UV에 저장된 경우와 같이 UV에 저장된 데이터가 보간하기에 유효하지 않은 경우 예를 들어 인덱스가 UV에 저장된 경우 인덱스의 선형보간은 의미가 없으며 인덱스를 사용하려는 셰이더를 손상시킬 수 있습니다. 비활성화한 경우, 나나이트가 렌더링할 LOD를 선택할 때 UV의 오류가 더는 고려되지 않습니다. 이는 보간할 수 없는 임의의 버텍스 어트리뷰트로 인한 오류는 일반적으로 추론할 수 없기 때문입니다. |
위치 정밀도(Position Precision) | 나나이트 메시의 버텍스 위치 생성 시 이 메시가 사용해야 하는 정밀도를 선택합니다. 메시 크기에 따라 적절한 정밀도를 자동으로 결정합니다. 정밀도를 오버라이드하여 정밀도를 향상하거나 디스크 사용 공간을 최적화할 수 있습니다. |
보통 정밀도(Normal Precision) | 나나이트 메시의 버텍스 노멀 생성 시 이 메시가 사용해야 하는 정밀도를 선택합니다. 메시 크기에 따라 적절한 정밀도를 자동으로 결정합니다. 정밀도를 오버라이드하여 정밀도를 향상하거나 디스크 사용 공간을 최적화할 수 있습니다. |
최소 상주(루트 지오메트리)(Minimum Residency (Root Geometry)) | 이 메시가 항상 메모리에 유지해야 하는 메모리 바이트 크기를 설정하고 나머지는 스트리밍됩니다. 값이 클수록 메모리가 더 많이 요구되지만, 일부 메시에서는 스트리밍 팝인 문제 발생을 완화할 수 있습니다. |
트라이앵글 퍼센트 유지(Keep Triangle Percent) | 소스 메시에서 유지하는 트라이앵글 퍼센트입니다. 이 퍼센티지를 줄여 디스크 크기를 최적화할 수 있습니다. |
상대 오차 정리(Trim Relative Error) | 나나이트 메시에서 제거할 수 있는 최대 상대 오차를 설정합니다. 이 상대 오차보다 시각적 영향이 적은 경우 소스 메시의 모든 디테일이 제거됩니다. 상대 오차는 유닛 크기를 가지지 않으며, 메시 크기에 상대적입니다. 기본적으로 나나이트는 원본 소스 메시의 모든 트라이앵글을 저장합니다. |
예비 타깃(Fallback Target) | 예비 메시 생성 시 어떤 타기팅 시스템을 사용할지 결정합니다.
|
소스 임포트 파일명(Source Import Filename) | 나나이트와 함께 사용할 고해상도 메시를 임포트하는 데 사용되는 파일 경로입니다. 메시의 고해상도 버전은 언리얼 엔진의 나나이트 및 지오메트리 모델링과 같이, 보다 디테일한 지오메트리를 사용하는 것이 유리한 시스템에서 LOD0 대신 사용됩니다. |
디스플레이스먼트 UV 채널(Displacement UV Channel) | 디스플레이스먼트 맵을 샘플링할 때 사용할 UV 채널입니다. |
디스플레이스먼트 맵(Displacement Maps) | 디스플레이스먼트 맵을 추가하고 편집합니다. |
최대 에지 길이 인수(Max Edge Length Factor) | 화면에서 각 메시 버텍스 사이에 허용되는 최대 거리를 제어합니다. 월드 포지션 오프셋을 사용하는 애니메이션, 스플라인 메시 컴포넌트 등 디폼하려는 메시가 지나치게 단순화되지 않도록 방지하는 데 사용할 수 있습니다. 지나친 단순화로 인한 문제를 수정하기 위해 명시적으로 필요한 경우가 아니면 디폴트인 0으로 유지해야 합니다. |
버텍스 정밀도
나나이트는 메시 버텍스 위치를 양자화하여 메모리 밀도를 최대화하고 디스크 점유 공간을 최소화합니다. 양자화 단계 크기는 2의 거듭제곱으로, '위치 정밀도(Position Precision)' 프로퍼티를 사용하여 개별 메시의 요구 사항을 충족하도록 선택할 수 있습니다. 기본적으로 설정되는 '자동'은 메시 크기와 트라이앵글 밀도에 기반하여 적절한 정밀도를 선택합니다. 정밀도 크기를 선택하여 수동으로 오버라이드함으로써 정밀도를 향상하거나 디스크 점유 공간을 최적화할 수 있습니다.
양자화는 손실 압축의 한 형태입니다. 손실 압축은 모듈형 메시 조각이나 바운더리를 공유하는 다른 메시로 작업하는 경우에 특히 문제가 발생할 수 있습니다. 지오메트리에 구멍이나 크랙이 생기지 않도록 바운더리를 완벽하게 정렬해야 하는 경우에는 더욱 심각할 수 있습니다.
일관성을 유지하기 위해 양자화는 메시 원점을 중심으로 정규화되지 않은 오브젝트 좌표에서 일어납니다. 이는 메시가 동일한 정밀도 세팅을 사용할 때 양자화가 크랙을 일으키지 않게 하며, 메시 중심 사이의 이동은 해당 정밀도의 배수입니다.
메시 데이터 정리
나나이트가 저장하는 데이터 양을 줄여 디스크 크기를 최적화해야 할 때가 있습니다. 나나이트에는 프로덕션 동안 언제든지 저장된 나나이트 메시에서 디테일 데이터를 정리할 수 있는 세팅이 포함되어 있습니다. 이를 통해 처음부터 퀄리티를 안전하게 높이고 나중에 프로젝트와 플랫폼 타깃의 크기 예산에 맞춰 조정할 수 있습니다.
나나이트의 디테일 데이터를 정리하는 것은 나나이트 메시로 저장되기 전에 사전 데시메이션 옵션을 갖는 것과 같습니다. 나나이트의 경우에는 중요도가 가장 낮은 데이터를 먼저 제거하므로 디테일이 메시 전체에 균등할 필요가 없으며, 손실 압축에 더 가깝습니다.
디테일 데이터를 정리하려면 다음 세팅을 조정합니다.
'트라이앵글 퍼센트 유지'는 원본 소스(전체 디테일) 메시에서 유지할 트라이앵글의 퍼센티지를 설정합니다.
'상대 오차 정리'는 소스 메시에서 데이터를 정리할 때 허용되는 최대 상대 오차를 설정합니다. 제거될 경우 이 설정치보다 적은 상대 오차를 발생시키는 트라이앵글은 모두 제거됩니다.
상대 오차는 유닛 크기를 가지지 않으며, 메시 크기에 상대적입니다.
두 프로퍼티 모두 기본적으로는 아무것도 정리하지 않도록 설정되어 있으며, 나나이트는 원본 소스 메시의 모든 트라이앵글을 저장합니다. 데이터 정리가 퍼포먼스 향상이 아닌 디스크 크기(다운로드 크기) 감소에 중요한 역할을 하는 이유입니다.
자세한 내용은 아래의 데이터 크기를 참고하세요.
예비 메시
언리얼 엔진의 상당 부분은 기존에 렌더링된 메시가 제공하던 버텍스 버퍼에 액세스해야 합니다. 스태틱 메시에서 나나이트가 활성화되면 디테일 수준이 높은 메시의 저퀄리티 표현(예비 메시)이 생성됩니다. 나나이트 렌더링이 지원되지 않는 경우 예비 메시가 사용됩니다. 또한 복합 콜리전이 필요하거나 베이킹된 라이팅에 라이트맵을 사용해야 하거나 루멘으로 하드웨어 레이 트레이싱 리플렉션을 사용하는 경우처럼 완전한 디테일을 제공하는 메시를 사용하는 것이 이상적이지 않은 상황에 사용됩니다.
예비 트라이앵글 퍼센트 프로퍼티는 예비 메시를 생성하는 데 사용되는 원본 소스 메시의 트라이앵글 퍼센티지를 나타냅니다. 트라이앵글 퍼센티지는 0~100% 사이로 지정할 수 있으며, 퍼센티지가 높을수록 원본 메시의 디테일이 더 많이 보존됩니다.
예비 상대 오차 프로퍼티는 소스 메시에서 디테일을 제거할 때 허용되는 최대 상대 오차를 설정합니다. 제거될 경우 이 설정치보다 적은 상대 오차를 발생시키는 트라이앵글은 모두 제거됩니다. 시각적 영향이 적은 디테일일수록 먼저 제거된다고 할 수 있습니다. 상대 오차는 유닛 크기를 가지지 않으며, 메시 크기에 상대적입니다.
예를 들어 메시에 데시메이션(트라이앵글 제거)을 전혀 적용하고 싶지 않다면 '예비 트라이앵글 퍼센티지를' '100'으로 설정하고, '예비 상대 오차'를 '0'으로 설정하면 됩니다.
아래 비교는 원본 소스 메시를 기반으로 하는 고도로 디테일한 나나이트 메시와 디폴트 세팅을 사용하여 생성된 예비 메시를 보여 줍니다.
'예비 상대 오차'를 사용하여 소스 메시에서 원본 디테일을 얼마나 보존할지 정하고, 예비 퍼센티지 값을 설정하여 디테일을 얼마나 사용할지 정할 수 있습니다.
아래 비교는 '예비 트라이앵글 퍼센트' 및 '예비 상대 오차' 프로퍼티에 대한 변경사항을 반영하여 원본 소스 메시의 트라이앵글을 더 많이 유지하는 예비 메시를 보여줍니다. 이 값을 조정할 때 뷰포트의 나나이트 트라이앵글(Nanite Triangles)에 대한 나나이트 디테일을 예비 메시가 가진 트라이앵글의 수를 나타내는 표시자로 사용합니다.
예비 메시 시각화
스태틱 메시 에디터에서는 '표시(Show)' 드롭다운 메뉴의 뷰포트 '나나이트 예비(Nanite Fallback)' 옵션을 사용하여 완전한 디테일을 제공하는 나나이트 메시와 나나이트 예비 메시 간에 토글할 수 있습니다. 또는 단축키 Ctrl + N을 사용하여 두 시각화 옵션 간에 빠르게 토글할 수도 있습니다.
나나이트 활성화 메시에 커스텀 예비 메시 LOD 사용하기
예비 메시는 복합 폴리곤별 콜리전, 레이 트레이싱, 라이트 베이킹 등의 엔진 기능에 사용됩니다. 또한, 나나이트를 지원하지 않는 플랫폼에서 사용되기도 합니다. 예비 메시를 생성할 때, 나나이트 활성화 메시는 항상 소스 메시의 LOD0 슬롯을 사용하여 예비 메시를 자동으로 생성합니다. 그러나 자동 생성된 메시가 아닌 수동 지정한 예비 메시나 기존 LOD 시리즈를 사용하고 싶을 수도 있습니다.
이러한 수준의 컨트롤을 통해 프로젝트에서 나나이트를 사용할 수 있을 뿐만 아니라, 레이 트레이스드 리플렉션 또는 나나이트를 지원하지 않는 플랫폼에 나타난 지오메트리를 직접 제어할 수 있습니다.
아래의 단계를 따라 자체 커스텀 예비 메시를 지정하거나, LOD 시리즈를 사용할 수 있습니다.
이 방법을 사용할 경우 예비 메시는 무시되므로, '예비 트라이앵글 퍼센트'를 '0'으로 설정하여 예비 메시를 가능한 한 작게 만듭니다.
이 기존 LOD 구성 프로시저를 사용하여 하나 이상의 LOD를 메시에 추가합니다.
'LOD 세팅(LOD Settings)' 섹션에서 'LOD 임포트(LOD Import)' 드롭다운의 'LOD 레벨 1 임포트(Import LOD Level 1)'를 사용합니다.
'LOD 세팅' 섹션에서 최소 LOD(Minimum LOD)'를 '1'로 설정합니다. 이렇게 하면 나나이트에서 생성한 예비 메시가 무시됩니다.
복합 콜리전은 특수한 경우에 해당합니다. '일반 세팅(General Settings)' 아래의 '콜리전에 대한 LOD(LOD for Collision)' 프로퍼티를 사용하여 콜리전에 사용할 LOD를 지정합니다. LOD0을 포함한 모든 LOD는 콜리전에 사용할 수 있습니다.
이 특수한 접근 방법은 나나이트 프로젝트가 나나이트를 지원하지 않는 플랫폼과 자동으로 호환되도록 하는 데 적합하지 않을 수 있으며, 프로젝트별로 테스트 및 평가해야 합니다.
나나이트는 매우 많은 인스턴스를 효율적으로 처리하지만, 나나이트가 비활성화될 경우 기존 렌더 파이프라인에는 드로 콜의 수가 지나치게 많을 수도 있습니다. r.Nanite 0으로 나나이트 지원을 토글하여 프로젝트에 적절한지 테스트할 수 있습니다.
자세한 내용은 이 페이지의 콘솔 변수 및 명령 섹션을 참고하세요.
데이터 크기
나나이트를 통해 고도의 디테일을 확보할 수 있기 때문에, 지오메트리 데이터가 많이 늘어나면 게임 패키지 크기와 플레이어의 다운로드 용량도 커질 것이라고 생각할 수도 있습니다. 나나이트의 메시 포맷은 특화된 인코딩 덕분에 표준 스태틱 메시 포맷보다 훨씬 작습니다.
예를 들어 언리얼 엔진 5 샘플인 에인션트의 협곡에서 나나이트 메시는 입력 트라이앵글당 평균 14.4바이트입니다. 이는 디스크에서 100만 트라이앵글 나나이트 메시 하나의 평균 크기가 ~13.8MB라는 것을 의미합니다.
기존의 로우 폴리곤 메시와 노멀 맵을 나나이트의 하이 폴리곤 메시와 비교하면 다음과 같습니다.
| 로우 폴리곤 메시 | 하이 폴리곤 메시 |
|---|---|
스태틱 메시 압축 패키지 크기: 1.34MB |
스태틱 메시 압축 패키지 크기: 19.64MB |
하지만 압축 패키지 크기는 에셋 전체의 크기가 아닙니다. 이 메시에서만 사용되는 고유 텍스처 또한 고려해야 합니다. 메시에 사용되는 머티리얼 다수는 여러 노멀, 베이스 컬러, 메탈릭, 스페큘러, 러프니스, 마스크 텍스처 등으로 구성된 고유한 텍스처를 갖습니다.
이 에셋은 베이스 컬러와 노멀이라는 두 가지 텍스처만 사용하므로 고유 텍스처가 여러 개 있는 에셋만큼 디스크 공간을 많이 차지하지 않습니다. 예를 들어 트라이앵글 수가 최대 150만 개인 나나이트 메시의 크기(19.64MB)는 4k 노멀 맵 텍스처보다 작습니다.
| Texture Type | Texture Size | 디스크의 크기 |
|---|---|---|
베이스 컬러 | 4k x 4k | 8.2MB |
| 노멀 | 4k x 4k | 21.85MB |
메시 및 텍스처의 총 압축 패키지 크기:
로우 폴리곤 메시: 31.04MB
하이 폴리곤 메시: 49.69MB
나나이트 메시는 이미 매우 디테일하기 때문에 고유 노멀 맵을 다른 에셋과 공유되는 타일링 디테일 맵으로 대체하는 것은 텍스처 크기를 줄이는 데 좋은 접근 방식이라고 할 수 있습니다. 결과적으로 비주얼 손실이 발생할 수 있지만, 로우 폴리곤 메시와 하이 폴리곤 메시 사이의 퀄리티 차이보다는 작습니다. 이를 고려할 때, 150만 개의 트라이앵글로 구성된 나나이트 메시는 4k 노멀 맵 텍스처가 있는 로우 폴리곤 메시보다 외관상 더 뛰어나면서 크기도 더 작아질 수 있습니다.
나나이트 활성화 메시 및 텍스처의 총 압축 패키지 크기: 27.83MB
텍스처 해상도와 '디테일' 노멀 맵으로 다양한 실험을 해볼 수 있으며, 이 비교를 통해 나나이트 메시의 데이터 크기가 아티스트들이 이미 익숙한 데이터와 크게 다르지 않다는 점을 알 수 있습니다.
마지막으로, 동일한 LOD0 상태에서 나나이트 압축과 하이 폴리곤을 사용하는 표준 스태틱 메시 포맷을 비교해 보겠습니다.
| 하이 폴리곤 스태틱 메시 | 나나이트 스태틱 메시 |
|---|---|
스태틱 메시 압축 패키지 크기: 148.95MB |
스태틱 메시 압축 패키지 크기: 19.64MB |
이전의 나나이트 압축 크기인 19.64MB와 비교하면 4 LOD의 표준 스태틱 메시 압축에 비해 7.6배 작습니다.
데이터 크기에 대한 일반적인 조언
나나이트와 버추얼 텍스처링(Virtual Texturing) 시스템을 속도가 빠른 SSD와 함께 사용할 경우 지오메트리와 텍스처의 런타임 예산에 대한 우려를 줄여줍니다. 하지만 이 데이터를 사용자에게 전달하는 방식에서 가장 큰 병목 구간이 발생합니다.
디스크상의 데이터 크기는 물리적 미디어나 인터넷을 통한 다운로드 등 콘텐츠 전달 방식을 고려할 때 중요한 요소이며 압축 기술만으로는 한계가 있습니다. 평균적인 최종 사용자의 인터넷 대역폭, 광학 미디어 크기 및 하드 드라이브 크기는 하드 드라이브 대역폭 및 액세스 지연시간, GPU 컴퓨팅 파워 및 나나이트 같은 소프트웨어 기술과 동일한 레이트로 스케일링되지 않습니다. 따라서 데이터를 고객에게 전달하는 것은 여전히 까다로운 문제입니다.
디테일 수준이 매우 높은 메시를 효율적으로 렌더링하는 것은 나나이트에 있어서 큰 문제가 아니지만, 디스크에 데이터를 저장하는 것은 반드시 확인이 필요합니다.
시각화 모드
나나이트에는 현재 씬에서 데이터를 검토하는 여러 시각화 모드가 포함되어 있습니다.
레벨 뷰포트에서 '뷰 모드(View Modes)' 드롭다운의 '나나이트 시각화(Nanite Visualization)'에 커서를 올려 나오는 옵션 중 선택합니다.
'개요(Overview)' 시각화는 이미지 중앙에 렌더링된 씬을 표시하고, 엄선된 나나이트 시각화를 화면 주변에 참고용으로 표시합니다.
선택할 수 있는 나나이트 시각화 모드는 다음과 같습니다.
| 나나이트 시각화 | |
|---|---|
마스크 | 나나이트(초록)와 비나나이트(빨강) 지오메트리를 표시하는 시각화입니다. |
트라이앵글 | 현재 씬에서 나나이트 메시의 모든 트라이앵글을 표시합니다. |
패치(Patches) | 현재 씬에서 나나이트 메시의 모든 패치를 표시합니다. |
클러스터(Clusters) | 현재 씬 뷰에서 렌더링되는 모든 트라이앵글 그룹을 컬러로 표시합니다. |
프리미티브 | 인스턴스 스태틱 메시(Instance Static Mesh, ISM)의 모든 인스턴스에 대한 컴포넌트를 같은 컬러로 표시하는 시각화입니다. |
인스턴스(Instances) | 씬의 인스턴스마다 다른 색을 적용하는 시각화입니다. |
오버드로(Overdraw) | 씬 지오메트리에서 발생하는 오버드로의 양을 표시합니다. 마스크 처리된 픽셀을 비롯해 평가된 모든 픽셀은 오버드로 뷰에 추가됩니다. 가깝게 스택된 작은 오브젝트가 큰 오브젝트보다 더 많은 오버드로를 유발합니다. |
라이트 맵 UV(Lightmap UV) | 나나이트 메시 표면의 UV 좌표를 표시하는 시각화입니다. 나나이트 메시 표면의 UV 좌표를 표시하는 시각화입니다. |
WPO 평가(Evaluate WPO) | 월드 포지션 오프셋을 사용하는 나나이트 활성화 지오메트리의 색상을 녹색으로, 그렇지 않은 지오메트리를 빨간색으로 표시합니다. |
픽셀 프로그래밍 가능(Pixel Programmable) | |
테셀레이션 | 테셀레이션을 사용하는 나나이트 메시와 테셀레이션된 메시에서만 발생하는 테셀레이션의 양을 표시하는 시각화입니다. |
래스터 빈(Raster Bins) | 지오메트리의 배치를 나타내는 그룹을 표시합니다. |
셰이딩 빈(Shading Bins) |
나나이트에는 '나나이트 시각화' 메뉴에서 추가적인 시각화 옵션을 활성화하는 '고급(Advanced)' 시각화 모드가 포함되어 있습니다. 이 시각화 모드는 나나이트의 다양한 로우 레벨 측면을 디버깅 또는 프로파일링하는 프로그래머에게 유용합니다.
콘솔 변수 r.Nanite.Visualize.Advanced 1을 사용하여 이 고급 시각화 모드를 활성화할 수 있습니다.
콘솔 변수 및 명령
다음과 같은 통계 및 콘솔 변수를 사용하여 나나이트를 디버깅 및 환경설정할 수 있습니다.
콘솔 변수 r.Nanite 0을 사용하면 런타임에서 전체적으로 나나이트 렌더링을 활성화 및 비활성화할 수 있습니다. 나나이트를 비활성화하는 것은 지원되지 않는 플랫폼을 에뮬레이트하는 좋은 방법입니다.
나나이트 예비 렌더링 모드
나나이트는 비활성화되거나 플랫폼이 나나이트를 지원하지 않을 때를 대비해 예비 메시 렌더링 모드를 제공합니다. 콘솔 변수 r.Nanite.ProxyRenderMode로 사용할 모드를 제어할 수 있습니다.
0은 디폴트 모드로, 설정할 경우 예비 메시를 렌더링하거나 스크린 스페이스 기반 LOD를 사용합니다. 여기에는 스태틱 메시 에디터 프로퍼티의 '최소 LOD(Min LOD)' 인식이 포함됩니다. 이 내용은 위의 예비 메시 섹션에 설명되어 있습니다.
1은 나나이트 활성화 메시의 모든 렌더링을 비활성화합니다.
2는 1 모드와 비슷하게 작동하지만, 스태틱 메시 에디터에서 '표시' > '나나이트 예비' 시각화를 사용하여 나나이트 예비를 렌더링할 수 있습니다.
예비 렌더 모드 1과 2는 나나이트 없이 지원 가능한 것보다 인스턴스 수가 훨씬 더 많은 씬에 유용합니다. 나나이트를 지원하지 않는 플랫폼의 에디터에서 씬을 열 수 있는 방법을 제공합니다.
예를 들어, 언리얼 엔진 5 샘플 프로젝트인 '에인션트의 협곡'에서 나나이트를 비활성화하면 일반 드로 콜이 수십, 수천 개 발생하여 나나이트 미지원 플랫폼에서 맵을 열기가 어렵습니다.
나나이트 통계 명령
NaniteStats 명령은 뷰포트 우측 상단에 나나이트 컬링 통계의 오버레이를 추가합니다.
명령 실행인자는 나나이트가 화면에 어떤 통계를 표시할지 지정하는 데 사용됩니다. 실행인자가 제공되지 않으면 기본 뷰가 사용됩니다.
NaniteStats 목록을 사용하여 디버그 출력에서 사용 가능한 모든 뷰를 표시할 수 있으며, 이는 다음과 같습니다.
프라이머리
Virtual Shadow Maps
ShadowAtlas(사용 가능한 경우에만)
CubemapShadows(사용 가능한 경우에만)
확인하고 싶은 통계 목록 이름 앞에 명령을 입력하여 뷰를 선택합니다. 예를 들어 NaniteStats VirtualShadowMaps처럼 입력하면 됩니다.
패스가 2개인 오클루전 컬링을 사용하는 뷰의 경우, 통계가 메인 패스와 포스트 패스에 대한 별도의 버킷으로 분리됩니다.
나나이트 스트리밍 풀 크기 조정하기
콘솔 변수 r.Nanite.Streaming.StreamingPoolSize를 사용하여 나나이트 스트리밍 데이터를 저장할 전용 메모리의 양을 제어할 수 있습니다. 더 큰 풀을 사용하면 씬에서 이동할 때 IO와 압축 해제 작업이 줄어들지만 메모리 점유율이 늘어납니다.
풀이 뷰에 필요한 모든 데이터를 저장하기에 충분하지 않은 경우 캐시 스래싱이 발생하여 정적인 뷰에서도 스트리밍이 안정화되지 않을 수 있습니다.
나나이트 스트리밍 데이터를 시각화하려면, 표시 > 나나이트 > 스트리밍 지오메트리(Streaming Geometry)에서 스트리밍 지오메트리 표시 플래그를 사용합니다. 비활성화 시 나나이트 메시는 메모리에 항상 상주하는 퀄리티 레벨로만 렌더링됩니다.
단일 패스에서 최대 클러스터 설정
콘솔 변수 r.Nanite.MaxCandidateClusters 및 r.Nanite.MaxVisibleClusters로 단일 패스에서 사용되는 후보 및 가시 클러스터의 최대 수를 지정할 수 있습니다. 이 값은 중간 버퍼의 크기 설정에 사용되며, 디폴트값은 일반적인 게임 렌더링 작업을 고려하여 선택되었습니다.
이 버퍼를 동적으로 크기 변경하거나 오버플로 시에 자동으로 퀄리티를 낮추는 메커니즘은 제공되지 않으므로 씬 복잡도에 비해 버퍼가 너무 작아져서 렌더링 아티팩트를 유발할 수 있으며, 이는 일반적으로 누락되거나 깜빡이는 지오메트리로 나타납니다. 이러한 타입의 아티팩트가 발생하면 NaniteStats를 사용하여 후보 및 가시 클러스터에 대해 바운드를 보수적으로 설정합니다. 보다 구체적인 내용은 ClustersSW 및 ClustersHW 통계를 살펴보세요. 후보 클러스터의 메모리 비용은 현재 12바이트이며, 가시 클러스터는 16바이트입니다.
이 콘솔 변수는 런타임에서 변경할 수 없으며 반드시 환경설정(.ini) 파일에서 지정해야 합니다.