本文版权归 博客园 Clifford 所有,如有转载,请自觉于显式位置标明原创作者及出处,以示尊重!!
作者:Clifford
原文:http://www.cnblogs.com/flash3d/archive/2012/02/15/2353169.html
demo程序需要安装Flash Player11才能正常运行。
运行效果点击进入原文观看。
源文件:http://files.cnblogs.com/flash3d/radialBlur.rar
点击“open”按钮可以选择本地图片,水平滚动条可以调整模糊的量。
之前一直在纠结AGAL不能进行流程控制,致使很多需要循环计算的特效无法使用硬件加速。
今天用了一个笨方法通过as3循环拼接AGAL程序来模拟简单确定的循环过程。
一个循环执行十次,就要在程序中拼十行相同的代码,由于程序的最大长度限制,程序只能拼非常有限的数量。
这个方法相当撇脚,不知大大们是否有更好的方法,求点拨。
下面介绍径向模糊的基本算法。
一般模糊算法的基本思想是,目标图像(生成的图像)上的任何一点的颜色值都受源图像对应位置的点以及其附近的点的颜色值共同影响。比如高斯模糊就是将处理点附近的颜色平均值作为该点的颜色。而径向模糊的特点则是某个中心点颜色向外扩散,这说明从中心点指向外侧的一条直线上,远离中心点的点是不会影响比较靠近中心点的点。另外,由于颜色是向四处发散,则不同放射线上的颜色也不会相互影响。
那么,我们可以将径向模糊算法归结为,目标图像上的某点颜色值为源图像对应点向中心点方向上一定距离的像素平均值。如下图所示。
灰色点就是采样点,处理每个像素都要找到他对应的采样点,计算这些点的颜色平均值(分三个通道)则是我们要计算的点的颜色值。其中采样点的个数在程序中称为STEP(步数),点的间隔成为步长,步长不一定是距离,在程序中步长是scale值,所以采样点不是等距离的,离中心点越远采样点越稀疏,模糊起来更豪放o(╯□╰)o
这里我采用矩阵缩放的方式计算采样点进行采样。
通过矩阵,可以对一个点进行变换,如将所有绿色点的坐标变换到红色点的位置,这个变换是等比变换(scaleX == scaleY)。变换后的坐标点和原点正好是在中心点的同一条辐射线上。我们可以给定一个单位矩阵,每次对该矩阵的scale减小一个固定量,然后采样,反复执行一定次数,则可以采样到一系列同一辐射线上的点。矩阵计算在GPU中是很快的,当然,你也可以选择通过计算这个直线的dx(x微分),dy(y微分),不断累加来获取采样点坐标,不过看起来的效果不如用scale采样美观。
算法解析到这里,源码内有注释已提供下载,关于Stage3D技术的使用方法请参考上一篇博文。
分享到:
相关推荐
Adobe Flash 11 Stage3D游戏编程初学者指南 随书光盘代码
源码Adobe Flash 11 Stage3D (Molehill) Game Programming Beginner's Guide
Starling基于Stage3D开发GPU加速的2D游戏 不错的教程,非常实用。
介绍Adobe Flash 11的Stage3D的游戏编程,书的中文名是Adobe Flash11 Stage3D游戏编程初学者指南。
Stage3D教程 3d的可以看看 很详细的教程
stage3d显示atf的练习demo
AS3 stage3d 平滑滚屏案例 非常好的例子
在Flash CS5中使用最新flash Player 11 的stage3D API的一个例子
3d页游开发 深入分析 flash 3d stage3d webgame不容错过,
以前学stage3d写的,很挫,但是性能很高,可以用来学习显卡渲染的原理
flash 3d 代码参考代码参考 代码参考代码参考
Adobe Flash 11 Stage3D (Molehill) Game Programming Beginner 经典FLASH 3D开发书籍 的源代码,老外网站比较难下
flash stage3D starling
NULL 博文链接:https://kenkao.iteye.com/blog/1731689
Adobe官方推荐的Stage3D新手入门教程(英文版) PDF 格式。 目前,没有发现中文版。
ND2D-Flash Molehill(Stage3D)GPU加速的2D引擎。 ND2D是使用Flash的新GPU硬件功能的2D框架。 要运行此引擎,您必须下载并安装最新的Flash Player: 您必须使用FP11 playerglobal.swc和编译器选项-swf-version = ...
AGAL(Adobe Graphics Assembly Language)是Adobe开发的图形汇编语言,汇编语言是仅高于计算机二进制机器码的低级语言,可以精确地...对于顶点以及片段的运算都是通过AGAL交由显卡来处理的,这就是传说中的GPU硬件加速。
这个是flash大牛 7yue写的一个关于flash stage3d的资料