《Real Time Rendering》第二章 圖形渲染管線總結
管線的結構
應用層(The Application Stage)
應用層是有應用驅動的,運行在CPU上的程序。例如:碰撞檢測(collision Detection)、全局加速度、動畫、物理模擬等
幾何層(The Geometry Stage)
處理圖形的變形(transform)和投影(projection),決定圖形的形狀、位置和屬性,在GPU上運行
模型視角變化
- 模型的坐標從Model Space轉化到World Space
- 坐標從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遊戲將幫助更多中風患者擺脫後遺症