【HLSL学习笔记】WPF Shader Effect Library算法解读之[DirectionalBlur]
原文:【HLSL学习笔记】WPF Shader Effect Library算法解读之[DirectionalBlur]
方位模糊是一个按照指定角度循环位移并叠加纹理,最后平均颜色值并输出的一种特效。效果如下图:
Angle=0;BlurAmount=0.1;
Angle=45;BlurAmount=0.1;
看看源代码:
++++++++++++++++++++++++++++++++++++++
//模糊的角度
float Angle : register(C0);
//模糊的数量
float BlurAmount : register(C1);
sampler2D implicitInputSampler : register(S0);
float4 main(float2 uv : TEXCOORD) : COLOR
{
float4 c = 0;
//0.0174533的含义是2*PI/360,这里是将角度转化为弧度
float rad = Angle * 0.0174533f;
//计算x、y轴的偏移分量
float xOffset = cos(rad);
float yOffset = sin(rad);
//
for(int i=0; i<16; i++)
{
//利用角度参数和模糊的数量参数来定义新的纹理坐标
uv.x = uv.x - BlurAmount * xOffset;
uv.y = uv.y - BlurAmount * yOffset;
//将每一次的纹理都叠加
c += tex2D(implicitInputSampler, uv);
}
//求取纹理颜色的平均值
c /= 16;
return c;
}
++++++++++++++++++++++++++++++++++++++
代码非常简单,不过对纹理进行偏移然后叠加,最后将叠加的值进行平均,这种方法还是头一次见,如果不进行最后一步平均,得到的将是纯白的画面,因为经过16次循环叠加的向量c,其中的rgba值都应该远大于1了,所以变成了纯白。
根据这种思想,我们可以稍微改变一下,得到自己想要的效果,比如爆炸效果或者汇聚效果等。这里稍作改变如下:
+++++++++++++++++++++++++++++++++++++++
float Scale : register(C0);
sampler2D implicitInputSampler : register(S0);
float4 main(float2 uv : TEXCOORD) : COLOR
{
float4 c=0;
for(int i=0;i<5;i++)
{
//设置缩放比例
uv.xy/=Scale;
//设置缩放后的原图中心依然位于整个画面的中心位置
uv.xy+=(1-1/Scale)/2;
c+=tex2D(implicitInputSampler,uv);
}
c/=5;
return c;
}
+++++++++++++++++++++++++++++++++++++++
设置Scale为1.02,则得到如下效果:
Scale=1.06
Scale=0.9
采用这个方法,利用不同的算法可以很方便地得到各种不同的特效。
【HLSL学习笔记】WPF Shader Effect Library算法解读之[DirectionalBlur]的更多相关文章
- 【HLSL学习笔记】WPF Shader Effect Library算法解读之[Embossed]
原文:[HLSL学习笔记]WPF Shader Effect Library算法解读之[Embossed] Embossed(浮雕效果) 浮雕效果主要有两个参数:Amount和Wid ...
- 【HLSL学习笔记】WPF Shader Effect Library算法解读之[BandedSwirl]
原文:[HLSL学习笔记]WPF Shader Effect Library算法解读之[BandedSwirl] 因工作原因,需要在Silverlight中使用Pixel Shader技术,这对于我来 ...
- V-rep学习笔记:Reflexxes Motion Library 3
路径规划 VS 轨迹规划 轨迹规划的目的是将输入的简单任务描述变为详细的运动轨迹描述.注意轨迹和路径的区别:Trajectory refers to a time history of positio ...
- OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波
http://blog.csdn.net/chenyusiyuan/article/details/8710462 OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波 201 ...
- 机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记
机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记 关键字:k-均值.kMeans.聚类.非监督学习作者:米仓山下时间: ...
- V-rep学习笔记:Reflexxes Motion Library 2
VREP中的simRMLMoveToPosition函数可以将静态物体按照设定的运动规律移动到指定的目标位置/姿态.If your object is dynamically enabled, it ...
- 再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT)
再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Bluestein算法+分治FFT+FFT的优化+任意模数NTT) 目录 再探快速傅里叶变换(FFT)学习笔记(其三)(循环卷积的Blueste ...
- HMM的学习笔记1:前向算法
HMM的学习笔记 HMM是关于时序的概率模型.描写叙述由一个隐藏的马尔科夫链随机生成不可观測的状态随机序列,再由各个状态生成不可观測的状态随机序列,再由各个状态生成一个观測而产生观測的随机过程. HM ...
- jvm学习笔记一(垃圾回收算法)
一:垃圾回收机制的原因 java中,当没有对象引用指向原先分配给某个对象的内存时候,该内存就成为了垃圾.JVM的一个系统级线程会自动释放该内存块.垃圾回收意味着程序不再需要的对象是"无用信息 ...
随机推荐
- jQuery常用方法(持续更新)(转)
0.常用代码: 请容许我在1之前插入一个0,我觉得我有必要把最常用的代码放在第一位,毕竟大部分时间大家都是找代码的. (1)AJAX请求 $(function() { $('#send').click ...
- js课程 2-7 带默认参数的函数怎么写
js课程 2-7 带默认参数的函数怎么写(注意参数顺序) 一.总结 一句话总结:默认参数一定要放在最后面,而且还有注意你调用参数的时候给参数的顺序习惯.直接加个等于号就可以是默认参数.function ...
- inflate, findViewById与setContentView的区别与联系 分类: H1_ANDROID 2014-04-18 22:54 1119人阅读 评论(0) 收藏
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentV ...
- Linux基本命令(二)
1. 输出重定向命令:> Linux允许将命令执行结果重定向到一个文件,本应显示在终端上的内容保存到指定文件中. 如:ls > test.txt ( test.txt 如果不存在,则创建, ...
- Bootstrapbutton
Bootstrap 提供了一些选项来定义button的样式,详细例如以下表所看到的: 下面样式可用于<a>, <button>, 或 <input> 元素上: 类 ...
- MQ选型对比RabbitMQ RocketMQ ActiveMQ
原文:MQ选型对比RabbitMQ RocketMQ ActiveMQ 几种MQ产品说明: ZeroMQ : 扩展性好,开发比较灵活,采用C语言实现,实际上他只是一个socket库的重新封装 ...
- IHookHelper的用法
1.实例化IHookHelper 对象: IHookHelper m_hookHelper = new HookHelperClass(); m_hookHelper.Hook = this.axM ...
- [Angular] Dynamic component's instance and sorting
After create a component dynamic, we are able to change the component's props and listen to its even ...
- HDOJ 1261 字串数
JAVA大数.... 字串数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
- 学习鸟哥的Linux私房菜笔记(3)——基础使用
一.设备文件 设备在Linux中以特殊文件的形式存在 块(block)设备文件 字符(character)设备文件 设备文件所在位置 查看设备类型 二.虚拟控制台及用户身份切换 在系统中有12个虚拟控 ...