[WPF]Windows Presentation Foundation Pixel Shader Effects Library


WPFで表示している画像にエフェクトをかける必要がありCPUへの負荷が低い方法を探していました。
CodePlexで公開されているWindows Presentation Foundation Pixel Shader Effects LibraryはPixeal Shaderを使用しており低負荷な動作が期待できます。
サンプルの動作確認時にコンパイルが通らず困ったので、対処方法を含め導入方法を記載します。
1.)コンパイル環境の準備
 以下のツールが必要になりますので、入手しインストールします。
 Shader Effects BuildTask and Templates.zip
 ※CodePlex内のWPF Futuresのページに掲載されています。
 
 Direct X SDK
 ※2010/6/7版でコンパイルすることができました。
 
2.)コンパイル
 WPF版をコンパイルすると以下のエラーが発生します。
 

Error 1 error X5608: Compiled shader code uses too many arithmetic instruction slots (65). Max. allowed by the target (ps_2_0) is 64.

このエラーは以下のフォーラムで改善方法が掲載されています。
https://wpffx.codeplex.com/discussions/73720
この記事によるとripple.fxの38行目を以下のように修正を行えば解決できます。

//float falloff = saturate(1-distance);
float falloff = 1-distance;


3.)修正版ソースコード
 以下からダウンロードしてください。
 PixealEffctLibrary(コンパイルできるようにしたソースコード).zip
4.)デモ画像
 コンパイルしたバイナリを使用して各フィルタの動作を確認しました。
 フィルタをかけた画像は以下となります。
オリジナル画像
original.jpg

BandedSwirlEffect
BandedSwirlEffect.jpg

BloomEffect
BloomEffect.jpg

BrightExtractEffect
BrightExtractEffect.jpg

ColorKeyAlphaEffect
ColorKeyAlphaEffect.jpg

ContrastAdjustEffect
ColorToneEffect.jpg

ContrastAdjustEffect
ContrastAdjustEffect.jpg

DirectionalBlurEffect
DirectionalBlurEffect.jpg

EmbossedEffect
EmbossedEffect.jpg

GloomEffect
GloomEffect.jpg

GrowablePoissonDiskEffect
GrowablePoissonDiskEffect.jpg

InvertColorEffect
InvertColorEffect.jpg

LightStreakEffect
LightStreakEffect.jpg

MagnifyEffect
MagnifyEffect.jpg

MonochromeEffect
MonochromeEffect.jpg

PinchEffect
PinchEffect.jpg


PixelateEffect.jpg

RippleEffect
RippleEffect.jpg

SharpenEffect
SharpenEffect.jpg

SmoothMagnifyEffect
SmoothMagnifyEffect.jpg

SwirlEffect
SwirlEffect.jpg

ToneMappingEffect
ToneMappingEffect.jpg

ToonShaderEffect
ToonShaderEffect.jpg

ZoomBlurEffect
ZoomBlurEffect.jpg


0 件のコメント :

コメントを投稿