컴퓨트 셰이더
GPU 인스턴싱

그래픽스 커맨드 버퍼

커맨드 버퍼를 통해 Unity의 빌트인 렌더 파이프라인을 확장할 수 있습니다. 커맨드 버퍼에는 카메라 렌더링 동안 다양한 지점에서 실행되는 렌더링 커맨드 리스트가 들어 있습니다. 커맨드 버퍼가 실행할 Unity 빌트인 렌더 파이프라인의 포지션을 지정하려면 CameraEvent 열거형을 사용하십시오.

예를 들어 AfterGBuffer CameraEvent가 포함된 커맨드 버퍼를 사용하면 파이프라인이 모든 불투명 게임 오브젝트를 처리한 후 추가 게임 오브젝트를 디퍼드 파이프라인으로 렌더링할 수 있습니다.

아래에는 카메라가 포워드 또는 디퍼드 파이프라인을 사용하여 Unity의 씬을 렌더링하는 고급 레벨의 개요가 나와 있습니다.

  • 검은색 상자는 내부 Unity 프로세스를 나타냅니다.
  • 파란색 상자는 커맨드 버퍼를 추가할 수 있는 CameraEvent를 나타냅니다.

See the CommandBuffer Class and the CameraEvent Enum for more information. You can also use Command buffers in conjunction with, or as a replacement for, image effects.

예제 코드

다음 예제 Unity 프로젝트는 커맨드 버퍼를 통해 만들 수 있는 일부 효과를 보여줍니다. RenderingCommandBuffers.zip.

흐릿한 굴절

이 씬은 흐릿한 굴절을 만들기 위해 사용할 수 있는 방법을 보여줍니다. Unity 불투명 오브젝트와 스카이박스를 렌더링하고 나면 현재 이미지를 임시 렌더 타겟으로 복사한 후 흐릿하게 만듭니다. 그런 다음 글래스 셰이더가 흐릿해진 이미지를 샘플링하고, 노멀 맵을 사용하여 굴절을 시뮬레이션하기 위한 UV 좌표를 오프셋합니다. 이 방법은 셰이더 GrabPass와 유사합니다.

디퍼드 파이프라인의 커스텀 면 광원

이 씬은 커스텀 디퍼드 구체 모양 및 튜브 모양 광원을 만들기 위한 방법을 보여줍니다. Unity가 일반 디퍼드 라이트 패스를 처리하고 나면 각 커스텀 광원에 대한 구체를 그립니다. 그런 다음 각 구체는 셰이더를 사용하여 조명을 계산한 후 라이팅 버퍼에 추가합니다.

디퍼드 파이프라인의 데칼

이 씬은 디퍼드 데칼을 처리하기 위한 기본 방식을 보여줍니다. Unity가 G버퍼를 처리하고 나면 각 데칼을 그리고 G버퍼의 콘텐츠를 수정합니다. 이 방법은 Unity가 디퍼드 파이프라인에서 광원을 처리하는 방식과 유사하지만, 조명을 축적하는 것이 아니라 G버퍼 텍스처를 수정한다는 점에서는 차이가 있습니다. 이 방법은 각 데칼을 상자로 처리하고, 상자 영역 내 지오메트리에만 영향을 줍니다.

컴퓨트 셰이더
GPU 인스턴싱