Ogre:应用合成器进行叠加

Ogre: Apply compositor for overlay

Ogre 1.8.1 在合成器之后叠加渲染。例如:对于合成器 "Grayscale" 覆盖仍然是彩色的。 有什么方法可以将合成器应用于场景中的所有叠加层?仅针对某些叠加层?

默认情况下 Ogre 的覆盖设置为渲染队列 100 (RENDER_QUEUE_OVERLAY)。然而,默认情况下 Ogre 的合成器(更具体地说是 render_scene pass)只包含最多 95 个渲染队列(RENDER_QUEUE_SKIES_LATE)。

因此,为了确保您的叠加层包含在合成器中,您需要告诉合成器包含所有对象 = 直到最后一个渲染队列 105 (RENDER_QUEUE_MAX) 的所有对象。

因此请尝试在您的合成器脚本中使用以下代码片段来获取要用作合成器着色器材质输入的场景内容:

pass render_scene  // render everything including overlays
{
    first_render_queue 0
    last_render_queue 105
}

我找到了解决办法。使用这些步骤:

  1. 检测合成器的视口。
  2. 调用 setOverlaysEnabled(true)
  3. 在合成器工作时隐藏所有叠加层。否则,它们将与合成器的结果重叠。
  4. 在合成器渲染之前恢复所有覆盖。为 3 和 4 使用渲染目标侦听器。