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

问题描述

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

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

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

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

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

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

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

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

解决方法

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...