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


发新话题
打印

[其他] JZF老师,你好

这玩意除了数毛没办法验证。
3D模式是左右眼显示不同的400x240画面
按照道理说,把3D深度调为0,那么左右眼显示的就是相同画面的400x240,这时的画面分辨率依然只能算400x240。
如果把内部分辨率改成800x240,那么输出到左右眼需要做纵向的隔列抽线,这个的处理方式既不同于2D模式也不同于3D模式,我觉得capcom不一定会采用;
不过倒是可以把左右眼画面透视矩阵加半个像素的偏移,也就是类似Temporal AA的处理方式,这样看起来,也是有一定锯齿减少效果的。但不如800x240效果好,也就和2xMSAA差不多。


TOP

引用:
原帖由 u571 于 2012-2-1 22:47 发表
问题是3DS就是一帧输出800x240分辨率,分别渲染2个400x240然后重组像素成800x240写进帧缓冲我想不出这世界上那个白痴会这么干
你还别说,真就是渲染两个400x240的Rendertarget,然后写入Quad-Buffer(对应2D的Double-Buffer)中——这是3D Display rendering的通用办法。
一次渲染800x240是不可能的,因为两个rendertarget的透视矩阵都不同,不可能使用同一个光栅化过程,这应该是3D渲染的基础常识。
此外,800x240,与2个400x240,其中一个错位半像素光栅化,效果是有差别的,最明显的就是tutv的dda不同导致texture fetch时的mip-map选择不同。



TOP

引用:
原帖由 tdkgtm01 于 2012-2-1 23:25 发表
你看,我说什么来着
这么简单的东西,就因为觉得我是任黑,就要抬杠了,何苦呢
不过,如果要是2D模式,使用800x240渲染,然后奇数列偶数列单独抽出再组成两个Render Target推入Quad Buffer,理论上也是可行的。虽说这个重组render target会有性能消耗,不过毕竟比渲染两个400x240要节省一次几何运算的时间。
这样说到底就是——3ds是不是每只眼只能看到400x240分辨率的问题了,毕竟两只眼看到不同的400x240与两只眼看到相同的800x240,效果上也是有区别的。


TOP

引用:
原帖由 tdkgtm01 于 2012-2-1 23:38 发表
是,这是我的问题1
问题2是,在问题1成立即3ds有800*240显示能力的情况下,现在的生化到底有没有输出800*240
另外2d模式还要生成两个不同的对象干什么?
其实我说的这个2D模式相当于‘3D深度为0’的3D模式,也就是依然依靠左右眼对应不同的400x240来显示,这样自然需要使用和3D显示相同的方式(2个RT)了。
当然,如果3ds支持2D模式下800x240的backbuffer,那么自然也就无需这样做了,但现在这个不是未知的么?现在已知的是3ds肯定支持400x240的quad-buffer或类似模式。

TOP

引用:
原帖由 u571 于 2012-2-2 09:53 发表
我就很奇怪,如果GPU同一时间送出一帧400x240的画面在一块800x240物理物理分辨率的屏幕上怎么同一时间显示两帧不同内容400x240?
10几年前voodoo SLI原理也是把屏幕按奇偶线切成2块交由两块显卡渲染,请问能 ...
你去查查Quad Buffer不好吗?ATI和NV都有(不过NV的QB目前只在Quadro下开放,但至少ATI有专门开放的QB SDK可查的)。
所谓Quad Buffer,就是指,原来的2D显示只要一个BackBuffer完成后就可以Flip或Copy至Front Buffer(当然还会受VSync影响等),而Quad Buffer需要Left eye和Right eye Buffer都完成后才会Flip或Copy。剩下的事就是显示屏自己完成了。
渲染一个RenderTarget,和把这个RenderTarget进行Present本就是两个步骤啊,话说,现在游戏任何一帧渲染的过程中,需要渲染的Render Target数量都会大于1————什么Shadow map之类的都得渲染啊,你要算分辨率不能把所有render target加一起算啊。
就我的看法,3d显示情况下,分辨率还应该按照单个眼睛能看到的分辨率计算,只不过总渲染负荷会增加,达到接近2倍(不到2倍是因为类似一帧的左右眼,shadow map是可以共用的不需要渲染两次),这也就是说,2D情况下渲染一帧,3D情况下就要分两次渲染两帧然后GPU做一次present,你近似理解为帧率加倍也可以,当然,3D模式,由于左右眼接收不同的图像,合成出的图像,会有锯齿减少的现象,也可以认为有一定抗锯齿效应。

