前言: 接触unity也好几年了 对于shader的个人理解相关的书和博客也看了好多,实际动手的时间并不是很多,看了其他大佬介绍的知识文章,渲染流程,空间转换,这类的一般都是在介绍之前会看到的。个人觉得还是先动手在慢慢 学习中一步一步的理解,带着功能的目的去学习, shader挺起来多高端的,入门先就先看一堆的知识介绍,新手可能觉得搞得自己头大了。
现在开始自己带着做shader实现功能的方式去学习,个人觉得学起来会有动力和挑战一些。
第一个先实现一个纯色的shader可以自定义输入想要的颜色控制模型的颜色。
Shader "long/PureColor"
{
//属性定义
Properties
{
//定义一个颜色属性 用于自定义动态控制颜色变化
_MainColor("Color", Color) = (1,0,0,1)
}
SubShader {
PASS{
//CG入口代码标识
CGPROGRAM
#pragma vertex vert//vert函数声明
#pragma fragment frag//frag函数声明
#include "UnityCG.cginc" //引入unity自带shader库文件
fixed4 _MainColor;//再次申明 上面属性定义内的 颜色属性 下面才可以使用,shader语法要求,必须再次声明
//传入参数 模型的顶点信息 POSITION表示语意 必要的显示物体位置
fixed4 vert(float4 pos:POSITION):POSITION{
//模型空间转换 到视图空间
return UnityObjectToClipPos(pos);
}
float4 frag():COLOR{
//返回输入的颜色
return _MainColor;
}
ENDCG
}
}
FallBack "Diffuse"
}