Opera のベクター描画ライブラリ

Opera の Core チームのブログで去年の6月に書かれた記事に、Hardware acceleration という、おもしろいビデオ付きのものがあった。それについてもうちょっと詳しい話が登場したので読んでみた。

僕自身があまり詳しくないのでわからないのだが、グラフィックカードに保存したイメージを読み出すのは遅い処理であり、Opera で開発している解決方法は Opera の UI も含めて全部をハードウェアにレンダリングすることらしい。

ハードウェアにレンダリングというのがまったく意味不明なのだが、これによって、CPU の負荷を増やさずに素敵な画面効果が得られるらしい。

このベクター描画の技術は Vega というコードネーム (?) で呼ばれていて、 などの描画で既に (おそらく Opera 9.63 時点で) 使われているらしい。

これを開発している理由は次の3つであると、今回の記事にあった。

  • CSS3 のバックグラウンドとボーダーの仕様が、ベクターで処理するのに適している。
  • SVGcanvas をハードウェアにレンダリングするためには、ベクター描画したものをスクリーンに直接描画する必要がある。(グラフィックカードを経由するのは遅いため)
  • ウェブページと UI に高度な効果を付けやすくなる。

Presto 2.3 では Opera の全ての部分を Vega を使って描画することが可能になるらしい。(Opera 10 は Presto 2.2 なので、その次のバージョン)

この恩恵は以下の要件を満たすグラフィックカードで受けることができ、それ以外のハードウェア (モバイル機器などを含む) では Vega のソフトウェア描画*1部分を使うことになるらしい。

  • 高速な stencil buffer を持っている。
    • つまり、カクカクのポリゴン (tessellate) の描写ではなく滑らかな描写が出来ないといけない。
    • デスクトップでは問題ないがモバイル機器では問題のあるものもある。
  • Framebuffer object (FBO) をサポートしている。
    • opacity などは、スクリーン以外のバッファにも描画しないといけないため。
  • OpenGL の pixel shaders 2.0 (fragment shaders 2.0) と GLSL。
    • のテキストシャドウやボックスシャドウ、SVGblur や color transform などに必要。

というわけで、最後のほうはほとんど理解不能だったけど、PC では DirectX 9 対応のグラフィックカードなら大丈夫らしい。

しかし Presto 2.3 とはいつになるんだろうか?

*1:ハードウェア描画に対して