VSHãÂ\eu_model u_modelViewProj(using namespace metal; struct xlatMtlShaderInput { float3 a_normal [[attribute(0)]]; float3 a_position [[attribute(1)]]; }; struct xlatMtlShaderOutput { float4 gl_Position [[position]]; float3 v_normal; }; struct xlatMtlShaderUniform { float4x4 u_model[32]; float4x4 u_modelViewProj; }; vertex xlatMtlShaderOutput xlatMtlMain (xlatMtlShaderInput _mtl_i [[stage_in]], constant xlatMtlShaderUniform& _mtl_u [[buffer(0)]]) { xlatMtlShaderOutput _mtl_o; float4 tmpvar_1 = 0; tmpvar_1.w = 1.0; tmpvar_1.xyz = _mtl_i.a_position; _mtl_o.gl_Position = (_mtl_u.u_modelViewProj * tmpvar_1); float4 tmpvar_2 = 0; tmpvar_2.w = 0.0; tmpvar_2.xyz = ((_mtl_i.a_normal * 2.0) + -1.0); _mtl_o.v_normal = ((normalize( (_mtl_u.u_model[0] * tmpvar_2) .xyz) * 0.5) + 0.5); return _mtl_o; }