实时渲染后处理效果

cla*_*amp 3 opengl directx rendering

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

他们一般如何工作?即如何访问最终图片以便您可以对其进行更改?

你把它渲染成纹理吗?如果是这样,你如何确保纹理适合你的屏幕尺寸?

谢谢!

Ale*_*ler 6

基本工作流程

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

在后处理像素着色器中,如果您知道当前纹理元素的标准化x,y位置(由内插到像素着色器阶段的全屏四边形的纹理坐标给出),则对单个场景像素的访问非常简单.

许多后处理效果需要多次传递到临时渲染目标.一个例子是臭名昭着的"绽放"效果:你拍摄场景纹理,减去暗部分,模糊并缩小剩余的图像(通常使用乒乓逻辑在多次传递中重复使用渲染目标).最后的合成步骤只是添加了绽放纹理和原始场景.