Vulkan / OpenGL子通道可获取多个片段

时间:2020-10-19 17:07:16

标签: opengl-es vulkan framebuffer

因此,Vulkan引入了子通道,并且opengl通过ARM_framebuffer_fetch实现了类似的行为

过去,我已成功使用framebuffer_fetch进行色调映射后效果着色器。

当时的局限性是只能读取当前渲染片段所在位置的帧缓冲区内容。

现在,我想知道的是,Vulkan(或什至是OpenGL ES)中是否有任何方法可以从多个位置读取(例如,实现模糊内核),而无需平铺的硬件来存储/加载到RAM。

从理论上讲,我认为应该有可能,基于内核大小(例如,如果内核大小为4像素,则解析出的图块需要为4),第一遍wp只需渲染比模糊子遍稍大一点即可像素小于拼贴缓冲器中的像素),并且某些像素将不得不冗余渲染(在图块的重叠区域)。

现在,有办法吗? 我似乎想起曾经看过一些与子通行证有关的Vulkan指令,这些指令可以定义支撑尺寸(听起来像我现在正在寻找的尺寸),但我不记得在哪里看到了。 所以我的问题:

  1. 在移动平铺渲染器体系结构上使用Vulkan时,是否可以向前渲染某些几何图形并对其进行全屏模糊渲染,而这些操作都可以在一次拼贴中完成(无需硬件存储)中间传递到ram的结果,然后在模糊时从ram加载纹理)?如果可以,怎么办?

  2. 如果对1的回答是“是”,那么也可以在OpenGL ES中完成吗?

1 个答案:

答案 0 :(得分:0)

简短回答,不。 Vulkan子通道仍然具有1:1的片段对像素关联要求。