本篇主要用于记录自己的实战操作,以及一些碎碎念(观后感),如果有什么好想法或者本篇出现什么错误,请多指教~
本篇的内容参考视频:庄懂的技术美术入门课(美术向)
使用软件:Unity 2019 3.6f1 ,ShaderForge
本篇内容主要包括:代码复习与扩展整理
一.面板
1.面板参数声明格式
- 使用vector向量可以做伪灯光;
- 3D纹理可以是一组2D纹理,也可以就是三维图,可以作为Texture3D传入,地形,云的渲染,特殊特效都可以用到
2.参数属性
参数名 | 用途 | 可用于 | 例子 | 补充 |
---|---|---|---|---|
[HideInInspector] | 在面板上隐藏该参数 | 任何参数 | [HideInInspect] _FakeLightDir (“伪光方向”, vector) = (0.0, 1.0, 0.0, 1.0) | 隐藏美术看不懂或不需操作的参数 |
[NoScaleOffset] | 禁用纹理的TilingOffset面板;不需要做TilingOffset的纹理,比如大部分的角色纹理,防止美术误设置 | 纹理参数 | [NoScaleOffset] _MainTex (“主贴图”, 2d) = “white” {} | 普通的贴图放上去改不了tilling之类的,隐藏无关参数 |
[Normal] | 标示该纹理参数为法线贴图,以激活相关自检功能 | 2D纹理参数 | [Normal] _NormTex (“法线贴图”, 2d) = “bump”{} | 建议有法线贴图就添加 |
[HDR] | 用于设置高动态范围颜色值;如:灯光颜色,自发光颜色等 | 颜色参数 | [HDR] _EmitCol (“自发光颜色”, color) = (1.0, 1.0, 1.0, 1.0) | 开耗大,跟开发商量 |
[Gamma] | 用于颜色参数的色彩空间的转换,一般用于色彩空间为Linear的项目 | 颜色参数 | [Gamma] _EmitCol (“自发光颜色”, color) = (1.0, 1.0, 1.0, 1.0) | 线性与非线性空间区别,可参考这篇 |
[PowerSlider(value)] | 对范围参数做Power处理后再传入Shader;纠正部分参数调节手感 | 范围参数 | [PowerSlider(0.5)] _SpecPow (“高光次幂”, range(1, 90)) = 30 | 可以调成均匀线性的拉条手感 |
[Header(Label)] | 标签,用于排版 | 单独使用 | [Header(Texture)] | 无 |
[Space(value)] | 空行,用于排版 | 单独使用 | [Space(50)]无 |
二.参数类型
类型名 | 说明 | 补充 |
---|---|---|
fixed | 11位定点数,-2.0~2.0,精度1/256; | 可以表示贴图颜色 |
half | 16位浮点数,-60000~60000,精度约3位小数 | 大部分情况够用 |
float | 32位浮点数,-3.4E38~3.4E38,精度约6,7位小数 | Mipmap可以使用float比如1.5是取1和2的插值,使用float变换更平滑 |
int | 32位整形数,较少使用 | |
bool | 布尔型数,较少使用 | |
矩阵 | float2x2, float3x3, float4x4, float2x3 诸如此类格式;half2x2, half3x3, half4x4, half2x3 诸如此类格式 | 一般矩阵不用fixed |
纹理对象 | sampler2D: 2D纹理 ,sampler3D: 3D纹理, samplerCUBE: Cube纹理 |
三.常用数据
- TEXCOORD不只可以塞UV也可以塞点别的东西;
- pos必须四维,因为变换矩阵缘故,且不建议使用half4;
- uv1场景常用;
四.封装
1.函数
2.库