从金属纹理2D读取<float>或从中采样更快吗?



我对按像素处理2d图像感兴趣,需要最快的方法从金属图像中读取像素值作为纹理2d。从纹理中采样或直接从纹理中读取会更快吗?读取需要从float2到uint2的坐标转换,但如果不需要插值,那当然更可取。

采样和读取哪个更快?此外,在这种情况下使用的最佳采样器是什么?

非常感谢!

对纹理进行采样,尤其是如果它有mipmaps,可能会导致从内存中读取大量纹理元素,因此听起来读取速度应该更快。但同时,如果采样位置是一致的,则会碰到相同的纹素,这些纹素将被缓存。采样还需要进行一些平均。但是,要想更快地回答这个问题,最好的方法就是测量。您可以尝试使用Metal System Trace或Xcode GPU调试器。

如果你正在逐像素处理纹理,为了正确起见,我建议你阅读它,而不是采样。

如果你在TBDR设备上,你也可以使用tile调度来为附件的每个像素运行一个线程

最新更新