0

我希望在游戏渲染期间尽可能多地保存深度信息,以便可以使用额外数据完成更高级的不同屏幕空间效果。这种混合模式将允许在典型渲染期间保存多达四个深度通道,同时保持深度排序。

混合模式将像以下 sudo 代码一样工作:

Cascade Blend mode:

 R channel
 If there is something in the green channel and nothing in the red channel, draw to the channel.
 
 G channel:
 If there is something in the blue channel and nothing in the green channel, draw to the channel.

 B channel:
 If there is something in the alpha channel and nothing in the blue channel, draw to the channel.
 
 A channel
 If there is nothing in the alpha channel, draw to the channel.

其实现可能如下所示:

 dest_r = src_r * (ceil(dest_g) - ceil(dest_r));
 dest_g = src_g * (ceil(dest_b) - ceil(dest_g));
 dest_b = src_b * (ceil(dest_a) - ceil(dest_b));
 dest_a = src_a * (1.0 - ceil(dest_a));

由于混合模式不能像片段着色器这样的代码直接修改,我很好奇这样的事情是否可以在现有技术的混合模式中实现。由于可能会渲染数千个对象,因此执行多着色器通道将是不现实的。每次渲染单个对象后,都需要复制当前帧缓冲区并将其传递回着色器。

4

0 回答 0