包含此页的版本:
不含此页的版本:
当 Unity 更新自定义时渲染纹理(Render Texture) 一种特殊类型的纹理,在运行时创建和更新。要使用它们,请先创建一个新的渲染纹理,并指定要渲染到其中的摄像机之一。然后,你可以在材质中使用渲染纹理,就像使用常规纹理一样。更多信息
请参阅术语表,默认情况下,它使用材质一次性更新整个纹理。自定义渲染纹理(Custom Render Texture) 允许你定义部分更新区域。您可以使用它来定义任意数量的区域以及处理区域的顺序。
您可以将更新区域用于各种目的。例如,你可以有多个小区域将水滴溅到纹理上,然后执行完整通道来模拟涟漪。当您知道不需要更新完整纹理时,这也可以用作优化。
更新区域具有自己的一组属性。更新区域空间在显示屏中可见。坐标取决于纹理的 维度 :2D 表示 2D 和立方体纹理,3D 表示 3D 纹理。
你可以在脚本API中访问大多数自定义渲染纹理功能。您还可以使用脚本更改材质参数、更新频率、更新区域、请求更新等。
当 Unity 更新或初始化自定义渲染纹理时,它会使用当前属性来渲染下一帧。这保证了使用此纹理的任何材质都具有最新的结果。例如,在以下脚本中,Unity 使用第二个 Update Zone 数组执行两次更新:
customRenderTexture.updateZones = updateZones1;
customRenderTexture.Update();
customRenderTexture.updateZones = updateZones2;
customRenderTexture.Update();
注意:Unity 不会在调用 Custom Render Texture 的同时更新或初始化 Custom Render TextureUpdate()或Initialize().这是因为 Unity 总是在下一帧开始时更新和初始化自定义渲染纹理。
你可以对自定义渲染纹理进行双缓冲。为此,请在 Custom Render Textures 组件中启用 Double Buffered,或使用CustomRenderTexture.doubleBuffered.
双缓冲意味着在一个自定义渲染纹理中,Unity 可以在每次更新后交换两个纹理。这允许你在 自定义渲染纹理(Custom Render Texture) 中写入新结果时读取上次更新的结果。
如果着色器在 GPU 上运行的程序。更多信息
请参阅术语表需要使用 Unity 已经在纹理中写入的内容,但不能将这些值与经典混合模式混合。如果着色器必须对不同的采样,这也是必需的像素计算机图像中的最小单位。像素大小取决于您的屏幕分辨率。像素光照是在每个屏幕像素下计算的。更多信息
请参阅术语表从前面的结果。
性能警告:双缓冲目前涉及每次交换时的纹理副本,这可能会导致性能下降,具体取决于执行频率和纹理的分辨率。