다음을 통해 공유


WPF 3.5 SP1 (Beta) GPUベースのカスタムエフェクトはどんな Visual にも適用できる

先週書いた.NET Framework 3.5 SP1 の GPU ベースのカスタムエフェクトのサンプルをちょっといじるだけで、ModelVisual3DにもMediaElementにも同じエフェクトが適用できます。

Window1.xaml の <Image Name="image1" Stretch="Uniform" Source="Creek.jpg" />を書き換えるだけです。

<MediaElement Source="Bear.wmv" LoadedBehavior="Play" />に書き換えると(もちろんプロジェクトにこのファイルを追加してから)次のようにビデオにエンボスのリアルタイム エフェクトが追加できます。

 

同じくViewport3Dにして回転するティーポットを描画すると、次のようになります。

XAMLをよく見ると、<Image>の親である<Grid>にエフェクトが適用されているので、当然と言えば当然ですが、動画や3Dのような動的なコンテンツにもリアルタイムでカスタムエフェクトが適用できるのは、なかなか魅力的です。エッジ検出による線画や階調シェーディングによるトゥーン レンダリングなどにも適用できると思います。

Greg Scheterのブログにも書いてありますが、fxファイルのHLSLからピクセル シェーダ バイトコードにコンパイルするには、DirectX SDKをダウンロードして、次のようにコマンドラインで fxc を使う必要があります。

>fxc /T ps_2_0 /E main /Fo cc.ps cc.fx

HLSLの日本語リファレンスなどは DirectX SDK 日本語ドキュメント2004年版をダウンロードしてください。