From b176afdfa7f29f2f948fba9be08f28725b5818ae Mon Sep 17 00:00:00 2001 From: Alexandru Macocian Date: Mon, 19 Apr 2021 21:21:34 +0200 Subject: [PATCH] Increased optimization to O3 for shaders. Implemented kuwahara filter. --- WpfExtended.Test/MainWindow.xaml.cs | 4 +- .../Effects/BandedSwirl/BandedSwirl.ps | Bin 1352 -> 1168 bytes WpfExtended/Effects/Bloom/Bloom.ps | Bin 592 -> 580 bytes .../Effects/BrightExtract/BrightExtract.ps | Bin 348 -> 336 bytes .../Effects/ColorKeyAlpha/ColorKeyAlpha.ps | Bin 296 -> 284 bytes WpfExtended/Effects/ColorTone/ColorTone.ps | Bin 508 -> 524 bytes .../Effects/ContrastAdjust/ContrastAdjust.ps | Bin 384 -> 384 bytes .../DirectionalBlur/DirectionalBlur.ps | Bin 1592 -> 500 bytes WpfExtended/Effects/Embossed/Embossed.ps | Bin 468 -> 444 bytes WpfExtended/Effects/Gloom/Gloom.ps | Bin 624 -> 612 bytes .../GrowablePoissonDisk.ps | Bin 1152 -> 1020 bytes .../Effects/InvertColor/InvertColor.ps | Bin 260 -> 260 bytes WpfExtended/Effects/Kuwahara/Kuwahara.cs | 61 +++++++++++ WpfExtended/Effects/Kuwahara/Kuwahara.fx | 100 ++++++++++++++++++ WpfExtended/Effects/Kuwahara/Kuwahara.ps | Bin 0 -> 3204 bytes .../Effects/LightStreak/LightStreak.ps | Bin 548 -> 640 bytes WpfExtended/Effects/Magnify/Magnify.ps | Bin 512 -> 500 bytes WpfExtended/Effects/MonoChrome/Monochrome.ps | Bin 360 -> 308 bytes WpfExtended/Effects/MotionBlur/MotionBlur.ps | Bin 1324 -> 592 bytes WpfExtended/Effects/Negative/Negative.ps | Bin 284 -> 236 bytes WpfExtended/Effects/Pinch/Pinch.ps | Bin 728 -> 648 bytes WpfExtended/Effects/Pixelate/Pixelate.ps | Bin 656 -> 632 bytes WpfExtended/Effects/Ripple/Ripple.ps | Bin 1328 -> 1236 bytes WpfExtended/Effects/Sharpen/Sharpen.ps | Bin 376 -> 376 bytes .../Effects/SmoothMagnify/SmoothMagnify.ps | Bin 808 -> 740 bytes WpfExtended/Effects/Swirl/Swirl.ps | Bin 1184 -> 1020 bytes .../Effects/ToneMapping/ToneMapping.ps | Bin 800 -> 800 bytes WpfExtended/Effects/ToonShader/ToonShader.ps | Bin 288 -> 276 bytes WpfExtended/Effects/ZoomBlur/ZoomBlur.ps | Bin 1476 -> 532 bytes WpfExtended/Launch/ExtendedApplication.cs | 1 - WpfExtended/ShaderCompiler.target | 2 +- WpfExtended/WpfExtended.csproj | 5 +- 32 files changed, 168 insertions(+), 5 deletions(-) create mode 100644 WpfExtended/Effects/Kuwahara/Kuwahara.cs create mode 100644 WpfExtended/Effects/Kuwahara/Kuwahara.fx create mode 100644 WpfExtended/Effects/Kuwahara/Kuwahara.ps diff --git a/WpfExtended.Test/MainWindow.xaml.cs b/WpfExtended.Test/MainWindow.xaml.cs index 2b26c6c..76b0bf4 100644 --- a/WpfExtended.Test/MainWindow.xaml.cs +++ b/WpfExtended.Test/MainWindow.xaml.cs @@ -39,8 +39,8 @@ namespace WpfExtended.Test var effect = Activator.CreateInstance(effectType).As(); var image = new CaptionedImage() { - Width = 300, - Height = 300, + Width = 800, + Height = 800, ImageSource = this.ImageSource, Caption = effect.GetType().Name, ImageEffect = effect, diff --git a/WpfExtended/Effects/BandedSwirl/BandedSwirl.ps b/WpfExtended/Effects/BandedSwirl/BandedSwirl.ps index 718c413883c55dc1db96451c3d671d4ef309a1f1..733846d33cae4efd9a038e785c724e8be3f1baae 100644 GIT binary patch literal 1168 zcmY*XO=}ZT6g`ufd{_!uxK#{-pdiwsNEgyi1PgVc>40<-LK4kDnuKI@>jd4^MVBro zJ58Yfz_bfD?%a2wXmI6T+&G@|-lS>U-oE$FJ@?*o?;W^F@-KOat=)~yD*%4cK+NNz zHwM5r9xYmi=J0>WQ$KHM8U8w0zVd>`6Tct-k<(*QwS*H(;*P^3t7UCVT>9T@+(U zs~n9U+}}I;^yAgas&J3EclG0B<jr(;@9}58#?Sy^YZs=M7)jC}Ivm zm&_fgMQAOyeX0{sV)r<$C}C literal 1352 zcmY*YJ#Q015S_En_Qe6Ypao%pkbnXu6etlW&WDhQ6bf)oLTN0^HuxmRw(NtJji3k} zCFQw;J1I&7G?2KZOP>M>S^Nb=!|~p(FTU6s@6Ovdvomkjl8NJg@k80zUR%E`BEMk* z%*H}r)A*5D3%@>Ae%`_|_*znw4;m5qh&2l%Z#>0Lu##m-{*2dXb^X>rA`5JC zttq$Z4gGqz(b{egTElj))08M;Mn)$bZ@1s^8lJz|?Z5P^b$HAaMYdcx#~b#&LA_J; z2d(Z4zb*Y??QU&B9(#>JZ`gb8mv273RerQp-6~hx^=4~O-stW2J>)7cF5Fo}!Y3lR ztds(lRyznE+}k<${_EA!3UM2_edW{9(x2BAQ@W}U&l&#swDg0xIxTIEiRU%0j({D* zpsL{)G`@QL=I^x?;5rxi4shgHWjt{GAwCD(x_I)rKL6!w6yCo7ZhwE7coBFMhTlNM z9g2A>SIx*2^gEpH--}ZUFh`6i3w&}28|{c-+%|n}I1CCpmRP8AXZ%o~=Tm3b_1*#Q zD()@eUer8dGI}2?OJcT|82l;5TrP~5o4Su!lHc5iT5#^_I6;q$V;|(P zcGfA_=TJiqcc%K&9QuY6>o{t~UZ^4Cs1JMLo|w^ty}OE9P?H(Pz9b-*z2TpS7~ws8 ztjWwOL(Nc&fSTMBs!Muy#-G*bD$G7$uB67igrhv}P0xk-QOju7i;KJ5X|Ea)d>Rf%*UcfB(H0oI@O)WEdD2egiQ`j1@?M_zaB`l^!x0PiA3E&<2V%03|2L zGcYg#WhO9i@Go!z3NSG61I3>J`A-&b0QrmzjFbBrr5PC}uV!o$=HPE&WO&lR1jIl^ K4gdc$FaQ8O^&SEM delta 134 zcmX@Ya)CvOf$9JMfB(H0oI@O)WEdD2egiQ`j1@?M_zaE{l^!x0O=e+C&<64v7#Ns0 z$OBaX*%KHz_!l?<1sE9kf#Od#FmOCszyahlGH^`pXOw3AKY2A{n>N=L6A%Lx R0og#!9AFI%|Nk>E006hFAp!sZ diff --git a/WpfExtended/Effects/BrightExtract/BrightExtract.ps b/WpfExtended/Effects/BrightExtract/BrightExtract.ps index 41a06db708f78ddcbad344d2483b5a5ecb3dc4ed..1c2a0a54c11ac76ef9465fc2d8c46bbe02338e37 100644 GIT binary patch delta 138 zcmcb^bb(2Uf%*UcfB*FvoI@O)WEdD2`hgfE#ss85e1^t}N~Mg(6K8lRure?-0Ocmg zGcbT;CopjEFK_}1Ffi}~#h*-=#3*IP2xKuV07^46GB7qU0<{D20ydxyD8B({3Nr(T OJV*yfzTy9W1_l69ksDbcacaf$9JMfB*FvoI@O)WEdD2`hgfE#ss85d(&j7+qK$F1y|Nj{n0K5MlWdHyG diff --git a/WpfExtended/Effects/ColorKeyAlpha/ColorKeyAlpha.ps b/WpfExtended/Effects/ColorKeyAlpha/ColorKeyAlpha.ps index dc927077356002cfc329637196d760abbda80a0d..78ad893ddd645eba1b806e5c29df75facc81d8bf 100644 GIT binary patch delta 156 zcmZ3%G>1uvf%*UcfB%&koI@O)WEdD2;(-_>#t5W9e1^t}O0JB?6Ei$=SQ!`^fN~S$ z85o#=5)&9W_!l?<1sE9kf#Oeq{3i>563mPYj6i-U5HmC&_^TR#M#A|ZHc);+1Oo#L S&>XNF&A&%X6bYw{UWw`lmV^$vJgvF&=^rXX-F%Z b^fwv4vFdA{Z?LQXD;IfFmJaHcF3BDKi&r6T diff --git a/WpfExtended/Effects/ColorTone/ColorTone.ps b/WpfExtended/Effects/ColorTone/ColorTone.ps index 0113ee27d276133c8393cff7b87aacb844735605..60a0a0bcfb5cbcf4a9dfe9bad3fd172d628b179a 100644 GIT binary patch delta 166 zcmW-ZF%H5o5CrFJqqvJijReXUcmbh7R4I4{k8pYlqkJG=L-H>`m^H=eZfAGz;~!zb z*ZQqj&bQOJ1Kyg(Hd;+HKZlncmtdEJSdy9d;N)atzm5XXie delta 150 zcmXYpu?Ye}5JlhYu4r~(EGSok6?kVNMh2E)5nF(Pat&+=*OIVZD2{)@VEF$%X6Bwg zu_w5H{mk(?j2qysX>Ort%<$}Awx5!ncA^Y%-fBbr!Ky2x1a$Iso^EzI1eQ5a%NkNt W2XCC?-{0!T<*0f{^1!T@w0%m&Q{Im4BaItS(p6_PFceLt2g4J7xE zpSax4;~scvo0fDM^C&|J$MU}3J1}|k0iukV+}H5?qeZ5=lNksmt-@rZ7KR(m8k delta 181 zcmX|)u?@mN3`O7F1#uEZ7C=JE2o&@Q4FkYD+z8wTS3{G6kupcjcM1y2|381*C6zP~ z%~rc`y^qro_^6yEHTR5lsNr0{x2H^jG@lfZev$h&2|zEt%;cp7%>ubZ9_^r6lok^= eF;ZafS=X(D&VAUtiPJp8pS`zx`r|vhVg^6jXeH7B diff --git a/WpfExtended/Effects/DirectionalBlur/DirectionalBlur.ps b/WpfExtended/Effects/DirectionalBlur/DirectionalBlur.ps index f135258211e349a139164f50e5d21f0d904c52b0..117caa05923e5e81a8c65a6ada117c52fa6b904d 100644 GIT binary patch delta 220 zcmYk0F$%&!5Jms&L`V^c2M~l5+KOUnVN7AAjUL5*bAUjC7f2^qS$d$YC55%?A8Z_$ zoqhi^fA^WawSdO>iEHdm+j0Wn#x_kkj8S(*BdhLlSQ=URjhzc%1mwfm;IF2Dqv4s- zUiWgmIDwMjg$_5o;@sO^kWsJN89)p}0wksp=vTEM_>wV>JA#)-8hQrsXF2zRckDTX O`I;jAX^MLvBk%=qnJAI~ literal 1592 zcmdUvJ8u(F5QS&okAPgzMq(Qzpg;){NGOVoorXxE0AqkK5dOA^YM%Z zqkK3x7|eFZ`Fz&tLG`EP)3qynezbpoe}kS54yKc%$>A)!{rpb$WUsTAb>8+~_ovy; zWRwpOnQd;|+obXtQQ%UeI9z+Ug_O?Ow%m$c*!ST(*MEHMt$q4j zF79rf93MYoKY(8@7GD5 zJs0=NIec{T=8 zT%x#GxKwe8aH--FaBVy04fJSfC|(wBoOT4TnHr!;2Epr7?VX3C(qwGN>}r6cG_ z=@>dzI)P3^qt9r~>VEhhF0{?Bw9T)y&9Ai0ue8mtw9T)y%@6(iET&R7SJf?*`u=G? yJ;nVGbI1L5Q12Aa{xAA}(NCT?N7diXo6>))-}qnF^MoG--Z3uTZHDt#711wOcox6c?i%I1I>1D=zeYN8IV3KYy)FTfp0 zT~mC;x#ZzeAU6V`M;HNI!yS2Ruq$~P^5LHs&WPs4-Oe&yqvTK8;fMFMFBY%;aE>~A O{?Ecq3O9%$XW$19(Jv4H delta 287 zcmYjL%MHRX41Gzc=q(E%A$0`Ai33&31V}IkBM^?<=mx2{6%HMMF&H6p5T4WWiDKFB z`90eY^E3r?jIX%FW>?iS09S@^hDk80rZ}rbb6*`%5;9!51u_HcZ(X+*&F9T&W$ggd zkM#w)^&~mZkPp2ATEXgveVzJN`VM(WSiw3qVtTYbAg2I+0`L!Fjd;=sUoIJ_kwL=} cMbBP*f4JjdxGXK5rkdAzS;Awf4K7CD4cFl|C;$Ke diff --git a/WpfExtended/Effects/Gloom/Gloom.ps b/WpfExtended/Effects/Gloom/Gloom.ps index 06bc3df76b48fad003019bf10367701f107b7c32..8fdaacc69432d43f3e12af114d8b28ec01991e46 100644 GIT binary patch delta 113 zcmeys@`Oc+f%*UcfB(H0oI@O)WEdD2egiQ`j1@?M_zaB`l^!x0PiA3EPymWG03|2L zGcYg#WhO9i@Go!z3NSG61I3?AnB2l>#mG2$Kch4w!{pnHRs0-a@kSN~h6VrsGcW)E De4`v3 delta 125 zcmaFD@_|K(f$9JMfB(H0oI@O)WEdD2egiQ`j1@?M_zaE{l^!x0O=e+CPyq587#Ns0 z$OBaX*%KHz_!l?<1sE9kf#Od#Om1PcV&s^-pHZ6e|K!_@RnidgMivH!1&km)9AI?~ J|Nk>E007&v9~=Mx diff --git a/WpfExtended/Effects/GrowablePoissonDisk/GrowablePoissonDisk.ps b/WpfExtended/Effects/GrowablePoissonDisk/GrowablePoissonDisk.ps index 117f1d1cdac31ac4b27056fbdd2a75d72d9758c7..5de83058c7fe336e51ed8f005b782c70a5830f5b 100644 GIT binary patch literal 1020 zcmcJNPe>GT6vyA}%&e;z3w8>m=2jgHt&`x+;2%)KKz9WX9%R`a+aLbfWp|7qgpnZf zqI=0x!GM9t+M&)lbC9H4hv*P>911-M20;)se&26*#pv43@aFyA=l9bP019n_&Iw9roy;(51yY9 zQOTvVd9hNV8t-z2Qs1I6Tih==G$Zm(fy7d2QRIX(zFb;yGFe1+nQAqSI{&IERp#!@ z_0m0&D;F!pdB?bszG;k2WG0MEA)B|$#&B_|Bv5Pg_1@~E+7ywlQqmjJcl_zY5B{sm zGeP(3t$pSi_`>zu!PiU2=3f7#Z+^dOG1tM5XCGMJ?x=ri|1f{O`{^@}gLnPbtc}?b zYxO8)9&YCY=5657H^mw}eVls#$hO|}d^DLSz|)^z`d@qdD`$ me>$hBiPW*7QT>d6HDXMMP&mj_Xwb literal 1152 zcmZvaPiPZS5XNW!C7YlG^i(XGn|e^%-UO2+X~8NLG%57ZLkUSVi)|BOW*(_Q@FzG;vx}wj zBoV#AA}}2rYbp`F!nTT~Vk!8)hMlk5SSo%BWd*wzG6gIp*aI*Pi*vWI^EGGp>Xll< z-ssVQpK^v0J)-%heYw@ACA-mYk-gSgwd;2O?0RRTU#&qkyEGW+wC|ssPH$yqWs1(* z^=`Y@zSPejs~peIFH{%u)mE+1?B-|NYaJW8`RS>X(=@n9WN4Ig%f?f0ar?bD`QqX0 z=LeU3<~sP5qci@O{X50tx5L)fsS6%+1AJ%ss^vaAq&>UitXM`|Pj#x3mfW(dN1EyBY9LcODnw zHiX-esO=7VG>q@>lbLfIy|#qmc_fWTpysNH8sC zx)i4iHjXo5W=L@MLzbf ZHOc3g=sZU6%iuiXys9|A;roMt=r1v43n%~p diff --git a/WpfExtended/Effects/InvertColor/InvertColor.ps b/WpfExtended/Effects/InvertColor/InvertColor.ps index 8b02f7aa24b99c64b338e0da3ebd330e005a4105..875f4afb3ee90f868db5ea32d3df86f98d89b82f 100644 GIT binary patch delta 132 zcmW-Z!3l#v5JjK61ovhGfq<4^1z8bNfcIQehJpoX2V30M;pC5pVR-M){5|ZUCz@S0 zFfH%=1il(~jg~Xp+0V^*{yxhCR%OQvf`Wt8l`H|Bd==NCK-@ZSx+(gJBxiHCsy2|) H&1Ucij%XaT delta 132 zcmW-Y%L#xm5JV>lVs2?b5VQk3P!TL3cdwQa!2(PNDZ!#rhwCJVVfW4F*0&y@MLrp^ z`g!R998~cXPhre)*whry-4g;}-kt^i53EZI4ZzXQFKkW>j6z%ZVkb2(); + } + + public Kuwahara() + { + this.PixelShader = pixelShader; + + // Update each DependencyProperty that's registered with a shader register. This + // is needed to ensure the shader gets sent the proper default value. + UpdateShaderValue(InputProperty); + UpdateShaderValue(RadiusProperty); + UpdateShaderValue(TexelWidthProperty); + UpdateShaderValue(TexelHeightProperty); + } + + [System.ComponentModel.BrowsableAttribute(false)] + public Brush Input + { + get { return (Brush)GetValue(InputProperty); } + set { SetValue(InputProperty, value); } + } + public double Radius + { + get { return (double)GetValue(RadiusProperty); } + set { SetValue(RadiusProperty, value); } + } + public double TexelWidth + { + get { return (double)GetValue(TexelWidthProperty); } + set { SetValue(TexelWidthProperty, value); } + } + public double TexelHeight + { + get { return (double)GetValue(TexelHeightProperty); } + set { SetValue(TexelHeightProperty, value); } + } + } +} diff --git a/WpfExtended/Effects/Kuwahara/Kuwahara.fx b/WpfExtended/Effects/Kuwahara/Kuwahara.fx new file mode 100644 index 0000000..953303d --- /dev/null +++ b/WpfExtended/Effects/Kuwahara/Kuwahara.fx @@ -0,0 +1,100 @@ +// Sampler Registers // + +sampler2D implicitInputSampler : register(S0); + +// Constants Registers // + +float radius : register(C0); +float width : register(C1); +float height : register(C2); + +half getGray(half4 c) +{ + return(dot(c.rgb, ((0.33333).xxx))); +} + +#define GrabPix(n,a) half3 n = tex2D(implicitInputSampler,(a)).xyz; + +float4 main(float2 uv : TEXCOORD) : COLOR +{ + half2 ox = half2(radius / width, 0.0); + half2 oy = half2(0.0, radius / height); + half2 ox2 = 2 * ox; + half2 oy2 = 2 * oy; + half2 PP = uv - oy2; + GrabPix(c00, PP - ox2) + GrabPix(c01, PP - ox) + GrabPix(c02, PP) + GrabPix(c03, PP + ox) + GrabPix(c04, PP + ox2) + PP = uv - oy; + GrabPix(c10, PP - ox2) + GrabPix(c11, PP - ox) + GrabPix(c12, PP) + GrabPix(c13, PP + ox) + GrabPix(c14, PP + ox2) + PP = uv; + GrabPix(c20, PP - ox2) + GrabPix(c21, PP - ox) + GrabPix(c22, PP) + GrabPix(c23, PP + ox) + GrabPix(c24, PP + ox2) + half3 m00 = (c00 + c01 + c02 + c10 + c11 + c12 + c20 + c21 + c22) / 9; + half3 d = (c00 - m00); half v00 = dot(d, d); + d = (c01 - m00); v00 += dot(d, d); + d = (c02 - m00); v00 += dot(d, d); + d = (c10 - m00); v00 += dot(d, d); + d = (c11 - m00); v00 += dot(d, d); + d = (c12 - m00); v00 += dot(d, d); + d = (c20 - m00); v00 += dot(d, d); + d = (c21 - m00); v00 += dot(d, d); + d = (c12 - m00); v00 += dot(d, d); + half3 m01 = (c02 + c03 + c04 + c12 + c13 + c14 + c22 + c23 + c24) / 9; + d = (c02 - m01); half v01 = dot(d, d); + d = (c03 - m01); v01 += dot(d, d); + d = (c04 - m01); v01 += dot(d, d); + d = (c12 - m01); v01 += dot(d, d); + d = (c13 - m01); v01 += dot(d, d); + d = (c14 - m01); v01 += dot(d, d); + d = (c22 - m01); v01 += dot(d, d); + d = (c23 - m01); v01 += dot(d, d); + d = (c14 - m01); v01 += dot(d, d); + PP = uv + oy; + GrabPix(c30, PP - ox2) + GrabPix(c31, PP - ox) + GrabPix(c32, PP) + GrabPix(c33, PP + ox) + GrabPix(c34, PP + ox2) + PP = uv + oy; + GrabPix(c40, PP - ox2) + GrabPix(c41, PP - ox) + GrabPix(c42, PP) + GrabPix(c43, PP + ox) + GrabPix(c44, PP + ox2) + half3 m10 = (c20 + c21 + c22 + c30 + c31 + c32 + c40 + c41 + c42) / 9; + d = (c20 - m10); half v10 = dot(d, d); + d = (c21 - m10); v10 += dot(d, d); + d = (c22 - m10); v10 += dot(d, d); + d = (c30 - m10); v10 += dot(d, d); + d = (c31 - m10); v10 += dot(d, d); + d = (c32 - m10); v10 += dot(d, d); + d = (c40 - m10); v10 += dot(d, d); + d = (c41 - m10); v10 += dot(d, d); + d = (c42 - m10); v10 += dot(d, d); + half3 m11 = (c22 + c23 + c24 + c32 + c33 + c34 + c42 + c43 + c44) / 9; + d = (c22 - m11); half v11 = dot(d, d); + d = (c23 - m11); v11 += dot(d, d); + d = (c24 - m11); v11 += dot(d, d); + d = (c32 - m11); v11 += dot(d, d); + d = (c33 - m11); v11 += dot(d, d); + d = (c34 - m11); v11 += dot(d, d); + d = (c42 - m11); v11 += dot(d, d); + d = (c43 - m11); v11 += dot(d, d); + d = (c44 - m11); v11 += dot(d, d); + half3 result = m00; + half rv = v00; + if (v01 < rv) { result = m01; rv = v01; } + if (v10 < rv) { result = m10; rv = v10; } + if (v11 < rv) { result = m11; } + return half4(result, 1); +} \ No newline at end of file diff --git a/WpfExtended/Effects/Kuwahara/Kuwahara.ps b/WpfExtended/Effects/Kuwahara/Kuwahara.ps new file mode 100644 index 0000000000000000000000000000000000000000..1b55de11f345ba7ff7d86f23305796b77bd3bedd GIT binary patch literal 3204 zcmbVOOHUI~6h8B4J3RXbOe~KCOb9|;8DrGag(hgCNaBtVKxqQfK#AKSac%koTnyXR zohx_#7rSQf#_{{koy*)#gQY@lI_I9}{myspj09==Cw(LvZ=cogh{#VY!Cr_T%5ov{ z13yPtKK?zKls5PA_Zcg|^05Dv8~FQ%GgV{Ob^(d?(R3w&*W2czkMjJvz-S!Yx1(WcY1Pm^1fYL zesiz(d~<8Fwsp9>e{fpcI5}=L5vjJmwz@8_MM{BG6Qp~JB@e&+dMpw@xr@?EctA}Z zK10=!sG5}Z*^9A}K#wCY!-jT}pl)oJ<3P3(U>16^fM-cWu7F&>LtjtA7T6=nF|PXHH}GTyy2gbkjkpduko&N|iY4l6F7!ZiSzFrqu%~V4*iv7TCD``k5R3Y< z>iZhY>Pyg-u_#xd7kP!c8y(7#%COI5$!e>Jsck~_rZzX;L>7#d{ynH%!WWbtNI-$#!J^UXrfUIxIA_yp3uB#seciYzLo z2G>Cw;%sb|uWfh^`iP`h-J!U|eq0~oJFX8g9@mGskL$x;(8qId$}#9F_lwxFADo3S z$2%DngE2#$LxZcyv4Z$I56WlGB4!YKhW{S=&1d$z4u8%T=2T_++j+6`K$-UBfYlQd zD`)%$XPHw1-^_=~b;z72KZ{R!)Vwes`ETP>CKs)2^I3k6nx`uANANH5yNW&bpq%4< zne%W_?*q!kKIJp;Z+?4DT;gXr#AhyIRh$Xe$K~B^ecYM2tq-vtw>I{}aFh3V@jT?W zC~od~ID6!`bDt!mVi2QXh~FV%rxyY4l6UAI`E2f#zTP*+XDQ|ka;B`zn%O&p`wDy- z7vzPJ7a;RYSNe|NJA|^G5m7mx5uSm18;_jl9dG0Lm^t5xS5gid|2odZcM$b9zOV9N zeClod9JBm9Zhq=-vL}Bl&@&eAaCW$cd*eGc1}DDrQ{+mAd@LtM`G`}C z!CWv0bBZTrlV={XXfD>~J3aEft^DeS?f}I&x<~`)fe8;*n&*#cF z*;_1WOD@=Vwddeaw8{I*Z#33y_~Oeda&|P%Bz_HF=Ar+cE%Jvxie1)|+^6~Bb5Pf@hA~A$ZtWCJeufjm=B+>9uXo7`;jSV4i$|b;&<47#e&XUr~9Idqe z1Uvr*wV}1~e6xVjz0A$bdvAAUc3~#TcXEnKqg37j@IeDHi%xPp0`GJ^n!!(D3lD;G zJ<$xB;(v`jYfKSK{bDb~%$4qqUREg#-NCpOdj5c!Nxgi_RSvxSZrJDs?x^ecI;gi> zJr`bo*z?+6crh4`!+MLE8(?N3^Kb8P)I4tHap|=Kf8^hV&i?g*b6%_0oO-v_aRaB~ z_lF+0I)(gE0kbP$!-O3J(b=lJc7j{P%L>Jl*5oei5Om2d- z9djneD&qVx13E>G=rB#KILXW86l~&i?wf0^!CYZZ3{#%Xy*Y^^gV^#ct=AfxXYmFF z*EJQg)K193;H$CzYrHE@h56zZu=tk3iC%MAt=ndP6Y=fIXEbM_8Uxjd^v8Q5_8Cck kqLCV+H+7w5Pf}}nCgMFdEA@d**7}O{4C!^xh?4~P0WD=|xc~qF delta 330 zcmX|6K?=e!5S%2f&8=4vq2SS@C$S*3e!>4V{=ohqf;TVq8RFF^M@GzeLCXLfe7 z>&knvfsXMTk2syXehuKw5UyYnjBeaK)o%RkhhCvQJhrW{4Mj{2FjKCtu(c;?_{fLJ z;N^P)g*su_kT7QK1gqp@*+-t0I$mhv7yn*#^c{@mph6Jwt)#I=BVslKd1wR6I_A1c uT3JXIkU7H;tWo8e;KT=53hyO&ccIu9UmlTkvt~7$@FSnLw&^MtBk%*9Ktdw` diff --git a/WpfExtended/Effects/Magnify/Magnify.ps b/WpfExtended/Effects/Magnify/Magnify.ps index 3a8a7677502c98fb1e1bad2c8f5367ff8d3f8cc5..8fe54c4f64b9959152320acc30b587e84c8e6459 100644 GIT binary patch delta 121 zcmZo*`NFKk!2JLJzyA&l&LNIYG7Jn17l9Zg#sZ{3e1^t}O4}KYC*JbnU}a!v0Lo36 ztiz}y&dA`hkb%Kv0#J|{h=3ALfcV|yd`5Xjm&yH%-cs*CViTM|@*MmSd5$Lw{{LrS F005P!AT0m@ delta 133 zcmeyu+`yv5!1VwBzyA&l&LNIYG7Jn17l9Zg#sZ{3d<_o1_l77Y#=58 diff --git a/WpfExtended/Effects/MonoChrome/Monochrome.ps b/WpfExtended/Effects/MonoChrome/Monochrome.ps index ef8936c8b149e1cbdc919484f0cb588ade725abd..a5efb4f55d753cda845342794cc9e7e7e041f2b8 100644 GIT binary patch delta 152 zcmaFCw1r8Df%*UcfB*FvoI@O)WEdD2`hgfE#ss85e1^t}N~Mg(6K9xY%$hmV&X!Bu zex3V6TLy*(dwB*1CRQK=sD1*74OBdVfrEd66HtJGfgdRT1jv7~fCJ2D1o0af8J;X) b1gm8Nvi~mt>SqS(0m?amKQ=Uv=I&6Ami5XIk}eP=rX8Hs`hiEEI60yz|XC_?^7L!?9kOeDHsViQhsY|F9xg(`HE zlt+hr1!*7+LTTxsPDA0pgX7KK?cE|FAuNyA@3%9vvom*aljK)&2OCe?oy!0|(m+W>kAwz?;#?3Xvj{wg_J?gFAUgxpRv--EzS$*?Vc!~Vd$&b6_Eq-aLCA>@y zMAWCWpER_EdzxQhR{~mt*3#V9{2}$T_M4-l`}BwSSIC|7-#_(MKcB>l8|&P=C%j4? zFBV_u_LXNgxi+t)EmrK&arXZ$s*KmXq+BecGQh7xA4D{+JL;m|*GyUa^j}0SlISX9 z9F*t_Rbh@QEzRjD&MNZs$kKT7NOHLJcd(S0SHSW(^+|IG7oRlek~wzXi;u99K1bLh zXXTtFIrB2cn4I}JEAmxxR^+SZtjJf(80*yeI=mBSE4z<2xw$EpQ zbr=4826)dxbN0%!G-s}SOLNwW{mswgj1_yG>l$?})2>zD3YlnAkJN0m)FU+-E%n%1 z>an%dV{56$)>4nHr5@2{=IjseSoGh_)BDRjJrw;n^YpEG@=8kb`B}b>b!Rh!fAt*f nndC73_6$r<()$!W`k$Ve{E{Pm#?$kBzB>-!^8M52CkgNy$e0(h diff --git a/WpfExtended/Effects/Negative/Negative.ps b/WpfExtended/Effects/Negative/Negative.ps index 027e032583a05933ae34ac8f6b2547cc17919f86..861f4a21c6bf99dc16ac0bdf94e90c2a2ea18cc5 100644 GIT binary patch delta 102 zcmbQk^oCK1f%*UcfB%&koI@O)WEdD2;(-_>#t5W9e1^t}O0JB?6Emzu?Lk}+kY`|E sVr5`x04kg?@q)PQ1O|>L3s@K!SQt3?fr3wf*kJ(!!_)=;|1&TE0NR`vw*UYD delta 169 zcmaFEIEP7zf$9JMfB%&koI@O)WEdD2;(-_>#t5W9d8`FtmGdX}*dDun3E)Mk=XfY%2<_dhLpsk_fTb#_o3yDI;qEl5kc$0W&tq`hmCR|266*)!6IW LW>L6FF=yZlvIH$$ delta 261 zcmX9%v1$TA6r6XL^$sLhSs4&aXPH8f1P;$u41#tx`IEJ~l*j$R)@O59Bx!<}GM!ij zZ0`g70yndJ#V|XwGxIX_r$z{@z1bA=^(=h=a3P$hNKRvxkACDSZ?-QhKy}bFa)0`G z>wbRi%klGjmQ9@>(chQlHwyTRR8TyCi=%@0a|8okz;hUHkkSie)k`S2I(UfA&Q8YnB}HiI z`|bB!@yVyiLimOyw)^#F1mM9}w2U9&IM>sQn%B=ou_C)Sm71Iiz%u2=fTrkB_B}Or zlvRKSj2lExGY891^r)YOAAlU_b>7QseExml8uipy5i`t3uo2$e)c9yTkxPF{sm^s= zz=LwxM66>IUUW@e78Y?)#!Sm~txeY|@*TOX74O|F^l&DM@o7V9C^qQYjU>xHF?reg G5P%=M%RTS_ delta 367 zcmYjLI|{-;6r9ZmQUp?H7eUDd1WOep@d^fPJd5!L3AwJ6dZ57!5bmv0zpVA5Ct7bG!zgT4uBO7K*=4}k?2B^C>K~7ic}neBSfM_ zVhaiyIz)k)v6liQKl#0RzZv^+u&KuA#rPdBaDI6<83Fj92`hOi#%wu$Hiyfvhy7ik zARL%q$Y*i^H*Dzic!;<6w8iSv?9~;+HSIcBfTy7EI}EdaYPTuAV&0^7<=<(qK_d;e z=|9~8M|0HxgJ9CkmpO2dFat|0h7#+hL~L@M38=}lPq0rgFLNBGLU9$DNb_B+oR<4U z)*#nf_{MUE1pH!JW;yde#<>YY*IQ>+o~-^ZRAVmkBnXnz5@DHCR_N0U08|1bV)>C( zqZlD8byP1Ak$cvidSTcJoY+VuZypUwif3wGo!H~5$dArwWT#b8q%UA}Yi~}0k`3Ub h4ew1eN&hjV{}$j{Zlfx<#n`i^)y4u&n`4L(_yG%eduRXv delta 694 zcmZ8ey-EW?7@WP_#mfZ=_JR;W#L_Ba5fd9*!NaunzC$*Zu`}ca*2dz}q){8OPH7?d z0(k*j3)h+52qAFG&NuhXd_Viym=|p%-v9awoL}|&y8ym<#AUn`qc>@Pnd8aN)8G=w z8fZDQ{qcO$e0iN!N2mAW@rn3?{H&_pD0l~Kmv?uMM!YRho3HQ#@|Gi6<41lu=Xsni z%)wA$CCb)=EDiB~z&UYgg$;yZo75)(du!l>#=zKwxCsAD;K4YSlg^KnI{;Fwv>7Uw z!MkiokqivYDX<)$aS~#2RHOze@W&r zL2kg+LlKb9Ly{&@qPkb3+CrU8)LC?G!jPjl=6FpVwxwaTMd`F54I?a$o*fp7-Gp_} zIIc;YCWBKl?~o_VW=1rh-qkug>`3ni+rZKlJkv$(dM8ab*~9eq>_64;srlTlADU^= Xk8!?qaWh-|r_C%?hc6xfdk_2pqr8m) diff --git a/WpfExtended/Effects/Sharpen/Sharpen.ps b/WpfExtended/Effects/Sharpen/Sharpen.ps index 32a9f4a034f6581ebd22c33eac63873518498a93..a4ac161774433291d40540f6861ef5f5b2ba8be2 100644 GIT binary patch delta 163 zcmXAgF%H5o3`L)lBC>Tw0tr-c03;Y$C>((Ug^?{)FVKpWW91N?FityI_V@d5a+7QD zsz1GOf8N?1@UbaBZ>wZpUGtW6_dPvU5RIihI0K1L4|Z77M}YxyYUf;AFGoV2xh#Av dyg$fRQh$}r(G*7r(V?+|im+ZZ7{zo|_yh4*BjW%7 delta 163 zcmYL>F%E)I5JYG9lSubl6HPG00~ljT19}7x^jkU!7l6=G{6ldFDwp|KSZsFQ%w$$w zwS<~|?SbdJZq5KEUh*7YV$@yP%DtO!FG2uZELfoaAol|Wn~wex1=v~sJT`moQy!2n dLw}Kz#J-Z_H3Krm;THj;u)+!DY*1=5U<2)@Bmn>b diff --git a/WpfExtended/Effects/SmoothMagnify/SmoothMagnify.ps b/WpfExtended/Effects/SmoothMagnify/SmoothMagnify.ps index 0138f2e3bdbbbf8f7e8fc73bdc094d0011413d3b..d93e909aacbae1e7c45cd1b8e640c7209fbaec40 100644 GIT binary patch delta 272 zcmX|5Jqp4w6#ianOTnSgSrGIHp1`^~Du^I19wdSXh!ppB6HnvNBV?#2a5H`{7KfL7 zzc0CGKAj;6;S<(aZI;ypfDsGJ4OJdzvWW${eL+wlKN)mr;<@Y!dT#V$7xhEQG*rusPE#+ el=#8tJL;YNY1-Y!4A9$3znK@xEpp$40DJ-6V>g8W delta 323 zcmXv|J!?Wi5S+XB;R6ZU2_X>B&eBdSL{kN90uh2>kzbN6QfQ~VKk)42*}Nv&h;6V7 z`3+a(SL8B##$s-F=5}`0CEK(O>;12v;Nf{Rz5`&5KHeuR$}w8Ee@rj0oB7)lkfdl7 z=H~0;wZ1>>%I;vfSoBq|QQwv2k&Y7}L)PIvH?ay3Rsa188T~=eBnAo&M1bLp7xtSp z{3(a>$RJ|xDx$fW0rXfgaEkoXyx+z)xFIQAQ6sJ!Z9cc1Cg)?_p%%@^SGM(7y@W*x hm69oE{+{KcY1)*~#BUjg>l(@hnJdEO*@b%#`~hqzM@9eu diff --git a/WpfExtended/Effects/Swirl/Swirl.ps b/WpfExtended/Effects/Swirl/Swirl.ps index b93f68275173d9f112e5b6cdf4d575411e112313..91e0c6e5e67e3047aaad2a8561a76cdca078d274 100644 GIT binary patch delta 385 zcmY+9u}T9$6h+U>ZsH073k8b^Ld4p_B3PRE2`=PMES=Ozk+457wp;lVmV$pEfhqh5 zalCI93t=BS@7_1(-HFHFM>DFNfAW&$t{Xd{p`)%?!UH^OYkEI@^{^< zJ72v(+Ih7wk@~QOv&{->N2R`3r41a4CRu$BHGQnfaV#1%!O;d$#b}D}pqu;mE8{wx zG}dV5k1JnVQXRT^bvHGZG0hiJJc3|RcezG)n{Y3%wwor6+DJNk z-yqEuK19g+&+b7;DeSQOf3x$?&aMl)*G1y}#*Z<+AC67|tQf*FZlW=qb-&g1?DzHd z4rmqVSataG{@DKboV&}Lm+7=GT$9h8`(nWoFaz#`Ga7L>K)R@mI-V?m`t3Z>1JV=I zW=cWx>=@qU%qb|Nc-{}WByh>oDg`oX_bhiGC>m`tIGe%SR=A^C4@PN3i=W&Fs*PIq zVoO0K1HmS?1Z_NRoZYsT$CuSA=@;y6XSn!`PhcC=49g zZr(BP?FDO8Q&XU}njyZC#X+`p&g4)3FisFh-8B{l8KC*ql)qJz)pitqup?&!UCYP` IbkyDhe>lr?bN~PV diff --git a/WpfExtended/Effects/ToneMapping/ToneMapping.ps b/WpfExtended/Effects/ToneMapping/ToneMapping.ps index 49910aaf02abb5f5f08b41029309b2ee2f3f0403..2b2ca8b5dd31cd060ec422c212602d438ba3ab0d 100644 GIT binary patch delta 392 zcmY*UF^&Q;3>;@+H_}PFA2iSy>DkQGt511cB;sd6o<4^en&E>`$D3FqP zY|q#eYpq?PDdn&H;_GL<`2=tfKCDFs&vCvlzeQG;qwG&}K-oX0o3DJzkS71cB^Oil+qMaNv0tn#KH20x~K$;(vVXP S7*uBtF_c#TFPC3TQUbp76h$8Z diff --git a/WpfExtended/Effects/ToonShader/ToonShader.ps b/WpfExtended/Effects/ToonShader/ToonShader.ps index 2cad8e2e322a1bf6d350c9f5386ed02d1c1d2bd9..5b5d3c8789cc3605ef54f6f13114cdf4fa714396 100644 GIT binary patch delta 99 zcmZ3$G=)itf%*UcfB%&koI@O)WEdD2;(-_>#t5W9e1^t}O0JB?6Ei#%SQ!`^fN~S$ o85o#=5)&9W_!l?<1sE9kf#OdlOuS&q&jDrvxuFaG|7TzT0GHhtm;e9( delta 111 zcmbQjw17#8f$9JMfB%&koI@O)WEdD2;(-_>#t5W9d&D2FPKV0m_Tmm0-y;@KqVllhX4N=7yzGl8Ik}1 diff --git a/WpfExtended/Effects/ZoomBlur/ZoomBlur.ps b/WpfExtended/Effects/ZoomBlur/ZoomBlur.ps index c2871f09690b56a81a2691f4bb270b7348b0ff94..4ad5505681588ef87835f6aebb91bf9946f062ff 100644 GIT binary patch delta 293 zcmXwzO$x#=5QSfw7DN{T=~58HpRJ(Fil{4>f<2FMS9i5~fPgD|4PCnT0zE)aV0=k6 zB+ShB-pu6LxrPHsYd=>-4u~X_8EuON zpqHmCV+5w;fU4Ec`44>{prAQFcR6{EmNLTULK7J3+$`vUCij|vqE>Ey#=sS3Oczkq zO+)A#fK-QoyR1viNk$?yU4j78Gxp>~6kqmHJmg-ol=G~a!2eqELtI?3w=~uQU*StM ArvLx| literal 1476 zcmbtUJ#Q016r4Nz&Sxu%|3D-xrGX|&DDjafb^}sU5EF?mGO>X}iETNTev1@AqM)Fl zJPV1!N8vtnh=P_Tf51{Cegwz7`(jD41z3LGo7vg7@7~TDc9Q%`d~~1gcGduVWq@3T zgJA3eUpPEt*bIxm1CH_u88#UUE-q3Ac+XMRitcmHJwG|0c88;II7Mu6R^}{iZomI> z6olu4A>vq8OU7b8IGvmX$3ggbG&v7@eIm&c$5pKSrJI}`-9OsIesDY;pN(IHt-A;J zT95X6d#&E9{$Mz5b;qZZfQwsOn;Tn*p8$@HX0*2c!3We%*V{^jJkQL^NhNr)YWh4I_z-+P3h$V-ZBzw z5nEWQ0@E|f)-b)IDjKFoR8_e!C#REk>4RQsRdZfkz zOFcT4dUP!H=veB}vDBkusYl0Bk6`f@konXFA~!!Lliys-OP$GYE|OAb@*Cedvh#gS zezUo6p<^3)#((Zjhs6J$D|k-yP3n{49I~GM+qo3^BnR&R?|zowW?$0(3NOP+0{jLd C%Q_bT diff --git a/WpfExtended/Launch/ExtendedApplication.cs b/WpfExtended/Launch/ExtendedApplication.cs index cf637ba..b5b799e 100644 --- a/WpfExtended/Launch/ExtendedApplication.cs +++ b/WpfExtended/Launch/ExtendedApplication.cs @@ -45,7 +45,6 @@ namespace System.Windows.Extensions this.SetupApplicationLifetime(); this.LaunchWindow(); } - protected sealed override void OnExit(ExitEventArgs e) { base.OnExit(e); diff --git a/WpfExtended/ShaderCompiler.target b/WpfExtended/ShaderCompiler.target index 42315a8..b22cd51 100644 --- a/WpfExtended/ShaderCompiler.target +++ b/WpfExtended/ShaderCompiler.target @@ -3,7 +3,7 @@ $(ProjectDir) $(SolutionDir)tools\fxc.exe - /O0 /T ps_2_0 /nologo /Fo + /O3 /T ps_3_0 /nologo /Fo diff --git a/WpfExtended/WpfExtended.csproj b/WpfExtended/WpfExtended.csproj index 91fc746..d5348c5 100644 --- a/WpfExtended/WpfExtended.csproj +++ b/WpfExtended/WpfExtended.csproj @@ -6,7 +6,8 @@ true true License.txt - 0.1.1 + 0.2.0 + latest Extension library for Windows Presentation Platform. Credits: @@ -28,6 +29,7 @@ http://www.java2s.com/Open-Source/CSharp_Free_Code/Windows_Presentation_Foundati + @@ -56,6 +58,7 @@ http://www.java2s.com/Open-Source/CSharp_Free_Code/Windows_Presentation_Foundati +