참고자료
파이프라인 : https://learn.unity.com/tutorial/understanding-scriptable-render-pipelines-2019-3?language=en#5f670076edbc2a0020228d0a
Forward, Defered 렌더링 : https://www.youtube.com/watch?v=anz5bHVbeEY&ab_channel=UnityKorea
유니티 그래픽스 최적화 스타트업
Unity에는 3가지 렌더링 파이프라인이 존재한다.
:유니티에서 기본으로 설정되어있는 렌더 파이프라인. 스크립터블 렌더 파이프라인(SRP)에 비해 제한적이다. CG code를 이용해서 직접 작성을 할 수는 있지만, 접근과 사용이 제한적이라 SRP에 최적화된 URP와 HDRP가 추가로 만들어졌다고 한다.
여기서 사용되는 쉐이더 이름은 Standard Shader라고 부르고 CG언어를 사용함
: 리얼타임 퍼포먼스에 최적화된 파이프라인이라고 한다. 성능이 제한된 플랫폼에서 잘 작동하기 위함이 이 파이프라인의 목표라고 함
라이팅과 쉐이딩을 trade off해 최적화 하는데, 모바일 플랫폼이나 VR, 제한된 라이팅을 사용하는 프로젝트라면 이 URP가 가장 적합하다고 한다.
- 객체당 하나의 리얼타임 라이팅과 쉐도우, 라이트 컬링으로 싱글패스 포워드 렌더링을 함
=> 이는 레거시(Built-in RP)파이프라인과 차이가 있는데, 레거시 포워드 렌더링에서는 일정 범위 내에서 픽셀당 추가적인 패스를 수행한다고 함
=> 이 말은 URP에서는 더 적은 드로우콜을 사용한다는 뜻이다.- URP에서는 Shader Graph툴을 지원한다.
:HDRP는 간단하게 고성능 품질을 위한 랜더 파이프라인이라고 보면 될 것 같다. 참고자료 문서에 따르면 다음과 같은 특징이 있다.
- 프로젝트의 타겟 플랫폼이 DirectX11 기능 수준 이상
- 컴퓨팅 쉐이더가 많이 사용됨
- 향상된 조명 연산, 재질 렌더링, 디버깅 툴
간단하게 요약하면
:전통적인 렌더링 기법. Defered Rendering이 생겨나면서 구분짓기 위해 이름이 붙여졌다고 함.
- 멀티 렌더 타겟이 필요 없음
- 적은 수의 동적 라이트 사용할 때 적합한 렌더링 방식
- 단, 동적 라이트가 많아지면 성능 저하가 있음
- 모바일에 적합함
- 많은 수의 실시간 라이팅을 좋은 성능으로 처리할 수 있다.
- 하지만 기기의 성능이 어느정도 받쳐줘야 함, PC나 콘솔 게임에서 널리 사용되고 있음
- 하나의 버퍼에 렌더링을 하는 게 아닌 여러 개의 버퍼에 한꺼번에 렌더링을 하는 멀티 렌터 타겟 기능이 필요함
- 멀티 렌더 타겟을 이용하여 지오메트리 버퍼 혹은 G 버퍼라 부르는 버퍼에 불투명한 오브젝드 정보를 렌더링, G버퍼에는 Diffuse, Screen Space Noraml, Specular, Smoothness, Screen Space Depth 등의 정보가 기록됨. 모든 오브젝트들을 G 버퍼에 렌더링한 후 이 정보를 토대로 라이팅을 처리하여 프레임 버퍼에 출력
- 지오메트리 패스와 라이팅을 처리하는 라이팅 채스가 분리되어 있다.
- 화면에 보이는 픽셀만 처리해 불필요한 쉐이딩연산을 줄일 수 있다.
- 기본적으로 높은 메모리 대역폭이 필요하기 때문에 메모리 대역폭이 낮은 모바일에서는 권장되지 않음.