问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

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官方文档

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号