디지털 장인정신

블로그 이미지
WebKit개발자의 혼자쓰는 블로그
스페로

Article Category

All (71)
Technology (47)
Creativity (19)
Private (4)

Recent Comment

Recent Trackback

Calendar

«   2018/01   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Archive

My Link

  • Total313,516
  • Today12
  • Yesterday68
  1. 2012.10.23
    WebKit css3 animations on Accelerated Compositing (1)

우선 WebCore의 animation의 구조부터 보자


1. AnimationController

- timer로 animation loop를 돌린다.

- Map<renderer, CompositeAnimation>으로 document의 모든 animation을 관리한다.


2. CompositeAnimation

- Map<name, KeyframeAnimation> 혹은 Map<int, ImplicitAnimation>으로 animation들을 관리한다. 하나의 renderer가 여러 keyframe&transition animation의 적용을 받을수 있기 때문이다.


3. AnimationBase

- RefPtr<Animation> : name, TimingFunction, delay, duration, iterCount 등을 관리


4. KeyframeAnimation extends AnimationBase

-  KeyframeList : keyframe당 style들을 저장. animation하는 CSSPropertyID들도 저장

- RenderStyle : animation되기 전의 style. animation시 keyframe당 style을 이 객체로 부터 복사해서 만든다.

Software path에서는 KeyframeAnimation::animate 메소드로 animation을 blend한다. 그럼 무려 RenderStyle로 blend를 하는 비효율을 보여준다.

AC path에서는 GraphicsLayer.h에 정의되어있는 KeyframeValueList 로 blend를 한다. 아주 효율적이다.

KeyframeValueList는 RenderLayerBacking::startAnimation에서 KeyframeList로부터 만들어낸다. 즉 각 platform GraphicsLayer는 RenderStyle과 관련없는 animation의 정수만 뽑아낸 KeyframeValueList를 받아 알아서 animation을 진행한다.

그럼 transition은 AC에서 어떻게 처리할까? RenderLayerBacking::startTransition이 transition을 keyframe animation처럼 KeyframeValueList 만들어서 GraphicsLayer에 넘겨준다.

즉 AC입장에서는 keyframe animation과 transition의 처리 루틴이 같다.

'Technology > Webkit' 카테고리의 다른 글

Profiling WebKit with Perf  (1) 2012.12.12
High-DPI and viewport and sub pixel layout  (2) 2012.12.11
WebKit css3 animations on Accelerated Compositing  (1) 2012.10.23
WebKit Filters Animation Internal  (1) 2012.10.20
WebKit2 Injected Bundle  (1) 2012.10.15
oprofile  (2) 2012.06.02
Trackback 0 and Comment 1