Unity 6.3
0 онлайн 89 гостей 3 в системе
Вход

RenderPipeline.ProcessRenderRequests

Declaration

protected void ProcessRenderRequests(Rendering.ScriptableRenderContext context, Camera camera, RequestData renderRequest);

Параметры

Параметр Описание
контекст Контекст для выполнения запроса.
камера Камера для выполнения запроса.
renderRequest Вся необходимая информация о месте назначения для отображения запроса, например, место назначения отображения, уровень mipmap, индекс слоя и т.д. Эта информация зависит от типа RequestData.

Описание

Реализуйте этот метод в пользовательском Scriptable Render Pipeline (SRP) для выполнения запросов рендеринга, поданных с помощью RenderPipeline.SubmitRenderRequest.

Unity вызывает этот метод с конвейером рендеринга, когда вы вызываете RenderPipeline.SubmitRenderRequest или Camera.SubmitRenderRequest. Если вы создаете пользовательский Scriptable Render Pipeline, вы должны реализовать этот метод и RenderPipeline.IsRenderRequestSupported для рендеринга запросов вне цикла рендеринга Unity.

См. также: RenderPipeline.SupportsRenderRequest, RenderPipeline.SubmitRenderRequest.

using UnityEngine;
using UnityEngine.Rendering;
using System.Collections.Generic;

public class ExampleRenderPipelineInstance : RenderPipeline { public ExampleRenderPipelineInstance() { }

override protected bool IsRenderRequestSupported<RequestData>(Camera camera, RequestData data) { // StandardRequest is supported by this render pipeline if (data is StandardRequest) return true;

return false; }

// Process a basic render request to a Texture2D destination with a single mipmap level override protected void ProcessRenderRequests<RequestData>(ScriptableRenderContext context, Camera camera, RequestData renderRequest) { StandardRequest standardRequest = renderRequest as StandardRequest;

if (standardRequest != null) { RenderTexture destination = standardRequest.destination;

// Don't go further if there's no destination texture. if (destination == null) { Debug.LogError("Your render request has no destination texture. Set a destination texture before sending a request"); return; }

int mipLevel = standardRequest.mipLevel; int slice = standardRequest.slice; int face = (int)standardRequest.face;

// If mip is 0 and target is Texture2D, immediately render to the requested destination. if (destination.dimension != TextureDimension.Tex2D || mipLevel != 0) { Debug.LogError("ProcessRenderRequests only support Texture2D destination with a single mipmap level. Adjust your render request"); return; }

// Store data that will be changed. var originalTarget = camera.targetTexture;

camera.targetTexture = destination;

Render(context, new Camera[] { camera });

// Restore data. camera.targetTexture = originalTarget; Graphics.SetRenderTarget(originalTarget); } else { Debug.LogWarning("RenderRequest type: " + typeof(RequestData).FullName + " is either invalid or unsupported by the current pipeline"); } }

override protected void Render(ScriptableRenderContext context, List<Camera> cameras) { // Put your Render method code here } }