chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

三維場景轉(zhuǎn)化為一幅二維圖像的過程

Dbwd_Imgtec ? 來源:未知 ? 作者:李倩 ? 2018-07-13 17:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

三維圖形渲染管線就是將三維場景轉(zhuǎn)化為一幅二維圖像的過程。

圖像中物體所處位置及外形由其幾何數(shù)據(jù)和攝像機的位置共同決定,物體外表是受到其材質(zhì)屬性、光源、紋理及著色模型所影響。

管線過程由3個大的階段組成:

Application(應(yīng)用程序階段):運行在CPU上,能被開發(fā)者完全控制,該過程所做操作包括:

① 準(zhǔn)備場景數(shù)據(jù)

加載模型:Mesh、Material、Shader、Texture(硬盤 --> 內(nèi)存 --> 顯存)

攝像機(位置、朝向、視錐體)

光源(位置、類型等參數(shù)信息)

② 裁剪和剔除 :視錐裁剪、背面剔除、遮擋剔除 (Occlusion Culling)

③ 計算模型視圖矩陣

④ 設(shè)置渲染狀態(tài)(RenderState)

渲染管線內(nèi)部維護著一些狀態(tài)值。在我們調(diào)用渲染API函數(shù)進行繪制之前我們需要設(shè)置這些狀態(tài)值。

這些狀態(tài)值指導(dǎo)GPU如何渲染我們傳遞到顯存的模型和紋理數(shù)據(jù)。我們稱這些狀態(tài)值為“渲染狀態(tài)(Render States) ”。

渲染狀態(tài)包括Shader、Texture、Material、Light內(nèi)部定義的各種狀態(tài)等

最后,發(fā)起DrawCall調(diào)用

Geometry(幾何階段):負(fù)責(zé)與每個渲染圖元打交道,進行逐頂點、逐多邊形的操作。

其重要任務(wù)是把頂點坐標(biāo)變換到帶有深度的屏幕空間中,再交給光柵器進行處理。

可進一步分割成:模型視圖變換,頂點著色,[曲面細(xì)分],[幾何著色],投影,裁剪及屏幕映射

模型變換:將模型從模型空間變換到世界空間

視圖變換:將各個模型從世界空間變換到眼空間(攝像機處于原點)

通常會把這兩個變換矩陣結(jié)合成modelview矩陣,并將這個過程稱之為模型視圖變換

頂點著色器:主要功能是修改頂點屬性。如:通過傳入模型視圖矩陣(MVP)進行頂點空間變換(位置屬性)、逐頂點光照(顏色屬性)、紋理坐標(biāo)變換(uv屬性)等

頂點著色器的處理單元是頂點,也就是說,輸入進來的每個頂點都會調(diào)用一次頂點著色器。

頂點著色器只能對輸入頂點的相關(guān)屬性進行修改、創(chuàng)建和忽略,不可以創(chuàng)建或銷毀任何頂點,而且無法得到頂點與頂點間的關(guān)系。

輸入一般是一個變換矩陣和一個相對坐標(biāo);輸出為眼空間中的坐標(biāo)及每個頂點所附帶的其他屬性,如顏色、紋理坐標(biāo)

曲面細(xì)分著色器:用于細(xì)分圖元,分為3個階段。

