Skip to content

Render exclude and WebKit xor masks - #514

Merged
wieslawsoltes merged 1 commit into
mainfrom
feature/css-mask-exclude-506
Sep 19, 2026
Merged

wieslawsoltes merged 1 commit into
mainfrom
feature/css-mask-exclude-506

Conversation

@wieslawsoltes

Copy link
Copy Markdown
Collaborator

Problem and result

Code OSS ring masks use standard exclude and WebKit xor, while the retained mask path accepted only additive layers. This change preserves authored CSSOM spelling, normalizes both values to an explicit retained exclude operation, and adds webscene-mask-v3 with a per-layer composite field.

Avalonia and Flutter now paint the bottom mask first, combine upper layers with source-over or xor, and apply the completed alpha surface to the element once. V2 additive resources remain compatible; subtract/intersect and malformed values fail closed. Native, portable CSS/WPT, alias, ordering, and metadata contracts are authored.

AppScene packaged consumption is tracked by SceneTech/AppScene#178.

Closes #506

Validation

  • git diff --check passed.
  • Builds, tests, WPT execution, pixels, performance, memory, lifecycle, packaging, and full CI were intentionally deferred under the current fast-merge directive.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement exclude and WebKit xor mask compositing

1 participant