랜더링 명령 한번
드로우 콜(Draw Call)이란?
스크린에 오브젝트를 렌더링하기 위해 렌더링 엔진은 OpenGL이나 Direct3D 그래픽 API에(GPU : 그래픽 처리 장치) 그리기 요청(draw call)을 하는데 이 요청을 드로우 콜이라고 한다.
모든 그리기 요청(draw call)은 CPU 상의 상당한 퍼포먼스 오버헤드를 일으킵니다.
# 오버헤드 : 오버헤드는 특정한 기능을 수행하기 위해 추가로 사용되는 컴퓨터 자원을 지칭하는 것이다
예를 들어, 감사 증적을 유지하기 위해 10%의 오버헤드가 필요하다는 말은, 감사 증적 기능이 동작하고 있는 동안에는 그 프로그램의 실행속도가 10% 가량 늦어진다는 것을 의미한다.
카메라를 통해 한 프레임의 화면을 만드는 동안
1개의 셰이더 , 1개의 Material로 오브젝트를 1번 그리는 작업의 단위이다.
같은 Shader, 같은 Material을 갖는 여러 개의 오브젝트는 1번의 Draw Call로 작업한다.
예를들어,
화면에 Cube_1, Cube_2를 만듭니다.
Cube_1에 Material_1을 적용시키죠. Draw Call은 1입니다.
Cube_2에 Material_2를 적용시키면? Draw Call은 2입니다.
Draw Call이 하나 더 추가됐다니!
Cube_2에 Material_1을 적용합니다. Draw Call은 1이됩니다.
Material을 공유하지 않는 2개의 오브젝트들을 함께 결합하는 것은 성능상 아무런 개선을 주지 않는다.
Draw Call 수를 줄이는 일이 최적화에서 가장 중요한 요소이다.
댓글 없음:
댓글 쓰기