Unity 스크립터블 렌더 파이프라인 소개
이 문서는 Unity의 스크립터블 렌더 파이프라인(SRP)에 대해 설명하며, URP(유니버설 렌더 파이프라인)와 HDRP(고해상도 렌더 파이프라인)의 작동 방식을 포함합니다. SRP를 사용하면 C# 스크립트를 통해 렌더링 커맨드를 예약하고 설정할 수 있습니다.
스크립터블 렌더 파이프라인의 구성 요소
- 렌더 파이프라인 인스턴스
- 렌더 파이프라인의 기능을 정의하는 클래스의 인스턴스입니다.
RenderPipeline을 상속하고,Render()메서드를 오버라이드합니다.- 렌더 파이프라인 에셋
- 사용할 렌더 파이프라인 인스턴스 및 구성 데이터를 저장하는 Unity 프로젝트 에셋입니다.
RenderPipelineAsset을 상속하고,CreatePipeline()메서드를 오버라이드합니다.
자세한 정보는 "렌더 파이프라인 에셋 및 렌더 파이프라인 인스턴스 만들기"를 참조하세요.
ScriptableRenderContext
ScriptableRenderContext는 커스텀 C# 코드와 Unity의 저수준 그래픽스 코드 간의 인터페이스 역할을 합니다. 이를 이용하여 렌더링 커맨드를 예약하고 실행할 수 있습니다.
엔트리 포인트 및 콜백
SRP로 작업할 때 Unity가 특정 시점에 C# 코드를 호출하도록 설정할 수 있습니다.
- RenderPipeline.Render: SRP의 메인 진입점으로, Unity가 자동으로 호출합니다.
- RenderPipelineManager: 이벤트 구독을 통해 렌더 루프의 특정 지점에서 커스텀 코드를 실행할 수 있습니다.
이벤트 목록: |이벤트|설명| |---|---| |beginFrameRendering|프레임 시작 시 호출됩니다.| |beginContextRendering|특정 컨텍스트 시작 시 호출됩니다.| |endFrameRendering|프레임 종료 시 호출됩니다.| |endContextRendering|특정 컨텍스트 종료 시 호출됩니다.| |beginCameraRendering|카메라 렌더링 시작 시 호출됩니다.| |endCameraRendering|카메라 렌더링 종료 시 호출됩니다.|
활용 예제
예제 1: 커스텀 렌더링 구현
목표: 매 프레임 시작 시 특정 처리를 추가합니다.
public class CustomRenderPipeline : RenderPipeline
{
public CustomRenderPipeline()
{
// 초기화 로직
}
protected override void Render(ScriptableRenderContext context, Camera[] cameras)
{
foreach (var camera in cameras)
{
// 카메라에 대한 렌더링 처리 로직
}
}
}
예제 2: 렌더 파이프라인 에셋 생성
목표: 렌더 파이프라인을 프로젝트에 추가합니다.
[CreateAssetMenu(menuName = "Rendering/CustomRenderPipeline")]
public class CustomRenderPipelineAsset : RenderPipelineAsset
{
protected override IRenderPipeline InternalCreatePipeline()
{
return new CustomRenderPipeline();
}
}
이와 같은 방식으로 Unity의 스크립터블 렌더 파이프라인을 활용하여 게임의 그래픽스를 사용자 정의할 수 있습니다.
이 문서는 Unity Technologies의 저작권이 있으며, 해당 문서에 대한 더 자세한 정보는 Unity 공식 웹사이트에서 확인할 수 있습니다.