《SAR-高性能跨端互动引擎-陆泽耿.pdf》由会员分享,可在线阅读,更多相关《SAR-高性能跨端互动引擎-陆泽耿.pdf(34页珍藏版)》请在三个皮匠报告上搜索。
1、SAR-高性能跨端互动引擎陆泽耿引擎架构师2016 2018 腾讯 Moba 手游、微信小游戏2019 加入字节,互动小游戏研发2022 SAR 引擎研发1.SAR 引擎概况2.SAR 引擎架构3.创新业务4.未来展望1.SAR 引擎概况行业背景淘宝-淘宝人生拼多多-推金币抖音极速-金币果园抖音-脸萌冲撞业务架构Web 3D 引擎性能瓶颈JS 运行时JS 引擎的执行效率受到 JS 解析器的限制。不同设备上的差异较大。单线程模式引擎核心渲染需要与业务代码竞争有限的 JS 线程执行时间。面向 object 系统传统的面向 object 系统在较为复杂的场景下存在场景数据访问效率较低的问题。SARS
2、AR CreatorSAR EngineNative 运行时双线程渲染ECS 系统引擎能力2D 文本/精灵图Spine 动效PBR 渲染多种工作流业务案例直播礼物用户增长活动页面懂车帝-3D 看车抖音合养小火人性能提升FMP(线上平均值)CPU 占用(线下 IOS)BabylonJSSAR4.0 s2.0 s47%37%14Benchmark2.SAR 引擎架构2.1 引擎整体架构混合架构拓展包核心包BindingNative基于核包拓展引擎功能负责对接底层 Native 对象C+实现 ECS 系统对接不同的渲染后端渲染资源抽象序列化与反序列化实现 JS 与 Native 通信2.2 运行时多
3、模式、双线程渲染运行时多模式Native 模式使客户端集成的 Native 代码运引擎需要通过兼容性检测Wasm 模式使 EMCC 编译的 WebAssembly 包可随业务包发布Asm 模式使 EMCC 编译的 Asm 包纯 JS 的实现双线程渲染2.3 引擎模块设计ECS 系统ECS内存布局Archetype:描述类组件的集合Chunk:ECS 内存分配的最单位传统object内存布局内存布局分散,容易产 Cache MissECS 系统共享内存内存池:每个内存 2M,Chunk 分配在内存上虚拟指针:32位的指针,11位存储内存编号低21位存储在内存上的偏移JSBridgeNapi:跨端
4、框架 BindingWasm:EMCC BindingJSBridge参数交换区 SwapqueueCreate Entity 实现NPM Packages拓展包提供了频、物理、粒、spine等功能业务可以根据具体的业务场景搭配使核包和拓展包,实现引擎代码裁剪第三方 Native Runtime第三库作为引擎仓库的submodule 依赖EMCC 编译的 wasm,asm产物到 addon 包中运时将渲染数据传递给Native 进绘制3.创新业务演讲内容中插入视频格式:mp4分辨率:不低于1920*1080C+与 Swift 混编的RealityKit 渲染后端跨端到 AVP/Pico 等XR 设备应4.未来展望引擎编辑器生态GI 效果增强:light map,reflection probe,light probe延迟渲染管线阴影:Shadow Cascades定义 阴影 passGFX Device:Metal,Vulkan调试模式:内存 profile,运时 debug资产商店:AIGC 资产库,粒资产库,材质资产库官建设技术分享开源社区建设THANK YOUQ&A环节