mirror of
https://github.com/gfx-rs/wgpu.git
synced 2026-01-09 03:48:03 -05:00
317 lines
20 KiB
Plaintext
317 lines
20 KiB
Plaintext
// language: metal1.0
|
|
#include <metal_stdlib>
|
|
#include <simd/simd.h>
|
|
|
|
using metal::uint;
|
|
|
|
struct _mslBufferSizes {
|
|
uint buffer_size1;
|
|
};
|
|
|
|
struct VertexOutput {
|
|
metal::float4 position;
|
|
};
|
|
struct VertexInput {
|
|
metal::uint3 v_uint8_;
|
|
metal::uint3 v_uint8x2_;
|
|
metal::uint3 v_uint8x4_;
|
|
metal::int3 v_sint8_;
|
|
metal::int3 v_sint8x2_;
|
|
metal::int3 v_sint8x4_;
|
|
metal::float3 v_unorm8_;
|
|
metal::float3 v_unorm8x2_;
|
|
metal::float3 v_unorm8x4_;
|
|
metal::float3 v_snorm8_;
|
|
metal::float3 v_snorm8x2_;
|
|
metal::float3 v_snorm8x4_;
|
|
metal::uint3 v_uint16_;
|
|
metal::uint3 v_uint16x2_;
|
|
metal::uint3 v_uint16x4_;
|
|
metal::int3 v_sint16_;
|
|
metal::int3 v_sint16x2_;
|
|
metal::int3 v_sint16x4_;
|
|
metal::float3 v_unorm16_;
|
|
metal::float3 v_unorm16x2_;
|
|
metal::float3 v_unorm16x4_;
|
|
metal::float3 v_snorm16_;
|
|
metal::float3 v_snorm16x2_;
|
|
metal::float3 v_snorm16x4_;
|
|
metal::float3 v_float16_;
|
|
metal::float3 v_float16x2_;
|
|
metal::float3 v_float16x4_;
|
|
metal::float3 v_float32_;
|
|
metal::float3 v_float32x2_;
|
|
metal::float3 v_float32x3_;
|
|
metal::float3 v_float32x4_;
|
|
metal::uint3 v_uint32_;
|
|
metal::uint3 v_uint32x2_;
|
|
metal::uint3 v_uint32x3_;
|
|
metal::uint3 v_uint32x4_;
|
|
metal::int3 v_sint32_;
|
|
metal::int3 v_sint32x2_;
|
|
metal::int3 v_sint32x3_;
|
|
metal::int3 v_sint32x4_;
|
|
metal::float3 v_unorm10_10_10_2_;
|
|
metal::float3 v_unorm8x4_bgra;
|
|
};
|
|
uint unpackUint8_(metal::uchar b0) {
|
|
return uint(b0);
|
|
}
|
|
metal::uint2 unpackUint8x2_(metal::uchar b0, metal::uchar b1) {
|
|
return metal::uint2(b0, b1);
|
|
}
|
|
metal::uint4 unpackUint8x4_(metal::uchar b0, metal::uchar b1, metal::uchar b2, metal::uchar b3) {
|
|
return metal::uint4(b0, b1, b2, b3);
|
|
}
|
|
int unpackSint8_(metal::uchar b0) {
|
|
return int(as_type<char>(b0));
|
|
}
|
|
metal::int2 unpackSint8x2_(metal::uchar b0, metal::uchar b1) {
|
|
return metal::int2(as_type<char>(b0), as_type<char>(b1));
|
|
}
|
|
metal::int4 unpackSint8x4_(metal::uchar b0, metal::uchar b1, metal::uchar b2, metal::uchar b3) {
|
|
return metal::int4(as_type<char>(b0), as_type<char>(b1), as_type<char>(b2), as_type<char>(b3));
|
|
}
|
|
float unpackUnorm8_(metal::uchar b0) {
|
|
return float(float(b0) / 255.0f);
|
|
}
|
|
metal::float2 unpackUnorm8x2_(metal::uchar b0, metal::uchar b1) {
|
|
return metal::float2(float(b0) / 255.0f, float(b1) / 255.0f);
|
|
}
|
|
metal::float4 unpackUnorm8x4_(metal::uchar b0, metal::uchar b1, metal::uchar b2, metal::uchar b3) {
|
|
return metal::float4(float(b0) / 255.0f, float(b1) / 255.0f, float(b2) / 255.0f, float(b3) / 255.0f);
|
|
}
|
|
float unpackSnorm8_(metal::uchar b0) {
|
|
return float(metal::max(-1.0f, as_type<char>(b0) / 127.0f));
|
|
}
|
|
metal::float2 unpackSnorm8x2_(metal::uchar b0, metal::uchar b1) {
|
|
return metal::float2(metal::max(-1.0f, as_type<char>(b0) / 127.0f), metal::max(-1.0f, as_type<char>(b1) / 127.0f));
|
|
}
|
|
metal::float4 unpackSnorm8x4_(metal::uchar b0, metal::uchar b1, metal::uchar b2, metal::uchar b3) {
|
|
return metal::float4(metal::max(-1.0f, as_type<char>(b0) / 127.0f), metal::max(-1.0f, as_type<char>(b1) / 127.0f), metal::max(-1.0f, as_type<char>(b2) / 127.0f), metal::max(-1.0f, as_type<char>(b3) / 127.0f));
|
|
}
|
|
metal::uint unpackUint16_(metal::uint b0, metal::uint b1) {
|
|
return metal::uint(b1 << 8 | b0);
|
|
}
|
|
metal::uint2 unpackUint16x2_(metal::uint b0, metal::uint b1, metal::uint b2, metal::uint b3) {
|
|
return metal::uint2(b1 << 8 | b0, b3 << 8 | b2);
|
|
}
|
|
metal::uint4 unpackUint16x4_(metal::uint b0, metal::uint b1, metal::uint b2, metal::uint b3, metal::uint b4, metal::uint b5, metal::uint b6, metal::uint b7) {
|
|
return metal::uint4(b1 << 8 | b0, b3 << 8 | b2, b5 << 8 | b4, b7 << 8 | b6);
|
|
}
|
|
int unpackSint16_(metal::ushort b0, metal::ushort b1) {
|
|
return int(as_type<short>(metal::ushort(b1 << 8 | b0)));
|
|
}
|
|
metal::int2 unpackSint16x2_(metal::ushort b0, metal::ushort b1, metal::ushort b2, metal::ushort b3) {
|
|
return metal::int2(as_type<short>(metal::ushort(b1 << 8 | b0)), as_type<short>(metal::ushort(b3 << 8 | b2)));
|
|
}
|
|
metal::int4 unpackSint16x4_(metal::ushort b0, metal::ushort b1, metal::ushort b2, metal::ushort b3, metal::ushort b4, metal::ushort b5, metal::ushort b6, metal::ushort b7) {
|
|
return metal::int4(as_type<short>(metal::ushort(b1 << 8 | b0)), as_type<short>(metal::ushort(b3 << 8 | b2)), as_type<short>(metal::ushort(b5 << 8 | b4)), as_type<short>(metal::ushort(b7 << 8 | b6)));
|
|
}
|
|
float unpackUnorm16_(metal::ushort b0, metal::ushort b1) {
|
|
return float(float(b1 << 8 | b0) / 65535.0f);
|
|
}
|
|
metal::float2 unpackUnorm16x2_(metal::ushort b0, metal::ushort b1, metal::ushort b2, metal::ushort b3) {
|
|
return metal::float2(float(b1 << 8 | b0) / 65535.0f, float(b3 << 8 | b2) / 65535.0f);
|
|
}
|
|
metal::float4 unpackUnorm16x4_(metal::ushort b0, metal::ushort b1, metal::ushort b2, metal::ushort b3, metal::ushort b4, metal::ushort b5, metal::ushort b6, metal::ushort b7) {
|
|
return metal::float4(float(b1 << 8 | b0) / 65535.0f, float(b3 << 8 | b2) / 65535.0f, float(b5 << 8 | b4) / 65535.0f, float(b7 << 8 | b6) / 65535.0f);
|
|
}
|
|
float unpackSnorm16_(metal::ushort b0, metal::ushort b1) {
|
|
return metal::unpack_snorm2x16_to_float(b1 << 8 | b0).x;
|
|
}
|
|
metal::float2 unpackSnorm16x2_(uint b0, uint b1, uint b2, uint b3) {
|
|
return metal::unpack_snorm2x16_to_float(b3 << 24 | b2 << 16 | b1 << 8 | b0);
|
|
}
|
|
metal::float4 unpackSnorm16x4_(uint b0, uint b1, uint b2, uint b3, uint b4, uint b5, uint b6, uint b7) {
|
|
return metal::float4(metal::unpack_snorm2x16_to_float(b3 << 24 | b2 << 16 | b1 << 8 | b0), metal::unpack_snorm2x16_to_float(b7 << 24 | b6 << 16 | b5 << 8 | b4));
|
|
}
|
|
float unpackFloat16_(metal::ushort b0, metal::ushort b1) {
|
|
return float(as_type<half>(metal::ushort(b1 << 8 | b0)));
|
|
}
|
|
metal::float2 unpackFloat16x2_(metal::ushort b0, metal::ushort b1, metal::ushort b2, metal::ushort b3) {
|
|
return metal::float2(as_type<half>(metal::ushort(b1 << 8 | b0)), as_type<half>(metal::ushort(b3 << 8 | b2)));
|
|
}
|
|
metal::float4 unpackFloat16x4_(metal::ushort b0, metal::ushort b1, metal::ushort b2, metal::ushort b3, metal::ushort b4, metal::ushort b5, metal::ushort b6, metal::ushort b7) {
|
|
return metal::float4(as_type<half>(metal::ushort(b1 << 8 | b0)), as_type<half>(metal::ushort(b3 << 8 | b2)), as_type<half>(metal::ushort(b5 << 8 | b4)), as_type<half>(metal::ushort(b7 << 8 | b6)));
|
|
}
|
|
float unpackFloat32_(uint b0, uint b1, uint b2, uint b3) {
|
|
return as_type<float>(b3 << 24 | b2 << 16 | b1 << 8 | b0);
|
|
}
|
|
metal::float2 unpackFloat32x2_(uint b0, uint b1, uint b2, uint b3, uint b4, uint b5, uint b6, uint b7) {
|
|
return metal::float2(as_type<float>(b3 << 24 | b2 << 16 | b1 << 8 | b0), as_type<float>(b7 << 24 | b6 << 16 | b5 << 8 | b4));
|
|
}
|
|
metal::float3 unpackFloat32x3_(uint b0, uint b1, uint b2, uint b3, uint b4, uint b5, uint b6, uint b7, uint b8, uint b9, uint b10, uint b11) {
|
|
return metal::float3(as_type<float>(b3 << 24 | b2 << 16 | b1 << 8 | b0), as_type<float>(b7 << 24 | b6 << 16 | b5 << 8 | b4), as_type<float>(b11 << 24 | b10 << 16 | b9 << 8 | b8));
|
|
}
|
|
metal::float4 unpackFloat32x4_(uint b0, uint b1, uint b2, uint b3, uint b4, uint b5, uint b6, uint b7, uint b8, uint b9, uint b10, uint b11, uint b12, uint b13, uint b14, uint b15) {
|
|
return metal::float4(as_type<float>(b3 << 24 | b2 << 16 | b1 << 8 | b0), as_type<float>(b7 << 24 | b6 << 16 | b5 << 8 | b4), as_type<float>(b11 << 24 | b10 << 16 | b9 << 8 | b8), as_type<float>(b15 << 24 | b14 << 16 | b13 << 8 | b12));
|
|
}
|
|
uint unpackUint32_(uint b0, uint b1, uint b2, uint b3) {
|
|
return (b3 << 24 | b2 << 16 | b1 << 8 | b0);
|
|
}
|
|
uint2 unpackUint32x2_(uint b0, uint b1, uint b2, uint b3, uint b4, uint b5, uint b6, uint b7) {
|
|
return uint2((b3 << 24 | b2 << 16 | b1 << 8 | b0), (b7 << 24 | b6 << 16 | b5 << 8 | b4));
|
|
}
|
|
uint3 unpackUint32x3_(uint b0, uint b1, uint b2, uint b3, uint b4, uint b5, uint b6, uint b7, uint b8, uint b9, uint b10, uint b11) {
|
|
return uint3((b3 << 24 | b2 << 16 | b1 << 8 | b0), (b7 << 24 | b6 << 16 | b5 << 8 | b4), (b11 << 24 | b10 << 16 | b9 << 8 | b8));
|
|
}
|
|
metal::uint4 unpackUint32x4_(uint b0, uint b1, uint b2, uint b3, uint b4, uint b5, uint b6, uint b7, uint b8, uint b9, uint b10, uint b11, uint b12, uint b13, uint b14, uint b15) {
|
|
return metal::uint4((b3 << 24 | b2 << 16 | b1 << 8 | b0), (b7 << 24 | b6 << 16 | b5 << 8 | b4), (b11 << 24 | b10 << 16 | b9 << 8 | b8), (b15 << 24 | b14 << 16 | b13 << 8 | b12));
|
|
}
|
|
int unpackSint32_(uint b0, uint b1, uint b2, uint b3) {
|
|
return as_type<int>(b3 << 24 | b2 << 16 | b1 << 8 | b0);
|
|
}
|
|
metal::int2 unpackSint32x2_(uint b0, uint b1, uint b2, uint b3, uint b4, uint b5, uint b6, uint b7) {
|
|
return metal::int2(as_type<int>(b3 << 24 | b2 << 16 | b1 << 8 | b0), as_type<int>(b7 << 24 | b6 << 16 | b5 << 8 | b4));
|
|
}
|
|
metal::int3 unpackSint32x3_(uint b0, uint b1, uint b2, uint b3, uint b4, uint b5, uint b6, uint b7, uint b8, uint b9, uint b10, uint b11) {
|
|
return metal::int3(as_type<int>(b3 << 24 | b2 << 16 | b1 << 8 | b0), as_type<int>(b7 << 24 | b6 << 16 | b5 << 8 | b4), as_type<int>(b11 << 24 | b10 << 16 | b9 << 8 | b8));
|
|
}
|
|
metal::int4 unpackSint32x4_(uint b0, uint b1, uint b2, uint b3, uint b4, uint b5, uint b6, uint b7, uint b8, uint b9, uint b10, uint b11, uint b12, uint b13, uint b14, uint b15) {
|
|
return metal::int4(as_type<int>(b3 << 24 | b2 << 16 | b1 << 8 | b0), as_type<int>(b7 << 24 | b6 << 16 | b5 << 8 | b4), as_type<int>(b11 << 24 | b10 << 16 | b9 << 8 | b8), as_type<int>(b15 << 24 | b14 << 16 | b13 << 8 | b12));
|
|
}
|
|
metal::float4 unpackUnorm10_10_10_2_(uint b0, uint b1, uint b2, uint b3) {
|
|
return metal::unpack_unorm10a2_to_float(b3 << 24 | b2 << 16 | b1 << 8 | b0);
|
|
}
|
|
metal::float4 unpackUnorm8x4Bgra(metal::uchar b0, metal::uchar b1, metal::uchar b2, metal::uchar b3) {
|
|
return metal::float4(float(b2) / 255.0f, float(b1) / 255.0f, float(b0) / 255.0f, float(b3) / 255.0f);
|
|
}
|
|
|
|
struct render_vertexOutput {
|
|
metal::float4 position [[position]];
|
|
};
|
|
struct vb_1_type { metal::uchar data[644]; };
|
|
vertex render_vertexOutput render_vertex(
|
|
uint v_id [[vertex_id]]
|
|
, const device vb_1_type* vb_1_in [[buffer(1)]]
|
|
, constant _mslBufferSizes& _buffer_sizes [[user(fake0)]]
|
|
) {
|
|
metal::uint3 v_uint8_ = {};
|
|
metal::uint3 v_uint8x2_ = {};
|
|
metal::uint3 v_uint8x4_ = {};
|
|
metal::int3 v_sint8_ = {};
|
|
metal::int3 v_sint8x2_ = {};
|
|
metal::int3 v_sint8x4_ = {};
|
|
metal::float3 v_unorm8_ = {};
|
|
metal::float3 v_unorm8x2_ = {};
|
|
metal::float3 v_unorm8x4_ = {};
|
|
metal::float3 v_snorm8_ = {};
|
|
metal::float3 v_snorm8x2_ = {};
|
|
metal::float3 v_snorm8x4_ = {};
|
|
metal::uint3 v_uint16_ = {};
|
|
metal::uint3 v_uint16x2_ = {};
|
|
metal::uint3 v_uint16x4_ = {};
|
|
metal::int3 v_sint16_ = {};
|
|
metal::int3 v_sint16x2_ = {};
|
|
metal::int3 v_sint16x4_ = {};
|
|
metal::float3 v_unorm16_ = {};
|
|
metal::float3 v_unorm16x2_ = {};
|
|
metal::float3 v_unorm16x4_ = {};
|
|
metal::float3 v_snorm16_ = {};
|
|
metal::float3 v_snorm16x2_ = {};
|
|
metal::float3 v_snorm16x4_ = {};
|
|
metal::float3 v_float16_ = {};
|
|
metal::float3 v_float16x2_ = {};
|
|
metal::float3 v_float16x4_ = {};
|
|
metal::float3 v_float32_ = {};
|
|
metal::float3 v_float32x2_ = {};
|
|
metal::float3 v_float32x3_ = {};
|
|
metal::float3 v_float32x4_ = {};
|
|
metal::uint3 v_uint32_ = {};
|
|
metal::uint3 v_uint32x2_ = {};
|
|
metal::uint3 v_uint32x3_ = {};
|
|
metal::uint3 v_uint32x4_ = {};
|
|
metal::int3 v_sint32_ = {};
|
|
metal::int3 v_sint32x2_ = {};
|
|
metal::int3 v_sint32x3_ = {};
|
|
metal::int3 v_sint32x4_ = {};
|
|
metal::float3 v_unorm10_10_10_2_ = {};
|
|
metal::float3 v_unorm8x4_bgra = {};
|
|
if (v_id < (_buffer_sizes.buffer_size1 / 644)) {
|
|
const vb_1_type vb_1_elem = vb_1_in[v_id];
|
|
// metal::uint3 <- Uint8
|
|
v_uint8_ = metal::uint3(unpackUint8_(vb_1_elem.data[0]), 0, 0);
|
|
// metal::uint3 <- Uint8x2
|
|
v_uint8x2_ = metal::uint3(unpackUint8x2_(vb_1_elem.data[16], vb_1_elem.data[17]), 0);
|
|
// metal::uint3 <- Uint8x4
|
|
v_uint8x4_ = unpackUint8x4_(vb_1_elem.data[32], vb_1_elem.data[33], vb_1_elem.data[34], vb_1_elem.data[35]).xyz;
|
|
// metal::int3 <- Sint8
|
|
v_sint8_ = metal::int3(unpackSint8_(vb_1_elem.data[48]), 0, 0);
|
|
// metal::int3 <- Sint8x2
|
|
v_sint8x2_ = metal::int3(unpackSint8x2_(vb_1_elem.data[64], vb_1_elem.data[65]), 0);
|
|
// metal::int3 <- Sint8x4
|
|
v_sint8x4_ = unpackSint8x4_(vb_1_elem.data[80], vb_1_elem.data[81], vb_1_elem.data[82], vb_1_elem.data[83]).xyz;
|
|
// metal::float3 <- Unorm8
|
|
v_unorm8_ = metal::float3(unpackUnorm8_(vb_1_elem.data[96]), 0.0, 0.0);
|
|
// metal::float3 <- Unorm8x2
|
|
v_unorm8x2_ = metal::float3(unpackUnorm8x2_(vb_1_elem.data[112], vb_1_elem.data[113]), 0.0);
|
|
// metal::float3 <- Unorm8x4
|
|
v_unorm8x4_ = unpackUnorm8x4_(vb_1_elem.data[128], vb_1_elem.data[129], vb_1_elem.data[130], vb_1_elem.data[131]).xyz;
|
|
// metal::float3 <- Snorm8
|
|
v_snorm8_ = metal::float3(unpackSnorm8_(vb_1_elem.data[144]), 0.0, 0.0);
|
|
// metal::float3 <- Snorm8x2
|
|
v_snorm8x2_ = metal::float3(unpackSnorm8x2_(vb_1_elem.data[160], vb_1_elem.data[161]), 0.0);
|
|
// metal::float3 <- Snorm8x4
|
|
v_snorm8x4_ = unpackSnorm8x4_(vb_1_elem.data[176], vb_1_elem.data[177], vb_1_elem.data[178], vb_1_elem.data[179]).xyz;
|
|
// metal::uint3 <- Uint16
|
|
v_uint16_ = metal::uint3(unpackUint16_(vb_1_elem.data[192], vb_1_elem.data[193]), 0, 0);
|
|
// metal::uint3 <- Uint16x2
|
|
v_uint16x2_ = metal::uint3(unpackUint16x2_(vb_1_elem.data[208], vb_1_elem.data[209], vb_1_elem.data[210], vb_1_elem.data[211]), 0);
|
|
// metal::uint3 <- Uint16x4
|
|
v_uint16x4_ = unpackUint16x4_(vb_1_elem.data[224], vb_1_elem.data[225], vb_1_elem.data[226], vb_1_elem.data[227], vb_1_elem.data[228], vb_1_elem.data[229], vb_1_elem.data[230], vb_1_elem.data[231]).xyz;
|
|
// metal::int3 <- Sint16
|
|
v_sint16_ = metal::int3(unpackSint16_(vb_1_elem.data[240], vb_1_elem.data[241]), 0, 0);
|
|
// metal::int3 <- Sint16x2
|
|
v_sint16x2_ = metal::int3(unpackSint16x2_(vb_1_elem.data[256], vb_1_elem.data[257], vb_1_elem.data[258], vb_1_elem.data[259]), 0);
|
|
// metal::int3 <- Sint16x4
|
|
v_sint16x4_ = unpackSint16x4_(vb_1_elem.data[272], vb_1_elem.data[273], vb_1_elem.data[274], vb_1_elem.data[275], vb_1_elem.data[276], vb_1_elem.data[277], vb_1_elem.data[278], vb_1_elem.data[279]).xyz;
|
|
// metal::float3 <- Unorm16
|
|
v_unorm16_ = metal::float3(unpackUnorm16_(vb_1_elem.data[288], vb_1_elem.data[289]), 0.0, 0.0);
|
|
// metal::float3 <- Unorm16x2
|
|
v_unorm16x2_ = metal::float3(unpackUnorm16x2_(vb_1_elem.data[304], vb_1_elem.data[305], vb_1_elem.data[306], vb_1_elem.data[307]), 0.0);
|
|
// metal::float3 <- Unorm16x4
|
|
v_unorm16x4_ = unpackUnorm16x4_(vb_1_elem.data[320], vb_1_elem.data[321], vb_1_elem.data[322], vb_1_elem.data[323], vb_1_elem.data[324], vb_1_elem.data[325], vb_1_elem.data[326], vb_1_elem.data[327]).xyz;
|
|
// metal::float3 <- Snorm16
|
|
v_snorm16_ = metal::float3(unpackSnorm16_(vb_1_elem.data[336], vb_1_elem.data[337]), 0.0, 0.0);
|
|
// metal::float3 <- Snorm16x2
|
|
v_snorm16x2_ = metal::float3(unpackSnorm16x2_(vb_1_elem.data[352], vb_1_elem.data[353], vb_1_elem.data[354], vb_1_elem.data[355]), 0.0);
|
|
// metal::float3 <- Snorm16x4
|
|
v_snorm16x4_ = unpackSnorm16x4_(vb_1_elem.data[368], vb_1_elem.data[369], vb_1_elem.data[370], vb_1_elem.data[371], vb_1_elem.data[372], vb_1_elem.data[373], vb_1_elem.data[374], vb_1_elem.data[375]).xyz;
|
|
// metal::float3 <- Float16
|
|
v_float16_ = metal::float3(unpackFloat16_(vb_1_elem.data[384], vb_1_elem.data[385]), 0.0, 0.0);
|
|
// metal::float3 <- Float16x2
|
|
v_float16x2_ = metal::float3(unpackFloat16x2_(vb_1_elem.data[400], vb_1_elem.data[401], vb_1_elem.data[402], vb_1_elem.data[403]), 0.0);
|
|
// metal::float3 <- Float16x4
|
|
v_float16x4_ = unpackFloat16x4_(vb_1_elem.data[416], vb_1_elem.data[417], vb_1_elem.data[418], vb_1_elem.data[419], vb_1_elem.data[420], vb_1_elem.data[421], vb_1_elem.data[422], vb_1_elem.data[423]).xyz;
|
|
// metal::float3 <- Float32
|
|
v_float32_ = metal::float3(unpackFloat32_(vb_1_elem.data[432], vb_1_elem.data[433], vb_1_elem.data[434], vb_1_elem.data[435]), 0.0, 0.0);
|
|
// metal::float3 <- Float32x2
|
|
v_float32x2_ = metal::float3(unpackFloat32x2_(vb_1_elem.data[448], vb_1_elem.data[449], vb_1_elem.data[450], vb_1_elem.data[451], vb_1_elem.data[452], vb_1_elem.data[453], vb_1_elem.data[454], vb_1_elem.data[455]), 0.0);
|
|
v_float32x3_ = unpackFloat32x3_(vb_1_elem.data[464], vb_1_elem.data[465], vb_1_elem.data[466], vb_1_elem.data[467], vb_1_elem.data[468], vb_1_elem.data[469], vb_1_elem.data[470], vb_1_elem.data[471], vb_1_elem.data[472], vb_1_elem.data[473], vb_1_elem.data[474], vb_1_elem.data[475]);
|
|
// metal::float3 <- Float32x4
|
|
v_float32x4_ = unpackFloat32x4_(vb_1_elem.data[480], vb_1_elem.data[481], vb_1_elem.data[482], vb_1_elem.data[483], vb_1_elem.data[484], vb_1_elem.data[485], vb_1_elem.data[486], vb_1_elem.data[487], vb_1_elem.data[488], vb_1_elem.data[489], vb_1_elem.data[490], vb_1_elem.data[491], vb_1_elem.data[492], vb_1_elem.data[493], vb_1_elem.data[494], vb_1_elem.data[495]).xyz;
|
|
// metal::uint3 <- Uint32
|
|
v_uint32_ = metal::uint3(unpackUint32_(vb_1_elem.data[496], vb_1_elem.data[497], vb_1_elem.data[498], vb_1_elem.data[499]), 0, 0);
|
|
// metal::uint3 <- Uint32x2
|
|
v_uint32x2_ = metal::uint3(unpackUint32x2_(vb_1_elem.data[512], vb_1_elem.data[513], vb_1_elem.data[514], vb_1_elem.data[515], vb_1_elem.data[516], vb_1_elem.data[517], vb_1_elem.data[518], vb_1_elem.data[519]), 0);
|
|
v_uint32x3_ = unpackUint32x3_(vb_1_elem.data[528], vb_1_elem.data[529], vb_1_elem.data[530], vb_1_elem.data[531], vb_1_elem.data[532], vb_1_elem.data[533], vb_1_elem.data[534], vb_1_elem.data[535], vb_1_elem.data[536], vb_1_elem.data[537], vb_1_elem.data[538], vb_1_elem.data[539]);
|
|
// metal::uint3 <- Uint32x4
|
|
v_uint32x4_ = unpackUint32x4_(vb_1_elem.data[544], vb_1_elem.data[545], vb_1_elem.data[546], vb_1_elem.data[547], vb_1_elem.data[548], vb_1_elem.data[549], vb_1_elem.data[550], vb_1_elem.data[551], vb_1_elem.data[552], vb_1_elem.data[553], vb_1_elem.data[554], vb_1_elem.data[555], vb_1_elem.data[556], vb_1_elem.data[557], vb_1_elem.data[558], vb_1_elem.data[559]).xyz;
|
|
// metal::int3 <- Sint32
|
|
v_sint32_ = metal::int3(unpackSint32_(vb_1_elem.data[560], vb_1_elem.data[561], vb_1_elem.data[562], vb_1_elem.data[563]), 0, 0);
|
|
// metal::int3 <- Sint32x2
|
|
v_sint32x2_ = metal::int3(unpackSint32x2_(vb_1_elem.data[576], vb_1_elem.data[577], vb_1_elem.data[578], vb_1_elem.data[579], vb_1_elem.data[580], vb_1_elem.data[581], vb_1_elem.data[582], vb_1_elem.data[583]), 0);
|
|
v_sint32x3_ = unpackSint32x3_(vb_1_elem.data[592], vb_1_elem.data[593], vb_1_elem.data[594], vb_1_elem.data[595], vb_1_elem.data[596], vb_1_elem.data[597], vb_1_elem.data[598], vb_1_elem.data[599], vb_1_elem.data[600], vb_1_elem.data[601], vb_1_elem.data[602], vb_1_elem.data[603]);
|
|
// metal::int3 <- Sint32x4
|
|
v_sint32x4_ = unpackSint32x4_(vb_1_elem.data[608], vb_1_elem.data[609], vb_1_elem.data[610], vb_1_elem.data[611], vb_1_elem.data[612], vb_1_elem.data[613], vb_1_elem.data[614], vb_1_elem.data[615], vb_1_elem.data[616], vb_1_elem.data[617], vb_1_elem.data[618], vb_1_elem.data[619], vb_1_elem.data[620], vb_1_elem.data[621], vb_1_elem.data[622], vb_1_elem.data[623]).xyz;
|
|
// metal::float3 <- Unorm10_10_10_2
|
|
v_unorm10_10_10_2_ = unpackUnorm10_10_10_2_(vb_1_elem.data[624], vb_1_elem.data[625], vb_1_elem.data[626], vb_1_elem.data[627]).xyz;
|
|
// metal::float3 <- Unorm8x4Bgra
|
|
v_unorm8x4_bgra = unpackUnorm8x4Bgra(vb_1_elem.data[640], vb_1_elem.data[641], vb_1_elem.data[642], vb_1_elem.data[643]).xyz;
|
|
}
|
|
const VertexInput v_in = { v_uint8_, v_uint8x2_, v_uint8x4_, v_sint8_, v_sint8x2_, v_sint8x4_, v_unorm8_, v_unorm8x2_, v_unorm8x4_, v_snorm8_, v_snorm8x2_, v_snorm8x4_, v_uint16_, v_uint16x2_, v_uint16x4_, v_sint16_, v_sint16x2_, v_sint16x4_, v_unorm16_, v_unorm16x2_, v_unorm16x4_, v_snorm16_, v_snorm16x2_, v_snorm16x4_, v_float16_, v_float16x2_, v_float16x4_, v_float32_, v_float32x2_, v_float32x3_, v_float32x4_, v_uint32_, v_uint32x2_, v_uint32x3_, v_uint32x4_, v_sint32_, v_sint32x2_, v_sint32x3_, v_sint32x4_, v_unorm10_10_10_2_, v_unorm8x4_bgra };
|
|
const auto _tmp = VertexOutput {metal::float4(static_cast<float>(v_in.v_uint8_.x))};
|
|
return render_vertexOutput { _tmp.position };
|
|
}
|