# ADR-0009 — WebGL 빌드 타깃 평가 (Phase 3)

상태: **Proposed (2026-05-08, 야간 자율)**

---

## 결정

WebGL 타깃은 **Phase 4 이상 검토 — 현재 채택 불가**.
주된 이유: glTFast WebGL 호환성 + 메모리 한도 + B2B 데스크탑 1차 정체성 (CLAUDE.md 4원칙).

## 평가 항목

### 1. Unity glTFast WebGL 호환성

| 항목 | 결과 |
|---|---|
| `com.unity.cloud.gltfast` 6.10.1 WebGL 지원 | ✅ 공식 지원 |
| `com.unity.cloud.draco` 5.1.7 WebGL 지원 | ✅ 공식 (Emscripten 빌드) |
| Editor batch 임포트 → WebGL Player 임포트 차이 | ⚠ Editor sync API (`AssetDatabase.ImportAsset`) WebGL 미지원 → Runtime async API 필수 |
| 19MB factory.glb 다운로드 | ⚠ HTTP fetch 필요 — CDN 또는 자체 호스팅 |

### 2. WebGL 메모리 한도

| 항목 | 평가 |
|---|---|
| WebGL heap 기본 | 256MB ~ 1GB (`PlayerSettings.WebGL.memorySize`) |
| 8763 부품 × Part 객체 + Transform 캐시 | 약 30~50MB |
| 945 mesh 데이터 | 50~100MB (vertex + index buffer) |
| 75 material × textures | 10~30MB |
| **총 메모리 예상** | **150~200MB** |

memorySize 512MB 설정 시 여유 있음. 단 모바일 브라우저는 256~512MB 한도 → 일부 모바일에서 OOM 위험.

### 3. WebGL 성능

| 항목 | 평가 |
|---|---|
| 60fps 가능 여부 (8763 mesh) | ⚠ DrawCall 945+ → Chrome 데스크탑 30~60fps, 모바일 15~30fps |
| Update tick | C# AOT (IL2CPP) → 데스크탑 native 90% 수준 |
| 메모리 GC pause | WebGL Boehm GC → ~1~3ms spike 가능 |

### 4. UI Toolkit WebGL

| 항목 | 결과 |
|---|---|
| UXML/USS WebGL 지원 | ✅ |
| Runtime UIDocument | ✅ |
| TreeView 8763 노드 | ⚠ DOM 비슷한 reflow 비용 — 가상화 필요 (현재 ListView는 가상화 OK) |

### 5. 정체성 충돌 (CLAUDE.md 4원칙)

> "**플랫폼**: Windows 데스크탑 1차. 모바일 패턴 도입 금지."

WebGL은 모바일 UX 가정에 가까워 정체성 5조 ("Windows 데스크탑 1차")와 직접 충돌.
정체성 변경 없이 WebGL을 도입하려면 **"체험판 / 데모 모드"**로 한정.

## 권장 사용 사례 (Phase 4 검토)

| 사용 사례 | 적합성 |
|---|---|
| 데스크탑 풀 기능 클라이언트 | ❌ 데스크탑 native 그대로 |
| 영업 데모 (3분 체험) | ✅ 19MB glb 자동 임포트 + 회전 시연 가능 |
| 교육 코너 (학생 brew/install 회피) | ✅ 1주 사용량 충분 |
| 협업자 시연 (브라우저만 있으면 시연) | ✅ Tailscale Funnel + WebGL Player |

## 비용 추정 (Phase 4 도입 시)

| 작업 | 시간 |
|---|---|
| WebGL 빌드 첫 셋업 | 1~2일 |
| 코드 분기 (`#if UNITY_WEBGL` 처리) | 1~2일 |
| 자동 임포트 + 시연 시퀀스 | 2~3일 |
| 모바일 브라우저 테스트 + tuning | 3~5일 |
| 총 | **약 1.5~2주** |

## 결정 — 현재 보류

- Phase 1~3에서는 데스크탑 1차 정체성 유지
- Phase 4 (사용자 검증 + 첫 매출 후) 영업 도구로서 WebGL "체험 모드" 검토
- 그때 본 ADR을 Accepted로 갱신 + 구현 ADR 추가

## 참고

- ADR-0001 — 제품 비전 4원칙 (Windows 데스크탑 1차)
- ADR-0006 — Phase 3 범위
- glTFast WebGL: https://docs.unity3d.com/Packages/com.unity.cloud.gltfast@6.10/manual/index.html
- Unity WebGL build size: https://docs.unity3d.com/Manual/webgl-building.html
