베이크가 무엇을 지우나
이 페이지는 설명입니다. 베이크를 지금 돌리려면 빌드 시 자동 최적화를 보세요.
한 줄 요약
베이크는 이 재질이 앞으로 절대 바뀌지 않을 부분을 찾아 그 코드를 지웁니다. 바뀔 수 있다고 판단하면 남깁니다. 그래서 어떤 재질은 최적화가 덜 됩니다.
무슨 일이 일어나나
세 단계를 거칩니다.
- 이 재질에서 무엇이 움직이는지 찾습니다.
- 움직이지 않는 것만 남겨 코드 모양을 정합니다.
- 코드 모양이 같은 재질끼리 셰이더 한 벌을 나눠 씁니다.
3단계 덕분에 텍스처와 색이 서로 달라도 같은 셰이더를 씁니다. 코드 모양에는 표면 모드, 컬 모드, 모듈 on/off, 레이어 개수, 합성 모드, 얼굴 여부만 들어갑니다. 수치와 텍스처는 일부러 빠져 있습니다.
1단계 — 무엇이 움직이는지 찾기
MingToon은 애니메이션을 읽기만 합니다. 클립도 컨트롤러도 재질도 다시 쓰지 않습니다.
네 곳을 훑습니다. 애니메이션 클립의 재질 값 커브, Animator에 할당된 컨트롤러, 컴포넌트 안에 들어 있는 컨트롤러 참조, 의상 토글처럼 재질 자체를 바꾸는 오브젝트 참조 커브입니다.
Avatar Descriptor의 Playable Layer에 있는 컨트롤러를 보세요. 이 컨트롤러는 Animator에 할당돼 있지 않을 수 있습니다. 그래도 업로드 뒤에는 그 재질 커브가 실제로 돕니다. 그래서 반드시 보존 대상에 들어갑니다.
색의 R 채널 하나만 애니메이션해도 그 색 전체가 움직이는 값으로 남습니다. 여러 아바타가 재질 하나를 나눠 쓰면 모든 쪽의 결과를 합쳐서 판단합니다.
이 그룹 전체 베이크 제외 로 직접 표시한 항목도 그대로 남습니다. 애니메이션은 안 하지만 나중에 스크립트로 바꿀 값에 쓰세요.
분석이 실패하면 "애니메이션이 없다"고 가정하지 않습니다. 그 재질은 편집 상태로 남고 Console에 한 줄이 남습니다.
2단계 — 무엇이 실제로 사라지나
| 사라지는 것 | 조건 |
|---|---|
| 쓰지 않는 패스 | 그 기능이 꺼져 있고 애니메이션되지 않음 |
| 프레넬 림, 2차 형태 그림자, 깊이 효과 전체 | 위와 같음 |
| 꺼진 텍스처 모듈의 계산 | |
| 레이어 수를 넘는 슬롯의 계산 | 티어 경계를 넘어야 실제로 줄어듭니다 |
| 전부 흰색으로 판명된 마스크의 텍스처 읽기 | 결과가 달라지지 않습니다 |
| 고정된 수치의 계산 | 상수로 접힙니다 |
3단계 — 텍스처 다시 굽기
기본값은 원본 픽셀을 다시 쓰지 않는 범위입니다. 마스크가 항등임을 증명하거나 PBR과 AO가 같은 텍스처를 같은 UV로 읽을 때 샘플 하나를 줄입니다.
Reviewed Texture Rewrites On Build를 켜면 표면·노멀 평탄화와 마스크 재패킹까지 합니다.
이쪽은 픽셀이 실제로 달라질 수 있습니다.
텍스처를 다시 읽고, 색 공간을 바꾸고, 밉을 다시 만들고, 플랫폼 압축을 다시 겁니다. 켠 뒤에는 베이크 전후 캡처를 직접 비교하세요.
실패하면 그 재질만 정확히 되돌립니다. 되돌릴 값은 디스크에 먼저 저장하므로 에디터가 도중에 죽어도 복구됩니다. 되돌리기까지 실패하면 빌드를 중단합니다.
왜 이 재질만 최적화가 안 됐나
StudioRaming/MingToonOptimizeReport.txt와 Console을 보세요.
| 기록 | 뜻 |
|---|---|
SKIPPED: animation dependency analysis failed | 분석이 실패해 편집 상태로 남겼습니다 |
SKIPPED: 뒤에 메시지 | 그 재질에서 오류가 났고 빌드는 계속됐습니다 |
| 아무 줄도 없음 | 대상에 들어가지 않았습니다 |
마지막 경우는 대개 셋 중 하나입니다. 씬이나 프리팹 범위 밖이거나, 이미 베이크된 재질이거나, 이전 빌드에서 복원되지 않은 재질입니다.
그래서 생기는 제약
- 수집 범위가 빌드 종류마다 다릅니다. 플레이어 빌드는 씬을 훑고, Warudo 모드 빌드는 대상 프리팹만 훑습니다.
- 아웃라인은 메시를 확장하는 방식과 카메라 깊이를 읽는 방식 둘뿐입니다. 화면 합성용 별도 런타임은 없습니다.
- 베이크한 재질은 값을 더 못 바꿉니다. 룩을 고치려면 편집 상태로 되돌린 뒤 다시 구워야 합니다.