按照youtube上iq大神的教学,在unity上写的眼睛shader
效果
基本思路
渲染
上底色
1 | col = float3(0.0, 0.3, 0.4); |
代码的上半部分通过fbm()函数给眼白部分上蓝绿色的泼墨式的底色。
代码的下半部分画出眼睛中心黄色的晕。
smoothstep()来控制眼白到瞳孔中心过渡区域的大小。
云烟特效
1 | a += 0.4 * fbm(4 * p); |
先通过fbm函数将像素的旋转角a打乱。
再通过smoothstep()和fbm()来画出云烟般的效果。
1 | f = smoothstep(0.4, 0.9, r); |
添加黑色细节(即整体调暗)
瞳孔
1 | f = smoothstep(0.2, 0.25, r); |
眼睛边缘过渡
1 | f = smoothstep(0.75, 0.8, r); |
添加高光
1 | f = 1.0 - smoothstep(0.1, 0.4, length(p - float2(0.2, 0.2))); |
动态变化
1 | float ss = 0.5 + 0.5 * sin(50*_Time); |
FBM
FBM(Fractional Brownian Noise)