在Unite ShangHai 2016 Keynote中,《Adam》的图形技术介绍,令人印象深刻:可以与电影效果相媲美、近乎次时代大作、好莱坞大片效果的3分钟实时渲染的短片,淋漓尽致的展现了Unity 5.4的奋发图强,和对VR开发者的潜台词–“相信Unity 5.4,VR没错的。”
本文就Image Effect进行实践,所用版本是Unity 5.4.0b14 beta版本。
下载Image Effect插件
Unity内置的特效,已经于2015.12.10免费开源了:CINEMATIC IMAGE EFFECTS (PRE-RELEASE)
- 下载方式1:Asset Store Cinematic Image Effects pre-release 版本: 1.0.5 (Apr 06, 2016)文件大小: 714.5 kB
- 下载方式2:bitbucket 开源社区 cinematic-image-effects 为了持续增强Image Effect的功能和提高性能,官方还设立一个论坛版块:
Forums>Unity Community Support>Graphics>Image Effects
部分渲染特效实践
使用渲染特效,非常简单,直接在Camera添加组件即可—下载完Image Effect插件后,导入Unity即可使用。
Screen Space Reflection屏幕空间光线追踪反射(SSRR)倒影效果
Screen Space Ambient Occlusion (SSAO) 屏幕空间环境遮挡特效 —模拟全景漫反射
反|抗锯齿(Anti Aliasing | SMAA).
Bloom 泛光 场景变得梦幻
色调映射 ToneMapping【HDR模式有用】– [和Bloom混合使用]
深入学习文档
Unity自带的英文文档,非常好,下载Unity的时候直接安装一下,遇到问题,点击问号,即可打开本地的英文文档,便于深入快速学习。
然后,输入Image Effect关键字搜索,即可打开Unity内置提供的特效帮助–有图、有文字说明,学习还是挺方便的。
后期屏幕渲染原理
屏幕后期渲染,使用的是Graphics的Blit方法,他和相机的Render方法不同之处在于Blit在屏幕上做了一个和屏幕大小一样的平面,用第三个参数(材质—Shader)进行从当前面到新面的替代。 即Blit是在渲染一个平面,而Render在渲染一个物体。
Graphics.Blit函数
public static void Blit(Texture source, RenderTexture dest, Material mat);
MonoBehaviour.OnRenderImage函数
void OnRenderImage(RenderTexture sourceTexture, RenderTexture destTexture)
Shader文件:写一个顶点片段shader
#pragma vertex vert_img
#pragma fragment frag
备注:
- 参考文档 《Unity 5.X 从入门到精通》
- 参考文档 《Unity Shaders and Effects Cookbook》
- demo Git地址:Shader_ImageEffects