1. 程式人生 > 其它 >【Demo-01】--Tutorial/Basic

【Demo-01】--Tutorial/Basic

技術標籤:【Unity Shader Examples】

本文采用程式碼和註釋分離的形式記錄閱讀筆記,目的在於閱讀的時候可以記思考,在思考之後在繼續閱讀下文,和註釋進行核對,得到前後的立即對比,增加理解能力。所以採用直接先貼出程式碼,然後給出自己的理解,最後附上效果圖。

Shader "Tutorial/Basic" {
    Properties {
        _Color ("Main Color", Color) = (1,0.5,0.5,1)
    }
    SubShader {
        Pass {
            Material {
                Diffuse [_Color]
            }
            Lighting On
        }
    }
}

Shader

Shader關鍵字用於定義著色器的檔案路徑,可以有多種格式,如:Shader "***"、“Shader "***/***";這樣的定義方式表示該著色器的目錄結構,可以根據自己的實際情況來定義。程式碼中定義的路徑在Unity材質面板中的顯示情況:

可以根據自己的實際情況定義各種目錄層級結構即可。

Properties

Properties關鍵字用於定義著色器屬性,該屬性內定義了一個(Color)顏色屬性,可以通過材質調節該顏色值,Unity中的現實情況如下:

SubShader

Shader由至少一個SubShader組成,可以根據實際情況編寫至少一個或者多個SubShader組成。SubShader用於定義渲染通道(Pass)的列表,並且可以選擇性的設定所有通道共同的任意狀態。

Pass

Pass程式碼塊將遊戲物件幾何體進行渲染一次。如果在SubShader中定義了多個Pass,那麼會根據Pass的先後順序進行幾何體的渲染;Pass不是越多越好,在必要的情況下可以編寫多個,因為每增加一個Pass都會增加渲染成本的。在Pass中可以定義一個名稱和任意數量的Tags,以及設定渲染狀態,這些設定用於將通道的意圖傳達給渲染引擎,引擎根據各語義進行實際的操作

Material

上文中採用了材質,並且在Material中設定了Diffuse(漫射)以及Diffuse的顏色,該顏色通過定義的屬性_Color的值來作為Diffuse的顏色值;_Color的顏色值通過調節Unity材質面板中的Color來進行動態改變,可以通過調節不同的顏色值來檢視效果。

Lighting On

開啟頂點光照


通過調節光照顏色和材質顏色檢視效果:

_Color調節為White, Light調節為Green 如下圖一: 把_Color調節為Green,Light調節為White,如下圖二:

圖一 圖二

上面的圖一和圖二圖是沒有區別的,最後得到的是同一張圖,因為Diffuse和Light最後混合的結果是一樣的,所以得到的是同一張圖,看上去是沒有差異的。


_Color調節為Magenta(品紅),Light調節為Cygan(青色) 如圖三 _Color調節為Orange(橙色),Light調節為Cygan(青色) 如圖四

圖三 圖四

圖三和圖四採用相同的光照,然後調節_Color的顏色值得到上圖中的區別,它們有著明顯的差異,可以通過調劑Light和Diffuse的顏色值得到各種不同的顏色結果。


總結:

該著色器定義了一個顏色屬性_Color,定義了一個SubShader和Pass,在單通道Pass中開啟了頂點光照,以及使用使用固定函式Material為每個頂點設定Diffuse的顏色值。最後通過Light光照的顏色值和Diffuse的顏色值的混合,得到最後最後圖片。

本文屬於個人閱讀筆記,若有見解不對之處,萬望見諒及指!!!!