Camera.SubmitRenderRequest
Declaration
public void SubmitRenderRequest(RequestData renderRequest);Параметры
| Параметр | Описание |
|---|---|
| renderRequest | Вся необходимая информация для выполнения запроса, например, место назначения, уровень mipmap, индекс слоя и т.д. Эта информация зависит от типа RequestData. |
Описание
Отправляет запрос на рендеринг камере вне цикла рендеринга Unity.
Вызов этого метода или RenderPipeline.SubmitRenderRequest для выполнения отображения вне цикла отображения Unity и вывода конвейера отображения в место назначения отображения, указанное в параметре RequestData. Перед отправкой запроса используйте RenderPipeline.SupportsRenderRequest для проверки того, что конвейер отображения поддерживает выбранный вами тип RequestData. Запрос обрабатывается последовательно в вашем скрипте, без использования механизма обратного вызова.
Universal Render Pipeline (URP) поддерживает следующие типы RequestData:
- StandardRequest отображает полный стек камер и выводит результат на указанный объект. Этот запрос применим только к Базовым Камерам.
- ObjectIdRequest отображает объект ID в каждом пикселе и выводит результат на указанную цель. Этот запрос поддерживается только в редакторе.
- UniversalRenderPipeline.SingleCameraRequest рендирует одну камеру и выводит результат на указанный объект. Этот запрос применим только к Базовым Камерам.
High Definition Render Pipeline (HDRP) поддерживает следующие типы RequestData:
- StandardRequest рендирует камеру без произвольных переменных выхода (AOVs) и выводит результат на указанный объект. Он использует отдельную историю камеры от цикла рендеринга, чтобы обеспечить последовательность временных эффектов.
- ObjectIdRequest отображает объект ID на каждом соответствующем пикселе и выводит результат на заданные цели. Поддерживается только в редакторе.
Встроенный Render Pipeline поддерживает только ObjectIdRequest тип запроса.
Дополнительные сведения о том, как выполнить запрос на выполнение в URP, см. Создание запроса отображения в URP.
// This example sends render requests when the GUI button "Render Request" is selected. // To use it, attach the script to a camera and select Enter Play Mode.
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Rendering;
[RequireComponent(typeof(Camera))] public class StandardRenderRequest : MonoBehaviour { [SerializeField] RenderTexture texture2D, texture2DArray, cubeMap, texture3D;
// Create a button you can use to send a render request private void OnGUI() { GUILayout.BeginVertical(); if (GUILayout.Button("Render Request")) { SendRenderRequests(); } GUILayout.EndVertical(); }
// Send render requests outside of Unity render loop void SendRenderRequests() { Camera camera = GetComponent<Camera>();
// Create a standard request. This is supported only in HDRP and URP. RenderPipeline.StandardRequest request = new RenderPipeline.StandardRequest();
// Check if the request is supported by the render pipeline if (RenderPipeline.SupportsRenderRequest(camera, request)) { // Submit the render request to the render pipeline with different destination textures
// Render to a 2D texture request.destination = texture2D;
// Render the camera, and fill the 2D texture with its view camera.SubmitRenderRequest(request);
// Render to a 2D texture array request.destination = texture2DArray; for (int i = 0; i < texture2DArray.volumeDepth; i++) { request.slice = i; // Render the camera and fill slice i of the 2D texture array with its view camera.SubmitRenderRequest(request); }
// Render to a cubemap texture var faces = new[] { CubemapFace.NegativeX, CubemapFace.PositiveX, CubemapFace.NegativeY, CubemapFace.PositiveY, CubemapFace.NegativeZ, CubemapFace.PositiveZ }; request.destination = cubeMap; foreach (var face in faces) { request.face = face; // Render the camera and fill each face of the cubemap texture with its view camera.SubmitRenderRequest(request); }
// Render to a 3D texture request.destination = texture3D; for (int i = 0; i < texture3D.volumeDepth; i++) { request.slice = i; // Render the camera and fill slice i of the 3D texture with its view camera.SubmitRenderRequest(request); } } } }