프래그먼트가 속한 폴리곤을 결정하는 것은 모든 단일 픽셀에 대해 가장 가까운 다각형을 찾아야하므로 (그리고 픽셀 쉐이딩 중에 전체 지오메트리 정보를 사용할 수 있어야하기 때문에) 많은 비용이 듭니다.
깊이에 따라 많은 삼각형 (다각형은 하나 또는 여러 개의 삼각형이 아닙니다)으로 구성된 전체 객체를 쉽게 정렬 할 수 있습니다. 그러나 이것은 근사한 근사치에 불과하며 인근 물체가 겹쳐져 인공물을 생성하므로 픽셀을 완벽하게 만들기 위해 무언가를 수행해야합니다.
여기가 z 버퍼가 들어오는 지점입니다. 조각의 계산 된 깊이가 z 버퍼에 이미 저장된 것보다 큰 것으로 밝혀지면 조각이 "무언가 뒤에"있기 때문에 삭제됩니다. 그렇지 않으면 조각이 컬러 버퍼에 기록되고 깊이 값이 z 버퍼에 기록됩니다. 물론 이것은 20 개의 삼각형이 서로 뒤떨어져있을 때 동일한 픽셀이 무색으로 19 번 음영 처리된다는 것을 의미합니다. 아아, 불행. 전에 Z 테스트 을 수행하여
현대 그래픽스 하드웨어 주소 이것은 실제로 (이 최적화 분명히 불가능 픽셀 단위의 심도를 산출하는 경우)의 삼각형의 정점의 보간 깊이에 따른 화소 음영.
또한 전체 조각 그룹을 빠르게 삭제하는 보수적 인 (때로는 계층 적, 때로는 타일링 된) 최적화를 사용합니다. 이를 위해 z 버퍼에는 64x64 직사각형 영역에 렌더링되는 최대 깊이와 같은 추가 정보 (사용자에게 알려지지 않은 정보)가 들어 있습니다. 이 정보를 사용하면 저장된 깊이를 실제로 보지 않고도이 화면 영역의 조각을 즉시 삭제할 수 있으며 모든 정점의 깊이가 더 큰 삼각형에 속한 모든 조각을 완전히 삭제할 수 있습니다. 분명히, 그 중 아무 것도 볼 수있는 방법이 없기 때문입니다.
이것은 구현 세부 사항이며 매우 구체적인 플랫폼입니다.
편집 :이 점을 분명히했는지는 확실하지 않지만 z-culling을 사용하여 정렬 할 때는 화가의 알고리즘으로 수행하는 작업의과 정확히 일치하는 을 사용해야합니다. 가장 가까운 것이 가장 먼저 그려지기를 원합니다 (대략 100 % 정확할 필요는 없습니다). 그래서 "마지막 사람이 서있다"는 의미에서 픽셀의 최종 색을 결정하는 대신, "선착순 봉사하고 단 한 명만 봉사했다. "
이것은 내 생각에도 대답이었을 것입니다. 이와 같이 우선 순위를 정하면 불확실한 크기의 버퍼가 생성되고 그림의 끝 부분에서 오른쪽 픽셀에 대한 O (n) 검색이 추가됩니다. z- 버퍼는 항상 픽셀 당 O (1) 개의 '현재 가장 가까운'룩업을 갖는 고정 된 크기를 가지며, 그 이유 중 하나는 캐시 효율적인 비선형 및 계층 적 형태로 저장하기 쉽기 때문에 O (1) (또는 원한다면 n 픽셀의 경우 O (n)보다 낫습니다.) 폴리곤의 모든 픽셀에 대해 래스터 화하는 동안 룩업을 수행합니다. – Tommy
"단일 값"을 지정하면 투명성 문제가 발생하고 몇 가지 새로운 알고리즘은 "모두 포함"으로 되돌아갑니다. 예를 들어 AMD의 Mecha Demo를보십시오. – Calvin1602
좋은 메모, @ 토미와 @ Calvin1602 – kvark