好,Unity Shader的从找门到入门教程= =

//Shader名称:
//1.固定写法:Shader"XXX/XXX"
//2./表示层级,与C#脚本不同的是Shader名称和外面的文件名没有关系
Shader"MyShader/MyShader1"
{
	//属性:
	//1.固定写法:Properties{XXX}
	//2.在这里声明的变量会显示在使用此Shader的材质球的面板上
	//3.此处声明的变量需要初始化,不初始化会报错
	//4.此处声明语句不需要加';'
	//5.结构:_Name("ShowName",Type)
	//		①_Name:在此Shader中使用且在外部赋值Shader变量时使用的变量
	//		②ShowName:在材质球面板上显示的名称
	//		③Type:此变量的类型。
	Properties{
		//Float:浮点型
		//此外还有常用的Float数组,但是无法在此处定义
		//Float/Float2/Float3/Float4 后面数字表示能存放的值的数量
		_Float("Float",Float) = 0.5
		//Int:整数
		//虽然是Int值,但是如果你在外面的材质球上也能写浮点数
		//但是脚本中就不阔以了
		_Int("Int",Int) = 5
		//Range:此变量的取值范围,类型亦为Float
		_Range("Range",Range(0,100)) = 30
		//Vector:四维向量
		//取值为(x,y,z,w)
		_Vector("Vector",Vector) = (0,0,0,0)
		//Color:颜色类型
		_Color("Color",Color) = (0,0,0,1)
		//图片纹理:先设置一个颜色,{}中放置图片纹理
		//TODO:待找到理论依据
		//颜色值无法改变,且无法在外面赋值,只能是在这里默认的
		_2D("2D",2D) = "white"{}
		//Cube:立方体纹理 立方体贴图
		_Cube("Cube",Cube) = "white"{}
		//3D:3D纹理
		_3D("3D",3D) = "white"{}
	}

	//放代码块的地方
	SubShader{
		//至少含有一个Pass
		//一个Pass代表一个处理流程
		//一般应该有多个Pass来处理在不同设备上的显示效果
		//一般从上至下,效果越来精简,所以最上方的Pass块一般为最秀的
		Pass{
			//又回到最初的起点,可以开始写代码了
			CGPROGRAM
			//在这里搞CG语言代码

			//在这里再声明上面设置的变量才能在Pass块中使用
			//在这里声明的变量后面需要加';'
			Float _Float;
			//Int比较神奇。
			//我也不太清楚我是不是有别的操作影响到Int大佬的心情了,但是我的确碰到了个问题。
			//如果在Pass块中声明了vertex 且 声明了 fragment 函数
			//这个地方就不能声明Int变量了,不然就会报错。
			//但是单独声明其中一个没有问题,但是应该没有独自使用这些函数的情况
			//就需要写为一下情况:
			//Float _Int;
			Int _Int;
			Float _Range;
			Vector _Vector;
			Color _Color;
			2D _2D;
			Cube _Cube;
			3D _3D;

			//数组:
			//Properties块中木有办法写数组,所以也就没有办法通过在Properties块中声明数组
			//然后赋值的方法来使用外部的数组
			//那怎么整???
			//因为Unity在较低版本中还没有整合所以只能通过别的办法来解决
			//可以在Pass块中声明需要使用的数组
			//然后在脚本中直接赋值的方法来实现
			//但是这个办法在unity5之前不好使
			//因为项目原因我试用的是unity4.x的版本,相应脚本中并没有相应的方法
			//所以此方法只能在Unity5之后使用(我用5.6.0f3打开里面是含有相应的函数的)
			//之前的项目怎么办?
			//升级版本吧,小老弟,或者压缩这个需求量控制在可操作的范围内=3=
			//此外:数组的长度必须是固定的无法修改,所以需要提前先按照需求设计好
			uniform Float[100] _FloatList;
			uniform Vector[100] _VectorList;

			ENDCG
		}
	}
	//备用方案:上述Pass块,全都使不了,就使介个。
	FallBack "Diffuse"
}

感谢以下文章吗,为我提供了短时间内的解决方案:

这哥们的五篇文章都由详细的注释,这是最舒服的= =,感恩

这哥们提供的温度云图解决方案,为我提供了思路,使我理解了其中的一些内容

感谢这个哥们,提供了关键性技术

感恩这个哥们,文章挺细的,比较系统化,提供了很深的理解,并且他的插件很有用,配合UI实现的展示功能

感谢以上但不限于的哥们们,因为有的文章我看完了忘收藏了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值