0
我想爲iOS Metal MPSImage編寫一些GPU加速函數。我需要知道的第一件事是如何訪問MPSImage中的原始紋理數據。當featureChannel> 4時,有多個紋理數據片。我不確定如何訪問每個這些切片。iOS MetalPerformanceShader:如何訪問MPSImage中的原始紋理數據
非常感謝
我想爲iOS Metal MPSImage編寫一些GPU加速函數。我需要知道的第一件事是如何訪問MPSImage中的原始紋理數據。當featureChannel> 4時,有多個紋理數據片。我不確定如何訪問每個這些切片。iOS MetalPerformanceShader:如何訪問MPSImage中的原始紋理數據
非常感謝
在典型的使用中,數據被存儲在組的四個特徵通道,我將稱之爲一個四方。 MTLTexture會把這些叫做texel,可能會想象它們是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);
}