| // Copyright 2017 Google Inc. All Rights Reserved. | |
| // | |
| // Licensed under the Apache License, Version 2.0 (the "License"); | |
| // you may not use this file except in compliance with the License. | |
| // You may obtain a copy of the License at | |
| // | |
| // http://www.apache.org/licenses/LICENSE-2.0 | |
| // | |
| // Unless required by applicable law or agreed to in writing, software | |
| // distributed under the License is distributed on an "AS IS" BASIS, | |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| // See the License for the specific language governing permissions and | |
| // limitations under the License. | |
| precision mediump float; | |
| // A rounded rect is represented by a vec4 specifying (min.xy, max.xy), and a | |
| // matrix of corners. Each vector in the matrix represents a corner (order: | |
| // top left, top right, bottom left, bottom right). Each corner vec4 represents | |
| // (start.xy, radius.xy). | |
| uniform vec4 u_inner_rect; | |
| uniform mat4 u_inner_corners; | |
| uniform vec4 u_outer_rect; | |
| uniform mat4 u_outer_corners; | |
| varying vec2 v_offset; | |
| varying vec4 v_color; | |
| #include "function_is_outside_rrect.inc" | |
| void main() { | |
| float inner_scale = IsOutsideRRect(v_offset, u_inner_rect, u_inner_corners); | |
| float outer_scale = IsOutsideRRect(v_offset, u_outer_rect, u_outer_corners); | |
| gl_FragColor = v_color * (inner_scale * (1.0 - outer_scale)); | |
| } |