ScriptableRenderFeature API를 사용하여 URP(유니버설 렌더 파이프라인) 프레임 렌더링 루프에 스크립터블 렌더 패스를 삽입합니다.
다음 단계를 따르십시오.
새 C# 스크립트를 생성합니다.
코드를 ScriptableRendererFeature 클래스에서 상속하는 클래스로 교체합니다.
using UnityEngine;
using UnityEngine.Rendering.Universal;
public class MyRendererFeature : ScriptableRendererFeature
{
}
클래스에서 Create 메서드를 오버라이드합니다. 예시:
public override void Create()
{
}
URP는 다음 이벤트에서 Create 메서드를 호출합니다.
Create 메서드에서 스크립터블 렌더 패스의 인스턴스를 생성하고 렌더러에 주입합니다.
예를 들어 RedTintRenderPass라는 스크립터블 렌더 패스가 있는 경우 다음을 수행합니다.
// Define an instance of the Scriptable Render Pass
private RedTintRenderPass redTintRenderPass;
public override void Create()
{
// Create an instance of the Scriptable Render Pass
redTintRenderPass = new RedTintRenderPass();
// Inject the render pass after rendering the skybox
redTintRenderPass.renderPassEvent = RenderPassEvent.AfterRenderingSkybox;
}
AddRenderPasses 메서드를 오버라이드합니다.
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
{
}
URP는 각 카메라에 대해 프레임마다 AddRenderPasses 메서드를 호출합니다.
EnqueuePass API를 사용하여 스크립터블 렌더 패스를 프레임 렌더링 루프에 주입합니다.
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
{
renderer.EnqueuePass(redTintRenderPass);
}
이제 활성 URP 에셋에 스크립터블 렌더러 기능을 추가할 수 있습니다. 자세한 내용은 렌더러에 렌더러 기능을 추가하는 방법을 참조하십시오.
다음은 RedTintRenderPass라는 스크립터블 렌더 패스를 사용하는 스크립터블 렌더러 기능의 완성된 코드 예시입니다.
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
public class MyRendererFeature : ScriptableRendererFeature
{
private RedTintRenderPass redTintRenderPass;
public override void Create()
{
redTintRenderPass = new RedTintRenderPass();
redTintRenderPass.renderPassEvent = RenderPassEvent.AfterRenderingSkybox;
}
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
{
renderer.EnqueuePass(redTintRenderPass);
}
}