后处理之辉光效果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了后处理之辉光效果相关的知识,希望对你有一定的参考价值。

参考技术A

泛光和辉光不一样么?
那是肯定的

辉光(Glow) :是全屏泛光的升级版本
区别就是辉光要求场景内只有部分物体泛光,而不是全部泛光
所以需要区分出忽略那些物体

大体思路:
1.用一个额外的摄像机给,在这个摄像机下,所有的非泛光物体都是黑色的,泛光物体保持原样
2.再将这个结果渲染到一个 RT 上,对他进行模糊
3.最后将模糊后的反光图叠加到主摄像机的渲染图像上

创建一个 LightGeometry.shader
默认的surface shader,改了 RenderType
RenderType 可以使用自定义名称,并不会对改 shader 的使用和着色器产生影响
需要自己区别场景中不同渲染对象使用的 Shader 的 RenderType 的类型名称不同

在相机那边,可以通过该函数 动态替换摄像机下物体的 shader

当调用 RenderWithShader 是,会检查摄像机下的每个物体的 RenderTag
(通常选取 Tag 的条件都是 RenderType)

替换的过程:
1.遍历所有要显示的物体
2.如果物体的 Shader 与传入的 replaceShader 有相同的 RenderType
3.则用 replaceShader 的响应 subshader 替换

下面的 shader,增加了一个 subshader
用来将 RenderType 为 Opaque 的物体替换成为黑色,而为 Glow 的内容保持不变
(不发光的物体要绘制呈黑色,避免遮挡关系会出错)

再创建一个 CustomGlow.cs 脚本,负责:
1.在主摄像机下创建了参数相同的子摄像机
2.并把这个摄像机的渲染目标设置为内存中的一个 RenderTextrue
3.渲染时,通过 RenderImage 将其与主摄像机的内容进行混合
4.使用 RenderWithShader 实现特效时,应该将相机设为disable,防止影响原图的绘制

最后创建一个 mixTexture.shader 文件

最后把它挂到相机上,挂到相机上:

GraphicsLab Project之辉光(Glare,Glow)效果

作者:i_dovelemon

日期:2016 / 07 / 02

来源:CSDN

主题:Render to Texture, Post process, Glare, Glow, Multi-pass rendering



引言