2023
11.20

영상 링크
https://www.youtube.com/watch?v=w14yjBlfNeQ

 

 

Draw Call

- 그려라!라는 명령

 

SetPass Call

- 그려라(DrawCall) 할 때 같이 전해주는 명령어인 커맨드 버퍼에서 Material, Shader 등을 묶어놓은 그룹을 SetPass라고 부르고 이를 넘기는 것을 SetPass Call이라고 부른다.

 

Batch

- 데이터를 포장해서 GPU에 넘기는 것을 배치라고 부름

 

상황1

6개의 큐브를 각기 다른 Material을 사용한다.

Batches 6, SetPassCall 6이다.

 

상황2

6개의 큐브의 텍스쳐를 아틀라스로 묶고 하나의 Material을 사용한다.

Batches 6, SetPassCall 1이다.

다이나믹 배칭이 꺼져있거나, z-fighting이 발생하고 있다.

 

 

다이나믹 배칭

정점 속성을 900개 이상 가지거나 255개 이상의 정점을 포함하는 메시는 적용 불가

스프라이트 렌더러는 설정과 관계없이 기본적으로 다이나믹 배칭이 사용된다.

 

다이나믹 배칭 켜는 법

Preferences - Core Render Pipeline에서 Additional Properties - Visibility - All Visible로 설정하면

URP 렌더 에셋에서 Dynamic 배칭이랑 SRP 배처옵션이 보인다.

기본적으로 URP는 SRP 애처가 ON / Dynamic 배칭이 OFF이다.

 

SRP Batcher

쉐이더가 같으면 다른 머테리얼, 텍스쳐를 사용해도 SetPassCall을 통합해서 그린다.

단, Shader가 SRP Batcher compatible 해야 한다. (쉐이더 인스펙터에서 여부가 표기된다) 

 

아래의 사진은 SetPassCall을 1개로 그리고 있다. 

 

GPU Instancing

옵션에서 SRP batcher를 꺼야 한다. (SRP Batcher와 같이 사용이 불가능하다)

Material에서 Enable GPU Instancing을 체크

 

GPU 인스터싱도 동일하게 수가 너무 많으면 Paging 처리가 존재할 수 있다.

256개 미만의 버텍스를 가지고 있다면 비효율적인 퍼포먼스가 나온다고 함