国产精品2022不卡在线观看|青草国产福利视频免费观看|亚洲天堂日韩在线|日日摸夜夜添夜夜添97|亚洲伊人久久大香线蕉av|午夜性爽快免费视频播放

聯(lián)系我們

銷(xiāo)售直撥
     025-85550202;
     025-85550520;


master@csch.com.cn

技術(shù)咨詢(xún):
     025-85550520

duan@csch.com.cn

售后服務(wù)專(zhuān)線(xiàn):

     15251851604    

wu_yuyang@csch.com.cn

傳 真:025-85550303


深圳市中霍電子技術(shù)有限公司
地址:深圳市龍華新區龍華街道牛地埔村美滿(mǎn)圓小區
聯(lián)系人:顏安軍/副總
Mobile:18038070895
E-mail: szyanaj@csch.com.cn  
 

在渲染工作的一幀中,CPU與GPU都做了些什么?

 針對渲染導致的性能問(wèn)題,這個(gè)世界上是沒(méi)有一套萬(wàn)能的解決方案的。渲染的性能問(wèn)題涉及到許多因素,不僅僅是游戲本身,它也很大程度上取決于運行游戲的硬件和操作系統。重要的是我們要通過(guò)不斷的研究和實(shí)驗來(lái)解決這些性能問(wèn)題。
知道了渲染工作的流程以及階段可以幫我們更好的研究和解決渲染方面的性能問(wèn)題。這篇文章主要是介紹在渲染工作的一幀中,我們的CPU與GPU都做了些什么?
我們這里提到的 Object 指我們游戲中會(huì )被渲染的對象,任何掛有渲染組件 (Renderer Component) 的 GameObject 都將被引擎作為 Object 進(jìn)行渲染。
基本上,渲染工作可以分解為以下步驟:
① 中央處理器(CPU)進(jìn)行準備工作,比如哪些對象要被繪制,需要如何被繪制。
② CPU向圖形處理器(GPU)發(fā)送指示。
③ GPU根據CPU的指示進(jìn)行圖形的繪制。
接下來(lái)我們會(huì )針對這些步驟進(jìn)行更詳細的研究,這里主要是說(shuō)明一下在渲染工作中CPU與GPU所扮演的角色。
渲染工作我們也常稱(chēng)之為渲染管線(xiàn)。

在每一幀的渲染流程中, CPU 主要做了這些事:
① 確認場(chǎng)景中哪些對象需要被渲染,一個(gè)object只要在符合特定的規則才會(huì )被渲染。例如,當處于相機的視錐體內的對象可以被渲染,而超出(不在視錐體內)的部分則被剔除(Culled),不進(jìn)行渲染。
② CPU會(huì )收集這些將要被渲染的每一個(gè)對象的數據,并且整合成指令,即我們常說(shuō)的Draw Calls。一個(gè)Draw Call包含一個(gè)單獨的網(wǎng)格(mesh)數據和它將如何進(jìn)行渲染的信息。比如,需要對材質(zhì)使用哪些貼圖等。在某些情況下,使用相同的設置的object數據會(huì )被合并進(jìn)一個(gè)Draw Call。將不同的object數據合并到一個(gè)Draw Call的行為我們稱(chēng)之為 合批(Batching)。
③ CPU會(huì )為每一個(gè)Draw Call創(chuàng )建一個(gè)數據包叫做 batch,然而,batch中包含的數據不僅僅是draw call,還有一些數據由于與我們探討的渲染性能問(wèn)題無(wú)關(guān),因此就不在這里展開(kāi)。
一旦完成了batch工作,CPU接著(zhù)會(huì )進(jìn)行如下工作:
④ 發(fā)送一條指令給到GPU變更渲染狀態(tài)(Render State)。這個(gè)指令我們稱(chēng)為 SetPass Call。SetPass Call的作用是告訴GPU在渲染下一個(gè)材質(zhì)的時(shí)候該使用哪一種設置。SetPass Call僅當從前一個(gè)材質(zhì)到下一個(gè)材質(zhì)確實(shí)需要變更渲染狀態(tài)的情況下CPU才會(huì )發(fā)出。
⑤ CPU發(fā)送一條Draw Call指令給到GPU。Draw Call指示GPU按照SetPass Call定義的設置來(lái)對具體的材質(zhì)進(jìn)行渲染。
⑥ 某種情況下,你的batch可能包含不止一個(gè)渲染通道(pass),這取決于你的 shader 代碼中pass的代碼塊,一個(gè)pass代碼塊就需要GPU變更一次渲染狀態(tài)。所以,一個(gè)batch中每多包含一個(gè)pass,CPU就要新發(fā)送一次SetPass Call到GPU,然后再把Draw Call發(fā)送一次到GPU。
與此同時(shí), GPU 會(huì )進(jìn)行如下工作:
① GPU按照CPU的要求完成渲染任務(wù)。
② 如果當前任務(wù)是一個(gè)SetPass Call,那么GPU會(huì )變更當前的渲染狀態(tài)(Render State)。
③ 如果當前任務(wù)是一個(gè)Draw Call, GPU就渲染指定的材質(zhì)。這部分工作是分階段進(jìn)行,由shader 代碼中不同的部分決定。這部分比較復雜,在這里不進(jìn)行詳述,感興趣的朋友可以去看一下《Unity Shader 入門(mén)精要》這本書(shū),對于入門(mén)shader的同學(xué)比較有用,推薦一下。我們這里只需要知道shader中有一部分代碼叫做頂點(diǎn)著(zhù)色器(vertex shader),告訴GPU如何處理材質(zhì)的頂點(diǎn)數據,還有一部分代碼叫做片元著(zhù)色器(fragment shader),告訴GPU如何進(jìn)行逐像素工作(individual pixels)。
④ 以上GPU這部分工作會(huì )一遍遍重復執行直到完成CPU這一次渲染工作的全部指令。
那么現在大家懂了CPU 與 GPU 如何分工了嗎?
Copyright@ 2003-2025  南京信瑞譜傳感技術(shù)有限公司版權所有     

熱門(mén)導航電壓傳感器  霍爾電流傳感器  互感器  高精度電流傳感器  直流漏電流傳感器  直流電流變送器  霍爾傳感器工作原理 傳感器資料下載

           

        在線(xiàn)購買(mǎi)-直達淘寶店

     具體購買(mǎi)產(chǎn)品請聯(lián)系淘寶客服

(淘寶店拍買(mǎi)請聯(lián)系淘寶在線(xiàn)服務(wù),告知型號或在線(xiàn)經(jīng)理的姓名即可)

国产精品2022不卡在线观看|青草国产福利视频免费观看|亚洲天堂日韩在线|日日摸夜夜添夜夜添97|亚洲伊人久久大香线蕉av|午夜性爽快免费视频播放