纹理存储器中具有大内核的GLSL卷积

时间:2011-03-07 08:35:42

标签: textures glsl texture2d convolution

我对GLSL很新,但我正在尝试使用片段着色器编写卷积内核以进行图像处理。当我的内核很小(3x3)使用常量矩阵时,我能够做到这一点。但是,现在,我想使用大小为9x9的内核。或者对于任意大小的问题。我最初的想法是设置一个包含卷积内核的纹理内存。然后使用2Dsampler我读取内核的纹理内存并将其与图像的纹理内存(也是2Dsampler)进行卷积。这是正确的方法吗?

我想你也可以创建一个包含系数的任意大小的数组。这可能适用于81个系数,但是如果你想要更大的东西会发生什么?比如说20x20?

一般来说,如果你需要访问GLSL中的多个大对象,那么正确的策略是什么?谢谢! 谢谢,

d

2 个答案:

答案 0 :(得分:1)

顺序访问:

  1. 顶点属性
  2. 随机访问:

    1. 纹理缓冲区 / 统一块如果源是缓冲区
    2. 制服如果来源较小
    3. 纹理否则

答案 1 :(得分:0)

是的,因为均匀和恒定的空间是有限的,使用纹理替换是一个很好的策略。