개요: 셰이더 팩이란?
MMDX12 셰이더 팩의 개념과 동작 원리, 지원 렌더러와 기본 구조를 알아봅니다.
셰이더 팩 소개
MMDX12 셰이더 팩은 캐릭터 모델의 재질 음영(Material Shading)을 캐릭터별로 교체할 수 있는 기능입니다. 앱의 핵심 렌더러를 뜯어고칠 필요 없이, 누구나 간단한 파일 몇 개로 자신만의 툰 셰이딩이나 독특한 질감을 구현할 수 있습니다.
셰이더 팩은 다음과 같은 기본 파일로 구성된 폴더입니다:
pack.json: 팩의 메타데이터, 재질 분류 규칙, 조정 가능한 파라미터를 정의하는 매니페스트.surface.hlsl: 단 하나의 셰이딩 함수(PackShade)를 구현하는 HLSL 코드.preview.png또는preview.jpg(선택 사항): 팩 매니저와 온라인 갤러리에서 보여줄 미리보기 이미지 (16:9 권장).README.md,LICENSE(선택 사항): 설명서와 사용권 계약 파일.
지원 렌더 경로와 범위
셰이더 팩은 실시간 재생 및 고품질 영상 제작 흐름에 자연스럽게 녹아듭니다.
적용되는 곳
- 래스터(Raster) 경로: 일반 재생 모드, 스튜디오 뷰포트, 래스터 영상 렌더러.
- 실시간 RT(Ray Tracing) 경로: 레이 트레이싱이 켜진 뷰포트 및 실시간 RT 영상 렌더러.
- 패스 트레이싱 · 오프라인 GI (MMDX12 1.5.0 이상): 선택 파일
pt_surface.hlsl이 들어 있는 팩은 패스 트레이싱과 오프라인 GI 렌더러(스틸·영상)에도 적용됩니다. PT / GI 팩을 보세요. 이 파일이 없는 팩은 해당 경로에서 기본 셰이딩을 씁니다.
기본 셰이딩이 유지되는 곳
pt_surface.hlsl이 없는 팩의 패스 트레이싱 · 오프라인 GI: MMD 기본 셰이딩이 사용됩니다. 오프라인 GI 렌더러는 항상 앱 기본 외곽선을 그립니다.- 무대(Stage)와 소품(Prop): 배경 무대와 액세서리는 셰이더 팩의 영향을 받지 않고 항상 기본 셰이딩으로 렌더링됩니다.
- 특수 뷰: 스튜디오의 언릿(Unlit), 와이어프레임(Wireframe), 정사영 4분할 뷰(Orthographic Quad Views).
엔진이 보장하는 기능
셰이더 팩은 오직 캐릭터 재질의 픽셀 음영만 교체합니다. 아래 기능들은 엔진이 그대로 처리하므로 팩을 적용해도 변함없이 정상 작동합니다:
- 정점 스키닝(Vertex Skinning) 및 본 변형
- MMD 특유의 외곽선(Edge / Outline)
- 캐스케이드 그림자 맵 및 레이 트레이싱 그림자 계산
- 후처리 이펙트(블룸, 피사계 심도 DoF, TAA, 업스케일러 등)
팩이 저장되는 위치
MMDX12 실행 파일이 있는 폴더를 기준으로 두 곳에 나뉘어 보관됩니다:
- 기본 제공 팩:
<MMDX12 폴더>/shaders/packs/<id>/- 프로그램과 함께 제공되며, 앱 내에서 삭제할 수 없습니다 (예:
hoyo_toon).
- 프로그램과 함께 제공되며, 앱 내에서 삭제할 수 없습니다 (예:
- 설치된 팩:
<MMDX12 폴더>/shader_packs/<id>/- 온라인 갤러리에서 내려받았거나, 직접 만든 팩이 저장됩니다. 온라인 설치 팩에는
.mmdx_install.json메타데이터가 함께 보관됩니다.
- 온라인 갤러리에서 내려받았거나, 직접 만든 팩이 저장됩니다. 온라인 설치 팩에는
팩 식별자(ID) 규칙
- 영문 소문자
a-z, 숫자0-9, 밑줄_, 하이픈-만 사용 가능하며 최대 64자까지 허용됩니다. - 기본 제공 팩의 ID는 사용자 팩으로 덮어쓸 수 없습니다.
- 중복된 ID가 발견되면 나중에 발견된 팩은 “중복(Duplicate)” 상태로 표시되며 선택할 수 없습니다.
다음 단계
- 빠른 시작: 앱에서 팩을 적용하고 실시간 핫 리로드로 제작하는 방법.
- 매니페스트 명세:
pack.json의 세부 필드와 재질 분류 규칙. - 셰이더 API:
surface.hlsl작성 규칙과 제공되는 내장 함수. - 화면 효과 팩: 화면 전체에 적용되는 후처리 팩(API 3), 효과 스택, 온라인 전용 효과.
- PT / GI 팩:
pt_surface.hlsl로 패스 트레이싱과 오프라인 GI에서 팩을 적용하는 방법. - 호요 툰 분석: 공식 예제 팩의 구조와 SDF 얼굴 그림자 기법.
- 디버깅과 검증: 컴파일 오류 확인법과
pack_check.exe도구. - 배포와 갤러리 등록: zip 패키징 규칙과 공식 갤러리 제출 방법.