【问题标题】:realtime rendering postprocessing effects实时渲染后处理效果
【发布时间】:2011-04-02 16:06:54
【问题描述】:

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

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

您是否将其渲染为纹理?如果是这样,您如何确保纹理适合您的屏幕尺寸?

谢谢!

【问题讨论】:

    标签: opengl directx rendering


    【解决方案1】:

    基本工作流程:

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

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

    许多后期处理效果需要多次传递到临时渲染目标。一个例子是臭名昭著的“绽放”效果:您获取场景纹理,减去黑暗部分,模糊并缩小剩余图像(通常使用乒乓逻辑在多个通道中完成以重用渲染目标)。最后的合成步骤只是添加了绽放纹理和原始场景。

    【讨论】:

    • 谢谢,但是如果我的渲染窗口是 377x251 并且我使用的渲染目标纹理是 512x512,那么使用这种技术的结果不会包含一些舍入错误?
    • 您可以使用 512x512 纹理的 377x251 部分来避免性能和兼容性问题。
    猜你喜欢
    • 2013-06-13
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 2019-02-19
    • 2014-03-07
    • 2017-09-21
    • 1970-01-01
    • 2018-05-31
    相关资源
    最近更新 更多