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

时间:2016-09-18 03:10:21

标签: ios gpu metal

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

非常感谢

1 个答案:

答案 0 :(得分:0)

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

MPSImages通常是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 ); 
}