你好!
选择性绽放(Selective Bloom)是一个我在研究了一段时间也没有找到能够直接使用的解决方案的效果,由于这并不适用于URP,所以我想和大家分享我解决这个问题的方法。
对不起,对于那些不知道Bloom的人来讲,Bloom是一种后处理效果,它会为亮的像素添加一个光环效果,使其看起来像光源。 但是,问题在于这个效果只有考虑像素的亮度,而不是其颜色或其他属性。 因此,它很容易被不想要的像素触发。 例如,在我的游戏场景中,角色头发和皮肤都在很高的阈值下会发光,而我实际上只想使真正的光源发光。
因此,这是我的解决方案思路。 我首先添加了一个自定义渲染特性并使用一个我们在渲染中执行的渲染通道。 在这个通道中,我会在所有sprite上执行一个特殊的“绽放强度”着色器通道。 在这个通道中,只渲染sprite的发光强度。 然后,我会把这个通道的渲染目标设置为一个全局的纹理,这个纹理由绽放着色器可以读取。 对于典型的绽放着色器,我只需要修改PreFilter。 在这个函数里,我会将我的BloomIntensity纹理的值乘以源像素的亮度。 对于非发光材料,这个值是0,对于发光材料,我可以手动控制其发光强度,而不需要基于场景中的色彩值来做决定。
评论 (0)