struct Mat4x4_ { mx: vec4; my: vec4; mz: vec4; mw: vec4; }; struct Mat4x3_ { mx: vec4; my: vec4; mz: vec4; }; struct Mat4x2_ { mx: vec4; my: vec4; }; struct ub_SceneParams { u_Projection: Mat4x4_; }; struct ub_MaterialParams { u_TexMtx: [[stride(32)]] array; u_Misc0_: vec4; }; 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 x_e2: Mat4x3_ = m1; let x_e5: Mat4x3_ = m1; let x_e8: Mat4x3_ = m1; return vec3(x_e2.mx.x, x_e5.my.x, x_e8.mz.x); } fn Mat4x3GetCol1_(m2: Mat4x3_) -> vec3 { var m3: Mat4x3_; m3 = m2; let x_e2: Mat4x3_ = m3; let x_e5: Mat4x3_ = m3; let x_e8: Mat4x3_ = m3; return vec3(x_e2.mx.y, x_e5.my.y, x_e8.mz.y); } fn Mat4x3GetCol2_(m4: Mat4x3_) -> vec3 { var m5: Mat4x3_; m5 = m4; let x_e2: Mat4x3_ = m5; let x_e5: Mat4x3_ = m5; let x_e8: Mat4x3_ = m5; return vec3(x_e2.mx.z, x_e5.my.z, x_e8.mz.z); } fn Mat4x3GetCol3_(m6: Mat4x3_) -> vec3 { var m7: Mat4x3_; m7 = m6; let x_e2: Mat4x3_ = m7; let x_e5: Mat4x3_ = m7; let x_e8: Mat4x3_ = m7; return vec3(x_e2.mx.w, x_e5.my.w, x_e8.mz.w); } fn Mul(m8: Mat4x4_, v: vec4) -> vec4 { var m9: Mat4x4_; var v1: vec4; m9 = m8; v1 = v; let x_e4: Mat4x4_ = m9; let x_e6: vec4 = v1; let x_e8: Mat4x4_ = m9; let x_e10: vec4 = v1; let x_e12: Mat4x4_ = m9; let x_e14: vec4 = v1; let x_e16: Mat4x4_ = m9; let x_e18: vec4 = v1; return vec4(dot(x_e4.mx, x_e6), dot(x_e8.my, x_e10), dot(x_e12.mz, x_e14), dot(x_e16.mw, x_e18)); } fn Mul1(m10: Mat4x3_, v2: vec4) -> vec3 { var m11: Mat4x3_; var v3: vec4; m11 = m10; v3 = v2; let x_e4: Mat4x3_ = m11; let x_e6: vec4 = v3; let x_e8: Mat4x3_ = m11; let x_e10: vec4 = v3; let x_e12: Mat4x3_ = m11; let x_e14: vec4 = v3; return vec3(dot(x_e4.mx, x_e6), dot(x_e8.my, x_e10), dot(x_e12.mz, x_e14)); } fn Mul2(m12: Mat4x2_, v4: vec4) -> vec2 { var m13: Mat4x2_; var v5: vec4; m13 = m12; v5 = v4; let x_e4: Mat4x2_ = m13; let x_e6: vec4 = v5; let x_e8: Mat4x2_ = m13; let x_e10: vec4 = v5; return vec2(dot(x_e4.mx, x_e6), dot(x_e8.my, x_e10)); } fn Mul3(v6: vec3, m14: Mat4x3_) -> vec4 { var v7: vec3; var m15: Mat4x3_; v7 = v6; m15 = m14; let x_e5: Mat4x3_ = m15; let x_e6: vec3 = Mat4x3GetCol0_(x_e5); let x_e7: vec3 = v7; let x_e10: Mat4x3_ = m15; let x_e11: vec3 = Mat4x3GetCol1_(x_e10); let x_e12: vec3 = v7; let x_e15: Mat4x3_ = m15; let x_e16: vec3 = Mat4x3GetCol2_(x_e15); let x_e17: vec3 = v7; let x_e20: Mat4x3_ = m15; let x_e21: vec3 = Mat4x3GetCol3_(x_e20); let x_e22: vec3 = v7; return vec4(dot(x_e6, x_e7), dot(x_e11, x_e12), dot(x_e16, x_e17), dot(x_e21, x_e22)); } fn x_Mat4x4_(n: f32) -> Mat4x4_ { var n1: f32; var o: Mat4x4_; n1 = n; let x_e4: f32 = n1; o.mx = vec4(x_e4, 0.0, 0.0, 0.0); let x_e11: f32 = n1; o.my = vec4(0.0, x_e11, 0.0, 0.0); let x_e18: f32 = n1; o.mz = vec4(0.0, 0.0, x_e18, 0.0); let x_e25: f32 = n1; o.mw = vec4(0.0, 0.0, 0.0, x_e25); let x_e27: Mat4x4_ = o; return x_e27; } fn x_Mat4x4_1(m16: Mat4x3_) -> Mat4x4_ { var m17: Mat4x3_; var o1: Mat4x4_; m17 = m16; let x_e4: Mat4x4_ = x_Mat4x4_(1.0); o1 = x_e4; let x_e7: Mat4x3_ = m17; o1.mx = x_e7.mx; let x_e10: Mat4x3_ = m17; o1.my = x_e10.my; let x_e13: Mat4x3_ = m17; o1.mz = x_e13.mz; let x_e15: Mat4x4_ = o1; return x_e15; } fn x_Mat4x4_2(m18: Mat4x2_) -> Mat4x4_ { var m19: Mat4x2_; var o2: Mat4x4_; m19 = m18; let x_e4: Mat4x4_ = x_Mat4x4_(1.0); o2 = x_e4; let x_e7: Mat4x2_ = m19; o2.mx = x_e7.mx; let x_e10: Mat4x2_ = m19; o2.my = x_e10.my; let x_e12: Mat4x4_ = o2; return x_e12; } fn x_Mat4x3_(n2: f32) -> Mat4x3_ { var n3: f32; var o3: Mat4x3_; n3 = n2; let x_e4: f32 = n3; o3.mx = vec4(x_e4, 0.0, 0.0, 0.0); let x_e11: f32 = n3; o3.my = vec4(0.0, x_e11, 0.0, 0.0); let x_e18: f32 = n3; o3.mz = vec4(0.0, 0.0, x_e18, 0.0); let x_e21: Mat4x3_ = o3; return x_e21; } fn x_Mat4x3_1(m20: Mat4x4_) -> Mat4x3_ { var m21: Mat4x4_; var o4: Mat4x3_; m21 = m20; let x_e4: Mat4x4_ = m21; o4.mx = x_e4.mx; let x_e7: Mat4x4_ = m21; o4.my = x_e7.my; let x_e10: Mat4x4_ = m21; o4.mz = x_e10.mz; let x_e12: Mat4x3_ = o4; return x_e12; } fn main1() { var t_PosMtx: Mat4x3_; var t_TexSpaceCoord: vec2; let x_e15: f32 = a_PosMtxIdx1; let x_e18: Mat4x3_ = global2.u_PosMtx[i32(x_e15)]; t_PosMtx = x_e18; let x_e23: Mat4x3_ = t_PosMtx; let x_e24: Mat4x4_ = x_Mat4x4_1(x_e23); let x_e25: vec3 = a_Position1; let x_e29: Mat4x3_ = t_PosMtx; let x_e30: Mat4x4_ = x_Mat4x4_1(x_e29); let x_e31: vec3 = a_Position1; let x_e34: vec4 = Mul(x_e30, vec4(x_e31, 1.0)); let x_e35: Mat4x4_ = global.u_Projection; let x_e37: Mat4x3_ = t_PosMtx; let x_e38: Mat4x4_ = x_Mat4x4_1(x_e37); let x_e39: vec3 = a_Position1; let x_e43: Mat4x3_ = t_PosMtx; let x_e44: Mat4x4_ = x_Mat4x4_1(x_e43); let x_e45: vec3 = a_Position1; let x_e48: vec4 = Mul(x_e44, vec4(x_e45, 1.0)); let x_e49: vec4 = Mul(x_e35, x_e48); gl_Position = x_e49; let x_e50: vec4 = a_Color1; v_Color = x_e50; let x_e52: vec4 = global1.u_Misc0_; if ((x_e52.x == 2.0)) { { let x_e59: vec3 = a_Normal1; let x_e64: Mat4x2_ = global1.u_TexMtx[0]; let x_e65: vec3 = a_Normal1; let x_e68: vec2 = Mul2(x_e64, vec4(x_e65, 1.0)); v_TexCoord = x_e68.xy; return; } } else { { let x_e73: vec2 = a_UV1; let x_e79: Mat4x2_ = global1.u_TexMtx[0]; let x_e80: vec2 = a_UV1; let x_e84: vec2 = Mul2(x_e79, vec4(x_e80, 1.0, 1.0)); v_TexCoord = x_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 x_e11: vec4 = v_Color; let x_e13: vec2 = v_TexCoord; let x_e15: vec4 = gl_Position; return VertexOutput(x_e11, x_e13, x_e15); }