使用 **packed** 顶点结构有任何速度损失吗?
Is there any speed penalty to use **packed** vertex structure?
我在我的金属着色器实现中有这个声明:
struct InVertex {
packed_float3 pos;
packed_float2 textureCoord;
packed_uchar4 color;
};
使用 packed 声明是否有任何速度损失?如果是,如何测量?
基于此Metal Shading Language Specification
您不能使用 stage_in 属性来声明 packed 的结构成员
向量、矩阵、结构、位域、类型的引用或指针,或标量数组,
向量或矩阵。
MSL 函数和参数有以下附加限制:
return 类型的顶点或片段函数不能包含
packed 向量类型、矩阵类型、结构类型的元素,
引用或指向类型的指针。
您可以使用数组索引来访问 packed 矢量数据类型的组件。然而,你
不能使用 .xyzw 或 .rgba 选择语法访问 packed 矢量数据的组件
类型。
Is there any speed penalty to use packed vertex structure?
这个 中描述得非常好,简而言之,您会从速度方面受益,尤其是在传递大量数据时。
我在我的金属着色器实现中有这个声明:
struct InVertex {
packed_float3 pos;
packed_float2 textureCoord;
packed_uchar4 color;
};
使用 packed 声明是否有任何速度损失?如果是,如何测量?
基于此Metal Shading Language Specification
您不能使用 stage_in 属性来声明 packed 的结构成员 向量、矩阵、结构、位域、类型的引用或指针,或标量数组, 向量或矩阵。
MSL 函数和参数有以下附加限制: return 类型的顶点或片段函数不能包含 packed 向量类型、矩阵类型、结构类型的元素, 引用或指向类型的指针。
您可以使用数组索引来访问 packed 矢量数据类型的组件。然而,你 不能使用 .xyzw 或 .rgba 选择语法访问 packed 矢量数据的组件 类型。
Is there any speed penalty to use packed vertex structure?
这个