UnityShader从入门到放弃(一)UnityShader的结构

Shader "Luoxiaoxiao/Shader_1"{//指定Shader的名字 不要求与脚本名一致
      
	  Properties{
	  	  //属性  UnityShader中的类型
		  _Color("Color",Color)=(1,1,1,1)
		  _Vector("Vector",Vector)=(1,2,3,4)
		  _Int("Int",Int)=325
		  _Float("Float",Float)=4.5
		  _Range("Range",Range(1,11))=6//Rang本质是Float类型的 只不过是增加了一个范围的限制
		  _2D("Texture",2D)="white"{}//指定一个图片
		  _Cube("Cube",Cube)="white"{}//立方体纹理 --天空盒
		  _3D("Texture",3D)="balck"{}//3D的纹理
	  }
	  //SubShader可以有很多个  根据显卡的能力  自动选择能够实现的SubShader  上边的效果优于下边的效果
	  SubShader{
	      //至少有一个Pass
	      Pass{
		  	  //在这里编写Shader代码
			  CGPROGRAM
			  //使用CG语言编写Shader代码
			  //属性在使用时要重新定义一遍
			  fixed4 _Color;//Color本质是一个4个值得  在CGPROGRAM中要定义成fixed4类型的  编译时会自动取到Color的默认值
			  float4 _Vector;
			  float _Int;
			  float _Float;
			  float _Range;
			  sampler2D 2D;//2D类型的要定义成sampler2D
			  samplerCube _Cube;
			  sampler3D _3D;
			  //在任何使用float 的地方都可以使用half、fixed代替 
			  //float4 = half4 = fixed4............
			  //三者之间的区别在于 精度不同 所占用的显存不同  根据需要使用相应的精度可以节约资源
			  //float 32位进行存储  常用语位置的定义
			  //half  16位进行存储 -6W - +6W  用的较少
			  //fixed 11位进行存储 -2  - +2 常用于颜色的定义
			  ENDCG
		  }
	  }

	  Fallback"VertexLit"
}
一个UnityShader脚本由Shader名、Properties、一个或者多个SubShader、Pass块、Fallback组成,其中 Properties中定义一些属性,如颜色、纹理等,控制Shader实现效果的代码在Pass块的CGPROGRAM和ENDCG间。当所定义的Shander不能被所运行的设备所支持时,会回滚到Fallback后所定义的Shader。

你可能感兴趣的:(UnityShader从入门到放弃(一)UnityShader的结构)