2013年7月15日 星期一

【討論】Forza 5 的FPS實驗以及討論

http://forum.gamer.com.tw/C.php?bsn=60001&snA=28340&tnum=15

我覺得這個討論基本上已經脫離了之前的的主題、並且在這裡將討論獨立出來。
我先把我的原文拿掉回應其他人的部分、並且把資料貼在這裡。


我實際去實驗了一下實驗結果如下
取自
http://www.gamersyde.com/news_e3_forza_5_wheel_gameplay-14227_en.html



Test method 以及使用的邏輯

第一點
由於Forza 5是一款號稱有Vsync 的遊戲。
所以我們只要我們能夠確定螢幕上一小部分有refresh 、
我們就可以判定整個畫面都是一整個frame。

第二點
我們假設遊戲中的計時器是正確的。
計時器跑了1秒鐘就是現實世界的一秒鐘

第三點
計時器顯示出不同數字的時候、
我們就可以因為第一點而判定整個畫面已經是一個不同的frame。

第四點
當計時器顯示出跟上一個Frame同樣的數字的時候、
基於第一點的關係我們即可判定畫面並沒有refresh。

第五點
計時器跳到一整秒的時候、側錄影片同時也有60張獨立、不同的輸出。
所以我們可以判定側錄硬體的確是可以以60FPS去辨別畫面。

結論
我們可以經由數出影片一秒內計時器有幾個不重復的秒數來辨別Forza 5 的FPS到底有多少。



真的有達到60FPS的話這些圖在計時器跳1秒的時間內裡面會包含60個獨立的數字
重復的我直接highlight 起來
對我的作法有疑問你可以看一看我參照了什麼圖片
我做了4秒=>9秒之間300個frame 的取樣
https://docs.google.com/file/d/0B0DB02tYXggEU2MxSHE5ZHRjYlk/edit?usp=sharing
4.0004.0174.0504.0674.0834.100
4.1174.1334.1504.1674.1834.200
4.2174.2334.2504.2674.2834.300
4.3174.3334.3504.3674.3834.400
4.4174.4334.4504.4674.4834.500
4.5174.5334.5504.5674.5834.600
4.6174.6334.6504.6674.6674.683
4.7004.7004.7174.7334.7334.767
4.8004.8174.8334.8504.8674.883
4.9004.9174.9334.9504.9674.983
5.0005.0175.0335.0505.0675.083
5.1005.1175.1335.1505.1675.183
5.2005.2175.2335.2505.2675.283
5.3005.3175.3335.3505.3675.383
5.4005.4175.4335.4505.4675.483
5.5005.5175.5335.5505.5675.583
5.6005.6175.6175.6335.6335.650
5.6675.6675.7115.7445.7615.777
5.7945.8115.8445.8615.8775.894
5.9115.9275.9445.9615.9775.994
6.0116.0276.0446.0616.0776.094
6.1116.1276.1446.1616.1776.194
6.2116.2276.2446.2616.2776.294
6.3116.3276.3446.3616.3776.394
6.4116.4276.4446.4616.4776.494
6.5116.5276.5446.5616.5776.594
6.6116.6276.6446.6616.6776.694
6.7116.7276.7446.7616.7776.794
6.8116.8276.8446.8616.8776.894
6.9116.9276.9276.9446.9616.961
6.9776.9947.0277.0447.0617.061
7.0777.0947.0947.1277.1277.144
7.1777.2117.2277.2447.2447.261
7.2947.3117.3277.3447.3617.377
7.3947.4277.4447.4617.4777.494
7.5117.5117.5277.5447.5617.577
7.5947.6117.6277.6447.6617.677
7.7117.7277.7447.7617.7777.794
7.8117.8277.8447.8617.8777.894
7.9117.9277.9277.9447.9617.977
7.9948.0118.0278.0448.0618.077
8.0948.1118.1278.1448.1618.177
8.1948.2118.2278.2448.2618.277
8.2948.3118.3278.3448.3618.377
8.3948.4118.4278.4448.4618.477
8.4948.5118.5278.5448.5618.577
8.5948.6118.6278.6448.6618.677
8.6948.7118.7278.7448.7618.777
8.7948.8118.8278.8448.8618.877
8.8778.8948.9278.9278.9448.944




