版本:Unity 6 (6000.0)
语言:English
为自定义渲染纹理编写着色器
在电影纹理中播放视频

控制自定义渲染纹理的更新时机

更新区域

当 Unity 更新自定义渲染纹理一种特殊类型的纹理,在运行时创建和更新。要使用它们,首先创建一个新的渲染纹理,并指定其中一个摄像机渲染到其中。然后,您可以像使用普通纹理一样在材质中使用渲染纹理。 更多信息
参见 术语表
时,默认情况下,它使用材质一次性更新整个纹理。自定义渲染纹理允许您定义部分更新区域。您可以根据需要定义任意数量的区域以及处理这些区域的顺序。

您可以将更新区域用于各种目的。例如,您可以拥有多个小区域来在纹理上溅射水滴,然后进行全面渲染以模拟涟漪。当您知道不需要更新整个纹理时,这也可以用作优化。

更新区域有自己的一组属性。更新区域空间在显示中可见。坐标取决于纹理的维度:2D 纹理和立方体纹理为 2D,3D 纹理为 3D。

从脚本控制自定义渲染纹理

您可以在脚本 API 中访问大多数自定义渲染纹理功能。您还可以使用脚本更改材质参数、更新频率、更新区域、请求更新等等。

当 Unity 更新或初始化自定义渲染纹理时,它使用当前属性渲染下一帧。这保证了使用此纹理的任何材质都具有最新的结果。例如,在以下脚本中,Unity 使用第二个更新区域数组执行两次更新

customRenderTexture.updateZones = updateZones1;

customRenderTexture.Update();

customRenderTexture.updateZones = updateZones2;

customRenderTexture.Update();

注意:Unity 不会在您调用Update()Initialize()的同时更新或初始化自定义渲染纹理。这是因为 Unity 始终在下一帧开始时更新和初始化自定义渲染纹理。

双缓冲自定义纹理

您可以双缓冲自定义渲染纹理。为此,请在自定义渲染纹理组件中启用双缓冲,或使用CustomRenderTexture.doubleBuffered

双缓冲意味着在一个自定义渲染纹理内有两个纹理,Unity可以在每次更新后交换这两个纹理。这允许您读取上次更新的结果,同时在自定义渲染纹理中写入新结果。

如果着色器在 GPU 上运行的程序。 更多信息
参见 术语表
需要使用 Unity 已经写入纹理的内容,但不能将值与经典混合模式混合,则双缓冲特别有用。如果着色器必须从前面的结果采样不同的像素计算机图像中的最小单位。像素大小取决于您的屏幕分辨率。像素灯光在每个屏幕像素处计算。 更多信息
参见 术语表
,则也需要这样做。

性能警告:双缓冲目前涉及在每次交换时复制纹理,这可能会导致性能下降,具体取决于执行频率和纹理分辨率。

为自定义渲染纹理编写着色器
在电影纹理中播放视频