John Stiles | 2b788b1 | 2020-09-21 17:01:22 -0400 | [diff] [blame] | 1 | #version 400 |
John Stiles | aeae3a5 | 2020-09-25 13:35:58 -0400 | [diff] [blame] | 2 | out vec4 sk_FragColor; |
John Stiles | 9b9415e | 2020-11-23 14:48:06 -0500 | [diff] [blame] | 3 | vec3 _blend_set_color_saturation_helper(vec3 minMidMax, float sat) { |
| 4 | return minMidMax.x < minMidMax.z ? vec3(0.0, (sat * (minMidMax.y - minMidMax.x)) / (minMidMax.z - minMidMax.x), sat) : vec3(0.0); |
| 5 | } |
Brian Osman | c021360 | 2020-10-06 14:43:32 -0400 | [diff] [blame] | 6 | in vec4 src; |
| 7 | in vec4 dst; |
John Stiles | aeae3a5 | 2020-09-25 13:35:58 -0400 | [diff] [blame] | 8 | void main() { |
John Stiles | e8e4aca | 2020-12-15 17:50:21 -0500 | [diff] [blame] | 9 | float _1_alpha; |
| 10 | vec3 _2_sda; |
| 11 | vec3 _3_dsa; |
| 12 | _1_alpha = dst.w * src.w; |
| 13 | _2_sda = src.xyz * dst.w; |
| 14 | _3_dsa = dst.xyz * src.w; |
Brian Osman | 2e25ff4 | 2020-10-15 10:32:04 -0400 | [diff] [blame] | 15 | |
John Stiles | 345d721 | 2020-12-15 18:06:29 -0500 | [diff] [blame^] | 16 | vec3 _4_blend_set_color_saturation; |
| 17 | float _5_sat; |
| 18 | _5_sat = max(max(_3_dsa.x, _3_dsa.y), _3_dsa.z) - min(min(_3_dsa.x, _3_dsa.y), _3_dsa.z); |
John Stiles | d059005 | 2020-12-15 15:21:03 -0500 | [diff] [blame] | 19 | |
| 20 | if (_2_sda.x <= _2_sda.y) { |
| 21 | if (_2_sda.y <= _2_sda.z) { |
John Stiles | 345d721 | 2020-12-15 18:06:29 -0500 | [diff] [blame^] | 22 | _4_blend_set_color_saturation = _blend_set_color_saturation_helper(_2_sda, _5_sat); |
John Stiles | d059005 | 2020-12-15 15:21:03 -0500 | [diff] [blame] | 23 | } else if (_2_sda.x <= _2_sda.z) { |
John Stiles | 345d721 | 2020-12-15 18:06:29 -0500 | [diff] [blame^] | 24 | _4_blend_set_color_saturation = _blend_set_color_saturation_helper(_2_sda.xzy, _5_sat).xzy; |
John Stiles | d059005 | 2020-12-15 15:21:03 -0500 | [diff] [blame] | 25 | } else { |
John Stiles | 345d721 | 2020-12-15 18:06:29 -0500 | [diff] [blame^] | 26 | _4_blend_set_color_saturation = _blend_set_color_saturation_helper(_2_sda.zxy, _5_sat).yzx; |
Brian Osman | 2e25ff4 | 2020-10-15 10:32:04 -0400 | [diff] [blame] | 27 | } |
John Stiles | d059005 | 2020-12-15 15:21:03 -0500 | [diff] [blame] | 28 | } else if (_2_sda.x <= _2_sda.z) { |
John Stiles | 345d721 | 2020-12-15 18:06:29 -0500 | [diff] [blame^] | 29 | _4_blend_set_color_saturation = _blend_set_color_saturation_helper(_2_sda.yxz, _5_sat).yxz; |
John Stiles | d059005 | 2020-12-15 15:21:03 -0500 | [diff] [blame] | 30 | } else if (_2_sda.y <= _2_sda.z) { |
John Stiles | 345d721 | 2020-12-15 18:06:29 -0500 | [diff] [blame^] | 31 | _4_blend_set_color_saturation = _blend_set_color_saturation_helper(_2_sda.yzx, _5_sat).zxy; |
John Stiles | d059005 | 2020-12-15 15:21:03 -0500 | [diff] [blame] | 32 | } else { |
John Stiles | 345d721 | 2020-12-15 18:06:29 -0500 | [diff] [blame^] | 33 | _4_blend_set_color_saturation = _blend_set_color_saturation_helper(_2_sda.zyx, _5_sat).zyx; |
John Stiles | bc0c29e | 2020-09-28 13:13:40 -0400 | [diff] [blame] | 34 | } |
John Stiles | d059005 | 2020-12-15 15:21:03 -0500 | [diff] [blame] | 35 | |
John Stiles | 345d721 | 2020-12-15 18:06:29 -0500 | [diff] [blame^] | 36 | float _7_lum; |
| 37 | vec3 _8_result; |
| 38 | float _9_minComp; |
| 39 | float _10_maxComp; |
| 40 | _7_lum = dot(vec3(0.30000001192092896, 0.5899999737739563, 0.10999999940395355), _3_dsa); |
John Stiles | d059005 | 2020-12-15 15:21:03 -0500 | [diff] [blame] | 41 | |
John Stiles | 345d721 | 2020-12-15 18:06:29 -0500 | [diff] [blame^] | 42 | _8_result = (_7_lum - dot(vec3(0.30000001192092896, 0.5899999737739563, 0.10999999940395355), _4_blend_set_color_saturation)) + _4_blend_set_color_saturation; |
John Stiles | d059005 | 2020-12-15 15:21:03 -0500 | [diff] [blame] | 43 | |
John Stiles | 345d721 | 2020-12-15 18:06:29 -0500 | [diff] [blame^] | 44 | _9_minComp = min(min(_8_result.x, _8_result.y), _8_result.z); |
| 45 | _10_maxComp = max(max(_8_result.x, _8_result.y), _8_result.z); |
| 46 | if (_9_minComp < 0.0 && _7_lum != _9_minComp) { |
| 47 | _8_result = _7_lum + ((_8_result - _7_lum) * _7_lum) / (_7_lum - _9_minComp); |
John Stiles | d059005 | 2020-12-15 15:21:03 -0500 | [diff] [blame] | 48 | } |
John Stiles | d059005 | 2020-12-15 15:21:03 -0500 | [diff] [blame] | 49 | |
John Stiles | 345d721 | 2020-12-15 18:06:29 -0500 | [diff] [blame^] | 50 | sk_FragColor = vec4(((((_10_maxComp > _1_alpha && _10_maxComp != _7_lum ? _7_lum + ((_8_result - _7_lum) * (_1_alpha - _7_lum)) / (_10_maxComp - _7_lum) : _8_result) + dst.xyz) - _3_dsa) + src.xyz) - _2_sda, (src.w + dst.w) - _1_alpha); |
John Stiles | d059005 | 2020-12-15 15:21:03 -0500 | [diff] [blame] | 51 | |
| 52 | |
| 53 | |
John Stiles | 2b788b1 | 2020-09-21 17:01:22 -0400 | [diff] [blame] | 54 | } |