)]}'
{
  "commit": "90d48e1e4a7297b03631cae7a7b06f469ce684ce",
  "tree": "e0512186be43cd312aec6aee09bd0f60a3933fdf",
  "parents": [
    "680f97b5a0b4117c1724e19207c96982681a0964"
  ],
  "author": {
    "name": "Brandon DeRosier",
    "email": "bdero@google.com",
    "time": "Tue Jun 27 16:04:41 2023 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Jun 27 16:04:41 2023 -0700"
  },
  "message": "[Impeller] Correct advanced blending behavior. (#43283)\n\nInvestigated as part of\r\nhttps://github.com/flutter/flutter/issues/127232.\r\n\r\nThis took some time to work out, but:\r\n* The amount of blending applied to the source color needs to be\r\nweighted by the destination alpha, which is pretty sensible behavior.\r\nThis is in addition to applying source-over behavior with the resulting\r\nblended color.\r\n* All of the blend functions assume that the color is already\r\npremultiplied, so remove the unpremultiply/premultiply surrounding the\r\nblend call.\r\n\r\nAll of the blend modes now visually match up with the [Flutter\r\ndocs](https://api.flutter.dev/flutter/dart-ui/BlendMode.html), except\r\nfor ColorBurn and Saturation, which appear to have a slight\r\nmiscalculation going on with the red channel.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d60e9237e1a8646077f95856de2cecc19d2c2224",
      "old_mode": 33188,
      "old_path": "impeller/entity/shaders/blending/advanced_blend.glsl",
      "new_id": "c2e26d59bf7b318563d01e6946dafb86f34fdc38",
      "new_mode": 33188,
      "new_path": "impeller/entity/shaders/blending/advanced_blend.glsl"
    },
    {
      "type": "modify",
      "old_id": "5758fc3e058d913101f45f7157a9aa6529d3d8eb",
      "old_mode": 33188,
      "old_path": "impeller/entity/shaders/blending/ios/framebuffer_blend.glsl",
      "new_id": "f67506b5603e2dea03ac36f77eb879fdd809af10",
      "new_mode": 33188,
      "new_path": "impeller/entity/shaders/blending/ios/framebuffer_blend.glsl"
    },
    {
      "type": "modify",
      "old_id": "043fd8519fbf147f9d066008b7da641bed6d4b5a",
      "old_mode": 33188,
      "old_path": "impeller/tools/malioc.json",
      "new_id": "af1046a384828733445ae6fff08bf7d89debc2f4",
      "new_mode": 33188,
      "new_path": "impeller/tools/malioc.json"
    }
  ]
}
