【问题标题】:iOS MetalPerformanceShader: How to access the raw texture data inside MPSImageiOS MetalPerformanceShader:如何访问 MPSImage 中的原始纹理数据
【发布时间】:2016-09-18 03:10:21
【问题描述】:

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

非常感谢

【问题讨论】:

    标签: ios gpu metal


    【解决方案1】:

    在典型用法中,数据存储在四个特征通道的集合中,我将其称为四重奏。 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)出现在坐标{0,0} 在图像切片 1 中,依此类推。

    // 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 ); 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      • 2021-10-12
      • 2017-06-03
      • 1970-01-01
      • 2016-04-01
      • 2016-07-08
      • 2012-11-02
      相关资源
      最近更新 更多