2019-07-23 10:10:26 +00:00
|
|
|
#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;
|
|
|
|
};
|
|
|
|
|
2019-09-18 19:56:51 +00:00
|
|
|
constant uint3 gl_WorkGroupSize [[maybe_unused]] = uint3(1u);
|
|
|
|
|
2019-07-23 10:10:26 +00:00
|
|
|
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])));
|
|
|
|
}
|
|
|
|
|