드로우콜 : 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만큼 증가한다.