
기존까지는 빌트인 렌더 파이프라인으로 프로젝트를 만들어왔다. 오늘은 커스텀이 가능한 렌더 파이프라인을 적용한 프로젝트를 만들어보자
Universal Render Pipeline.
유니티에서 쓰이는 Renderpipe Line 이다. 범용적인 렌더 파이프라인으로 쓰고자 할 때, 좋은 옵션이다. 예전의 이름은 경량 렌더 파이프라인(LWRP)
거의 대부분의 내용은 가이드에 매우 자세히 나와 있으니, 그쪽을 검색하는 것이 낫다. 기존의 빌트인 렌더 파이프라인은 모든 면에서 성능이 아쉽다. 대신, 게임을 개발하는 데에 있어 훨씬 빠른 효율을 보여준다. 프로젝트 생성 속도가 빠르기 때문이다.
기능 구현은 샘플 씬을 참고하자. 물론 모든 기능들을 공부하는 것이 좋겠지만, 너무 많은 기능들이 있기 때문에 하루 안에 다 배우는 것은 불가능하다. 샘플 씬들을 보면서 진행중인 프로젝트에 적용할 만한 것들은 가져오는 식으로 구현하자.
있어서는 안될 경우겠지만, 기존의 프로젝트를 URP로 변경하고 싶은 경우, 아래와 같이 따라하자.

패키지 매니저에서 Universal RP 설치

프로젝트 창에서 위의 경로를 따라 생성

프로젝트 세팅 -> Graphics -> Scriptable Render Pipeline Settigs에서 위와같이 새로 생성했던 에셋을 적용

기존의 게임 오브젝트들 마테리얼의 쉐이더가 깨진것을 볼 수 있다. 이는 마테리얼 타입이 호환이 안되기 때문


위와같이 변경하면 되는데, 하나하나 다 바꿔주기는 힘들다

Window -> Rendering -> Render Pipeline Converter를 클릭

바꿔주어야 할 것들을 체크하고 Initialize Converter를 클릭하면 자동으로 전부 바꿔준다. 전부 체크하고 해도 무방하다.

전부 바뀐것을 확인할 수 있다
유니티 허브에서 Universal 3D 프로젝트를 생성하면 된다

뭔가 뿌연 느낌이 드는데, 포스트 프로세싱이 적용되어 있기 때문이다

Global Volume을 비활성화 하면 된다

그래픽을 원하는 수준에 맞게 세팅을 할 수 있다.

여기서 각 단계에 맞게 설정하면 된다

하이 옵션의 경우

로우 옵션의 경우에 해당한다. 이와같이 옵션에 차이가 있다

필터링과 렌더링 등 여러 옵션 설정이 가능하다

렌더 재정의에 관련한 옵션들도 있다

빌트인과는 다른 컴포넌트들이 보인다.
Projection의 Clipping Plane에서 절두체를 조절할 수 있다
Output 에서는 Render Texture를 씌울 수 도 있다

일반적으로 대부분의 경우 Lit 또는 Unlit이다

Unlit을 쓴다
Surface Type을 Transparent로 바꿔주면 투명한 재질이 가능하다. 유리와 같은 곳에 쓰인다주의
불투명하게 쓸 물체에Transparent를 사용하는 것은 리소스 낭비다.


스카이 박스에 오브젝트를 배치하는 방법이다.

실제로는 카메라 여러 대를 사용한 방법이다

메인 카메라는 Base 보조 카메라들은 Overlay로 설정한다. 그러면 메인 카메라에 나머지 보조 카메라들이 담는 것들이 overlay로 덮어씌어진다. Render Texture를 생각하면 이해하기 쉽다
Stack에 추가해줘야 한다
총(팔)에 해당하는 부분을 따로 렌더링 하고, 오버레이하는 기법. 보조 카메라를 위와 같이 총(팔)의 하위에 놓고, 오버레이 하면 된다
플레이어가 적이나 벽과 가까워 졌을 때, 총이 사라지는 것을 해결하는 방법이 될 수 있다. 팔과 총을 플레이어와 분리하는 것




이번엔 쉐이더나 쉐이더 그래프를 건드리지 않고, 렌더러를 통해 구현하는 방법을 쓴다

프로젝트 창에서 Assets -> Settigs 폴더에 URP Universal Renderer 생성

현재 적용되고 있는 퀄리티 기준으로 편집한다. High Fidelity를 연다

Renderer List에 새로 생성한 렌더러를 추가

메인 카메라에서 Rendering의 Renderer를 새로 추가한 것으로 교체한다

다시 새로 생성했던 렌더러를 연다

Render Objects 추가

Event 에서 AfterRenderingGbuffer를 선택

Filters에서 Layer Mask를 Player로 설정한다. 외곽선표시, 희미하게 표시 등과 같은 효과는 쉐이더를 써야한다. Override Mode에서 쉐이더로 바꿔준 후 적용하면 된다. 이번에는 대충 마테리얼로 떼운다

벽 뒤로 이동 시 마테리얼이 변경된다



Add Override를 누르면 효과를 추가할 수 있다. 많은 효과들이 있다. 자주쓰는 것만 알아보자빛나는 물체를 만들어본다

Emission에 체크한다. Emission Map에서 Intensity로 발광 정도를 조절할 수 있다

여러 옵션들을 직접 만져 보며 감을 익히는게 빠르다. Intensity로 빛이 산란되는 강도가 정해진다



색수차 효과에 해당한다

필름 영화와 같은 자글자글한 디더링을 넣어줄 수 있다. 다른 텍스쳐(노이즈)를 넣어서 커스텀 가능
가장자리를 어둡게 해준다


피격 시 나오는 효과랑 비슷한 연출 가능
렌즈 왜곡 효과를 적용할 수 있다.
HDR 색상을 LDR로 변환하는 과정. 정확히는 한 프레임 내의 밝기를 중간값으로 정돈한다고 보면 된다


위 이미지들은 서로 다른 톤매핑 값을 적용한 것이다.
Mode 로 선택할 수 있다. 적응적 기법인 AdaptiveReinhard 와 AdaptiveReinhardAutoWhite를 통해 밝기 변화가 완전히 이루어지는 시점까지 컬러 변화에 딜레이를 줄 수 있다. 카메라와 사람의 눈에서도 이와 같은 효과가 발생한다. 이 기법을 통해 어두운 터널에서 밝은 야외로 나갈 때 발생하는 시각 적응 현상을 시뮬레이션하는 것과 같은 효과를 낼 수 있다.
카메라로 태양을 바라봤을 때의 느낌이 구현된다. 샘플씬에서 직접 볼 수 있다. 이것은 구현을 직접 하는 것보다, 에셋을 구하거나 샘플씬에 있는것을가져다 쓰는것을 추천한다.
일정 범위 내에서만 포스트 프로세싱이 적용되게 할 수 있다. 박스 볼륨을 예시로 알아본다

박스 볼륨 추가. 새로운 프로파일을 생성한 다음 추가해준다

Mode : LocalProfile : 새로 생성한 것으로 추가카메라가 해당 박스에 들어갈 때 효과가 적용된다. 즉, 플레이어가 들어가고 나가는 것에 동기화 되어 있지 않다.

새로 생성한 박스볼륨에 레이어를 새로 추가한다

메인 카메라에서 Volume Mask르 해당 레이어(Effect)와 Default(Global Volume)으로 한다
이렇게 하면 박스 범위 내에 카메라가 들어가면, 활성화 된다