Shader学习笔记(二)

//从这里指定Shader的名字,不要求跟文件名保持一致
Shader "MyShader/Demo1"{
	//属性
	Properties{
		_Color("Color",Color) = (1,1,1,1)//float4
		_Vector("Vector",Vector)=(1,1,1,1)//float4
		_Float("Float",Float)=0.1//float
		_Int("Int",Int)=123//float
		_Range("Range",Range(0,12))=1//float
		_Texture("Texture",2D) = "red"{}
		_Cube("Cube",Cube) = "white"{}
		_3D("Texture3D",3D) = "black"{}
	}
	/*SubShader可以写很多个,显卡运行效果的时候,从第一个SubShader开始如果效果都可以实现,那么就使用第一个SubShader,如果显卡这个SubShader里面有写效果
	实现不了,他会自动选择可以实现的*/
	SubShader{
		//至少有一个Pass
		Pass{
			//在这里填写Shader代码
			CGPROGRAM
			//使用CG语言编写shader代码 属性的定义需要在shader中再声明一下才可以使用
			float4 _Color;//float half fixed
			float3 t1;//half3 fixed3
			float2 t2;//half2 fixed2
			float4 _Vector;
			float _Float;
			float _Int;
			float _Range;
			sampler2D _Texture;
			samplerCube _Cube;
			sampler3D _Texture;
			//float 32位来存储
			//half 16位存储 -6W~+6W
			//fixed 11位 -2~+2 比如颜色0-1就可以使用fixed存储
			ENDCG
		} 
	}
		FallBack "VertexLit"
}


Properties中属性的定义作用是可以在程序运行过程中或者editor下调整输入参数,或者在代码中Get,Set,而在Shader中真正的使用则还需要再次声明一下
所有使用float的地方都可以使用 half或者fixed代替,区别在于三者的精度不同,比如坐标我们可以使用float4来表示,而颜色的范围只有0-1,使用32位的float来存储就是浪费显存,使用fixed就比较合适。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值