Unity ShaderLab 框架全解析1 —— Properties

Unity ShaderLab 框架全解析1

該系列主要是根據Unity官方文檔和個人蒐集的知識對Unity ShaderLab框架進行總結,比較基礎,用於提高知識學習、複習的效率。對於文中給到的文章鏈接的作者表示感謝

Properties

官方鏈接:ShaderLab: Properties
屬性是ShaderLab當中比較容易理解的,在Shader當中定義了變量之後,它可以將Shader當中所用到的變量暴露出來,方便我們在材質面板進行調節和在代碼中進行調用。下面展示一個ShaderLab當中比較全面的屬性代碼:

Properties{
			//數值和滑動條
			_Num1("Num1Name",Range(8,256)) = 20
			_Num2("Num2Name",Float) = 1
			_Num3("Num3Name",Int) = 1
			//顏色和向量
			_Color("ColorName",Color) = (1,1,1,1)
			_Vector("VectorName",Vector) = (1,1,1,1)
			//紋理
			_Texture1("Texture1Name",2D) = "defaulttexture"{}
			_Texture2("Texture2Name",Cube) = "defaulttexture"{}
			_Texture3("Texture3Name",3D) = "defaulttexture"{}
		}

對應的材質inspector
在這裏插入圖片描述
更多細節:
其中2D紋理可以設定Unity內置的默認紋理,比如將上面的"defaulttexture"寫爲“white” (RGBA: 1,1,1,1), “black” (RGBA: 0,0,0,0), “gray” (RGBA: 0.5,0.5,0.5,0.5), “bump” (RGBA: 0.5,0.5,1,0.5) or “red” (RGBA: 1,0,0,0)。
Cube和3D紋理在材質沒有被外部賦值時,則默認採用gray(RGBA: 0.5,0.5,0.5,0.5)。

屬性特性
在每一個屬性代碼的前面加"[特性名]"可以設置屬性在面板上面的顯示和配置方式,Unity可以辨識的屬性特性有:
[HideInInspector] - 在材質面板上不顯示該屬性
[NoScaleOffset] - 材質面板不顯示紋理的縮放和偏移控制輸入框,也就是上圖中的Tilling和Offset。
[Normal] - 表示該紋理需要一個法線紋理輸入
[HDR] - 表示需要高動態範圍的紋理或者顏色
[Gamma] - 表示該向量或者浮點數值需要採用Gamma矯正。
具體瞭解參考這位大佬文章:Gamma、Linear、sRGB 和Unity Color Space,你真懂了嗎?
還有這篇:Gamma & Linear Color Space
[PerRendererData] - 表示對應屬性需要在MaterialPropertyBlock進行設置來進行per-render。這裏暫時瞭解不深入,貼上相關官方文檔鏈接Accessing shader properties in Cg/HLSL

上面特性的具體效果可以自行測試。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章