金属质感 read() vs sample() 性能

Metal texture read() vs sample() performance

在尝试优化片段着色器中的 Metal 渲染性能时,我注意到根据场景的不同,有多种读取纹理的方法。我想知道纹理读取方法是否对性能有影响。

这是我尝试过的三种不同的选择:

  1. 在没有采样器的情况下使用 tex2D.read()(使用 uint2 坐标)。
  2. 使用 tex2D.sample() 和像素坐标(使用 float2 坐标)
  3. 使用 tex2D.sample() 和归一化坐标(使用 float2 坐标)。

我是否应该期望这些选项之间 iOS 的性能差异?

它们大体相似。在 uint2 / float2 之间转换坐标可能需要比另一个更多的工作,但这种影响应该很小。

Read 在图像外部读取有未定义的行为,因此需要考虑这一点。