【问题标题】:Is there any speed penalty to use **packed** vertex structure?使用 **packed** 顶点结构是否有任何速度损失?
【发布时间】:2019-10-26 19:29:27
【问题描述】:

我的金属着色器实现中有这个声明:

    struct InVertex {
      packed_float3 pos;
      packed_float2 textureCoord;
      packed_uchar4 color;
    };

使用 packed 声明是否有任何速度损失?如果是,如何测量?

【问题讨论】:

    标签: ios metal metalkit


    【解决方案1】:

    基于此Metal Shading Language Specification

    • 您不能使用 stage_in 属性来声明 packed 结构的成员 向量、矩阵、结构、位域、类型的引用或指针,或标量数组, 向量或矩阵。

    • MSL 函数和参数具有以下附加限制: 顶点或片段函数的返回类型不能包含 packed 向量类型、矩阵类型、结构类型的元素, 引用,或指向类型的指针。

    • 您可以使用数组索引来访问 packed 矢量数据类型的组件。然而,你 不能使用 .xyzw 或 .rgba 选择语法来访问 packed 矢量数据的组件 输入。

    使用 packed 顶点结构是否会降低速度?

    answer 中对其进行了很好的描述,简而言之,您将从使用它中受益,在速度方面,尤其是在传递大量数据时。

    【讨论】:

    • 感谢@0xBFE1A8!我更新了一点我的问题,因为我主要想知道速度惩罚
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 2011-04-06
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    相关资源
    最近更新 更多