| #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; |
| }; |
| |
| constant uint3 gl_WorkGroupSize [[maybe_unused]] = uint3(1u); |
| |
| 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); |
| } |
| |