기존까지는 빌트인 렌더 파이프라인으로 프로젝트를 만들어왔다. 오늘은 커스텀이 가능한 렌더 파이프라인을 적용한 프로젝트를 만들어보자


URP

유니티 - URP
유니티 - 스크립터블 렌더파이프라인

  • Universal Render Pipeline.
    유니티에서 쓰이는 Renderpipe Line 이다. 범용적인 렌더 파이프라인으로 쓰고자 할 때, 좋은 옵션이다. 예전의 이름은 경량 렌더 파이프라인(LWRP)
    거의 대부분의 내용은 가이드에 매우 자세히 나와 있으니, 그쪽을 검색하는 것이 낫다. 기존의 빌트인 렌더 파이프라인은 모든 면에서 성능이 아쉽다. 대신, 게임을 개발하는 데에 있어 훨씬 빠른 효율을 보여준다. 프로젝트 생성 속도가 빠르기 때문이다.

  • 기능 구현은 샘플 씬을 참고하자. 물론 모든 기능들을 공부하는 것이 좋겠지만, 너무 많은 기능들이 있기 때문에 하루 안에 다 배우는 것은 불가능하다. 샘플 씬들을 보면서 진행중인 프로젝트에 적용할 만한 것들은 가져오는 식으로 구현하자.

기존 프로젝트를 URP로 변경

있어서는 안될 경우겠지만, 기존의 프로젝트를 URP로 변경하고 싶은 경우, 아래와 같이 따라하자.

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

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

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

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


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

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

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

전부 바뀐것을 확인할 수 있다

신규 URP 프로젝트 생성

  • 유니티 허브에서 Universal 3D 프로젝트를 생성하면 된다

프로젝트 시작


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

Global Volume을 비활성화 하면 된다

퀄리티


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

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

하이 옵션의 경우

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

렌더러


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

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

main 카메라


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

마테리얼


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

  • 색만 표현하는 경우에 Unlit을 쓴다

  • Surface TypeTransparent로 바꿔주면 투명한 재질이 가능하다. 유리와 같은 곳에 쓰인다

    주의
    불투명하게 쓸 물체에 Transparent를 사용하는 것은 리소스 낭비다.

샘플 임포트

  • 여러가지 샘플 씬들을 보면서, 어떻게 구현 되었는지 알아본다

3D 스카이 박스


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

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

  • 메인 카메라Base 보조 카메라들은 Overlay로 설정한다. 그러면 메인 카메라에 나머지 보조 카메라들이 담는 것들이 overlay로 덮어씌어진다. Render Texture를 생각하면 이해하기 쉽다

    보조 카메라들은 Stack에 추가해줘야 한다

Mixed FOV


총(팔)에 해당하는 부분을 따로 렌더링 하고, 오버레이하는 기법. 보조 카메라를 위와 같이 총(팔)의 하위에 놓고, 오버레이 하면 된다

FPS 응용

플레이어가 적이나 벽과 가까워 졌을 때, 총이 사라지는 것을 해결하는 방법이 될 수 있다. 팔과 총을 플레이어와 분리하는 것

Split Screen

  • 화면을 분할해서 출력할 수 있다. UI나 텍스트를 표시하는 오브젝트와 같이 포스트 프로세싱이 적용되면 가시성이 떨어지는 것들을 해결할 수 있다.


    이렇게 해서 UI만 포스트 프로세싱을 안받게 할 수 있는 것

    화면을 분할하는 것은 여기서 조정하면 된다

Occlusion Effect

  • 오브젝트가 겹쳐 있을 때, 뒤에 있는 사물을 비추는 방법.

구현

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


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


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

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


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


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

Render Objects 추가

Event 에서 AfterRenderingGbuffer를 선택

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

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

Trail Effect

  • 물체가 지나간 자리에 흔적이 남는다

Distort Tunnel

  • 왜곡 효과

BitToRHandle

  • 거울 효과

Post Processing

  • 이것도 대부분 매뉴얼을 보는 것이 낫다. 자세히 나온다
  • 또한, 샘플 씬으로 기능들을 알아볼 수 있다

    새로 추가

    프로파일도 새로 생성하자

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

블룸

빛나는 물체를 만들어본다

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

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

chromatic aberration


색수차 효과에 해당한다

Film Grain

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

Vignette

가장자리를 어둡게 해준다


피격 시 나오는 효과랑 비슷한 연출 가능

Lens Distortion

렌즈 왜곡 효과를 적용할 수 있다.

톤매핑

HDR 색상을 LDR로 변환하는 과정. 정확히는 한 프레임 내의 밝기를 중간값으로 정돈한다고 보면 된다


위 이미지들은 서로 다른 톤매핑 값을 적용한 것이다.

Mode 로 선택할 수 있다. 적응적 기법인 AdaptiveReinhardAdaptiveReinhardAutoWhite를 통해 밝기 변화가 완전히 이루어지는 시점까지 컬러 변화에 딜레이를 줄 수 있다. 카메라와 사람의 눈에서도 이와 같은 효과가 발생한다. 이 기법을 통해 어두운 터널에서 밝은 야외로 나갈 때 발생하는 시각 적응 현상을 시뮬레이션하는 것과 같은 효과를 낼 수 있다.

SunFlare

카메라로 태양을 바라봤을 때의 느낌이 구현된다. 샘플씬에서 직접 볼 수 있다. 이것은 구현을 직접 하는 것보다, 에셋을 구하거나 샘플씬에 있는것을가져다 쓰는것을 추천한다.

Local Post Processing Volume

일정 범위 내에서만 포스트 프로세싱이 적용되게 할 수 있다. 박스 볼륨을 예시로 알아본다

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

  • Mode : Local
  • Profile : 새로 생성한 것으로 추가

카메라가 해당 박스에 들어갈 때 효과가 적용된다. 즉, 플레이어가 들어가고 나가는 것에 동기화 되어 있지 않다.

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

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

profile
개발 박살내자

0개의 댓글