本笔记仅为个人的理解,如果有误欢迎指出。
Bokeh Effects on the SPU
基于 SPU 的散景效果实现

本文讲述的是一种通过sprite实现的散景方案,并将其应用到PlayStation 3 的 协同处理单元(Synergistic Processing Unit,SPU)
算法思路很简单通过分析每个像素的亮度,如果高于阈值就在对应位置生成一个sprite模拟散射效果。
像素的亮度计算公式以及平均公式:

计算平均亮度时需要用到滤波核确定平均范围,文章演示中用了5x5的滤波核:

这里的优化方案是降低遍历用的分辨率以及选用小一些的滤波核。
这样利用滤波核计算出每个像素的亮度后,如果该像素亮度高于某个阈值(threshold),就在该像素对应的屏幕空间位置生成一个纹理精灵(sprite)

简单来说流程就是:
遍历像素
↓
计算亮度
↓
亮度 > 阈值
↓
生成一个 Bokeh Sprite
接下来需要为每个Sprite调整缩放值,这部分通过计算像素深度来去调整:

参考资料: