Skip to main content
*메시렛(meshlet)*은 단순히 메시의 하위 청크로, 고정된 수의 프리미티브와 정점입니다. 메시는 메시렛 집합으로 완전히 정의될 수 있으며, 각 메시렛은 메시의 고유한 프리미티브 집합으로 구성됩니다. 메시렛 구조로 변환된 메시를 *메시렛화됨(meshletized)*이라고 부르겠습니다. 메시렛화된 메시를 구축하는 데 사용되는 프리미티브와 정점의 고정된 수는 메시렛 목록 전체에서 일관되며 각 메시렛의 최대 크기를 정의합니다. 이상적으로 각 메시렛은 이 크기에 가능한 한 가깝지만 반드시 그것을 채우는 것은 아닙니다. 전통적인 인덱스 버퍼는 세 가지 새 데이터 구조로 대체됩니다: 메시렛 목록, 고유 정점 인덱스 목록, 프리미티브 목록. 그림 1. 메시렛별로 색상이 지정된 메시렛화된 메시(용)의 렌더링. 메시렛이 합리적인 공간적 일관성을 가진 프리미티브로 구성되어 있음에 주목하세요. Dragon 다음 코드 예제는 런타임 메시렛 구조의 C++ 구현입니다. 이 데이터는 렌더링 가능한 메시를 완전히 설명합니다.
이 메시렛 구조는 메시 셰이더 렌더링에 여러 이점이 있습니다. 각 메시렛은 고정된 최대 크기를 가지므로, 고정 크기 스레드그룹을 단일 메시렛에 매핑하는 데 이상적이며 스레드에서 정점/프리미티브로의 직관적인 매핑을 제공합니다. 정점 및 프리미티브 개수가 미리 알려져 있어 셰이더 코드에서 이를 계산할 필요가 없습니다. 정점 인덱스는 이미 중복 제거되어 있어, 중복된 정점 변환 및 내보내기를 제거합니다. 프리미티브 인덱스는 메시렛의 정점 목록으로 로컬화되어 있습니다. 메시렛은 또한 공간 및 방향 정보와 함께 컬링을 위한 추가적인 세분성을 제공합니다. 이전 코드 예제는 새 메시렛 버퍼 간의 상호 관계를 보여줍니다. 메시렛 목록은 런타임 “meshlet” 구조의 평면 목록이며, 최소한 고유 정점 인덱스와 프리미티브 목록에 대한 오프셋과 개수입니다. 고유 정점 인덱스 목록은 정점 데이터 버퍼에 대한 인덱스의 중복 제거된 목록입니다. 프리미티브 목록은 메시의 프리미티브를 정의하며 메시렛의 정점 오프셋으로 로컬화된 고유 정점 인덱스 목록에 대한 인덱스로 구성됩니다. 그림 2. 메시렛 버퍼 간의 관계를 보여주는 다이어그램. Diagram exhibiting the relationship between meshlet buffers

메시렛으로 변환

전통적인 인덱스 버퍼 메시를 메시렛화하는 것은 아티스트 워크플로에 변경을 요구하지 않습니다 - 모델을 작성한 후 절차적인 후처리 단계입니다. 전통적인 인덱스 버퍼는 런타임에 신속하게 재생성할 수 있으므로, 전통적인 인덱스 버퍼와 메시렛 버퍼를 모두 배송할 필요가 없습니다. 메시렛화는 계산적으로 사소하지 않을 수 있으므로 오프라인에서 사전 처리하는 것을 권장합니다. C++ 라이브러리와 명령줄 도구 모두인 메시렛 변환기 프로젝트 예제는 ATG에서 다른 샘플과 함께 XBOX 개발자 다운로드 페이지에서 이 변환을 수행하도록 제공됩니다. 이 도구는 정점 데이터 자체를 수정하지 않으므로, 메시렛화 전에 메시 데이터에 대해 Forsyth 알고리즘과 같은 정점 캐시 최적화 도구를 실행하는 것을 권장합니다. 최적화 도구는 콘텐츠 제작 도구에서 보편적으로 기대할 수 있는 것보다 더 공간적으로 일관된 메시를 생성하는 경향이 있습니다. 결과 메시 구조의 유익한 컬링 속성과 정점 재사용의 균형을 맞추기 위해 추가 휴리스틱을 추가할 수 있습니다.

메시렛으로 렌더링

메시렛의 구조는 메시 셰이더로 렌더링을 매우 쉽게 만듭니다. 스레드그룹 크기를 최대 메시렛 크기로 선언하고 메시의 각 메시렛에 대해 하나의 스레드그룹을 디스패치합니다. 각 스레드는 하나의 정점과 프리미티브를 처리하고 내보내는 것을 담당합니다. 다음은 메시렛화된 메시를 렌더링하는 간단한 메시 셰이더 코드 샘플을 보여줍니다. 먼저 스레드그룹의 메시렛이 로드되고 출력 개수를 즉시 선언할 수 있습니다. 마지막으로, PrimitiveCount 스레드는 프리미티브 인덱스 데이터를 로드하고 쓰는 것을 담당하며, VertexCount 스레드는 정점 데이터에 액세스하는 데 사용되는 정점 인덱스를 로드하고, 이를 셰이딩하여 출력 배열에 씁니다. 전체 샘플은 XBOX 개발자 다운로드 페이지에서 찾을 수 있습니다. 다음 코드 예제는 메시렛을 렌더링하는 메시 셰이더의 샘플 구현입니다.

참고 항목

메시 셰이더 파이프라인 개요 메시 셰이더 API 개요 메시 셰이더 사용법 메시렛 컬링
마지막 수정일 2026년 8월 24일