使用 OpenGL ES 进行分层渲染

Layered rendering with OpenGL ES

我正在尝试实现图层渲染。我有些疑惑。 1)我们可以在没有几何着色器的情况下进行分层渲染吗?我的意思是将图层编号值从顶点着色器传递到片段着色器。在片段着色器中设置 gl_Layer。 3)我尝试设置在片段着色器中硬编码的 gl_Layer 值。首先,我将它设置为零并观察图像,我看到我的三角形呈现在图像的左下角。 接下来,我将 gl_Layer 值更改为 1 。但我再次在与以前相同的位置看到它。

如何分层渲染???假设我有 4 个层,所有层将在绘制到 4 个层后并排显示在单个图像中??

有人可以解释一下吗?

谢谢

Can we do layered rendering without a Geometry shader.

OpenGL ES 和桌面 OpenGL 都支持通过几何着色器进行分层渲染。但是,只有桌面 GL 具有允许 VS 定义要渲染到的层的 ARB_shader_viewport_layer_array extension

I tried setting the gl_Layer value hardcoded in the fragment shader.

在片段着色器中,gl_Layer是一个输入;修改它不会有任何结果。要渲染到的层是图元的 属性(这就是为什么 GS 是输出它的层)。图元针对特定层进行光栅化。到片段生成时,片段目标层已经设置好。


分层渲染允许渲染到 layered images。这意味着顶点处理步骤为每个图元分配了一个层。当光栅化器光栅化图元时,生成的片段将写入图元分配到的特定层。

图像不是“并排”的;它们是分层图像的一部分,例如数组纹理。