Unity3D for VR 学习(11): 后期屏幕渲染特效(Image Effect)

Unite ShangHai 2016 Keynote中,《Adam》的图形技术介绍,令人印象深刻:可以与电影效果相媲美、近乎次时代大作、好莱坞大片效果的3分钟实时渲染的短片,淋漓尽致的展现了Unity 5.4的奋发图强,和对VR开发者的潜台词–“相信Unity 5.4,VR没错的。”

本文就Image Effect进行实践,所用版本是Unity 5.4.0b14 beta版本。

image

 

下载Image Effect插件

Unity内置的特效,已经于2015.12.10免费开源了:CINEMATIC IMAGE EFFECTS (PRE-RELEASE)

 

  • 下载方式2:bitbucket 开源社区   cinematic-image-effects          为了持续增强Image Effect的功能和提高性能,官方还设立一个论坛版块:

          Forums>Unity Community Support>Graphics>Image Effects

 

部分渲染特效实践

使用渲染特效,非常简单,直接在Camera添加组件即可—下载完Image Effect插件后,导入Unity即可使用。

image

 

Screen Space Reflection屏幕空间光线追踪反射(SSRR)倒影效果image
Screen Space Ambient Occlusion (SSAO)  屏幕空间环境遮挡特效 —模拟全景漫反射

image

 

反|抗锯齿(Anti Aliasing | SMAA).

image

 

Bloom 泛光 场景变得梦幻

image

色调映射 ToneMapping【HDR模式有用】–  [和Bloom混合使用]

clip_image001

深入学习文档

Unity自带的英文文档,非常好,下载Unity的时候直接安装一下,遇到问题,点击问号,即可打开本地的英文文档,便于深入快速学习。

image

 

然后,输入Image Effect关键字搜索,即可打开Unity内置提供的特效帮助–有图、有文字说明,学习还是挺方便的。

image

 

后期屏幕渲染原理

屏幕后期渲染,使用的是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

发表评论

电子邮件地址不会被公开。 必填项已用*标注