Unity 자습서

Universal Render Pipeline 대충이라도 알고 쓰자

개양반 2021. 3. 6.
728x90

* 내가 그래픽 작업자도 아니고 배운다고 써 먹을 수도 없을 거 같아서 딱 필요한 부분만 공부한 내용을 정리해놨다. (특히 까막눈이라서 값이 변경되어도 뭐가 다른지 차이를 모르겠다)

유니티와 언리얼을 비교할때 항상 유니티가 무시 받아왔던 것이 그래픽 관련된 능력이었다. 그래서 유니티에서 새로운 파이프라인을 만들어서 제공했는데 디폴트는 기존에 사용했던 파이프라인이고 설정을 통해 새로운 파이프라인을 사용할 수 있다. 

써 보니깐 대충이라도 알고 쓰는게 디폴트 파이프라인을 사용하는거보다 나은거 같다.

 

가. Universal Render Pipeline 프로젝트 생성

Universal Render Pipeline로 프로젝트를 만드는 방법은 매우 간단하다. 프로젝트를 생성할때 Universal Render Pipeline 프로젝트로 만들면 된다.

프로젝트가 생성되면 이미 세팅된 씬과 예제 파일들이 보인다. 

공부할 거 아니면 필요없는 파일들이다. Setting폴더를 제외하고 다 지워버린다. Setting폴더에는 이미 설정된 PRenderPipelineAsset 들이 있어서 냅둔다. RenderPipelineAsset에 대해서는 아래에서 다루겠다.

 

나. 기존 프로젝트를 Universal Render Pipeline 로 변경

Package Manager에서 Universal RP 를 설치한다.

 

Universal Pipeline 을 사용하려면 Pipeline Asset파일을 만들어야 한다.

아래 이미지처럼 Assets폴더에서 Create -> Rendering -> Universal Render Pipline -> Pipeline Asset 을 만든다.

 

그럼 두개의 파일이 생긴다. 

UniversalRenderPipelineAsset_Renderer 파일은 UniversalRenderPipelineAsset에 연결되어 있는데 내가 딱히 사용할 일은 없을 거 같다. 없으면 안되는 파일이긴 하다.

UniversalRenderPipelineAsset를 사용할거라고 유니티에 알려야 한다.

Project Settings -> Graphics -> Scriptable Render PiplineAsset에 UniversalRenderPipelineAsset를 드래그해서 연결한다.

파이프라인이 변경되어 기존 에셋들이 핑크셋으로 보일 것이다. 

Edit -> Render Pipeline -> Universal Render Pipline -> Upgrade Project Materials to UniversalRP Materials 를 클릭하면 알아서 변경된다.

 

다. 머터리얼

Material 파일을 만들고 해당 Material의 Inspector 를 보면 디폴트로 Shader에 Universal Render Pipeline/Lit 가 설정된걸 알수 있다. 

파이프라인이 변경되어서 Shader를 Universal Render Pipeline 에 있는 것들만 사용해야 한다.

쉐이더 종류는 아래와 같다. 2D, Baked Lit, Lit, Simple Lit, Particle을 많이 사용하게 될거 같다.

2D  2D 프로젝트를 개발할 때 사용합니다.
Autodesk Interactive AutoDesk 응용 프로그램과 조정할때 사용한다고 하는데 내가 사용할 일은 없을거 같다.
Nature  Speed Tree 에 특화된 세이터가 포함되어 있다고 한다. 자세히는 모르겠다.
Particle 이펙트 만들때 사용하면 된다. 
Baked Lit  라이트 맵과 라이트 프로브를 통해 베이크 된 조명 만 필요한 스타일 화 된 게임이나 앱에이 셰이더를 사용합니다. 

이 셰이더는 물리적 기반 셰이딩을 사용하지 않으며 실시간 조명이 없으므로 모든 실시간 관련 셰이더 키워드 및 변형이 셰이더 코드에서 제거되어 계산 속도가 빨라집니다.

