struct Mat4x4_ { mx : vec4; my : vec4; mz : vec4; mw : vec4; }; struct Mat4x3_ { mx : vec4; my : vec4; mz : vec4; }; struct Mat4x2_ { mx : vec4; my : vec4; }; [[block]] struct ub_SceneParams { u_Projection : Mat4x4_; }; [[block]] struct ub_MaterialParams { u_TexMtx : [[stride(32)]] array; u_Misc0_ : vec4; }; [[block]] struct ub_PacketParams { u_PosMtx : [[stride(48)]] array; }; struct VertexOutput { [[location(0)]] v_Color : vec4; [[location(1)]] v_TexCoord : vec2; [[builtin(position)]] member : vec4; }; [[group(0), binding(0)]] var global : ub_SceneParams; [[group(0), binding(1)]] var global1 : ub_MaterialParams; [[group(0), binding(2)]] var global2 : ub_PacketParams; var a_Position1 : vec3; var a_UV1 : vec2; var a_Color1 : vec4; var a_Normal1 : vec3; var a_PosMtxIdx1 : f32; var v_Color : vec4; var v_TexCoord : vec2; var gl_Position : vec4; fn Mat4x3GetCol0_(m : Mat4x3_) -> vec3 { var m1 : Mat4x3_; m1 = m; let _e2 : Mat4x3_ = m1; let _e5 : Mat4x3_ = m1; let _e8 : Mat4x3_ = m1; return vec3(_e2.mx.x, _e5.my.x, _e8.mz.x); } fn Mat4x3GetCol1_(m2 : Mat4x3_) -> vec3 { var m3 : Mat4x3_; m3 = m2; let _e2 : Mat4x3_ = m3; let _e5 : Mat4x3_ = m3; let _e8 : Mat4x3_ = m3; return vec3(_e2.mx.y, _e5.my.y, _e8.mz.y); } fn Mat4x3GetCol2_(m4 : Mat4x3_) -> vec3 { var m5 : Mat4x3_; m5 = m4; let _e2 : Mat4x3_ = m5; let _e5 : Mat4x3_ = m5; let _e8 : Mat4x3_ = m5; return vec3(_e2.mx.z, _e5.my.z, _e8.mz.z); } fn Mat4x3GetCol3_(m6 : Mat4x3_) -> vec3 { var m7 : Mat4x3_; m7 = m6; let _e2 : Mat4x3_ = m7; let _e5 : Mat4x3_ = m7; let _e8 : Mat4x3_ = m7; return vec3(_e2.mx.w, _e5.my.w, _e8.mz.w); } fn Mul(m8 : Mat4x4_, v : vec4) -> vec4 { var m9 : Mat4x4_; var v1 : vec4; m9 = m8; v1 = v; let _e4 : Mat4x4_ = m9; let _e6 : vec4 = v1; let _e8 : Mat4x4_ = m9; let _e10 : vec4 = v1; let _e12 : Mat4x4_ = m9; let _e14 : vec4 = v1; let _e16 : Mat4x4_ = m9; let _e18 : vec4 = v1; return vec4(dot(_e4.mx, _e6), dot(_e8.my, _e10), dot(_e12.mz, _e14), dot(_e16.mw, _e18)); } fn Mul1(m10 : Mat4x3_, v2 : vec4) -> vec3 { var m11 : Mat4x3_; var v3 : vec4; m11 = m10; v3 = v2; let _e4 : Mat4x3_ = m11; let _e6 : vec4 = v3; let _e8 : Mat4x3_ = m11; let _e10 : vec4 = v3; let _e12 : Mat4x3_ = m11; let _e14 : vec4 = v3; return vec3(dot(_e4.mx, _e6), dot(_e8.my, _e10), dot(_e12.mz, _e14)); } fn Mul2(m12 : Mat4x2_, v4 : vec4) -> vec2 { var m13 : Mat4x2_; var v5 : vec4; m13 = m12; v5 = v4; let _e4 : Mat4x2_ = m13; let _e6 : vec4 = v5; let _e8 : Mat4x2_ = m13; let _e10 : vec4 = v5; return vec2(dot(_e4.mx, _e6), dot(_e8.my, _e10)); } fn Mul3(v6 : vec3, m14 : Mat4x3_) -> vec4 { var v7 : vec3; var m15 : Mat4x3_; v7 = v6; m15 = m14; let _e5 : Mat4x3_ = m15; let _e6 : vec3 = Mat4x3GetCol0_(_e5); let _e7 : vec3 = v7; let _e10 : Mat4x3_ = m15; let _e11 : vec3 = Mat4x3GetCol1_(_e10); let _e12 : vec3 = v7; let _e15 : Mat4x3_ = m15; let _e16 : vec3 = Mat4x3GetCol2_(_e15); let _e17 : vec3 = v7; let _e20 : Mat4x3_ = m15; let _e21 : vec3 = Mat4x3GetCol3_(_e20); let _e22 : vec3 = v7; return vec4(dot(_e6, _e7), dot(_e11, _e12), dot(_e16, _e17), dot(_e21, _e22)); } fn _Mat4x4_(n : f32) -> Mat4x4_ { var n1 : f32; var o : Mat4x4_; n1 = n; let _e4 : f32 = n1; o.mx = vec4(_e4, 0.0, 0.0, 0.0); let _e11 : f32 = n1; o.my = vec4(0.0, _e11, 0.0, 0.0); let _e18 : f32 = n1; o.mz = vec4(0.0, 0.0, _e18, 0.0); let _e25 : f32 = n1; o.mw = vec4(0.0, 0.0, 0.0, _e25); let _e27 : Mat4x4_ = o; return _e27; } fn _Mat4x4_1(m16 : Mat4x3_) -> Mat4x4_ { var m17 : Mat4x3_; var o1 : Mat4x4_; m17 = m16; let _e4 : Mat4x4_ = _Mat4x4_(1.0); o1 = _e4; let _e7 : Mat4x3_ = m17; o1.mx = _e7.mx; let _e10 : Mat4x3_ = m17; o1.my = _e10.my; let _e13 : Mat4x3_ = m17; o1.mz = _e13.mz; let _e15 : Mat4x4_ = o1; return _e15; } fn _Mat4x4_2(m18 : Mat4x2_) -> Mat4x4_ { var m19 : Mat4x2_; var o2 : Mat4x4_; m19 = m18; let _e4 : Mat4x4_ = _Mat4x4_(1.0); o2 = _e4; let _e7 : Mat4x2_ = m19; o2.mx = _e7.mx; let _e10 : Mat4x2_ = m19; o2.my = _e10.my; let _e12 : Mat4x4_ = o2; return _e12; } fn _Mat4x3_(n2 : f32) -> Mat4x3_ { var n3 : f32; var o3 : Mat4x3_; n3 = n2; let _e4 : f32 = n3; o3.mx = vec4(_e4, 0.0, 0.0, 0.0); let _e11 : f32 = n3; o3.my = vec4(0.0, _e11, 0.0, 0.0); let _e18 : f32 = n3; o3.mz = vec4(0.0, 0.0, _e18, 0.0); let _e21 : Mat4x3_ = o3; return _e21; } fn _Mat4x3_1(m20 : Mat4x4_) -> Mat4x3_ { var m21 : Mat4x4_; var o4 : Mat4x3_; m21 = m20; let _e4 : Mat4x4_ = m21; o4.mx = _e4.mx; let _e7 : Mat4x4_ = m21; o4.my = _e7.my; let _e10 : Mat4x4_ = m21; o4.mz = _e10.mz; let _e12 : Mat4x3_ = o4; return _e12; } fn main1() { var t_PosMtx : Mat4x3_; var t_TexSpaceCoord : vec2; let _e15 : f32 = a_PosMtxIdx1; let _e18 : Mat4x3_ = global2.u_PosMtx[i32(_e15)]; t_PosMtx = _e18; let _e23 : Mat4x3_ = t_PosMtx; let _e24 : Mat4x4_ = _Mat4x4_1(_e23); let _e25 : vec3 = a_Position1; let _e29 : Mat4x3_ = t_PosMtx; let _e30 : Mat4x4_ = _Mat4x4_1(_e29); let _e31 : vec3 = a_Position1; let _e34 : vec4 = Mul(_e30, vec4(_e31, 1.0)); let _e35 : Mat4x4_ = global.u_Projection; let _e37 : Mat4x3_ = t_PosMtx; let _e38 : Mat4x4_ = _Mat4x4_1(_e37); let _e39 : vec3 = a_Position1; let _e43 : Mat4x3_ = t_PosMtx; let _e44 : Mat4x4_ = _Mat4x4_1(_e43); let _e45 : vec3 = a_Position1; let _e48 : vec4 = Mul(_e44, vec4(_e45, 1.0)); let _e49 : vec4 = Mul(_e35, _e48); gl_Position = _e49; let _e50 : vec4 = a_Color1; v_Color = _e50; let _e52 : vec4 = global1.u_Misc0_; if ((_e52.x == 2.0)) { { let _e59 : vec3 = a_Normal1; let _e64 : Mat4x2_ = global1.u_TexMtx[0]; let _e65 : vec3 = a_Normal1; let _e68 : vec2 = Mul2(_e64, vec4(_e65, 1.0)); v_TexCoord = _e68.xy; return; } } else { { let _e73 : vec2 = a_UV1; let _e79 : Mat4x2_ = global1.u_TexMtx[0]; let _e80 : vec2 = a_UV1; let _e84 : vec2 = Mul2(_e79, vec4(_e80, 1.0, 1.0)); v_TexCoord = _e84.xy; return; } } } [[stage(vertex)]] fn main([[location(0)]] a_Position : vec3, [[location(1)]] a_UV : vec2, [[location(2)]] a_Color : vec4, [[location(3)]] a_Normal : vec3, [[location(4)]] a_PosMtxIdx : f32) -> VertexOutput { a_Position1 = a_Position; a_UV1 = a_UV; a_Color1 = a_Color; a_Normal1 = a_Normal; a_PosMtxIdx1 = a_PosMtxIdx; main1(); let _e11 : vec4 = v_Color; let _e13 : vec2 = v_TexCoord; let _e15 : vec4 = gl_Position; return VertexOutput(_e11, _e13, _e15); }