나노나이트란?
완전히 가상화된 지오메트리. 이를 계층적 LOD라고 합니다.
영화 품질 자산을 직접 사용할 수 있습니다.
최적화, LOD 생성 더 이상 프레임 속도를 위해 품질을 낮출 필요가 없습니다.
자동 세부 수준이라고 할 수 있습니다.
세부 수준(LOD)은 게임 성능 향상에 중요한 요소였습니다.
카메라와 피사체가 가까울 때는 하이 폴리를, 멀리 있을 때는 로우 폴리를 사용하여 렌더링할 삼각형의 수를 줄이는 기법입니다.
위 이미지에서 보듯이 설계자는 로우, 미들, 하이 레벨 폴리곤을 따로 사용하기 위해 3번의 작업을 해야 합니다.
화면에는 100개의 오브젝트가 있고, 이들 모두에 LOD를 적용하려면 300개의 오퍼레이션이 필요합니다.
로우 폴리곤을 사용하는 경우 하이 폴리곤 모델을 베이크하여 로우 폴리곤에 적용되는 노멀 맵을 생성합니다.
따라서 로우 폴리를 사용하는 작업의 단계는 다음과 같습니다.
1. 하이폴리곤 만들기
2. 로우폴리곤 만들기
3. 하이 폴리를 굽고 로우 폴리에 적용할 노멀 맵을 만듭니다.
4. 로우폴리에 노멀맵 적용
일정한 수준을 거쳐야 합니다.
Nanites는 이 단계를 완전히 무시할 수 있습니다.
하이 폴리 모델이 하나뿐인 경우 언리얼 엔진 5가 자동으로 LOD를 적용합니다.
나닛의 장점
Unreal Engine 5 공식 문서에 따르면 Nanite의 이점은 다음과 같습니다.
- 지오메트리 복잡성이 극적으로 증가하여 실시간으로 구현할 수 있는 삼각형 및 객체의 수가 증가했습니다.
- 프레임 예산은 더 이상 폴리곤 수, 그리기 호출 또는 메시 메모리 사용에 의해 제한되지 않습니다.
- 이제 ZBrush 조각 및 사진 측량 스캔을 포함하여 영화 품질의 소스 그래픽을 직접 가져올 수 있습니다.
- 디테일을 일반 맵 텍스처로 굽는 대신 하이 폴리 디테일을 사용할 수 있습니다.
- 세부 수준(LOD)이 자동으로 처리되므로 더 이상 개별 메시에 대해 LOD를 수동으로 구성할 필요가 없습니다.
- 특히 LOD 전환에서 품질 손실이 거의 없습니다.
나노나이트 작동 방식
Nanite는 삼각형 메시를 그룹화하고 클러스터로 나눕니다.
렌더링은 개체 단위가 아닌 클러스터 단위로 수행됩니다.
렌더링이 클러스터 단위로 이루어지면 오브젝트가 깨질 가능성이 높지만 Unreal의 공식 문서에는 다음과 같이 나와 있습니다.
- 렌더링하는 동안 클러스터는 카메라 뷰를 기반으로 즉시 다른 LOD로 전환하고 끊기지 않고 동일한 객체 내의 인접 클러스터에 원활하게 연결합니다.
데이터는 요청 시 스트리밍되므로 표시되는 세부 정보만 저장 공간을 차지합니다.
Nanite는 기존의 그리기 호출을 완전히 우회하는 자체 렌더링 패스를 실행합니다.
Nanit 파이프라인을 검사해야 하는 경우 시각화 모드를 사용할 수 있습니다.
이 클러스터별 렌더링은 성능에 어떤 영향을 줍니까?
일반적으로 많이 사용되는 오클루전 컬링은 화면에 그려질 객체를 객체 단위로 구분합니다.
전면 객체가 후면 객체를 완전히 덮으면 후면 객체는 그려지지 않습니다.
위 그림에서 오른쪽의 상황에서는 뒤에 있는 빨간색 원이 그려지지 않습니다.
(파란색 상자를 반투명하게 만들고 가독성을 위해 그 뒤에 원을 남겼습니다.
)
왼쪽의 상황에서는 빨간 원의 작은 부분까지 보이기 때문에 빨간 원을 모두 그린 후 파란 원을 그립니다.
클러스터를 사용한 컬링은 아래 그림과 같습니다.
빨간색 원을 4가지로 클러스터링하고 보이는 클러스터 단위로 컬링을 수행하면 그려야 하는 삼각형의 수를 줄일 수 있습니다.
전체 객체가 그려지지 않기 때문에 오클루전 컬링에 비해 성능상의 이점이 엄청납니다.
따라서 나노나이트가 활성화된 정적 메쉬는 더 빠르게 렌더링됩니다.
성능 및 콘텐츠 문제
문서에 따른 나나이트의 원리는 다음과 같다.
“Nanite는 픽셀보다 훨씬 더 많은 삼각형을 그릴 필요가 없다는 디자인 원칙을 따릅니다.
”
‘이는 Nanite가 화면에 그리려고 시도하는 삼각형의 수가 장면에 있는 소스 데이터의 기하학적 복잡성에 관계없이 상당히 일정하고 픽셀 수에 비례한다는 것을 의미합니다.
’
1픽셀 이내의 물체가 삼각형 1개 이상이 될 수 없다는 소리입니다.
이 원리로 인해 나노나이트는 클러스터 형상에 악영향을 미칩니다.
군집 형상은 머리카락, 잎, 풀과 같이 서로 연결되지 않은 많은 수의 작은 요소를 참조하여 멀리 떨어진 볼륨을 형성합니다.
클러스터 형상이 나노나이트에 나쁜 영향을 미치는 두 가지 이유를 설명하십시오.
1. 나나이트 삼각형 사이의 차이가 감지할 수 없을 정도로 작다면 더 단순화된 삼각형이 선택됩니다.
그러나 이 기능은 연속 평면이 아닌 클러스터 형상에 대해서는 제대로 작동하지 않습니다.
이것은 픽셀보다 더 많은 삼각형을 그립니다.
2. 오클루전 컬링이 매우 미세하고 미세함의 정도가 픽셀 수준을 넘어섭니다.
따라서 레이어드 지오메트리의 경우 깊이 레이어를 여러 개 생성하면 과도한 오버드로가 발생하고 과도한 오버드로로 인해 Nanite는 동일한 픽셀에 비해 더 많은 삼각형을 그릴 것입니다.
두 번째는 별 의미가 없을 수도 있지만 문서를 읽는 것은 의미가 있습니다.
‘오버 드로잉은 거리가 너무 커서 거리 차이가 1픽셀 미만일 때 발생합니다.
’
물체 사이의 거리가 거리로 인해 1픽셀 미만이 되면 Nanite는 어느 것이 위에 있는지 판단하지 못하고 둘 다 그립니다.