Unity 스크립터블 렌더 파이프라인 가이드
개요
이 문서는 Unity의 스크립터블 렌더 파이프라인(SRP)에서 렌더링 커맨드를 예약하고 실행하는 방법을 간단하게 설명합니다. SRP는 커스텀 렌더 파이프라인을 만들 수 있도록 해 주며, 이 과정에서 C# 스크립트를 사용하여 Unity의 저수준 그래픽스 아키텍처와 상호작용할 수 있습니다.
SRP에서 렌더링 커맨드 예약 방법
렌더링 커맨드는 두 가지 방법으로 예약할 수 있습니다:
- CommandBuffer를 사용: CommandBuffer를 만들어 ScriptableRenderContext에 전달합니다.
- API 호출: ScriptableRenderContext의 메서드를 직접 호출합니다. 예를 들어:
Cull
DrawRenderers
이렇게 예약된 커맨드는 ScriptableRenderContext.Submit
을 호출한 후 실행됩니다. 이는 CommandBuffer를 사용하든지 API를 호출하든지 동일한 방식으로 처리됩니다.
예제 코드
아래의 코드는 현재의 렌더 타겟을 지우기 위해 CommandBuffer를 사용하는 예시입니다.
using UnityEngine;
using UnityEngine.Rendering;
public class ExampleRenderPipeline : RenderPipeline
{
public ExampleRenderPipeline() {
}
protected override void Render(ScriptableRenderContext context, Camera[] cameras) {
// CommandBuffer를 생성하고 현재 렌더 타겟을 지우는 명령을 예약합니다.
var cmd = new CommandBuffer();
cmd.ClearRenderTarget(true, true, Color.red);
context.ExecuteCommandBuffer(cmd);
cmd.Release();
// Scriptable Render Context에 예약된 커맨드를 수행하도록 Unity에 지시합니다.
context.Submit();
}
}
커맨드 버퍼 즉시 실행
커맨드 버퍼를 즉시 실행하려면 Graphics.ExecuteCommandBuffer
를 호출하면 됩니다. 이 방법은 렌더 파이프라인 외부에서 발생하는 API입니다.
커스텀 렌더 파이프라인 생성
SRP를 사용하여 커스텀 렌더 파이프라인을 만드는 과정에서는 위에서 설명한 렌더링 커맨드를 예약하는 방식이 핵심으로 작용합니다.
참고
커맨드 버퍼를 통해 예약할 수 있는 다양한 명령에 대한 자세한 내용은 커맨드 버퍼 API 문서를 참조하시기 바랍니다.
활용 예제
- 게임 오브젝트의 상태에 따라 렌더링 커맨드 변경: 예를 들어, 특정 게임 오브젝트가 활성화되면 다른 색으로 화면을 지우도록 설정할 수 있습니다.
- UI 요소의 렌더링 최적화: UI 레이어의 경우, 기본 렌더링과는 별도로 커맨드 버퍼를 사용하여 렌더링 성능을 향상시킬 수 있습니다.
위 가이드를 통해 Unity의 스크립터블 렌더 파이프라인에 대한 이해를 돕고 직접 응용할 수 있는 기반이 되길 바랍니다.