2011-04-02 80 views
3

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

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

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

谢谢!

回答

6

基本工作流程:

  • 渲染场景的渲染目标/纹理(屏幕尺寸,通常是相同的格式)
  • 复位渲染目标 - 要么到另一个渲染目标/纹理或实际后备缓冲
  • 设置后处理的像素着色器,场景的纹理绑定到一个采样
  • 使用虚拟顶点着色器
上绘制场景中的全屏幕四210

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

许多后期处理效果需要多次传递给临时渲染目标。一个例子就是臭名昭着的“绽放”效果:您将场景纹理,减去黑色部分,模糊并缩小剩余图像(通常使用乒乓逻辑多次完成以重新使用渲染目标)。最后的构图步骤只是添加布卢姆纹理和原始场景。

+0

谢谢,但如果我的渲染窗口是例如377x251和我使用的rendertarget纹理是512x512,使用这种技术不会产生一些舍入错误? – clamp 2011-04-02 16:31:45

+0

当然你的渲染目标应该与屏幕大小相匹配。 – 2011-04-02 16:32:13

+0

您可以使用该512x512纹理的377x251部分来避免性能和兼容性问题。 – Kromster 2011-04-02 20:56:36