Away3D之---------------简单的后处理 灰度滤镜(GrayFilter)

来源:互联网 发布:apache编译调试选项 编辑:程序博客网 时间:2024/05/01 05:58

灰度效果常被用于死亡世界,其实现方式是利用全屏后处理对每帧渲染的纹理图像进行灰度处理,在Away3D中利用Filter3DBase滤镜可以很容易的扩展出各种后处理效果。 其基本原理即:  每帧对场景及场景中所有对象进行渲染,渲染得到的图像数据并不直接绘制到后台缓冲区,而是绘制到纹理(RTT)然后对这张纹理进行处理并将最终结果传入缓冲区显示。


Away3D中滤镜的工作流程: 在每帧绘制的时候判断是否有滤镜效果 如果当前开启滤镜则先绘制到纹理,在对该纹理进行第二次绘制。




实现灰度效果只需继承滤镜基类 (因为功能比较简单且直接绘制到后台缓冲故无需其他太多处理)



实现具体灰度效果绘制任务   

ps 的主要算法  对原纹理(每帧绘制场景的数据)采样得到颜色值ft0 对颜色值进行如下计算得到最终灰度效果

ft0 *= fc0(r g b分别乘以常量分量)  将r g b三个分量只和最为最终颜色值





绘制效果:

开灰度效果之前:                                                            





开灰度效果之后:




0 0
原创粉丝点击