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官方文档
热门推荐
《明日方舟》魔王干员图鉴一览
洋桔梗花语大全:不同颜色代表什么含义?
脂肪瘤完全切除后还会复发吗
多发性脂肪瘤有哪些症状
刀郎何以成为"现象级"歌手——一个音乐社会学视角的观察
2025年乙巳年五个半天赦日
哈弗茨在阿森纳的蜕变:从质疑声中走向核心
【深度】哈弗茨球探报告:冷酷致命的全能战士 他已接近完美?
八字金旺缺火好吗?命里金旺缺火怎么补?
铝型材的选型和基本知识,从种类、常用牌号、表面工艺处理等进行分析
湖南衡阳著名的十大美食,你都吃过吗?
五行缺火金命者,是否需要补火及如何补火?
锂电池和铅酸电池,到底有啥不一样?
玉米粥减肥还是增肥
深圳为什么是湖南的“第二省会”?
中医养生提高耐热能力的方法与案例
您有一封来自肾脏的传讯,请注意查收:识肾脏,了解肾脏病
哪些因素会导致拉肚子
磁铁为什么会分为N极和S极,它们之间又有何关联?
全损车辆置换补贴指南:条件、流程及注意事项全解析
不是涨停就是跌停!这些股票的极端波动考验投资者神经!
胃食管反流病患者应避开的几类食物
心理学上,“心理暗示”是突破瓶颈的关键。
孩子偷钱时,家长应该了解孩子的动机
白萝卜炖牛腩怎么做好吃又烂?
洋桔梗:一种优雅的观花植物
甲状腺引起手抖是什么原因导致的
用人单位不得安排未成年工从事的工作包括哪些范围
总被指控毁三观的阿德利企鹅,到底犯了什么滔天罪行?
鼠标DPI是什么意思?鼠标DPI调整设置方法教程