[Webkit-unassigned] [Bug 235757] When interpolating between transform lists partial prefix matches should not use matrix interpolation

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Fri Feb 4 01:12:15 PST 2022


https://bugs.webkit.org/show_bug.cgi?id=235757

--- Comment #2 from Martin Robinson <mrobinson at webkit.org> ---
The tricky thing here is mapping the CSS model onto CoreAnimation. For the TextureMapper there isn't an issue because animations are done by calling directly into TransformOperations::blend at each animation tick. On the CoreAnimation side, animations are constructed by stepping through the index of each transform function and constructing an animation for this function across all keyframes.

This will need to change, because the CSS specification only considers interpolation between any two frames. So for instance in this case:

Keyframe 1: translate(...) rotate(...) perspective(...)
Keyframe 2: translate(...) scale(...) translate(...)
Keyframe 3: translate(...) scale(...) rotate(...)

Between keyframe 1 and 2 the computed operations should use the following set of operations (with interpolated arguments):

translate(...) matrix(...)

where matrix is a matrix decomposition and interpolation of the remaining functions. Yet between keyframe 2 and 3 the computed operations are:

translate(...) scale(...) matrix(...)

An option is to only break out transform functions shared across all frames and then use matrix interpolation for the rest. The issue is that this still has the potential to lose full rotations where the specification says we shouldn't, also meaning the displayed contents will be different than the CSS computed values.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20220204/bd17ded6/attachment.htm>


More information about the webkit-unassigned mailing list