UnityShader學習記錄(一)

2021-08-28 02:32:45 字數 1710 閱讀 5908

ps:本文章摘取自《unityshader入門精要》一書。

之前一直想shader是乙個很難的東西,在接觸《unityshader入門精要》之後感覺也不是想象中的複雜,但是想要學好shader是乙個漫長的過程,基礎篇和初級篇看完之後感覺收穫挺大,為此,記錄一下。

在進入shader之前,需要把渲染流水線搞清楚,什麼是渲染流水線?渲染流水線包括什麼?渲染流水線舉個例子,比如乙個工廠做乙個產品,從產品的第一道工序到最後的產品**就是完整的一套渲染流水線,一張,從點資料,紋理等資訊出發,直到我們可以在螢幕上看到一張,這個完整的過程就是渲染流水線,渲染流水線是在cpu和gpu的相互協作下完成的,完整的一套流程是:頂點資料——>頂點著色器——>曲面細分著色器——>幾何著色器——>裁剪——>螢幕對映——>三角形攝者——>三角形遍歷——>片元著色器——>逐片元操作——>螢幕影象。

看起來很複雜,其實在這些流程中有的是不需要我們操作的,很多是cpu和gpu自行處理的需要我們去用指令碼控制的只是其中的幾個。

螢幕對映,三角形設定,三角形遍歷,螢幕影象是gpu固定實現。

裁剪,逐片元操作是可以配置但是不可以程式設計實現

頂點著色器,曲面細分著色器,幾何著色器,片元著色器是完全可程式設計的,在這裡面頂點著色器是必須程式設計實現

頂點著色器在後續的shader程式設計中很常用的,所以這裡重點說一下:頂點著色器主要負責的是座標的轉換和逐頂點光照,座標轉換是把頂點座標從模型空間轉換到裁剪空間裡面,這裡說到了乙個空間轉換的問題,對於空間轉換這裡不說,在後續的文章中會重點說,這裡只是在進入學習shader之前簡單的了解一點東西。

unityshader的結構:

properties是用來定義屬性的語義塊

unityshader中的屬性有以下幾種(前面的是型別,後面的是示例,例如_int是屬性名稱,「int」是顯示在面板中的名稱):

int       _int("int",int) = 2

vector       _vector("vector",vector) = (2,3,4,1)

float        _float("float",float) = 1.5

2d       _2d("2d",2d) = ""{}

range()       _range("range",range(0,5)) = 3

cube       _cube("cube",cube) = "white"{}

color       _color("color",color) = (1,1,1,1)

3d       _3d("3d",3d) = 「black」{}

subshader類似於函式的概念,對shader 的操作和shader指令碼要放在subshader中,真正意義上的shader**都是包含在subshader語義塊中,乙個shader指令碼可以擁有很多個subshader。

乙個的subshader中有一系列的pass語義塊以及一些可選的標籤(tags)和狀態,如果標籤和狀態寫在subshader中,那麼這個subshader中所有的pass都會受到這些標籤和狀態的影響,如果只是寫在單個pass中,那麼就是這個pass會有影響。

subshader中的標籤:是subshader和渲染引擎之間的溝通橋梁,它會告訴渲染引擎希望在什麼時候怎麼去渲染物件

subshader中的狀態:是對顯示卡的各種狀態的設定,比如是否設定剔除模式等等。 

UnityShader學習記錄(三)

這篇文章主要說一下shader裡面的透明效果,透明效果在unityshader中有兩種方式,透明度測試和透明度混合,透明度測試是比較霸道的透明演算法,它只有透明和不透明兩種情況,也就是說這個unityshader能實現的不是透明就是不透明,不會存在半透明現象,所以它的值就只有0和1兩種。那麼要想實現...

unity shader 學習筆記

upgrade note replaced world2object with unity worldtoobject upgrade note replaced mul unity matrix mvp,with unityobjecttoclippos shader unity shader b...

Unity Shader 基礎知識記錄

首先謝謝大家的支援,其次如果你碰到什麼其他問題的話,歡迎來 我自己的乙個 討論群559666429來,大家一起找答案,共同進步 你能看到這篇文章,說明你最近在和我做一樣的事情 學習shader 由於也是剛開始學習,此處也是整理一些基礎的知識。unity官網資源 著色器 貓都能學會的unity sha...