GLSL 效果示例

全息投影:让扫描带扫过带抖动的剪影

透明条纹与少量水平错位叠在同一剪影上,轮廓始终可辨。

在线示例

修改右侧代码,左侧预览会实时更新。

观察什么

透明条纹与少量水平错位叠在同一剪影上,轮廓始终可辨。

实现原理

剪影遮罩与高频扫描线相乘,另加一条慢速亮带。随机错位只作用于少量水平行。

找到控制效果的代码

vec2 q=p;q.x+=step(.95,noise(vec2(floor(q.y*25.),floor(u_time*8.))))*.08;float shape=1.-smoothstep(.45,.46,length(q));float scan=pow(.5+.5*sin(q.y*180.),4.);float band=exp(-pow((q.y-mod(u_time*.3,2.)+1.)*15.,2.));c+=vec3(.05,.8,1.)*shape*(.2+.55*scan+band)*(0.5+u_parameter);

动手修改

把 sin(q.y*180.) 改为 sin(q.y*90.)。细扫描线的间距会加倍,宽亮带仍按 u_time*.3 设定的速度移动。

调试与成本

只有 step(.95,noise(...)) 选中的横条才会跳动。把 .95 降为 .8,更多横条会发生位移;圆形遮罩在偏移后计算,因此这些横条里的剪影本身也会移动。

用到的内置函数

一步步学会这个效果