iOS MetalPerformanceShader:如何在MPSImage中访问原始纹理数据



我想为iOS Metal MPSImage编写一些GPU加速功能。我需要知道的第一件事是如何在MPSImage中访问原始纹理数据。当featureChannel> 4时,纹理数据有多个切片。我不确定如何访问这些切片。

Thanks to lot

在典型使用中,数据存储在四个特征通道的集合中,我将其称为四重奏。MTLTexture将这些称为texel,可能会想象它们是r g b A,但实际上它们是feature_channels[some_offset + {0,1,2,3}]

mpimages通常是MTLTexture2DArrays。像素[0,0](特征通道0-3)的第一个四重奏出现在图像切片0的坐标{0,0}处。像素[0,0]的第二个四重奏(特征通道4-7)出现在图像切片1中的坐标{0,0}处,以此类推。

// loads the set of 4 contiguous aligned feature channels containing channel
float4 loadQuartet( texture2d_array<float, access::sample> src, 
                    uint2 position, 
                    ushort channel )
{
   return src.read( position, firstChannel >> 2 ); 
}

最新更新