blob: 14b29e61e499f4a83fd3aff2572ed1cc40e41ecb [file] [log] [blame]
Ethan Nicholas0274b302017-07-14 16:17:04 -04001/*
2 * Copyright 2017 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
Ethan Nicholasaae47c82017-11-10 15:34:03 -05008enum class Mode {
9 kGaussian = 0,
10 kSmoothStep = 1
11};
Ethan Nicholas0274b302017-07-14 16:17:04 -040012
Ethan Nicholasaae47c82017-11-10 15:34:03 -050013layout(key) in Mode mode;
Ethan Nicholas0274b302017-07-14 16:17:04 -040014
15void main() {
Ethan Nicholasf7b88202017-09-18 14:10:39 -040016 half factor = 1.0 - sk_InColor.a;
Ethan Nicholas0274b302017-07-14 16:17:04 -040017 @switch (mode) {
Ethan Nicholasaae47c82017-11-10 15:34:03 -050018 case Mode::kGaussian:
Ethan Nicholas0274b302017-07-14 16:17:04 -040019 factor = exp(-factor * factor * 4.0) - 0.018;
20 break;
Ethan Nicholasaae47c82017-11-10 15:34:03 -050021 case Mode::kSmoothStep:
Ethan Nicholas0274b302017-07-14 16:17:04 -040022 factor = smoothstep(1.0, 0.0, factor);
23 break;
24 }
Ethan Nicholasf7b88202017-09-18 14:10:39 -040025 sk_OutColor = half4(factor);
Ethan Nicholas0274b302017-07-14 16:17:04 -040026}