遊戲開發Shader篇-->1.Shader概述及渲染繪圖管線原理 (Unity)
來自專欄給遊戲開發小白的日常筆記
近期有時間的話準備整理一下最近所學的一些小知識吧, 關於Unity中Shader的部分
首先我們要知道Shader的工作原理:
Shader 相當於一個加工廠 , 紋理,數據,顏色等等相當於原材料
Shader的工作流程是 將材料通過加工展現在材質上的過程
而Shader在根據不同的情況會很多種類型, 在使用的時候也會有區別 , 像在三維網格上使用的方式和圖片上使用的方式也會有很大的區別
在Unity中也給我們提供了自帶的Shader類型,如下圖所示: 有移動端的, 地形用的, 環境用的, 粒子特效用的, 天空盒子用的, UI用的 ,圖片用的 等等
像我們平時使用在Unity中將材質球拖到物體上可以對物體進行材質賦值的原理是這樣的
3D物體的本質是一個個的網格組成的面組成的,在過拽過去後unity會自動檢測使用的加工廠是什麼, 而材質球上附有數據等原材料
關於渲染繪圖管線部分
先放思維導圖-->核心目的: 將3D物體渲染到2D的屏幕上
渲染繪圖管道的流程分為四步: 定點處理->面處理->光柵化->像素輸出
1: 首先我們來看定點處理, 簡單的介紹一下這些坐標系分別代表什麼
-->本地坐標系
-->世界坐標系: 世界的中心(0,0,0) 可以得到相對於世界的每個定點的坐標
-->觀察坐標系: 攝像機的位置作為原點, 攝像機的上方下方前方可以實現一個坐標系
-->投影坐標系(2D坐標系): 相對於屏幕上面的坐標位置
Unity窗口就是一個屏幕, 觀察坐標系還是一個3D視角,但我們所看到的畫面其實是一個2D的平面,只是有了陰影,有了光照,有了3D模型的角度渲染,我們看起來比較有3D點感覺。即觀察坐標系(3D)到投影坐標系(2D)到過程。
通過這些坐標系可以得到物體每一個頂點的位置
2:面處理
1) 面組裝: 將點連線得到的組成物體的平面
2) 面截取與面剔除: 如果屏幕的大小裝不下物體的時候,會對物體進行截取, 將屏幕外的 面進行剔除, 只渲染屏幕內部的東西
2) 光柵化:光柵化相當於把物體放在網格上, 每個格子都相當於一個像素, 將截取後的物體進行渲染, 將向量轉化為點陣像素的過程稱為光柵化 (在屏幕解析度比較低的時候, 放大後圖片會出現鋸齒就是這樣的原理)
最後一步就是像素處理: 將物體的信息進行輸入, 將像素的顏色 透明度等進行著色輸出,
結束語: 遊戲開發被稱為第九藝術, 而計算機圖形學是遊戲作為藝術層面的核心, 今天跟大家分享一些淺顯的渲染繪圖管線希望能對新手學習遊戲開發起到一定的幫助, 如果文章內容有錯誤希望能指出, 後面會慢慢更新Shader的一些知識, 敬請關注!
推薦閱讀: