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官方文档
热门推荐
男篮实力分档解析:胡明轩领衔第一档,后卫群体在第三档,第四档球员仅两位
ChatGPT 的工作记忆容量:一项实证研究
伤寒和伤风的区别
能稳赢张无忌的8人名单出炉,最弱的1个打败张无忌也只需要100招
雷军为什么每次创业都能成功?
一个善于深度思考的人有哪些特征?如何培养思维能力
Web网站如何获取微信登录权限设置
在东契奇加入湖人之后,詹姆斯对总冠军的渴望,表露无遗
基于STPA的安全性可靠性分析应用
塔罗牌面解读:愚人正位与逆位的深层含义
璀璨明珠:襄阳市博物馆
泄露个人信息能报警吗?信息泄露的应对指南
央行最新出手!呵护春节流动性
华语歌手酷狗收听排行榜:周杰伦周深周传雄 乐坛是老周家的天下
孕妇孕吐吐血丝要紧吗
2024年12月二手车市场简析:交易量创历史新高,跨区域流通趋势加强
ESP32 WiFi配网教程:两种配网方法详解及代码示例
如何识别并控制自己的情绪以避免伤害他人?
如何锻炼腰部肌肉保护腰椎
种植枇杷树喜阴还是喜阳?如何打造枇杷最佳生长环境?
采耳大揭秘:从认知到健康考量,解锁安全采耳之道
女性长期戴“银手镯”,身体会收获啥好处?很多人还不清楚
出圈了!探秘番禺沙湾非遗古镇,岭南文化这样“活”起来
放弃两百年中立,瑞典正式加入北约意味着什么?
食用鱼肉能否有助于降低血脂
电通量(electric flux)和高斯定律(Gauss‘s law)
戴头盔、守交规……这些骑行安全知识要记牢!
2024年中国林业行业发展概况、市场全景分析及投资策略研究报告(简版)
乌尔:月神之城的死亡与重生
神经性耳鸣的预防策略