일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- URP로 변경
- ColorGradingLutPass
- ASW(Application SpaceWarp)
- VR
- 작업 집합
- 가상 바이트
- Cell Shader
- Virtual Byte
- Rim Light
- 메모리 누수
- Specular
- Cell Look
- URP
- Toon Shader
- 개인 바이트
- Three(Two) Tone Shading
- 프로그래밍 기초
- OculusMotionVectorPass
- Cartoon Rendering
- Windows Build
- 3d
- 벡터
- 게임 수학
- AppSW
- Private Bytes
- working set
- C언어
- Today
- Total
WinCNT
URP에서 SpriteRenderer는 SRP Batcher가 작동하지 않았던 이유 조사 본문
URP에서 SpriteRenderer는 SRP Batcher가 작동하지 않았던 이유 조사
WinCNT_SSS 2023. 9. 28. 10:48서론
SpriteRenderer인 오브젝트는 SRP Batcher가 작동하지 않기에 잠깐 조사했던 내용을 정리해봤다
이번에는 결론이 명확하기에 간략하게 정리하려고 한다
Objects have different MaterialPropertyBlocks set
프레임 디버그에서 확인해보면 SpriteRenderer인 오브젝트는 “Objects have different MaterialPropertyBlocks set”라는 문구가 뜨면서 SRP Batcher가 작동하지 않는 것을 볼 수 있다
MaterialPropertyBlock이란?
MaterialPropertyBlock은 머티리얼은 같지만 프로퍼티가 약간 다른 오브젝트(예를 들어 색상만 다른 경우 등)를 그릴 경우 사용하는 API이다
Unity - Scripting API: MaterialPropertyBlock
그리고 공식 문서에 매우 명확하게 SRP Batcher하고 호환되지 않는다고 적혀있다
SpriteRenderer와 MaterialPropertyBlock
그리고 매우 아쉽게도 SpriteRenderer 컴포넌트는 자체적으로 MaterialPropertyBlock를 사용하는 것으로 추측된다
또한 SpriteRenderer는 SRP Batcher를 지원하지 않는다는 답변도 있다
향후에는 지원할 가능성이 있다고 하지만 2023.2 버전에서도 MaterialPropertyBlock랑 SRP Batcher은 호환되지 않는 것 같으니, 그 가능성은 매우 희박할 거라 보인다
(SpriteRenderer가 MaterialPropertyBlock를 사용하지 않는 가능성도 있지만 거기까진 모르겠다)
마무리
이번에는 그저 조사를 했을 뿐이라 딱히 해결책이 있진 않았다
굳이 떠오르는 해결책이라면 커스텀으로 스프라이트 렌더러를 구현하는 정도?
실제로 필요해지면 그 때 가서 고민해야지
참고 사이트
Unity - Scripting API: MaterialPropertyBlock
'Unity > URP or Shader 관련' 카테고리의 다른 글
URP에서 Cutout(Alpha Test) 구현해보기(feat. Alpha to Coverage) (0) | 2023.12.06 |
---|---|
커스텀 셰이더의 머티리얼을 Bakery(라이트 맵 생성 에섯)으로 Bake하기(feat. Meta Pass) (0) | 2023.10.12 |
유니티의 Built-in Shader의 소스 코드를 다운로드 하기 (0) | 2023.07.18 |
URP에서 Overdraw 확인하기 (0) | 2023.07.10 |
URP에서 HDR 텍스처 사용해보기 (0) | 2023.07.03 |