unity shader 学习笔记(2)

学习文章链接:https://zhuanlan.zhihu.com/p/47880664, 感谢!

自定义颜色变量,在材质面板设置颜色来改变物体的颜色

	Properties
	{
		_Color0 ("test Color0", Color) = (1, 1, 1, 1)
	}
	SubShader
	{
		Pass//一次模型渲染,以CGPROGRAM开始,以ENDCG结束
		{
			CGPROGRAM
				//#pragma 是unity内置的便已指令命令
				#pragma vertex vert //定义一个顶点着色器,语句后面不能跟分号
				#pragma fragment flag //定义一个片断着色器
				fixed4 _Color0;//属性的中变量如果使用则需要重新声明,float, half, fixed表示精度 语句后面需要跟分号

				//实现着色器内容
				//顶点着色器中的顶点数据都是直接存储在模型中的,shader通过标识语义自动获取数据
				//POSITION:表示输入顶点参数的位置信息
				//SV_POSTION:标记顶点着色器变换后的顶点位置坐标,以便片断着色器知道哪个是从顶点着色器传过来的顶点位置信息
				//方法返回顶点位置给片断着色器
				float4 vert(float4 ver : POSITION) : SV_POSITION{
					return UnityObjectToClipPos(ver); //unity封装好的将顶点从模型坐标转换到裁剪坐标的矩阵转换方法
				}
				//片断着色器主要处理最终显示在屏幕上的像素结果
				//SV_TARGET:表示判断着色器返回的结果是用于下一阶段的颜色值,也就是输出到显示器的值
				float4 flag() : SV_TARGET{
					return _Color0;
				}
			ENDCG
		}

最终结果:

CG/HLSL中的数据类型和shader属性中数据类型:

//	CG/HLSL中的数据类型:
//		浮点类型:float、 half、 fixed
//		整型:integer
//		2D纹理:sampler2D
//		3D纹理:samplerCUBE
//	用法:
//		float:高精度,32位,常用于世界坐标位置,纹理UV,复杂函数标量计算,如三角函数、幂函数
//		half:中精度,16位,常用于本地坐标下的位置、方向向量、HDR颜色等
//		fixed:低精度,11位,常用于常规颜色与贴图,以及低精度见的运算
//	
//		注:在PC平台都作为float使用,half和fixed在一些移动设备有效
//	
//		2D和3D纹理在移动平台会转换成低精度的纹理类型,如果需要中精度或高精度可使用如下声明方法:
//		sampler2D_half 或 samplerCUBE_float....
//	CG/HLSL中的数据类型和shader属性中类型对应:
//		Int/Float/Range 用浮点型表示
//		Vector/Color 用float4 、half4、 fixed4表示
//		2D、3D、CUBE则对应 sampler2D、sampler3D、samplerCUBE

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值