Skip to content

Commit 7a9f3c7

Browse files
authored
Factor destination alpha into color blend output (flutter#36338)
1 parent 799c589 commit 7a9f3c7

File tree

4 files changed

+4
-6
lines changed

4 files changed

+4
-6
lines changed

impeller/entity/entity.cc

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@
1616

1717
namespace impeller {
1818

19-
const BlendMode Entity::kLastPipelineBlendMode = BlendMode::kModulate;
20-
const BlendMode Entity::kLastAdvancedBlendMode = BlendMode::kLuminosity;
21-
2219
Entity::Entity() = default;
2320

2421
Entity::~Entity() = default;

impeller/entity/entity.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ class RenderPass;
1919

2020
class Entity {
2121
public:
22-
static const BlendMode kLastPipelineBlendMode;
23-
static const BlendMode kLastAdvancedBlendMode;
22+
static constexpr BlendMode kLastPipelineBlendMode = BlendMode::kModulate;
23+
static constexpr BlendMode kLastAdvancedBlendMode = BlendMode::kLuminosity;
2424

2525
/// An enum to define how to repeat, fold, or omit colors outside of the
2626
/// typically defined range of the source of the colors (such as the

impeller/entity/entity_unittests.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -662,6 +662,7 @@ TEST_P(EntityTest, BlendingModeOptions) {
662662
static_assert(b == BlendMode::kClear); // Ensure the first item in
663663
// the switch is the first
664664
// item in the enum.
665+
static_assert(Entity::kLastPipelineBlendMode == BlendMode::kModulate);
665666
switch (b) {
666667
case BlendMode::kClear:
667668
blend_mode_names.push_back("Clear");

impeller/entity/shaders/blending/advanced_blend.glsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,5 +40,5 @@ void main() {
4040

4141
vec3 blended = Blend(dst.rgb, src.rgb);
4242

43-
frag_color = vec4(blended * src.a, src.a);
43+
frag_color = vec4(blended, 1) * src.a * dst.a;
4444
}

0 commit comments

Comments
 (0)