Render Pipeline이란 카메라가 보는 장면을 어떤 순서와 규칙으로 GPU에 전달하여 화면을 그릴 것인지 정의한 렌더링 파이프라인입니다.
Scene
↓
Camera
↓
어떤 오브젝트를 먼저 그릴까?
↓
조명 계산
↓
그림자 계산
↓
투명 오브젝트
↓
후처리
↓
화면 출력
이 같은 전체 과정을 Render Pipeline이 담당합니다.
Unity 초창기부터 존재한 기본 렌더링 시스템입니다.
Scene
↓
Built-in Pipeline
↓
Standard Shader
↓
GPU
Unity 내부에 렌더링 순서가 고정되어 있습니다. Standard Shader를 사용하며, 오래된 에셋 대부분이 이것을 기준으로 만들어져 있습니다.
URP는 Scriptable Render Pipeline(SRP) 기반으로 새롭게 만든 렌더링 시스템입니다.
Scene
↓
URP Pipeline
↓
URP Lit Shader
↓
GPU
모바일부터 PC까지 성능이 좋으며, Renderer Feature 등 확장성이 높다는 특징이 있습니다.
머티리얼은 어떤 셰이더를 사용할지 저장하고 있습니다. 과거, Built-in 기준으로 만들어진 에셋의 머티리얼은 여전히 Standard Shader를 참조합니다.
하지만 URP 프로젝트에서는 Universal Render Pipeline/Lit를 사용해야 하므로, Unity는 경고하기 위해 마젠타 색을 대신 출력합니다.
Window > Rendering > Render Pipeline Converter
Material Update > Initialize Converters
Convert Assets
Converter는 전체 프로젝트를 스캔하여 Standard Shader를 사용하는 머티리얼을 찾아, Universal Render Pipeline/Lit으로 변경합니다. 즉, 머티리얼 파일(.mat)을 실제로 수정하여 머티리얼 내부 데이터를 URP 규격에 맞게 변환하는 과정입니다.

마젠타로 그려지던 오브젝트들이 자기 색을 되찾았습니다.

깃허브 chagnes에서 .mat 파일을 확인해봅니다.
Unity의 .mat머티리얼은 GPU가 물체를 어떻게 그릴지 설명하는 설정 파일이고, Unity는 이를 .mat 확장자로 저장합니다. YAML 형식으로 저장되는데, 위 사진에서 강조한 부분을 확인하면
- m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
m_Shader 즉, 이 머티리얼이 참조하는 Shader Asset이 변경되었다는 걸 확인할 수 있습니다.
엔진이 발전하면서 로우 레벨 렌더링을 직접 다룰 일은 줄어들고 있지만, 문제가 생겼을 때 근본 원인을 찾기 위해서는 이런 기본 구조를 이해할 필요가 있다고 느꼈습니다. 결국 버튼 하나로 해결되더라도, 그 버튼이 무엇을 바꾸는지는 알아야 제대로 해결할 수 있습니다.