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官方文档
热门推荐
羽毛球拍*拉多少磅 (国家队儿童拉多少磅羽毛球线)
如何在家自制月季营养土?手把手教你配置养花土壤
抑郁症三个核心症状七个附加症状
正确认识抗生素 谨防滥用危害
“计划五虎”地均GDP排名:深厦领跑,大连垫底
属鸡的三合和六个合生肖是什么
中国首部变形机器人动画:《洛洛历险记》的往事与遗憾
全价宠物犬粮:针对不同体型狗狗的营养调配方案
汽车的转向特性研究
严严寒冬,老年人如何居家锻炼
没有起酒器时如何打开红酒?
生抽吃多了致癌吗
为什么喝咖啡会腹泻?专家为你详细解答
为何范进中举后突然疯了?把他的官职放到现在,或许你比他还疯
通过配置brotli压缩来提高http请求的压缩率,降低出口带宽,提升访问速度
为什么中国不允许再建500米以上的摩天大楼?
吕不韦:从卫国商人到秦国丞相
内部创业的重要性
什么样的儿童口罩才是安全的
为什么喝酒不能吃海带
满山红的来源和功效
蒸汽眼罩能缓解干眼吗?医生详解使用注意事项
虎门炮台旧址及其保护利用
如何获取公共数据库文件
这5种蔬菜千万不能生吃,否则可能导致食物中毒!
牛蒡茶功效与饮用指南:营养师详解三大功效及注意事项
经过修饰的“完美照片”,对我们的意义何在?
红楼梦第三回赏析:人物塑造与主题思想
本次降温过程是“倒春寒”吗?是否影响农业生产?一文了解
孕妇血糖正常值:了解、监测与调控