一共300 個frame、17個duplicate
一共283個獨立畫面、除5秒的取樣時間等於56.6 FPS。

所以其實還是不錯啦、離60FPS算是夠接近了。
一秒通常會給我抓到3~4個duplicate frame。

那麼這個做法可信度多高呢?
我想應該是相當夠的。
這個側錄影片剛好就是60FPS、那麼假如FORZA5 有達到60FPS的話、
那就不應該有任何兩個frame紀錄到同個數字、這些duplicate frame 更不應該集中的在特定的區域出現。
假如是器材問題而將同個畫面重復錄取兩次的話
那麼我們至少應該看到兩個FRAME是一模一樣的畫面。
也就是我們可以拿背景來驗證
很可惜、我們拿一對duplicate... 我們假設7.094 好了
側錄器材的輸出如下



仔細比較就會發現的確是兩張的電視畫面一樣、但是背後的人(特別是右上角那個人最明顯)
已經有不同的動作。
那麼到底是FPS低落還是側錄有問題?我想這個不用多說了。



假如三張連續比對下去就會發現第二張的快門時間內錄取到了7.094的frame 以及一點點的7.121 的frame。



也就是這三張圖裡面、遊戲只有展示2張圖片而已
最後編輯:2013-07-14 08:07:03 ◆ Origin: <114.38.70.xxx>

我有仔細看官方到底說了什麼、以及沒有說什麼

結果如何?依然是snic 的名產: 斷章取義、移花接木


