드로우콜(Draw Call)

순후추·2023년 12월 24일

그래픽스

목록 보기
3/4

드로우콜 : CPU가 GPU에게 어떤 것을 그릴 지 명령

명령 대상

메시 정보
텍스처 정보
쉐이더 정보
트랜스폼 정보
알파 블렌딩 여부
기타 등등
컬링 : 오브젝트가 렌더링 대상인지 확인 하는 것
렌더 상태 : CPU는 어떤 버텍스를 사용하는지, 어떤 쉐이더를 사용하는지 등등에 대해서 GPU에게 알려주는데 GPU는 이러한 상태 정보를 테이블에 저장하게 된다. 이 테이블을 렌더 상태라고 한다.
어떤 쉐이더, 텍스처, 색상, 블렌딩 등을 사용할지도 해당된다.

드로우콜(Draw Call)

설명
CPU는 GPU에게 렌더 상태를 변경하는 명령을 보내고나면 마지막으로 CPU는 GPU에게
메시를 그리라는 명령을 하게 되는데, 이 명령이 Draw Premitive Call(DP Call)이라고 한다.
그렇게 되면 렌더 상태가 또 다시 바뀔 것이다.
이렇듯 CPU가 GPU에게 렌더 상태를 변경하고, DP Call를 하는 과정을 "드로우콜"이라고 한다
커맨드 버퍼
CPU가 GPU에게 명령을 보낼 때 잠시 저장하는 버퍼
문제점
CPU가 GPU에게 명령을 보낼 때 변환하는 과정에서 오버헤드가 발생하고 결과적으로 CPU바운드를 초래 할 수 있다.
발생 조건
메시, 메테리얼 1:1대응이 아닌 각각 존재한다면 하나당 한 개씩이다.
예시로 1:1대응으로 메시15개, 메테리얼15개 있다면 드로우콜 15번
예시로 1:1대응이 아니라 메시15개, 메테리얼 15개 있다면 드로우콜 30번
예시로 메시1개, 메테리얼 여러 개가 존재해도 드로우콜은 여러 번 일어난다.

Batch & Set Pass

Batch
여러 개의 그래픽 요소를 하나의 명령어로 묶어 처리하는 것을 말한다.
SetPass
주로 렌더링 상태 변경에서 이용된다. 
예시로 10개의 오브젝트가 동일한 메테리얼을 갖는다면 SetPass는 1만큼 증가한다. 
profile
게임 개발 블로그

0개의 댓글