Control Shader,負(fù)責(zé)把控后續(xù)階段的初始化操作,例如細(xì)化程度(可編程

處理Control階段的輸出,細(xì)化Patch數(shù)據(jù)(不可編程)

Evaluation Shader的輸入為Patch數(shù)據(jù);輸出數(shù)據(jù)為頂點著色器所應(yīng)輸出的數(shù)據(jù),但是是批量的(可編程)

幾何著色器:輸入是1個圖元,輸出是N個圖元(N>=0)

通過Shader程序可以指定Geometry Shader對頂點信息進行增減。還有,因為實際增減的是圖元頂點,所以對各種的線段、多邊形、粒子等圖元也可以進行增減。

利用Geometry Shader的各種方法被創(chuàng)造出來,因為可以自由的生成多邊形,那么就可以在地面上生長出草的多邊形,或者讓3D角色生長出毛發(fā)等是最基本的使用方法。

在游戲中,還可以把不需要做邏輯交互處理的例如火花等特效的表現(xiàn),使用Geometry Shader來生成。

注:Geometry Shader通常是在display driver中實現(xiàn)的,也就是說其實是由CPU負(fù)責(zé)計算,當(dāng)重新返回GPU的VS時,對流水線的影響很大,所以Geometry Shader的實際效能并不高,甚至是非常低

投影:分為透視投影與正交投影;在眼空間將模型從三維空間投影到二維平面(D3D投影平面為z=1.0,OpenGL為z=-1.0;為了便于理解,可將其定義為視景體近裁截面)

注:上圖為眼空間,D3D為左手系,OpenGL為右手系

投影完成后,會得到歸一化的設(shè)備坐標(biāo)(Normalized Device Coordinates,NDC),方便下一步進行硬件裁剪

歸一化x、y分量到[-1.0, 1.0]

歸一化z深度值(D3D:[0.0, 1.0] OpenGL:[-1.0, 1.0])注:近裁截面為最小深度、遠(yuǎn)裁截面為最大深度;

裁剪:將那些不在攝像機視野內(nèi)的頂點裁剪掉,并剔除某些三角圖元面片

屏幕映射:將每個圖元的x、y坐標(biāo)從NDC轉(zhuǎn)換到屏幕空間

注:D3D將屏幕左上角作為原點,x軸向右,y軸向下;OpenGL將屏幕左下角作為原點,x軸向右,y軸向上

Rasterizer(光柵化):對上個階段得到的圖元各頂點進行插值(z深度值、法線方向、紋理坐標(biāo)、顏色等)來產(chǎn)生屏幕上的像素,并渲染出最終的圖像。

光柵化的任務(wù)主要是決定每個渲染圖元中的哪些像素應(yīng)該被繪制在屏幕上

三角形設(shè)置:對三個頂點插值計算三角形邊上的像素

三角形遍歷:掃描三角形邊上的像素來插值計算整個三角形內(nèi)的像素

片元著色器:逐片元的進行著色計算(即逐像素光照)。該階段可以完成很多重要的渲染技術(shù) 如:紋理采樣

逐像素、逐頂點光照差異性主要體現(xiàn)在對于非精細(xì)模型,在執(zhí)行逐頂點光照時,由于點距較大,在進行顏色線性插值的過程中,無法精細(xì)平滑過渡,導(dǎo)致效果變差。

另外逐像素光照可以在渲染時添加并不存在的表面細(xì)節(jié)。如通過bump貼圖或normal貼圖,在原本平坦的表面表現(xiàn)出近似的凹凸效果。

當(dāng)然,逐像素的計算量要比逐頂點要大

逐片元操作:有時也被稱為光柵操作(raster operations ,ROP)或混合操作(blend operations),通過設(shè)置來淘汰一些不合格的片元以及如何合并問題

如果一個片元通過了所有的測試,新生成的片元才能和顏色緩沖區(qū)中已存在的像素顏色進行Alpha混合,并寫入顏色緩沖區(qū)

? Alpha測試:

注1:并非所有顯卡都支持Alpha測試特性,使用前需要檢查顯卡是否有該能力

注2:由于大量片元會在該階段舍棄,Alpha測試可提高含大量透明物件場景的性能

? 模板測試:

注1:若建立模板緩沖區(qū)為8bits,則模板值的范圍為:[0, 255]的整數(shù);其初始值為清理模板緩沖區(qū)的所設(shè)置的值

注2:若在模板測試時,關(guān)閉了深度測試,則深度測試始終通過

? 深度測試:

注1:深度值范圍(D3D:[0.0, 1.0] OpenGL:[-1.0, 1.0]),建立深度緩沖區(qū)位數(shù)越多,則深度值的精度就會越高;其初始值為清理深度緩沖區(qū)的所設(shè)置的值

注2:關(guān)閉了深度測試,意味著該片元始終通過深度測試

? Alpha混合:

FrameBuffer(幀緩沖)

幀緩沖器(frame buffer):在顯卡中硬件實現(xiàn),用于存放渲染的最終結(jié)果。分為:單緩沖、雙緩沖(double buffering)、三重緩沖(Triple Buffering)

單緩沖:各個物體的渲染會直接畫在屏幕上,效率比較低,由于能看到中間繪制過程,會導(dǎo)致屏幕不斷閃爍。一般只用于顯示非動態(tài)的圖像

雙緩沖(double buffering):繪制是在一個后備緩沖器(backbuffer)中以離屏的方式進行的。一旦在后備緩沖器中完成繪制,

通過交換指令(D3為Present、OpenGL為SwapBuffer)就可將后備緩沖器中的內(nèi)容與已經(jīng)在屏幕上顯示過的前臺緩沖器(frontbuffer)中的內(nèi)容進行交換,使得一個完整的幀顯示在屏幕上。

完成交換后,后備緩沖器變?yōu)榍芭_緩沖區(qū),而前臺緩沖區(qū)變?yōu)楹髠渚彌_區(qū),為下一幀的繪制工作提前做好準(zhǔn)備。

我們將前后緩沖區(qū)功能互換的行為成為提交(Presenting)。

由于只是將前臺緩沖區(qū)的指針和后備緩沖區(qū)的指針做一個簡單的交換,提交是一個運行速度很快的操作。

