我正在开发一个带有简单矢量图形的 iPhone 游戏,尽管如果屏幕上的对象发光(即在渲染中应用了布隆过滤器),它看起来会特别好。
我对后处理技术相当陌生,我正在阅读的大多数教程都使用 GPU 上的着色器。我只是想知道这是否可以在 iPhone 硬件上实现,或者是否都必须在软件中完成(在这种情况下,我认为实时使用会太慢)。
这在 es1 设备上绝对是可能的。
1) 渲染纹理光照几何体,该几何体应该在黑色背景上绽放为纯白色。例如,如果相机在房间里看着窗户,并且您希望窗户绽放 - 仅将窗户渲染为纯白色,没有纹理。
2)创建此纹理的多个副本,每个副本缩小到之前大小的一半
3) 使用加法混合将所有这些拉伸到全屏的纹理渲染到渲染场景的顶部,调整每一层的 alpha 直到获得所需的质量
本质上,第 2 步和第 3 步所做的是使用本机纹理过滤在硬件中模拟高斯模糊。
所以你所拥有的是你的光源几何形状为黑底白字,高斯模糊,然后添加到你的场景中——瞧,假绽放:)
由于 iPhone 根本不支持着色器,我认为布隆过滤器很难实现。一些多通道技巧可能会根据场景产生令人信服的模仿,但可能太慢了。
此外,游戏“边缘”似乎在暂停屏幕上使用了绽放效果,但它是静态的,因此它可能是在软件中实现的。