金属质感 read() vs sample() 性能
Metal texture read() vs sample() performance
在尝试优化片段着色器中的 Metal 渲染性能时,我注意到根据场景的不同,有多种读取纹理的方法。我想知道纹理读取方法是否对性能有影响。
这是我尝试过的三种不同的选择:
- 在没有采样器的情况下使用
tex2D.read()
(使用 uint2
坐标)。
- 使用
tex2D.sample()
和像素坐标(使用 float2
坐标)
- 使用
tex2D.sample()
和归一化坐标(使用 float2
坐标)。
我是否应该期望这些选项之间 iOS 的性能差异?
它们大体相似。在 uint2 / float2 之间转换坐标可能需要比另一个更多的工作,但这种影响应该很小。
Read 在图像外部读取有未定义的行为,因此需要考虑这一点。
在尝试优化片段着色器中的 Metal 渲染性能时,我注意到根据场景的不同,有多种读取纹理的方法。我想知道纹理读取方法是否对性能有影响。
这是我尝试过的三种不同的选择:
- 在没有采样器的情况下使用
tex2D.read()
(使用uint2
坐标)。 - 使用
tex2D.sample()
和像素坐标(使用float2
坐标) - 使用
tex2D.sample()
和归一化坐标(使用float2
坐标)。
我是否应该期望这些选项之间 iOS 的性能差异?
它们大体相似。在 uint2 / float2 之间转换坐标可能需要比另一个更多的工作,但这种影响应该很小。
Read 在图像外部读取有未定义的行为,因此需要考虑这一点。