// Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. uniform FrameInfo { mat4 mvp; } frame_info; // This attribute layout is expected to be identical to that within // `impeller/scene/importer/scene.fbs`. in vec3 position; in vec3 normal; in vec4 tangent; in vec2 texture_coords; in vec4 color; out vec3 v_position; out mat3 v_tangent_space; out vec2 v_texture_coords; out vec4 v_color; void main() { gl_Position = frame_info.mvp * vec4(position, 1.0); v_position = gl_Position.xyz; vec3 lh_tangent = tangent.xyz * tangent.w; v_tangent_space = mat3(frame_info.mvp) * mat3(lh_tangent, cross(normal, lh_tangent), normal); v_texture_coords = texture_coords; v_color = color; }