Unity的Vsync Count垂直同步原理剖析

2021-07-08 21:51:36 字數 1882 閱讀 1009

大家在做unity遊戲開發 或 玩遊戲的時候應該注意到了「垂直同步」這個名詞。現在很多遊戲特效設定了裡邊都有這個選項,那麼到底是開啟還是關閉垂直同步?

垂直同步是什麼意思

,有什麼作用呢?

進入遊戲後在遊戲的畫面設定裡邊一般都會有垂直同步的開關選項的,如圖:

垂直同步是什麼意思?

垂直同步又稱場同步(vertical hold),從crt顯示器的顯示原理來看,單個象素組成了水平掃瞄線,水平掃瞄線在垂直方向的堆積形成了完整的畫面。顯示器的重新整理率受顯示卡dac控制,顯示卡dac完成一幀的掃瞄後就會產生乙個垂直同步訊號。我們平時所說的開啟垂直同步指的是將該訊號送入顯示卡3d圖形處理部分,從而讓顯示卡在生成3d圖形時受垂直同步訊號的制約。

垂直同步的作用:

簡單來說垂直同步的作用是防止畫面撕裂。因為畫面的渲染不是整個畫面一起渲染的,是逐行或者逐列渲染。如果關閉垂直同步,而

電腦配置

不夠,則畫面在高速移動中會出現這一畫面還沒渲染完成就開始下一畫面的撕裂情況。

開啟與關閉垂直同步的主要區別在於那些高速執行的遊戲,比如實況,fps遊戲,開啟後能防止遊戲畫面高速移動時畫面撕裂現象,當然開啟後如果你的遊戲畫面fps數能達到或超過你顯示器的重新整理率,這時你的遊戲畫面fps數被限制為你顯示器的重新整理率。你會覺得原來移動時的遊戲畫面是如此舒服,如果達不到會出現不同程度的跳幀現象,fps與重新整理率差距越大跳幀越嚴重。關閉後除高速運動的遊戲外其他遊戲基本看不出畫面撕裂現象。關閉此選項畫面流暢程度會有一定的提高。

為什麼是否關閉垂直同步訊號會影響我們cs中的fps數值?道理一點都不複雜,首先我們平時執行作業系統一般螢幕重新整理率是多少?大概一般都是在85上下吧,那麼顯示卡就會每按照85的頻率時間來傳送乙個垂直同步訊號,訊號和訊號的時間間隔是85的解析度所寫一屏影象時間。

如果我們選擇「等待垂直同步訊號」(也就是我們平時所說的「垂直同步開啟」),那麼在遊戲中,或許強勁的顯示卡迅速的繪製完一屏的影象,但是沒有垂直同步訊號的到達,顯示卡無法繪製下一屏,只有等85單位的訊號到達,才可以繪製。這樣fps自然要受到作業系統重新整理率執行值的制約。

而如果我們選擇「不等待垂直同步訊號」(也就是我們平時所說「關閉垂直同步」),那麼遊戲中作完一屏畫面,顯示卡和顯示器無需等待垂直同步訊號,就可以開始下一屏影象的繪製,自然可以完全發揮顯示卡的實力。

但是,不要忘記,正是因為垂直同步的存在,才能使得遊戲程序和顯示器重新整理率同步,使得畫面平滑,使得畫面穩定。取消了垂直同步訊號,固然可以換來更快的速度,但是在影象的連續性上,效能勢必打折扣。這也正是很多朋友抱怨關閉垂直後發現畫面不連續的理論原因!

什麼是畫面撕裂:

畫面撕裂可以簡單的理解為,這一幀的資料打進顯示器,上一幀的還沒消去。結果就是畫面上面和下面顯示不同步。

其實影象顯示是一張一張的高速的覆蓋,形成影像。而通常說的幀數,就是指每秒重新整理影象的次數。計算機算出結果就要渲染在螢幕上,而渲染和算出的花費時間是不一樣的,

通常算的會非常快,而渲染要慢的多。開了垂直同步,計算機就會等待上一張渲染完成後才會發出開始下一張渲染的命令;不開垂直同步,那麼計算機就急不可待的想把算好的結果渲染在螢幕上,這樣就容易出現上一張還沒有渲染完,又來新的圖來覆蓋,時間差大到一定程度就會出現螢幕撕裂。

下邊是一張關於畫面撕裂的例子(實際情況,沒有圖中這麼誇張的)

什麼情況下開啟或關閉垂直同步:

在玩fps類遊戲時,如果幀數過高畫面有撕裂的話就會感覺頭痛頭暈。此時就需要開啟垂直同步,以保持畫面輸出的穩定。一般遊戲建議開垂直,保護顯示卡,降低功耗,而普通的60幀與在高的幀數已經無法用肉眼直接看出區別了,不影響遊戲體驗。除非你的顯示卡效能非常低,不開垂直遠遠不能達到螢幕重新整理率的幀數,這種情況下關閉垂直同步,可以一定程度上減小顯示卡的負擔,讓畫面更加流暢一些。

所以說一些低配置的手機,開垂直同步實在是蛋疼,建議關閉。

Unity 查詢unity內建資源的工具

大致步驟 1 找到unity所有預設體和材質資源 2 拿到這些資源的依賴檔案 3 找到所有 依賴檔案裡的 texture shader material sprite 3.1 拿到依賴檔案裡的預設體 載入出來 遍歷元件 3.2 拿到依賴檔案裡的material 載入出來 檢視shader 和貼圖 3...

unity學習 unity技術

我們今天學習了,類和方法,如何給變數進行定義乙個類,還有就是把這個類進行呼叫 什麼叫作成員變數 表明物件的狀態,也稱之為例項變數。定義的格式 修飾符 資料型別 變數名 修飾符 private,protected,public預設 friendly 資料型別 基本資料型別,陣列,類,介面。宣告 此篇文...

unity學習 unity技術

今天,上午是在學校度過的。我們請了一天的假,從北京來到了保定,我們培訓老師,作為我們的後備軍,也來到了學校,想問問有沒有其他同學,也有這個unity開發興趣愛好培養,我們剛到學校就來到教室,先照的一寸畢業 再來就是到教室寫畢業生調查表,忙活了半天,才把這幾件瑣碎事辦完,一班在乙個小時內就完成了所有任...