34.高级纹理-渲染纹理-渲染目标纹理是什么
34.1 知识点
渲染目标纹理是什么
渲染目标纹理(Render Target Texture)是一种特殊类型的纹理。在一般情况下,摄像机的渲染结果会输出到颜色缓冲区,最终将图像渲染到设备屏幕上供玩家观看。
然而,渲染目标纹理允许我们将渲染结果直接写入某一张纹理中。这种方式可以用于处理各种特殊效果,比如:镜子、玻璃、屏幕后处理、阴影映射等等。
在 Unity 中,渲染目标纹理(Render Target Texture)通常与渲染纹理(Render Texture)互换使用,实际上这两个术语是指同一个概念。我们在实际使用中,更常听到的是“渲染纹理”这一术语。
通俗来说,渲染纹理就是将渲染结果存储到一个纹理对象中,以便在后续的渲染步骤中使用。
它的作用体现在:
在进行 Shader 开发时,我们经常希望某个摄像机的渲染结果不直接显示在屏幕上,而是可以将其结果输出到纹理中,进行二次处理或利用。
Unity中的渲染目标纹理
渲染纹理(Render Texture)
Unity 引擎提供了专门的纹理类型——渲染纹理(Render Texture)。我们可以在 Project 窗口中右键点击选择 Create -> Custom Render Texture
来创建。通过对该纹理进行相关设置后,我们可以将其关联到摄像机组件的 Target Texture
中。这样,摄像机渲染的内容就会直接写入该纹理。除了手动创建渲染纹理外,我们还可以通过代码动态创建并关联该纹理。
在实际应用中,比如小地图的渲染,就常常使用这种方式。
GrabPass
在 Unity Shader 中,我们可以在 Pass 渲染通道中使用 GrabPass
指令。通过 GrabPass
,我们可以捕获当前屏幕内容,并将其保存为纹理,供后续的渲染过程中使用。
OnRenderImage
在继承了 MonoBehaviour 的脚本中,OnRenderImage
函数可以用于获取摄像机渲染完成后的图像。这个函数常用于实现自定义的图像后处理效果,它的作用类似于将摄像机渲染的图像进行二次处理。
34.2 知识点代码
Lesson34_高级纹理_渲染纹理_渲染目标纹理是什么.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson34_高级纹理_渲染纹理_渲染目标纹理是什么 : MonoBehaviour
{
void Start()
{
#region 知识点一 渲染目标纹理是什么?
//渲染目标纹理(Render Target Texture)是一种特殊类型的纹理
//一般摄像机的渲染结果会输出到颜色缓冲区中
//最终渲染到设备屏幕上,让玩家通过屏幕看见游戏画面
//而渲染目标纹理允许我们将渲染结果直接写入到某一张纹理中
//我们可以利用这个纹理来处理各种特殊效果
//比如:镜子、玻璃、屏幕后处理、阴影映射等等
//在Unity中
//渲染目标纹理(Render Target Texture)通常和渲染纹理(Render Texture)
//可以互换使用,指的相同的概念。
//在实际使用中,我们更常听到的是"渲染纹理"这个术语
//说人话:
//渲染纹理就是
//将渲染结果存储到一个纹理对象中,以便在后续的渲染步骤中使用
//它的作用体现在:
//我们在进行Shader开发时
//我们经常会希望某摄像机不要直接将结果渲染到屏幕上
//而是可以让我们得到它的渲染结果进行二次处理或利用
#endregion
#region 知识点二 Unity中的渲染目标纹理
//常用方法
//1.渲染纹理(Render Texture)
// Unity引擎中提供的一种专门的纹理类型
// 我们可以在Project窗口中右键Create——>Custom Render Texturn创建
// 我们只需要把该纹理进行相关的设置,然后关联到摄像机组件的Target Texture中即可
// 这样对应摄像机渲染的内容就会直接写入到该纹理中
// 我们便可以使用它来进行相关操作
// 注意:除了手动创建,我们也可以通过代码创建并关联
//2.GrabPass
// 在Unity Shader当中
// 我们可以在Pass渲染通道中使用 GrabPass 抓取指令
// 捕获当前屏幕内容并将其保存为纹理,以便在后续的渲染过程中使用
//3.OnRenderImage
// 在继承了MonoBehaviour的脚本中
// 我们可以使用OnRenderImage来获取摄像机渲染完成的图像
// 该函数一般用于实现自定义的图像后处理效果
// 相当于将摄像机渲染完成的图像进行二次处理
//等等
#endregion
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com