* 미리 라이트 관련된 것들을 미리 구워서 실시간으로 계산하지 않을때 이 쉐이더를 사용하면 된다.
Lit  실제 표면을 사실적인 품질로 렌더링 할 수 있게 한다. 무겁지만 Lit 으로 설정하면 대충 이뻐보인다. 디폴트로 설정되어 있다. 
Simple Lit 성능이 좋다. 다만 리얼한 셰이더 느낌이 아니다. 안 이쁘다. 
Lit을 사용하기엔 무겁고 Baked Lit 을 할줄 모른다면 이녀석을 사용해야 한다.
Unlit 전역 조명을 샘플링하는 옵션이있는 조명이없는 셰이더입니다. 이것은 Unity의 스톡 언릿 셰이더를 대체합니다. 

* 검색해서 찾아봤는데 내가 사용할 수 있는 영역은 아닌거 같다. 

 

라. UniversalRenderPipelineAsset

셰이더를 얼마나 무겁게 사실적으로 그릴지 등을 설정하는 파일이다. 

가. Universal Render Pipeline 프로젝트 방식으로 프로젝트로 만들었다면 Setting폴더에 UniversalRP-HighQuality, UniversalRP-LowQuality, UniversalRP-MediumQuality 3개의 파일이 있을 것이다. 파일명 그대로 무거운 퀄리티, 중간 퀄리티, 가벼운 퀄리티 옵션이 미리 설정되어 있는 파일이다.

Project Settings -> Graphics -> Scriptable Render PiplineAsset 에 위 3가지 파일을 드래그해서 어떤 차이가 있는지 비교해 보면 된다. 

UniversalRP-HighQuality 는 무거워서 모바일에는 어울리지 않다.

UniversalRenderPipelineAsset의 설정 값은 General, Quailty, Lighting, Shadow, Post-Processing, Advanced가 있다.

나는 까막눈이라서 아래의 값들이 변경되어도 뭐가 다른지 잘 모르겠다. 빨간색으로 칠한 옵션을 자주 사용할 거 같다. 그 외에는 UniversalRP-LowQuality의 기본 설정값을 그대로 사용할 예정이다.

1. General

Depth Texture와 Opaque Texture 는 카메라가 커스텀 셰이더에 대한 정보를 출력해야 하는 경우에 활성화 할 수 있다. 자세히는 모르겠다. 디폴트는 비활성화이다.

Terrain Holes는 지형을 사용하지 않거나 지형에 구멍이 없는 경우에 비활성화해서 빌드 시간을 단축시킬 수 있다. 유니티의 터레인을 사용하지 않는다면 비활성화 시키면 된다.

 

2. Quailty

HDR는 광범위한 조명 또는 후 처리 효과를 할 수 있다고 한다. 저가형 장치를 대상으로는 맞지 않다. 활성화하면 셰이더가 이쁘게 표현되나 매우 무겁다. 

Anti Aliasing (MSAA) 는 쭉날쭉 한 계단 모양이나 깜박임을 방지하기 위해 객체의 가장자리를 부드럽게하는 데 사용됩니다. 난 까막눈이라서 뭔 차이인지 잘 모르겠다.

Render Scale는 목표 해상도를 조정할 수 있다. 대상 장치의 해상도에 영향을 미치는 것이 아니라 기기에 렌더링할때 렌더링 품질을 낮추거나, 높일때 사용한다. (나는 그냥 1로 사용할 예정이다.)

 

3. Light

그림좌와 조명에 대한 것들이다. 대충 보면 알 수 있다. 

Additional Light는 픽셀당, 버텍스 당, 끄기 등의 옵션이 있다. 씬에 두 개이상의 조명이 있는 경우 픽셀 당으로 설정하면 된다. Per Object Limit는 게임 오브젝트에 영향을 줄 수 있는 Directional Light를 제외한 조명의 수를 설정한다. 수치가 높을 수록 다양한 조명들이 오브젝트에 영향을 준다. 그만큼 무겁다.

Cast Shadows 는 조명을 미리 구웠거나 그림자가 필요없을땐 비활성화한다.

 

4. Post-Processing

뭔지 모르겠다.. UniversalRP-LowQuality에 설정된 값을 그냥 사용하련다.

 

5. Advanced

렌더러를 미세 조정하기 위한 설정들이 있다. 그래픽 고수가 아니라면 사용할 일은 없을 거 같다. 값을 변경해도 나같은 까막눈은 뭔 차이인지 알 수가 없어 공부를 할 수가 없다. UniversalRP-LowQuality에 설정된 값을 그냥 사용하련다.

댓글

💲 추천 글