Unity 검색

유니버설 렌더 파이프라인용 최신 패키지 샘플

2021년 12월 8일 테크놀로지 | 10 분 소요
Package Samples header
Package Samples header
다루는 주제
공유

새로운 패키지 샘플을 통해 URP(유니버설 렌더 파이프라인)의 향상된 카메라 스태킹, 데칼, 렌더러 기능을 확인해 보세요.

이 콘텐츠는 Targeting Cookies 카테고리를 수락해야만 동영상을 시청할 수 있도록 허용하는 타사 제공업체에서 호스팅합니다. 이러한 제공업체의 비디오를 보려면 쿠키 환경 설정에서 Targeting Cookies 카테고리를 수락하시기 바랍니다.

프로젝트로 샘플을 임포트하려면 패키지 관리자 창을 열어 Universal RP 패키지를 선택하고 Samples 섹션을 펼쳐 Import를 클릭합니다. Assets 폴더에 특정 URP 기능을 보여 주는 관련 씬과 함께 새로운 Samples 폴더가 생성됩니다.

씬에는 프로젝트에 스크린 공간 앰비언트 오클루전 추가 등 기본적인 기능이 포함되어 있습니다. 여러 카메라와 커스텀 렌더러 기능을 사용하여 모래 자국 효과를 만드는 등 고급 예제도 더 많이 제공됩니다. Unity 2021.2 버전에서 샘플을 로드하여 직접 사용해 보시기 바랍니다.

카메라 스태킹

카메라 스태킹 시스템의 다양한 사용 사례를 확인할 수 있습니다. 예를 들어, 고급 3D Skybox 예제에서는 멀리 있는 건물과 행성 등 발코니에서 갈 수 없는 3D 월드의 일부분을 오버레이 카메라로 그릴 수 있는 방법을 설명합니다.

직관적으로 생각하면 기본 카메라가 도시 풍경을 그린 다음 오버레이 카메라가 맨 위에 발코니를 그리도록 하는 게 좋을 것 같지만, 이 방법으로는 오버드로우가 발생할 수 있습니다. 샘플을 보면 발코니 카메라를 기본 카메라로 사용하고 Pipeline Asset의 스텐실 설정에서 오버레이 카메라는 기본 카메라가 작성하지 않은 부분의 도시 풍경을 픽셀 단위로 그리도록 설정되어 있는 것을 확인할 수 있습니다. 

더 구체적으로 말하자면, 발코니 카메라는 스텐실 버퍼의 값을 1로 지정하고 오버레이 카메라는 스텐실 버퍼 값이 다른 영역만을 그립니다. 스텐실 버퍼가 뎁스 버퍼에 포함되어 있기 때문에 이 방법을 사용하려면 오버레이 카메라에서 Don't Clear 옵션을 선택 해제해야 합니다. 옵션을 선택 해제하지 않으면 스텐실 버퍼가 뎁스 버퍼와 함께 지워집니다.

데칼

Decal Projector는 불필요한 고해상도 텍스처 없이 표면 데이터를 생성할 때 유용합니다. Decal Projector를 통해 총알 구멍이나 액체가 튄 자국 등 보다 역동적인 효과를 만들 수 있으며 셰이더 그래프 기능을 사용하면 데칼 시스템을 활용하여 다양하고 복잡한 효과를 제작할 수 있습니다.

Paint Splat 예제에서는 데칼과 셰이더 그래프를 함께 사용해 절차적 효과를 만드는 방법을 보여 줍니다. 데칼의 알파는 월드 포지션을 기반으로 하는 UV 좌표로 노이즈 텍스처를 샘플링하여 정해집니다.

가장 간단하게 데칼의 알파를 지정하려면 월드 공간에서 포지션 노드의 x, y 좌표를 가져와 UV에 사용해야 합니다. 하지만 이 방법은 데칼이 z-평면에만 제대로 투영될 수 있어 상당히 제한적입니다.

따라서 하위 그래프를 정의하여 축이 Decal Projector와 정렬되는 월드 공간 UV를 제공해야 합니다. 이 방식으로 U, V축을 항상 Projector Transform의 X, Y축에 정렬할 수 있습니다.

Screenshot

이 방법의 흔한 부작용은 특히 프로젝터가 원점에서 멀리 회전할 때 UV가 움직인다는 점입니다. 하지만 페인트 자국은 생성된 후 움직이는 것이 아니기 때문에 문제가 되지 않습니다.

Proxy Lighting 씬에서 원뿔 셰이프의 표면 이미시브 컬러를 수정할 때도 데칼을 사용합니다. 데칼을 사용하면 이 예제에 실시간 광원이 없음에도 표면이 스포트라이트를 받고 있는 것처럼 보입니다.