VIDEO | Xbox OneFriday, June 14, 2013 | 9:37 AM
51 comments[color=#333]|BlimBlim
Quite a few visitors, and even the official Forza twitter, encouraged us to try and do 1080p versions of our Forza Motorsport 5 videos. Since our beloved cameras are getting old, they do not have a native 1080p60 resolution and we thought encoding at 1080p wouldn't look good, but in the end it's not bad at all so I'm giving this a try with this first video. It's important to keep in mind though that the slight aliasing you will see in the video is 100% due to the camera and the post-processing done on the video, and not the game.
Let us know what you think of this video, if you guys like it the other two will also be reencoded, along with a few other next-gen games I guess!

這段他們說什麼?
他們說他們自己的攝影機是720P、而FORZA的工作人員希望他們試著去做1080P的影片
因為他們的攝影機比較老舊、而且沒有1080P60fps 的解析度、而且他們認為壓制在1080P不會有太好的結果。但是結果來說他們的1080P的影片的結果還不錯
那麼他們希望看的玩家們記得這個1080P的影片是經過upscaling 所以會有些微的鋸齒還有後製的問題。

那麼問題來了、這段到底跟我們有沒有關係?
答案是沒有

為什麼?因為我所拿來分析的影片根本就不是1080P的影片

因為他們的的這段所指向的影片是這一個影片
http://www.gamersyde.com/download_forza_motorsport_5_e3_gameplay_showfloor_3_1080p-30293_en.html

    Forza Motorsport 5
    E3: Gameplay showfloor #3 1080p
    Codec:AVC1
    Length:4 minutes 3 seconds
    Format:1920 x 1080
    FPS: 59 fps
    Size: 731.04 MB

而我們今天拿來做分析的是這一個影片
http://www.gamersyde.com/download_forza_motorsport_5_e3_gameplay_wheel-30253_en.html

    Forza Motorsport 5
    E3: Gameplay wheel
    Codec:AVC1
    Length:2 minutes 44 seconds
    Format:1280 x 720
    FPS: 59 fps
    Size: 300.06 MB

所以說snic 所貼上來的東西跟我們今天在做的分析根本毫無關係
最後編輯:2013-07-13 12:43:48 ◆ Origin: <114.38.73.xxx>

※ 引述《xsiegfried ()》之銘言
> 這個邏輯其實有盲點, 一般遊戲如果要做vsync到特定frame rate的話
> 那每個frame準備完運算後會有一大段時間是在 "等待" 螢幕畫面更新結束
> 但螢幕更新和計時器終究會有誤差, 所以就算攝影機抓到前一個frame
> 但延遲的frame還是會畫出來, 只是延遲的frame和下一個frame之間的等待時間縮小

你這樣其實就已經不符合Vsync 定義了

> 所以延遲的frame沒有被抓到而已, 如果是這情況那其實應該很接近60FPS

以你的說法因該是說是否有FRAME實際上有繪製完成、但是卻沒有輸出
假如說今天的畫面沒有VSYNC就的確有這個狀況。
很慶幸的是今天FORZA5 有VLOCK 所以才有辦法去做這種分析



我仔細思考了一下你的這個說法
更仔細下去想的話應該可以發現是不太可能。

這是因為電視本身以及訊號本身也是以60FPS 在更新
刷新時間是每16.66 MS 的那一瞬間才會去做。就算是遊戲硬體已經在10MS的時間完成了下一個FRAME、也得多等個6.66MS 才會去更新輸出給螢幕的東西。

那麼當然就會有人提議下一張圖會在10MS之後的10MS繪製、等等的。
這個其實不合邏輯。
由於我們今天看的是計時器。那個計時器的確就是以16~17MS的間隔在跳。
那就是繪製一整個畫面的start time 一律都是以16~17MS的間隔來畫。

畫個時間表的話今天我們看到的重復的畫面應該是這樣產生的

Frame 1 ~16ms
Frame 2 ~18ms
Frame 4 ~16ms
Frame 5 ~16ms

16MS 間隔, ABCDE
|----------A----------|----------B----------|----------C----------|----------D----------|----------E----------|
每個FRAME的"繪圖時間" 空白的地方是"等待時間
|----------1-------*  |----------2-------------*                         |----------4-------*  |----------5--------*
顯示到我們畫面上的畫面
                            |----------------------1----------------------|----------2-----------|----------4----------|

因為第三個Frame的"開始繪製的時間"的時間點還沒把第二個FRAME完成
因為第二個FRAME的繪製時間過長、所以導致我們第一個FRAME會看到兩次、而第三個FRAME會消失
> --
> 如果真要說缺點, 我倒希望能換視野
> 畢竟在車內畫面中幾乎一半的像素被遮住, 如果有特意最佳化
> 那馬上就會露馬腳

最後編輯:2013-07-14 08:02:02 ◆ Origin: <114.38.73.xxx>
拿同樣的方式去驗證同一個影片的其他五個有秒數的地方得出的結論是如下

~36s    60個 frame 裡面有60個不同的秒數
~1m 5s    60個 frame 裡面有60個不同的秒數
~1m 30s    60個 frame 裡面有60個不同的秒數
~1m 50s    60個 frame 裡面有60個不同的秒數

真的要的話我可以在這些區段裡面都抽出1秒間的60discrete frame。
不過我希望你們可以自己拿這個影片去做相同的驗證。

除了一開始的4~7秒之外、
完全一樣的驗證方式也可以得出FORZA 5 在以上其他幾個區域達到漂亮的60FPS的結論
假如如各位所說的是攝影機不足或者是實驗手法有問題並且無法驗證這個影片有60FPS、
那麼以上四個區域為什麼可以用同樣的方式得到60FPS的結論的?

1. 同步問題會造成這種偵測錯誤的話: 不可能60fps
2. interlacing/post processing 會造成錯誤: 不可能60fps
3. blending 使得我無法屬出特定的秒數: 不可能60fps
4. 每個frame 不一定要改秒數 (我說過、那個已經變成BUG等級的問題了)... 還是不可能60FPS

看來track 一開始的區域、
要不然就是剛LOAD好遊戲的確有一部分會造成fps 不穩的因素存在。
最後編輯:2013-07-15 11:44:15 ◆ Origin: <114.38.73.xxx>

沒有留言:

張貼留言