如何获取Unity着色器属性的完整列表

时间:2016-06-10 11:29:53

标签: unity3d shader unity5 cg

我对着色器很新,并且一直在搜索Unity着色器属性的完整列表。我还没有找到任何此类文件。我发现的是SL-Properties。我在哪里可以找到完整的属性及其功能列表?

更新

SL-Properties中给出了一个示例,其中显示了水着色器的属性列表,即_WaveScale_Fresnel_BumpMap等。了解这些特定属性可以更容易地找到解决方案。在我发现以下属性之前,我最近尝试编写类似于笔划的东西。

fixed _Stroke;
half4 _StrokeColor;  

2 个答案:

答案 0 :(得分: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 half4 fixed4 变量。
•Range和Float属性映射到 float half fixed 变量。
•纹理属性映射到常规(2D)纹理的 sampler2D 变量。
•Cubemaps映射到 samplerCUBE
•3D纹理映射到 sampler3D

答案 1 :(得分:2)

Unity中着色器的属性只是引擎可见的公共变量,因为Cg着色器被包装到ShaderLab程序中。

您可以在Andy Touch的演示文稿中看到Unity中着色器的结构:https://www.youtube.com/watch?v=zr1zQpdYG1Q&t=7m36s

所以,当你看到 fixed _Stroke; half4 _StrokeColor; 稍后在您的代码中,它只是Cg程序使用并绑定到这些属性的实际变量。

检查相邻Unity docs section以了解这些属性如何映射到着色器变量。