Board logo

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

作者: wx5277    时间: 2012-2-19 16:41     标题: 我也想问一个科学问题 古代3d游戏的颤抖病是怎么回事

就像生化危机 恐龙危机什么的 任务颤抖不止 是怎么回事
作者: 大头木    时间: 2012-2-19 17:01

没有z缓存,n64就不抖

ps的宣传片就是坑爹的实机上根本不是那么回事
作者: dragonzet    时间: 2012-2-19 17:28

NDS感觉有Z缓冲又感觉没有。。。。

因为明显3D游戏, MARIO 64这些在纵深移动时多边形比PS稳定。
虽然还是有一点轻微的颤抖
作者: 夕雨    时间: 2012-2-19 17:48

posted by wap, platform: iPhone

Ps2的yuna经常抖来抖去
作者: zo    时间: 2012-2-19 17:51

我一直以为是顶点演算精度的问题。。。。
作者: dragonzet    时间: 2012-2-19 17:52

那个抖是因为骨骼动作手调非捕捉造成的把
作者: shinkamui    时间: 2012-2-19 17:54

我认为是浮点精度问题
作者: zenodante    时间: 2012-2-19 18:59

posted by wap, platform: iPod (iTouch)

应该是用了太多近似运算造成的误差,ps支持半精度浮点么?
作者: glwzero10    时间: 2012-2-19 19:11

引用:
原帖由 dragonzet 于 2012-2-19 17:52 发表
那个抖是因为骨骼动作手调非捕捉造成的把
能调出抽筋动画的动画师是进不了公司的吧
作者: hypergiant    时间: 2012-2-19 19:12

数据精度问题咯

缓存和运算速度不够造成的
作者: wx5277    时间: 2012-2-19 20:12

哦 原来如此原来如此
作者: 大头木    时间: 2012-2-19 22:07

浮点精度导致闪烁,z缓存精度导致抖动,ps这两个问题都有

在场景比较大的情况下,距离原点越远的位置抖动越厉害
z缓存精度小面之间交互闪烁越严重
作者: zenodante    时间: 2012-2-20 02:48

刚看了下ps的GTE资料,浮点啥呀,人家根本就是个定点协处理器,坐标转换什么的,都还是3.12的16bit定点哦,不抖才怪了:D
作者: hourousha    时间: 2012-2-20 08:12

引用:
原帖由 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 编辑 ]
作者: wx5277    时间: 2012-2-20 08:46

神秘!神秘! 我无法加入到这种对话
作者: zenodante    时间: 2012-2-20 19:32

posted by wap, platform: iPod (iTouch)
引用:
原帖由 @hourousha  于 2012-2-20 08:12 发表
定点在那个年代是很正常的嘛,比PS晚挺久的N64的RSP不也是8wayFX16SIMD么,不过区别是RSP可编程(说起来GTE也不能算Fixed function TnL。但显然RSP可编程性比GTE要高),所以可以用定点来模拟浮点运算,当然代价可想 ...
哦,这样!但是旋转之类的矩阵运算似乎是固定3/12的吧。最近在用cortex m4写3d引擎,也准备这样用,这样可以simd。汇编程序写下来估计坐标变换可以比用fpu快20%.有点蛋疼的提高。。。
作者: zafm0861    时间: 2012-2-20 19:46

ue3引擎做的游戏有些尸体会抖。。。
作者: shinkamui    时间: 2012-2-20 19:54

引用:
原帖由 zafm0861 于 2012-2-20 19:46 发表
ue3引擎做的游戏有些尸体会抖。。。
这个抖是因为物理引擎,计算约束方程迭代次数有限造成的,和楼主的那种抖原因不一样。
作者: hourousha    时间: 2012-2-20 20:20

引用:
原帖由 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形式)的话应该不止这点提升才对。
作者: oracle    时间: 2012-2-20 22:36

这帖子的回复好深奥
作者: zenodante    时间: 2012-2-20 22:41

posted by wap, platform: iPod (iTouch)

主要指令都用在读写sram和数据打包上了.所以我现在中途改用浮点了,存顶点用半精度,运算用单精度
作者: dragonzet    时间: 2012-2-20 23:01

问下老师DS的浮点精度和N64一样还是更差一些




欢迎光临 TGFC Lifestyle (http://club.tgfcer.com/) Powered by Discuz! 6.0.0