2016-06-10 304 views
7

我對着色器相當陌生,並且一直在尋找Unity着色器屬性的完整列表。我還沒有找到任何這樣的文件。我發現的是SL-Properties。我在哪裏可以找到屬性及其功能的完整列表?如何獲取Unity着色器屬性的完整列表

UPDATE

一個示例在SL-Properties給出示出了用於水着色器即_WaveScale_Fresnel_BumpMap等屬性的列表。瞭解這些特定屬性可以更容易地找到解決方案。我最近嘗試編寫類似於筆畫的東西,然後才發現以下屬性。

fixed _Stroke; 
half4 _StrokeColor; 
+0

我找不到獲取特定Shader屬性列表的方法......拼命改變我的素材的BlendOp ... – Domi

回答

2

Unity擁有自己的着色語法ShaderLab

關於它的所有必要信息都可以在website上找到。
至於屬性,看看這個link

由於nvidia是not supporting CG,最新的統一版本使用HLSL編譯器實際編譯着色器,並將結果字節碼轉換爲GLSL。 CG着色器代碼繼續工作大部分不變。如今,您可以利用現代着色器功能,如計算着色器和曲面細分,CG不支持,使用HLSL語法。

例如,這些着色器屬性:

_MyColor ("Some Color", Color) = (1,1,1,1) 
_MyVector ("Some Vector", Vector) = (0,0,0,0) 
_MyRange ("My Range", Range (0, 1)) = 1 
_MyFloat ("My float", Float) = 0.5 
_MyInt ("My Int", int) = 1 
_MyTexture2D ("Texture2D", 2D) = "white" {} 
_MyTexture3D ("Texture3D", 3D) = "white" {} 
_MyCubemap ("Cubemap", CUBE) = "" {} 

將被宣佈爲在CG/HLSL代碼訪問爲:

fixed4 _MyColor; 
float4 _MyVector; 
float _MyRange; 
float _MyFloat; 
int _MyInt; 
sampler2D _MyTexture2D; 
sampler3D _MyTexture3D; 
samplerCUBE _MyCubemap; 


屬性類型ShaderLab地圖到CG/HLSL可變類型如下:

•顏色和矢量屬性映射到float4,half4fixed4變量。
•範圍和浮動屬性映射到浮動,一半固定變量。
•紋理屬性映射到sampler2D用於規則(2D)紋理的變量。
•立方圖映射到samplerCUBE
•三維紋理映射到sampler3D

+0

我剛更新了問題 – Nullititiousness

+0

剛剛添加了更多信息。 – Hamid

2

Unity中着色器的屬性只是引擎可見的公共變量,因爲Cg着色器被包裝到ShaderLab程序中。

你可以看到在統一着色器的結構本演示Andy Touchhttps://www.youtube.com/watch?v=zr1zQpdYG1Q&t=7m36s

所以,當你看到 fixed _Stroke; half4 _StrokeColor; 在後面的代碼,它只是被使用CG程序和綁定的實際變量到這些屬性。

檢查相鄰的Unity docs section以瞭解這些屬性如何映射到着色器變量。

+0

我剛更新了問題 – Nullititiousness

+0

我剛更新了答案:) – Skyblade