Opera のベクター描画ライブラリ
Opera の Core チームのブログで去年の6月に書かれた記事に、Hardware acceleration という、おもしろいビデオ付きのものがあった。それについてもうちょっと詳しい話が登場したので読んでみた。
- Graphics demos - By Opera Core Concerns の下半分にビデオあり
- Vega - Opera's vector graphics library - By Opera Core Concerns
僕自身があまり詳しくないのでわからないのだが、グラフィックカードに保存したイメージを読み出すのは遅い処理であり、Opera で開発している解決方法は Opera の UI も含めて全部をハードウェアにレンダリングすることらしい。
ハードウェアにレンダリングというのがまったく意味不明なのだが、これによって、CPU の負荷を増やさずに素敵な画面効果が得られるらしい。
このベクター描画の技術は Vega というコードネーム (?) で呼ばれていて、
これを開発している理由は次の3つであると、今回の記事にあった。
- CSS3 のバックグラウンドとボーダーの仕様が、ベクターで処理するのに適している。
- SVG や canvas をハードウェアにレンダリングするためには、ベクター描画したものをスクリーンに直接描画する必要がある。(グラフィックカードを経由するのは遅いため)
- ウェブページと 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。
というわけで、最後のほうはほとんど理解不能だったけど、PC では DirectX 9 対応のグラフィックカードなら大丈夫らしい。
しかし Presto 2.3 とはいつになるんだろうか?
*1:ハードウェア描画に対して