屏幕后处理效果(screen post-processing effects)是游戏中实现屏幕特效的常见方法。通常是指在渲染整个场景得到屏幕图像后,再对这个图像进行一系列操作,实现各种屏幕特效。使用这种技术可以为游戏画面添加更多的艺术效果,例如景深(Depth of Firld)、动态模糊(Motion Blur)等。Unity为我们提供了这样一个方便的接口-OnRenderImage函数:
MonoBehaviour.OnRenderImage(RenderTexture src,RenderTexture dest)
当我们在脚本中声明此函数后,Unity会把当前渲染得到的图像存储在第一个参数对应的源渲染纹理中,通过函数中的一系列操作后,在把目标渲染纹理,即第二个参数对应的渲染纹理显示到屏幕上。我们通常是利用Graphics.Blit函数来完成对渲染纹理的处理。
public static void Blit(Texture src,RenderTexture dest);
public static void Blit(Texture src,RenderTexture dest,Material mat,int pass = -1);
public static void Blit(Texture src,Material mat,int pass = -1);
利用卷积(convolution)进行图像的边缘检测
卷积操作指的是使用一个卷积核(kernel)对一张图像中的每个像素进行一系列操作。卷积核通常是一个四方形网格结构,该区域内每个方格都有一个权重值。当对图像中的某个像素进行卷积时,我们会卷积核的中心放置于该像素上