1、shader簡介、渲染管線


vs對於shader的插件:http://blog.shuiguzi.com/shaderlabvs-release-page.html

 

計算機有一塊重要的組成部分,就是“顯卡”,大家玩游戲的話,肯定是會配置一塊好的顯卡,

因為3D游戲繪制過程的計算大部分都是由顯卡來完成的,而實際上CPU工作的負荷相對是比較低的,

那么顯卡到底做了什么呢,它是接受CPU傳遞給它的一個3D模型,那么顯卡會通過一個固定的處理流程之后,

最終會返回給CPU一個2D的圖形,中間顯卡處理的過程,我們叫它“渲染管線流程”

渲染管線流程細分

1、頂點處理

2、面處理

3、光柵化

4、像素處理

 

一、頂點處理

(1)定點變換

將每個物體的位置轉換為世界坐標

 

我們知道一個FBX文件是由maya或者3Dmax這些軟件制作而成的,它其實是一個二進制文件,而這個二進制文件實際上存儲的是模型的坐標點

如果我們把一個fbx的模型拉近看一下,就能看到此模型上有很多的點和線

這個fbx文件存儲的就是這些點的坐標(x,y,z)以及存儲每個點跟哪個點相連的信息,有了這些坐標之后,再通過線段的連接,3個點就會成為一個面,

很多個這樣的面,最終就會組成為一個模型

在fbx存儲的都是相對於自己的一個坐標,我們要把它自己的一個坐標轉換成一個全局的坐標,也就是以世界作為參考的一個點!

(2)觀察坐標系-投影坐標系

將每個物體從世界坐標投影到觀察者的投影平面上(也就是說把3D的坐標轉換成2D的坐標)

每個物體的世界坐標相當於Scene場景視圖,觀察者的投影平面相當於Game視圖

二、面處理

(1)面的組裝

        就是每個點對應相連接成面之后,面與面之間再組裝成模型

(2)面的剔除

        就是攝像機看不到的模型,那么顯卡就沒有必要去渲染它們了,所以這個模型的所有面都會被剔除掉,它不會參與計算,能夠優化顯示性能

(3)面的截取

        攝像機、包括我們人所看到的范圍實際上都是一個椎體,人的眼睛為出發點,是一個頂點,眼睛會有一個角度,視角能看到一個最遠的地方

        因為人能看到的區域是一個椎體,所以3D引擎里面拿了一個攝像機的椎體視角范圍來模擬人看到的范圍

        有可能某些模型的面比人看到的范圍還大,那么就會在邊緣處就會做一些裁剪,這就是面的截取 

三、光柵化

將以向量為基本的面轉換成一個個點陣形式的像素集合

模型相當於是一個矢量(既有大小又有方向的量)的內容,模型上由某一個點到某一個點之間,它是一個距離,

但是實際上,用戶在設備上最終輸出的都是以像素點來輸出的,會把一個平面拆分成一個一個的像素點,每一個像素點在后面會做單獨的處理,

如果一個像素點區域被兩個模型所占,如果一個模型為黃色,一個為紅色,那么最終這個像素只能以一種顏色進行輸出,

光柵化就會做這樣的處理,讓一個像素點上只會出現一種顏色

Pixel:像素      Triangle:三角形      Covered Pixels:覆蓋的像素

四、像素處理

將以向量為基本的面轉換成一個個點陣形式的像素集合

      對每個像素區域進行着色

      對像素貼上貼圖

      最終形成2D畫面


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM