OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/output/shader.h" | 5 #include "cc/output/shader.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 1416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1427 } | 1427 } |
1428 | 1428 |
1429 std::string FragmentShaderRGBATexAlphaMask::GetShaderString( | 1429 std::string FragmentShaderRGBATexAlphaMask::GetShaderString( |
1430 TexCoordPrecision precision, | 1430 TexCoordPrecision precision, |
1431 SamplerType sampler) const { | 1431 SamplerType sampler) const { |
1432 // clang-format off | 1432 // clang-format off |
1433 return FRAGMENT_SHADER( | 1433 return FRAGMENT_SHADER( |
1434 // clang-format on | 1434 // clang-format on |
1435 precision mediump float; | 1435 precision mediump float; |
1436 varying TexCoordPrecision vec2 v_texCoord; | 1436 varying TexCoordPrecision vec2 v_texCoord; |
1437 uniform SamplerType s_texture; | 1437 uniform sampler2D s_texture; |
1438 uniform SamplerType s_mask; | 1438 uniform SamplerType s_mask; |
1439 uniform TexCoordPrecision vec2 maskTexCoordScale; | 1439 uniform TexCoordPrecision vec2 maskTexCoordScale; |
1440 uniform TexCoordPrecision vec2 maskTexCoordOffset; | 1440 uniform TexCoordPrecision vec2 maskTexCoordOffset; |
1441 uniform float alpha; | 1441 uniform float alpha; |
1442 void main() { | 1442 void main() { |
1443 vec4 texColor = TextureLookup(s_texture, v_texCoord); | 1443 vec4 texColor = texture2D(s_texture, v_texCoord); |
1444 TexCoordPrecision vec2 maskTexCoord = | 1444 TexCoordPrecision vec2 maskTexCoord = |
1445 vec2(maskTexCoordOffset.x + v_texCoord.x * maskTexCoordScale.x, | 1445 vec2(maskTexCoordOffset.x + v_texCoord.x * maskTexCoordScale.x, |
1446 maskTexCoordOffset.y + v_texCoord.y * maskTexCoordScale.y); | 1446 maskTexCoordOffset.y + v_texCoord.y * maskTexCoordScale.y); |
1447 vec4 maskColor = TextureLookup(s_mask, maskTexCoord); | 1447 vec4 maskColor = TextureLookup(s_mask, maskTexCoord); |
1448 gl_FragColor = ApplyBlendMode(texColor * alpha * maskColor.w); | 1448 gl_FragColor = ApplyBlendMode(texColor * alpha * maskColor.w); |
1449 } | 1449 } |
1450 // clang-format off | 1450 // clang-format off |
1451 ); // NOLINT(whitespace/parens) | 1451 ); // NOLINT(whitespace/parens) |
1452 // clang-format on | 1452 // clang-format on |
1453 } | 1453 } |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1487 BLEND_MODE_SET_LOCATIONS(locations, 5); | 1487 BLEND_MODE_SET_LOCATIONS(locations, 5); |
1488 } | 1488 } |
1489 | 1489 |
1490 std::string FragmentShaderRGBATexAlphaMaskAA::GetShaderString( | 1490 std::string FragmentShaderRGBATexAlphaMaskAA::GetShaderString( |
1491 TexCoordPrecision precision, | 1491 TexCoordPrecision precision, |
1492 SamplerType sampler) const { | 1492 SamplerType sampler) const { |
1493 // clang-format off | 1493 // clang-format off |
1494 return FRAGMENT_SHADER( | 1494 return FRAGMENT_SHADER( |
1495 // clang-format on | 1495 // clang-format on |
1496 precision mediump float; | 1496 precision mediump float; |
1497 uniform SamplerType s_texture; | 1497 uniform sampler2D s_texture; |
1498 uniform SamplerType s_mask; | 1498 uniform SamplerType s_mask; |
1499 uniform TexCoordPrecision vec2 maskTexCoordScale; | 1499 uniform TexCoordPrecision vec2 maskTexCoordScale; |
1500 uniform TexCoordPrecision vec2 maskTexCoordOffset; | 1500 uniform TexCoordPrecision vec2 maskTexCoordOffset; |
1501 uniform float alpha; | 1501 uniform float alpha; |
1502 varying TexCoordPrecision vec2 v_texCoord; | 1502 varying TexCoordPrecision vec2 v_texCoord; |
1503 varying TexCoordPrecision vec4 edge_dist[2]; // 8 edge distances. | 1503 varying TexCoordPrecision vec4 edge_dist[2]; // 8 edge distances. |
1504 | 1504 |
1505 void main() { | 1505 void main() { |
1506 vec4 texColor = TextureLookup(s_texture, v_texCoord); | 1506 vec4 texColor = texture2D(s_texture, v_texCoord); |
1507 TexCoordPrecision vec2 maskTexCoord = | 1507 TexCoordPrecision vec2 maskTexCoord = |
1508 vec2(maskTexCoordOffset.x + v_texCoord.x * maskTexCoordScale.x, | 1508 vec2(maskTexCoordOffset.x + v_texCoord.x * maskTexCoordScale.x, |
1509 maskTexCoordOffset.y + v_texCoord.y * maskTexCoordScale.y); | 1509 maskTexCoordOffset.y + v_texCoord.y * maskTexCoordScale.y); |
1510 vec4 maskColor = TextureLookup(s_mask, maskTexCoord); | 1510 vec4 maskColor = TextureLookup(s_mask, maskTexCoord); |
1511 vec4 d4 = min(edge_dist[0], edge_dist[1]); | 1511 vec4 d4 = min(edge_dist[0], edge_dist[1]); |
1512 vec2 d2 = min(d4.xz, d4.yw); | 1512 vec2 d2 = min(d4.xz, d4.yw); |
1513 float aa = clamp(gl_FragCoord.w * min(d2.x, d2.y), 0.0, 1.0); | 1513 float aa = clamp(gl_FragCoord.w * min(d2.x, d2.y), 0.0, 1.0); |
1514 gl_FragColor = ApplyBlendMode(texColor * alpha * maskColor.w * aa); | 1514 gl_FragColor = ApplyBlendMode(texColor * alpha * maskColor.w * aa); |
1515 } | 1515 } |
1516 // clang-format off | 1516 // clang-format off |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1560 BLEND_MODE_SET_LOCATIONS(locations, 7); | 1560 BLEND_MODE_SET_LOCATIONS(locations, 7); |
1561 } | 1561 } |
1562 | 1562 |
1563 std::string FragmentShaderRGBATexAlphaMaskColorMatrixAA::GetShaderString( | 1563 std::string FragmentShaderRGBATexAlphaMaskColorMatrixAA::GetShaderString( |
1564 TexCoordPrecision precision, | 1564 TexCoordPrecision precision, |
1565 SamplerType sampler) const { | 1565 SamplerType sampler) const { |
1566 // clang-format off | 1566 // clang-format off |
1567 return FRAGMENT_SHADER( | 1567 return FRAGMENT_SHADER( |
1568 // clang-format on | 1568 // clang-format on |
1569 precision mediump float; | 1569 precision mediump float; |
1570 uniform SamplerType s_texture; | 1570 uniform sampler2D s_texture; |
1571 uniform SamplerType s_mask; | 1571 uniform SamplerType s_mask; |
1572 uniform vec2 maskTexCoordScale; | 1572 uniform vec2 maskTexCoordScale; |
1573 uniform vec2 maskTexCoordOffset; | 1573 uniform vec2 maskTexCoordOffset; |
1574 uniform mat4 colorMatrix; | 1574 uniform mat4 colorMatrix; |
1575 uniform vec4 colorOffset; | 1575 uniform vec4 colorOffset; |
1576 uniform float alpha; | 1576 uniform float alpha; |
1577 varying TexCoordPrecision vec2 v_texCoord; | 1577 varying TexCoordPrecision vec2 v_texCoord; |
1578 varying TexCoordPrecision vec4 edge_dist[2]; // 8 edge distances. | 1578 varying TexCoordPrecision vec4 edge_dist[2]; // 8 edge distances. |
1579 | 1579 |
1580 void main() { | 1580 void main() { |
1581 vec4 texColor = TextureLookup(s_texture, v_texCoord); | 1581 vec4 texColor = texture2D(s_texture, v_texCoord); |
1582 float nonZeroAlpha = max(texColor.a, 0.00001); | 1582 float nonZeroAlpha = max(texColor.a, 0.00001); |
1583 texColor = vec4(texColor.rgb / nonZeroAlpha, nonZeroAlpha); | 1583 texColor = vec4(texColor.rgb / nonZeroAlpha, nonZeroAlpha); |
1584 texColor = colorMatrix * texColor + colorOffset; | 1584 texColor = colorMatrix * texColor + colorOffset; |
1585 texColor.rgb *= texColor.a; | 1585 texColor.rgb *= texColor.a; |
1586 texColor = clamp(texColor, 0.0, 1.0); | 1586 texColor = clamp(texColor, 0.0, 1.0); |
1587 TexCoordPrecision vec2 maskTexCoord = | 1587 TexCoordPrecision vec2 maskTexCoord = |
1588 vec2(maskTexCoordOffset.x + v_texCoord.x * maskTexCoordScale.x, | 1588 vec2(maskTexCoordOffset.x + v_texCoord.x * maskTexCoordScale.x, |
1589 maskTexCoordOffset.y + v_texCoord.y * maskTexCoordScale.y); | 1589 maskTexCoordOffset.y + v_texCoord.y * maskTexCoordScale.y); |
1590 vec4 maskColor = TextureLookup(s_mask, maskTexCoord); | 1590 vec4 maskColor = TextureLookup(s_mask, maskTexCoord); |
1591 vec4 d4 = min(edge_dist[0], edge_dist[1]); | 1591 vec4 d4 = min(edge_dist[0], edge_dist[1]); |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1698 } | 1698 } |
1699 | 1699 |
1700 std::string FragmentShaderRGBATexAlphaMaskColorMatrix::GetShaderString( | 1700 std::string FragmentShaderRGBATexAlphaMaskColorMatrix::GetShaderString( |
1701 TexCoordPrecision precision, | 1701 TexCoordPrecision precision, |
1702 SamplerType sampler) const { | 1702 SamplerType sampler) const { |
1703 // clang-format off | 1703 // clang-format off |
1704 return FRAGMENT_SHADER( | 1704 return FRAGMENT_SHADER( |
1705 // clang-format on | 1705 // clang-format on |
1706 precision mediump float; | 1706 precision mediump float; |
1707 varying TexCoordPrecision vec2 v_texCoord; | 1707 varying TexCoordPrecision vec2 v_texCoord; |
1708 uniform SamplerType s_texture; | 1708 uniform sampler2D s_texture; |
1709 uniform SamplerType s_mask; | 1709 uniform SamplerType s_mask; |
1710 uniform vec2 maskTexCoordScale; | 1710 uniform vec2 maskTexCoordScale; |
1711 uniform vec2 maskTexCoordOffset; | 1711 uniform vec2 maskTexCoordOffset; |
1712 uniform mat4 colorMatrix; | 1712 uniform mat4 colorMatrix; |
1713 uniform vec4 colorOffset; | 1713 uniform vec4 colorOffset; |
1714 uniform float alpha; | 1714 uniform float alpha; |
1715 void main() { | 1715 void main() { |
1716 vec4 texColor = TextureLookup(s_texture, v_texCoord); | 1716 vec4 texColor = texture2D(s_texture, v_texCoord); |
1717 float nonZeroAlpha = max(texColor.a, 0.00001); | 1717 float nonZeroAlpha = max(texColor.a, 0.00001); |
1718 texColor = vec4(texColor.rgb / nonZeroAlpha, nonZeroAlpha); | 1718 texColor = vec4(texColor.rgb / nonZeroAlpha, nonZeroAlpha); |
1719 texColor = colorMatrix * texColor + colorOffset; | 1719 texColor = colorMatrix * texColor + colorOffset; |
1720 texColor.rgb *= texColor.a; | 1720 texColor.rgb *= texColor.a; |
1721 texColor = clamp(texColor, 0.0, 1.0); | 1721 texColor = clamp(texColor, 0.0, 1.0); |
1722 TexCoordPrecision vec2 maskTexCoord = | 1722 TexCoordPrecision vec2 maskTexCoord = |
1723 vec2(maskTexCoordOffset.x + v_texCoord.x * maskTexCoordScale.x, | 1723 vec2(maskTexCoordOffset.x + v_texCoord.x * maskTexCoordScale.x, |
1724 maskTexCoordOffset.y + v_texCoord.y * maskTexCoordScale.y); | 1724 maskTexCoordOffset.y + v_texCoord.y * maskTexCoordScale.y); |
1725 vec4 maskColor = TextureLookup(s_mask, maskTexCoord); | 1725 vec4 maskColor = TextureLookup(s_mask, maskTexCoord); |
1726 gl_FragColor = ApplyBlendMode(texColor * alpha * maskColor.w); | 1726 gl_FragColor = ApplyBlendMode(texColor * alpha * maskColor.w); |
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1979 vec2 coord = mod(floor(texCoord * frequency * 2.0), 2.0); | 1979 vec2 coord = mod(floor(texCoord * frequency * 2.0), 2.0); |
1980 float picker = abs(coord.x - coord.y); // NOLINT | 1980 float picker = abs(coord.x - coord.y); // NOLINT |
1981 gl_FragColor = mix(color1, color2, picker) * alpha; | 1981 gl_FragColor = mix(color1, color2, picker) * alpha; |
1982 } | 1982 } |
1983 // clang-format off | 1983 // clang-format off |
1984 ); // NOLINT(whitespace/parens) | 1984 ); // NOLINT(whitespace/parens) |
1985 // clang-format on | 1985 // clang-format on |
1986 } | 1986 } |
1987 | 1987 |
1988 } // namespace cc | 1988 } // namespace cc |
OLD | NEW |