지형에 사용할 수있는 것과 같은 큰 그리드 메쉬를 상상해 봅시다. 우리는 렌더링 수 있습니다 n
하나의 그리기 호출에서, 말하자면 절반 우리의 1080p의 화면을 덮고, 그 삼각형의 가치를.
모든 정점을 용접하고 스무딩 / 텍스처 이음새가없는 경우 각 삼각형에는 3 개의 정점이 있고 각 정점은 6 개의 삼각형으로 공유되므로 n/2
정점이 있습니다.
이를 렌더링하려면 다음을 수행해야합니다.
버텍스 쉐이더를 최소한 한 n/2
번 실행
(정점 결과에 대한 캐시가 너무 커서 "적어도"입니다. 때때로 우리는 이미 변환 한 정점을 제거 할 수 있습니다. 그런 다음 해당 정점을 공유하는 이후 삼각형이 다시 필요하므로 정점 셰이더를 다시 실행해야합니다. 따라서 종이에 보이는 것만 큼 많은 비용을 절약 할 수는 없습니다.)
클립 & 컬 n
삼각형.
최소 1920x1080 / 2 또는 약 1 백만 픽셀 이상의 프레임 버퍼를 래스터 화 및 보간합니다 (우리 지형이 화면의 약 절반을 차지한다고 말했기 때문에).
GPU가 쿼드 픽셀 에서 작동하는 방식으로 인해 "적어도" " 다각형의 가장자리 밖에있는 일부 프래그먼트는 여전히 래스터 화되지만 마스크 처리됩니다. 즉, 프래그먼트를 두 번 처리합니다. 가장 앞면 다각형을 깊이 버퍼에 먼저 그릴 정도로 운이 좋지 않으면 자체를 차단합니다.)
> = 1 백만 개의 모든 조각에 대해 조각 쉐이더를 실행하십시오.
프레임 및 깊이 버퍼에 ~ 100 만 개의 결과를 혼합합니다.
자, 이제 그래서 우리의 정점을 모두 unweld 지금 우리가 할 수 3n
렌더링 정점을 여섯 번 더 이전보다! 우리의 발걸음은 ...
꼭짓점 셰이더 3n
시간을 실행합니다 .
(모든 정점이 한 번만 사용되므로 캐싱으로 인해 별표가 표시되지 않습니다. 이는 캐시가 시간을 절약 할 수 없음을 의미합니다)
클립 & 컬 n
삼각형.
최소 1920x1080 / 2 또는 약 1 백만 픽셀 이상의 프레임 버퍼를 래스터 화 및 보간합니다.
> = 1 백만 개의 모든 조각에 대해 조각 쉐이더를 실행하십시오.
프레임 및 깊이 버퍼에 ~ 100 만 개의 결과를 혼합합니다.
... 첫 번째 단계를 제외한 모든 단계 는 동일합니다! 따라서 일반적인 드로우 콜에서 GPU가하는 대부분의 작업은 사용 된 정점 수와 직접 관련이 없습니다. 화면 적용 범위, 오버 드로우 및 총 삼각형 수는 훨씬 더 많은 비용을 구성합니다.
꼭 정점이 완전히 무료라는 의미는 아닙니다. 캐싱을 통해 정점을 공유 할 수있는 경우, 특히 정점 셰이더가 복잡하거나 하드웨어의 정점 파이프 라인이 약한 경우 (일부 콘솔에서와 같이) 그러나 정점 수는 삼각형 수에 비례하거나 일정한 요소를 뺀 비율을 추적한다는 점에서 일반적으로 전체 메쉬 비용의 메트릭만큼 흥미롭지는 않습니다.