ページ

2009年3月27日金曜日

[Silverlight] WPF Pixel Shader Effects Library の Silverlight 3 への移植はすでに完了

http://wpffx.codeplex.com/
ここに Windows Presentation Foundation Pixel Shader Effects Library というのがあります。
これは、WPF のピクセルシェーダーエフェクト機能を使っていろいろなエフェクトを実装したライブラリです。
(WPF にピクセルシェーダーエフェクト機能が追加されたのは .NET Framework 3.5 のときでしたっけ?)
↓は画像にエンボスエフェクトをかけたものです。

20090328_PixelShaderEffectsLibrary

で、Silverlight 3 で WPF と同じようなピクセルシェーダーエフェクト機能が追加されるわけですが、
WPF effects Library running in Silverlight 3
によると Silverlight 3 への移植が完了したそうです。
実際に Silverlight 3 beta で動いているものが↓で見れるそうです。
http://www.cookingwithxaml.com/meals/wpfslfx/default.html
  注意: もちろん Silverlight 3 が入って無いと見れません。
左側でエフェクトを選んでパラメータを変えたりできます。
また、右上の 「Start Transition」 をクリックすると切り替え効果 (フェードイン・フェードアウトとかそういうやつ) を見ることができます。

上記の記事によると、WPF から Silverlight 3 への移植には 50 未満の #if SILVERLIGHT で済んだようです。
しかもそのほとんどが UIPropertyMetadata が Silverlight に無いってのと、Vector も無いから Point で代用したくらいのわずかな修正だけみたいです。
あと、ライブラリ本体では使ってませんが、デモで VisualBrush を使っています。Silverlight には VisualBrush も無いので、これは WriteableBitmap を使って代用したそうです。

ソースのフォルダ構成も Silverlight と WPF に分けたそうです。
デモはそれぞれで作ってありますが、ライブラリは Silverlight の方はフォルダがあるだけという感じです。
ソース本体は WPF の方にリンクしていて Silverlight と WPF 共用となっています。

なんか勝手に WPF と Silverlight のピクセルシェーダーエフェクトには互換性が無いと思い込んでたんですが、こうしてみると無いどころかほとんど完璧な互換性があるんですね。

ただ、気になる一文が、、、

SL effects are not hardware accelerated ( due to security) but it performs pretty well on my machine.. Let us know if you see otherwise.

これって 「Silverlight のエフェクトはハードウエアアクセラレータが働かない (セキュリティのため)。しかし、私のマシンではかなりのパフォーマンスだった。もしそうじゃなかったら教えて」 という感じですよね?
あれ?
Silverlight のピクセルシェーダーエフェクトって HLSL 2.0 で書いてるのに実は全部ソフトウエアエミュレーションなの?
てっきり GPU 使ってくれるもんだと思ってた。


0 件のコメント:

コメントを投稿