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官方文档
热门推荐
打卡江苏,这10条“小吃街”别错过!价不贵,品种全,地道江南味
苏州春节旅游攻略景点大全,苏州春节旅游必去十大景点有哪些?
空气炸锅燕麦布丁,低脂低卡快手营养早餐
三代试管技术:科技突破与伦理困境
三代试管技术助健康宝宝出生:杜氏肌营养不良症不再可怕!
北京通州周末郊游攻略:晴空万里,走起!
北京通州下周大降温!裹严实点!
鸡蛋怎么煮最营养?这种蛋要少吃,水煮蛋做法、食谱
嗓子疼可以喝牛奶吗?一文详解牛奶与嗓子疼的关系
肺结节是肺癌吗?一篇弄懂:肺结节成因、症状及新式治疗选择
医院肺结节挂什么科
秋冬养生新宠:早晨吃苹果和猕猴桃
早晨吃苹果,健康又养颜
憋尿是膀胱癌诱因?医生直言:不管年龄多大,排尿注意“3避免”
交替有氧与力量训练的综合减脂效果
体脂率越低越好吗?专家解析体脂率与健康的关系
流感认知误区频现,专家解读最新防控指南
写蛇的诗,有哪些独特之处?
忌神年如何通过五行调和保持健康?
忌神大运来袭,如何化解你的运势危机?
新能源与高端医疗设备的结合:助力医疗行业技术革新
申请城市低保需要满足什么条件
长春花——绽放在医学领域的抗癌之花
人身上有多少血
大众科普:血液的成分和作用,为什么要输血
基于牛奶和奶牛行为数据揭发奶牛疾病的原理及应用
母亲节特辑:一束永不凋谢的郁金香,献给最伟大的母亲
家居设计中艺术品选择的基本原则
如何谈一场健康的恋爱?专家分析5大要点,这样做关系更健康长久
"为何排泄物总是臭的?揭开生物学之谜"