渲染到渲染纹理
在通用渲染管线 (Universal Render Pipeline, URP) 中,摄像机可以渲染到屏幕或渲染到渲染纹理。默认设置为渲染到屏幕,这也是最常见的用例,但渲染到渲染纹理可以创建 CCTV 摄像机监控器等效果。
如果有一个摄像机渲染到渲染纹理,必须有另一个摄像机随后将该渲染纹理渲染到屏幕。在 URP 中,所有渲染到渲染纹理的摄像机将在所有渲染到屏幕的摄像机之前执行它们的渲染循环。这样可以确保渲染纹理已准备好渲染到屏幕。如需了解 URP 中的摄像机渲染顺序的更多信息,请参阅渲染顺序和过度绘制。
渲染到渲染纹理后再将该渲染纹理渲染到屏幕
在项目中使用 Assets > Create > Render Texture 创建一个渲染纹理资源。 在场景中创建一个四边形。 在项目中创建一个材质,然后选择该材质。在 Inspector 中,将渲染纹理拖到材质的 Base Map 字段中。 在 Scene 视图中,将材质拖到四边形上。 在场景中创建一个摄像机。此摄像机的 Render Mode 默认为 Base,因此是一个基础摄像机 (Base Camera)。 选择该基础摄像机。 在 Inspector 中,滚动到 Output 部分。 将摄像机的 Output Target 设置为 Texture,然后将渲染纹理拖到 Texture 字段上。 在场景中创建另一个摄像机。此摄像机的 Render Mode 默认为 Base,因此是一个基础摄像机。 将四边形放置在新基础摄像机的视图中。
第一个摄像机将其视图渲染到渲染纹理。第二个摄像机将包含渲染纹理的场景渲染到屏幕上。
可通过设置摄像机的 Universal Additional Camera Data 组件的 cameraOutput
属性,在脚本中设置摄像机的 Output Target,如下所示:
myUniversalAdditionalCameraData.cameraOutput = CameraOutput.Texture;
myCamera.targetTexture = myRenderTexture;