Bloom 和霓虹光晕有什么区别?用同一个亮点做对照
程序化霓虹在一个片段着色器里计算像素离发光线条的距离。Bloom 则对已有画面做后处理:提取亮区、模糊,再叠加回原图。霓虹计算知道发光几何的位置;Bloom 只读取图像亮度,所以任何足够亮的区域都能贡献光晕。
先固定问题
程序霓虹直接计算“离亮线多远”,在同一个片段中产生光晕;Bloom 是后处理,先从整幅图提取亮部,再模糊、合成。前者知道发光几何的距离,后者只看到输入图的亮度,所以能让任意足够亮的物体一起扩散。
关键代码
float proceduralGlow=exp(-distanceToLine*falloff);
vec3 bright=source*smoothstep(threshold,threshold+softKnee,max(source.r,max(source.g,source.b)));
// A separate pass blurs bright. Final composition:
vec3 result=source+blurredHighlights*strength;
按顺序验证
分别打开已有霓虹和新 Bloom 示例。先看 Bloom 的 u_bright 中间通道确认哪些点进入处理,再看 u_blur。不要把提高最终曝光当作增加辉光半径。
适用范围和常见错误
本站的教学示例用 RGBA8 说明通道关系。生产 HDR Bloom 还要先确定线性颜色、超过一的亮度、浮点目标与色调映射顺序,不能直接把这个阈值当作物理曝光。