Unity为渲染目标纹理定义了一种专门的纹理类型——渲染纹理(Render Texture)。在Unity中使用渲染纹理通常有两种方式:一种方式是Project目录下创建一个渲染纹理,然后把某个摄像机的渲染目标设置成该渲染纹理,这样一来该摄像机的渲染结果就会实时更新到渲染纹理中,而不会显示在屏幕上。使用这种方法,我们还可以选择渲染纹理的分辨率、滤波模式等纹理属性。另一种方式是在屏幕后处理是使用GrabPass命令或OnRenderImage函数来获取当前屏幕图像,Unity会把这个屏幕图像放到一张和屏幕分辨率等同的渲染纹理中。

  1. 镜子效果[UnityShader入门精要读书笔记]24.渲染纹理
  2. 玻璃效果[UnityShader入门精要读书笔记]24.渲染纹理[UnityShader入门精要读书笔记]24.渲染纹理[UnityShader入门精要读书笔记]24.渲染纹理[UnityShader入门精要读书笔记]24.渲染纹理[UnityShader入门精要读书笔记]24.渲染纹理

渲染纹理和GrabPass的不同:

  • 渲染效率上,渲染纹理要好于GrabPass,尤其是移动设备。使用渲染纹理我们可以自定义渲染纹理的大小,尽管这种方法需要把部分场景再次渲染一遍,但我们可以通过调整摄像机的渲染层来减少二次渲染时的场景大小,或使用其他方法来控制摄像机是否需要开启。而使用GrabPass获取到的图像分辨率和显示屏幕是一致的,这意味着在一些高分辨率的设备上可能造成严重的带宽影响。而且在移动设备上,GrabPass虽然不会重新渲染场景,但它往往需要CPU直接读取后备缓冲中的数据,破坏了CPU和GPU之间的并行性,这是比较耗时的,甚至在一些移动设备上是不支持的。

在Unity5中,Unity引入了命令缓冲(Command Buffers)来允许我们扩展Unity的渲染流水线。使用命令缓冲我们可以得到类似抓屏的效果,它可以在不透明物体渲染后把当前的图像复制到一个临时的渲染目标纹理中,然后在那里进行一些额外的操作。

相关文章:

  • 2021-12-25
  • 2022-02-28
  • 2021-12-30
  • 2021-07-25
  • 2021-07-18
  • 2021-10-08
  • 2021-07-12
猜你喜欢
  • 2021-10-20
  • 2021-11-15
  • 2021-10-23
  • 2022-12-23
  • 2021-09-29
  • 2021-05-17
  • 2021-06-20
相关资源
相似解决方案