[情報] 影像順暢度深度解析:破解 FPS 盲點、找

看板VideoCard (顯卡板)作者 (Mac)時間12年前 (2013/06/21 14:27), 編輯推噓3(303)
留言6則, 5人參與, 最新討論串1/1
影像順暢度深度解析:破解 FPS 盲點、找出影像頓呆的主因 http://ppt.cc/UXRB 從人類打造出第一張顯示卡開始,廠商就不斷灌輸消費者「速度快就是好卡」的觀念,使 得消費者在選購顯示卡時,以產品的效能做為最主要的選擇依據。但是你砸下去的錢,真 的能全部轉換為顯示於螢幕上的效能嗎? 流暢度影響視覺感受 動畫的原理在於利用人眼視覺暫留的特性,當許多靜止的畫面連續播放時,只要速度夠快 (約為每秒顯示16張畫面),就會因為視覺暫留的錯覺,誤認為畫面是活動的動畫。多數 玩家在執行遊戲時,大多會調整畫面品質,將FPS目標值設在60幀,然而遇到效能偏低的 瞬間,前後畫格出現的時間可能大於1/16秒,大於產生視覺暫留所需的最短時間,於是畫 面還是會產生停頓感。 相信大多數的讀者都是透過FRAPS,測量遊戲進行時的FPS,姑且不論上述FPS分佈不均勻 所造成的停頓感,FRAPS的運作方式只能讓我們測量到顯示卡繪製畫格的速度,而不是螢 幕顯示畫格的速度。所以有時就會遇到FPS表現並無異常,但仍然會感覺畫面有所停頓, 並不如測試成績般流暢。 ▲筆者以比較誇張的方式,解釋為何瞬間FPS的落差,會造成畫面停頓感。當FPS為60幀且 分佈均勻的情況,視覺感受是最好的,若FPS降至30幀,且分佈也是均勻的話,畫面看起 來並不會有明顯的停頓感。然而即使FPS維持在60幀,但是前0.1秒就顯示51幀,其餘9幀 剛好平均分佈於剩下的0.9秒中,等於後半部每0.1秒才顯示1張新的畫格,將造成嚴重的 停頓感。 ▲常見FPS速率比較 FRAPS的測試盲點 無論遊戲使用的API是Direct3D或OpenGL,API都會透過複雜的流程處理資料並進行運算。 以Direct3D為例,當遊戲送出繪圖需求與相關資料之後,資料會先被Direct3D送入顯示卡 驅動程式,並送回Direct3D的畫格佇列以及排程器,然後再次送到顯示卡驅動程式中,最 後送到GPU進行運算。 FRAPS的運作原理是記錄每個畫格繪製結束後,攔截Direct3D發出的運算呼叫(present call),藉由分析運算呼叫產生的時間點,FRAPS就能計算畫格資料送入API的速度,能夠 有效率地分析FPS表現。 由於FRAPS攔截運算呼叫的位置在整個運算流程的頂部,並且只能得知每張畫格進入API的 時間,對於資料在API、驅動程式、GPU等階段之間發生的事,以及運算所花費的時間一無 所知。此外畫格佇列與frame buffer,都具有可以暫存畫格的能力,所以各運算呼叫之間 的時間間隔,並不一定等於各畫格輸出時的間格,再加上多GPU環境運算下,資源的分配 及運算流程會更加複雜,FRAPS所測量到的數據與螢幕顯示的畫面會有不少落差,並不適 合作為畫面顯示是否流暢的指標。 ▲Direct3D遊戲的顯示部份處理流程如圖所示,經過繁複的處理手續後,受各步驟延遲影 響,畫格運算與顯示的速度可能會有所不同。 測不出問題畫格 除了上述的問題之外,FRAPS也無測量到遺失畫格(drop frame)與侏儒畫格(runt frame)。當遊戲引擎的物理、AI部分出現錯誤,或是繪製畫面時若發生錯誤時,驅動程 式很可能會直接捨棄這些畫格,若是某特定畫格的複雜度太高,其繪圖時間超過系統緩衝 容忍的上限,也會被捨棄不予繪製,形成遺失畫格。 侏儒畫格則只會發生於多GPU的環境,當其中某一GPU在繪圖時發生錯誤時,由於其他GPU 並不會即時知道這個狀況,所以其他GPU仍會照常運作、輸出影像,此現象會造成該不正 常畫格出現在螢幕的時間非常短,並造成畫面撕裂。 由於FRAPS偵測的訊號為運算呼叫,當遺失或侏儒畫格產生時,運算呼叫早已送出,所以 仍會被計算為完整的1幀,但是它們並不會正常顯示於螢幕,將會造成測試成績與實際觀 看的誤差。 ▲若將各畫格的處理過成簡化成此示意圖,就可以看到FRAPS的測量方式雖然可以測得效 能表現(整體處理的畫格數量一樣),但可能無法精準測出畫面停頓。 FCAT:測量輸出端更精準 為了要改善FRAPS等工具無法測量最終輸出畫面情況的缺陷,NVIDIA開發了FCAT(Frame Capture Analysis Tool,畫格擷取分析工具),透過外部擷取設備錄下遊戲畫面並進行 分析,找出FRAPS無法檢測的瑕疵。 在遊戲畫面置入色條 FCAT的運作原理很簡單,首先程式會在Overlay顯示層中,在每一個畫格的左側加入從上 到下跨越畫面的色條,這些色條會遵照畫格順序更改顏色,比方說第1個畫格是白色,第2 個畫格是綠色,第3個畫格是藍色等,其用途為標記各畫格的身份與出現順序。 接著FCAT系統會將遊戲畫面錄下來,並透過軟體分析色條,判讀各畫格顯示的時間。特別 的是它並非使用軟體方式錄製影片,而是讓顯示卡將畫面輸出至外部擷取設備,再進行錄 影動作。從外部錄影的原因很簡單,透過這種方式錄影,不會受到任何軟體或是API架構 限制的干擾,能夠測量到真實顯示於螢幕的狀況,而不像FRAPS只能測量present call的 數量。 ▲當FCAT的Overlay工具開始運作後,會在輸出畫面左側貼上色條,分析工具就可依色條 出現的順序及長度,推算畫面顯示狀況。 ▲FCAT會在各畫格左側依序置入不同顏色,在分析時就可以透過影像識別軟體,依據顏色 的分佈判讀各畫格顯示的時間。 Video Overlay可以堆疊圖層 Video Overlay是電腦處理顯示畫面過程的一環。目前的顯示卡大多具有專屬的緩衝區, 用於儲存要輸出的畫面,我們可以把這個緩衝區想像成畫布,各程式可以透過Video Overlay,在畫布貼上圖層,此時顯示卡只需處理前景物件,而不需要重繪整幅畫面。 Video Overlay對於圖型使用者介面來說相當重要,以Windows為例,如果不採用Video Overlay,那麼在游標、視窗移動的時候,顯示卡就必需不斷重繪整個畫面,如果有 Video Overlay的協助,系統只需重繪移動的物件即可。在FCAT中,各畫格左側的色條, 就是透過Video Overlay貼到輸出畫面上。 測量眼睛看到的畫面 FCAT的終極目標,就是原汁原味地測量使用者透過螢幕所看到的遊戲畫面,透過外部影像 擷取設備,就能避開API、驅動程式與顯示卡硬體間,繁複作業流程產生延遲的影響,提 供更準確的數據,以利於評估顯示畫面實際的品質,也能夠確實測出顯示於螢幕的FPS表 現。 NVIDIA表示FCAT的開發時間已經超過2年,公司內部也於研發產品時,使用FCAT分析與改 進顯示卡的表現。目前NVIDIA官方已經將FCAT軟體釋出,供所有人(包括競爭對手)使用 FCAT測試自己電腦的表現,官方也鼓勵使用者自行修改與再發行。不過筆者認為這項決策 針對性相當明顯,就是要攻擊競爭對手的弱點。 ▲FCAT測量的目標,是顯示卡將畫面繪製完成後輸出的畫面,相較於FRAPS測量Present Call,可以更準確反映使用者所見的畫質。 -------------------------------------------------------- 之後就是產品介紹 就不貼了 不錯的文章 可以看看 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.125.238.141

06/21 17:46, , 1F
快讓升頻補張專利進到顯卡比較快 遊戲60張習慣以後
06/21 17:46, 1F

06/21 17:47, , 2F
看影片超級痛苦 尤其是遠景帶過 畫面超撕裂 眼睛超痛
06/21 17:47, 2F

06/21 19:27, , 3F
早就有了 關鍵字SVP 只是那東西需要大量CPU效能來演算
06/21 19:27, 3F

06/21 19:30, , 4F
Smoothvedio project
06/21 19:30, 4F

06/26 22:43, , 5F
沒錯SVP potplayer有支援但超難跑 要一起寫去建議嗎
06/26 22:43, 5F

08/02 19:29, , 6F
意思是說以後要多準備一個鏡頭對著螢幕?
08/02 19:29, 6F
文章代碼(AID): #1Hm_9L6r (VideoCard)
文章代碼(AID): #1Hm_9L6r (VideoCard)