마찬가지로 캡슐 아래에 데칼을 사용하여 그림자를 표현할 수 있습니다. 이와 같은 '블롭 섀도우'는 실시간 광원이나 그림자를 사용하기에는 리소스가 부족한 비디오 게임에서 일반적으로 사용되는 기술입니다.

이 같은 효과를 만들기 위해서는 오브젝트 모드의 포지션 노드가 가장 중요합니다. 포지션 노드가 Decal Projector 바운딩 박스의 경계 내에서 프래그먼트의 3D 포지션을 반환하기 때문입니다.

렌더러 기능

커스텀 렌더러 기능은 URP의 커스터마이즈 기능을 잘 보여 줍니다. 렌더러 기능 샘플에는 URP에서 제공하는 기존 렌더러 기능의 일부를 사용하는 방법뿐만 아니라, API를 사용하여 나만의 효과를 구현할 수 있는 방법이 소개되어 있습니다.

특히 Keep Frame 예제는 커스텀 렌더러 기능을 사용하여 파이프라인을 수정합니다. 렌더러 기능은 프레임의 끝에서 컬러를 복사한 후, 다음 프레임의 시작 부분에 같은 컬러를 다시 그립니다. URP에서는 Camera Clear Flags가 지원되지 않기 때문에, 이와 같은 렌더러 기능을 사용해 빌트인 렌더 파이프라인의 'Don't Clear' 플래그를 사용하는 효과를 재현할 수 있습니다.

렌더러 기능의 큰 장점 중 하나는 모든 플랫폼에서 사용할 수 있다는 점입니다. 또한 셰이더 그래프와 함께 사용하여 프레임을 그리면서 컬러를 수정할 수 있습니다. 예제 씬에서 프레임을 다시 그리는 데 사용된 머티리얼은 UV를 수정하여 프레임을 회전하고 축소하며, 화면에서 파티클이 효과적으로 소용돌이치게 합니다.

Trail Effect는 Keep Frame 렌더러 기능을 활용하는 하나의 예시입니다. 이 예시에서는 메인 카메라가 아닌 다른 카메라에 사용되는 렌더러에 렌더러 기능을 추가합니다. '트레일 카메라'는 직교 카메라로 씬 아래에 위치하여 위쪽을 가리키고 화면 밖 렌더 텍스처를 렌더링합니다.

Keep Frame 렌더러 기능은 손실된 컬러 데이터가 없는지 확인하는 반면, 렌더러 기능의 셰이더는 선택한 오브젝트의 뎁스와 노멀 방향을 렌더 텍스처에 그려지는 컬러로 인코딩합니다. 빨간색 채널은 뎁스를 저장하고 녹색 채널과 파란색 채널은 노멀 정보를 저장합니다.

이렇게 생성된 '트레일 맵'을 셰이더에서 사용하면 오브젝트 아래의 버텍스를 이동시켜 오브젝트가 눈이나 모래 표면에서 움직일 때 눈이나 모래가 이동하도록 시뮬레이션할 수 있습니다. 샌드 셰이더 그래프에서 트레일 맵을 샘플링하고 블러 처리하여 버텍스를 변위시키고 노멀을 다시 생성합니다.

더 많은 샘플

이 포스팅에서 소개한 샘플은 Unity 2021.2 릴리스에서 사용할 수 있는 샘플 중 극히 일부분에 불과합니다. URP에 새로운 기능이 추가될 때마다 샘플도 릴리스에 맞춰 계속해서 업데이트될 예정입니다.

이번에 소개드린 샘플을 유용하게 활용할 수 있길 바랍니다. 언제든지 포럼 스레드에 피드백과 솔루션 요청을 남겨 주세요.

아티스트 블로그에서 2021.2에 새로 추가된 아티스트를 위한 기능에 대해 자세히 살펴 볼 수 있습니다.

작성자 소개

Jonas Mortensen

테크니컬 아티스트 Jonas Mortensen은 코펜하겐 IT 대학에서 고급 알고리즘에 관한 논문을 작성하여 컴퓨터 과학 석사 학위를 취득한 후 유니티에 입사했습니다. Jonas는 기술적 배경과 아트에 대한 열정을 바탕으로 현재 유니티에서 유니버설 렌더 파이프라인의 기능과 워크플로를 개선하기 위해 노력하고 있습니다.

특히 SRP(스크립터블 렌더 파이프라인)의 기능을 어떻게 커스터마이즈하고 최대한 활용할 수 있는지 사용자에게 알려 주며, 새로운 것을 배우고 자신의 지식을 공유하는 데 관심을 두고 있습니다.

 

2021년 12월 8일 테크놀로지 | 10 분 소요
다루는 주제