Version: 1.4
语言 : 中文
Shader变体异步Warmup
调试与分析

Math 库 Wasm SIMD 支持

Emscripten 支持 WebAssembly SIMD 功能,SSE2 和 ARM_NEON SIMD 指令集的指令可以通过编译转化成在 Wasm 虚拟机下的指令进行模拟,从而获得比普通标量化运算更好的性能。

  • 通过在 Project Settings -> Player -> Publishing Settings 页面里勾选 SIMD 选项,即可打开引擎的 SIMD 支持
SIMD
SIMD

引擎中 Math 库为各个模块提供了基础的数学运算,其中的向量和矩阵等相关的运算天生适合使用 SIMD 进行优化。 通过使用 WebAssembly SIMD intrinsics 重写 Math 库中的实现,我们让引擎在小游戏平台上也能够将获得到来自SIMD的性能提升。 Math 库 Wasm 的 SIMD 支持,相比团结1.0版本中支持的 Mesh Skinning SIMD 覆盖范围更广, 可以让更多使用到 Math 运算的代码逻辑受益。

案例

案例1

190个单位,平均每个单位有约20个骨骼,1万个顶点,Skin weights 为4

案例2

160个单位,每个单位有约53个骨骼,4000个顶点,Skin weights 为4

方案对比(以 Skinning 为例)

未开启优化
未开启优化
GPU Skinning
GPU Skinning
SIMD
SIMD

设置选项位于 Project Settings -> Player -> Publish Settings,默认开启。

注意事项

  • 微信小游戏平台使用 SIMD 功能后,需要使用最新版本的微信开发者工具和微信小游戏 SDK package 才能支持 Wasm 代码分包功能。
Shader变体异步Warmup
调试与分析