ShaderLab教程系列(一)

2021-08-31 07:18:57 字數 1664 閱讀 7611

首先,第一步,我們先看shader有什麼作用。我們在場景裡面新建乙個cube。我們可以看到下圖:

在hierarchy中選中這個新建的cube,我們可以在inspector面板中看到

我們來做乙個小動作,通過photoshop建立一張很傻冒的圖,如下:

然後將該psd檔案複製到專案中,並托給當前的cube。我們會看到

至此,我們已經粗略的看到了shader的作用。那麼shader到底是什麼,他存在的意義是什麼,我們可以用它來做什麼。

接下來,我們首先需要的是重溫舊知識,溫故而知新是任意乙個可以正常呼吸正常吃飯的人必須掌握的本領。

我們遇到的第乙個問題是何為模型,如這個cube到底是什麼,他為什麼就是cube,沒有多乙個角,也沒有少乙個角。他的資訊是怎麼儲存的。何為模型,模型就是模型,有點廢話。那麼換個角度看問題,從程式角度看,模型到底是怎麼存在的。如cube為啥沒顯示成sphere。

模型=網格mesh+材質material。(此系列教程是shader,所以,此處不會引入bone相關的資訊,後續,有時間,來做動畫知識體系的時候,會介紹bone以及t-pose等概念。)網格mesh中儲存的資訊為頂點,三角面(3damax等傳統軟體可以任意凸多邊形,遊戲引擎中為了計算方便,就都整成了三角面。)如果你見過蒙古包或者類似的帳篷之類的東西,你可以想象下,我們搭建乙個帳篷,如果不是買的現成的帳篷的話,我們第一件事情是弄一些竹竿或者木棍之類的搭建出龍骨,然後把那個油布或者類似的東西往上面一包,問題解決。模型其實也是這個概念,mesh就相當於我們竹竿或者木棍搭建的龍骨,他需要儲存的資訊頂點(即那些竹子木棍的結點)、面(即那些點之間需要包油布)、紋理座標(每個點對應油布的哪乙個位置)、法線(這個有點抽象,即某個點反射光線的方向問題,主要用於視覺作用,對於shader來說,這個是重點)。材質球material就相當於油布,即我們到底有啥樣的油布,當然他的資訊遠不止油布這麼簡單,更準確的說油布僅僅相當於material中shader的漫反射紋理,也是主紋理。於是,模型的實際構建過程就是先構建出骨架,然後將指定的油布按照指定的方式包到骨架上。

我們的第乙個知識點溫故結束。接下來,我們需要溫故的是gpu的問題。gpu存在的意義通俗點的說就是渲染,講需要展示的物體形象的表現在顯示器上,所以,可以形象的理解為繪圖專家,你給他真實的三維場景的資訊,他需要計算透視燈光等等各種因素,最後在二維的紙上形象的繪製出三維的場景,讓你感覺栩栩如生。所以,通過這些淺顯的知識,我們可以知道我們開篇的cube渲染出來需要經過的事情:cpu需要組裝好cube的三維資訊、燈光資訊、攝像機資訊等,然後將這些資訊送交給gpu,gpu然後根據這些資訊繪製出一張栩栩如生的圖。(此處劃分並不嚴格,只是為了形象說明。)而我們的shader存在的意義,也就是shader的功效就是用來讓這個畫紙栩栩如生。所以,shader的好壞的衡量標準就是盡量逼真的效果盡量低的效能消耗(萬事萬物都在幹這個事情,希望的美好,現實的殘酷,尋找折衷點自我yy的活著。)

python系列教程 python系列教程

宣告 在人工智慧技術教學期間,不少學生向我提一些python相關的問題,所以為了讓同學們掌握更多擴充套件知識更好的理解人工智慧技術,我讓助理負責分享這套python系列教程,希望能幫到大家!由於這套python教程不是要由所寫,所以不如我的人工智慧技術教學風趣幽默,學起來比較枯燥 但它的知識點還是講...

WPF入門教程系列一

一 前言 公司專案基於wpf開發,最近專案上線有點空閒時間寫一篇基於wpf的基礎教材,wpf也是近期才接觸,學習wpf也是在網上查資料與微軟的msdn進行學習,寫本部落格的目為了溫故而知新把學習過程記錄下來,以備後查。學習wpf的基礎知識 1 wpf是微軟提供的一種用來開發 桌面應用 的技術 框架 ...

Linq系列教程一 Linq介紹

前言 許多朋友在編寫以資料庫為中心的應用程式是時常會因為呼叫資料庫以及維護資料的關係等而煩惱,繁雜的sql字串語句,sql注入檢測,語法,字元長度等,有些時候為了在程式上更方便使用還要寫一些看似不重要只為了方便的儲存過程。現在好了從.net framework 3.5版本開始我們可以使用物件導向的方...