렌더러 기능 목록과 바뀐 패스 콜백이 함께 보이는 화면
렌더러 기능 목록과 바뀐 패스 콜백이 함께 보이는 화면

사라진 건 `Configure`와 `Execute`의 짝입니다

기존 커스텀 패스는 Configure에서 임시 렌더 타깃을 잡고 Execute에서 그렸습니다. 렌더 그래프에서는 이 방식이 그대로 남아 있지 않습니다. 패스가 쓰려는 리소스를 미리 선언하고, 그래프가 실제 타깃을 넘겨줍니다. 그래서 카메라 타깃을 암묵적으로 가정하던 코드가 가장 먼저 깨집니다.

한 번에 다 옮기지 않습니다

  1. 깨지는 패스 하나를 고릅니다. 대개 블러나 아웃라인처럼 화면을 다시 읽는 패스입니다.
  2. 그 패스가 읽는 것과 쓰는 것을 종이에 적습니다. 이게 선언 목록이 됩니다.
  3. 나머지 패스는 호환 경로에 두고 이 하나만 옮깁니다.
  4. Render Graph Viewer로 선언한 의존성이 실제와 같은지 봅니다.
class OutlinePass : ScriptableRenderPass
{
    class PassData
    {
        public TextureHandle source;
        public TextureHandle destination;
        public Material material;
    }

    public override void RecordRenderGraph(RenderGraph graph, ContextContainer frame)
    {
        var resources = frame.Get<UniversalResourceData>();
        using var builder = graph.AddRasterRenderPass<PassData>("Outline", out var data);
        data.source = resources.activeColorTexture;
        builder.UseTexture(data.source);
        builder.SetRenderFunc((PassData pass, RasterGraphContext context) =>
            Blitter.BlitTexture(context.cmd, pass.source, new Vector4(1, 1, 0, 0), pass.material, 0));
    }
}

선언하지 않고 쓰면 오류 없이 틀립니다

타깃을 선언 없이 건드리면 그래프가 그 패스를 필요 없는 것으로 판단해 순서를 바꾸거나 빼 버릴 수 있습니다. 화면이 검게 나오거나 효과가 한 프레임 늦게 보이는 증상이 여기서 옵니다. 셰이더를 고치기 전에 선언 목록을 먼저 봅니다.

[Error] pass wrote to a texture it did not declare
[Info]  Render Graph Viewer: Outline has no consumer, culled

커밋을 패스 단위로 쪼갭니다

옮긴 패스가 Frame Debugger에서 이전과 같은 자리에 같은 결과로 보이면 그 패스는 끝났습니다. 다음 패스로 넘어가기 전에 이 하나를 커밋합니다. 여러 패스를 한 커밋에 섞으면 어느 선언이 문제였는지 되짚을 수 없습니다.

검증 범위

공식 문서 대조

검증일

Unity 공식 문서와 본문의 코드·절차를 대조해 공개 준비 상태로 전환했습니다. 별도 Unity 프로젝트나 실기기에서 직접 재현한 결과는 아니며, 특정 버전·기기 문의가 들어오면 해당 환경에서 후속 확인합니다.

확인한 공식 문서URP 렌더 그래프 ↗