Unity Web
Unity Web
머리말
Unity Web
과거에는 ‘WebGL’ 이라는 이름으로 Build Target을 설정할 수 있었는데,
시간이 지남에 따라 Web Graphics API로 WebGL2, Web GPU도 지원하게 되면서 ‘WebGL’ 이라는 이름이 조금 어색해짐.
-> 그래서 Unity 6부터 ‘Web’ Build Target으로 이름이 바뀜.
아이콘도 HTML5 로고에서 지구 (글로벌, 인터넷) 느낌의 모양으로 바뀜.
Web Graphics API
- WebGL
- WebGL2
- WebGPU
Unity 6 기준, 지원하는 Graphics API는 WebGL2, WebGPU 두 가지.
WebGL (1)은 원래 지원했는데, Unity 6 올라오면서 설정할 수 없게 됐고,
WebGPU는 새로 생긴 옵션인데, 아직 실험적 단계라 프로젝트에 적용하기에는 어려워보임.
그래서 사실상 지금 시점에서는 WebGL2 사용해야 할 듯
WASM
Web Assembly의 줄임말
- LLVM 저수준 가상 머신?
- Emscripten
- C++/C -> Emscripten -> Wasm
- Emscripten 에서 LLVM을 컴파일에 이용
- 모든 브라우저는 Wasm을 JS와 함께 실행 가능?
- Wasm은 거의 네이티브 같은 속도로 실행된다?
개발 과정에 Unity가 깊은 연관 있다고 봤던 것 같음
- 모바일 브라우저에서 WASM 지원하는 최소 버전
- Safari: 15 16.4
- Chrome: 58 91
- Firefox: 89
- Edge: 91
(이거 VRChat인가 USharp인가 어디서 쓴거 본 것 같은데)
Web Template
빌드 결과물 어떻게 보여줄 것인지에 대한 Template
HTML, CSS, JS 다 있는 듯
- ProjectSettings 에셋 파일을 텍스트 편집기로 열면, Theme 부분에
APPLICATION:~
,PROJECT:~
를 확인 가능
프로파일링
- Profiler
- Web 빌드 연결해서 사용할 수 있음.
- [확인 필요] Profiler에서 측정되는 Memory는 JS Memory 기준인 듯 함.
- WASM Heap은 따로 방법 없는 듯?
- Memory Profiler
- 아쉽게도 아직 Web 빌드 지원 없음.
Web Diagnostics
Player Settings에서 옵션 키고, Web Template – Web Diagnostics 있는 걸로 설정해서 빌드하면
런타임에 첫 진입까지 걸린 시간, Memory 사용량, FPS 측정할 수 있음
Web Memory
두 종류의 메모리 확인할 수 있는데
하나는 JS Memory라는 것이고, 하나는 WASM Heap이라는 것임.
- JS Memory
- Performance.Memory API
- Only Chrome, Edge
- No Safari, Firefox, iOS
- Performance.Memory API
- WASM Heap
메모
- 인스턴트 게임 빌드 (Facebook)
- Keijiro WebGPI Sample
- HTTP Preload 태그를 이용
- 첫 번째 씬에 필요한 에셋 로드
참고
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.