作者:i_dovelemon
日期:2016 / 07 / 02
来源:CSDN
主题:Render to Texture, Post process, Glare, Glow, Multi-pass rendering
引言
从GraphicsLab Project项目立项以来,一直都在忙着搭建Shader的实验环境,现在基本的实验环境已经搭建完毕,所以就试着使用它来编写一些效果。本篇文章就将向大家讲述,如何在OpenGL中,使用GLSL编写出辉光效果。
辉光(Glare,Glow)
辉光效果,也就是Glare,Glow效果。它的主要作用是模拟一些场景中发光物体周边的朦胧模糊的发光效果,有点类似于PS中的外发光。先来看一看这种效果的实际图片,给大家一个感性的认识。
图1
图2
图3
上面图片给大家展示了辉光效果能够带来的视觉体验。为场景中的发光物体添加辉光效果,能够实现灯光的朦胧感觉。当然,为了整体画面的和谐也不能乱用此效果,否则就给人一种很俗气的感觉。
原理
下面给大家讲述下这种效果的实现方式。其实说白了它的实现原理很简单,我们只要对要添加辉光效果的物体进行一次模糊操作,然后将模糊过后的图片与原先的图片进行Alpha Blend,就能够得到上面所示的效果。操作如图所展示的那样(这里为了简便,只在场景中绘制Glare物体,并且只添加了些许光照,没有添加其他效果):
图4 未进行模糊的原场景
图5 对原场景进行模糊之后的图像
图6 将模糊之后的场景与原场景进行Alpha blend之后的最终效果
上面三张图片展示了绘制一个简单辉光效果的整体步骤。原理是不是十分的简单???大家可以自己在PS等图像处理软件中,直接模拟看看是否能够得出这种效果来。
OpenGL实现
在讲述具体的实现之前,我们需要先了解一些基本的知识点。在了解了这些知识点的基础之上,我们才能够实现这种效果。