0

使用着色器模型 5/D3D11/HLSL。

我想将 texel 的 2D 数组视为 Vectors 的 2D 矩阵

      u
v (1,4,3,9)   (7, 5.5, 4.9, 2.1)

(每个纹素是一个 4 分量向量)。对于不同的着色器,我需要访问纹理中数据的特定范围。因此,纹理中要访问的范围自然应该被索引为 u,v 分量。

我将如何在 HLSL 中做到这一点?我在想以下几点:

  • 按照正常方式创建纹理
  • 将向量值加载到纹理中(每个纹素 1 个向量)
  • 关闭纹理采样的所有线性插值(“最近邻”)
  • 在着色器中,使用纹理坐标查找您需要的向量

唯一让我感到不安的是,当我使用浮点 u's 和 v's 索引纹理时是否会引入奇怪的错误。

如果纹理是 1024x1024 纹素,并且我正在尝试索引 (3,2)->(3,7),那将是 u=(3/1024,2/1024)->(3/1024,7/ 1024)感觉有点摇晃。有没有办法通过 int 组件索引纹理?或者它会很好地工作吗?

Texture2DArray

不想为此使用 GPGPU 框架(所以请不要 CUDA 建议 :)。

4

1 回答 1

0

您可以在 hlsl 5.0 中使用operator[]

看这里

于 2011-12-15T04:59:20.247 回答