在上次讲模糊的时候总是过于暗淡之后,tt补充道:
你应该注意到了pixi的strength在传给shader之前进行了/4?在对两者进行比较之前或许应该先考虑这个区别。
哦,我承认,我没注意到。
以 X 方向的模糊为例,Pixi 的 strength
计算是这样的:
|
于是在我的代码中就得这样:
|
而原来只是简单的设置为 strengthX
:
|
难怪了。以下是对比图。
对比图中,从左到右、从上到下分别是:
- Pixi 的渲染结果;
<canvas>
2D + Box Blur(对 Gaussian Blur 的一种快速近似)的渲染结果,以此为标准;- 修正后的 GLantern 渲染结果,循环次数为 5+5(X 方向5次,Y 方向5次);
- 修正后的 GLantern 渲染结果,循环次数为 9+9。
可以见到,5+5的方案的模糊程度与标准最为接近(可以取色验证一下),有效地保留了对比度,效果较9+9也不逊色。所以要改用新公式&5+5了。
5+5、9+9 是什么意思呢?是这一段代码:
|
分别对 X 和 Y 方向应用 passCoeff * pass
次快速高斯模糊。