Unity引擎Math库Wasm SIMD支持详解
创作时间:
作者:
@小白创作中心
Unity引擎Math库Wasm SIMD支持详解
引用
1
来源
1.
https://docs.unity.cn/cn/tuanjiemanual/Manual/SIMD-support.html
Unity引擎在1.4版本中引入了对WebAssembly SIMD(单指令多数据)的支持,通过Emscripten将SSE2和ARM_NEON SIMD指令集转换为Wasm虚拟机指令,实现了性能优化。本文将详细介绍这一功能的使用方法和性能提升效果。
Emscripten支持WebAssembly SIMD功能,SSE2和ARM_NEON SIMD指令集的指令可以通过编译转化成在Wasm虚拟机下的指令进行模拟,从而获得比普通标量化运算更好的性能。
如何开启SIMD支持
通过在Project Settings -> Player -> Publishing Settings页面里勾选SIMD选项,即可打开引擎的 SIMD 支持。
Math库的SIMD优化
引擎中Math库为各个模块提供了基础的数学运算,其中的向量和矩阵等相关的运算天生适合使用SIMD进行优化。通过使用WebAssembly SIMD intrinsics重写Math库中的实现,让引擎在小游戏平台上也能够获得来自SIMD的性能提升。相比Unity 1.0版本中支持的Mesh Skinning SIMD,Math库的SIMD支持覆盖范围更广,可以让更多使用到Math运算的代码逻辑受益。
性能对比案例
以下是两个具体的性能对比案例:
案例1
- 场景配置:190个单位,平均每个单位有约20个骨骼,1万个顶点,Skin weights为4
- 性能对比:
- 未开启SIMD
- 开启SIMD
案例2
- 场景配置:160个单位,每个单位有约53个骨骼,4000个顶点,Skin weights为4
- 性能对比:
- 未开启SIMD
- 开启SIMD
方案对比(以Skinning为例)
未开启优化
GPU Skinning
SIMD
设置选项
设置选项位于Project Settings -> Player -> Publish Settings,默认开启。
注意事项
- 微信小游戏平台使用SIMD功能后,需要使用最新版本的微信开发者工具和微信小游戏SDK package才能支持Wasm代码分包功能。
本文原文来自Unity官方文档
热门推荐
低卡橙子巴巴露亚:健康甜品新宠
成都到郑州高铁攻略:最快6小时,舒适便捷的出行选择
赤藓糖醇:糖尿病人的甜蜜之选
为什么子线总缠绕?试试这样快速解决!
印度环境污染为什么这么严重?印度人为什么不重视卫生?
医疗专家谈乳制品与健康瘦身
纯牛奶蛋白质含量揭秘:营养价值与饮用指南
狗狗健康护理:如何防治虱子?
益阳大通湖生态修复成全国样本,实现环境治理与产业振兴双赢
湖南大通湖:系统治理实现水质蜕变,打造生态修复新样本
水草修复让大通湖重现生机,成洞庭湖生态治理样本
东京晴空塔:两个观景台+水族馆,玩转墨田区地标
冬季护肤小贴士:预防血痣恶化
皮肤科医生详解:血痣的最新治疗方法
重温《家有儿女》:民主、平等、幽默成就幸福家庭
马斯克脑机接口技术迎重大突破:将赋予人类“超能力”
荥阳本周持续降温至零下5度,干燥无雪需保暖
豌豆炒虾仁:孩子最爱的家常菜,这样做最美味!
豌豆:超级食物界的全能选手
冬季养生神器:豌豆的超强营养
拉斯科洞窟壁画:两万年前的人类艺术杰作
《狂飙》同款墙壁画,打造高颜值家
家居装修防鼠攻略:从设计到施工,打造安心居住环境
希腊:19处世界遗产见证千年文明保护智慧
从职业技能到艺术修养:成人进修班助力职场人全面提升
肌酸:提升认知与运动表现的双重利器
牛肉肌氨酸:健身达人的秘密武器
肌酸:健身达人的秘密武器
南雄红砂岭:从荒漠化典型到生态治理样本
洛杉矶山火致5死,此前保险已取消,居民投保难,预计损失近百亿