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官方文档
热门推荐
如何避免晕车?晕车旅行的必备技巧
坐车时的一个常见行为,很可能让你晕上加晕
《碟中谍8:最终清算》首发预告,阿汤哥再次上演飞机“外挂”
高一学生学习方法(通用8篇)
腕管综合征手术的步骤和所需时间
如何在GitHub上克隆仓库:HTTPS、SSH和GitHub CLI的区别
揭秘噪声检测:3种高效方法,让噪音无处隐藏!
建筑方案设计收费标准全解析:这些因素影响设计费用
洗衣机日常使用8大坑我全踩了,售后工人:别再说机洗不干净了
换机油有什么用?应该什么时候换机油?
如何挑选上等茶叶:从种类到品鉴的全面指南
大众健康丨眼皮跳动,不只是疲劳那么简单——如何轻松应对这一常见症状
浅谈美军历史最高军衔
为什么期指长期处于贴水状态?这种状态对投资者意味着什么?
股指期货出现贴水反映了什么?如何应对这种贴水现象?
能源“金三角”化工园区聚力协同发展
能源“金三角”化工园区聚力协同发展
跨越四国的生命之脉《阿尔泰山》
肺上有磨玻璃小结节应该怎么治疗
潍坊风筝——放飞非遗的腾飞之路
潍坊风筝:手造之美 匠心绽放
古老文明扬中外 匠心妙手焕光彩——记秦兵马俑考古发掘50周年
股票短线交易规则:从入门到精通
射钉枪原理是什么,为何有如此威力?
射钉枪安全操作与维护指南
元尊源师全解析百科
有效倾听的四个步骤
体脂率怎么算最准确?3种家庭自测方法的详细操作步骤!
增强供应链信息化和数字化框架的信任和可靠性
周易取名:精选10个出自《周易》的宝宝名字及其寓意