| // 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. |
| |
| #include <impeller/types.glsl> |
| |
| uniform sampler2D glyph_atlas_sampler; |
| |
| uniform FragInfo { |
| vec2 atlas_size; |
| vec4 text_color; |
| } |
| frag_info; |
| |
| in vec2 v_unit_position; |
| in vec2 v_source_position; |
| in vec2 v_source_glyph_size; |
| in float v_has_color; |
| |
| out vec4 frag_color; |
| |
| void main() { |
| vec2 uv_size = v_source_glyph_size / frag_info.atlas_size; |
| vec2 offset = v_source_position / frag_info.atlas_size; |
| if (v_has_color == 1.0) { |
| frag_color = |
| texture(glyph_atlas_sampler, v_unit_position * uv_size + offset); |
| } else { |
| frag_color = |
| texture(glyph_atlas_sampler, v_unit_position * uv_size + offset).aaaa * |
| frag_info.text_color; |
| } |
| } |