主要观点:在游戏开发中常提及 SIMD,但难以实现真正收益,构建围绕 SIMD 的数学库不一定有好处,有时还会阻碍开发,如游戏玩法和物理中的一些计算难以聚集为 SIMD 指令。但对于 Box2D 3.0,决定尝试用 SIMD 解决接触问题,关键是图着色,可将接触对分组同时求解,且可用简单贪心算法,还需处理身体睡眠和醒来等情况,求解后要进行聚集和分散操作。测试表明 SSE2 比标量快约 2 倍,AVX2 比 SSE2 快约 14%,苹果 M2 性能较好,同时提到编译器自动矢量化效果不如手动 SSE2,还列举了相关参考资料。
关键信息:
- SIMD 是 CPU 性能的圣杯但难实现收益。
- 游戏中很多计算难以用 SIMD 处理,如游戏玩法和物理。
- Box2D 用图着色将接触对分组同时求解,用简单贪心算法,处理身体睡眠和醒来。
- 求解后要进行聚集和分散操作。
- 测试结果表明不同指令集性能差异,苹果 M2 性能较好,编译器自动矢量化效果不如手动 SSE2。
重要细节: - 大型金字塔有 5050 个身体和 14950 个接触对,每个接触点有两个力。
- 图着色用不同颜色给接触约束分组,确保同一颜色中一个身体只出现一次或不出现。
- 代码示例展示如何添加和删除接触到图着色,以及如何处理身体睡眠和醒来。
- 测试在 AMD 7950X 和苹果 M2 上进行,包括不同指令集的性能对比。
- 提到 Bepu Physics 用图着色和 SIMD,以及最早提及用图着色加速刚体物理计算的文献。
- 图着色在布料模拟等领域也有应用,且其预计算较方便。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。