// OpenGL單緩沖glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);glFlush(); //單緩沖的刷新模式;// OpenGL雙緩沖glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);glutSwapBuffers(); //雙緩沖的刷新模式;

三重緩沖(triple buffering):一個前臺緩沖區(qū),兩個后備緩沖區(qū)。

在開啟了VSync垂直同步時,若游戲的FPS低于顯示器刷新頻率,三重緩沖可緩解卡頓現(xiàn)象,然而由于存在2個后備緩沖區(qū),三重緩沖會導(dǎo)致畫面有一幀的延遲。(見下文說明)

顯示器

以CRT顯示器為例(液晶顯示器原理類似),CRT的電子槍從左到右,從上到下進行逐行掃描,掃描完成后顯示器就呈現(xiàn)一幀畫面,隨后電子槍回到初始位置繼續(xù)下一次掃描。

為了把顯示器的顯示過程和系統(tǒng)的視頻控制器進行同步,顯示器(或者其他硬件)會用硬件時鐘產(chǎn)生一系列的定時信號。

當(dāng)電子槍換到新的一行,準(zhǔn)備進行掃描時,顯示器會發(fā)出一個水平同步信號(horizonal synchronization),簡稱 HSync;

而當(dāng)一幀畫面繪制完成后,電子槍回復(fù)到原位,準(zhǔn)備畫下一幀前,顯示器會發(fā)出一個垂直同步信號(vertical synchronization),簡稱 VSync。

顯示器通常以固定頻率(如60HZ)進行刷新,這個刷新率就是 VSync 信號產(chǎn)生的頻率。

將顯卡與顯示器的刷新頻率通過一個稱為VSync的信號同步起來,保證顯示器上顯示的是一幀完整的畫面,來解決Tearing(撕裂)現(xiàn)象(多幀畫面同時繪制在顯示器上)。

假設(shè)游戲的FPS是100,顯示器的刷新頻率是75Hz,顯卡將比顯示器快1/3;這意味著,在1個顯示器刷新周期內(nèi),顯卡將寫入4/3的幀數(shù)據(jù),也就是說,下一幀的1/3覆蓋在前一幀之上;

當(dāng)然,隨著系統(tǒng)運行,1/3這個比例會發(fā)生變化,1/3,2/3,1,1/3,循環(huán);這種幀與幀之間的不完全覆蓋重合現(xiàn)象就是撕裂現(xiàn)象。

D3DPRESENT_PARAMETERS md3dPP;md3dPP.PresentationInterval = D3DPRESENT_INTERVAL_ONE; // 開啟垂直同步

當(dāng)開啟了垂直同步,若游戲FPS高于顯示器刷新頻率時,顯卡會將一部分時間浪費在等待上,顯卡必須等待VSync信號的到來才能將繪制好的畫面推送給顯示器,這也使得游戲的最大FPS下降為顯示器的刷新頻率

這避免了顯卡做一些無用的工作,降低顯卡的功耗;然而,VSync技術(shù)也有缺點,會導(dǎo)致玩家輸入的響應(yīng)出現(xiàn)延遲;另外,若游戲的FPS低于顯示器刷新頻率,那么系統(tǒng)的FPS將迅速下降為顯示器刷新頻率的分?jǐn)?shù)倍上,加劇畫面卡頓(Shutter)

Triple Buffering(三重緩沖)可以緩解這一問題,示意圖如下:

然而,從上圖可以看出由于存在2個后備緩沖區(qū),三重緩沖會導(dǎo)致畫面有一幀的延遲。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11187

    瀏覽量

    221253
  • 攝像機
    +關(guān)注

    關(guān)注

    3

    文章

    1737

    瀏覽量

    62447
  • 三維
    +關(guān)注

    關(guān)注

    1

    文章

    519

    瀏覽量

    29770

原文標(biāo)題:三維圖形渲染管線

