本人小白,刚刚开始学unityShader第一次写关于unity相关的shader,请大佬勿喷!!
Shader "test/my_shader" { //shdaer名称 "/" 代表路径
Properties{
_Int("m_int",Int) = 111 //int 带引号的是变量类型,后面的是所有的类型
_Float("m_float",Float) = 112 //float
_Color("mainColor",Color) = (1,0,0,1) //float4
_2D("m_tex2d",2D) = "red" {} //sampler2D
_3D("m_tex3d",3D) = "red"{} //sampler3D
_Cube("m_cube",Cube) = "red"{} //samplerCube
}
SubShader{
Pass { //每个程序段必须有个pass段
CGPROGRAM //这里是语言的类型如果是GLSL 语言就写 GLSLPROGRAM ...... ENDGLSL
int m_int; //每个变量对应的变量类型
float m_float;
float4 m_color;
sampler2D m_tex2d;
sampler3D m_tex3d;
samplerCube m_texcube;
half m_hl; //应该类似16位float吧
任何使用float的都可以使用half类型和fixed类型类存储
half range 16位:-60000-+60000
fixed range 11位: -2 - +2 颜色一般用这个存储
ENDCG
}
}
FallBack "Diffuse"
}
在shader程序段的内部不能像c#语言一样直接访问外部的程序变量,要在shader语句块内在重新定义才可以使用。