본문 바로가기
면접 준비

[면접 준비][Unity] 드로우 콜(Draw Call)

by 스테디코디스트 2023. 7. 27.
반응형

1. 드로우 콜(Draw Call)이란?

- CPU는 현재 프레임에 어떤 것을 그려야 할지 정하고 ,GPU에 오브젝트를 그려달라는 명령을 호출하는데 이 명령이 드로우 콜이다.

- 한 오브젝트를 그릴때마다 CPU가 매번 렌더 상태(Render States)들을 변경하라는 명령을 한 뒤, DP Call을 해주는 과정

 

cf) 렌더 상태(Render States)

- 오브젝트를 렌더링하기 시작하면 GPU에서 사용할 텍스쳐, 버텍스, 셰이더 등을 순차적으로 알려줘야 하는데 이러한 순서 정보들을 담은 테이블을 렌더 상태라고 하며, 각각의 요소는 GPU 메모리를 가리키는 포인터를 저장한다.

 

 

cf) DP Call(Draw Primitive Call)

- CPU가 렌더 상태를 변경하는 명령을 GPU에 보내고 나서 마지막으로 GPU에 보내는 메시를 그리라는 명령을 뜻함.

 

2. 드로우 콜의 발생 조건

- 기본적으로 오브젝트를 그릴 때 메시가 1개, 머티리얼이 1개라면 드로우콜이 한 번 일어난다.

- 메시가 여러 개이면 드로우 콜도 여러 번 일어나고, 메시가 1개이지만 머티리얼이 여러 개인 경우에도 여러 번의 드로우 콜이 발생한다.(서브 메시가 생성되기 때문)

- 또한 셰이더 내에서 멀티패스(Multi Pass)로 두 번 이상 렌더링을 하는 경우도 드로우 콜이 여러 번 발생한다.

 

3. 유니티에서의 드로우 콜

- 유니티에서는 Batch와 Set Pass를 구분한다.

- Batch는 넓은 의미의 드로우 콜을 뜻하고, Set Pass는 셰이더로 인한 렌더링 패스 횟수이다.

- 오브벡트를 렌더링 하는 중 머티리얼이 바뀌면, 셰이더 및 파라미터들도 바뀌면서 Set Pass가 증가하고 이 때 많은 상태 변경들이 일어나기 때문에 SetPass도 CPU 성능을 꽤나 잡아먹는다.

 


<면접 예시 답안>

Q. 드로우 콜이란 무엇인가요?

A. 드로우 콜이란 CPU가 GPU에 어떤 오브젝트를 그려달라고 하는 명령을 뜻합니다. 유니티에서는 넓은 의미로 Batch라고 부르기도 합니다. 그러므로 드로우 콜이 증가하면 CPU 성능을 잡아먹어 속도가 저하될 수 있습니다.


<참고 자료>

https://tsyang.tistory.com/79

 

드로우콜(Draw Call)

드로우콜 CPU는 현재 프레임에 어떤 것을 그려야 할지 정하고, GPU에 오브젝트를 그리라고 명령을 호출하는데 이 명령이 바로 드로우 콜(Draw Call)이다. 게임의 오브젝트를 화면에 렌더링하려면 우

tsyang.tistory.com