» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

[求助] 我也想问一个科学问题 古代3d游戏的颤抖病是怎么回事

引用:
原帖由 zenodante 于 2012-2-20 02:48 发表
刚看了下ps的GTE资料,浮点啥呀,人家根本就是个定点协处理器,坐标转换什么的,都还是3.12的16bit定点哦,不抖才怪了:D
定点在那个年代是很正常的嘛,比PS晚挺久的N64的RSP不也是8-way-FX16-SIMD么,不过区别是RSP可编程(说起来GTE也不能算Fixed function TnL。但显然RSP可编程性比GTE要高),所以可以用定点来模拟浮点运算,当然代价可想而知就是速度降低,模拟的精度越高,降低幅度越大。
此外,GTE也不只是1.3.12精度的哦,输出部分也可以是32bit定点数的。中间运算精度会更高,比如1.27.16这样。

[ 本帖最后由 hourousha 于 2012-2-20 08:21 编辑 ]


TOP

引用:
原帖由 zenodante 于 2012-2-20 19:32 发表
posted by wap, platform: iPod (iTouch)
哦,这样!但是旋转之类的矩阵运算似乎是固定3/12的吧。最近在用cortex m4写3d引擎,也准备这样用,这样可以simd。汇编程序写下来估计坐标变换可以比用fpu快20%.有点蛋疼的 ...
GTE在坐标变换运算过程中精度是1.31.12
另外关于性能,如果simd化只是提升20%性能,但代价却是由浮点(单精度或半精度)下降为FX16然后还得依赖汇编,个人觉得不值。定点数的动态范围太低了,尤其是FX16。另外我是不太清楚您是如何应用SIMD的,按理说使用正确(也就是SoA形式)的话应该不止这点提升才对。



TOP

发新话题
     
官方公众号及微博