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


发新话题
打印

[新闻] [PS3]B3D分辨率達人確認!!!MGS4 證實為1024*768

引用:
原帖由 FXCarl 于 2008-6-12 23:48 发表
某种程度上来说,在游戏领域 TAA 和 动态模糊很难区分,因为不制作加速度参考图,而直接用画面多层叠加的方式也是一种动态模糊做法,GT 就是典型。

这玩意对修正画面上的锯齿没啥用,而且这种效果硬要当回事儿的话,MGS2 就开始用了

Temporal aliasing 参考图,两者中指针的转速是一样的 ……
你忘记了一点,所谓的累加framebuffer得motion blur的方式,和这个‘TAA’并不相同。这个‘TAA’并没有‘累加frame buffer’而是类似于ping-pong buffer式的方式。简单来说类似如下方式
1:偏移像素中心,渲染1st frame输出到RT1
2:反向偏移像素中心,渲染2nd frame输出到RT2,然后显示lerp(RT1,RT2,0.5)
3:偏移像素中心,渲染3rd frame,输出到RT1,然后显示lerp(RT1,RT2,0.5)
4:反向偏移像素中心,渲染4th frame,输出到RT2,然后显示lerp(RT1,RT2,0.5)
……………………如此下去
而累加缓冲作motion blur基本是下面的情况
1:渲染1st frame输出到RT1,显示RT1
2:渲染2nd frame,输出到RT2,RT1 = lerp(RT1,RT2,0.5)。然后显示RT1
3:渲染3rd frame,输出到RT2,RT1 = lerp(RT1,RT2,0.5)。然后显示RT1
4:渲染4th frame,输出到RT2,RT1 = lerp(RT1,RT2,0.5)。然后显示RT1


TOP

引用:
原帖由 FXCarl 于 2008-6-13 00:25 发表
1:偏移像素中心,渲染1st frame输出到RT1
2:反向偏移像素中心,渲染2nd frame输出到RT2,然后显示lerp(RT1,RT2,0.5)
3:偏移像素中心,渲染3rd frame,输出到RT1,然后显示lerp(RT1,RT2,0.5)
4:反向偏移像素中心,渲染4th frame,输出到RT2,然后显示lerp(RT1,RT2,0.5)

如果按照  terminator22482 提供的反锯齿方式 像素的偏移中心应该是随机的 ……
TAA在硬件(目前只有ATI实现了)上的实现是:
1:不做2-frames blending
2:必须开启V-Sync
3:使用2套-3套MSAA pattern,按顺序轮换,也就是第N帧使用pattern1,第N+1帧使用pattern2,第N+2帧使用pattern3,第N+3帧使用pattern1
4:该实现方式是依赖人眼视觉暂留来达成类似‘2-frames blending’的效果,因此依赖比较高的fps,由于打开了V-Sync,因此,显示器的刷新率也要求较高。比如100Hz,使用2 patterns效果就不错。该效果不会出现重影,重影情形如下图所示



而本贴所说的这种软件实现方式的最主要特点就是使用2-frame blending来强制混合,因此虽然不依赖很高的fps,但会造成重影现象,于是主贴中也说了,在运动时干脆关掉这效果了事。
至于取样偏移,依然得按照交替的顺序,比如(-0.5,-0.5),(0.5,0.5),这个偏移直接做到perspective matrix中就可以实现。
引用:
原帖由 FXCarl 于 2008-6-13 00:25 发表
我提出的那个东西,是根据这句来的 ……
如果需要多次取样来获取反锯齿效果,就不存在无性能消耗的说法了。
并不是每帧多次取样,而是相邻帧混合,所谓的性能消耗只是一个混合的消耗。
正是因为如此,所以只在静态时效果不错,动起来就是重影。

静态时基本类似于多次取样的SSAA,也就是说纹理相对MSAA和oversampled SSAA模糊点(与MSAA的比较,你可以考虑把一张由黑白相间的1texel宽的条纹构成的纹理按1:1显示出来的情况;对于和oversampled SSAA——我指的是直接提升分辨率的SSAA方式的比较,是因为直接提升分辨率的话,纹理的ddu和ddv都变小,这点对于mipmap的level选择有用也就是说它会选择更精细的层),不过这种TAA对于alpha test是有效果的。要是MSAA的话,需要alpha-to-coverage才行

[ 本帖最后由 hourousha 于 2008-6-13 00:52 编辑 ]



TOP

引用:
原帖由 FXCarl 于 2008-6-13 00:49 发表
这样的话,这种 TAA 在截图上是看不出效果的 …… 只有屏射才有机会
一般情况是看不出来的,不过有例外,比如当年的farcry,可以选一种visual效果(是paradise效果还是什么忘了),而该效果本身就是有frame buffer accumulate的,因此就看出来了:D
还有一点需要说明,是硬件和软件在非边缘处的纹理模糊区别
硬件实现方案是多个MSAA pattern切换,而MSAA在非边缘处的纹理采样永远以像素中心进行(因为此时pixel center即subsamples centroid),因此即使硬件TAA使用了2-frames blending,也不会发生纹理模糊。
而这种软件实现方式就没这效果了,它是相邻两帧no AA状态但整体偏移。因此两次纹理采样中心是不同的,于是必然出现纹理模糊——用我上面帖子提出的‘显示黑白交替条纹构成纹理’的例子考虑即可明白。


TOP

引用:
原帖由 FXCarl 于 2008-6-13 00:49 发表
不过会有一些潜在的问题,譬如如果我们随意改动投影矩阵的话,画面上的光照结果可能会有些微的差别 …… 搞不好甚至会让一些材质的表现失败
还是单纯在图像空间来做偏移比较好 ……
其实运动的时候也没有关掉的必要,增加一些叠加帧数,直接当动态模糊用就是了 ……
这个问题我认为问题不大。
你想啊,一般做光照计算的矢量,都是以world space或者tangent space、view space矢量的形式传递给Pixel-shader。
而改变perspective matrix,是不会影响上面提到提到的空间的。
之所以要在perspective matrix中做手脚,是因为要利用GPU的光栅化规则,如果是在image space中再偏移,那就和AA不一样了,完全就是一模糊效果罢了。
此外,TAA的这种实现方式是做不成什么动态模糊效果的,试问哪有只用2个相邻帧混合做的motion blur呢是不是:D

TOP

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