<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Liming's blog</title><subtitle type="html" /><id>http://blogs.msdn.com/liming/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/liming/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/liming/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2008-10-17T14:49:00Z</updated><entry><title>First impression on WPF+Pixel Shader</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/liming/archive/2008/10/17/first-impression-on-wpf-pixel-shader.aspx" /><id>http://blogs.msdn.com/liming/archive/2008/10/17/first-impression-on-wpf-pixel-shader.aspx</id><published>2008-10-17T16:49:00Z</published><updated>2008-10-17T16:49:00Z</updated><content type="html">&lt;P&gt;Several weeks ago I was excided to learn that WPF&amp;nbsp;now (in .Net framework 3.5 SP1) supports pixel shader. There is a &lt;A class="" href="http://channel9.msdn.com/shows/Continuum/PixelShaderParts/" mce_href="http://channel9.msdn.com/shows/Continuum/PixelShaderParts/"&gt;video on Channel9&lt;/A&gt;&amp;nbsp;about this stuff.&lt;/P&gt;
&lt;P&gt;Thanks to&amp;nbsp;Niola's guide, it is very easy to&amp;nbsp;use HLSL to write pixel shader for WPF.&amp;nbsp;Here is a simple pattern that I wrote&amp;nbsp;in HLSL and now it is my screen saver.&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 269px; HEIGHT: 217px" height=364 alt="" src="http://byfiles.storage.live.com/y1pSrJDI5SEESdzhIjrgEXMrhWzoeTlnNx7g7_cK27rIlpJPqOyT69s-sk1DIl6zo7H" width=392 border=0&gt;&lt;/P&gt;
&lt;P&gt;The math is very simple. The phase is the delta distance&amp;nbsp;between the&amp;nbsp;pixel on the scene and two nearby points behind the scene.&lt;/P&gt;
&lt;P mce_keep="true"&gt;
&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt" cellSpacing=0 cellPadding=0 border=1 class="MsoTableGrid"&gt;
&lt;TBODY&gt;
&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes"&gt;
&lt;TD class="" style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 426.1pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1" vAlign=top width=568&gt;
&lt;P style="TEXT-JUSTIFY: inter-ideograph; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;sampler2D input : register(s0); &lt;BR&gt;float2 size : register(c0); //size of the screen, in pixel&lt;BR&gt;float3 location:register(c1);//relative location of p2, controlled by WPF animation&lt;BR&gt;#define Pi 3.1415926 &lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;float4 main(float2 uv : TEXCOORD) : COLOR &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp;float3 p1={0.5,0.5,2};&lt;BR&gt;&amp;nbsp;float3 p2=p1+location;&lt;BR&gt;&amp;nbsp;float3 current={lerp(0.5,uv[0],size.x/size.y),uv[1],0};&lt;BR&gt;&amp;nbsp;float delta=(distance(p1,current)-distance(p2,current))/0.005;&lt;BR&gt;&amp;nbsp;float4 result0= tex2D(input, uv.xy);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;float interfere=((1-cos(2*delta))/2+1)/2;&lt;BR&gt;&amp;nbsp;result0*=interfere;&lt;BR&gt;&amp;nbsp;result0.a=1;&lt;BR&gt;&amp;nbsp;return result0;&lt;BR&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;Here is the same pattern that I wrote in DOS's era.&lt;/P&gt;
&lt;P&gt;&lt;IMG alt="" src="http://byfiles.storage.live.com/y1pqysf1Jas_0IM8GeDr-crE3HkUsG_1eZEDj_BVsuoCZ9sIcvfZtlrEvNmTUXinyqM" border=0&gt;&lt;/P&gt;
&lt;P&gt;How time flies...&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9003024" width="1" height="1"&gt;</content><author><name>limingh</name><uri>http://blogs.msdn.com/members/limingh.aspx</uri></author><category term="WPF" scheme="http://blogs.msdn.com/liming/archive/tags/WPF/default.aspx" /><category term="HLSL" scheme="http://blogs.msdn.com/liming/archive/tags/HLSL/default.aspx" /><category term="Pixel Shader" scheme="http://blogs.msdn.com/liming/archive/tags/Pixel+Shader/default.aspx" /></entry></feed>