(此文章只是在对WPF的Effect产生兴趣才稍微研究了一点后面的知识;需要了解更多可参考https://archive.codeplex.com/?p=shazzam的源代码以及WPF基础知识)
1.之前一直使用blend里自带的几个特效,突然有一天比较好奇这些特效是怎么来的。
然后就听说了shazzam并看到更多的特效
2.在参考网址下载了shazzam的代码来研究研究,只抽取出里面【如何将.fx文件编译为.ps,再产生一个调用.ps文件的.cs文件,然后就可以像正常使用其它自带Effect一样使用了】这一过程
3.HLSL语法网上有很多教程啊,目前就直接拿一些写好的来用就行,一个简单的ToonShader.fx
/// <description>An effect that applies cartoon-like shading (posterization).</description> sampler2D inputSampler : register(S0); //----------------------------------------------------------------------------------------- // Shader constant register mappings (scalars - float, double, Point, Color, Point3D, etc.) //----------------------------------------------------------------------------------------- /// <summary>The number of color levels to use.</summary> /// <minValue>3</minValue> /// <maxValue>15</maxValue> /// <defaultValue>5</defaultValue> float Levels : register(C0); float4 main(float2 uv : TEXCOORD) : COLOR { float4 color = tex2D( inputSampler, uv ); color.rgb /= color.a; int levels = floor(Levels); color.rgb *= levels; color.rgb = floor(color.rgb); color.rgb /= levels; color.rgb *= color.a; return color; }