mirror of
https://github.com/bkaradzic/bgfx.git
synced 2026-02-21 22:33:08 +01:00
Updated spirv-cross.
This commit is contained in:
@@ -28,6 +28,7 @@ void frag_main()
|
||||
float4 _47 = ddy_fine(vInput);
|
||||
float4 _50 = fwidth(vInput);
|
||||
float _56_tmp = uSampler.CalculateLevelOfDetail(_uSampler_sampler, vInput.zw);
|
||||
float2 _56 = _56_tmp.xx;
|
||||
if (vInput.y > 10.0f)
|
||||
{
|
||||
FragColor += _23;
|
||||
@@ -40,7 +41,7 @@ void frag_main()
|
||||
FragColor += _44;
|
||||
FragColor += _47;
|
||||
FragColor += _50;
|
||||
FragColor += float2(_56_tmp, _56_tmp).xyxy;
|
||||
FragColor += _56.xyxy;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -17,7 +17,8 @@ struct SPIRV_Cross_Output
|
||||
void frag_main()
|
||||
{
|
||||
float _19_tmp = uSampler.CalculateLevelOfDetail(_uSampler_sampler, vTexCoord);
|
||||
FragColor = float2(_19_tmp, _19_tmp).xyxy;
|
||||
float2 _19 = _19_tmp.xx;
|
||||
FragColor = _19.xyxy;
|
||||
}
|
||||
|
||||
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
|
||||
|
||||
@@ -18,11 +18,12 @@ struct A_2
|
||||
{
|
||||
int a;
|
||||
int b;
|
||||
char _m0_final_padding[8];
|
||||
};
|
||||
|
||||
struct A_3
|
||||
{
|
||||
/* FIXME: A padded struct is needed here. If you see this message, file a bug! */ A_2 Data[1024];
|
||||
A_2 Data[1024];
|
||||
};
|
||||
|
||||
struct B
|
||||
@@ -32,7 +33,7 @@ struct B
|
||||
|
||||
struct B_1
|
||||
{
|
||||
/* FIXME: A padded struct is needed here. If you see this message, file a bug! */ A_2 Data[1024];
|
||||
A_2 Data[1024];
|
||||
};
|
||||
|
||||
kernel void main0(device A_1& C1 [[buffer(0)]], constant A_3& C2 [[buffer(1)]], device B& C3 [[buffer(2)]], constant B_1& C4 [[buffer(3)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]])
|
||||
|
||||
@@ -23,14 +23,29 @@ kernel void main0(device foo& buf [[buffer(0)]], constant bar& cb [[buffer(1)]],
|
||||
device foo* _45 = _71;
|
||||
thread uint3* _77 = _70 ? &gl_GlobalInvocationID : &gl_LocalInvocationID;
|
||||
thread uint3* _73 = _77;
|
||||
for (device int* _52 = &_71->a[0u], * _55 = &buf.a[0u]; (*_52) != (*_55); )
|
||||
device int* _52;
|
||||
device int* _55;
|
||||
_52 = &_71->a[0u];
|
||||
_55 = &buf.a[0u];
|
||||
int _57;
|
||||
int _58;
|
||||
for (;;)
|
||||
{
|
||||
int _66 = ((*_52) + (*_55)) + int((*_77).x);
|
||||
*_52 = _66;
|
||||
*_55 = _66;
|
||||
_52 = &_52[1u];
|
||||
_55 = &_55[1u];
|
||||
continue;
|
||||
_57 = *_52;
|
||||
_58 = *_55;
|
||||
if (_57 != _58)
|
||||
{
|
||||
int _66 = (_57 + _58) + int((*_77).x);
|
||||
*_52 = _66;
|
||||
*_55 = _66;
|
||||
_52 = &_52[1u];
|
||||
_55 = &_55[1u];
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -115,7 +115,6 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_129 = _109;
|
||||
}
|
||||
float3 _130 = _129 * 0.5;
|
||||
float2 _144 = fast::clamp(_82 + (float2(-1.0) * _7._m0.xy), _95, _96);
|
||||
float3 _156 = float3(_11._m5) * fast::clamp(_8.sample(_9, _144, level(0.0)).w * _7._m1, 0.0, 1.0);
|
||||
float4 _160 = _12.sample(_13, _144, level(0.0));
|
||||
@@ -129,7 +128,6 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_176 = _156;
|
||||
}
|
||||
float3 _177 = _176 * 0.5;
|
||||
float2 _191 = fast::clamp(_82 + (float2(0.0, -1.0) * _7._m0.xy), _95, _96);
|
||||
float3 _203 = float3(_11._m5) * fast::clamp(_8.sample(_9, _191, level(0.0)).w * _7._m1, 0.0, 1.0);
|
||||
float4 _207 = _12.sample(_13, _191, level(0.0));
|
||||
@@ -143,7 +141,6 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_223 = _203;
|
||||
}
|
||||
float3 _224 = _223 * 0.75;
|
||||
float2 _238 = fast::clamp(_82 + (float2(1.0, -1.0) * _7._m0.xy), _95, _96);
|
||||
float3 _250 = float3(_11._m5) * fast::clamp(_8.sample(_9, _238, level(0.0)).w * _7._m1, 0.0, 1.0);
|
||||
float4 _254 = _12.sample(_13, _238, level(0.0));
|
||||
@@ -157,7 +154,6 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_270 = _250;
|
||||
}
|
||||
float3 _271 = _270 * 0.5;
|
||||
float2 _285 = fast::clamp(_82 + (float2(-2.0, 0.0) * _7._m0.xy), _95, _96);
|
||||
float3 _297 = float3(_11._m5) * fast::clamp(_8.sample(_9, _285, level(0.0)).w * _7._m1, 0.0, 1.0);
|
||||
float4 _301 = _12.sample(_13, _285, level(0.0));
|
||||
@@ -171,7 +167,6 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_317 = _297;
|
||||
}
|
||||
float3 _318 = _317 * 0.5;
|
||||
float2 _332 = fast::clamp(_82 + (float2(-1.0, 0.0) * _7._m0.xy), _95, _96);
|
||||
float3 _344 = float3(_11._m5) * fast::clamp(_8.sample(_9, _332, level(0.0)).w * _7._m1, 0.0, 1.0);
|
||||
float4 _348 = _12.sample(_13, _332, level(0.0));
|
||||
@@ -185,7 +180,6 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_364 = _344;
|
||||
}
|
||||
float3 _365 = _364 * 0.75;
|
||||
float2 _379 = fast::clamp(_82, _95, _96);
|
||||
float3 _391 = float3(_11._m5) * fast::clamp(_8.sample(_9, _379, level(0.0)).w * _7._m1, 0.0, 1.0);
|
||||
float4 _395 = _12.sample(_13, _379, level(0.0));
|
||||
@@ -199,7 +193,6 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_411 = _391;
|
||||
}
|
||||
float3 _412 = _411 * 1.0;
|
||||
float2 _426 = fast::clamp(_82 + (float2(1.0, 0.0) * _7._m0.xy), _95, _96);
|
||||
float3 _438 = float3(_11._m5) * fast::clamp(_8.sample(_9, _426, level(0.0)).w * _7._m1, 0.0, 1.0);
|
||||
float4 _442 = _12.sample(_13, _426, level(0.0));
|
||||
@@ -213,7 +206,6 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_458 = _438;
|
||||
}
|
||||
float3 _459 = _458 * 0.75;
|
||||
float2 _473 = fast::clamp(_82 + (float2(2.0, 0.0) * _7._m0.xy), _95, _96);
|
||||
float3 _485 = float3(_11._m5) * fast::clamp(_8.sample(_9, _473, level(0.0)).w * _7._m1, 0.0, 1.0);
|
||||
float4 _489 = _12.sample(_13, _473, level(0.0));
|
||||
@@ -227,7 +219,6 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_505 = _485;
|
||||
}
|
||||
float3 _506 = _505 * 0.5;
|
||||
float2 _520 = fast::clamp(_82 + (float2(-1.0, 1.0) * _7._m0.xy), _95, _96);
|
||||
float3 _532 = float3(_11._m5) * fast::clamp(_8.sample(_9, _520, level(0.0)).w * _7._m1, 0.0, 1.0);
|
||||
float4 _536 = _12.sample(_13, _520, level(0.0));
|
||||
@@ -241,7 +232,6 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_552 = _532;
|
||||
}
|
||||
float3 _553 = _552 * 0.5;
|
||||
float2 _567 = fast::clamp(_82 + (float2(0.0, 1.0) * _7._m0.xy), _95, _96);
|
||||
float3 _579 = float3(_11._m5) * fast::clamp(_8.sample(_9, _567, level(0.0)).w * _7._m1, 0.0, 1.0);
|
||||
float4 _583 = _12.sample(_13, _567, level(0.0));
|
||||
@@ -255,7 +245,6 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_599 = _579;
|
||||
}
|
||||
float3 _600 = _599 * 0.75;
|
||||
float2 _614 = fast::clamp(_82 + _7._m0.xy, _95, _96);
|
||||
float3 _626 = float3(_11._m5) * fast::clamp(_8.sample(_9, _614, level(0.0)).w * _7._m1, 0.0, 1.0);
|
||||
float4 _630 = _12.sample(_13, _614, level(0.0));
|
||||
@@ -269,7 +258,6 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_646 = _626;
|
||||
}
|
||||
float3 _647 = _646 * 0.5;
|
||||
float2 _661 = fast::clamp(_82 + (float2(0.0, 2.0) * _7._m0.xy), _95, _96);
|
||||
float3 _673 = float3(_11._m5) * fast::clamp(_8.sample(_9, _661, level(0.0)).w * _7._m1, 0.0, 1.0);
|
||||
float4 _677 = _12.sample(_13, _661, level(0.0));
|
||||
@@ -283,7 +271,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_693 = _673;
|
||||
}
|
||||
float3 _702 = ((((((((((((_130.xyz + _177).xyz + _224).xyz + _271).xyz + _318).xyz + _365).xyz + _412).xyz + _459).xyz + _506).xyz + _553).xyz + _600).xyz + _647).xyz + (_693 * 0.5)).xyz * float3(0.125);
|
||||
float3 _702 = (((((((((((((_129 * 0.5).xyz + (_176 * 0.5)).xyz + (_223 * 0.75)).xyz + (_270 * 0.5)).xyz + (_317 * 0.5)).xyz + (_364 * 0.75)).xyz + (_411 * 1.0)).xyz + (_458 * 0.75)).xyz + (_505 * 0.5)).xyz + (_552 * 0.5)).xyz + (_599 * 0.75)).xyz + (_646 * 0.5)).xyz + (_693 * 0.5)).xyz * float3(0.125);
|
||||
_28 _704 = _74;
|
||||
_704._m0 = float4(_702.x, _702.y, _702.z, float4(0.0).w);
|
||||
_28 _705 = _704;
|
||||
|
||||
@@ -3,12 +3,11 @@
|
||||
|
||||
using namespace metal;
|
||||
|
||||
typedef packed_float2 packed_rm_float2x3[3];
|
||||
|
||||
struct S0
|
||||
{
|
||||
float2 a[1];
|
||||
float b;
|
||||
char _m0_final_padding[4];
|
||||
};
|
||||
|
||||
struct S1
|
||||
@@ -21,6 +20,7 @@ struct S2
|
||||
{
|
||||
float3 a[1];
|
||||
float b;
|
||||
char _m0_final_padding[12];
|
||||
};
|
||||
|
||||
struct S3
|
||||
@@ -45,6 +45,7 @@ struct Content
|
||||
S3 m3;
|
||||
float m4;
|
||||
S4 m3s[8];
|
||||
char _m0_final_padding[8];
|
||||
};
|
||||
|
||||
struct SSBO1
|
||||
@@ -58,10 +59,8 @@ struct SSBO1
|
||||
float3x2 m3;
|
||||
float2x2 m4;
|
||||
float2x2 m5[9];
|
||||
packed_rm_float2x3 m6[4][2];
|
||||
char _m10_pad[8];
|
||||
float3x2 m7;
|
||||
char _m11_pad[8];
|
||||
float3x2 m6[4][2];
|
||||
float2x3 m7;
|
||||
float array[1];
|
||||
};
|
||||
|
||||
@@ -69,6 +68,7 @@ struct S0_1
|
||||
{
|
||||
float4 a[1];
|
||||
float b;
|
||||
char _m0_final_padding[12];
|
||||
};
|
||||
|
||||
struct S1_1
|
||||
@@ -81,6 +81,7 @@ struct S2_1
|
||||
{
|
||||
float3 a[1];
|
||||
float b;
|
||||
char _m0_final_padding[12];
|
||||
};
|
||||
|
||||
struct S3_1
|
||||
@@ -92,6 +93,7 @@ struct S3_1
|
||||
struct S4_1
|
||||
{
|
||||
float2 c;
|
||||
char _m0_final_padding[8];
|
||||
};
|
||||
|
||||
struct Content_1
|
||||
@@ -104,8 +106,8 @@ struct Content_1
|
||||
S2_1 m2;
|
||||
S3_1 m3;
|
||||
float m4;
|
||||
char _m8_pad[12];
|
||||
/* FIXME: A padded struct is needed here. If you see this message, file a bug! */ S4_1 m3s[8];
|
||||
char _m8_pad[8];
|
||||
S4_1 m3s[8];
|
||||
};
|
||||
|
||||
struct SSBO0
|
||||
@@ -142,6 +144,6 @@ kernel void main0(device SSBO1& ssbo_430 [[buffer(0)]], device SSBO0& ssbo_140 [
|
||||
ssbo_430.content.m3s[5].c = _60.m3s[5].c;
|
||||
ssbo_430.content.m3s[6].c = _60.m3s[6].c;
|
||||
ssbo_430.content.m3s[7].c = _60.m3s[7].c;
|
||||
ssbo_430.content.m1.a = ssbo_430.content.m3.a * float3x2(float2(ssbo_430.m6[1][1][0]), float2(ssbo_430.m6[1][1][1]), float2(ssbo_430.m6[1][1][2]));
|
||||
ssbo_430.content.m1.a = ssbo_430.content.m3.a * ssbo_430.m6[1][1];
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ struct UBO
|
||||
{
|
||||
float4x4 uMVPR;
|
||||
float4x4 uMVPC;
|
||||
float2x4 uMVP;
|
||||
float4x4 uMVP;
|
||||
};
|
||||
|
||||
struct main0_out
|
||||
|
||||
@@ -31,7 +31,7 @@ struct main0_out
|
||||
fragment main0_out main0(constant UBO1& ubo1 [[buffer(0)]], constant UBO2& ubo0 [[buffer(1)]])
|
||||
{
|
||||
main0_out out = {};
|
||||
out.FragColor = transpose(ubo1.foo.foo)[0] + ubo0.foo.foo[0];
|
||||
out.FragColor = float4(ubo1.foo.foo[0][0], ubo1.foo.foo[1][0], ubo1.foo.foo[2][0], ubo1.foo.foo[3][0]) + ubo0.foo.foo[0];
|
||||
return out;
|
||||
}
|
||||
|
||||
|
||||
@@ -3,12 +3,10 @@
|
||||
|
||||
using namespace metal;
|
||||
|
||||
typedef packed_float4 packed_rm_float4x3[3];
|
||||
|
||||
struct _15
|
||||
{
|
||||
packed_rm_float4x3 _m0;
|
||||
packed_rm_float4x3 _m1;
|
||||
float3x4 _m0;
|
||||
float3x4 _m1;
|
||||
};
|
||||
|
||||
struct _42
|
||||
@@ -41,7 +39,7 @@ vertex main0_out main0(main0_in in [[stage_in]], constant _15& _17 [[buffer(0)]]
|
||||
{
|
||||
main0_out out = {};
|
||||
float4 _70 = _44._m0 * float4(float3(_44._m3) + (in.m_25.xyz * (_44._m6 + _44._m7)), 1.0);
|
||||
out.m_72 = normalize(float4(in.m_25.xyz, 0.0) * float3x4(float4(_17._m1[0]), float4(_17._m1[1]), float4(_17._m1[2])));
|
||||
out.m_72 = normalize(float4(in.m_25.xyz, 0.0) * _17._m1);
|
||||
float4 _94 = _70;
|
||||
_94.y = -_70.y;
|
||||
out.gl_Position = _94;
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
@@ -7,7 +5,7 @@ using namespace metal;
|
||||
|
||||
struct Block
|
||||
{
|
||||
float2x3 var[3][4];
|
||||
float3x4 var[3][4];
|
||||
};
|
||||
|
||||
struct main0_out
|
||||
@@ -21,17 +19,11 @@ struct main0_in
|
||||
float4 a_position [[attribute(0)]];
|
||||
};
|
||||
|
||||
// Implementation of a conversion of matrix content from RowMajor to ColumnMajor organization.
|
||||
float2x3 spvConvertFromRowMajor2x3(float2x3 m)
|
||||
{
|
||||
return float2x3(float3(m[0][0], m[0][2], m[1][1]), float3(m[0][1], m[1][0], m[1][2]));
|
||||
}
|
||||
|
||||
vertex main0_out main0(main0_in in [[stage_in]], constant Block& _104 [[buffer(0)]])
|
||||
{
|
||||
main0_out out = {};
|
||||
out.gl_Position = in.a_position;
|
||||
out.v_vtxResult = ((float(abs(spvConvertFromRowMajor2x3(_104.var[0][0])[0].x - 2.0) < 0.0500000007450580596923828125) * float(abs(spvConvertFromRowMajor2x3(_104.var[0][0])[0].y - 6.0) < 0.0500000007450580596923828125)) * float(abs(spvConvertFromRowMajor2x3(_104.var[0][0])[0].z - (-6.0)) < 0.0500000007450580596923828125)) * ((float(abs(spvConvertFromRowMajor2x3(_104.var[0][0])[1].x) < 0.0500000007450580596923828125) * float(abs(spvConvertFromRowMajor2x3(_104.var[0][0])[1].y - 5.0) < 0.0500000007450580596923828125)) * float(abs(spvConvertFromRowMajor2x3(_104.var[0][0])[1].z - 5.0) < 0.0500000007450580596923828125));
|
||||
out.v_vtxResult = ((float(abs(float3(_104.var[0][0][0][0], _104.var[0][0][1][0], _104.var[0][0][2][0])[0] - 2.0) < 0.0500000007450580596923828125) * float(abs(float3(_104.var[0][0][0][0], _104.var[0][0][1][0], _104.var[0][0][2][0])[1] - 6.0) < 0.0500000007450580596923828125)) * float(abs(float3(_104.var[0][0][0][0], _104.var[0][0][1][0], _104.var[0][0][2][0])[2] - (-6.0)) < 0.0500000007450580596923828125)) * ((float(abs(float3(_104.var[0][0][0][1], _104.var[0][0][1][1], _104.var[0][0][2][1])[0]) < 0.0500000007450580596923828125) * float(abs(float3(_104.var[0][0][0][1], _104.var[0][0][1][1], _104.var[0][0][2][1])[1] - 5.0) < 0.0500000007450580596923828125)) * float(abs(float3(_104.var[0][0][0][1], _104.var[0][0][1][1], _104.var[0][0][2][1])[2] - 5.0) < 0.0500000007450580596923828125));
|
||||
return out;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
using namespace metal;
|
||||
|
||||
typedef packed_float2 packed_float2x2[2];
|
||||
typedef packed_float2 packed_rm_float2x3[3];
|
||||
typedef packed_float3 packed_float2x3[2];
|
||||
typedef packed_float3 packed_rm_float3x2[2];
|
||||
|
||||
@@ -32,11 +31,6 @@ struct S3
|
||||
float b;
|
||||
};
|
||||
|
||||
struct S4
|
||||
{
|
||||
float2 c;
|
||||
};
|
||||
|
||||
struct Content
|
||||
{
|
||||
S0 m0s[1];
|
||||
@@ -47,7 +41,6 @@ struct Content
|
||||
S2 m2;
|
||||
S3 m3;
|
||||
float m4;
|
||||
S4 m3s[8];
|
||||
};
|
||||
|
||||
struct SSBO1
|
||||
@@ -61,8 +54,8 @@ struct SSBO1
|
||||
float3x2 m3;
|
||||
float2x2 m4;
|
||||
float2x2 m5[9];
|
||||
packed_rm_float2x3 m6[4][2];
|
||||
float3x2 m7;
|
||||
float3x2 m6[4][2];
|
||||
packed_rm_float3x2 m7;
|
||||
float array[1];
|
||||
};
|
||||
|
||||
@@ -70,6 +63,7 @@ struct S0_1
|
||||
{
|
||||
float4 a[1];
|
||||
float b;
|
||||
char _m0_final_padding[12];
|
||||
};
|
||||
|
||||
struct S1_1
|
||||
@@ -82,6 +76,7 @@ struct S2_1
|
||||
{
|
||||
float3 a[1];
|
||||
float b;
|
||||
char _m0_final_padding[12];
|
||||
};
|
||||
|
||||
struct S3_1
|
||||
@@ -90,11 +85,6 @@ struct S3_1
|
||||
float b;
|
||||
};
|
||||
|
||||
struct S4_1
|
||||
{
|
||||
float2 c;
|
||||
};
|
||||
|
||||
struct Content_1
|
||||
{
|
||||
S0_1 m0s[1];
|
||||
@@ -105,8 +95,7 @@ struct Content_1
|
||||
S2_1 m2;
|
||||
S3_1 m3;
|
||||
float m4;
|
||||
char _m8_pad[12];
|
||||
/* FIXME: A padded struct is needed here. If you see this message, file a bug! */ S4_1 m3s[8];
|
||||
char _m0_final_padding[12];
|
||||
};
|
||||
|
||||
struct SSBO0
|
||||
@@ -114,18 +103,14 @@ struct SSBO0
|
||||
Content_1 content;
|
||||
Content_1 content1[2];
|
||||
Content_1 content2;
|
||||
float2x2 m0;
|
||||
char _m4_pad[16];
|
||||
float2x2 m1;
|
||||
char _m5_pad[16];
|
||||
float2x4 m0;
|
||||
float2x4 m1;
|
||||
float2x3 m2[4];
|
||||
float3x2 m3;
|
||||
char _m7_pad[24];
|
||||
float2x2 m4;
|
||||
char _m8_pad[16];
|
||||
float2x2 m5[9];
|
||||
float2x3 m6[4][2];
|
||||
float3x2 m7;
|
||||
float3x4 m3;
|
||||
float2x4 m4;
|
||||
float2x4 m5[9];
|
||||
float3x4 m6[4][2];
|
||||
float2x3 m7;
|
||||
float4 array[1];
|
||||
};
|
||||
|
||||
@@ -153,19 +138,11 @@ kernel void main0(device SSBO1& ssbo_scalar [[buffer(0)]], device SSBO0& ssbo_14
|
||||
ssbo_scalar.content.m3.a = ssbo_140.content.m3.a;
|
||||
ssbo_scalar.content.m3.b = ssbo_140.content.m3.b;
|
||||
ssbo_scalar.content.m4 = ssbo_140.content.m4;
|
||||
ssbo_scalar.content.m3s[0].c = ssbo_140.content.m3s[0].c;
|
||||
ssbo_scalar.content.m3s[1].c = ssbo_140.content.m3s[1].c;
|
||||
ssbo_scalar.content.m3s[2].c = ssbo_140.content.m3s[2].c;
|
||||
ssbo_scalar.content.m3s[3].c = ssbo_140.content.m3s[3].c;
|
||||
ssbo_scalar.content.m3s[4].c = ssbo_140.content.m3s[4].c;
|
||||
ssbo_scalar.content.m3s[5].c = ssbo_140.content.m3s[5].c;
|
||||
ssbo_scalar.content.m3s[6].c = ssbo_140.content.m3s[6].c;
|
||||
ssbo_scalar.content.m3s[7].c = ssbo_140.content.m3s[7].c;
|
||||
ssbo_scalar.content.m1.a = float2x3(float3(ssbo_scalar.m2[1][0]), float3(ssbo_scalar.m2[1][1])) * float2(ssbo_scalar.content.m0.a[0]);
|
||||
ssbo_scalar.m0 = float2x2(float2(ssbo_scalar2.m1[0]), float2(ssbo_scalar2.m1[1]));
|
||||
ssbo_scalar2.m1[0] = transpose(ssbo_scalar.m4)[0];
|
||||
ssbo_scalar2.m1[1] = transpose(ssbo_scalar.m4)[1];
|
||||
ssbo_scalar2.m2[0] = spvConvertFromRowMajor3x2(ssbo_scalar.m3)[0];
|
||||
ssbo_scalar2.m2[1] = spvConvertFromRowMajor3x2(ssbo_scalar.m3)[1];
|
||||
ssbo_scalar2.m1[0] = float2(ssbo_scalar.m4[0][0], ssbo_scalar.m4[1][0]);
|
||||
ssbo_scalar2.m1[1] = float2(ssbo_scalar.m4[0][1], ssbo_scalar.m4[1][1]);
|
||||
ssbo_scalar2.m2[0] = float3(ssbo_scalar.m3[0][0], ssbo_scalar.m3[1][0], ssbo_scalar.m3[2][0]);
|
||||
ssbo_scalar2.m2[1] = float3(ssbo_scalar.m3[0][1], ssbo_scalar.m3[1][1], ssbo_scalar.m3[2][1]);
|
||||
}
|
||||
|
||||
|
||||
@@ -16,13 +16,12 @@ layout(binding = 1, std430) buffer outputData
|
||||
|
||||
void main()
|
||||
{
|
||||
float _25 = _12.inputDataArray[gl_LocalInvocationID.x];
|
||||
bool _31 = _25 > 0.0;
|
||||
bool _31 = _12.inputDataArray[gl_LocalInvocationID.x] > 0.0;
|
||||
uvec4 _37 = uvec4(unpackUint2x32(ballotARB(_31)), 0u, 0u);
|
||||
uint _44 = mbcntAMD(packUint2x32(uvec2(_37.xy)));
|
||||
if (_31)
|
||||
{
|
||||
_74.outputDataArray[_44] = _25;
|
||||
_74.outputDataArray[_44] = _12.inputDataArray[gl_LocalInvocationID.x];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -48,10 +48,12 @@ void main()
|
||||
}
|
||||
else
|
||||
{
|
||||
_227++;
|
||||
uint _204 = _227 + uint(1);
|
||||
_227 = _204;
|
||||
continue;
|
||||
}
|
||||
_227++;
|
||||
uint _204 = _227 + uint(1);
|
||||
_227 = _204;
|
||||
continue;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -111,7 +111,6 @@ void main()
|
||||
{
|
||||
_129 = _109;
|
||||
}
|
||||
vec3 _130 = _129 * 0.5;
|
||||
vec2 _144 = clamp(_82 + (vec2(-1.0) * _7._m0.xy), _95, _96);
|
||||
vec3 _156 = _11._m5 * clamp(textureLod(SPIRV_Cross_Combined, _144, 0.0).w * _7._m1, 0.0, 1.0);
|
||||
vec4 _160 = textureLod(SPIRV_Cross_Combined_1, _144, 0.0);
|
||||
@@ -125,7 +124,6 @@ void main()
|
||||
{
|
||||
_176 = _156;
|
||||
}
|
||||
vec3 _177 = _176 * 0.5;
|
||||
vec2 _191 = clamp(_82 + (vec2(0.0, -1.0) * _7._m0.xy), _95, _96);
|
||||
vec3 _203 = _11._m5 * clamp(textureLod(SPIRV_Cross_Combined, _191, 0.0).w * _7._m1, 0.0, 1.0);
|
||||
vec4 _207 = textureLod(SPIRV_Cross_Combined_1, _191, 0.0);
|
||||
@@ -139,7 +137,6 @@ void main()
|
||||
{
|
||||
_223 = _203;
|
||||
}
|
||||
vec3 _224 = _223 * 0.75;
|
||||
vec2 _238 = clamp(_82 + (vec2(1.0, -1.0) * _7._m0.xy), _95, _96);
|
||||
vec3 _250 = _11._m5 * clamp(textureLod(SPIRV_Cross_Combined, _238, 0.0).w * _7._m1, 0.0, 1.0);
|
||||
vec4 _254 = textureLod(SPIRV_Cross_Combined_1, _238, 0.0);
|
||||
@@ -153,7 +150,6 @@ void main()
|
||||
{
|
||||
_270 = _250;
|
||||
}
|
||||
vec3 _271 = _270 * 0.5;
|
||||
vec2 _285 = clamp(_82 + (vec2(-2.0, 0.0) * _7._m0.xy), _95, _96);
|
||||
vec3 _297 = _11._m5 * clamp(textureLod(SPIRV_Cross_Combined, _285, 0.0).w * _7._m1, 0.0, 1.0);
|
||||
vec4 _301 = textureLod(SPIRV_Cross_Combined_1, _285, 0.0);
|
||||
@@ -167,7 +163,6 @@ void main()
|
||||
{
|
||||
_317 = _297;
|
||||
}
|
||||
vec3 _318 = _317 * 0.5;
|
||||
vec2 _332 = clamp(_82 + (vec2(-1.0, 0.0) * _7._m0.xy), _95, _96);
|
||||
vec3 _344 = _11._m5 * clamp(textureLod(SPIRV_Cross_Combined, _332, 0.0).w * _7._m1, 0.0, 1.0);
|
||||
vec4 _348 = textureLod(SPIRV_Cross_Combined_1, _332, 0.0);
|
||||
@@ -181,7 +176,6 @@ void main()
|
||||
{
|
||||
_364 = _344;
|
||||
}
|
||||
vec3 _365 = _364 * 0.75;
|
||||
vec2 _379 = clamp(_82, _95, _96);
|
||||
vec3 _391 = _11._m5 * clamp(textureLod(SPIRV_Cross_Combined, _379, 0.0).w * _7._m1, 0.0, 1.0);
|
||||
vec4 _395 = textureLod(SPIRV_Cross_Combined_1, _379, 0.0);
|
||||
@@ -195,7 +189,6 @@ void main()
|
||||
{
|
||||
_411 = _391;
|
||||
}
|
||||
vec3 _412 = _411 * 1.0;
|
||||
vec2 _426 = clamp(_82 + (vec2(1.0, 0.0) * _7._m0.xy), _95, _96);
|
||||
vec3 _438 = _11._m5 * clamp(textureLod(SPIRV_Cross_Combined, _426, 0.0).w * _7._m1, 0.0, 1.0);
|
||||
vec4 _442 = textureLod(SPIRV_Cross_Combined_1, _426, 0.0);
|
||||
@@ -209,7 +202,6 @@ void main()
|
||||
{
|
||||
_458 = _438;
|
||||
}
|
||||
vec3 _459 = _458 * 0.75;
|
||||
vec2 _473 = clamp(_82 + (vec2(2.0, 0.0) * _7._m0.xy), _95, _96);
|
||||
vec3 _485 = _11._m5 * clamp(textureLod(SPIRV_Cross_Combined, _473, 0.0).w * _7._m1, 0.0, 1.0);
|
||||
vec4 _489 = textureLod(SPIRV_Cross_Combined_1, _473, 0.0);
|
||||
@@ -223,7 +215,6 @@ void main()
|
||||
{
|
||||
_505 = _485;
|
||||
}
|
||||
vec3 _506 = _505 * 0.5;
|
||||
vec2 _520 = clamp(_82 + (vec2(-1.0, 1.0) * _7._m0.xy), _95, _96);
|
||||
vec3 _532 = _11._m5 * clamp(textureLod(SPIRV_Cross_Combined, _520, 0.0).w * _7._m1, 0.0, 1.0);
|
||||
vec4 _536 = textureLod(SPIRV_Cross_Combined_1, _520, 0.0);
|
||||
@@ -237,7 +228,6 @@ void main()
|
||||
{
|
||||
_552 = _532;
|
||||
}
|
||||
vec3 _553 = _552 * 0.5;
|
||||
vec2 _567 = clamp(_82 + (vec2(0.0, 1.0) * _7._m0.xy), _95, _96);
|
||||
vec3 _579 = _11._m5 * clamp(textureLod(SPIRV_Cross_Combined, _567, 0.0).w * _7._m1, 0.0, 1.0);
|
||||
vec4 _583 = textureLod(SPIRV_Cross_Combined_1, _567, 0.0);
|
||||
@@ -251,7 +241,6 @@ void main()
|
||||
{
|
||||
_599 = _579;
|
||||
}
|
||||
vec3 _600 = _599 * 0.75;
|
||||
vec2 _614 = clamp(_82 + _7._m0.xy, _95, _96);
|
||||
vec3 _626 = _11._m5 * clamp(textureLod(SPIRV_Cross_Combined, _614, 0.0).w * _7._m1, 0.0, 1.0);
|
||||
vec4 _630 = textureLod(SPIRV_Cross_Combined_1, _614, 0.0);
|
||||
@@ -265,7 +254,6 @@ void main()
|
||||
{
|
||||
_646 = _626;
|
||||
}
|
||||
vec3 _647 = _646 * 0.5;
|
||||
vec2 _661 = clamp(_82 + (vec2(0.0, 2.0) * _7._m0.xy), _95, _96);
|
||||
vec3 _673 = _11._m5 * clamp(textureLod(SPIRV_Cross_Combined, _661, 0.0).w * _7._m1, 0.0, 1.0);
|
||||
vec4 _677 = textureLod(SPIRV_Cross_Combined_1, _661, 0.0);
|
||||
@@ -279,7 +267,7 @@ void main()
|
||||
{
|
||||
_693 = _673;
|
||||
}
|
||||
vec3 _702 = ((((((((((((_130.xyz + _177).xyz + _224).xyz + _271).xyz + _318).xyz + _365).xyz + _412).xyz + _459).xyz + _506).xyz + _553).xyz + _600).xyz + _647).xyz + (_693 * 0.5)).xyz * vec3(0.125);
|
||||
vec3 _702 = (((((((((((((_129 * 0.5).xyz + (_176 * 0.5)).xyz + (_223 * 0.75)).xyz + (_270 * 0.5)).xyz + (_317 * 0.5)).xyz + (_364 * 0.75)).xyz + (_411 * 1.0)).xyz + (_458 * 0.75)).xyz + (_505 * 0.5)).xyz + (_552 * 0.5)).xyz + (_599 * 0.75)).xyz + (_646 * 0.5)).xyz + (_693 * 0.5)).xyz * vec3(0.125);
|
||||
_28 _704 = _74;
|
||||
_704._m0 = vec4(_702.x, _702.y, _702.z, vec4(0.0).w);
|
||||
_28 _705 = _704;
|
||||
|
||||
@@ -33,26 +33,15 @@ void main()
|
||||
}
|
||||
default:
|
||||
{
|
||||
mediump int _84;
|
||||
vec4 _88;
|
||||
_88 = _82;
|
||||
_84 = 0;
|
||||
mediump int _50;
|
||||
for (;;)
|
||||
for (mediump int _84 = 0; _84 < _18; )
|
||||
{
|
||||
_50 = _84 + 1;
|
||||
if (_84 < _18)
|
||||
{
|
||||
vec4 _72 = _88;
|
||||
_72.y = _88.y + 0.5;
|
||||
_88 = _72;
|
||||
_84 = _50;
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
vec4 _72 = _88;
|
||||
_72.y = _88.y + 0.5;
|
||||
_88 = _72;
|
||||
_84++;
|
||||
continue;
|
||||
}
|
||||
_89 = _88;
|
||||
continue;
|
||||
|
||||
@@ -21,8 +21,9 @@ void main()
|
||||
vout_a = vout.a;
|
||||
vout_b = vout.b;
|
||||
}
|
||||
vout_a = Output(vout_a, vout_b).a;
|
||||
vout_b = Output(vout_a, vout_b).b;
|
||||
Output _22 = Output(vout_a, vout_b);
|
||||
vout_a = _22.a;
|
||||
vout_b = _22.b;
|
||||
vout_a.x = 1.0;
|
||||
vout_b.y = 1.0;
|
||||
}
|
||||
|
||||
@@ -28,7 +28,8 @@ void frag_main()
|
||||
float4 d7 = ddy_fine(vInput);
|
||||
float4 d8 = fwidth(vInput);
|
||||
float _56_tmp = uSampler.CalculateLevelOfDetail(_uSampler_sampler, vInput.zw);
|
||||
float2 lod = float2(_56_tmp, _56_tmp);
|
||||
float2 _56 = _56_tmp.xx;
|
||||
float2 lod = _56;
|
||||
if (vInput.y > 10.0f)
|
||||
{
|
||||
FragColor += t;
|
||||
|
||||
@@ -17,7 +17,8 @@ struct SPIRV_Cross_Output
|
||||
void frag_main()
|
||||
{
|
||||
float _19_tmp = uSampler.CalculateLevelOfDetail(_uSampler_sampler, vTexCoord);
|
||||
FragColor = float2(_19_tmp, _19_tmp).xyxy;
|
||||
float2 _19 = _19_tmp.xx;
|
||||
FragColor = _19.xyxy;
|
||||
}
|
||||
|
||||
SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
|
||||
|
||||
@@ -154,7 +154,6 @@ fragment main0_out main0(main0_in in [[stage_in]], constant CB0& _19 [[buffer(0)
|
||||
_193 = _192;
|
||||
break;
|
||||
} while (false);
|
||||
float4 _194 = _193 * 1.0;
|
||||
float4 _220;
|
||||
do
|
||||
{
|
||||
@@ -180,7 +179,7 @@ fragment main0_out main0(main0_in in [[stage_in]], constant CB0& _19 [[buffer(0)
|
||||
float3 _253 = float3(_252.x, _252.y, _232.z);
|
||||
float2 _255 = _253.xy * _165;
|
||||
float3 _256 = float3(_255.x, _255.y, _253.z);
|
||||
float3 _271 = ((in.IN_Color.xyz * _194.xyz) * (1.0 + (_256.x * 0.300000011920928955078125))) * (StudsMapTexture.sample(StudsMapSampler, _156.UvStuds).x * 2.0);
|
||||
float3 _271 = ((in.IN_Color.xyz * (_193 * 1.0).xyz) * (1.0 + (_256.x * 0.300000011920928955078125))) * (StudsMapTexture.sample(StudsMapSampler, _156.UvStuds).x * 2.0);
|
||||
float4 _298;
|
||||
do
|
||||
{
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float v;
|
||||
float4x4 row_major0;
|
||||
};
|
||||
|
||||
kernel void main0(device SSBORow& _4 [[buffer(0)]])
|
||||
{
|
||||
_4.v = float4(_4.row_major0[0][1], _4.row_major0[1][1], _4.row_major0[2][1], _4.row_major0[3][1])[2];
|
||||
}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOScalar
|
||||
{
|
||||
float3 a;
|
||||
float3x3 b;
|
||||
float3x3 c;
|
||||
};
|
||||
|
||||
kernel void main0(device SSBOScalar& _4 [[buffer(0)]])
|
||||
{
|
||||
float3x3 _20 = transpose(_4.b);
|
||||
_4.b = _4.c;
|
||||
_4.a = _20 * _4.a;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOScalar
|
||||
{
|
||||
packed_float3 a;
|
||||
packed_float3 b;
|
||||
packed_float3 c;
|
||||
};
|
||||
|
||||
kernel void main0(device SSBOScalar& _4 [[buffer(0)]])
|
||||
{
|
||||
float3 _17 = float3(_4.b);
|
||||
float3 _19 = float3(_4.c);
|
||||
_4.c = _17;
|
||||
_4.a = _17 * _19;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOScalar
|
||||
{
|
||||
float4 a[16];
|
||||
float4 b[16];
|
||||
float4 c[16];
|
||||
};
|
||||
|
||||
kernel void main0(device SSBOScalar& _4 [[buffer(0)]])
|
||||
{
|
||||
float2 _27 = _4.b[10].xy;
|
||||
float _29 = _4.c[10].x;
|
||||
_4.b[10].xy = float2(10.0, 11.0);
|
||||
_4.a[10].xy = _27 * _29;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOScalar
|
||||
{
|
||||
float2 a;
|
||||
packed_float3 b;
|
||||
packed_float3 c;
|
||||
};
|
||||
|
||||
kernel void main0(device SSBOScalar& _4 [[buffer(0)]])
|
||||
{
|
||||
float3 _21 = float3(_4.b);
|
||||
float3 _24 = float3(_4.c);
|
||||
_4.b = float3(1.0);
|
||||
_4.a = _21.xy * _24.yz;
|
||||
}
|
||||
|
||||
23
3rdparty/spirv-cross/reference/shaders-msl-no-opt/asm/packing/load-packed-no-forwarding.asm.comp
vendored
Normal file
23
3rdparty/spirv-cross/reference/shaders-msl-no-opt/asm/packing/load-packed-no-forwarding.asm.comp
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
typedef packed_float3 packed_rm_float3x3[3];
|
||||
|
||||
struct SSBOScalar
|
||||
{
|
||||
packed_float3 a;
|
||||
packed_rm_float3x3 b;
|
||||
packed_rm_float3x3 c;
|
||||
};
|
||||
|
||||
kernel void main0(device SSBOScalar& _4 [[buffer(0)]])
|
||||
{
|
||||
float3x3 _20 = transpose(float3x3(float3(_4.b[0]), float3(_4.b[1]), float3(_4.b[2])));
|
||||
_4.b[0] = float3x3(float3(_4.c[0]), float3(_4.c[1]), float3(_4.c[2]))[0];
|
||||
_4.b[1] = float3x3(float3(_4.c[0]), float3(_4.c[1]), float3(_4.c[2]))[1];
|
||||
_4.b[2] = float3x3(float3(_4.c[0]), float3(_4.c[1]), float3(_4.c[2]))[2];
|
||||
_4.a = _20 * float3(_4.a);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOScalar
|
||||
{
|
||||
float2 a;
|
||||
packed_float3 b;
|
||||
packed_float3 c;
|
||||
float3 d;
|
||||
};
|
||||
|
||||
kernel void main0(device SSBOScalar& _4 [[buffer(0)]])
|
||||
{
|
||||
float3 _24 = _4.b;
|
||||
_24.z = 2.0;
|
||||
_4.a = float2(_4.b[0], _4.b[1]) * _4.b[2];
|
||||
_4.b = _24;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float v;
|
||||
float4x4 row_major0;
|
||||
};
|
||||
|
||||
kernel void main0(device SSBORow& _4 [[buffer(0)]])
|
||||
{
|
||||
_4.v = _4.row_major0[2u][1];
|
||||
}
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
@@ -12,19 +10,6 @@ struct main0_out
|
||||
float4 gl_Position [[position]];
|
||||
};
|
||||
|
||||
// Implementation of an array copy function to cover GLSL's ability to copy an array via assignment.
|
||||
template<typename T, uint N>
|
||||
void spvArrayCopyFromStack1(thread T (&dst)[N], thread const T (&src)[N])
|
||||
{
|
||||
for (uint i = 0; i < N; dst[i] = src[i], i++);
|
||||
}
|
||||
|
||||
template<typename T, uint N>
|
||||
void spvArrayCopyFromConstant1(thread T (&dst)[N], constant T (&src)[N])
|
||||
{
|
||||
for (uint i = 0; i < N; dst[i] = src[i], i++);
|
||||
}
|
||||
|
||||
vertex main0_out main0()
|
||||
{
|
||||
main0_out out = {};
|
||||
@@ -35,12 +20,10 @@ vertex main0_out main0()
|
||||
_25++;
|
||||
continue;
|
||||
}
|
||||
float _31[2];
|
||||
spvArrayCopyFromStack1(_31, _23);
|
||||
float _37;
|
||||
if (as_type<uint>(3.0) != 0u)
|
||||
{
|
||||
_37 = _31[0];
|
||||
_37 = _23[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -95,11 +95,13 @@ kernel void main0(const device SSBO& _24 [[buffer(0)]], device SSBO2& _177 [[buf
|
||||
{
|
||||
if (l == 5)
|
||||
{
|
||||
l++;
|
||||
int _172 = l;
|
||||
l = _172 + 1;
|
||||
continue;
|
||||
}
|
||||
idat += float4(1.0);
|
||||
l++;
|
||||
int _172 = l;
|
||||
l = _172 + 1;
|
||||
continue;
|
||||
}
|
||||
_177.out_data[ident] = idat;
|
||||
|
||||
76
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-2x2-scalar.comp
vendored
Normal file
76
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-2x2-scalar.comp
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
float2x2 col_major0;
|
||||
float2x2 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float2x2 row_major0;
|
||||
float2x2 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float2x2 loaded = v_29.col_major0;
|
||||
v_29.col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float2x2 loaded = transpose(v_41.row_major0);
|
||||
v_41.row_major0 = transpose(loaded);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0 = v_29.col_major1;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = transpose(v_29.col_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0 = transpose(v_41.row_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = v_41.row_major1;
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1] = float2(v_41.row_major0[0][1], v_41.row_major0[1][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1].x;
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1].y;
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].y = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0].y;
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
82
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-2x2-std140.comp
vendored
Normal file
82
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-2x2-std140.comp
vendored
Normal file
@@ -0,0 +1,82 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
float2x4 col_major0;
|
||||
float2x4 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float2x4 row_major0;
|
||||
float2x4 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float2x2 loaded = float2x2(v_29.col_major0[0].xy, v_29.col_major0[1].xy);
|
||||
v_29.col_major1[0].xy = loaded[0];
|
||||
v_29.col_major1[1].xy = loaded[1];
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float2x2 loaded = transpose(float2x2(v_41.row_major0[0].xy, v_41.row_major0[1].xy));
|
||||
v_41.row_major0[0].xy = float2(loaded[0][0], loaded[1][0]);
|
||||
v_41.row_major0[1].xy = float2(loaded[0][1], loaded[1][1]);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0[0].xy = float2x2(v_29.col_major1[0].xy, v_29.col_major1[1].xy)[0];
|
||||
v_29.col_major0[1].xy = float2x2(v_29.col_major1[0].xy, v_29.col_major1[1].xy)[1];
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0[0].xy = float2(float2x2(v_29.col_major0[0].xy, v_29.col_major0[1].xy)[0][0], float2x2(v_29.col_major0[0].xy, v_29.col_major0[1].xy)[1][0]);
|
||||
v_41.row_major0[1].xy = float2(float2x2(v_29.col_major0[0].xy, v_29.col_major0[1].xy)[0][1], float2x2(v_29.col_major0[0].xy, v_29.col_major0[1].xy)[1][1]);
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].xy = float2(float2x2(v_41.row_major0[0].xy, v_41.row_major0[1].xy)[0][0], float2x2(v_41.row_major0[0].xy, v_41.row_major0[1].xy)[1][0]);
|
||||
v_29.col_major0[1].xy = float2(float2x2(v_41.row_major0[0].xy, v_41.row_major0[1].xy)[0][1], float2x2(v_41.row_major0[0].xy, v_41.row_major0[1].xy)[1][1]);
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0[0].xy = float2x2(v_41.row_major1[0].xy, v_41.row_major1[1].xy)[0];
|
||||
v_41.row_major0[1].xy = float2x2(v_41.row_major1[0].xy, v_41.row_major1[1].xy)[1];
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1].xy = float2(v_41.row_major0[0][1], v_41.row_major0[1][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1].x;
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1].y;
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].y = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0].y;
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
76
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-2x2-std430.comp
vendored
Normal file
76
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-2x2-std430.comp
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
float2x2 col_major0;
|
||||
float2x2 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float2x2 row_major0;
|
||||
float2x2 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float2x2 loaded = v_29.col_major0;
|
||||
v_29.col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float2x2 loaded = transpose(v_41.row_major0);
|
||||
v_41.row_major0 = transpose(loaded);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0 = v_29.col_major1;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = transpose(v_29.col_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0 = transpose(v_41.row_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = v_41.row_major1;
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1] = float2(v_41.row_major0[0][1], v_41.row_major0[1][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1].x;
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1].y;
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].y = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0].y;
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
82
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-2x3-scalar.comp
vendored
Normal file
82
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-2x3-scalar.comp
vendored
Normal file
@@ -0,0 +1,82 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
typedef packed_float3 packed_float2x3[2];
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
packed_float2x3 col_major0;
|
||||
packed_float2x3 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float3x2 row_major0;
|
||||
float3x2 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float2x3 loaded = float2x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]));
|
||||
v_29.col_major1[0] = loaded[0];
|
||||
v_29.col_major1[1] = loaded[1];
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float2x3 loaded = transpose(v_41.row_major0);
|
||||
v_41.row_major0 = transpose(loaded);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0[0] = float2x3(float3(v_29.col_major1[0]), float3(v_29.col_major1[1]))[0];
|
||||
v_29.col_major0[1] = float2x3(float3(v_29.col_major1[0]), float3(v_29.col_major1[1]))[1];
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = transpose(float2x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1])));
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0] = float3(v_41.row_major0[0][0], v_41.row_major0[1][0], v_41.row_major0[2][0]);
|
||||
v_29.col_major0[1] = float3(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1]);
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = v_41.row_major1;
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1] = float3(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1][0];
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1][1];
|
||||
v_41.row_major0[2][1] = v_29.col_major0[1][2];
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0][1u] = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0][1u];
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
83
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-2x3-std140.comp
vendored
Normal file
83
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-2x3-std140.comp
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
float2x3 col_major0;
|
||||
float2x3 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float3x4 row_major0;
|
||||
float3x4 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float2x3 loaded = v_29.col_major0;
|
||||
v_29.col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float2x3 loaded = transpose(float3x2(v_41.row_major0[0].xy, v_41.row_major0[1].xy, v_41.row_major0[2].xy));
|
||||
v_41.row_major0[0].xy = float2(loaded[0][0], loaded[1][0]);
|
||||
v_41.row_major0[1].xy = float2(loaded[0][1], loaded[1][1]);
|
||||
v_41.row_major0[2].xy = float2(loaded[0][2], loaded[1][2]);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0 = v_29.col_major1;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0[0].xy = float2(v_29.col_major0[0][0], v_29.col_major0[1][0]);
|
||||
v_41.row_major0[1].xy = float2(v_29.col_major0[0][1], v_29.col_major0[1][1]);
|
||||
v_41.row_major0[2].xy = float2(v_29.col_major0[0][2], v_29.col_major0[1][2]);
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0 = transpose(float3x2(v_41.row_major0[0].xy, v_41.row_major0[1].xy, v_41.row_major0[2].xy));
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0[0].xy = float3x2(v_41.row_major1[0].xy, v_41.row_major1[1].xy, v_41.row_major1[2].xy)[0];
|
||||
v_41.row_major0[1].xy = float3x2(v_41.row_major1[0].xy, v_41.row_major1[1].xy, v_41.row_major1[2].xy)[1];
|
||||
v_41.row_major0[2].xy = float3x2(v_41.row_major1[0].xy, v_41.row_major1[1].xy, v_41.row_major1[2].xy)[2];
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1] = float3(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1].x;
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1].y;
|
||||
v_41.row_major0[2][1] = v_29.col_major0[1].z;
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].y = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0].y;
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
77
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-2x3-std430.comp
vendored
Normal file
77
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-2x3-std430.comp
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
float2x3 col_major0;
|
||||
float2x3 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float3x2 row_major0;
|
||||
float3x2 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float2x3 loaded = v_29.col_major0;
|
||||
v_29.col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float2x3 loaded = transpose(v_41.row_major0);
|
||||
v_41.row_major0 = transpose(loaded);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0 = v_29.col_major1;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = transpose(v_29.col_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0 = transpose(v_41.row_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = v_41.row_major1;
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1] = float3(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1].x;
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1].y;
|
||||
v_41.row_major0[2][1] = v_29.col_major0[1].z;
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].y = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0].y;
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
78
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-2x4-scalar.comp
vendored
Normal file
78
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-2x4-scalar.comp
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
float2x4 col_major0;
|
||||
float2x4 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float4x2 row_major0;
|
||||
float4x2 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float2x4 loaded = v_29.col_major0;
|
||||
v_29.col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float2x4 loaded = transpose(v_41.row_major0);
|
||||
v_41.row_major0 = transpose(loaded);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0 = v_29.col_major1;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = transpose(v_29.col_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0 = transpose(v_41.row_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = v_41.row_major1;
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1] = float4(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1], v_41.row_major0[3][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1].x;
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1].y;
|
||||
v_41.row_major0[2][1] = v_29.col_major0[1].z;
|
||||
v_41.row_major0[3][1] = v_29.col_major0[1].w;
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].y = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0].y;
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
87
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-2x4-std140.comp
vendored
Normal file
87
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-2x4-std140.comp
vendored
Normal file
@@ -0,0 +1,87 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
float2x4 col_major0;
|
||||
float2x4 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float4x4 row_major0;
|
||||
float4x4 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float2x4 loaded = v_29.col_major0;
|
||||
v_29.col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float2x4 loaded = transpose(float4x2(v_41.row_major0[0].xy, v_41.row_major0[1].xy, v_41.row_major0[2].xy, v_41.row_major0[3].xy));
|
||||
v_41.row_major0[0].xy = float2(loaded[0][0], loaded[1][0]);
|
||||
v_41.row_major0[1].xy = float2(loaded[0][1], loaded[1][1]);
|
||||
v_41.row_major0[2].xy = float2(loaded[0][2], loaded[1][2]);
|
||||
v_41.row_major0[3].xy = float2(loaded[0][3], loaded[1][3]);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0 = v_29.col_major1;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0[0].xy = float2(v_29.col_major0[0][0], v_29.col_major0[1][0]);
|
||||
v_41.row_major0[1].xy = float2(v_29.col_major0[0][1], v_29.col_major0[1][1]);
|
||||
v_41.row_major0[2].xy = float2(v_29.col_major0[0][2], v_29.col_major0[1][2]);
|
||||
v_41.row_major0[3].xy = float2(v_29.col_major0[0][3], v_29.col_major0[1][3]);
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0 = transpose(float4x2(v_41.row_major0[0].xy, v_41.row_major0[1].xy, v_41.row_major0[2].xy, v_41.row_major0[3].xy));
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0[0].xy = float4x2(v_41.row_major1[0].xy, v_41.row_major1[1].xy, v_41.row_major1[2].xy, v_41.row_major1[3].xy)[0];
|
||||
v_41.row_major0[1].xy = float4x2(v_41.row_major1[0].xy, v_41.row_major1[1].xy, v_41.row_major1[2].xy, v_41.row_major1[3].xy)[1];
|
||||
v_41.row_major0[2].xy = float4x2(v_41.row_major1[0].xy, v_41.row_major1[1].xy, v_41.row_major1[2].xy, v_41.row_major1[3].xy)[2];
|
||||
v_41.row_major0[3].xy = float4x2(v_41.row_major1[0].xy, v_41.row_major1[1].xy, v_41.row_major1[2].xy, v_41.row_major1[3].xy)[3];
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1] = float4(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1], v_41.row_major0[3][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1].x;
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1].y;
|
||||
v_41.row_major0[2][1] = v_29.col_major0[1].z;
|
||||
v_41.row_major0[3][1] = v_29.col_major0[1].w;
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].y = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0].y;
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
78
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-2x4-std430.comp
vendored
Normal file
78
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-2x4-std430.comp
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
float2x4 col_major0;
|
||||
float2x4 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float4x2 row_major0;
|
||||
float4x2 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float2x4 loaded = v_29.col_major0;
|
||||
v_29.col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float2x4 loaded = transpose(v_41.row_major0);
|
||||
v_41.row_major0 = transpose(loaded);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0 = v_29.col_major1;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = transpose(v_29.col_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0 = transpose(v_41.row_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = v_41.row_major1;
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1] = float4(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1], v_41.row_major0[3][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1].x;
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1].y;
|
||||
v_41.row_major0[2][1] = v_29.col_major0[1].z;
|
||||
v_41.row_major0[3][1] = v_29.col_major0[1].w;
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].y = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0].y;
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
81
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-3x2-scalar.comp
vendored
Normal file
81
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-3x2-scalar.comp
vendored
Normal file
@@ -0,0 +1,81 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
typedef packed_float3 packed_rm_float3x2[2];
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
float3x2 col_major0;
|
||||
float3x2 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
packed_rm_float3x2 row_major0;
|
||||
packed_rm_float3x2 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float3x2 loaded = v_29.col_major0;
|
||||
v_29.col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float3x2 loaded = transpose(float2x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1])));
|
||||
v_41.row_major0[0] = float3(loaded[0][0], loaded[1][0], loaded[2][0]);
|
||||
v_41.row_major0[1] = float3(loaded[0][1], loaded[1][1], loaded[2][1]);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0 = v_29.col_major1;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0[0] = float3(v_29.col_major0[0][0], v_29.col_major0[1][0], v_29.col_major0[2][0]);
|
||||
v_41.row_major0[1] = float3(v_29.col_major0[0][1], v_29.col_major0[1][1], v_29.col_major0[2][1]);
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0 = transpose(float2x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1])));
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0[0] = float2x3(float3(v_41.row_major1[0]), float3(v_41.row_major1[1]))[0];
|
||||
v_41.row_major0[1] = float2x3(float3(v_41.row_major1[0]), float3(v_41.row_major1[1]))[1];
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1] = float2(v_41.row_major0[0][1], v_41.row_major0[1][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1].x;
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1].y;
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].y = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0].y;
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
82
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-3x2-std140.comp
vendored
Normal file
82
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-3x2-std140.comp
vendored
Normal file
@@ -0,0 +1,82 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
float3x4 col_major0;
|
||||
float3x4 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float2x3 row_major0;
|
||||
float2x3 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float3x2 loaded = float3x2(v_29.col_major0[0].xy, v_29.col_major0[1].xy, v_29.col_major0[2].xy);
|
||||
v_29.col_major1[0].xy = loaded[0];
|
||||
v_29.col_major1[1].xy = loaded[1];
|
||||
v_29.col_major1[2].xy = loaded[2];
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float3x2 loaded = transpose(v_41.row_major0);
|
||||
v_41.row_major0 = transpose(loaded);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0[0].xy = float3x2(v_29.col_major1[0].xy, v_29.col_major1[1].xy, v_29.col_major1[2].xy)[0];
|
||||
v_29.col_major0[1].xy = float3x2(v_29.col_major1[0].xy, v_29.col_major1[1].xy, v_29.col_major1[2].xy)[1];
|
||||
v_29.col_major0[2].xy = float3x2(v_29.col_major1[0].xy, v_29.col_major1[1].xy, v_29.col_major1[2].xy)[2];
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = transpose(float3x2(v_29.col_major0[0].xy, v_29.col_major0[1].xy, v_29.col_major0[2].xy));
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].xy = float2(v_41.row_major0[0][0], v_41.row_major0[1][0]);
|
||||
v_29.col_major0[1].xy = float2(v_41.row_major0[0][1], v_41.row_major0[1][1]);
|
||||
v_29.col_major0[2].xy = float2(v_41.row_major0[0][2], v_41.row_major0[1][2]);
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = v_41.row_major1;
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1].xy = float2(v_41.row_major0[0][1], v_41.row_major0[1][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1].x;
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1].y;
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].y = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0].y;
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
76
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-3x2-std430.comp
vendored
Normal file
76
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-3x2-std430.comp
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
float3x2 col_major0;
|
||||
float3x2 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float2x3 row_major0;
|
||||
float2x3 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float3x2 loaded = v_29.col_major0;
|
||||
v_29.col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float3x2 loaded = transpose(v_41.row_major0);
|
||||
v_41.row_major0 = transpose(loaded);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0 = v_29.col_major1;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = transpose(v_29.col_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0 = transpose(v_41.row_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = v_41.row_major1;
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1] = float2(v_41.row_major0[0][1], v_41.row_major0[1][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1].x;
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1].y;
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].y = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0].y;
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
92
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-3x3-scalar.comp
vendored
Normal file
92
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-3x3-scalar.comp
vendored
Normal file
@@ -0,0 +1,92 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
typedef packed_float3 packed_float3x3[3];
|
||||
typedef packed_float3 packed_rm_float3x3[3];
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
packed_float3x3 col_major0;
|
||||
packed_float3x3 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
packed_rm_float3x3 row_major0;
|
||||
packed_rm_float3x3 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float3x3 loaded = float3x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]), float3(v_29.col_major0[2]));
|
||||
v_29.col_major1[0] = loaded[0];
|
||||
v_29.col_major1[1] = loaded[1];
|
||||
v_29.col_major1[2] = loaded[2];
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float3x3 loaded = transpose(float3x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1]), float3(v_41.row_major0[2])));
|
||||
v_41.row_major0[0] = float3(loaded[0][0], loaded[1][0], loaded[2][0]);
|
||||
v_41.row_major0[1] = float3(loaded[0][1], loaded[1][1], loaded[2][1]);
|
||||
v_41.row_major0[2] = float3(loaded[0][2], loaded[1][2], loaded[2][2]);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0[0] = float3x3(float3(v_29.col_major1[0]), float3(v_29.col_major1[1]), float3(v_29.col_major1[2]))[0];
|
||||
v_29.col_major0[1] = float3x3(float3(v_29.col_major1[0]), float3(v_29.col_major1[1]), float3(v_29.col_major1[2]))[1];
|
||||
v_29.col_major0[2] = float3x3(float3(v_29.col_major1[0]), float3(v_29.col_major1[1]), float3(v_29.col_major1[2]))[2];
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0[0] = float3(float3x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]), float3(v_29.col_major0[2]))[0][0], float3x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]), float3(v_29.col_major0[2]))[1][0], float3x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]), float3(v_29.col_major0[2]))[2][0]);
|
||||
v_41.row_major0[1] = float3(float3x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]), float3(v_29.col_major0[2]))[0][1], float3x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]), float3(v_29.col_major0[2]))[1][1], float3x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]), float3(v_29.col_major0[2]))[2][1]);
|
||||
v_41.row_major0[2] = float3(float3x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]), float3(v_29.col_major0[2]))[0][2], float3x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]), float3(v_29.col_major0[2]))[1][2], float3x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]), float3(v_29.col_major0[2]))[2][2]);
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0] = float3(float3x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1]), float3(v_41.row_major0[2]))[0][0], float3x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1]), float3(v_41.row_major0[2]))[1][0], float3x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1]), float3(v_41.row_major0[2]))[2][0]);
|
||||
v_29.col_major0[1] = float3(float3x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1]), float3(v_41.row_major0[2]))[0][1], float3x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1]), float3(v_41.row_major0[2]))[1][1], float3x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1]), float3(v_41.row_major0[2]))[2][1]);
|
||||
v_29.col_major0[2] = float3(float3x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1]), float3(v_41.row_major0[2]))[0][2], float3x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1]), float3(v_41.row_major0[2]))[1][2], float3x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1]), float3(v_41.row_major0[2]))[2][2]);
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0[0] = float3x3(float3(v_41.row_major1[0]), float3(v_41.row_major1[1]), float3(v_41.row_major1[2]))[0];
|
||||
v_41.row_major0[1] = float3x3(float3(v_41.row_major1[0]), float3(v_41.row_major1[1]), float3(v_41.row_major1[2]))[1];
|
||||
v_41.row_major0[2] = float3x3(float3(v_41.row_major1[0]), float3(v_41.row_major1[1]), float3(v_41.row_major1[2]))[2];
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1] = float3(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1][0];
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1][1];
|
||||
v_41.row_major0[2][1] = v_29.col_major0[1][2];
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0][1u] = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0][1u];
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
77
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-3x3-std140.comp
vendored
Normal file
77
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-3x3-std140.comp
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
float3x3 col_major0;
|
||||
float3x3 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float3x3 row_major0;
|
||||
float3x3 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float3x3 loaded = v_29.col_major0;
|
||||
v_29.col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float3x3 loaded = transpose(v_41.row_major0);
|
||||
v_41.row_major0 = transpose(loaded);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0 = v_29.col_major1;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = transpose(v_29.col_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0 = transpose(v_41.row_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = v_41.row_major1;
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1] = float3(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1].x;
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1].y;
|
||||
v_41.row_major0[2][1] = v_29.col_major0[1].z;
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].y = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0].y;
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
77
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-3x3-std430.comp
vendored
Normal file
77
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-3x3-std430.comp
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
float3x3 col_major0;
|
||||
float3x3 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float3x3 row_major0;
|
||||
float3x3 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float3x3 loaded = v_29.col_major0;
|
||||
v_29.col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float3x3 loaded = transpose(v_41.row_major0);
|
||||
v_41.row_major0 = transpose(loaded);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0 = v_29.col_major1;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = transpose(v_29.col_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0 = transpose(v_41.row_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = v_41.row_major1;
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1] = float3(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1].x;
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1].y;
|
||||
v_41.row_major0[2][1] = v_29.col_major0[1].z;
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].y = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0].y;
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
89
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-3x4-scalar.comp
vendored
Normal file
89
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-3x4-scalar.comp
vendored
Normal file
@@ -0,0 +1,89 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
typedef packed_float3 packed_rm_float3x4[4];
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
float3x4 col_major0;
|
||||
float3x4 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
packed_rm_float3x4 row_major0;
|
||||
packed_rm_float3x4 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float3x4 loaded = v_29.col_major0;
|
||||
v_29.col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float3x4 loaded = transpose(float4x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1]), float3(v_41.row_major0[2]), float3(v_41.row_major0[3])));
|
||||
v_41.row_major0[0] = float3(loaded[0][0], loaded[1][0], loaded[2][0]);
|
||||
v_41.row_major0[1] = float3(loaded[0][1], loaded[1][1], loaded[2][1]);
|
||||
v_41.row_major0[2] = float3(loaded[0][2], loaded[1][2], loaded[2][2]);
|
||||
v_41.row_major0[3] = float3(loaded[0][3], loaded[1][3], loaded[2][3]);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0 = v_29.col_major1;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0[0] = float3(v_29.col_major0[0][0], v_29.col_major0[1][0], v_29.col_major0[2][0]);
|
||||
v_41.row_major0[1] = float3(v_29.col_major0[0][1], v_29.col_major0[1][1], v_29.col_major0[2][1]);
|
||||
v_41.row_major0[2] = float3(v_29.col_major0[0][2], v_29.col_major0[1][2], v_29.col_major0[2][2]);
|
||||
v_41.row_major0[3] = float3(v_29.col_major0[0][3], v_29.col_major0[1][3], v_29.col_major0[2][3]);
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0 = transpose(float4x3(float3(v_41.row_major0[0]), float3(v_41.row_major0[1]), float3(v_41.row_major0[2]), float3(v_41.row_major0[3])));
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0[0] = float4x3(float3(v_41.row_major1[0]), float3(v_41.row_major1[1]), float3(v_41.row_major1[2]), float3(v_41.row_major1[3]))[0];
|
||||
v_41.row_major0[1] = float4x3(float3(v_41.row_major1[0]), float3(v_41.row_major1[1]), float3(v_41.row_major1[2]), float3(v_41.row_major1[3]))[1];
|
||||
v_41.row_major0[2] = float4x3(float3(v_41.row_major1[0]), float3(v_41.row_major1[1]), float3(v_41.row_major1[2]), float3(v_41.row_major1[3]))[2];
|
||||
v_41.row_major0[3] = float4x3(float3(v_41.row_major1[0]), float3(v_41.row_major1[1]), float3(v_41.row_major1[2]), float3(v_41.row_major1[3]))[3];
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1] = float4(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1], v_41.row_major0[3][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1].x;
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1].y;
|
||||
v_41.row_major0[2][1] = v_29.col_major0[1].z;
|
||||
v_41.row_major0[3][1] = v_29.col_major0[1].w;
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].y = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0].y;
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
78
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-3x4-std140.comp
vendored
Normal file
78
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-3x4-std140.comp
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
float3x4 col_major0;
|
||||
float3x4 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float4x3 row_major0;
|
||||
float4x3 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float3x4 loaded = v_29.col_major0;
|
||||
v_29.col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float3x4 loaded = transpose(v_41.row_major0);
|
||||
v_41.row_major0 = transpose(loaded);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0 = v_29.col_major1;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = transpose(v_29.col_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0 = transpose(v_41.row_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = v_41.row_major1;
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1] = float4(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1], v_41.row_major0[3][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1].x;
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1].y;
|
||||
v_41.row_major0[2][1] = v_29.col_major0[1].z;
|
||||
v_41.row_major0[3][1] = v_29.col_major0[1].w;
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].y = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0].y;
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
78
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-3x4-std430.comp
vendored
Normal file
78
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-3x4-std430.comp
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
float3x4 col_major0;
|
||||
float3x4 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float4x3 row_major0;
|
||||
float4x3 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float3x4 loaded = v_29.col_major0;
|
||||
v_29.col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float3x4 loaded = transpose(v_41.row_major0);
|
||||
v_41.row_major0 = transpose(loaded);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0 = v_29.col_major1;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = transpose(v_29.col_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0 = transpose(v_41.row_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = v_41.row_major1;
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1] = float4(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1], v_41.row_major0[3][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1].x;
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1].y;
|
||||
v_41.row_major0[2][1] = v_29.col_major0[1].z;
|
||||
v_41.row_major0[3][1] = v_29.col_major0[1].w;
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].y = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0].y;
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
76
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-4x2-scalar.comp
vendored
Normal file
76
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-4x2-scalar.comp
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
float4x2 col_major0;
|
||||
float4x2 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float2x4 row_major0;
|
||||
float2x4 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float4x2 loaded = v_29.col_major0;
|
||||
v_29.col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float4x2 loaded = transpose(v_41.row_major0);
|
||||
v_41.row_major0 = transpose(loaded);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0 = v_29.col_major1;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = transpose(v_29.col_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0 = transpose(v_41.row_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = v_41.row_major1;
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1] = float2(v_41.row_major0[0][1], v_41.row_major0[1][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1].x;
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1].y;
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].y = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0].y;
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
85
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-4x2-std140.comp
vendored
Normal file
85
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-4x2-std140.comp
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
float4x4 col_major0;
|
||||
float4x4 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float2x4 row_major0;
|
||||
float2x4 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float4x2 loaded = float4x2(v_29.col_major0[0].xy, v_29.col_major0[1].xy, v_29.col_major0[2].xy, v_29.col_major0[3].xy);
|
||||
v_29.col_major1[0].xy = loaded[0];
|
||||
v_29.col_major1[1].xy = loaded[1];
|
||||
v_29.col_major1[2].xy = loaded[2];
|
||||
v_29.col_major1[3].xy = loaded[3];
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float4x2 loaded = transpose(v_41.row_major0);
|
||||
v_41.row_major0 = transpose(loaded);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0[0].xy = float4x2(v_29.col_major1[0].xy, v_29.col_major1[1].xy, v_29.col_major1[2].xy, v_29.col_major1[3].xy)[0];
|
||||
v_29.col_major0[1].xy = float4x2(v_29.col_major1[0].xy, v_29.col_major1[1].xy, v_29.col_major1[2].xy, v_29.col_major1[3].xy)[1];
|
||||
v_29.col_major0[2].xy = float4x2(v_29.col_major1[0].xy, v_29.col_major1[1].xy, v_29.col_major1[2].xy, v_29.col_major1[3].xy)[2];
|
||||
v_29.col_major0[3].xy = float4x2(v_29.col_major1[0].xy, v_29.col_major1[1].xy, v_29.col_major1[2].xy, v_29.col_major1[3].xy)[3];
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = transpose(float4x2(v_29.col_major0[0].xy, v_29.col_major0[1].xy, v_29.col_major0[2].xy, v_29.col_major0[3].xy));
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].xy = float2(v_41.row_major0[0][0], v_41.row_major0[1][0]);
|
||||
v_29.col_major0[1].xy = float2(v_41.row_major0[0][1], v_41.row_major0[1][1]);
|
||||
v_29.col_major0[2].xy = float2(v_41.row_major0[0][2], v_41.row_major0[1][2]);
|
||||
v_29.col_major0[3].xy = float2(v_41.row_major0[0][3], v_41.row_major0[1][3]);
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = v_41.row_major1;
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1].xy = float2(v_41.row_major0[0][1], v_41.row_major0[1][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1].x;
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1].y;
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].y = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0].y;
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
76
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-4x2-std430.comp
vendored
Normal file
76
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-4x2-std430.comp
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
float4x2 col_major0;
|
||||
float4x2 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float2x4 row_major0;
|
||||
float2x4 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float4x2 loaded = v_29.col_major0;
|
||||
v_29.col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float4x2 loaded = transpose(v_41.row_major0);
|
||||
v_41.row_major0 = transpose(loaded);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0 = v_29.col_major1;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = transpose(v_29.col_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0 = transpose(v_41.row_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = v_41.row_major1;
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1] = float2(v_41.row_major0[0][1], v_41.row_major0[1][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1].x;
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1].y;
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].y = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0].y;
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
88
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-4x3-scalar.comp
vendored
Normal file
88
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-4x3-scalar.comp
vendored
Normal file
@@ -0,0 +1,88 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
typedef packed_float3 packed_float4x3[4];
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
packed_float4x3 col_major0;
|
||||
packed_float4x3 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float3x4 row_major0;
|
||||
float3x4 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float4x3 loaded = float4x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]), float3(v_29.col_major0[2]), float3(v_29.col_major0[3]));
|
||||
v_29.col_major1[0] = loaded[0];
|
||||
v_29.col_major1[1] = loaded[1];
|
||||
v_29.col_major1[2] = loaded[2];
|
||||
v_29.col_major1[3] = loaded[3];
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float4x3 loaded = transpose(v_41.row_major0);
|
||||
v_41.row_major0 = transpose(loaded);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0[0] = float4x3(float3(v_29.col_major1[0]), float3(v_29.col_major1[1]), float3(v_29.col_major1[2]), float3(v_29.col_major1[3]))[0];
|
||||
v_29.col_major0[1] = float4x3(float3(v_29.col_major1[0]), float3(v_29.col_major1[1]), float3(v_29.col_major1[2]), float3(v_29.col_major1[3]))[1];
|
||||
v_29.col_major0[2] = float4x3(float3(v_29.col_major1[0]), float3(v_29.col_major1[1]), float3(v_29.col_major1[2]), float3(v_29.col_major1[3]))[2];
|
||||
v_29.col_major0[3] = float4x3(float3(v_29.col_major1[0]), float3(v_29.col_major1[1]), float3(v_29.col_major1[2]), float3(v_29.col_major1[3]))[3];
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = transpose(float4x3(float3(v_29.col_major0[0]), float3(v_29.col_major0[1]), float3(v_29.col_major0[2]), float3(v_29.col_major0[3])));
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0] = float3(v_41.row_major0[0][0], v_41.row_major0[1][0], v_41.row_major0[2][0]);
|
||||
v_29.col_major0[1] = float3(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1]);
|
||||
v_29.col_major0[2] = float3(v_41.row_major0[0][2], v_41.row_major0[1][2], v_41.row_major0[2][2]);
|
||||
v_29.col_major0[3] = float3(v_41.row_major0[0][3], v_41.row_major0[1][3], v_41.row_major0[2][3]);
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = v_41.row_major1;
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1] = float3(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1][0];
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1][1];
|
||||
v_41.row_major0[2][1] = v_29.col_major0[1][2];
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0][1u] = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0][1u];
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
77
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-4x3-std140.comp
vendored
Normal file
77
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-4x3-std140.comp
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
float4x3 col_major0;
|
||||
float4x3 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float3x4 row_major0;
|
||||
float3x4 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float4x3 loaded = v_29.col_major0;
|
||||
v_29.col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float4x3 loaded = transpose(v_41.row_major0);
|
||||
v_41.row_major0 = transpose(loaded);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0 = v_29.col_major1;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = transpose(v_29.col_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0 = transpose(v_41.row_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = v_41.row_major1;
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1] = float3(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1].x;
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1].y;
|
||||
v_41.row_major0[2][1] = v_29.col_major0[1].z;
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].y = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0].y;
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
77
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-4x3-std430.comp
vendored
Normal file
77
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-4x3-std430.comp
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
float4x3 col_major0;
|
||||
float4x3 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float3x4 row_major0;
|
||||
float3x4 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float4x3 loaded = v_29.col_major0;
|
||||
v_29.col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float4x3 loaded = transpose(v_41.row_major0);
|
||||
v_41.row_major0 = transpose(loaded);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0 = v_29.col_major1;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = transpose(v_29.col_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0 = transpose(v_41.row_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = v_41.row_major1;
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1] = float3(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1].x;
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1].y;
|
||||
v_41.row_major0[2][1] = v_29.col_major0[1].z;
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].y = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0].y;
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
78
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-4x4-scalar.comp
vendored
Normal file
78
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-4x4-scalar.comp
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
float4x4 col_major0;
|
||||
float4x4 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float4x4 row_major0;
|
||||
float4x4 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float4x4 loaded = v_29.col_major0;
|
||||
v_29.col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float4x4 loaded = transpose(v_41.row_major0);
|
||||
v_41.row_major0 = transpose(loaded);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0 = v_29.col_major1;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = transpose(v_29.col_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0 = transpose(v_41.row_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = v_41.row_major1;
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1] = float4(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1], v_41.row_major0[3][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1].x;
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1].y;
|
||||
v_41.row_major0[2][1] = v_29.col_major0[1].z;
|
||||
v_41.row_major0[3][1] = v_29.col_major0[1].w;
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].y = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0].y;
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
78
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-4x4-std140.comp
vendored
Normal file
78
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-4x4-std140.comp
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
float4x4 col_major0;
|
||||
float4x4 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float4x4 row_major0;
|
||||
float4x4 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float4x4 loaded = v_29.col_major0;
|
||||
v_29.col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float4x4 loaded = transpose(v_41.row_major0);
|
||||
v_41.row_major0 = transpose(loaded);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0 = v_29.col_major1;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = transpose(v_29.col_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0 = transpose(v_41.row_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = v_41.row_major1;
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1] = float4(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1], v_41.row_major0[3][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1].x;
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1].y;
|
||||
v_41.row_major0[2][1] = v_29.col_major0[1].z;
|
||||
v_41.row_major0[3][1] = v_29.col_major0[1].w;
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].y = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0].y;
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
78
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-4x4-std430.comp
vendored
Normal file
78
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-4x4-std430.comp
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBOCol
|
||||
{
|
||||
float4x4 col_major0;
|
||||
float4x4 col_major1;
|
||||
};
|
||||
|
||||
struct SSBORow
|
||||
{
|
||||
float4x4 row_major0;
|
||||
float4x4 row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
float4x4 loaded = v_29.col_major0;
|
||||
v_29.col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major(device SSBORow& v_41)
|
||||
{
|
||||
float4x4 loaded = transpose(v_41.row_major0);
|
||||
v_41.row_major0 = transpose(loaded);
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major(device SSBOCol& v_29)
|
||||
{
|
||||
v_29.col_major0 = v_29.col_major1;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = transpose(v_29.col_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0 = transpose(v_41.row_major0);
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major(device SSBORow& v_41)
|
||||
{
|
||||
v_41.row_major0 = v_41.row_major1;
|
||||
}
|
||||
|
||||
void copy_columns(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[1] = float4(v_41.row_major0[0][1], v_41.row_major0[1][1], v_41.row_major0[2][1], v_41.row_major0[3][1]);
|
||||
v_41.row_major0[0][1] = v_29.col_major0[1].x;
|
||||
v_41.row_major0[1][1] = v_29.col_major0[1].y;
|
||||
v_41.row_major0[2][1] = v_29.col_major0[1].z;
|
||||
v_41.row_major0[3][1] = v_29.col_major0[1].w;
|
||||
}
|
||||
|
||||
void copy_elements(device SSBOCol& v_29, device SSBORow& v_41)
|
||||
{
|
||||
v_29.col_major0[0].y = v_41.row_major0[1u][0];
|
||||
v_41.row_major0[1u][0] = v_29.col_major0[0].y;
|
||||
}
|
||||
|
||||
kernel void main0(device SSBOCol& v_29 [[buffer(0)]], device SSBORow& v_41 [[buffer(1)]])
|
||||
{
|
||||
load_store_to_variable_col_major(v_29);
|
||||
load_store_to_variable_row_major(v_41);
|
||||
copy_col_major_to_col_major(v_29);
|
||||
copy_col_major_to_row_major(v_29, v_41);
|
||||
copy_row_major_to_col_major(v_29, v_41);
|
||||
copy_row_major_to_row_major(v_41);
|
||||
copy_columns(v_29, v_41);
|
||||
copy_elements(v_29, v_41);
|
||||
}
|
||||
|
||||
19
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-multiply-row-major.comp
vendored
Normal file
19
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/matrix-multiply-row-major.comp
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBO
|
||||
{
|
||||
float3x3 m0;
|
||||
float3x3 m1;
|
||||
float3 v0;
|
||||
float3 v1;
|
||||
};
|
||||
|
||||
kernel void main0(device SSBO& _11 [[buffer(0)]])
|
||||
{
|
||||
_11.v0 = _11.v1 * (_11.m1 * _11.m0);
|
||||
_11.v0 = (_11.v1 * _11.m1) * _11.m0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
typedef packed_float3 packed_float3x3[3];
|
||||
|
||||
struct SSBO
|
||||
{
|
||||
packed_float3x3 m0;
|
||||
packed_float3x3 m1;
|
||||
packed_float3 v0;
|
||||
packed_float3 v1;
|
||||
};
|
||||
|
||||
kernel void main0(device SSBO& _11 [[buffer(0)]])
|
||||
{
|
||||
_11.v0 = (float3x3(float3(_11.m0[0]), float3(_11.m0[1]), float3(_11.m0[2])) * float3x3(float3(_11.m1[0]), float3(_11.m1[1]), float3(_11.m1[2]))) * float3(_11.v1);
|
||||
_11.v0 = float3x3(float3(_11.m0[0]), float3(_11.m0[1]), float3(_11.m0[2])) * (float3x3(float3(_11.m1[0]), float3(_11.m1[1]), float3(_11.m1[2])) * float3(_11.v1));
|
||||
_11.v0 = (float3(_11.v1) * float3x3(float3(_11.m0[0]), float3(_11.m0[1]), float3(_11.m0[2]))) * float3x3(float3(_11.m1[0]), float3(_11.m1[1]), float3(_11.m1[2]));
|
||||
_11.v0 = float3(_11.v1) * (float3x3(float3(_11.m0[0]), float3(_11.m0[1]), float3(_11.m0[2])) * float3x3(float3(_11.m1[0]), float3(_11.m1[1]), float3(_11.m1[2])));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBO
|
||||
{
|
||||
float2x4 m0;
|
||||
float2x4 m1;
|
||||
float2 v0;
|
||||
float2 v1;
|
||||
};
|
||||
|
||||
kernel void main0(device SSBO& _11 [[buffer(0)]])
|
||||
{
|
||||
_11.v0 = (float2x2(_11.m0[0].xy, _11.m0[1].xy) * float2x2(_11.m1[0].xy, _11.m1[1].xy)) * _11.v1;
|
||||
_11.v0 = float2x2(_11.m0[0].xy, _11.m0[1].xy) * (float2x2(_11.m1[0].xy, _11.m1[1].xy) * _11.v1);
|
||||
_11.v0 = (_11.v1 * float2x2(_11.m0[0].xy, _11.m0[1].xy)) * float2x2(_11.m1[0].xy, _11.m1[1].xy);
|
||||
_11.v0 = _11.v1 * (float2x2(_11.m0[0].xy, _11.m0[1].xy) * float2x2(_11.m1[0].xy, _11.m1[1].xy));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
typedef packed_float3 packed_rm_float3x3[3];
|
||||
|
||||
struct SSBO
|
||||
{
|
||||
packed_rm_float3x3 m0;
|
||||
packed_rm_float3x3 m1;
|
||||
packed_float3 v0;
|
||||
packed_float3 v1;
|
||||
};
|
||||
|
||||
kernel void main0(device SSBO& _11 [[buffer(0)]])
|
||||
{
|
||||
_11.v0 = float3(_11.v1) * (float3x3(float3(_11.m1[0]), float3(_11.m1[1]), float3(_11.m1[2])) * float3x3(float3(_11.m0[0]), float3(_11.m0[1]), float3(_11.m0[2])));
|
||||
_11.v0 = (float3(_11.v1) * float3x3(float3(_11.m1[0]), float3(_11.m1[1]), float3(_11.m1[2]))) * float3x3(float3(_11.m0[0]), float3(_11.m0[1]), float3(_11.m0[2]));
|
||||
_11.v0 = float3x3(float3(_11.m1[0]), float3(_11.m1[1]), float3(_11.m1[2])) * (float3x3(float3(_11.m0[0]), float3(_11.m0[1]), float3(_11.m0[2])) * float3(_11.v1));
|
||||
_11.v0 = (float3x3(float3(_11.m1[0]), float3(_11.m1[1]), float3(_11.m1[2])) * float3x3(float3(_11.m0[0]), float3(_11.m0[1]), float3(_11.m0[2]))) * float3(_11.v1);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBO
|
||||
{
|
||||
float2x4 m0;
|
||||
float2x4 m1;
|
||||
float2 v0;
|
||||
float2 v1;
|
||||
};
|
||||
|
||||
kernel void main0(device SSBO& _11 [[buffer(0)]])
|
||||
{
|
||||
_11.v0 = _11.v1 * (float2x2(_11.m1[0].xy, _11.m1[1].xy) * float2x2(_11.m0[0].xy, _11.m0[1].xy));
|
||||
_11.v0 = (_11.v1 * float2x2(_11.m1[0].xy, _11.m1[1].xy)) * float2x2(_11.m0[0].xy, _11.m0[1].xy);
|
||||
_11.v0 = float2x2(_11.m1[0].xy, _11.m1[1].xy) * (float2x2(_11.m0[0].xy, _11.m0[1].xy) * _11.v1);
|
||||
_11.v0 = (float2x2(_11.m1[0].xy, _11.m1[1].xy) * float2x2(_11.m0[0].xy, _11.m0[1].xy)) * _11.v1;
|
||||
}
|
||||
|
||||
19
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/member-padding.comp
vendored
Normal file
19
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/member-padding.comp
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBO
|
||||
{
|
||||
char _m0_pad[16];
|
||||
float a;
|
||||
char _m1_pad[20];
|
||||
float b;
|
||||
};
|
||||
|
||||
kernel void main0(device SSBO& _9 [[buffer(0)]])
|
||||
{
|
||||
_9.a = 10.0;
|
||||
_9.b = 20.0;
|
||||
}
|
||||
|
||||
40
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/std140-array-of-vectors.comp
vendored
Normal file
40
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/std140-array-of-vectors.comp
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct SSBO
|
||||
{
|
||||
float4 v1[4];
|
||||
float4 v2[4];
|
||||
float3 v3[4];
|
||||
float4 v4[4];
|
||||
float4 v1_array_of_array[4][4];
|
||||
float4 v2_array_of_array[4][4];
|
||||
float3 v3_array_of_array[4][4];
|
||||
float4 v4_array_of_array[4][4];
|
||||
float4 v_unsized[1];
|
||||
};
|
||||
|
||||
kernel void main0(device SSBO& _29 [[buffer(0)]])
|
||||
{
|
||||
float loaded1 = _29.v1[1].x;
|
||||
_29.v1[2].x = loaded1;
|
||||
float2 loaded2 = _29.v2[1].xy;
|
||||
_29.v2[2].xy = loaded2;
|
||||
float3 loaded3 = _29.v3[1];
|
||||
_29.v3[2] = loaded3;
|
||||
float4 loaded4 = _29.v4[1];
|
||||
_29.v4[2] = loaded4;
|
||||
loaded1 = _29.v1_array_of_array[1][2].x;
|
||||
_29.v1_array_of_array[2][3].x = loaded1;
|
||||
loaded2 = _29.v2_array_of_array[1][2].xy;
|
||||
_29.v2_array_of_array[2][3].xy = loaded2;
|
||||
loaded3 = _29.v3_array_of_array[1][2];
|
||||
_29.v3_array_of_array[2][3] = loaded3;
|
||||
loaded4 = _29.v4_array_of_array[1][2];
|
||||
_29.v4_array_of_array[2][3] = loaded4;
|
||||
loaded1 = _29.v_unsized[1].x;
|
||||
_29.v_unsized[2].x = loaded1;
|
||||
}
|
||||
|
||||
25
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/struct-alignment.comp
vendored
Normal file
25
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/struct-alignment.comp
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct Foo
|
||||
{
|
||||
packed_float3 a;
|
||||
float b;
|
||||
};
|
||||
|
||||
struct SSBO
|
||||
{
|
||||
float2 a;
|
||||
float b;
|
||||
char _m2_pad[4];
|
||||
Foo foo;
|
||||
};
|
||||
|
||||
kernel void main0(device SSBO& _12 [[buffer(0)]])
|
||||
{
|
||||
_12.a.x = 10.0;
|
||||
_12.b = 20.0;
|
||||
}
|
||||
|
||||
20
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/struct-packing-array-of-scalar.comp
vendored
Normal file
20
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/struct-packing-array-of-scalar.comp
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct Foo
|
||||
{
|
||||
packed_float3 a;
|
||||
};
|
||||
|
||||
struct SSBOScalar
|
||||
{
|
||||
Foo v[1];
|
||||
};
|
||||
|
||||
kernel void main0(device SSBOScalar& buffer_scalar [[buffer(0)]])
|
||||
{
|
||||
buffer_scalar.v[1].a[1u] = 1.0;
|
||||
}
|
||||
|
||||
31
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/struct-packing-recursive.comp
vendored
Normal file
31
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/struct-packing-recursive.comp
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct Foo
|
||||
{
|
||||
packed_float4 a;
|
||||
};
|
||||
|
||||
struct Bar
|
||||
{
|
||||
Foo a;
|
||||
};
|
||||
|
||||
struct Baz
|
||||
{
|
||||
Bar a;
|
||||
};
|
||||
|
||||
struct SSBOScalar
|
||||
{
|
||||
float v;
|
||||
Baz baz;
|
||||
};
|
||||
|
||||
kernel void main0(device SSBOScalar& buffer_scalar [[buffer(0)]])
|
||||
{
|
||||
buffer_scalar.baz.a.a.a[3u] = 10.0;
|
||||
}
|
||||
|
||||
27
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/struct-packing.comp
vendored
Normal file
27
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/struct-packing.comp
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct Foo
|
||||
{
|
||||
packed_float3 a;
|
||||
};
|
||||
|
||||
struct Bar
|
||||
{
|
||||
packed_float3 a;
|
||||
};
|
||||
|
||||
struct SSBOScalar
|
||||
{
|
||||
Foo foo;
|
||||
Bar bar;
|
||||
};
|
||||
|
||||
kernel void main0(device SSBOScalar& buffer_scalar [[buffer(0)]])
|
||||
{
|
||||
buffer_scalar.foo.a[0u] = 10.0;
|
||||
buffer_scalar.bar.a[0u] = 20.0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct A
|
||||
{
|
||||
float v;
|
||||
char _m0_final_padding[12];
|
||||
};
|
||||
|
||||
struct B
|
||||
{
|
||||
float2 v;
|
||||
char _m0_final_padding[8];
|
||||
};
|
||||
|
||||
struct C
|
||||
{
|
||||
float3 v;
|
||||
};
|
||||
|
||||
struct D
|
||||
{
|
||||
float4 v;
|
||||
};
|
||||
|
||||
struct E
|
||||
{
|
||||
float4 a;
|
||||
float2 b;
|
||||
char _m0_final_padding[8];
|
||||
};
|
||||
|
||||
struct SSBO
|
||||
{
|
||||
A a[2][4];
|
||||
B b[2][4];
|
||||
C c[2][4];
|
||||
D d[2][4];
|
||||
float2x4 e[2][4];
|
||||
E f[1];
|
||||
};
|
||||
|
||||
kernel void main0(device SSBO& _32 [[buffer(0)]])
|
||||
{
|
||||
_32.f[0].a = float4(2.0);
|
||||
float2x2 tmp = float2x2(_32.e[0][1][0].xy, _32.e[0][1][1].xy);
|
||||
_32.e[1][2][0].xy = tmp[0];
|
||||
_32.e[1][2][1].xy = tmp[1];
|
||||
}
|
||||
|
||||
52
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/struct-size-padding.comp
vendored
Normal file
52
3rdparty/spirv-cross/reference/shaders-msl-no-opt/packing/struct-size-padding.comp
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
using namespace metal;
|
||||
|
||||
struct A
|
||||
{
|
||||
float v;
|
||||
char _m0_final_padding[12];
|
||||
};
|
||||
|
||||
struct B
|
||||
{
|
||||
float2 v;
|
||||
char _m0_final_padding[8];
|
||||
};
|
||||
|
||||
struct C
|
||||
{
|
||||
float3 v;
|
||||
};
|
||||
|
||||
struct D
|
||||
{
|
||||
float4 v;
|
||||
};
|
||||
|
||||
struct E
|
||||
{
|
||||
float4 a;
|
||||
float2 b;
|
||||
char _m0_final_padding[8];
|
||||
};
|
||||
|
||||
struct SSBO
|
||||
{
|
||||
A a[4];
|
||||
B b[4];
|
||||
C c[4];
|
||||
D d[4];
|
||||
float2x4 e[4];
|
||||
E f[1];
|
||||
};
|
||||
|
||||
kernel void main0(device SSBO& _26 [[buffer(0)]])
|
||||
{
|
||||
_26.f[0].a = float4(2.0);
|
||||
float2x2 tmp = float2x2(_26.e[1][0].xy, _26.e[1][1].xy);
|
||||
_26.e[2][0].xy = tmp[0];
|
||||
_26.e[2][1].xy = tmp[1];
|
||||
}
|
||||
|
||||
@@ -18,11 +18,12 @@ struct A_2
|
||||
{
|
||||
int a;
|
||||
int b;
|
||||
char _m0_final_padding[8];
|
||||
};
|
||||
|
||||
struct A_3
|
||||
{
|
||||
/* FIXME: A padded struct is needed here. If you see this message, file a bug! */ A_2 Data[1024];
|
||||
A_2 Data[1024];
|
||||
};
|
||||
|
||||
struct B
|
||||
@@ -32,7 +33,7 @@ struct B
|
||||
|
||||
struct B_1
|
||||
{
|
||||
/* FIXME: A padded struct is needed here. If you see this message, file a bug! */ A_2 Data[1024];
|
||||
A_2 Data[1024];
|
||||
};
|
||||
|
||||
kernel void main0(device A_1& C1 [[buffer(0)]], constant A_3& C2 [[buffer(1)]], device B& C3 [[buffer(2)]], constant B_1& C4 [[buffer(3)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]])
|
||||
|
||||
@@ -31,12 +31,30 @@ kernel void main0(device foo& buf [[buffer(0)]], constant bar& cb [[buffer(1)]],
|
||||
{
|
||||
device foo* _46 = select_buffer(buf, cb);
|
||||
device foo* _45 = _46;
|
||||
for (device int* _52 = &_45->a[0u], * _55 = &buf.a[0u]; (*_52) != (*_55); _52 = &_52[1u], _55 = &_55[1u])
|
||||
device foo* _48 = _45;
|
||||
device int* _52;
|
||||
device int* _55;
|
||||
_52 = &_48->a[0u];
|
||||
_55 = &buf.a[0u];
|
||||
int _57;
|
||||
int _58;
|
||||
for (;;)
|
||||
{
|
||||
int _66 = ((*_52) + (*_55)) + int((*select_input(gl_GlobalInvocationID, gl_LocalInvocationID, cb)).x);
|
||||
*_52 = _66;
|
||||
*_55 = _66;
|
||||
continue;
|
||||
_57 = *_52;
|
||||
_58 = *_55;
|
||||
if (_57 != _58)
|
||||
{
|
||||
int _66 = (_57 + _58) + int((*select_input(gl_GlobalInvocationID, gl_LocalInvocationID, cb)).x);
|
||||
*_52 = _66;
|
||||
*_55 = _66;
|
||||
_52 = &_52[1u];
|
||||
_55 = &_55[1u];
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -144,8 +144,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_129 = _109;
|
||||
}
|
||||
float3 _130 = _129 * 0.5;
|
||||
float3 _133 = float4(0.0).xyz + _130;
|
||||
float3 _133 = float4(0.0).xyz + (_129 * 0.5);
|
||||
float4 _134 = float4(_133.x, _133.y, _133.z, float4(0.0).w);
|
||||
_28 _135 = _77;
|
||||
_135._m0 = _134;
|
||||
@@ -161,8 +160,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_176 = _156;
|
||||
}
|
||||
float3 _177 = _176 * 0.5;
|
||||
float3 _180 = _134.xyz + _177;
|
||||
float3 _180 = _134.xyz + (_176 * 0.5);
|
||||
float4 _181 = float4(_180.x, _180.y, _180.z, _134.w);
|
||||
_28 _182 = _135;
|
||||
_182._m0 = _181;
|
||||
@@ -178,8 +176,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_223 = _203;
|
||||
}
|
||||
float3 _224 = _223 * 0.75;
|
||||
float3 _227 = _181.xyz + _224;
|
||||
float3 _227 = _181.xyz + (_223 * 0.75);
|
||||
float4 _228 = float4(_227.x, _227.y, _227.z, _181.w);
|
||||
_28 _229 = _182;
|
||||
_229._m0 = _228;
|
||||
@@ -195,8 +192,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_270 = _250;
|
||||
}
|
||||
float3 _271 = _270 * 0.5;
|
||||
float3 _274 = _228.xyz + _271;
|
||||
float3 _274 = _228.xyz + (_270 * 0.5);
|
||||
float4 _275 = float4(_274.x, _274.y, _274.z, _228.w);
|
||||
_28 _276 = _229;
|
||||
_276._m0 = _275;
|
||||
@@ -212,8 +208,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_317 = _297;
|
||||
}
|
||||
float3 _318 = _317 * 0.5;
|
||||
float3 _321 = _275.xyz + _318;
|
||||
float3 _321 = _275.xyz + (_317 * 0.5);
|
||||
float4 _322 = float4(_321.x, _321.y, _321.z, _275.w);
|
||||
_28 _323 = _276;
|
||||
_323._m0 = _322;
|
||||
@@ -229,8 +224,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_364 = _344;
|
||||
}
|
||||
float3 _365 = _364 * 0.75;
|
||||
float3 _368 = _322.xyz + _365;
|
||||
float3 _368 = _322.xyz + (_364 * 0.75);
|
||||
float4 _369 = float4(_368.x, _368.y, _368.z, _322.w);
|
||||
_28 _370 = _323;
|
||||
_370._m0 = _369;
|
||||
@@ -246,8 +240,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_411 = _391;
|
||||
}
|
||||
float3 _412 = _411 * 1.0;
|
||||
float3 _415 = _369.xyz + _412;
|
||||
float3 _415 = _369.xyz + (_411 * 1.0);
|
||||
float4 _416 = float4(_415.x, _415.y, _415.z, _369.w);
|
||||
_28 _417 = _370;
|
||||
_417._m0 = _416;
|
||||
@@ -263,8 +256,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_458 = _438;
|
||||
}
|
||||
float3 _459 = _458 * 0.75;
|
||||
float3 _462 = _416.xyz + _459;
|
||||
float3 _462 = _416.xyz + (_458 * 0.75);
|
||||
float4 _463 = float4(_462.x, _462.y, _462.z, _416.w);
|
||||
_28 _464 = _417;
|
||||
_464._m0 = _463;
|
||||
@@ -280,8 +272,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_505 = _485;
|
||||
}
|
||||
float3 _506 = _505 * 0.5;
|
||||
float3 _509 = _463.xyz + _506;
|
||||
float3 _509 = _463.xyz + (_505 * 0.5);
|
||||
float4 _510 = float4(_509.x, _509.y, _509.z, _463.w);
|
||||
_28 _511 = _464;
|
||||
_511._m0 = _510;
|
||||
@@ -297,8 +288,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_552 = _532;
|
||||
}
|
||||
float3 _553 = _552 * 0.5;
|
||||
float3 _556 = _510.xyz + _553;
|
||||
float3 _556 = _510.xyz + (_552 * 0.5);
|
||||
float4 _557 = float4(_556.x, _556.y, _556.z, _510.w);
|
||||
_28 _558 = _511;
|
||||
_558._m0 = _557;
|
||||
@@ -314,8 +304,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_599 = _579;
|
||||
}
|
||||
float3 _600 = _599 * 0.75;
|
||||
float3 _603 = _557.xyz + _600;
|
||||
float3 _603 = _557.xyz + (_599 * 0.75);
|
||||
float4 _604 = float4(_603.x, _603.y, _603.z, _557.w);
|
||||
_28 _605 = _558;
|
||||
_605._m0 = _604;
|
||||
@@ -331,8 +320,7 @@ fragment main0_out main0(constant _6& _7 [[buffer(0)]], constant _10& _11 [[buff
|
||||
{
|
||||
_646 = _626;
|
||||
}
|
||||
float3 _647 = _646 * 0.5;
|
||||
float3 _650 = _604.xyz + _647;
|
||||
float3 _650 = _604.xyz + (_646 * 0.5);
|
||||
float4 _651 = float4(_650.x, _650.y, _650.z, _604.w);
|
||||
_28 _652 = _605;
|
||||
_652._m0 = _651;
|
||||
|
||||
@@ -3,12 +3,11 @@
|
||||
|
||||
using namespace metal;
|
||||
|
||||
typedef packed_float2 packed_rm_float2x3[3];
|
||||
|
||||
struct S0
|
||||
{
|
||||
float2 a[1];
|
||||
float b;
|
||||
char _m0_final_padding[4];
|
||||
};
|
||||
|
||||
struct S1
|
||||
@@ -21,6 +20,7 @@ struct S2
|
||||
{
|
||||
float3 a[1];
|
||||
float b;
|
||||
char _m0_final_padding[12];
|
||||
};
|
||||
|
||||
struct S3
|
||||
@@ -45,6 +45,7 @@ struct Content
|
||||
S3 m3;
|
||||
float m4;
|
||||
S4 m3s[8];
|
||||
char _m0_final_padding[8];
|
||||
};
|
||||
|
||||
struct SSBO1
|
||||
@@ -58,10 +59,8 @@ struct SSBO1
|
||||
float3x2 m3;
|
||||
float2x2 m4;
|
||||
float2x2 m5[9];
|
||||
packed_rm_float2x3 m6[4][2];
|
||||
char _m10_pad[8];
|
||||
float3x2 m7;
|
||||
char _m11_pad[8];
|
||||
float3x2 m6[4][2];
|
||||
float2x3 m7;
|
||||
float array[1];
|
||||
};
|
||||
|
||||
@@ -69,6 +68,7 @@ struct S0_1
|
||||
{
|
||||
float4 a[1];
|
||||
float b;
|
||||
char _m0_final_padding[12];
|
||||
};
|
||||
|
||||
struct S1_1
|
||||
@@ -81,6 +81,7 @@ struct S2_1
|
||||
{
|
||||
float3 a[1];
|
||||
float b;
|
||||
char _m0_final_padding[12];
|
||||
};
|
||||
|
||||
struct S3_1
|
||||
@@ -92,6 +93,7 @@ struct S3_1
|
||||
struct S4_1
|
||||
{
|
||||
float2 c;
|
||||
char _m0_final_padding[8];
|
||||
};
|
||||
|
||||
struct Content_1
|
||||
@@ -104,8 +106,8 @@ struct Content_1
|
||||
S2_1 m2;
|
||||
S3_1 m3;
|
||||
float m4;
|
||||
char _m8_pad[12];
|
||||
/* FIXME: A padded struct is needed here. If you see this message, file a bug! */ S4_1 m3s[8];
|
||||
char _m8_pad[8];
|
||||
S4_1 m3s[8];
|
||||
};
|
||||
|
||||
struct SSBO0
|
||||
@@ -142,6 +144,6 @@ kernel void main0(device SSBO1& ssbo_430 [[buffer(0)]], device SSBO0& ssbo_140 [
|
||||
ssbo_430.content.m3s[5].c = _60.m3s[5].c;
|
||||
ssbo_430.content.m3s[6].c = _60.m3s[6].c;
|
||||
ssbo_430.content.m3s[7].c = _60.m3s[7].c;
|
||||
ssbo_430.content.m1.a = ssbo_430.content.m3.a * float3x2(float2(ssbo_430.m6[1][1][0]), float2(ssbo_430.m6[1][1][1]), float2(ssbo_430.m6[1][1][2]));
|
||||
ssbo_430.content.m1.a = ssbo_430.content.m3.a * ssbo_430.m6[1][1];
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
#pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
#include <metal_stdlib>
|
||||
#include <simd/simd.h>
|
||||
|
||||
@@ -9,7 +7,7 @@ struct UBO
|
||||
{
|
||||
float4x4 uMVPR;
|
||||
float4x4 uMVPC;
|
||||
float2x4 uMVP;
|
||||
float4x4 uMVP;
|
||||
};
|
||||
|
||||
struct main0_out
|
||||
@@ -22,16 +20,10 @@ struct main0_in
|
||||
float4 aVertex [[attribute(0)]];
|
||||
};
|
||||
|
||||
// Implementation of a conversion of matrix content from RowMajor to ColumnMajor organization.
|
||||
float2x4 spvConvertFromRowMajor2x4(float2x4 m)
|
||||
{
|
||||
return float2x4(float4(m[0][0], m[0][2], m[1][0], m[1][2]), float4(m[0][1], m[0][3], m[1][1], m[1][3]));
|
||||
}
|
||||
|
||||
vertex main0_out main0(main0_in in [[stage_in]], constant UBO& _18 [[buffer(0)]])
|
||||
{
|
||||
main0_out out = {};
|
||||
float2 v = in.aVertex * spvConvertFromRowMajor2x4(_18.uMVP);
|
||||
float2 v = float4x2(_18.uMVP[0].xy, _18.uMVP[1].xy, _18.uMVP[2].xy, _18.uMVP[3].xy) * in.aVertex;
|
||||
out.gl_Position = (_18.uMVPR * in.aVertex) + (in.aVertex * _18.uMVPC);
|
||||
return out;
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ struct main0_out
|
||||
fragment main0_out main0(constant UBO1& ubo1 [[buffer(0)]], constant UBO2& ubo0 [[buffer(1)]])
|
||||
{
|
||||
main0_out out = {};
|
||||
out.FragColor = transpose(ubo1.foo.foo)[0] + ubo0.foo.foo[0];
|
||||
out.FragColor = float4(ubo1.foo.foo[0][0], ubo1.foo.foo[1][0], ubo1.foo.foo[2][0], ubo1.foo.foo[3][0]) + ubo0.foo.foo[0];
|
||||
return out;
|
||||
}
|
||||
|
||||
|
||||
@@ -36,9 +36,7 @@ bool frustum_cull(thread const float2& p0, constant UBO& v_41)
|
||||
float radius = 0.5 * length(bb_max - bb_min);
|
||||
float3 f0 = float3(dot(v_41.uFrustum[0], float4(center, 1.0)), dot(v_41.uFrustum[1], float4(center, 1.0)), dot(v_41.uFrustum[2], float4(center, 1.0)));
|
||||
float3 f1 = float3(dot(v_41.uFrustum[3], float4(center, 1.0)), dot(v_41.uFrustum[4], float4(center, 1.0)), dot(v_41.uFrustum[5], float4(center, 1.0)));
|
||||
float3 _199 = f0;
|
||||
float _200 = radius;
|
||||
bool _205 = any(_199 <= float3(-_200));
|
||||
bool _205 = any(f0 <= float3(-radius));
|
||||
bool _215;
|
||||
if (!_205)
|
||||
{
|
||||
|
||||
@@ -3,12 +3,10 @@
|
||||
|
||||
using namespace metal;
|
||||
|
||||
typedef packed_float4 packed_rm_float4x3[3];
|
||||
|
||||
struct _15
|
||||
{
|
||||
packed_rm_float4x3 _m0;
|
||||
packed_rm_float4x3 _m1;
|
||||
float3x4 _m0;
|
||||
float3x4 _m1;
|
||||
};
|
||||
|
||||
struct _42
|
||||
@@ -44,7 +42,7 @@ vertex main0_out main0(main0_in in [[stage_in]], constant _15& _17 [[buffer(0)]]
|
||||
float3 _13;
|
||||
do
|
||||
{
|
||||
_13 = normalize(float4(in.m_25.xyz, 0.0) * float3x4(float4(_17._m1[0]), float4(_17._m1[1]), float4(_17._m1[2])));
|
||||
_13 = normalize(float4(in.m_25.xyz, 0.0) * _17._m1);
|
||||
break;
|
||||
} while (false);
|
||||
float4 _39 = _44._m0 * float4(float3(_44._m3) + (in.m_25.xyz * (_44._m6 + _44._m7)), 1.0);
|
||||
|
||||
@@ -7,7 +7,7 @@ using namespace metal;
|
||||
|
||||
struct Block
|
||||
{
|
||||
float2x3 var[3][4];
|
||||
float3x4 var[3][4];
|
||||
};
|
||||
|
||||
struct main0_out
|
||||
@@ -21,12 +21,6 @@ struct main0_in
|
||||
float4 a_position [[attribute(0)]];
|
||||
};
|
||||
|
||||
// Implementation of a conversion of matrix content from RowMajor to ColumnMajor organization.
|
||||
float2x3 spvConvertFromRowMajor2x3(float2x3 m)
|
||||
{
|
||||
return float2x3(float3(m[0][0], m[0][2], m[1][1]), float3(m[0][1], m[1][0], m[1][2]));
|
||||
}
|
||||
|
||||
float compare_float(thread const float& a, thread const float& b)
|
||||
{
|
||||
return float(abs(a - b) < 0.0500000007450580596923828125);
|
||||
@@ -57,7 +51,7 @@ vertex main0_out main0(main0_in in [[stage_in]], constant Block& _104 [[buffer(0
|
||||
main0_out out = {};
|
||||
out.gl_Position = in.a_position;
|
||||
float result = 1.0;
|
||||
float2x3 param = spvConvertFromRowMajor2x3(_104.var[0][0]);
|
||||
float2x3 param = transpose(float3x2(_104.var[0][0][0].xy, _104.var[0][0][1].xy, _104.var[0][0][2].xy));
|
||||
float2x3 param_1 = float2x3(float3(2.0, 6.0, -6.0), float3(0.0, 5.0, 5.0));
|
||||
result *= compare_mat2x3(param, param_1);
|
||||
out.v_vtxResult = result;
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
using namespace metal;
|
||||
|
||||
typedef packed_float2 packed_float2x2[2];
|
||||
typedef packed_float2 packed_rm_float2x3[3];
|
||||
typedef packed_float3 packed_float2x3[2];
|
||||
typedef packed_float3 packed_rm_float3x2[2];
|
||||
|
||||
@@ -32,11 +31,6 @@ struct S3
|
||||
float b;
|
||||
};
|
||||
|
||||
struct S4
|
||||
{
|
||||
float2 c;
|
||||
};
|
||||
|
||||
struct Content
|
||||
{
|
||||
S0 m0s[1];
|
||||
@@ -47,7 +41,6 @@ struct Content
|
||||
S2 m2;
|
||||
S3 m3;
|
||||
float m4;
|
||||
S4 m3s[8];
|
||||
};
|
||||
|
||||
struct SSBO1
|
||||
@@ -61,8 +54,8 @@ struct SSBO1
|
||||
float3x2 m3;
|
||||
float2x2 m4;
|
||||
float2x2 m5[9];
|
||||
packed_rm_float2x3 m6[4][2];
|
||||
float3x2 m7;
|
||||
float3x2 m6[4][2];
|
||||
packed_rm_float3x2 m7;
|
||||
float array[1];
|
||||
};
|
||||
|
||||
@@ -70,6 +63,7 @@ struct S0_1
|
||||
{
|
||||
float4 a[1];
|
||||
float b;
|
||||
char _m0_final_padding[12];
|
||||
};
|
||||
|
||||
struct S1_1
|
||||
@@ -82,6 +76,7 @@ struct S2_1
|
||||
{
|
||||
float3 a[1];
|
||||
float b;
|
||||
char _m0_final_padding[12];
|
||||
};
|
||||
|
||||
struct S3_1
|
||||
@@ -90,11 +85,6 @@ struct S3_1
|
||||
float b;
|
||||
};
|
||||
|
||||
struct S4_1
|
||||
{
|
||||
float2 c;
|
||||
};
|
||||
|
||||
struct Content_1
|
||||
{
|
||||
S0_1 m0s[1];
|
||||
@@ -105,8 +95,7 @@ struct Content_1
|
||||
S2_1 m2;
|
||||
S3_1 m3;
|
||||
float m4;
|
||||
char _m8_pad[12];
|
||||
/* FIXME: A padded struct is needed here. If you see this message, file a bug! */ S4_1 m3s[8];
|
||||
char _m0_final_padding[12];
|
||||
};
|
||||
|
||||
struct SSBO0
|
||||
@@ -114,18 +103,14 @@ struct SSBO0
|
||||
Content_1 content;
|
||||
Content_1 content1[2];
|
||||
Content_1 content2;
|
||||
float2x2 m0;
|
||||
char _m4_pad[16];
|
||||
float2x2 m1;
|
||||
char _m5_pad[16];
|
||||
float2x4 m0;
|
||||
float2x4 m1;
|
||||
float2x3 m2[4];
|
||||
float3x2 m3;
|
||||
char _m7_pad[24];
|
||||
float2x2 m4;
|
||||
char _m8_pad[16];
|
||||
float2x2 m5[9];
|
||||
float2x3 m6[4][2];
|
||||
float3x2 m7;
|
||||
float3x4 m3;
|
||||
float2x4 m4;
|
||||
float2x4 m5[9];
|
||||
float3x4 m6[4][2];
|
||||
float2x3 m7;
|
||||
float4 array[1];
|
||||
};
|
||||
|
||||
@@ -153,19 +138,11 @@ kernel void main0(device SSBO1& ssbo_scalar [[buffer(0)]], device SSBO0& ssbo_14
|
||||
ssbo_scalar.content.m3.a = ssbo_140.content.m3.a;
|
||||
ssbo_scalar.content.m3.b = ssbo_140.content.m3.b;
|
||||
ssbo_scalar.content.m4 = ssbo_140.content.m4;
|
||||
ssbo_scalar.content.m3s[0].c = ssbo_140.content.m3s[0].c;
|
||||
ssbo_scalar.content.m3s[1].c = ssbo_140.content.m3s[1].c;
|
||||
ssbo_scalar.content.m3s[2].c = ssbo_140.content.m3s[2].c;
|
||||
ssbo_scalar.content.m3s[3].c = ssbo_140.content.m3s[3].c;
|
||||
ssbo_scalar.content.m3s[4].c = ssbo_140.content.m3s[4].c;
|
||||
ssbo_scalar.content.m3s[5].c = ssbo_140.content.m3s[5].c;
|
||||
ssbo_scalar.content.m3s[6].c = ssbo_140.content.m3s[6].c;
|
||||
ssbo_scalar.content.m3s[7].c = ssbo_140.content.m3s[7].c;
|
||||
ssbo_scalar.content.m1.a = float2x3(float3(ssbo_scalar.m2[1][0]), float3(ssbo_scalar.m2[1][1])) * float2(ssbo_scalar.content.m0.a[0]);
|
||||
ssbo_scalar.m0 = float2x2(float2(ssbo_scalar2.m1[0]), float2(ssbo_scalar2.m1[1]));
|
||||
ssbo_scalar2.m1[0] = transpose(ssbo_scalar.m4)[0];
|
||||
ssbo_scalar2.m1[1] = transpose(ssbo_scalar.m4)[1];
|
||||
ssbo_scalar2.m2[0] = spvConvertFromRowMajor3x2(ssbo_scalar.m3)[0];
|
||||
ssbo_scalar2.m2[1] = spvConvertFromRowMajor3x2(ssbo_scalar.m3)[1];
|
||||
ssbo_scalar2.m1[0] = float2(ssbo_scalar.m4[0][0], ssbo_scalar.m4[1][0]);
|
||||
ssbo_scalar2.m1[1] = float2(ssbo_scalar.m4[0][1], ssbo_scalar.m4[1][1]);
|
||||
ssbo_scalar2.m2[0] = float3(ssbo_scalar.m3[0][0], ssbo_scalar.m3[1][0], ssbo_scalar.m3[2][0]);
|
||||
ssbo_scalar2.m2[1] = float3(ssbo_scalar.m3[0][1], ssbo_scalar.m3[1][1], ssbo_scalar.m3[2][1]);
|
||||
}
|
||||
|
||||
|
||||
@@ -147,7 +147,6 @@ void main()
|
||||
_193 = _192;
|
||||
break;
|
||||
} while (false);
|
||||
vec4 _194 = _193 * 1.0;
|
||||
vec4 _220;
|
||||
do
|
||||
{
|
||||
@@ -173,7 +172,7 @@ void main()
|
||||
vec3 _253 = vec3(_252.x, _252.y, _232.z);
|
||||
vec2 _255 = _253.xy * _165;
|
||||
vec3 _256 = vec3(_255.x, _255.y, _253.z);
|
||||
vec3 _271 = ((IN_Color.xyz * _194.xyz) * (1.0 + (_256.x * 0.300000011920928955078125))) * (texture(SPIRV_Cross_CombinedStudsMapTextureStudsMapSampler, _156.UvStuds).x * 2.0);
|
||||
vec3 _271 = ((IN_Color.xyz * (_193 * 1.0).xyz) * (1.0 + (_256.x * 0.300000011920928955078125))) * (texture(SPIRV_Cross_CombinedStudsMapTextureStudsMapSampler, _156.UvStuds).x * 2.0);
|
||||
vec4 _298;
|
||||
do
|
||||
{
|
||||
|
||||
@@ -93,11 +93,13 @@ void main()
|
||||
{
|
||||
if (l == 5)
|
||||
{
|
||||
l++;
|
||||
int _172 = l;
|
||||
l = _172 + 1;
|
||||
continue;
|
||||
}
|
||||
idat += vec4(1.0);
|
||||
l++;
|
||||
int _172 = l;
|
||||
l = _172 + 1;
|
||||
continue;
|
||||
}
|
||||
_177.out_data[ident] = idat;
|
||||
|
||||
@@ -110,8 +110,7 @@ void main()
|
||||
{
|
||||
_129 = _109;
|
||||
}
|
||||
vec3 _130 = _129 * 0.5;
|
||||
vec3 _133 = vec4(0.0).xyz + _130;
|
||||
vec3 _133 = vec4(0.0).xyz + (_129 * 0.5);
|
||||
vec4 _134 = vec4(_133.x, _133.y, _133.z, vec4(0.0).w);
|
||||
_28 _135 = _77;
|
||||
_135._m0 = _134;
|
||||
@@ -127,8 +126,7 @@ void main()
|
||||
{
|
||||
_176 = _156;
|
||||
}
|
||||
vec3 _177 = _176 * 0.5;
|
||||
vec3 _180 = _134.xyz + _177;
|
||||
vec3 _180 = _134.xyz + (_176 * 0.5);
|
||||
vec4 _181 = vec4(_180.x, _180.y, _180.z, _134.w);
|
||||
_28 _182 = _135;
|
||||
_182._m0 = _181;
|
||||
@@ -144,8 +142,7 @@ void main()
|
||||
{
|
||||
_223 = _203;
|
||||
}
|
||||
vec3 _224 = _223 * 0.75;
|
||||
vec3 _227 = _181.xyz + _224;
|
||||
vec3 _227 = _181.xyz + (_223 * 0.75);
|
||||
vec4 _228 = vec4(_227.x, _227.y, _227.z, _181.w);
|
||||
_28 _229 = _182;
|
||||
_229._m0 = _228;
|
||||
@@ -161,8 +158,7 @@ void main()
|
||||
{
|
||||
_270 = _250;
|
||||
}
|
||||
vec3 _271 = _270 * 0.5;
|
||||
vec3 _274 = _228.xyz + _271;
|
||||
vec3 _274 = _228.xyz + (_270 * 0.5);
|
||||
vec4 _275 = vec4(_274.x, _274.y, _274.z, _228.w);
|
||||
_28 _276 = _229;
|
||||
_276._m0 = _275;
|
||||
@@ -178,8 +174,7 @@ void main()
|
||||
{
|
||||
_317 = _297;
|
||||
}
|
||||
vec3 _318 = _317 * 0.5;
|
||||
vec3 _321 = _275.xyz + _318;
|
||||
vec3 _321 = _275.xyz + (_317 * 0.5);
|
||||
vec4 _322 = vec4(_321.x, _321.y, _321.z, _275.w);
|
||||
_28 _323 = _276;
|
||||
_323._m0 = _322;
|
||||
@@ -195,8 +190,7 @@ void main()
|
||||
{
|
||||
_364 = _344;
|
||||
}
|
||||
vec3 _365 = _364 * 0.75;
|
||||
vec3 _368 = _322.xyz + _365;
|
||||
vec3 _368 = _322.xyz + (_364 * 0.75);
|
||||
vec4 _369 = vec4(_368.x, _368.y, _368.z, _322.w);
|
||||
_28 _370 = _323;
|
||||
_370._m0 = _369;
|
||||
@@ -212,8 +206,7 @@ void main()
|
||||
{
|
||||
_411 = _391;
|
||||
}
|
||||
vec3 _412 = _411 * 1.0;
|
||||
vec3 _415 = _369.xyz + _412;
|
||||
vec3 _415 = _369.xyz + (_411 * 1.0);
|
||||
vec4 _416 = vec4(_415.x, _415.y, _415.z, _369.w);
|
||||
_28 _417 = _370;
|
||||
_417._m0 = _416;
|
||||
@@ -229,8 +222,7 @@ void main()
|
||||
{
|
||||
_458 = _438;
|
||||
}
|
||||
vec3 _459 = _458 * 0.75;
|
||||
vec3 _462 = _416.xyz + _459;
|
||||
vec3 _462 = _416.xyz + (_458 * 0.75);
|
||||
vec4 _463 = vec4(_462.x, _462.y, _462.z, _416.w);
|
||||
_28 _464 = _417;
|
||||
_464._m0 = _463;
|
||||
@@ -246,8 +238,7 @@ void main()
|
||||
{
|
||||
_505 = _485;
|
||||
}
|
||||
vec3 _506 = _505 * 0.5;
|
||||
vec3 _509 = _463.xyz + _506;
|
||||
vec3 _509 = _463.xyz + (_505 * 0.5);
|
||||
vec4 _510 = vec4(_509.x, _509.y, _509.z, _463.w);
|
||||
_28 _511 = _464;
|
||||
_511._m0 = _510;
|
||||
@@ -263,8 +254,7 @@ void main()
|
||||
{
|
||||
_552 = _532;
|
||||
}
|
||||
vec3 _553 = _552 * 0.5;
|
||||
vec3 _556 = _510.xyz + _553;
|
||||
vec3 _556 = _510.xyz + (_552 * 0.5);
|
||||
vec4 _557 = vec4(_556.x, _556.y, _556.z, _510.w);
|
||||
_28 _558 = _511;
|
||||
_558._m0 = _557;
|
||||
@@ -280,8 +270,7 @@ void main()
|
||||
{
|
||||
_599 = _579;
|
||||
}
|
||||
vec3 _600 = _599 * 0.75;
|
||||
vec3 _603 = _557.xyz + _600;
|
||||
vec3 _603 = _557.xyz + (_599 * 0.75);
|
||||
vec4 _604 = vec4(_603.x, _603.y, _603.z, _557.w);
|
||||
_28 _605 = _558;
|
||||
_605._m0 = _604;
|
||||
@@ -297,8 +286,7 @@ void main()
|
||||
{
|
||||
_646 = _626;
|
||||
}
|
||||
vec3 _647 = _646 * 0.5;
|
||||
vec3 _650 = _604.xyz + _647;
|
||||
vec3 _650 = _604.xyz + (_646 * 0.5);
|
||||
vec4 _651 = vec4(_650.x, _650.y, _650.z, _604.w);
|
||||
_28 _652 = _605;
|
||||
_652._m0 = _651;
|
||||
|
||||
@@ -27,7 +27,6 @@ uvec2 workaround_mix(uvec2 a, uvec2 b, bvec2 sel)
|
||||
{
|
||||
_86 = a.x;
|
||||
}
|
||||
uint _94 = _86;
|
||||
uint _97;
|
||||
if (sel.y)
|
||||
{
|
||||
@@ -37,7 +36,7 @@ uvec2 workaround_mix(uvec2 a, uvec2 b, bvec2 sel)
|
||||
{
|
||||
_97 = a.y;
|
||||
}
|
||||
return uvec2(_94, _97);
|
||||
return uvec2(_86, _97);
|
||||
}
|
||||
|
||||
vec2 alias(vec2 i, vec2 N)
|
||||
|
||||
@@ -26,9 +26,7 @@ bool frustum_cull(vec2 p0)
|
||||
float radius = 0.5 * length(bb_max - bb_min);
|
||||
vec3 f0 = vec3(dot(_41.uFrustum[0], vec4(center, 1.0)), dot(_41.uFrustum[1], vec4(center, 1.0)), dot(_41.uFrustum[2], vec4(center, 1.0)));
|
||||
vec3 f1 = vec3(dot(_41.uFrustum[3], vec4(center, 1.0)), dot(_41.uFrustum[4], vec4(center, 1.0)), dot(_41.uFrustum[5], vec4(center, 1.0)));
|
||||
vec3 _199 = f0;
|
||||
float _200 = radius;
|
||||
bool _205 = any(lessThanEqual(_199, vec3(-_200)));
|
||||
bool _205 = any(lessThanEqual(f0, vec3(-radius)));
|
||||
bool _215;
|
||||
if (!_205)
|
||||
{
|
||||
|
||||
@@ -67,7 +67,6 @@ vec2 warp_position()
|
||||
{
|
||||
_110 = 0u;
|
||||
}
|
||||
uint _116 = _110;
|
||||
uint _120;
|
||||
if (uPosition.y < 32u)
|
||||
{
|
||||
@@ -77,7 +76,7 @@ vec2 warp_position()
|
||||
{
|
||||
_120 = 0u;
|
||||
}
|
||||
uvec2 rounding = uvec2(_116, _120);
|
||||
uvec2 rounding = uvec2(_110, _120);
|
||||
vec4 lower_upper_snapped = vec4((uPosition + rounding).xyxy & (~mask).xxyy);
|
||||
return mix(lower_upper_snapped.xy, lower_upper_snapped.zw, vec2(fract_lod));
|
||||
}
|
||||
|
||||
48
3rdparty/spirv-cross/shaders-msl-no-opt/asm/packing/composite-extract-row-major.asm.comp
vendored
Normal file
48
3rdparty/spirv-cross/shaders-msl-no-opt/asm/packing/composite-extract-row-major.asm.comp
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
; SPIR-V
|
||||
; Version: 1.0
|
||||
; Generator: Khronos Glslang Reference Front End; 7
|
||||
; Bound: 21
|
||||
; Schema: 0
|
||||
OpCapability Shader
|
||||
%1 = OpExtInstImport "GLSL.std.450"
|
||||
OpMemoryModel Logical GLSL450
|
||||
OpEntryPoint GLCompute %main "main"
|
||||
OpExecutionMode %main LocalSize 1 1 1
|
||||
OpSource GLSL 450
|
||||
OpName %main "main"
|
||||
OpName %SSBORow "SSBORow"
|
||||
OpMemberName %SSBORow 0 "v"
|
||||
OpMemberName %SSBORow 1 "row_major0"
|
||||
OpName %_ ""
|
||||
OpMemberDecorate %SSBORow 0 Offset 0
|
||||
OpMemberDecorate %SSBORow 1 RowMajor
|
||||
OpMemberDecorate %SSBORow 1 Offset 16
|
||||
OpMemberDecorate %SSBORow 1 MatrixStride 16
|
||||
OpDecorate %SSBORow BufferBlock
|
||||
OpDecorate %_ DescriptorSet 0
|
||||
OpDecorate %_ Binding 0
|
||||
%void = OpTypeVoid
|
||||
%3 = OpTypeFunction %void
|
||||
%float = OpTypeFloat 32
|
||||
%v4float = OpTypeVector %float 4
|
||||
%mat4v4float = OpTypeMatrix %v4float 4
|
||||
%SSBORow = OpTypeStruct %float %mat4v4float
|
||||
%_ptr_Uniform_SSBORow = OpTypePointer Uniform %SSBORow
|
||||
%_ = OpVariable %_ptr_Uniform_SSBORow Uniform
|
||||
%int = OpTypeInt 32 1
|
||||
%int_0 = OpConstant %int 0
|
||||
%int_1 = OpConstant %int 1
|
||||
%uint = OpTypeInt 32 0
|
||||
%uint_2 = OpConstant %uint 2
|
||||
%_ptr_Uniform_float = OpTypePointer Uniform %float
|
||||
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
|
||||
%main = OpFunction %void None %3
|
||||
%5 = OpLabel
|
||||
%row_ptr = OpAccessChain %_ptr_Uniform_v4float %_ %int_1 %int_1
|
||||
%vec = OpLoad %v4float %row_ptr
|
||||
%float_val = OpCompositeExtract %float %vec 2
|
||||
|
||||
%20 = OpAccessChain %_ptr_Uniform_float %_ %int_0
|
||||
OpStore %20 %float_val
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
56
3rdparty/spirv-cross/shaders-msl-no-opt/asm/packing/load-packed-no-forwarding-2.asm.comp
vendored
Normal file
56
3rdparty/spirv-cross/shaders-msl-no-opt/asm/packing/load-packed-no-forwarding-2.asm.comp
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
; SPIR-V
|
||||
; Version: 1.0
|
||||
; Generator: Khronos Glslang Reference Front End; 7
|
||||
; Bound: 23
|
||||
; Schema: 0
|
||||
OpCapability Shader
|
||||
%1 = OpExtInstImport "GLSL.std.450"
|
||||
OpMemoryModel Logical GLSL450
|
||||
OpEntryPoint GLCompute %main "main"
|
||||
OpExecutionMode %main LocalSize 1 1 1
|
||||
OpSource GLSL 450
|
||||
OpSourceExtension "GL_EXT_scalar_block_layout"
|
||||
OpName %main "main"
|
||||
OpName %SSBOScalar "SSBOScalar"
|
||||
OpMemberName %SSBOScalar 0 "a"
|
||||
OpMemberName %SSBOScalar 1 "b"
|
||||
OpMemberName %SSBOScalar 2 "c"
|
||||
OpName %_ ""
|
||||
OpMemberDecorate %SSBOScalar 0 Offset 0
|
||||
OpMemberDecorate %SSBOScalar 1 RowMajor
|
||||
OpMemberDecorate %SSBOScalar 1 Offset 16
|
||||
OpMemberDecorate %SSBOScalar 1 MatrixStride 16
|
||||
OpMemberDecorate %SSBOScalar 2 RowMajor
|
||||
OpMemberDecorate %SSBOScalar 2 Offset 64
|
||||
OpMemberDecorate %SSBOScalar 2 MatrixStride 16
|
||||
OpDecorate %SSBOScalar BufferBlock
|
||||
OpDecorate %_ DescriptorSet 0
|
||||
OpDecorate %_ Binding 0
|
||||
%void = OpTypeVoid
|
||||
%3 = OpTypeFunction %void
|
||||
%float = OpTypeFloat 32
|
||||
%v3float = OpTypeVector %float 3
|
||||
%mat3v3float = OpTypeMatrix %v3float 3
|
||||
%SSBOScalar = OpTypeStruct %v3float %mat3v3float %mat3v3float
|
||||
%_ptr_Uniform_SSBOScalar = OpTypePointer Uniform %SSBOScalar
|
||||
%_ = OpVariable %_ptr_Uniform_SSBOScalar Uniform
|
||||
%int = OpTypeInt 32 1
|
||||
%int_0 = OpConstant %int 0
|
||||
%int_1 = OpConstant %int 1
|
||||
%int_2 = OpConstant %int 2
|
||||
%_ptr_Uniform_mat3v3float = OpTypePointer Uniform %mat3v3float
|
||||
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
|
||||
%main = OpFunction %void None %3
|
||||
%5 = OpLabel
|
||||
%b_ptr = OpAccessChain %_ptr_Uniform_mat3v3float %_ %int_1
|
||||
%c_ptr = OpAccessChain %_ptr_Uniform_mat3v3float %_ %int_2
|
||||
%b = OpLoad %mat3v3float %b_ptr
|
||||
%c = OpLoad %mat3v3float %c_ptr
|
||||
OpStore %b_ptr %c
|
||||
%19 = OpAccessChain %_ptr_Uniform_v3float %_ %int_0
|
||||
%20 = OpLoad %v3float %19
|
||||
%21 = OpMatrixTimesVector %v3float %b %20
|
||||
%22 = OpAccessChain %_ptr_Uniform_v3float %_ %int_0
|
||||
OpStore %22 %21
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
48
3rdparty/spirv-cross/shaders-msl-no-opt/asm/packing/load-packed-no-forwarding-3.asm.comp
vendored
Normal file
48
3rdparty/spirv-cross/shaders-msl-no-opt/asm/packing/load-packed-no-forwarding-3.asm.comp
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
; SPIR-V
|
||||
; Version: 1.0
|
||||
; Generator: Khronos Glslang Reference Front End; 7
|
||||
; Bound: 22
|
||||
; Schema: 0
|
||||
OpCapability Shader
|
||||
%1 = OpExtInstImport "GLSL.std.450"
|
||||
OpMemoryModel Logical GLSL450
|
||||
OpEntryPoint GLCompute %main "main"
|
||||
OpExecutionMode %main LocalSize 1 1 1
|
||||
OpSource GLSL 450
|
||||
OpSourceExtension "GL_EXT_scalar_block_layout"
|
||||
OpName %main "main"
|
||||
OpName %SSBOScalar "SSBOScalar"
|
||||
OpMemberName %SSBOScalar 0 "a"
|
||||
OpMemberName %SSBOScalar 1 "b"
|
||||
OpMemberName %SSBOScalar 2 "c"
|
||||
OpName %_ ""
|
||||
OpMemberDecorate %SSBOScalar 0 Offset 0
|
||||
OpMemberDecorate %SSBOScalar 1 Offset 12
|
||||
OpMemberDecorate %SSBOScalar 2 Offset 24
|
||||
OpDecorate %SSBOScalar BufferBlock
|
||||
OpDecorate %_ DescriptorSet 0
|
||||
OpDecorate %_ Binding 0
|
||||
%void = OpTypeVoid
|
||||
%3 = OpTypeFunction %void
|
||||
%float = OpTypeFloat 32
|
||||
%v3float = OpTypeVector %float 3
|
||||
%SSBOScalar = OpTypeStruct %v3float %v3float %v3float
|
||||
%_ptr_Uniform_SSBOScalar = OpTypePointer Uniform %SSBOScalar
|
||||
%_ = OpVariable %_ptr_Uniform_SSBOScalar Uniform
|
||||
%int = OpTypeInt 32 1
|
||||
%int_0 = OpConstant %int 0
|
||||
%int_1 = OpConstant %int 1
|
||||
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
|
||||
%int_2 = OpConstant %int 2
|
||||
%main = OpFunction %void None %3
|
||||
%5 = OpLabel
|
||||
%15 = OpAccessChain %_ptr_Uniform_v3float %_ %int_1
|
||||
%16 = OpLoad %v3float %15
|
||||
%18 = OpAccessChain %_ptr_Uniform_v3float %_ %int_2
|
||||
%19 = OpLoad %v3float %18
|
||||
OpStore %18 %16
|
||||
%20 = OpFMul %v3float %16 %19
|
||||
%21 = OpAccessChain %_ptr_Uniform_v3float %_ %int_0
|
||||
OpStore %21 %20
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
61
3rdparty/spirv-cross/shaders-msl-no-opt/asm/packing/load-packed-no-forwarding-4.asm.comp
vendored
Normal file
61
3rdparty/spirv-cross/shaders-msl-no-opt/asm/packing/load-packed-no-forwarding-4.asm.comp
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
; SPIR-V
|
||||
; Version: 1.0
|
||||
; Generator: Khronos Glslang Reference Front End; 7
|
||||
; Bound: 29
|
||||
; Schema: 0
|
||||
OpCapability Shader
|
||||
%1 = OpExtInstImport "GLSL.std.450"
|
||||
OpMemoryModel Logical GLSL450
|
||||
OpEntryPoint GLCompute %main "main"
|
||||
OpExecutionMode %main LocalSize 1 1 1
|
||||
OpSource GLSL 450
|
||||
OpSourceExtension "GL_EXT_scalar_block_layout"
|
||||
OpName %main "main"
|
||||
OpName %SSBOScalar "SSBOScalar"
|
||||
OpMemberName %SSBOScalar 0 "a"
|
||||
OpMemberName %SSBOScalar 1 "b"
|
||||
OpMemberName %SSBOScalar 2 "c"
|
||||
OpName %_ ""
|
||||
OpDecorate %_arr_v2float_uint_16 ArrayStride 16
|
||||
OpDecorate %_arr_v2float_uint_16_0 ArrayStride 16
|
||||
OpDecorate %_arr_float_uint_16 ArrayStride 16
|
||||
OpMemberDecorate %SSBOScalar 0 Offset 0
|
||||
OpMemberDecorate %SSBOScalar 1 Offset 256
|
||||
OpMemberDecorate %SSBOScalar 2 Offset 512
|
||||
OpDecorate %SSBOScalar BufferBlock
|
||||
OpDecorate %_ DescriptorSet 0
|
||||
OpDecorate %_ Binding 0
|
||||
%void = OpTypeVoid
|
||||
%3 = OpTypeFunction %void
|
||||
%float = OpTypeFloat 32
|
||||
%v2float = OpTypeVector %float 2
|
||||
%uint = OpTypeInt 32 0
|
||||
%uint_16 = OpConstant %uint 16
|
||||
%_arr_v2float_uint_16 = OpTypeArray %v2float %uint_16
|
||||
%_arr_v2float_uint_16_0 = OpTypeArray %v2float %uint_16
|
||||
%_arr_float_uint_16 = OpTypeArray %float %uint_16
|
||||
%SSBOScalar = OpTypeStruct %_arr_v2float_uint_16 %_arr_v2float_uint_16_0 %_arr_float_uint_16
|
||||
%_ptr_Uniform_SSBOScalar = OpTypePointer Uniform %SSBOScalar
|
||||
%_ = OpVariable %_ptr_Uniform_SSBOScalar Uniform
|
||||
%int = OpTypeInt 32 1
|
||||
%int_0 = OpConstant %int 0
|
||||
%int_10 = OpConstant %int 10
|
||||
%int_1 = OpConstant %int 1
|
||||
%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
|
||||
%int_2 = OpConstant %int 2
|
||||
%float_10 = OpConstant %float 10.0
|
||||
%float_11 = OpConstant %float 11.0
|
||||
%float_const = OpConstantComposite %v2float %float_10 %float_11
|
||||
%_ptr_Uniform_float = OpTypePointer Uniform %float
|
||||
%main = OpFunction %void None %3
|
||||
%5 = OpLabel
|
||||
%21 = OpAccessChain %_ptr_Uniform_v2float %_ %int_1 %int_10
|
||||
%22 = OpLoad %v2float %21
|
||||
%25 = OpAccessChain %_ptr_Uniform_float %_ %int_2 %int_10
|
||||
%26 = OpLoad %float %25
|
||||
OpStore %21 %float_const
|
||||
%27 = OpVectorTimesScalar %v2float %22 %26
|
||||
%28 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0 %int_10
|
||||
OpStore %28 %27
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
54
3rdparty/spirv-cross/shaders-msl-no-opt/asm/packing/load-packed-no-forwarding-5.asm.comp
vendored
Normal file
54
3rdparty/spirv-cross/shaders-msl-no-opt/asm/packing/load-packed-no-forwarding-5.asm.comp
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
; SPIR-V
|
||||
; Version: 1.0
|
||||
; Generator: Khronos Glslang Reference Front End; 7
|
||||
; Bound: 29
|
||||
; Schema: 0
|
||||
OpCapability Shader
|
||||
%1 = OpExtInstImport "GLSL.std.450"
|
||||
OpMemoryModel Logical GLSL450
|
||||
OpEntryPoint GLCompute %main "main"
|
||||
OpExecutionMode %main LocalSize 1 1 1
|
||||
OpSource GLSL 450
|
||||
OpSourceExtension "GL_EXT_scalar_block_layout"
|
||||
OpName %main "main"
|
||||
OpName %SSBOScalar "SSBOScalar"
|
||||
OpMemberName %SSBOScalar 0 "a"
|
||||
OpMemberName %SSBOScalar 1 "b"
|
||||
OpMemberName %SSBOScalar 2 "c"
|
||||
OpName %_ ""
|
||||
OpMemberDecorate %SSBOScalar 0 Offset 0
|
||||
OpMemberDecorate %SSBOScalar 1 Offset 8
|
||||
OpMemberDecorate %SSBOScalar 2 Offset 20
|
||||
OpDecorate %SSBOScalar BufferBlock
|
||||
OpDecorate %_ DescriptorSet 0
|
||||
OpDecorate %_ Binding 0
|
||||
%void = OpTypeVoid
|
||||
%3 = OpTypeFunction %void
|
||||
%float = OpTypeFloat 32
|
||||
%v2float = OpTypeVector %float 2
|
||||
%v3float = OpTypeVector %float 3
|
||||
%SSBOScalar = OpTypeStruct %v2float %v3float %v3float
|
||||
%_ptr_Uniform_SSBOScalar = OpTypePointer Uniform %SSBOScalar
|
||||
%_ = OpVariable %_ptr_Uniform_SSBOScalar Uniform
|
||||
%int = OpTypeInt 32 1
|
||||
%int_0 = OpConstant %int 0
|
||||
%int_1 = OpConstant %int 1
|
||||
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
|
||||
%int_2 = OpConstant %int 2
|
||||
%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
|
||||
%float_1 = OpConstant %float 1
|
||||
%27 = OpConstantComposite %v3float %float_1 %float_1 %float_1
|
||||
%main = OpFunction %void None %3
|
||||
%5 = OpLabel
|
||||
%16 = OpAccessChain %_ptr_Uniform_v3float %_ %int_1
|
||||
%17 = OpLoad %v3float %16
|
||||
%18 = OpVectorShuffle %v2float %17 %17 0 1
|
||||
%20 = OpAccessChain %_ptr_Uniform_v3float %_ %int_2
|
||||
%21 = OpLoad %v3float %20
|
||||
%22 = OpVectorShuffle %v2float %21 %21 1 2
|
||||
OpStore %16 %27
|
||||
%23 = OpFMul %v2float %18 %22
|
||||
%25 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
|
||||
OpStore %25 %23
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
56
3rdparty/spirv-cross/shaders-msl-no-opt/asm/packing/load-packed-no-forwarding.asm.comp
vendored
Normal file
56
3rdparty/spirv-cross/shaders-msl-no-opt/asm/packing/load-packed-no-forwarding.asm.comp
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
; SPIR-V
|
||||
; Version: 1.0
|
||||
; Generator: Khronos Glslang Reference Front End; 7
|
||||
; Bound: 23
|
||||
; Schema: 0
|
||||
OpCapability Shader
|
||||
%1 = OpExtInstImport "GLSL.std.450"
|
||||
OpMemoryModel Logical GLSL450
|
||||
OpEntryPoint GLCompute %main "main"
|
||||
OpExecutionMode %main LocalSize 1 1 1
|
||||
OpSource GLSL 450
|
||||
OpSourceExtension "GL_EXT_scalar_block_layout"
|
||||
OpName %main "main"
|
||||
OpName %SSBOScalar "SSBOScalar"
|
||||
OpMemberName %SSBOScalar 0 "a"
|
||||
OpMemberName %SSBOScalar 1 "b"
|
||||
OpMemberName %SSBOScalar 2 "c"
|
||||
OpName %_ ""
|
||||
OpMemberDecorate %SSBOScalar 0 Offset 0
|
||||
OpMemberDecorate %SSBOScalar 1 RowMajor
|
||||
OpMemberDecorate %SSBOScalar 1 Offset 12
|
||||
OpMemberDecorate %SSBOScalar 1 MatrixStride 12
|
||||
OpMemberDecorate %SSBOScalar 2 RowMajor
|
||||
OpMemberDecorate %SSBOScalar 2 Offset 48
|
||||
OpMemberDecorate %SSBOScalar 2 MatrixStride 12
|
||||
OpDecorate %SSBOScalar BufferBlock
|
||||
OpDecorate %_ DescriptorSet 0
|
||||
OpDecorate %_ Binding 0
|
||||
%void = OpTypeVoid
|
||||
%3 = OpTypeFunction %void
|
||||
%float = OpTypeFloat 32
|
||||
%v3float = OpTypeVector %float 3
|
||||
%mat3v3float = OpTypeMatrix %v3float 3
|
||||
%SSBOScalar = OpTypeStruct %v3float %mat3v3float %mat3v3float
|
||||
%_ptr_Uniform_SSBOScalar = OpTypePointer Uniform %SSBOScalar
|
||||
%_ = OpVariable %_ptr_Uniform_SSBOScalar Uniform
|
||||
%int = OpTypeInt 32 1
|
||||
%int_0 = OpConstant %int 0
|
||||
%int_1 = OpConstant %int 1
|
||||
%int_2 = OpConstant %int 2
|
||||
%_ptr_Uniform_mat3v3float = OpTypePointer Uniform %mat3v3float
|
||||
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
|
||||
%main = OpFunction %void None %3
|
||||
%5 = OpLabel
|
||||
%b_ptr = OpAccessChain %_ptr_Uniform_mat3v3float %_ %int_1
|
||||
%c_ptr = OpAccessChain %_ptr_Uniform_mat3v3float %_ %int_2
|
||||
%b = OpLoad %mat3v3float %b_ptr
|
||||
%c = OpLoad %mat3v3float %c_ptr
|
||||
OpStore %b_ptr %c
|
||||
%19 = OpAccessChain %_ptr_Uniform_v3float %_ %int_0
|
||||
%20 = OpLoad %v3float %19
|
||||
%21 = OpMatrixTimesVector %v3float %b %20
|
||||
%22 = OpAccessChain %_ptr_Uniform_v3float %_ %int_0
|
||||
OpStore %22 %21
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
57
3rdparty/spirv-cross/shaders-msl-no-opt/asm/packing/packed-vector-extract-insert.asm.comp
vendored
Normal file
57
3rdparty/spirv-cross/shaders-msl-no-opt/asm/packing/packed-vector-extract-insert.asm.comp
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
; SPIR-V
|
||||
; Version: 1.0
|
||||
; Generator: Khronos Glslang Reference Front End; 7
|
||||
; Bound: 28
|
||||
; Schema: 0
|
||||
OpCapability Shader
|
||||
%1 = OpExtInstImport "GLSL.std.450"
|
||||
OpMemoryModel Logical GLSL450
|
||||
OpEntryPoint GLCompute %main "main"
|
||||
OpExecutionMode %main LocalSize 1 1 1
|
||||
OpSource GLSL 450
|
||||
OpSourceExtension "GL_EXT_scalar_block_layout"
|
||||
OpName %main "main"
|
||||
OpName %SSBOScalar "SSBOScalar"
|
||||
OpMemberName %SSBOScalar 0 "a"
|
||||
OpMemberName %SSBOScalar 1 "b"
|
||||
OpMemberName %SSBOScalar 2 "c"
|
||||
OpMemberName %SSBOScalar 3 "d"
|
||||
OpName %_ ""
|
||||
OpMemberDecorate %SSBOScalar 0 Offset 0
|
||||
OpMemberDecorate %SSBOScalar 1 Offset 8
|
||||
OpMemberDecorate %SSBOScalar 2 Offset 20
|
||||
OpMemberDecorate %SSBOScalar 3 Offset 32
|
||||
OpDecorate %SSBOScalar BufferBlock
|
||||
OpDecorate %_ DescriptorSet 0
|
||||
OpDecorate %_ Binding 0
|
||||
%void = OpTypeVoid
|
||||
%3 = OpTypeFunction %void
|
||||
%float = OpTypeFloat 32
|
||||
%v2float = OpTypeVector %float 2
|
||||
%v3float = OpTypeVector %float 3
|
||||
%SSBOScalar = OpTypeStruct %v2float %v3float %v3float %v3float
|
||||
%_ptr_Uniform_SSBOScalar = OpTypePointer Uniform %SSBOScalar
|
||||
%_ = OpVariable %_ptr_Uniform_SSBOScalar Uniform
|
||||
%int = OpTypeInt 32 1
|
||||
%int_0 = OpConstant %int 0
|
||||
%int_1 = OpConstant %int 1
|
||||
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
|
||||
%int_2 = OpConstant %int 2
|
||||
%uint = OpTypeInt 32 0
|
||||
%uint_0 = OpConstant %uint 0
|
||||
%float_2 = OpConstant %float 2.0
|
||||
%_ptr_Uniform_float = OpTypePointer Uniform %float
|
||||
%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
|
||||
%main = OpFunction %void None %3
|
||||
%5 = OpLabel
|
||||
%v3_ptr = OpAccessChain %_ptr_Uniform_v3float %_ %int_1
|
||||
%v3 = OpLoad %v3float %v3_ptr
|
||||
%v3_mod = OpCompositeInsert %v3float %float_2 %v3 2
|
||||
%v2 = OpVectorShuffle %v2float %v3 %v3 0 1
|
||||
%v1 = OpCompositeExtract %float %v3 2
|
||||
%v2_mul = OpVectorTimesScalar %v2float %v2 %v1
|
||||
%v2_ptr = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
|
||||
OpStore %v2_ptr %v2_mul
|
||||
OpStore %v3_ptr %v3_mod
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
48
3rdparty/spirv-cross/shaders-msl-no-opt/asm/packing/row-major-split-access-chain.asm.comp
vendored
Normal file
48
3rdparty/spirv-cross/shaders-msl-no-opt/asm/packing/row-major-split-access-chain.asm.comp
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
; SPIR-V
|
||||
; Version: 1.0
|
||||
; Generator: Khronos Glslang Reference Front End; 7
|
||||
; Bound: 21
|
||||
; Schema: 0
|
||||
OpCapability Shader
|
||||
%1 = OpExtInstImport "GLSL.std.450"
|
||||
OpMemoryModel Logical GLSL450
|
||||
OpEntryPoint GLCompute %main "main"
|
||||
OpExecutionMode %main LocalSize 1 1 1
|
||||
OpSource GLSL 450
|
||||
OpName %main "main"
|
||||
OpName %SSBORow "SSBORow"
|
||||
OpMemberName %SSBORow 0 "v"
|
||||
OpMemberName %SSBORow 1 "row_major0"
|
||||
OpName %_ ""
|
||||
OpMemberDecorate %SSBORow 0 Offset 0
|
||||
OpMemberDecorate %SSBORow 1 RowMajor
|
||||
OpMemberDecorate %SSBORow 1 Offset 16
|
||||
OpMemberDecorate %SSBORow 1 MatrixStride 16
|
||||
OpDecorate %SSBORow BufferBlock
|
||||
OpDecorate %_ DescriptorSet 0
|
||||
OpDecorate %_ Binding 0
|
||||
%void = OpTypeVoid
|
||||
%3 = OpTypeFunction %void
|
||||
%float = OpTypeFloat 32
|
||||
%v4float = OpTypeVector %float 4
|
||||
%mat4v4float = OpTypeMatrix %v4float 4
|
||||
%SSBORow = OpTypeStruct %float %mat4v4float
|
||||
%_ptr_Uniform_SSBORow = OpTypePointer Uniform %SSBORow
|
||||
%_ = OpVariable %_ptr_Uniform_SSBORow Uniform
|
||||
%int = OpTypeInt 32 1
|
||||
%int_0 = OpConstant %int 0
|
||||
%int_1 = OpConstant %int 1
|
||||
%uint = OpTypeInt 32 0
|
||||
%uint_2 = OpConstant %uint 2
|
||||
%_ptr_Uniform_float = OpTypePointer Uniform %float
|
||||
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
|
||||
%main = OpFunction %void None %3
|
||||
%5 = OpLabel
|
||||
%row_ptr = OpAccessChain %_ptr_Uniform_v4float %_ %int_1 %int_1
|
||||
%float_ptr = OpAccessChain %_ptr_Uniform_float %row_ptr %uint_2
|
||||
|
||||
%19 = OpLoad %float %float_ptr
|
||||
%20 = OpAccessChain %_ptr_Uniform_float %_ %int_0
|
||||
OpStore %20 %19
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
86
3rdparty/spirv-cross/shaders-msl-no-opt/packing/matrix-2x2-scalar.comp
vendored
Normal file
86
3rdparty/spirv-cross/shaders-msl-no-opt/packing/matrix-2x2-scalar.comp
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
#version 450
|
||||
#extension GL_EXT_scalar_block_layout : require
|
||||
layout(local_size_x = 1) in;
|
||||
|
||||
#define T mat2
|
||||
#define PACKING scalar
|
||||
|
||||
layout(set = 0, binding = 0, PACKING) buffer SSBOCol
|
||||
{
|
||||
layout(column_major) T col_major0;
|
||||
layout(column_major) T col_major1;
|
||||
};
|
||||
|
||||
layout(set = 0, binding = 1, PACKING) buffer SSBORow
|
||||
{
|
||||
layout(row_major) T row_major0;
|
||||
layout(row_major) T row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major()
|
||||
{
|
||||
// Load to variable.
|
||||
T loaded = col_major0;
|
||||
|
||||
// Store from variable.
|
||||
col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major()
|
||||
{
|
||||
// Load to variable.
|
||||
T loaded = row_major0;
|
||||
|
||||
// Store to variable.
|
||||
row_major0 = loaded;
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major()
|
||||
{
|
||||
// Copy col -> col
|
||||
col_major0 = col_major1;
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major()
|
||||
{
|
||||
// Copy row -> col
|
||||
col_major0 = row_major0;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major()
|
||||
{
|
||||
// Copy col -> row
|
||||
row_major0 = col_major0;
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major()
|
||||
{
|
||||
// Copy row -> row
|
||||
row_major0 = row_major1;
|
||||
}
|
||||
|
||||
void copy_columns()
|
||||
{
|
||||
// Copy columns/rows.
|
||||
col_major0[1] = row_major0[1];
|
||||
row_major0[1] = col_major0[1];
|
||||
}
|
||||
|
||||
void copy_elements()
|
||||
{
|
||||
// Copy individual elements.
|
||||
col_major0[0][1] = row_major0[0][1];
|
||||
row_major0[0][1] = col_major0[0][1];
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
load_store_to_variable_col_major();
|
||||
load_store_to_variable_row_major();
|
||||
copy_col_major_to_col_major();
|
||||
copy_col_major_to_row_major();
|
||||
copy_row_major_to_col_major();
|
||||
copy_row_major_to_row_major();
|
||||
copy_columns();
|
||||
copy_elements();
|
||||
}
|
||||
85
3rdparty/spirv-cross/shaders-msl-no-opt/packing/matrix-2x2-std140.comp
vendored
Normal file
85
3rdparty/spirv-cross/shaders-msl-no-opt/packing/matrix-2x2-std140.comp
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
#version 450
|
||||
layout(local_size_x = 1) in;
|
||||
|
||||
#define T mat2
|
||||
#define PACKING std140
|
||||
|
||||
layout(set = 0, binding = 0, PACKING) buffer SSBOCol
|
||||
{
|
||||
layout(column_major) T col_major0;
|
||||
layout(column_major) T col_major1;
|
||||
};
|
||||
|
||||
layout(set = 0, binding = 1, PACKING) buffer SSBORow
|
||||
{
|
||||
layout(row_major) T row_major0;
|
||||
layout(row_major) T row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major()
|
||||
{
|
||||
// Load to variable.
|
||||
T loaded = col_major0;
|
||||
|
||||
// Store from variable.
|
||||
col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major()
|
||||
{
|
||||
// Load to variable.
|
||||
T loaded = row_major0;
|
||||
|
||||
// Store to variable.
|
||||
row_major0 = loaded;
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major()
|
||||
{
|
||||
// Copy col -> col
|
||||
col_major0 = col_major1;
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major()
|
||||
{
|
||||
// Copy row -> col
|
||||
col_major0 = row_major0;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major()
|
||||
{
|
||||
// Copy col -> row
|
||||
row_major0 = col_major0;
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major()
|
||||
{
|
||||
// Copy row -> row
|
||||
row_major0 = row_major1;
|
||||
}
|
||||
|
||||
void copy_columns()
|
||||
{
|
||||
// Copy columns/rows.
|
||||
col_major0[1] = row_major0[1];
|
||||
row_major0[1] = col_major0[1];
|
||||
}
|
||||
|
||||
void copy_elements()
|
||||
{
|
||||
// Copy individual elements.
|
||||
col_major0[0][1] = row_major0[0][1];
|
||||
row_major0[0][1] = col_major0[0][1];
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
load_store_to_variable_col_major();
|
||||
load_store_to_variable_row_major();
|
||||
copy_col_major_to_col_major();
|
||||
copy_col_major_to_row_major();
|
||||
copy_row_major_to_col_major();
|
||||
copy_row_major_to_row_major();
|
||||
copy_columns();
|
||||
copy_elements();
|
||||
}
|
||||
85
3rdparty/spirv-cross/shaders-msl-no-opt/packing/matrix-2x2-std430.comp
vendored
Normal file
85
3rdparty/spirv-cross/shaders-msl-no-opt/packing/matrix-2x2-std430.comp
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
#version 450
|
||||
layout(local_size_x = 1) in;
|
||||
|
||||
#define T mat2
|
||||
#define PACKING std430
|
||||
|
||||
layout(set = 0, binding = 0, PACKING) buffer SSBOCol
|
||||
{
|
||||
layout(column_major) T col_major0;
|
||||
layout(column_major) T col_major1;
|
||||
};
|
||||
|
||||
layout(set = 0, binding = 1, PACKING) buffer SSBORow
|
||||
{
|
||||
layout(row_major) T row_major0;
|
||||
layout(row_major) T row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major()
|
||||
{
|
||||
// Load to variable.
|
||||
T loaded = col_major0;
|
||||
|
||||
// Store from variable.
|
||||
col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major()
|
||||
{
|
||||
// Load to variable.
|
||||
T loaded = row_major0;
|
||||
|
||||
// Store to variable.
|
||||
row_major0 = loaded;
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major()
|
||||
{
|
||||
// Copy col -> col
|
||||
col_major0 = col_major1;
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major()
|
||||
{
|
||||
// Copy row -> col
|
||||
col_major0 = row_major0;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major()
|
||||
{
|
||||
// Copy col -> row
|
||||
row_major0 = col_major0;
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major()
|
||||
{
|
||||
// Copy row -> row
|
||||
row_major0 = row_major1;
|
||||
}
|
||||
|
||||
void copy_columns()
|
||||
{
|
||||
// Copy columns/rows.
|
||||
col_major0[1] = row_major0[1];
|
||||
row_major0[1] = col_major0[1];
|
||||
}
|
||||
|
||||
void copy_elements()
|
||||
{
|
||||
// Copy individual elements.
|
||||
col_major0[0][1] = row_major0[0][1];
|
||||
row_major0[0][1] = col_major0[0][1];
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
load_store_to_variable_col_major();
|
||||
load_store_to_variable_row_major();
|
||||
copy_col_major_to_col_major();
|
||||
copy_col_major_to_row_major();
|
||||
copy_row_major_to_col_major();
|
||||
copy_row_major_to_row_major();
|
||||
copy_columns();
|
||||
copy_elements();
|
||||
}
|
||||
86
3rdparty/spirv-cross/shaders-msl-no-opt/packing/matrix-2x3-scalar.comp
vendored
Normal file
86
3rdparty/spirv-cross/shaders-msl-no-opt/packing/matrix-2x3-scalar.comp
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
#version 450
|
||||
#extension GL_EXT_scalar_block_layout : require
|
||||
layout(local_size_x = 1) in;
|
||||
|
||||
#define T mat2x3
|
||||
#define PACKING scalar
|
||||
|
||||
layout(set = 0, binding = 0, PACKING) buffer SSBOCol
|
||||
{
|
||||
layout(column_major) T col_major0;
|
||||
layout(column_major) T col_major1;
|
||||
};
|
||||
|
||||
layout(set = 0, binding = 1, PACKING) buffer SSBORow
|
||||
{
|
||||
layout(row_major) T row_major0;
|
||||
layout(row_major) T row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major()
|
||||
{
|
||||
// Load to variable.
|
||||
T loaded = col_major0;
|
||||
|
||||
// Store from variable.
|
||||
col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major()
|
||||
{
|
||||
// Load to variable.
|
||||
T loaded = row_major0;
|
||||
|
||||
// Store to variable.
|
||||
row_major0 = loaded;
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major()
|
||||
{
|
||||
// Copy col -> col
|
||||
col_major0 = col_major1;
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major()
|
||||
{
|
||||
// Copy row -> col
|
||||
col_major0 = row_major0;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major()
|
||||
{
|
||||
// Copy col -> row
|
||||
row_major0 = col_major0;
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major()
|
||||
{
|
||||
// Copy row -> row
|
||||
row_major0 = row_major1;
|
||||
}
|
||||
|
||||
void copy_columns()
|
||||
{
|
||||
// Copy columns/rows.
|
||||
col_major0[1] = row_major0[1];
|
||||
row_major0[1] = col_major0[1];
|
||||
}
|
||||
|
||||
void copy_elements()
|
||||
{
|
||||
// Copy individual elements.
|
||||
col_major0[0][1] = row_major0[0][1];
|
||||
row_major0[0][1] = col_major0[0][1];
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
load_store_to_variable_col_major();
|
||||
load_store_to_variable_row_major();
|
||||
copy_col_major_to_col_major();
|
||||
copy_col_major_to_row_major();
|
||||
copy_row_major_to_col_major();
|
||||
copy_row_major_to_row_major();
|
||||
copy_columns();
|
||||
copy_elements();
|
||||
}
|
||||
85
3rdparty/spirv-cross/shaders-msl-no-opt/packing/matrix-2x3-std140.comp
vendored
Normal file
85
3rdparty/spirv-cross/shaders-msl-no-opt/packing/matrix-2x3-std140.comp
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
#version 450
|
||||
layout(local_size_x = 1) in;
|
||||
|
||||
#define T mat2x3
|
||||
#define PACKING std140
|
||||
|
||||
layout(set = 0, binding = 0, PACKING) buffer SSBOCol
|
||||
{
|
||||
layout(column_major) T col_major0;
|
||||
layout(column_major) T col_major1;
|
||||
};
|
||||
|
||||
layout(set = 0, binding = 1, PACKING) buffer SSBORow
|
||||
{
|
||||
layout(row_major) T row_major0;
|
||||
layout(row_major) T row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major()
|
||||
{
|
||||
// Load to variable.
|
||||
T loaded = col_major0;
|
||||
|
||||
// Store from variable.
|
||||
col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major()
|
||||
{
|
||||
// Load to variable.
|
||||
T loaded = row_major0;
|
||||
|
||||
// Store to variable.
|
||||
row_major0 = loaded;
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major()
|
||||
{
|
||||
// Copy col -> col
|
||||
col_major0 = col_major1;
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major()
|
||||
{
|
||||
// Copy row -> col
|
||||
col_major0 = row_major0;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major()
|
||||
{
|
||||
// Copy col -> row
|
||||
row_major0 = col_major0;
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major()
|
||||
{
|
||||
// Copy row -> row
|
||||
row_major0 = row_major1;
|
||||
}
|
||||
|
||||
void copy_columns()
|
||||
{
|
||||
// Copy columns/rows.
|
||||
col_major0[1] = row_major0[1];
|
||||
row_major0[1] = col_major0[1];
|
||||
}
|
||||
|
||||
void copy_elements()
|
||||
{
|
||||
// Copy individual elements.
|
||||
col_major0[0][1] = row_major0[0][1];
|
||||
row_major0[0][1] = col_major0[0][1];
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
load_store_to_variable_col_major();
|
||||
load_store_to_variable_row_major();
|
||||
copy_col_major_to_col_major();
|
||||
copy_col_major_to_row_major();
|
||||
copy_row_major_to_col_major();
|
||||
copy_row_major_to_row_major();
|
||||
copy_columns();
|
||||
copy_elements();
|
||||
}
|
||||
85
3rdparty/spirv-cross/shaders-msl-no-opt/packing/matrix-2x3-std430.comp
vendored
Normal file
85
3rdparty/spirv-cross/shaders-msl-no-opt/packing/matrix-2x3-std430.comp
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
#version 450
|
||||
layout(local_size_x = 1) in;
|
||||
|
||||
#define T mat2x3
|
||||
#define PACKING std430
|
||||
|
||||
layout(set = 0, binding = 0, PACKING) buffer SSBOCol
|
||||
{
|
||||
layout(column_major) T col_major0;
|
||||
layout(column_major) T col_major1;
|
||||
};
|
||||
|
||||
layout(set = 0, binding = 1, PACKING) buffer SSBORow
|
||||
{
|
||||
layout(row_major) T row_major0;
|
||||
layout(row_major) T row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major()
|
||||
{
|
||||
// Load to variable.
|
||||
T loaded = col_major0;
|
||||
|
||||
// Store from variable.
|
||||
col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major()
|
||||
{
|
||||
// Load to variable.
|
||||
T loaded = row_major0;
|
||||
|
||||
// Store to variable.
|
||||
row_major0 = loaded;
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major()
|
||||
{
|
||||
// Copy col -> col
|
||||
col_major0 = col_major1;
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major()
|
||||
{
|
||||
// Copy row -> col
|
||||
col_major0 = row_major0;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major()
|
||||
{
|
||||
// Copy col -> row
|
||||
row_major0 = col_major0;
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major()
|
||||
{
|
||||
// Copy row -> row
|
||||
row_major0 = row_major1;
|
||||
}
|
||||
|
||||
void copy_columns()
|
||||
{
|
||||
// Copy columns/rows.
|
||||
col_major0[1] = row_major0[1];
|
||||
row_major0[1] = col_major0[1];
|
||||
}
|
||||
|
||||
void copy_elements()
|
||||
{
|
||||
// Copy individual elements.
|
||||
col_major0[0][1] = row_major0[0][1];
|
||||
row_major0[0][1] = col_major0[0][1];
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
load_store_to_variable_col_major();
|
||||
load_store_to_variable_row_major();
|
||||
copy_col_major_to_col_major();
|
||||
copy_col_major_to_row_major();
|
||||
copy_row_major_to_col_major();
|
||||
copy_row_major_to_row_major();
|
||||
copy_columns();
|
||||
copy_elements();
|
||||
}
|
||||
86
3rdparty/spirv-cross/shaders-msl-no-opt/packing/matrix-2x4-scalar.comp
vendored
Normal file
86
3rdparty/spirv-cross/shaders-msl-no-opt/packing/matrix-2x4-scalar.comp
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
#version 450
|
||||
#extension GL_EXT_scalar_block_layout : require
|
||||
layout(local_size_x = 1) in;
|
||||
|
||||
#define T mat2x4
|
||||
#define PACKING scalar
|
||||
|
||||
layout(set = 0, binding = 0, PACKING) buffer SSBOCol
|
||||
{
|
||||
layout(column_major) T col_major0;
|
||||
layout(column_major) T col_major1;
|
||||
};
|
||||
|
||||
layout(set = 0, binding = 1, PACKING) buffer SSBORow
|
||||
{
|
||||
layout(row_major) T row_major0;
|
||||
layout(row_major) T row_major1;
|
||||
};
|
||||
|
||||
void load_store_to_variable_col_major()
|
||||
{
|
||||
// Load to variable.
|
||||
T loaded = col_major0;
|
||||
|
||||
// Store from variable.
|
||||
col_major1 = loaded;
|
||||
}
|
||||
|
||||
void load_store_to_variable_row_major()
|
||||
{
|
||||
// Load to variable.
|
||||
T loaded = row_major0;
|
||||
|
||||
// Store to variable.
|
||||
row_major0 = loaded;
|
||||
}
|
||||
|
||||
void copy_col_major_to_col_major()
|
||||
{
|
||||
// Copy col -> col
|
||||
col_major0 = col_major1;
|
||||
}
|
||||
|
||||
void copy_row_major_to_col_major()
|
||||
{
|
||||
// Copy row -> col
|
||||
col_major0 = row_major0;
|
||||
}
|
||||
|
||||
void copy_col_major_to_row_major()
|
||||
{
|
||||
// Copy col -> row
|
||||
row_major0 = col_major0;
|
||||
}
|
||||
|
||||
void copy_row_major_to_row_major()
|
||||
{
|
||||
// Copy row -> row
|
||||
row_major0 = row_major1;
|
||||
}
|
||||
|
||||
void copy_columns()
|
||||
{
|
||||
// Copy columns/rows.
|
||||
col_major0[1] = row_major0[1];
|
||||
row_major0[1] = col_major0[1];
|
||||
}
|
||||
|
||||
void copy_elements()
|
||||
{
|
||||
// Copy individual elements.
|
||||
col_major0[0][1] = row_major0[0][1];
|
||||
row_major0[0][1] = col_major0[0][1];
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
load_store_to_variable_col_major();
|
||||
load_store_to_variable_row_major();
|
||||
copy_col_major_to_col_major();
|
||||
copy_col_major_to_row_major();
|
||||
copy_row_major_to_col_major();
|
||||
copy_row_major_to_row_major();
|
||||
copy_columns();
|
||||
copy_elements();
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user