Shader入门-01
前言
借由 Unity Shader 实战学习 Shader !
带完整注释,一起学习 💪
效果
指定颜色渐变的效果,可以设置渐变开始及结束的位置
👉展示备份(国内节点)
👇效果展示(科学上网)
代码
1 | Shader "Unlit/AloeaShader01" |
细节
🤔 颜色过渡不正常
颜色过渡不正常需要修改下工程的色彩空间计算方式,从 Linear 改为 gamma,原因可以看我这篇的科普。
位置在 Edit > Project Settings,搜索 Rendering
🤔 Lerp 函数 可视化理解
Lerp,A 和 B 之间按照 Alpha 线性插值。
1 | ( ( 1 - A ) * Alpha + B * Alpha) |
🤔 InverserLerp 函数 可视化理解
InverserLerp,v 值在 a ~ b 范围内对应比例的值。
参考上图理解,a ~ b指定为 20 ~ 10,v 是 0 ~ 35。当 v 为 10 时,结果为 1;当 v 为 15 时,结果为 0.5;当 v 为 20 时,结果为0。
1 | ( v - a ) / ( b - a ) |
🤔 单位精度
float:32位浮点数,全浮。最高精度,建议用于世界空间位置,纹理坐标,复杂计算如幂/指数等。
half:16位浮点数,半浮。数值范围 [-60000, +60000],建议用于方向、HDR 颜色等。
fixed:11位浮点数,低精度。数值范围 [-2, +2],用于低精度的运算变量。
注意以上是通常情况,实际各种硬件设备可能会有自己特别的定义,比如浮点精度特殊,或者根本就没有 half、fixed,总之精度的机制最终就是退会 float。
Unity Shader的数据类型和 HLSL 略有不同,针对移动平台做了优化。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 李璐慧的个人网站 - Aloea's Personal Website!
评论