2021.2 알파버전이 한창 개발되고있습니다.
SRP 역시 버전을 바꿔가며 거듭 진화하고 있는데, API 이름이라 지원하는 키워드 등 버전별로 사용가능한 부분이 상이해 섣불리 기존 프로젝트에 적용하기엔 부담스럽습니다. 에셋 개발자들 역시 SRP 버전업에 따라 키워드를 바꿔주거나 추가해주어야하고 유지보수가 쉽지 않습니다.
Shader "MyShader" {
SubShader {
Pass {
PackageRequirements {
"com.unity.render-pipelines.universal":"[10.0,10.5.3]"
}
...
}
Pass {
PackageRequirements {
"com.unity.render-pipelines.universal":"[11.0,11.2.4]"
"com.my.other.package"
}
...
}
}
}
기존에는 조건을 지정해 여러 Pass로 나누어 종속적으로 컴파일하는 방식은 플랫폼 별 대응이나 기능별 대응을 위해 사용되곤 했는데, 이제 패키지 버전까지 지정해 Pass를 따로 컴파일하도록 지정할 수 있도록 지원합니다. 해당 패키지가 존재하면 그 패스를 컴파일 하는 방식이 됩니다.
스크립터블 렌더 파이프라인에서는 버전이 바뀜에 따라 너무나 많은 변경사항들이 생기고, 기능이 추가 및 삭제됩니다. 특히 중간에 껴 있는 에셋 개발자들은 이에 매우 혼란스러워했고, 모든 SRP를 대응하기 위해서는 비슷한 리소스를 여러 버전으로 나누어 .unitypackage 파일을 포함시켜 배포하는 방식으로 작업해왔습니다. 필요한 버전 대응을 위해 매우 번거롭던 작업을 동반했던 것입니다.
이 기능 추가는 직접 게임을 개발하는 엔진의 엔드 커스터머에게는 큰 의미를 주지 못할 수도 있습니다. 직접 셰이더를 개발한다면 사용하는 SRP 버전에 맞춰 코드를 작성하면 그만이기 때문입니다. 이 변경사항은 셰이더를 판매하는 에셋 개발자들과 모듈화된 패키지 개발의 용이성을 위해 추가된 것으로 보입니다. 그러나 앞으로는 일반 개발자들도 알아두는 것이 나쁘진 않겠죠. 셰이더를 파악할 때 확인해야 할 사항이 하나 더 늘어났습니다. 이것은 유니티 개발팀에서도 확실히 SRP의 변경사항들이 감당이 안 되며, 이 방식보다 더 나은 솔루션을 제시할 수 없음을 의미합니다.
참고링크 : Unity - Package requirements in ShaderLab - Unity Forum
'Unity > Articles' 카테고리의 다른 글
Unity: UniRx로 NavMeshAgent의 도착 콜백 생성하기 (0) | 2021.06.21 |
---|---|
Unity: 작업중인 프로젝트를 URP로 전환하기 전 확인할 사항 (1) | 2021.05.13 |
Unity: 코드 블록 성능 측정 방법 (0) | 2021.05.06 |
Unity: 당신의 에디터가 느려지는 이유 (2) | 2021.05.04 |
Unity: 빌드 파이프라인 베이직 (0) | 2021.05.01 |