UnityShader入门 首先还是要多谢shader女神乐乐的书 以及论坛上的各个博文
扒了一天 总算是对shader有了一个初步的了解
根据程序一通百通的原理
为了方便理解 自己做了关系对应
shader编程 其实就i跟我们平时写c#编程一样
不同的是 里面声明函数 以及变量的方式 在shader里面改变了一下
1 shader的脚本名称 这是为了方便管理 自己尽量去分类
Shader "MyShade/shadertest" 可以随意明名 斜杠表示分层关系
2 定义属性 c#里面有公共变量 私有变量 而shader里面呢 是这样的
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_MainColor("MainColor",color)=(1,1,1,1)
}
Properties 是所有属性设置 当前shader脚本里面所要用到的变量 都要在这里去定义 (萌新入门级的理解 如有不妥,请指出)
例如 {}里面第一行 设置了一个texture _MainTex 是我们在下面函数中要拿来用的 相当于c#的变量
"Texture" 这是 为了方便界面话调试 会在控制面板上显示 (找到材质球 你改变"Texture"的字符串会发现控制面板上的会跟着变化) 2D是表示 这是一个2的阶数的图片信息 例如 2*2 64*64 256*256大小的图片 "white" 代表的是默认值 白色 值的话是(1,1,1,1), 方便渲染 不会影响其他图形的叠加
3 SubShader (shader主体,shader的实现) 这里就相当于我们acn#里's面的h函数(方法了)
Tags 是一个标签 设备会读取这些标签 标签的信息是 什么时候调用该shader进行渲染
lod 全名Level of Detail 可以根据设备性能进行画面调整
pass shader的实现 可以有多个pass 每个pass相当于通道 因为市面上显卡设备众多, 有好的 差的 兼容 支持不一样 所以 要准备多个pass 以便去适配 当程序运行时候 有且只有一个pass执行
暂且更新到此 还有下文 待有时间继续更新