Matrix 如何利用矩阵数学进行HLSL中的邻域处理?

Matrix 如何利用矩阵数学进行HLSL中的邻域处理?,matrix,gpu,vectorization,hlsl,fragment-shader,Matrix,Gpu,Vectorization,Hlsl,Fragment Shader,我正在尝试使用HLSL在GPU上进行邻居处理,我想知道是否有一种方法可以同时加载一组相邻的样本,而不仅仅是一个样本,这样我就可以利用矩阵数学而不是for循环 我当前使用SampleLevel函数的实现类似于: float3 pixel=inputEx.SampleLevel(采样状态,uv+uvOffset,0.0,0.0) 相反,我希望一次加载多个样本,但我还没有找到用于此的API。或者,如果我的方法完全错误,请告诉我如何在HLSL中使用矢量化和矩阵数学。谢谢你的建议,祝你度过愉快的一天 据我

我正在尝试使用HLSL在GPU上进行邻居处理,我想知道是否有一种方法可以同时加载一组相邻的样本,而不仅仅是一个样本,这样我就可以利用矩阵数学而不是for循环

我当前使用SampleLevel函数的实现类似于:

float3 pixel=inputEx.SampleLevel(采样状态,uv+uvOffset,0.0,0.0)


相反,我希望一次加载多个样本,但我还没有找到用于此的API。或者,如果我的方法完全错误,请告诉我如何在HLSL中使用矢量化和矩阵数学。谢谢你的建议,祝你度过愉快的一天

据我所知,单纹理访问的最大值为float4

您的选项是(假设您只需要4个相邻值):

  • 调用4种加载方法(需要texel整数坐标,而不是UV)
  • 使用点采样器调用4种采样方法(需要将UV偏移0.5/textureSize,因此采样将是(u-偏移,v-偏移),(u+偏移,v-偏移),(u-偏移,v+偏移),(u+偏移,v+偏移))
  • 如果纹理为单通道(或仅需要红色通道),则可以使用“聚集-