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官方文档
热门推荐
喝咖啡会导致钙流失?上班族如何科学补钙?
为什么会有脚底板痛?带你认识「足底筋膜炎」告诉你如何舒缓及预防
简明理解:微积分基本定理
以史为鉴!100年黄金走势图显示:长期策略仍是逢低买入
负温度系数
洗板水530与850有什么区别:不同洗板水的区别介绍
陕西风味美食羊肉泡馍背后隐藏的千年故事
长江学者制度:从人才引进到学术头衔泛滥
日本的军迷,都是军国主义分子吗?丨次元军武
有皮肤病可以泡温泉吗
路由器信道设置:自动还是手动选择?
一个实用的带货文案写作思路
构建“全场景阅读”,打开儿童阅读边界
长期喝中药的副作用及预防措施
2024世界公众科学素质促进大会专题论坛:多元主体协同提升公众科学素质
《三国演义》中重臣张昭的墓,在南京发现了
面条起源于何时 面条最早出现在哪个时代
机器学习中如何确定某个特征是有用特征
SKDJ指标的应用如何熟练掌握?这种掌握对技术分析有何提升作用?
旅游管理专业就业方向:谁说学旅游只能当导游?
每天锻炼却瘦不下来?减肥的真相在这里!
基于深度学习的CT肺肿瘤自动检测和分割研究
上海滴水湖一日游攻略,滴水湖游玩攻略
三坐标测量机的“柔性”特点及其在工业中的应用
《仙剑奇侠传3》:这款传奇之作,拯救了整个仙剑系列的命运!
立春阳气升,鼻炎易发作!5个居家按摩穴位图解
华为管理变革制度创新与文化塑造的核心实践
护栏碰撞监测系统在高速公路养护中的作用
汽车发动机:燃烧中的火焰巨兽,温度高达几千度?
如何评估你的身体素质:20-70岁的标准指南