将超过4通道的数据传递给OpenGL或Vulkan

时间:2017-08-21 07:30:29

标签: opengl textures vulkan

我想将以下值作为纹理传递给片段着色器:

  • Base R
  • Base G
  • Base B
  • 材料开关(金属/电介质)
  • 普通x
  • 正常y
  • Normal z
  • IOR(仅适用于电介质)
  • 粗糙度

这是很多东西。看起来这需要在OpenGL中使用三种不同的纹理。问题:

  • 是否有任何OpenGL扩展可以将其作为一个纹理传递?
  • 根据我对Vulkan的理解,GPU内存更容易访问。这是否意味着您可以使用通用纹理格式?

1 个答案:

答案 0 :(得分:2)

即使在Vulkan中,纹理也不能超过四个通道。但是,在OpenGL和Vulkan中,您可以使用32位按通道纹理,并使用类似packUnormhttps://www.khronos.org/registry/OpenGL-Refpages/gl4/html/packUnorm.xhtml)的内容。但它只适用于整数纹理,你必须自己进行过滤

另一种方法可能是使用像SSBO ou TBO这样的东西。但我不明白使用3个纹理是什么问题。

相关问题