[ 本帖最后由 hourousha 于 2012-2-2 10:17 编辑 ]

TOP

引用:
原帖由 u571 于 2012-2-2 10:24 发表
present之后的分辨率也还是800x240,怎么能说GPU渲染输出分辨率是400x240呢?
如果这样任地狱还用800x240物理分辨率干嘛?
我原贴只是在回复你‘一次渲染800x240而不是渲染2次400x240’的问题。请不要跑题。
至于为何不能一次渲染800x240,确实是基础问题,如果不能理解那我也没办法。
再者,800x240的rasterazation参数和400x240是不同的,因此在纹理拾取等操作上会造成效果差别,传统SSAA和传统MSAA在纹理效果上的差别也就是这么造成。
此外,如果说present时显存中的排列,我觉得400x480的可能性更高哦。当然这也不代表渲染分辨率就是400x480,否则2xMSAA是不是也要算成双倍分辨率了?

TOP

引用:
原帖由 u571 于 2012-2-2 11:10 发表
不错,前者是我理解有问题。后者物理分辨率可以看下LG的3D手机,800x480开了3D之后成400x480.
3DS的800x240的物理分辨率是绝对可信
我也没说3ds没有800x240个像素点啊。
除了3D显示的quad-buffer外,我的另一个观点就是:如果3ds可以在某种模式下,让左右眼能同时看到相同的800x240像素,而不是每只眼只看到自己对应的400x240的话,那么就可以认为3ds有能力实现800x240的显示。

TOP

引用:
原帖由 ashley 于 2012-2-2 19:10 发表
汗,阿西动作真快

补充一个高清版:D
以这两张图来看,左边的开了反锯齿而右边没有,但两者的水平分辨率是一致的。
357楼的图比较糊,不过就我来看,右边的水平分辨率依然没有倍增。

TOP

引用:
原帖由 csimd 于 2012-2-2 20:52 发表

结了
说真的我已经被jzf的风骚跳跃性思维折服了,本来就是标准抗锯齿,怎么会变成两个400相加就是800分辨率的传奇的,太多维宇宙了
如果3ds可以让每只眼睛都看到800x240个像素,那么确实可以做出‘原生’800x240的画面,方式就是以800x240渲染然后奇数偶数列抽出对应left buffer和right buffer推入quadbuffer中即可。
我只是说从那两组图,看不出横向倍增分辨率而已。横向倍增对应的是下面示意的这种效果
附件: 您所在的用户组无法下载或查看附件

TOP

引用:
原帖由 JZF 于 2012-2-4 02:02 发表


我感觉太可笑了。不高兴理你这种自说自话、前后回贴错误百出、观点一直在变的举动就是被证实了?
被证实没区别了?怎么证实的?
某个人说句感觉不是倍增就是证实了?
我怎么看到的是横向分辨率倍增的情况?
...
看来我有必要解释一下,先上张图,从左到右分别是原始分辨率、原始分辨率+2MSAA、横向分辨率x2、横向分辨率x2+2MSAA

判断横向分辨率其实很简单,找一段普遍斜率绝对值大于2的边缘,如果横向分辨率倍增,则subsample(考虑到MSAA)的coverage为1(简单说就是实心的)的像素的阶梯宽度普遍为原始分辨率情况下的1/2。而同一段曲线,Cov为1的像素构成的阶梯数量也要明显比原始分辨率多。
但无论是365楼还是355楼的图(恰巧都有斜率绝对值大于2的边缘段),都可以明显看出,Cov为1的像素的阶梯宽度左右两边是相等的,而同一段边缘,Cov为1的像素构成的阶梯的数量也是相等的,355楼的图有点糊,不过365楼的图表现得就很清楚。
因此,从那几幅屏摄,几乎可以判定,横向分辨率没有倍增。
附件: 您所在的用户组无法下载或查看附件

TOP

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