#include using namespace metal; struct xlatMtlShaderInput { float4 attrVertex [[attribute(0)]]; half3 attrNormal [[attribute(1)]]; half4 attrTangent [[attribute(2)]]; }; struct xlatMtlShaderOutput { float4 gl_Position [[position]]; half3 varWorldN; half3 varLightDir; half3 varViewDir; }; struct xlatMtlShaderUniform { float4x4 glstate_matrix_mvp; float4x4 _Object2World; float4x4 _World2Object; float3 _WorldSpaceCameraPos; half4 _WorldSpaceLightPos0; float4 unity_Scale; }; vertex xlatMtlShaderOutput xlatMtlMain (xlatMtlShaderInput _mtl_i [[stage_in]], constant xlatMtlShaderUniform& _mtl_u [[buffer(0)]]) { xlatMtlShaderOutput _mtl_o; half3 lightDir_1; float3 worldN_2; half3 tmpvar_3; half3 tmpvar_4; half3 tmpvar_5; float3x3 tmpvar_6; tmpvar_6[0] = _mtl_u._Object2World[0].xyz; tmpvar_6[1] = _mtl_u._Object2World[1].xyz; tmpvar_6[2] = _mtl_u._Object2World[2].xyz; half3 tmpvar_7; tmpvar_7 = ((half3)(tmpvar_6 * (float3)_mtl_i.attrNormal)); worldN_2 = float3(tmpvar_7); tmpvar_5 = half3(worldN_2); half3 tmpvar_8; half3 tmpvar_9; tmpvar_8 = _mtl_i.attrTangent.xyz; tmpvar_9 = (((_mtl_i.attrNormal.yzx * _mtl_i.attrTangent.zxy) - (_mtl_i.attrNormal.zxy * _mtl_i.attrTangent.yzx)) * _mtl_i.attrTangent.w); half3x3 tmpvar_10; tmpvar_10[0].x = tmpvar_8.x; tmpvar_10[0].y = tmpvar_9.x; tmpvar_10[0].z = _mtl_i.attrNormal.x; tmpvar_10[1].x = tmpvar_8.y; tmpvar_10[1].y = tmpvar_9.y; tmpvar_10[1].z = _mtl_i.attrNormal.y; tmpvar_10[2].x = tmpvar_8.z; tmpvar_10[2].y = tmpvar_9.z; tmpvar_10[2].z = _mtl_i.attrNormal.z; float3 tmpvar_11; tmpvar_11 = ((float3)(tmpvar_10 * (half3)(_mtl_u._World2Object * (float4)_mtl_u._WorldSpaceLightPos0).xyz)); lightDir_1 = half3(tmpvar_11); tmpvar_3 = lightDir_1; float4 tmpvar_12; tmpvar_12.w = 1.0; tmpvar_12.xyz = _mtl_u._WorldSpaceCameraPos; float3 tmpvar_13; tmpvar_13 = normalize(((float3)lightDir_1 + normalize( ((float3)(tmpvar_10 * (half3)(((_mtl_u._World2Object * tmpvar_12).xyz * _mtl_u.unity_Scale.w) - _mtl_i.attrVertex.xyz))) ))); tmpvar_4 = half3(tmpvar_13); _mtl_o.gl_Position = (_mtl_u.glstate_matrix_mvp * _mtl_i.attrVertex); _mtl_o.varWorldN = tmpvar_5; _mtl_o.varLightDir = tmpvar_3; _mtl_o.varViewDir = tmpvar_4; return _mtl_o; } // stats: 16 alu 0 tex 0 flow // inputs: 3 // #0: attrVertex (high float) 4x1 [-1] loc 0 // #1: attrNormal (medium float) 3x1 [-1] loc 1 // #2: attrTangent (medium float) 4x1 [-1] loc 2 // uniforms: 6 (total size: 240) // #0: glstate_matrix_mvp (high float) 4x4 [-1] loc 0 // #1: _Object2World (high float) 4x4 [-1] loc 64 // #2: _World2Object (high float) 4x4 [-1] loc 128 // #3: _WorldSpaceCameraPos (high float) 3x1 [-1] loc 192 // #4: _WorldSpaceLightPos0 (low float) 4x1 [-1] loc 208 // #5: unity_Scale (high float) 4x1 [-1] loc 224