Version: Unity 6.0 (6000.0)
언어 : 한국어
URP의 스크립터블 렌더러 기능 소개
URP에서 특정 카메라 유형에 스크립터블 렌더러 기능 적용

URP에서 스크립터블 렌더러 기능 생성

ScriptableRenderFeature API를 사용하여 URP(유니버설 렌더 파이프라인) 프레임 렌더링 루프에 스크립터블 렌더 패스를 삽입합니다.

다음 단계를 따르십시오.

  1. 새 C# 스크립트를 생성합니다.

  2. 코드를 ScriptableRendererFeature 클래스에서 상속하는 클래스로 교체합니다.

    using UnityEngine;
    using UnityEngine.Rendering.Universal;
    
    public class MyRendererFeature : ScriptableRendererFeature
    {
    }
    
  3. 클래스에서 Create 메서드를 오버라이드합니다. 예시:

    public override void Create()
    {
    }
    

    URP는 다음 이벤트에서 Create 메서드를 호출합니다.

    • 스크립터블 렌더러 기능을 처음 로드하는 경우
    • 스크립터블 렌더러 기능을 활성화 또는 비활성화하는 경우
    • 렌더러 기능의 인스펙터 창에서 프로퍼티를 변경하는 경우
  4. 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;
    }
    
  5. AddRenderPasses 메서드를 오버라이드합니다.

    public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
    {
    }
    

    URP는 각 카메라에 대해 프레임마다 AddRenderPasses 메서드를 호출합니다.

  6. 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);
    }
}
URP의 스크립터블 렌더러 기능 소개
URP에서 특정 카메라 유형에 스크립터블 렌더러 기능 적용