《Real Time Rendering》第二章 圖形渲染管線總結

《Real Time Rendering》第二章 圖形渲染管線總結

管線的結構

應用層(The Application Stage)

應用層是有應用驅動的,運行在CPU上的程序。例如:碰撞檢測(collision Detection)、全局加速度、動畫、物理模擬等

幾何層(The Geometry Stage)

處理圖形的變形(transform)和投影(projection),決定圖形的形狀位置屬性,在GPU上運行

模型視角變化

  1. 模型的坐標從Model Space轉化到World Space
  2. 坐標從World Space轉化到View Space/Camera Space

頂點著色(Vertex Shading)

利用光照、材質等計算頂點的的信息

投影

把model等投影到2d平面上。主要有2中模式正交投影透視投影

+ 正交投影(orthographic):平行的線,投影出來後,依然是平行的

+ 透視投影(perspective):離鏡頭越遠的線,投影越短

裁剪

移除屏幕外的不需要渲染的物體,對於一半在屏幕外,一半在屏幕內的物體,重新構造

屏幕投影

構建視窗屏幕的映射關係

對於像素點(整數)和位置(浮點數)之間的映射,OpenGL和Directx使用不同的方式:

+ OpenGL: 0.0表示像素(Pixel)的中心。(像素[0,9]表示的區間是[-0.5, 9.5)

+ Directx:0.5表示像素(Pixel)的中心。(像素[0,9]表的就是區間[0, 10)

柵格化層(The Rasterizer Stage)

幾何層生成的數據,逐像素生成圖片

三角形建立(Triangle Setup)

計算三角面的差異和其他數據(PS:不太明白具體指什麼,以後再補充)

三角形遍歷

找到每一個再三角形中的像素點,生成fragement

逐像素著色(Pixel Shading)

利用生成的fragment信息,逐像素填充信息。如:shader中的貼圖就在這個時候才完成的

合併/融合

這個階段不可編程,但是可以配置<br >

Pixel Shading生成的像素信息,存儲在了color buffer中。通過Z-buffer(depth buffer)來控制像素點的可見性

這裡透明物體必須在實體(opaque object)後渲染,並且從遠到近來渲染

+ alpha channel:讓特定透明度的fragment不要影響z-buffer

+ stencil buffer:又稱做raster operations(ROP)或者blend operations.用於生成特殊的效果

+ frame buffer/accumulation buffer:可用於實現**動態模糊,Depth Of Field,抗鋸齒,軟陰影等

+ double buffer(雙緩衝區):防治畫面抖動


推薦閱讀:

2018-5-17 JSP_Web_MVC開發(12)-response內置對象(Cookie)
藍海匯告訴您如何選擇自主開發和成熟軟體
《戰爭機器》之父的沉淪和他的名人效應丨遊戲講堂
這款AR遊戲將幫助更多中風患者擺脫後遺症

TAG:渲染 | 遊戲從業者 | 遊戲 |