일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- OculusMotionVectorPass
- 게임 수학
- C언어
- Cell Shader
- URP로 변경
- 3d
- Private Bytes
- ASW(Application SpaceWarp)
- 프로그래밍 기초
- Windows Build
- 가상 바이트
- 벡터
- Specular
- Cell Look
- 메모리 누수
- Rim Light
- Cartoon Rendering
- 작업 집합
- ColorGradingLutPass
- URP
- 개인 바이트
- working set
- Virtual Byte
- AppSW
- VR
- Three(Two) Tone Shading
- Toon Shader
- Today
- Total
WinCNT
URP(Universal Render Pipeline)란? 본문
※URP에 대해서 공부하면서 알게 된 것을 정리하는 페이지입니다
입사 첫 날
URP에 관한 일을 하게 됐지만 여러 사정으로 인해 가르쳐 줄 사람이 없는 상황에 처하게 됐다…;;
다행히 이럴 상황을 대비해서 입문서를 사오기도 했고, 필요한 자료도 받았으니 이를 토대로 URP에 대해서 공부하면서 알게 된 내용을 정리해보려고 한다.
(참고 문헌, 참고 사이트는 밑에 따로 정리함)
URP(Universal Render Pipeline)를 위한 사전 지식
URP를 직역하면 범용 렌더 파이프라인이다
그러니 다음에 대한 사전 지식이 있으면 URP를 이해하는데 도움이 될…지도?
- 렌더 파이프라인(렌더링 파이프라인)에 대한 지식
- 범용이란 단어가 붙은 배경
렌더 파이프라인(렌더링 파이프라인)에 대해
일단 복습 겸 개념을 다시 정리해보자면, **렌더 파이프라인(혹은 렌더링 파이프라인)**이란
모델 데이터의 입력에서 출력까지의 렌더링을 위한 절차라고 할 수 있다
DirectX로 예를 들면, 모델을 입력 조립 → 버테스 쉐이더 → 레스터라이저 → 픽셀 쉐이더 → 출력 병합 단계(더 추가할 수 있음) 등을 거쳐서 화면에 출력하기까지의 절차라고 생각하면 될 것 같다
- DirectX에서의 렌더링 파이프라인 전체 구조
이중 몇몇 단계(특히 버텍스 쉐이더나 픽셀 쉐이더)는 프로그래밍이 가능하기 때문에 상황에 따라서는 다른 렌더 파이프라인을 이용해서 오브젝트들을 그리곤 한다
💡 여담이지만 파이프라인이란 단어가 붙어서인지 “이 오브젝트는 ○○ 렌더 파이프라인을 탄다”라는 식으로 말하기도 한다
또한 렌더링의 하위로 패스(Pass)라는 용어가 있는데 실제로 그리거나 가공하는 역할을 담당한다(Depth, Shadow, Opaque 등)
범용(Universal)이란 단어가 붙은 배경
범용이란 단어가 붙었다는 것은 반대로 범용이 아닌 RP도 있다는 의미일까?
대답은 “정답이다!”이다
밑에 좀 더 자세히 정리하겠지만 여기서 간단히 설명하자면
URP는 유니티의 렌더링 파이프라인인 **SRP(Scriptable Render Pipeline)**의 템플릿의 한 종류이다
참고로 전에는 LWRP(Lightweight Render Pipeline), 즉 경량 렌더 파이프라인이라는 이름이었다
그런데 경량이란 단어가 저사양 그래픽만을 다룬다는 이미지를 줄까 우려되어서 Unity2019.3에서 URP로 이름을 변경하였다고 한다
모든 플랫폼에서 돌아가는 고사양 그래픽을 궁극적인 목표로 두고 있기 때문이라나 뭐라나…
Unity의 렌더링 파이프라인
사전 지식을 쌓았으니(오히려 궁금증이 더 깊어졌을 수도 있지만) 이제는 본격적으로 정리해보자
Unity의 렌더링 파이프라인에 대해 정리하자면 다음과 같다
- BRP(Built-in Render Pipeline, 내장 렌더 파이프라인)
- SRP(Scriptable Render Pipeline, 스크립터블 렌더 파이프라인)
- HDRP(High Definition Render Pipeline, 고해상도 렌더 파이프라인)
- URP(Universal Render Pipeline, 범용 렌더 파이프라인)
하나씩 살펴보도록 하자
BRP(Built-in Render Pipeline, 내장 렌더 파이프라인)
내장 렌더 파이프라인(BRP)는 유니티의 디폴트 렌더링 파이프라인이다
Unity에서 새롭게 SRP를 제공하게 된 이후로, 기존의 렌더링 파이프라인을 구분하기 위해 BRP라고 부르게 되었다
💡 유니티에서 빈 프로젝트를 만들게 되면 이쪽이 설정된다
SRP(Scriptable Render Pipeline, 스크립터블 렌더 파이프라인)
Unity에서 2018년에 새롭게 선보인 렌더링 파이프라인이다
이름에서부터 알 수 있듯이 스크립트(C#)를 통해 렌더링의 세세한 조정이 가능하다
하지만 렌더링 파이프라인을 제로부터 구축하는 것은 뼈 빠지는 일…
(필자의 경우는 기존의 자체 엔진과 예제로 다시 재구축해서 박스를 출력하는데에 1~2주 걸렸다…)
그래서 Unity에서는 미리 템플릿을 준비해뒀는데 그것이 HDRP와 URP이다
HDRP와 URP
HDRP(High Definition Render Pipeline)란?
HDRP를 직역하면 고해상도 렌더 파이프라인이다
말 그대로 고해상도의 실사풍 렌더링을 위한 렌더링 파이프라인이며, 하이엔드PC 등의 기기가 대상이라고 한다
💡 필자도 처음에 헷갈렸지만 HDR하고는 직접적인 관련이 없다 사실 HDR은 High Dynamic Range의 줄임말이라 딱히 의미가 겹치지도 않았다…
URP(Universal Render Pipeline)란?
URP를 직역하면 범용 렌더 파이프라인 정도가 적당할 것이다
Unity가 2019년 즈음부터 표준 렌더링 파이프라인으로 밀고 있으며, 모바일이나 VR기기 등의 모든 플랫폼에서 고품질의 그래픽을 돌릴 수 있는 것을 목표로 하고 있다
이것저것 썼지만 결국 URP란 프로그래머(혹은 TA)의 입장에서 보면 쉐이더나 렌더링을 제어하는 프로그래밍이라고 생각해도 될 것 같다
하지만 프로그래밍 대신에 Shader Graph를 사용할 수 있거나 모바일에서도 사용 가능할 정도의 경량이라는 것이 기존의 렌더링 파이프라인과의 차별점이라 할 수 있다
그 외에도
- Particle System의 진화판인 「Visual Effect Graph」
- 2D 게임에 라이트를 도입할 수 있는 「Light 2D」
와 같은 새로운 기능도 사용할 수 있다고 한다
주의해야 할 점은 BRP와 호환이 되지 않아서 에셋 등을 살 때에는 주의해야 한다
💡 정확히는 BRP용 표준 머티리얼은 URP용으로 변환할 수 있지만 에셋의 독자적인 쉐이더를 사용한 머티리얼은 변환할 수 없기 때문에 주의해야 한다는 뜻
URP 프로젝트 생성 방법
URP의 생성 방법은 매우 간단했다
프로젝트를 만들 때 URP가 붙어 있는 템플릿을 선택하면 끝!
참고로 HDRP 프로젝트를 만들고 싶다면 HDRP가 붙어 있는 템플릿을 선택하면 된다
자세히 알아보기를 누르면 렌더 파이프라인에 URP가 설정된 것을 알 수 있다
일반 프로젝트에서 URP로 바꾸고 싶은 경우는 윈도우 ⇒ 패키지 관리자에서 Universal RP를 찾아서 설치하면 된다
마무리
지금까지 URP란 무엇인가, URP 프로젝트를 생성하려면 어떻게 해야 하는가에 대해서 정리해보았다
실제로 URP를 이용에 관한 내용은 페이지를 나눠서 작성하려고 한다
'Unity > URP or Shader 관련' 카테고리의 다른 글
URP로 Toon Shader 만들기 -Three(Two) Tone Shading 2- (0) | 2023.02.06 |
---|---|
URP로 Toon Shader 만들기 -Three(Two) Tone Shading 1- (0) | 2023.02.02 |
URP로 Toon Shader 만들기 -카툰 렌더링에 대해서- (0) | 2023.01.30 |
URP 쉐이더 파일 작성 (0) | 2023.01.23 |
URP의 쉐이더 그래프 에디터의 구성 (0) | 2023.01.19 |