Unity如何实现苹果动态模糊遮罩

前言

使用过苹果手机的都知道,苹果手机在上banner滑下来的时候,会有一个动态模糊的透明背景,其实就是一个毛玻璃效果,用户可以看到毛玻璃下面的应用或者列表,依然时活动的状态,这就是我说的苹果的动态模糊效果。见下图

一.实现原理

先说原理,要实现一个动态模糊的遮罩,主要有两个技术难点。

  • 1.动态遮罩:动态遮罩,什么意思呢?就是我们有一张图,这张图中的图像是会动的。里面的内容是什么呢?就是图片的层级下面一层UI的内容。这个主要原理是使用Unity ShaderLab的GrabPass实现图像抓取。
  • 2.模糊效果:模糊的效果肯定是使用shader,有一种模糊大家应该都听说过,那就是’'高斯模糊",高斯模糊的算法是一个最长常用的模糊图像算法,因为高斯模糊的效果非常的好。

下面我们来详细解释

二.ShaderLab:GrabPass

语法

GrabPass 包含在子着色器内部。它可采用两种形式:

  • 简单的 GrabPass { } 可将当前屏幕内容抓取到某个纹理中。在随后的通道中可通过 _GrabTexture 名称访问该纹理。注意:这种抓取通道的形式将为使用它的每个对象执行耗时的屏幕抓取操作。
  • GrabPass { "TextureName" } 可将当前屏幕内容抓取到纹理中,但仅为使用给定纹理名称的第一个对象在每一帧执行一次该操作。在后续通道中可通过给定纹理名称访问该纹理。场景中有多个对象在使用 GrabPass 时,这种方法更高效。

此外,GrabPass 还可以使用

你可能感兴趣的:(unity精华)