GLSL 效果示例
霓虹光晕
用一个小数除以到线条的距离,做出一个发光的霓虹圆环。
在线示例
修改右侧代码,左侧预览会实时更新。
工作原理
abs(length(p) - 0.55) 是到半径 0.55 的圆形线条的距离,而不是到实心圆盘的距离。正好在圆环上时是 0,往两边都会变大。
光晕来自 0.015 / d。除以距离意味着:线上的像素得到一个很大的值,稍远一点的得到中等的值,很远的几乎是 0。这条又长又柔的尾巴,让它看起来像光而不是一条实心描边。max(d, 0.001) 是为了避免除以 0。
1.0 - exp(-color) 是一个简单的色调映射。没有它,最亮的中心会被截断成一片平平的蓝色;有了它,中心会渐渐变白,更像真实的霓虹灯。
试着改一改
| 修改 | 效果 |
|---|---|
0.015 改成 0.05 | 光晕更大更亮 |
vec3(0.2, 0.7, 1.0) 改成 vec3(1.0, 0.2, 0.6) | 粉色霓虹 |
length(p) 改成 max(abs(p.x), abs(p.y)) | 发光的方框代替圆环 |
删掉 exp 那一行 | 中心出现生硬的截断,对比一下就知道色调映射的作用 |