文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    二維三維Gauss隨機粗糙面的Monte Carlo仿真

    二維的推導(dǎo)方法擴展到三維,建立了三維Gauss隨機粗糙面模型?!娟P(guān)鍵詞】:高功率微波;;Monte Carlo方法;;隨機粗糙面;;仿真【DOI】:CNKI:SUN
    發(fā)表于 05-28 13:41

    二維數(shù)組轉(zhuǎn)換為RGB圖像問題

    大家好,我現(xiàn)在是通過建立個512×512的二維數(shù)組生成一幅黑白圖像,但是現(xiàn)在我又要通過這個二維數(shù)組生成
    發(fā)表于 09-17 14:21

    三維動畫制作過程之間的聯(lián)系

    ,動畫始終繚繞這風(fēng)格進行發(fā)展變化,從二維走到三維,動畫師們始終在盡力堅持動畫的個性。絕大多數(shù)的三維動畫都屬于這作風(fēng)作品。(3)采取
    發(fā)表于 11-15 14:28

    二維傅里葉變換后怎樣求波數(shù)?

    我有一幅海浪的遙感圖像,圖像分辨率為2.5m,裁出其中個512像元*512像元的區(qū)域,對其做二維傅里葉變換,想求該區(qū)域海浪的波數(shù)K。(有文
    發(fā)表于 10-20 18:43

    三維逆向工程的成果及應(yīng)用案例

    `三維逆向工程的成果及應(yīng)用案例何為逆向工程?為適應(yīng)現(xiàn)代先進制造技術(shù)的發(fā)展,需將實物樣件或手工模型轉(zhuǎn)化為Sence數(shù)據(jù),以便利用快速成形系統(tǒng)、計算機輔助系統(tǒng)等對其進行處理,并進行修改和優(yōu)化。逆向工程
    發(fā)表于 03-02 15:12

    三維觸控技術(shù)突破“向箔”的束縛

    `| 突破向箔的束縛:三維觸控然而,人們對觸摸屏交互方法的探索并沒有到此為止。這里不妨再梳理下手機與用戶交互方式的進化過程。最初,用戶只能通過按手機上若干位置固定的按鍵來操作手機,
    發(fā)表于 12-19 15:53

    二維數(shù)組怎么轉(zhuǎn)化為

    二維數(shù)組怎么轉(zhuǎn)化為
    發(fā)表于 05-04 17:04

    如何用labview程序?qū)?b class='flag-5'>二維圖片轉(zhuǎn)化為比特序列?

    如何用labview程序?qū)?b class='flag-5'>二維圖片轉(zhuǎn)化為比特序列?
    發(fā)表于 05-16 11:13

    在LABVIEW中怎么將二維數(shù)組轉(zhuǎn)化為數(shù)組

    `在LABVIEW中怎么將二維數(shù)組轉(zhuǎn)化為數(shù)組并且如何將數(shù)據(jù)顯示到波形圖中... 并且如何將數(shù)據(jù)顯示到波形圖中在“數(shù)組”中有“重排數(shù)組數(shù)
    發(fā)表于 02-14 16:56

    三維設(shè)計應(yīng)用案例

    CAD是目前工業(yè)制造產(chǎn)品設(shè)計的重要軟件之,廣泛應(yīng)用于機械、建筑等領(lǐng)域。而常用的CAD軟件,也就是所謂的三維制圖軟件,較二維的圖紙和二維的繪圖軟件,
    發(fā)表于 07-03 07:06

    安徽三維動畫制作和二維動畫有哪些區(qū)別呢?(

    三維動畫制作中,“”這個字,是個幾何學(xué)和空間理論的基本概念。構(gòu)成空間的每個要素,如長度、寬度、高度,被稱之為
    發(fā)表于 01-22 10:02

    安徽三維動畫制作和二維動畫有哪些區(qū)別呢?(

    二維動畫制作制作和三維動畫制作除了按照在制作過程中攝像機或者虛擬攝像機是否可以任意進行旋轉(zhuǎn)的區(qū)別外,主流的二維動畫制作(不包括平面材料動畫制作)和
    發(fā)表于 01-25 10:34

    基于二維激光測距儀的三維模型配準(zhǔn)研究

    在自主移動機器人上安裝二維激光測距儀和內(nèi)置室內(nèi)小型電機云臺。將激光的平面信息和電機云臺的高度信息結(jié)合構(gòu)建三維模型。通過RANSAC算法從三維點云陣中提取平面。并在
    發(fā)表于 09-16 14:46 ?70次下載
    基于<b class='flag-5'>二維</b>激光測距儀的<b class='flag-5'>三維</b>模型配準(zhǔn)研究

    、二維三維電機的性能分析

    根據(jù)電機試驗項目的不同,般會獲得不同的測試結(jié)果圖表。這些圖表可以根據(jù)涉及的電機參數(shù)變量,簡單劃分為種:/二維/
    發(fā)表于 03-24 09:36 ?4167次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>維</b>、<b class='flag-5'>二維</b>、<b class='flag-5'>三維</b>電機的性能分析

    卷積、二維卷積、三維卷積具體應(yīng)用

    由于計算機視覺的大紅大紫,二維卷積的用處范圍最廣。因此本文首先介紹二維卷積,之后再介紹卷積與三維卷積的具體流程,并描述其各自的具體應(yīng)用。
    發(fā)表于 05-08 10:29 ?5349次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>維</b>卷積、<b class='flag-5'>二維</b>卷積、<b class='flag-5'>三維</b>卷積具體應(yīng)用