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畫面