实时渲染后处理效果

3

我有一个关于实时渲染后处理效果的问题。

它们通常是如何工作的?也就是说,您如何访问最终图片以便进行更改?

您是否将其渲染到纹理中?如果是这样,您如何确保纹理适合您的屏幕大小?

谢谢!

1个回答

6

基本工作流程:

  • 将场景渲染到一个渲染目标/纹理中(通常是屏幕大小,格式相同)
  • 重置渲染目标 - 可以是另一个渲染目标/纹理或实际后备缓冲区
  • 为后处理设置像素着色器,将场景纹理绑定到采样器上
  • 使用虚拟顶点着色器在场景上绘制全屏四边形

在后处理像素着色器中,如果您知道当前纹理元素的归一化x、y位置(由插值到像素着色器阶段的全屏四边形的纹理坐标给出),则可以轻松访问单个场景像素。

许多后处理效果需要多次传递到临时渲染目标。一个例子是臭名昭著的“泛光”效果:您获取场景纹理,减去暗部分,模糊并缩小剩余图像(通常使用ping-pong逻辑进行多次传递以重用渲染目标)。最终合成步骤只需添加泛光纹理和原始场景即可。


谢谢,但是如果我的渲染窗口大小为377x251,而我使用的渲染目标纹理为512x512,那么使用这种技术是否会产生一些舍入误差呢? - clamp
你可以使用512x512纹理中的377x251部分,以避免性能和兼容性问题。 - Kromster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接