KR102057166B1 - 그래픽 처리 시스템에서 히든 표면의 제거 - Google Patents

그래픽 처리 시스템에서 히든 표면의 제거 Download PDF

Info

Publication number
KR102057166B1
KR102057166B1 KR1020130157253A KR20130157253A KR102057166B1 KR 102057166 B1 KR102057166 B1 KR 102057166B1 KR 1020130157253 A KR1020130157253 A KR 1020130157253A KR 20130157253 A KR20130157253 A KR 20130157253A KR 102057166 B1 KR102057166 B1 KR 102057166B1
Authority
KR
South Korea
Prior art keywords
fragment
test
processing
pipeline
fragments
Prior art date
Application number
KR1020130157253A
Other languages
English (en)
Other versions
KR20140078569A (ko
Inventor
프로데 헤겔룬트
컨네스 오츠비
Original Assignee
에이알엠 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/716,952 external-priority patent/US9153070B2/en
Priority claimed from US13/909,561 external-priority patent/US9214006B2/en
Application filed by 에이알엠 리미티드 filed Critical 에이알엠 리미티드
Publication of KR20140078569A publication Critical patent/KR20140078569A/ko
Application granted granted Critical
Publication of KR102057166B1 publication Critical patent/KR102057166B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • G06T15/405Hidden part removal using Z-buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

그래픽 처리 파이프라인(1)의 초기 깊이 시험 스테이지(4, 13)는, 관련된 조건 폐기 시험을 갖고 초기 깊이 시험을 통과한 프래그먼트에 관한 정보(9, 10, 11, 14)를 파이프라인 내의 다른 스테이지(3, 4, 6, 12)에 제공하도록 구성된다. 이어서, 파이프라인 내의 다른 스테이지는 초기 깊이 시험 통과 정보를 이용하여, 현재 처리되고 있는 임의의 프래그먼트의 처리가 감속될 수 있는지를 결정한다. 이미 파이프라인 내에 있는 프래그먼트의 처리의 감속을 트리거한 프래그먼트가 모든 조건 폐기 시험을 통과하면, 프래그먼트는 이미 감속된 처리가 전송된 프래그먼트의 처리의 중지를 트리거하는 신호를 받게 된다. 프래그먼트가 조건 폐기 시험을 실패하면, 프래그먼트는 이미 감속된 처리가 전송된 프래그먼트의 처리의 재개를 트리거하는 신호를 받게 된다.

Description

그래픽 처리 시스템에서 히든 표면의 제거{HIDDEN SURFACE REMOVAL IN GRAPHICS PROCESSING SYSTEMS}
본 발명은 컴퓨터 그래픽의 처리, 구체적으로 그래픽 처리에 있어서 히든 표면의 제거에 관한 것이다.
당업계에 알려진 바와 같이, 그래픽 처리는 일반적으로 그래픽 처리 작업이 보다 용이하게 수행되게 하도록, 먼저 디스플레이될 프레임 등의 그래픽 처리(렌더링) 출력부를 다수의 유사한 기본 성분[소위, "프리미티브(primitive)"]으로 분할함으로써 수행된다. 이들 "프리미티브"는 일반적으로 삼각형 등의 간단한 다각형의 형태이다.
디스플레이될 프레임 등의 출력부의 프리미티브는 일반적으로 그래픽 처리를 필요로 하는 어플리케이션(예컨대, 게임)으로부터 수신된 그래픽 드로잉 명령어(요청)를 이용하여 그래픽 처리 시스템을 위한 어플리케이션 프로그램 인터페이스에 의해 발생된다.
각 프리미티브는 이 단계에서 일반적으로 꼭지점 세트에 의해 획정되고 그 꼭지점 세트로서 나타낸다. 프리미티브의 각 꼭지점은 꼭지점을 나타내는 관련된 데이터(예컨대, 위치, 칼라, 텍스쳐 및 기타 속성 데이터)의 세트를 갖는다. 이어서, 이 데이터는 예컨대 디스플레이를 위해 꼭지점[꼭지점이 관련된 프리미티브(들)]을 레스터화(rasterising) 및 렌더링할 때에 사용된다.
프리미티브 및 그 꼭지점이 일단 생성되어 획정되었다면, 예컨대 프레임을 디스플레이하도록 그래픽 처리 시스템에 의해 처리될 수 있다.
이 프로세스는 기본적으로 처리될 출력 영역을 덮는 샘플링 포인트들의 어레이 중 어느 샘플링 포인트가 프리미티브에 의해 커버되는지를 결정하는 것과, 각 샘플링 포인트가 해당 샘플링 포인트에서 프리미티브를 나타내도록 (예컨대, 그 칼라 등의 관점에서) 가져야 하는 외양을 결정하는 것을 수반한다.
레스터화 프로세스는 프리미티브를 위해 사용되어야 하는 샘플링 포인트[즉, 렌더링 출력부, 예컨대 디스플레이될 프레임에서 프리미티브를 나타내도록 사용될 샘플링 포인트의 (x, y) 위치]를 결정한다.
이어서, 렌더링 프로세스는 프리미티브를 샘플링 포인트에서 나타내는(즉, 각 샘플링 포인트를 "가리는") 데에 필요한 적색, 녹색 및 청색(RGB) 칼라 값 및 "알파"(투명도) 값 등의 데이터를 유도한다. 이는 당업계에 알려진 바와 같이, 텍스쳐를 적용하고, 샘플링 포인트 데이터 값들을 혼합하는 것 등을 수반할 수 있다.
(3D 그래픽 인쇄물에서, "레스터화"라는 용어는 때때로 샘플 위치로 프리미티브의 전환 및 렌더링을 모두 의미하도록 사용된다. 그러나, 여기서, "레스터화"는 프리미티브 데이터를 샘플링 포인트 어드레스로 전환시키는 것만을 지칭하도록 사용될 것이다.)
이들 프로세스는 통상적으로 1개, 또는 1개보다 많은 샘플링 포인트의 세트를 시험한 다음, (시험되는) 해당 프리미티브 내에 있는(프리미티브에 의해 커버되는) 샘플링 포인트와, 그래픽 처리 작업(렌더링 등)이 수행되는 "프래그먼트(fragment)"로서 일반적으로 지칭되는 별개의 그래픽 엔터티(entity)를 포함하는 것으로 판명된 샘플링 포인트들의 각 세트를 발생시킴으로써 수행된다. 따라서, 커버된 샘플링 포인트는 사실상 해당 샘플링 포인트에서 프리미티브를 렌더링하도록 사용될 프래그먼트로서 처리된다. "프래그먼트"는 렌더링 프로세스(렌더링 파이프라인)를 통과하는 그래픽 엔터티이다. 발생되고 처리되는 각 프래그먼트는 예컨대 그래픽 처리 시스템이 어떻게 구성되는지에 따라 단일의 샘플링 포인트 또는 복수 개의 샘플링 포인트들의 세트를 제공할 수 있다.
[따라서, "프래그먼트"는 사실상 프리미티브의 주어진 출력 스페이스 샘플링 포인트 또는 포인트들로 삽입되는 프리미티브 데이터의 세트이다(그것과 관련된다). 또한, 해당 샘플링 포인트(프래그먼트 위치)에서 프리미티브를 가리는 데에 요구되는 각각의 프리미티브 및 다른 상태의 데이터를 포함할 수 있다. 각 그래픽 프래그먼트는 통상적으로 출력부(예컨대, 출력 프레임)의 "픽셀"과 동일한 크기 및 위치일 수 있다(픽셀이 최종 디스플레이에서 특이점이므로, 그래픽 프로세서가 디스플레이의 픽셀 및 (렌더) 상에서 작동하는 "프래그먼트들" 간에 1 대 1 맵핑이 있을 수 있기 때문에). 그러나, 프레임과 디스플레이 픽셀 간에 1 대 1 대응이 아닌 경우가 있을 수 있는데, 예컨대 다운샘플링 등의 전처리의 특별한 형태가 최종 이미지를 디스플레이하기 전에 렌더링된 이미지에 수행된다.]
[또한, 소정의 위치에서 상이한 오버래핑 프리미티브들로부터의 다수의 프래그먼트들이 (예컨대, 투명도 및/또는 혼합으로 인해) 서로 영향을 미칠 수 있을 때에, 최종적인 픽셀 출력은 해당 픽셀 위치에서 복수 개의 또는 모든 프래그먼트들에 따라 좌우될 수 있다.]
[따라서, 샘플링 포인트와 디스플레이의 픽셀 간에 1 대 1 대응이 있을 수 있지만, 보다 통상적으로는 샘플링 포인트와 디스플레이 픽셀 간에 1 대 1 대응이 없을 수 있는데, 그 이유는 최종 이미지를 디스플레이하기 위해 출력 픽셀 값을 발생시키도록 상기 렌더링된 샘플 값에 다운샘플링이 수행될 수 있기 때문이다. 유사하게, 예컨대 소정의 위치에서 상이한 오버래핑 프리미티브로부터의 다수의 샘플링 포인트 값이 (예컨대, 투명도 및/또는 혼합으로 인해) 서로 영향을 미치는 경우에, 최종적인 픽셀 출력은 또한 해당 픽셀 위치에서 복수 개의 오버래핑 샘플 값에 따라 좌우될 것이다.]
"즉시 모드" 그래픽 처리 또는 렌더링으로서 일반적으로 지칭되는 그래픽 처리를 위한 한가지 공지된 기법에서, 프리미티브들은 발생될 때에 하나씩 처리(레스터화 및 렌더링)된다.
이 타입의 시스템에서, 프리미티브(그 꼭지점)는 선착순으로 그래픽 시스템에 제공되고, 이에 따라 프리미티브는 프리미티브가 수신되는 순서로 렌더링된다.
또한, 그래픽 처리 시스템에서는, 소위 "타일 기반" 또는 "연기된" 렌더링을 이용하는 것이 공지되어 있다. 타일 기반 렌더링에서, 전체 렌더 출력부보다는, 예컨대 프레임이 사실상 즉시 모드 렌더링에서와 같이 한번에 처리되고, 렌더 출력부, 예컨대 디스플레이될 프레임은 일반적으로 "타일"로서 지칭되는 복수 개의 보다 작은 서브 구역으로 분할된다. 각 타일(서브 구역)은 별개로 (통상 잇달아) 렌더링되고, 이어서 렌더링된 타일(서브 구역)은 완벽한 렌더 출력부, 예컨대 디스플레이용 프레임을 제공하도록 재결합된다. 그러한 구조에서, 렌더 출력부는 통상적으로 규칙적인 크기로 형성되는 서브 구역(타일)(일반적으로, 예컨대 정사각형 또는 직사각형)으로 분할되지만, 이는 중요하지 않다.
즉시 모드 및 타일 기반 렌더링에서, 레스터화 및 렌더링 프로세스에 대한 입력부는 통상적으로 그래픽 프로세서에 의해 실행될 그래픽 명령의 리스트를 포함할 것이다. 이 "명령어 리스트"는 당업계에 공지된 바와 같이 그래픽 프로세서가 프리미티브를 그리도록 지시하는 명령어, 및 (타일 기반 시스템)에서 렌더링 상태 변화, 시작 및 종료 타일 명령어 등의 다른 그래픽 프로세스를 지시하는 명령어 등을 포함할 것이다.
즉시 모드 렌더링에서, 이 명령어는 잇달아 실행될 명령어를 단순히 열거하는 반면, 타일 기반 렌더링에서, 리스트는 "타일"로 분할될 수 있고, 통상적으로 분할될 것이다(즉, 다른 타일을 위한 명령어와 별개로 각 타일을 위한 명령어를 열거할 것이다).
현재 그래픽 처리 시스템의 한가지 단점은 프리미티브들이 통상적으로는 완벽한 전방 대 후방 순서가 아니라 순차적으로 처리되기 때문에, 출력부가 디스플레이를 위해 처리될 때에 소정의 샘플링 포인트(및 이에 따라 프래그먼트 및 픽셀)가 수 회 가려질 수 있다는 것이다. 이는 수용 및 렌더링된 제1 프리미티브가 나중에 다음의 프리미티브에 의해 커버될 때에 발생하여, 렌더링된 제1 프리미티브가 사실상 해당 픽셀(들)(및 샘플링 포인트(들))에서 보이지 않게 된다. 프리미티브는 이 방식으로 수 회 덮어씌여질 수 있고 이는 통상적으로 렌더링되는 각 렌더 출력부, 예컨대 프레임에 대해 수행되는 다중의 궁극적으로 잉여적인 렌더링 작업을 초래한다. 이 현상은 일반적으로 "오버드로우(overdraw)"로서 지칭된다.
그러한 궁극적으로 잉여적인 작업을 수행하는 결과는 감소된 프레임 속도 및 증가된 메모리 대역폭 요건(예컨대, 나중의 프리미티브에 의해 덮어씌여지는 프리미티브를 위한 데이터를 불러온 결과로서)을 포함한다. 이들 모두는 바람직하지 않고 그래픽 처리 시스템의 전체 성능을 감소시킨다. 이들 문제는 렌더링될 프레임 등의 렌더 출력부가 더 커지고 더 복잡해질 때에(잠재적으로 보이는 시야에서 더 많은 표면이 있기 때문에), 그리고 프로그래머블 프래그먼트 셰이딩(shading)이 증가할 때에(프로그래머블 프래그먼트 셰이딩을 이용하여 소정의 프래그먼트를 가리는 비용이 비교적 크기 때문에) 악화되는 경향이 있다.
"오버드로우"의 문제는 전방 대 후방 순서로 렌더링하기 위해 프리미티브를 전송함으로써 상당히 감소될 수 있다. 그러나, 텍스쳐 등의 리소스에 대한 간섭성 엑세스의 요구, 및 프레임 당 API 콜의 갯수를 최소화시키는 요구 등의 다른 그래픽 처리 요건은 일반적으로 프리미티브에 대한 다른 바람직한 순서 요건을 요구한다. 또한, 렌더링 전에 프리미티브의 충분한 전방 대 후방 정렬은 그래픽 처리 유닛에 대한 프리미티브의 충분한 처리량을 여전히 유지하는 동안에 실용적이지 않을 수 있다. 이들 및 다른 인자는 소정의 렌더 출력부, 예컨대 프레임을 위한 프리미티브의 전방 대 후방 순서가 일반적으로 사실상 가능하지 않거나 바람직하지 않다는 것을 의미한다.
따라서, 디스플레이를 위해(즉, 비-가시 프리미티브 및/또는 프래그먼트 등의 렌더링을 피하도록) 프레임 등의 렌더 출력부를 처리할 때에 수행되는 "오버드로우"의 양(히든 표면의 잉여적인 처리의 양)을 감소시키려는 다수의 다른 기법이 제안되었다.
예컨대, 프리미티브 또는 프래그먼트 등이 이미 렌더링된 프리미티브에 의해 가려지는 경우를 알도록 프리미티브 및/또는 프래그먼트가 렌더링을 위해 전송되기 전에 히든 표면 제거의 형태를 수행하는 것이 공지되어 있다(이 경우에, 새로운 프래그먼트 및/또는 프리미티브는 렌더링될 필요가 없다). 그러한 히든 표면 제거는 예컨대 당업계에 공지된 바와 같이 초기-Z(깊이) 및/또는 스텐실(stencil), 시험 프로세스와 같은 초기 차단 발췌를 포함할 수 있다.
예컨대, 나중의 프래그먼트 전에 이미 처리된(그리고 이에 따라 처리될 필요가 없는) 프리미티브에 의해 차단될 프래그먼트를 식별하려는 이들 구조는 렌더링 파이프라인으로 귀결된다. 이들 구조에서, 예컨대 처리될 새로운 프래그먼트의 깊이 값은 새로운 프래그먼트가 차단되는지의 여부를 알도록 깊이 버퍼에서 프래그먼트 위치에 대한 현재의 깊이 값과 비교된다. 이는 이미 처리된 프리미티브에 의해 차단되는 프래그먼트를 렌더링 파이프라인을 통해 전송하는 것을 피하는 데에 일조할 수 있다.
그러나, 이들 "초기의"(렌더링 전) 히든 표면 제거 기법은 새로운, 예컨대 프리미티브 또는 프래그먼트("초기에" 시험되는 프리미티브프리미티브프리미티브프리미티브프리미티브될 때에 그 처리를 완료한(이미 렌더링된) 프래그먼트만을 고려한다. 이는 관련된 시험 데이터(Z-버퍼 등)가 이미 처리된 프래그먼트으로부터의 데이터만을 포함하기 때문이다.
따라서, 출원인은 그래픽 처리 시스템에서 히든 표면의 제거를 위한 개선된 기법의 여지가 여전히 존재한다고 믿는다.
본 발명의 제1 양태에 따르면, 처리될 그래픽 프래그먼트를 발생시키도록 입력 프리미티브(input primitive)를 레스터화하는 레스터화기(reasteriser)와, 출력 프래그먼트 데이터를 발생시키도록 상기 레스터화기에 의해 발생되는 프래그먼트를 처리하는 렌더러(renderer)를 포함하는 복수 개의 처리 스테이지를 포함하고, 각 그래픽 프래그먼트는 관련된 하나 이상의 샘플링 포인트를 갖는, 그래픽 처리 파이프라인을 작동시키는 방법으로서, 상기 방법은,
프래그먼트가 처리를 위해 렌더러로 전송되기 전에 레스터화기에 의해 발생된 프래그먼트와 관련된 적어도 하나의 샘플링 포인트에 관하여 초기 발췌 시험을 수행하는 단계; 및
적어도 하나의 샘플링 포인트가 초기 발췌 시험을 통과하면, 처리를 위해 그리고 초기 발췌 시험을 통과한 적어도 하나의 샘플링 포인트에 응답하여 프래그먼트를 전방으로 전송하고, 그래픽 처리 파이프라인 내에 있는 다른 샘플링 포인트의 처리가 감속되어야 하는지를 결정하는 단계를 포함하는, 그래픽 처리 파이프라인의 작동 방법이 제공된다.
본 발명의 제2 양태에 따르면, 처리될 그래픽 프래그먼트를 발생시키도록 입력 프리미티브를 레스터화하는 레스터화기와, 출력 프래그먼트 데이터를 발생시키도록 상기 레스터화기에 의해 발생되는 프래그먼트를 처리하는 렌더러와, 프래그먼트가 처리를 위해 렌더러로 전송되기 전에 레스터화기에 의해 발생된 프래그먼트와 관련된 샘플링 포인트에 관하여 초기 발췌 시험을 수행하는 초기 발췌 시험 스테이지를 포함하는 복수 개의 처리 스테이지를 포함하고, 각 그래픽 프래그먼트는 관련된 하나 이상의 샘플링 포인트를 가지며, 그래픽 처리 파이프라인은,
초기 발췌 시험을 통과한 레스터화기에 의해 발생된 프래그먼트와 관련된 적어도 하나의 샘플링 포인트에 응답하여, 프래그먼트를 처리를 위해 전방으로 전송하고, 그래픽 처리 파이프라인 내에 있는 다른 샘플링 포인트의 처리가 감속되어야 하는지를 결정하도록 구성되는, 그래픽 처리 파이프라인이 제공된다.
본 발명의 그래픽 처리 파이프라인은 당업계에 공지된 바와 같이 렌더러에 의해 처리되기 전에 샘플링 포인트, 프래그먼트 및/또는 프리미티브 등의 그래픽 엔터티를 발췌하기 위하여 그래픽 처리 파이프라인의 렌더러 스테이지 전에 초기 깊이 시험 등의 초기 발췌 시험을 포함한다.
그러나, 본 발명은 초기 발췌 시험을 통과한 샘플링 포인트에 응답하여, 또한 그래픽 처리 파이프라인에서 처리되는 다른 샘플링 포인트의 처리가 감속되어야 하는지(예컨대, 그래픽 처리 파이프라인에서 처리되는 다른 샘플링 포인트의 그래픽 처리 파이프라인에 의해 처리하기 위한 우선 순위가 감소될 수 있는지)를 결정한다. 바꿔 말해서, 본 발명은 레스터화 스테이지에서 또는 그 후에 초기 발췌 시험의 효과를 연장시켜 또한 이미 레스터화되었고 처리를 위해 파이프라인의 나머지로 전송된 프리미티브의 샘플링 포인트의 처리 속도에 잠재적으로 영향을 미치게 한다.
아래에서 더 논의되는 바와 같이, 이는 렌더링되는 (예컨대, 차단될) 새로운 프리미티브를 위한 샘플링 포인트를 단순히 중지시키기 보다는 파이프라인 내에 이미 있는 프리미티브를 위한 샘플링 포인트의 처리를 피하고 및/또는 중지시키도록("킬링하도록") 초기 발췌 시험의 결과가 사용되게 한다. 이는 예컨대 초기 발췌 시험을 이미 통과한 프리미티브를 위한 파이프라인 내에서 샘플링 포인트의 처리가, 차단할 나중의 프리미티브의 프래그먼트가 그 처리가 완료되기 전에 발생된다면 여전히 중지될 수 있다는 이점을 갖는다.
따라서, 본 발명은 예컨대 종래 기술의 기법과 달리, 또한 프리미티브 및/또는 프래그먼트가 사실상 렌더링 순서에서 나중의 프리미티브에 의해 차단되는 상황에서 "오버드로우"를 감소 또는 회피할 수 있다.
이 효과는 본 발명이 예컨대 기존의 초기 깊이 시험 기법과 비교했을 때에 그래픽 처리 파이프라인에서 히든 표면이 불필요하게 처리되는 범위를 더 감소시킬 수 있다. 더욱이, 이는 렌더링이 발생하기 전에 샘플들/프래그먼트들의 값비싼 각각의 샘플 또는 각각의 프래그먼트 분류를 수행할 필요가 없다.
실제로, 본 발명의 중요한 이점은 제공된 프리미티브 순서가 최적일 때에(즉, 전방 대 후방) 사실상 개입이 없음으로써, 해당 이벤트에서 "표준" 초기 깊이 시험 구조에 걸쳐 최소의 비용 증가를 제공하지만, 프리미티브 순서가 최적이 아닐 때에 처리로부터 후방 대 전방 프리미티브를 제거하도록 실시될 것이다. 본 발명을 이용하는 비용은 또한 사용된 다중 샘플 안티 앨리어싱(anti-aliasing)의 레벨과 상관없어, 더 높은 순서의 다중 샘플 안티 앨리어싱과의 그 사용을 비교적 저렴하게(그리고 더 높은 순서의 다중 샘플 안티 앨리어싱의 사용을 더 저렴하게) 한다.
더욱이, 본 발명은 이미 파이프라인 내에 있는 샘플링 포인트(들)의 파이프라인에 의해 처리 속도를 감소시키기 때문에, 본 발명은 초기 발췌 시험이 수행되는 시기에 불확실할 수 있는 상황에 여전히 사용될 수 있고, 새로운 프리미티브(프래그먼트)는 사실상 이미 파이프라인 내에 있는 샘플링 포인트(들)을 차단하게 된다(예컨대, 이미 파이프라인 내에 있는 샘플링 포인트(들)를 즉시 폐기한 프로세스와 달리 - 이 경우에 이미 파이프라인 내에 있는 샘플링 포인트는 오직 새로운 프래그먼트가 차단하는 초기 발췌 시험이 수행된 시기에 확실하다면 폐기될 수 있다). 이는 본 발명이 예컨대 이미 파이프라인 내의 샘플링 포인트 또는 프래그먼트를 단순히 즉시 폐기하는 시험에 의해 가능한 것보다 더 많은 샘플링 포인트 및 프래그먼트의 처리에 (잠재적으로) 영향을 미치고 그 처리를 중지시키도록 사용될 수 있다는 것을 의미한다.
예컨대, 본 발명은 초기 발췌 시험된 새로운 프래그먼트가 그 상태의 일부로서 처리(셰이더 조건 폐기 등) 중에 폐기되는 프래그먼트를 초래할 수 있는 하나 이상의 조건을 가질 때에 사용될 수 있어, 프래그먼트가 실제로 렌더 출력부에 나타나는지의 여부가 초기 발췌(예컨대, 깊이) 시험 스테이지에서 공지될 수 없다(새로운 프래그먼트가 처리 파이프라인에 이미 있는 다른 프래그먼트를 확실히 차단하는지의 여부를 초기 발췌 시험에서 결정할 수 없다).
실제로, 프래그먼트가 많은 그래픽 콘텐츠와 처리를 위해 관련된 조건 폐기 상태를 비교적 일반적으로 가질 수 있다는 것을 출원인은 알았다. 아래에서 더 논의되는 바와 같이, 본 발명은 새로운 프래그먼트가 관련된 조건 폐기 시험을 갖기 때문에 초기 발췌 시험이 그것을 행하도록 즉시 사용될 수 없는 경우라도 파이프라인 내의 프래그먼트 및/또는 샘플링 포인트의 처리를 중지("킬링")시키도록 사용될 수 있다.
그래픽 처리 파이프라인의 레스터화기는 예컨대 공지된 레스터화 구성에서와 같이 임의의 적절하고 바람직한 방식으로 작동하도록 구성될 수 있다. 당업계에 공지된 바와 같이, 레스터화기에 의해 수신된 소정의 프리미티브 등이 (적어도 부분적으로) 커버하는 그래픽 처리 파이프라인의 출력의 영역을 커버하는 샘플링 포인트의 어레이의 어떠한 샘플링 포인트(또는 샘플링 포인트의 어떠한 세트)에 따라 처리를 위한 그래픽 프래그먼트를 발생시키도록 작동해야 한다. 레스터화기는 레스터화되는 (각각의) 프리미티브에 의해 커버되는 샘플링 포인트를 포함하는 것으로 판명된 복수 개의 샘플링 포인트(예컨대, 샘플링 마스크)의 각 세트에 의해 및/또는 그 세트에 의해 커버되는 각 샘플링 포인트에 대해 그래픽 프래그먼트를 발생시킨다.
레스터화기에 의해 발생된 각 프래그먼트는 원하는 데로 단일의 샘플링 포인트, 또는 복수 개의 샘플링 포인트를 나타낼 수 있다(관련된다). 바람직한 실시예에서, 각 프래그먼트는 복수 개의, 바람직하게는 4개(2×2)의 샘플링 포인트를 나타낸다.
레스터화기는 프래그먼트를 한번에 하나씩 발생시키도록 구성될 수 있지만, 바람직한 실시예에서 한번에(동시에) 복수 개의 프래그먼트를 발생시킬 수 있다(예컨대, 프리미티브는 공간적으로 인접한 샘플링 포인트 또는 샘플링 포인트 세트를 커버한다). 이 경우에, 레스터화기는 복수 개의 프래그먼트의 세트를 발생키고, 세트 내의 프래그먼트는 바람직하게는 프래그먼트 셰이더 등의 파이프라인의 프래그먼트 처리 부분에 의해 여전히 개별적으로 처리된다. 레스터화기가 복수 개의 프래그먼트를 동시에 생성하면 배압의 생성에 일조함으로써 프래그먼트가 "충전된" 렌더링 파이프라인을 유지한다.
특히 바람직한 실시예에서, 레스터화기는 프리미티브를 (적어도 부분적으로) 덮지 않는 임의의 패치를 폐기한 다음에 프리미티브에 의해 적어도 부분적으로 커버되는 것으로 판명된 샘플링 포인트의 패치 또는 패치들에 대응하는 렌더링을 위한 프래그먼트 또는 프래그먼트들을 발생시키기 위해, 소정의, 바람직하게는 선택된, 바람직하게는 예정된 최소 패치 크기로 점진적으로 더 작은 샘플링 포인트의 패치에 대해 프리미티브를 반복적으로 시험하도록 작동하는 계층적 레스터화기이다. 시험되는 샘플링 포인트의 각 패치는 바람직하게는 16×16, 8×8, 4×4 및/또는 2×2 프래그먼트 등의 정수의 프래그먼트에 대응한다.
레스터화기는 바람직하게는 렌더 타겟 영역의 큰 패치로 시작하고, 해당 프리미티브가 패치 내에 있는지를 시험한다. 없다면, 전체 패치가 폐기되고, 다음 패치가 시험된다(기타 등등). 다른 한편으로, 프리미티브가 패치 내에 있는 것으로(패치를 적어도 부분적으로 커버하는 것으로) 판명되면, 패치는 바람직하게는 4개의 부분으로 분할되고, 최소의 패치 크기(바람직한 실시예에서, 2×2 그룹의 프래그먼트에 대응함)(그러나, 예컨대 개별적인 샘플링 포인트, 개별적인 프래그먼트, 또는 상이한 크기의 그룹의 프래그먼트일 수 있음)에 도달될 때까지 각각의 "서브 패치"가 동일한 방식으로 시험된다.
이 구성에서, 가장 작은 패치 크기가 복수 개의 샘플링 포인트를 포함하는 경우, 레스터화기는 바람직하게는 샘플링 포인트가 프리미티브에 의해 커버된 다음에 이에 따라 프래그먼트를 발생시키는지를 알도록 최종 패치의 개별적인 샘플링 포인트를 시험한다.
레스터화기에 의해 발생된 프래그먼트가 복수 개의 샘플링 포인트의 세트와 관련될 수 있는(그리고 대응하고 나타낼 수 있는) 경우, 그러한 각각의 그래픽 프래그먼트는 바람직하게는 프래그먼트가 대응하는 샘플링 포인트의 세트에서 어느 샘플링 포인트가 (예컨대, 바람직하게는 샘플링되는 프리미티브에 의해) 커버되는지, 즉 사실상 프래그먼트가 대응하는 샘플링 포인트의 세트에서 어느 샘플링 포인트가 렌더링하도록 사용되는지를 가리키는 데이터와 관련된다.
프래그먼트가 렌더링하도록 사용되는 샘플링 포인트를 커버했는지를 나타내는 정보가 바람직하게는 (RGB 및 프래그먼트를 위한 알파값 등의) 렌더러를 통과한 프래그먼트용 프래그먼트 데이터와 관련되거나 그 일부이다. 바람직하게는, 프래그먼트와 관련된 샘플링 포인트의 세트의 각 샘플 위치를 위해, 샘플 위치가 커버되었는지를, 즉 사실상 프래그먼트가 샘플링 포인트를 렌더링하도록 사용되었는지를(즉, 그 데이터가 해당 샘플링 포인트를 위해 저장되어야 하는지를) 가리키는 커버리지 마스크의 형태이다. 바람직하게는, 이 커버리지 마스크는 샘플링 위치를 나타내는 비트맵의 형태이다. 레스터화기는 바람직하게는 커버리지 마스크를 발생시킨다.
본 발명의 작동이 사용하는 초기 발췌 시험은 초기 차단 시험, 깊이(Z) 시험 및/또는 초기 스텐실 시험과 같은 임의의 적절한 그러한 시험을 포함할 수 있다. 특히 바람직한 실시예에서, 초기 깊이(Z) 시험(또는 시험들)을 포함한다. 바람직한 실시예에서, 초기 깊이 및 초기 스텐실 시험을 모두 포함한다.
그래픽 처리 파이프라인의 임의의 또는 모든 이용 가능한 초기 발췌 시험(초기 발췌 시험 스테이지)은 본 발명의 방식으로 작동하도록(본 발명의 방식으로 작동을 트리거하도록) 구성될 수 있다. 그래픽 처리 파이프라인이 1개보다 많은 초기 발췌 시험(초기 발췌 시험 스테이지)을 포함하는 경우, 바람직하게는 모든 초기 발췌 시험 스테이지가 본 발명의 방식으로 작동을 트리거할 수 있다. 따라서, 바람직하게는, 파이프라인에 1개보다 많은 초기 발췌 시험이 존재한다.
초기 발췌 시험 스테이지는 복수 개의 프래그먼트의 패치(세트)에서 작동할 수 있다. 예컨대, 레스터화기가 프리미티브들을 복수 개의 프래그먼트의 패치로 레스터화할 수 있는 경우, 그러한 패치는 전체적으로 초기 발췌 시험을 받을 수 있다. 이 경우에, 초기 발췌 시험은 이에 따라 복수 개의 프래그먼트의 세트에 관련되고(즉, 프래그먼트의 패치가 고려되며), 프래그먼트와 관련된 적어도 하나의 샘플링 포인트에 관한 초기 발췌 시험의 수행은 레스터화기에 의해 발생된 복수 개의 프래그먼트의 적어도 하나의 세트(패치)에 관한 초기 발췌 시험을 수행하는 것을 포함한다(이는 프래그먼트와 관련된 적어도 하나의 샘플링 포인트에 관하여 발췌 시험을 수행하는데, 그 이유는 복수 개의 프래그먼트의 세트에서 프래그먼트와 관련된 모든 샘플링 포인트에 대해 초기 발췌 시험을 효율적으로 수행하기 때문이다).
따라서, 바람직한 실시예에서, 파이프라인은 복수 개의 프래그먼트의 패치(세트)를 공통으로 시험하는 초기 깊이(또는 초기 깊이 및 스텐실) 테스터를 포함한다. 이 시험은 바람직하게는 해당 프리미티브에 의해 충분히(완전히) 커버되는 복수 개의 프래그먼트의 패치(세트)에 대해서만 수행되고, 바람직하게는 복수 개의 프래그먼트의 패치(세트)에 대한 깊이 값의 범위를 이용한다.
바람직하게는, 초기 "패치" 발췌, 예컨대 깊이 및/또는 스텐실 시험을 통과하는 복수 개의 프래그먼트의 임의의 패치(세트)는 본 발명의 방식으로 작동을 트리거할 수 있다.
초기 발췌 시험은 바람직하게는 또한 또는 대신에, 그리고 바람직하게는 또한 단일의 프래그먼트를 작동시킬 수 있다. 따라서, 파이프라인은 바람직하게는 개별적인 프래그먼트를 시험하는 초기 발췌 테스터, 바람직하게는 초기 깊이(또는 초기 깊이 및 스텐실) 테스터를 포함한다. 이 시험은 바람직하게는 해당 프리미티브에 의해 충분히(완전히) 커버되는 프래그먼트에 대해서만 수행되고, 바람직하게는 전체적으로 프래그먼트에 대해 깊이 값 범위 또는 단일의 깊이 값을 이용한다.
바람직하게는, 이 (단일의 프래그먼트) 초기 발췌, 예컨대 깊이 및/또는 스텐실 시험을 통과하는 임의의 프래그먼트는 본 발명의 방식으로 작동을 트리거할 수 있다.
바람직한 실시예에서, 초기 발췌 시험(초기 발췌 시험이 존재함) 또한 또는 대신에, 그리고 바람직하게는 또한, 소정의 프래그먼트가 관련된 샘플링 포인트의 세트보다 적은 샘플링 포인트를 포함하는 단일의 샘플링 포인트 및/또는 샘플링 포인트의 세트에서(예컨대, 프래그먼트가 관련된 4개의 샘플링 포인트 중 2개에 대해) 작동한다. 이 경우에, 초기 발췌 시험은 바람직하게는 단일의 (커버된) 샘플링 포인트에서 작동한다. 이 경우에, 각 샘플링 포인트는 관련된 깊이 값을 갖고, 즉 발췌 시험에 대해 사용되는 (다른 샘플링 포인트와 공유할 수 있는) 각 샘플링 포인트에 대한 깊이 값이 존재할 것이다.
다시, 바람직하게는, 이 샘플링 포인트 초기 발췌, 예컨대 깊이 및/또는 스텐실 시험을 통과하는 임의의 샘플링 포인트는 본 발명의 방식으로 작동을 트리거할 수 있다.
특히 바람직한 실시예에서, 파이프라인은 복수 개의 프래그먼트의 세트 및/또는 개별적인 프래그먼트를 (본 발명의 방식의 작동이 트리거될 수 있는 것에 관하여) 시험하는 초기 발췌 시험과, 개별적인 샘플링 포인트를 (다시 바람직하게는 본 발명의 방식의 작동이 트리거될 수 있는 것에 관하여) 시험하는 그 후의 초기 발췌 시험을 포함한다. 이는 본 발명이 프리미티브를 커버하는 전체 타일로부터 단일의 프래그먼트 및/또는 샘플링 포인트 입도로 히든 표면 제거 이벤트를 발생시키게 한다.
특히 바람직한 실시예에서, 시스템은 시험되는 샘플링 포인트, 프래그먼트, 또는 해당 복수 개의 프래그먼트의 세트(패치가 초기 발췌 시험을 통과하는지의 여부를 결정하도록, 샘플링 포인트, 프래그먼트 및/또는 복수 개의 프래그먼트의 세트(패치)와 관련된 깊이 값 범위를 샘플링 포인트, 프래그먼트, 또는 해당 복수 개의 프래그먼트의 세트(패치)의 위치와 관련된 저장된 깊이 값 범위와 비교하는 초기 발췌 시험을 포함한다.
깊이 값 범위는 바람직하게는 고려될 수 있는(발췌 시험될 수 있는) 프래그먼트들의 각 패치에 대해 저장된다.
초기 발췌 시험 또는 시험들 자체는 임의의 적절하고 원하는 방식으로, 예컨대 당업계에 공지되고 및/또는 해당 그래픽 처리 시스템에 사용되는 정상적인 방식으로 수행될 수 있다. 시험들은 예컨대 샘플링 포인트(또는 각각의 샘플링 포인트)를 구체적으로 시험할 수 있거나, 샘플링 포인트(또는 각각의 샘플링 포인트)를 구체적으로 시험하지 않더라도 샘플링 포인트(들)를 시험하는 효과를 갖는 시험일 수 있다.
특히 바람직한 실시예에서, 다른 샘플링 포인트의 처리가 감속될 수 있는지가 결정되는 것에 응답하여 초기 발췌 시험은 보수적인 초기 깊이 시험이고, 이 시험은 바람직하게는 새로운 샘플링 포인트 및/또는 프래그먼트가 파이프라인에 존재하는 늦은(파이프의 단부) 깊이 시험을 통과하면 초기 발췌 시험 스테이지에서 예보하도록(결정하도록) 본질적으로 작동한다.
특히 바람직한 실시예에서, 시스템(및 바람직하게는 레스터화기)은 (예컨대, 타일 또는 드로우 콜에 대해) 프리미티브의 세트를 렌더링하기에 앞서서, 각각의 샘플링 위치, 샘플링 위치들의 세트, 프래그먼트, 프래그먼트 위치, 프래그먼트의 패치 및/또는 프로그먼트 위치의 세트에 대해 예상되는 깊이 값, 및 바람직하게는 예상되는 깊이 값의 범위를 발생 및/또는 저장하고, 발췌 시험 또는 시험들은 레스터화기에 의해 발생되는 프리미티브 및 프래그먼트 등을 시험할 때에 사용할 수 있고 바람직하게는 사용한다. 예상되는 깊이 값의 이들 범위는 해당 패치 등을 위한 깊이 값의 모든 가능한 결과를 나타내야 하고(포함해야 하고), 바람직하게는 샘플링 포인트와 프래그먼트가 그래픽 처리 파이프라인에 의해 처리될 때에 초기 및 늦은 깊이 시험을 받는 경우에 발생 및 저장되는 개별적인 샘플링 위치, 프래그먼트, 프래그먼트들의 패치 등을 위한 깊이 값 및 깊이 값 범위를 이용하여 레스터화 및 렌더링이 나아갈 때에 업데이트된다.
초기 발췌 시험 또는 시험들은 예컨대 레스터화기의 부분으로서, 또는 레스터화기 후에(단, 렌더러 전에), 또는 이 조합으로서 실시될 수 있다(예컨대, 1개보다 많은 초기 발췌 시험이 존재함). 바람직한 실시예에서, 시험 또는 시험들은 레스터화 프로세스의 일부로서 및/또는 레스터화기 후에, 단 그래픽 처리 파이프라인의 나머지 전에 실시될 수 있다.
시험되는 샘플링 포인트 또는 포인트들, 또는 프래그먼트 또는 프래그먼트들이 초기 발췌 시험을 실패하면(예컨대, 차단되는 것으로 판명되면), 그 샘플링 포인트 또는 포인트들, 또는 프래그먼트 또는 프래그먼트들은 바람직하게는 당업계에 공지된 바와 같이 파이프라인에서의 추가 처리로부터 "발췌"된다.
이 발췌는 임의의 원하는 적절한 방식으로 달성(및 제공)될 수 있다. 예컨대, 발췌 시험이 전체 프래그먼트(또는 복수 개의 전체 프래그먼트들의 세트)에 관한 경우에, 바람직하게는 프래그먼트 또는 복수 개의 프래그먼트의 세트가 당업계에 공지된 바와 같이 처리를 위해(예컨대, 렌더링을 위해) 파이프라인을 통해 전방으로 전송되지 않는다(즉, 발췌된다).
다른 한편으로, 발췌 시험이 렌더링될 프래그먼트와 관련된 모든 샘플링 포인트보다 적은 샘플링 포인트에 관한 것이라면, 바람직하게는 (즉, 발췌 시험을 실패한) 해당 샘플링 포인트의 추가 처리는 예컨대 샘플링 포인트를 "디스에이블드"로서 마킹함으로써(예컨대, 해당 프래그먼트와 관련된 커버리지 마스크 내에 커버되지 않는 것으로 지시함으로써), 또는 임의의 다른 적절한 방식으로 방지(중지)되지만, 해당 프래그먼트는 프래그먼트와 관련된 "발췌되지 않은" 샘플링 포인트가 여전히 처리되도록 (파이프라인을 통해) 전방으로 전송된다.
시험되는 적어도 하나의 샘플링 포인트가 초기 발췌 시험을 통과하면, 시험되는 샘플링 포인트(즉, 샘플링 포인트가 관련된 프래그먼트), 프래그먼트, 또는 복수 개의 프래그먼트의 세트가 당업계에 공지된 바와 같이 다시 처리를 위해 전방으로(예컨대, 렌더러를 향해) 전송된다. 그러나, 이 이벤트에서, 파이프라인 내에 있는 다른 샘플링 포인트의 처리가 초기 발췌 시험을 통과한 샘플링 포인트에 응답하여(그 결과로서) 감속되어야 하는지가 결정된다[그리고, 이미 파이프라인 내에 있는 샘플링 포인트의 처리가 초기 발췌 시험을 통과한 샘플링 포인트 등에 응답하여(그 결과로서) 감속되어야 한다는 것이 결정되면, 그 샘플링 포인트의 처리는 바람직하게는 감속된다].
이와 관련하여 프로세스가 (예컨대 전체 프래그먼트에 관해서가 아니라) 샘플링 포인트 레벨(분해능)에서 작동하고, 그리고 이에 따라 시험하며, 파이프라인 내에 이미 있는 프래그먼트와 관련된 개별적인 샘플링 포인트의 처리를 감속시킬 수 있다. 이는 초기 발췌 시험이 개별적인 샘플링 포인트를 시험하고, 예컨대 파이프라인 내의 프래그먼트와 관련된 샘플링 포인트에서 프로세스가 "조금씩 깍아내게 하는(chip away)" 경우에 특히 적절할 수 있다(예컨대, 프래그먼트와 관련된 모든 (커버된) 샘플링 포인트가 일단 "감속"되도록 결정되면, 전체 프래그먼트의 처리가 감속될 수 있도록).
동일하게, 프로세스는 또한 또는 대신에 전체 프래그먼트에 관하여 작동하도록, 즉 전체 프래그먼트(또는 복수 개의 프래그먼트의 세트)가 초기 발췌 시험을 통과하면, 파이프라인 내에 있는 임의의 프래그먼트의 처리가 감속되어야 하는지가 결정되도록 구성될 수 있다. 이는 초기 발췌 시험이 개별적인 샘플링 포인트 뿐만 아니라 또는 그 대신에 프래그먼트를 시험하는 경우에 특히 적절할 수 있다.
따라서, 바람직한 실시예에서, 초기 발췌 시험은 프래그먼트 및/또는 복수 개의 프래그먼트의 세트를 시험하고, 시험된 프래그먼트 또는 프래그먼트의 세트가 초기 발췌 시험을 통과하면, 이미 파이프라인 내에 있는 프래그먼트 및/또는 복수 개의 프래그먼트의 세트의 처리가 초기 발췌 시험을 통과한 프래그먼트 또는 프래그먼트의 세트의 결과로서 감속되어야 하는지가 결정된다.
복수 개의 프래그먼트의 각 세트는 바람직하게는 4개의 프래그먼트의 세트, 바람직하게는 2×2 프래그먼트 그룹이다.
바람직한 실시예에서, 렌더링 파이프라인이 예컨대(및 바람직하게는) 프래그먼트 또는 복수 개의 프래그먼트의 그룹(예컨대, 프래그먼트의 2×2 그룹)에서 작동하는 엔터티의 분해능에서 결정이 수행된다.
바람직하게는, 이미 파이프라인 내에 있는 복수 개의 샘플링 포인트 및/또는 프래그먼트 중 어느 하나의 처리가 초기 발췌 시험을 통과한 적어도 하나의 샘플링 포인트 및/또는 프래그먼트(들)의 결과로서 감속되어야 하는지가 결정된다.
(그래픽 파이프라인에서 다른 프래그먼트 등의 처리를 느리게 하고 가능하게는 "킬링"하는) 본 발명의 방식의 작동은 (초기 발췌 시험을 통과하는 샘플링 포인트와 관련된) 초기 발췌 시험을 통과하는 각각의 그리고 매 프래그먼트에 관하여 수행될 수 있지만, 특히 바람직한 실시예에서, 오직 선택된 프래그먼트, 바람직하게는 특정한 선택된, 바람직하게는 예정된 기준을 충족시키는 (그리고 초기 발췌 시험(들)을 통과하는) 프래그먼트에 관하여 수행된다.
따라서, 특히 바람직한 실시예에서, 이미 파이프라인에 있는 임의의 다른 샘플링 포인트 및/또는 프래그먼트의 처리가 감속되어야 하는지의 결과는, 초기 발췌 시험을 통과한 프래그먼트 및/또는 샘플링 포인트가 또한 특별한, 바람직하게는 선택된 특성 또는 특성들[다른 샘플링 포인트의 처리를 (가능하게는) 감속시키기 위한 (필요한 특성을 갖는) 필수적인(선택된) 기준을 충족시키는]을 갖고, 프래그먼트 등이 특성을 갖지 않는다면, 바람직하게는 그래픽 처리 파이프라인 내에 있는 다른 샘플링 포인트의 처리가 초기 발췌 시험을 통과하는 적어도 하나의 샘플링 포인트에 응답하여 감속되어야 하는지가 결정되지 않는다.
따라서, 바람직한 실시예에서, 샘플링 포인트 및/또는 프래그먼트의 처리가 감속되어야 하는지의 여부의 결정은 추가 점검 및/또는 기준을 받는다.
유사하게, 바람직한 실시예에서, 프래그먼트(또는 샘플링 포인트)가 초기 발췌 시험을 통과하면, 파이프라인 내의 프래그먼트(들)(또는 샘플링 포인트(들))의 처리가 그 처리를 감속하기 전에 감속되어야 하는지를 알도록 프래그먼트(들)(또는 샘플링 포인트(들))의 다른 특성이 먼저 점검된다.
이어서, 본 발명의 방식으로 작동을 트리거하는 초기 발췌 시험(들)을 통과하는 프래그먼트의 기준은 임의의 선택되고 적절한 기준일 수 있다.
특히 바람직한 실시예에서, 이와 관련하여 초기 발췌 시험된 프래그먼트 및/또는 샘플링 포인트의 특정한 특성은 프래그먼트 및/또는 샘플링 포인트가 그 처리의 일부로서 조건 폐기 시험을 받는지의 여부이다(즉, 프래그먼트 및/또는 샘플링 포인트가 그래픽 처리 파이프라인에 의해 처리될 때에 나중에 폐기될 수 있고, 예컨대, 바람직하게는 관련된 셰이더 내의 조건 폐기를 갖는다는 것을 지시하는 관련된 상태를 갖는다). [당업계에 공지된 바와 같이, 렌더링되는 몇몇의 프래그먼트는 (예컨대) 폐기되는 프래그먼트들을 초래할 수 있는 렌더링 프로세스의 일부로서 다양한 조건 폐기 시험 또는 조건을 받는다. 이는 예컨대 나무의 나뭇잎 또는 펜스를 렌더링할 때에 사용될 수 있다(이 경우에, 나뭇잎들/펜스들 간의 공간을 위해 폐기가 사용됨). 이들 프래그먼트는 본 발명이 바람직하게 적용되는 프래그먼트이다.]
따라서, 바람직한 실시예에서, 기준은 바람직하게는 그 처리의 일부로서 하나 이상의 조건 폐기 시험을 받는 프래그먼트를 포함한다. 바람직한 실시예에서, 전체 RGB 기록 마스크를 갖는 프래그먼트; 이전의 RGBA 값에 따라 좌우되는 혼합 기능을 갖지 않는 프래그먼트; 타일 버퍼로부터 판독하지 않는 프레임의 셰이더 프로그램; 완전히 불투명한 프래그먼트; 및 알파 시험, 알파 대 커버리지, 셰이더 함유 폐기, 혼합 셰이더 함유 폐기 또는 늦은 깊이 업데이트를 수행하도록 강요되는 셰이더 내의 도일한 위치를 갖는 초기 프래그먼트 이외의 이유를 위해 늦은 깊이 업데이트를 수행하도록 (어플리케이션 프로그래머에 의해) 강요되지 않는 프래그먼트를 포함한다.
바꿔 말해서, 바람직하게는 알파 시험, 알파 커버리지 시험, 셰이더 함유 폐기, 혼합 셰이더 함유 폐기 또는 셰이더 내의 초기 프래그먼트 때문에 늦은 깊이 업데이트를 수행하도록 강요되는 프래그먼트는 늦은 깊이 업데이트를 행하도록 강요되고, 본 발명의 방식으로 작동을 트리거하여 다른 프래그먼트 및/또는 샘플링 포인트의 처리를 (잠재적으로) 느리게 하도록 허용되고(그리고 사용되고), 그러나 임의의 다른 이유로 늦은 깊이 업데이트를 수행하도록 강요되는 프래그먼트는 다른 프래그먼트 및/또는 샘플링 포인트의 처리를 (잠재적으로) 느리게 하기 위하여 본 발명의 방식의 작동을 트리거하도록 허용되지 않는다(사용되지 않는다).
특히 바람직한 실시예에서, 이미 파이프라인 내에 있는 임의의 다른 샘플링 포인트 및/또는 프래그먼트의 처리가 감속되어야 하는지의 결정은, 특히 발췌 시험을 통과한 샘플링 포인트(들) 및/또는 프래그먼트(들)가 이미 파이프라인 내에 있는 샘플링 포인트 및/또는 프래그먼트를 오버드로우할 수 있는지를(바람직하게는 차단할 수 있는지를) 기초로 한다(그 이유는, 나중의 샘플링 포인트(들) 및/또는 프래그먼트들이 예컨대 초기 깊이 시험을 통과하면, 이미 파이프라인 내에 있는 동일한 위치(들)을 나타내는 임의의 샘플링 포인트 및/또는 프래그먼트의 전면에 그들 샘플링 포인트 및/또는 프래그먼트가 있을 수 있다(그리고 이에 따라 불투명하다면 (잠재적으로) 차단할 수 있다)는 것을 가리키기 때문이다).
따라서, 초기 발췌 시험 "통과" 이벤트의 사건시에 처리가 감속되어야 하는 샘플링 포인트 및/또는 프래그먼트의 결정은 바람직하게는 그래픽 처리 파이프라인의 나중의 스테이지 또는 스테이지들에 의해 수행되어, 초기 발췌 시험을 통과한 샘플링 포인트 또는 포인트들 및/또는 프래그먼트 또는 프래그먼트들(적절하다면)에 의해 잠재적으로 오버드로우될 수 있는 현재 수용하는(예컨대, 처리하는) 임의의 샘플링 포인트 및/또는 프래그먼트를 식별한다.
이 프로세스는 임의의 적절하고 바람직한 방식으로 수행될 수 있지만, 바람직하게는 파이프라인 스테이지를 현재 차지하는 샘플링 포인트 및/또는 프래그먼트 중 1개 또는 몇개 또는 전부의 (예컨대, (x,y)) 위치를 초기 발췌 시험을 통과한 샘플링 포인트(들) 및/또는 프래그먼트(들)의 (예컨대, (x,y)) 위치와 비교함으로써 행해진다.
(전체 프래그먼트에 대한) 샘플링 포인트가 고려되는 경우, 이는 해당 샘플링 포인트의 "실제" 위치를 비교함으로써 행해질 수 있지만, 바람직한 실시예에서 해당 샘플링 위치, 및 프래그먼트 내에 샘플링 포인트의 상대 위치를 나타내는 프래그먼트의 위치를 (예컨대, 프래그먼트와 관련된 커버리지 마스크를 기초로 하여) 비교함으로써 행해진다.
프래그먼트가 고려된 경우에, 이는 바람직하게는 파이프라인 스테이지를 현재 차지하는 프래그먼트 중 1개 또는 몇개 또는 전부의 위치를 초기 발췌 시험을 통과한 프래그먼트(들)의 위치(들)과 비교함으로써 행해진다.
복수 개의 프래그먼트의 세트가 고려되는(초기 발췌 시험을 통과한) 경우, 이는 바람직하게는 파이프라인 스테이지를 현재 차지하는 프래그먼트 중 1개 또는 몇개 또는 전부 또는 프래그먼트들의 그룹의 위치를 초기 발췌 시험을 통과한 복수 개의 프래그먼트의 세트에서 프래그먼트에 의해 커버되는 위치(영역)의 범위와 비교함으로써 행해진다.
초기 발췌 시험을 통과한 샘플링 포인트(들) 및/또는 프래그먼트(들)(적절하다면)과 렌더 출력부(의 평면)에서 동일한 위치를 차지하는(즉, 동일한 (x,y) 위치를 갖는) 임의의 현재 샘플링 포인트 및/또는 프래그먼트의 처리는 (선택적으로) 감속될 수 있고, 바람직하게는 감속된다(예컨대, 충족되는 샘플링 포인트의 처리를 감속하도록 다른 기준을 경험함).
바람직한 실시예에서, 샘플링 포인트 및/또는 프래그먼트의 처리가 감속되어야 하는지의 여부의 결정은 추가 점검 및/또는 기준을 받는다. 바람직하게는 처리가 잠재적으로 감속되는(예컨대, 잠재적으로 차단되는) 파이프라인 내에 이미 있는 프래그먼트(들)(또는 샘플링 포인트(들))의 다른 특성은, 예컨대 그 처리를 감속하기 전에 요구되는 차단 질문과 관련된 것과 같이 요구되는 부작용을 갖기 때문에 파이프라인 내의 프래그먼트(들)(또는 샘플링 포인트(들))의 처리가 여전히 임의의 다른 이유로 정상적인 우선 순위로(정상적인 속도로) 처리되어야 하는지를 알도록 먼저 점검된다. 이 점검은 바람직하게는 파이프라인 내에 이미 있는 프래그먼트(또는 샘플링 포인트)가 차단 질문(액티브 차단 질문이 부착됨)을 위해 또는 다른 부작용(이 경우에, 그 처리는 바람직하게는 감속되지 않음)을 위해 요구되는지를 결정하는 것을 포함한다.
따라서, 특히 바람직한 실시예에서, 그래픽 처리 파이프라인은 초기 발췌 시험을 통과하는 프래그먼트와 관련된 적어도 하나의 샘플링 포인트에 응답하여 이미 파이프라인 내에 있는 샘플링 포인트 및/또는 프래그먼트 또는 프래그먼트들의 처리를 선택적으로 감속하도록 구성된다.
샘플링 포인트 또는 프래그먼트 또는 프래그먼트들이 초기 발췌 시험을 통과할 때에 파이프라인 내에 있는 임의의 샘플링 포인트 및/또는 프래그먼트의 처리가 감속되어야 하는지를 결정하는 작동은 임의의 적절하고 원하는 방식으로 실시될 수 있다.
바람직하게는, 초기 발췌 시험을 통과하는(그리고 다른 프래그먼트 등의 처리를 (잠재적으로) 감속시키는데에 요구되는 임의의 다른 기준을 충족시키는) 샘플링 포인트 또는 프래그먼트 또는 프래그먼트들의 이벤트는 관련 정보, 예컨대 그리고 바람직하게는 시험을 통과한 샘플링 포인트 또는 프래그먼트(들)의 위치를 현재 취급하는 샘플링 포인트 또는 프래그먼트의 임의의 것이 감속된 처리를 가져야하는지를 평가하도록 해당 정보를 이용하여 다른, 예컨대 나중의 스테이지에 의해 처리 파이프라인의 다른, 예컨대 나중의 스테이지로 전송하는 것을 트리거한다.
시험이 전체 프래그먼트에 관한 것인 경우, 이 위치 정보는 바람직하게는 위에서 논의된 바와 같이 해당 프래그먼트(들)의 (x,y) 위치(들)를 포함한다. 시험이 복수 개의 프래그먼트의 세트에 관한 것인 경우, 이 위치 정보는 바람직하게는 (다시 위에서 언급된 바와 같이) 해당 복수 개의 프래그먼트의 세트의 프래그먼트에 의해 커버되는 (x,y) 위치의 범위를 포함한다. 시험이 샘플링 포인트에 관한 것인 경우, 위치 정보는 바람직하게는 샘플링 포인트가 (바람직하게는, 위에서 논의된 바와 같이 커버리지 마스크의 형태인) 프래그먼트용 샘플링 포인트 위치의 지시와 함께 샘플링 포인트(들)이 관련되는 프래그먼트의 (x,y) 위치를 포함한다.
따라서, 특히 바람직한 실시예에서, 그래픽 처리 시스템은 프래그먼트와 관련된 적어도 하나의 샘플링 포인트가 초기 발췌 시험을 통과하면, 초기 발췌 시험을 통과한 적어도 하나의 샘플링 포인트(및/또는 해당 프래그먼트)에 관한 정보를 그래픽 처리 파이프라인의 적어도 하나, 바람직하게는 다른(및 바람직하게는 나중의) 스테이지로 전송하도록 구성되고, 그래픽 처리 파이프라인의 적어도 하나의 스테이지는 초기 발췌 시험을 통과한 적어도 하나의 샘플링 포인트 및/또는 프래그먼트와 관련된 방송 정보를 이용하여 현재 스테이지에 있는 프래그먼트와 관련된 임의의 프래그먼트 및/또는 샘플링 포인트의 처리가 감속되어야 하는지를 결정하도록 구성된다. 위에서 논의된 바와 같이, 바람직하게는 정보는 초기 발췌 시험을 통과한 적어도 하나의 샘플링 포인트 및/또는 프래그먼트가 예컨대, 그리고 바람직하게는 그래픽 처리 파이프라인에 의해 처리될 때에 잠재적으로 폐기되는 추가 기준을 충족시키면 그래픽 처리 파이프라인의 다른 스테이지에 대한 방송이다.
위에서 논의된 바와 같이, 가장 바람직하게는 초기 발췌 시험은 초기 깊이 시험을 포함하고, 및/또는 그래픽 처리 파이프라인의 적어도 하나의 스테이지는 초기 발췌 시험을 통과한 샘플링 포인트(들) 및/또는 프래그먼트(들)과 관련된 방송 정보를 이용하여 현재 스테이지에 있는 임의의 샘플링 포인트 및/또는 프래그먼트가 잠재적으로 초기 발췌 시험을 통과한 샘플링 포인트(들) 및/또는 프래그먼트에 의해 오버드로우되는지를, 그리고 임의의 그러한 샘플링 포인트 또는 프래그먼트가 존재하는지를 결정하여, 잠재적으로 오버드로우된 샘플링 포인트 및/또는 프래그먼트의 추후 처리를 선택적으로 감속하도록 구성된다.
따라서, 특히 바람직한 실시예에서, 그래픽 처리 파이프라인은,
프래그먼트가 처리를 위한 파이프라인을 통해 전방으로 전송되기 전에 프래그먼트와 관련된 적어도 하나의 샘플링 지점에 대해 및/또는 레스터화기에 의해 발생된 적어도 하나의 프래그먼트에 대해 초기 깊이 시험을 수행하고,
적어도 하나의 샘플링 포인트 또는 적어도 하나의 프래그먼트가 초기 깊이 시험을 통과하면(그리고, 바람직한 실시예에서, 적어도 하나의 샘플링 포인트 또는 적어도 하나의 프래그먼트가 그래픽 처리 파이프라인에 의해 처리될 때에 잠재적으로 폐기되면), 프래그먼트를 처리를 위해 전방으로 전송하고 초기 깊이 시험을 통과한 적어도 하나의 샘플링 포인트 또는 적어도 하나의 프래그먼트에 관한 정보를 그래픽 처리 파이프라인의 적어도 하나의, 바람직하게는 나중의 스테이지로 전송하도록 구성되고,
그래픽 처리 파이프라인의 적어도 하나의 스테이지는, 초기 깊이 시험을 통과한 적어도 하나의 샘플링 포인트 또는 적어도 하나의 프래그먼트와 관련된 방송 정보를 이용하여, 현재 스테이지에 있는 임의의 샘플링 포인트 및/또는 프래그먼트가 잠재적으로 초기 깊이 신호를 통과한 적어도 하나의 샘플링 포인트 또는 적어도 하나의 프래그먼트에 의해 오버드로우되는지를 결정하도록, 그리고 임의의 그러한 샘플링 포인트 또는 프래그먼트가 존재하면, 잠재적으로 오버드로우된 샘플링 포인트 및/또는 프래그먼트의 추가 처리를 선택적으로 감속하도록 구성된다.
위에서 논의된 바와 같이, 가장 바람직하게는, 그래픽 처리 파이프라인의 스테이지(들)로 전송된 정보는 초기 발췌 시험을 통과한 샘플링 포인트(들) 및/또는 프래그먼트(들)의 위치(들)을 포함하고, 및/또는 그래픽 처리 파이프라인의 적어도 하나의 스테이지는 초기 발췌 시험을 통과한 샘플링 포인트(들) 및/또는 프래그먼트(들)와 관련된 방송 위치 정보를 사용하여, 현제 스테이지에 있는 임의의 샘플링 포인트 및/또는 프래그먼트가 초기 발췌 시험을 통과한 샘플링 포인트(들) 및/또는 프래그먼트와 동일한 렌더 타겟(용도 버퍼), 예컨대 처리되는 타일에서의 위치를 차지하는지를 결정하도록, 그리고 초기 발췌 시험을 통과한 샘플링 포인트(들) 및/또는 프래그먼트와 동일한 렌더 타겟에서의 위치를 차지하는 임의의 샘플링 포인트들 및/또는 프래그먼트들의 추가 처리를 선택적으로 감속하도록 구성된다.
임의의 샘플링 포인트 및/또는 프래그먼트의 처리가 초기 발췌 시험 "통과" 사건의 이벤트에서 감속될 수 있는지의 여부가 결정되는 처리 파이프라인의 스테이지 또는 스테이지들은 그래픽 처리 파이프라인의 임의의 원하고 적절한 스테이지를 포함할 수 있다. 스테이지는 바람직하게는 그래픽 처리 파이프라인의 적어도 하나의 나중의 스테이지(즉, 초기 발췌 시험 및/또는 레스터화기 다음에 있는 스테이지)를 포함한다. 처리 파이프라인은 이 목적을 위해 원하는 바와 같이 많은 스테이지로 분할될 수 있다.
한가지 바람직한 실시예에서, 이 스테이지는 그래픽 처리 파이프라인의 렌더러이다(이 결정은 렌더러에 의해 행해짐). 예컨대, 렌더러가 전체적으로 본 발명의 방식으로 작동하는 단일의 스테이지로서 처리되는 것이 가능하거나, 처리될 것이고, 서로 상관없이 각각 작용하는 복수 개의 별개의 스테이지로 분할된다. 따라서, 바람직한 실시예에서, 초기 발췌 시험 "통과" 이벤트 정보는 그래픽 처리 파이프라인의 (적어도) 렌더러로 및/또는 렌더러의 부분 또는 부분들로 전송된다(렌더러 또는 렌더러의 부분 또는 부분들은 본 발명의 방식으로 작동함).
임의의 샘플링 포인트 또는 프래그먼트의 처리가 초기 발췌 시험 "통과" 시험의 이벤트에서 감속될 수 있는지가 결정되는 처리 파이프라인의 스테이지 또는 스테이지들은 바람직하게는 또한 또는 대신에, [초기 발췌 시험(예컨대, 초기 발췌 시험 파이프라인보다 나중에 있는) 및/또는 (아직 완벽하게 레스터화되지 않은) 레스터화를 여전히 받는 예컨대 초기 프래그먼트(및/또는 프래그먼트의 패치)의 처리를 느리게 하도록) 레스터화기를 여전히 받는 예컨대 프래그먼트의 처리를 느리게 하도록] 예컨대 프래그먼트가 유용하게 발췌될 수 있는 파이프라인의 다른 스테이지, 예컨대 초기 발췌 시험을 포함한다.
특히 바람직한 실시예에서, 복수 개의 프래그먼트(및 바람직하게는 스테이지에서의 모든 프래그먼트) 및/또는 샘플링 포인트는 병행하여 시험될 수 있다. 이는 예컨대 한번에 복수 개의 프래그먼트의 패치를 시험할 수 있는 초기 발췌 시험의 유리한 효과를 취하는 것을 용이하게 한다. 바람직하게는, 구조는 파이프라인 스테이지가 초기 발췌 시험 통과 이벤트가 잠재적인 "감속" 기회를 발생시킬 수 있는 것과 동일한 속도로 샘플링 포인트 및 프래그먼트의 처리를 느리게할 수 있도록 된다.
위에서 논의된 바와 같이, 샘플링 포인트 및/또는 프래그먼트가 그 감속된 처리를 가져야 한다고 결정되는 경우에, 바람직하게는 파이프라인에 의한 프래그먼트 및/또는 샘플링 포인트의 처리가 감속된다.
"감속된" 프래그먼트 등은 일반적으로 되는 것보다 더 느리게 처리되어야 하지만, 샘플링 포인트(들) 및/또는 프래그먼트의 처리가 감속되는 범위가 원하는 데로 선택될 수 있다. 샘플링 포인트(들) 및/또는 프래그먼트의 처리가 파이프라인을 통해 일반적으로 처리되는 속도에 비해 감속되거나 지체되고, 샘플링 포인트(들) 및/또는 프래그먼트가 그 때에 파이프라인에 의해 추가 처리되는 것으로부터 "감속" 폐기(영구적으로 중지)되지 않는다는 것이 의도된다. 따라서, 프래그먼트 등의 처리가 감속되지만, 프래그먼트 등은 (감속될 때에) 파이프라인에 의한 추가 처리로부터 폐기되지 않는다.
특히 바람직한 실시예에서, 파이프라인에서 프래그먼트 및/또는 샘플링 포인트(들)의 처리의 감속은, 해당 프래그먼트 또는 샘플링 포인트의 처리의 감속을 트리거한 샘플링 포인트(들) 또는 프래그먼트가 파이프라인의 "감속된" 프래그먼트 또는 샘플링 포인트를 추월하도록, 그리고 바람직하게는 파이프라인에서 "감속된" 프래그먼트 또는 샘플링 포인트의 처리의 완료 전에 해당 프래그먼트 또는 샘플링 포인트의 처리의 감속을 트리거한 샘플링 포인트(들) 또는 프래그먼트가 파이프라인에서 그 조건 폐기 시험 또는 시험들을 완료해야 하도록(그리고 바람직하게는 완료하도록) 파이프라인에서 프래그먼트 및/또는 샘플링 포인트(들)의 처리를 지연시키는 것을 포함한다. 아래에서 논의되는 바와 같이, 이는 "트리거링" 프래그먼트 또는 샘플링 포인트가 파이프라인에 의한 추가 처리로부터 감속된 프래그먼트 등을 (잠재적으로) 폐기("킬링")하도록 사용되게 한다.
처리가 감속되어야 한다고 결정된 샘플링 포인트 및/또는 프래그먼트는 임의의 원하고 적절한 방식으로 감속된 처리를 가질 수 있다.
한가지 바람직한 실시예에서, 파이프라인에서 프래그먼트 및/또는 샘플링 포인트(들)의 처리의 감속은 (예컨대, 바람직하게는 "트리거링" 프래그먼트 및/또는 샘플링 포인트가 그 조건 폐기 시험 또는 시험들을 완료할 때까지) 파이프라인에서 프래그먼트 및/또는 샘플링 포인트의 처리를 중단시키는 것을 포함한다.
파이프라인에서 프래그먼트 등의 처리의 그러한 중단은 원하는 데로 달성될 수 있다. 한가지 바람직한 실시예에서, 중단된 프래그먼트 등은 그 처리가 중단되는 "좀비 풀"에 배치된다.
다른 바람직한 실시예에서, 파이프라인에서 프래그먼트 및/또는 샘플링 포인트(들)의 처리의 감속은, 예컨대 바람직하게는 (감속되지 않은 프래그먼트 등에 대해) 파이프라인에 의해 캐시 엑세스 및/또는 다른 처리를 위해 우선 순위가 적은 "감속된" 프래그먼트를 제공함으로써 파이프라인에서 프래그먼트 및/또는 샘플링 포인트의 처리를 우선 순위가 감소되는 것(그 우선권을 감속시키는 것)을 포함한다.
그러한 파이프라인에 의한 프래그먼트 등의 우선 순위가 감소되는 것이 달성되거나 요망될 수 있다.
특히 바람직한 실시예에서, 처리될 지시를 갖는 프래그먼트는 지시가 완료될 때에 프래그먼트 풀에 배치되고, 케시 히트가 존재할 때에 지시는 달리 실행을 준비하며, 적절한 프래그먼트를 프래그먼트 풀 밖으로 빼내어 실행한다. 이어서, 프래그먼트는 프래그먼트가 프래그먼트 풀에서 빠져나가는 것이 허용되어야 하는지의 여부를 결정할 때에 고려될 추가 인자로서 우선 순위 조건을 추가함으로써 감소되는 처리를 위한 그 우선 순위를 갖는다.
바람직한 실시예에서, 프래그먼트 등은 그렇게 식별된 샘플링 포인트 및/또는 프래그먼트를 "우선 순위가 감소되는 것"으로서(처리를 위해 감소된 우선 순위를 갖는 것으로서) 마킹함으로써 우선 순위가 감소된다. 이어서, 관련 처리 스테이지는 예컨대 임의의 처리를 행하기 전에 우선 순위가 감소되는지를 점검한 다음에, 정상적인 또는 이에 따라 감소된 우선 순위로 프래그먼트를 처리할 수 있다. 이는 우선 순위가 감소된 샘플링 포인트 및/또는 프래그먼트의 처리를 감속시킬 것이다.
샘플링 포인트의 경우에, 샘플링 포인트는 바람직하게는 해당 프래그먼트를 위해 샘플링 포인트 마스크 등의 메타 데이터의 값을 적절하게 설정함으로써 우선 순위가 감소되는 것으로서 마킹된다.
프래그먼트가 전체적으로 고려될 때에, 각 프래그먼트는 예컨대(그 관련된 프 데이터의 일부로서) 관련된 "우선 순위가 감소된" 비트를 가질 수 있는데, 이 비트는 설정되면 프래그먼트의 처리가 우선 순위가 감소되었다는 것을 가리킨다. 한가지 바람직한 실시예에서, 이것이 행해진다. 초리 스테이지는 예컨대 처리를 위해 수용하는 각 프래그먼트의 "우선 순위가 감소된" 비트를 점검할 수 있다. 비트는 또한 개별적인 샘플링 포인트가 프래그먼트와 관련된 모든 샘플링 포인트를 궁극적으로 우선 순위가 감소되었는지를 알 수 있다.
예컨대, 프래그먼트의 우선 순위가 감소된 태그가 설정되면 대기 행렬(캐쉬)를 해제하도록 캐쉬와 같이 작동하는 우선 순위가 감소된 태그를 갖는 프래그먼트 대기 행렬을 갖는 대안적인 구조가 대신에 또는 원한다면 또한 사용될 수 있다.
일단 프래그먼트 및/또는 샘플링 포인트가 이미 파이프라인 내에 있는 다른 프래그먼트 등의 감속을 트리거하면, 이어서 특히 바람직한 실시예에서, 그러한 트리거링 프래그먼트가 받을 수 있는(즉, 모든 조건 폐기 시험을 수행하고 폐기되지 않은) 모든 폐기 조건을 완료하면(그리고 통과하면), 여전히 파이프라인 내에 있는 임의의 초기 프래그먼트의 처리가 중지될 수 있는지가 추가로 결정된다[예컨대, "트리거링" 프래그먼트 등이 다른 프래그먼트 등을 차단하는 것이 공지된 것을 기초로 하여(그 이유는 폐기되지 않았고 폐기되지 않을 것이기 때문임)]. 이는 예컨대 "트리거링" 프래그먼트가 파이프라인에 의해 그 처리를 완료하였다면, 및/또는 그 최종 조건 폐기 시험을 받았다면 행해질 수 있다.
따라서, 특히 바람직한 실시예에서, 파이프라인 내의 다른 프래그먼트 및/또는 샘플링 포인트(들)의 처리의 감속을 이미 트리거한 샘플링 포인트 및/또는 프래그먼트가 그 관련 조건 폐기 시험을 통과하면(즉, 폐기되지 않으면), 그래픽 처리 파이프라인에서 처리되는 다른 샘플링 포인트 및/또는 프래그먼트의 처리가 중지될 수 있는지가 결정된다.
이는 파이프라인 내에 여전히 있는 초기 프리미티브를 위핸 샘플링 포인트의 처리를 피하고 및/또는 중지("킬링")시키도록 모든 조건 폐기 시험을 통과하는 프래그먼트의 결과가 사용될 수 있다는 것을 의미한다.
초기 발췌 시험 후에 프래그먼트에 의해 잠재적으로 차단될 수 있는 프래그먼트의 처리를 느리게 하거나 지체시키도록 본 발명의 작동과 조합하여 사용될 때에 이 작동은, 트리거링 프래그먼트가 파이프라인에서 추월되고 사실상 감속된 프래그먼트가 파이프라인에 의해 완전히 처리되기 전에 트리거링 프래그먼트에 의해 차단되는 임의의 "감속된 프래그먼트"를 예컨대 "킬링"하도록 그 조건 폐기 시험(들)을 통과한 "감속" 트리거링 프래그먼트의 결과가 사용될 수 있다는 것을 의미한다. 이는 새로운 프래그먼트(예컨대)가 실제로 이미 파이프라인 내에 있는 프래그먼트를 차단하는 초기 발췌 시험(예컨대, 깊이 시험) 스테이지에서 충분한 확실성을 갖는 것으로 결정될 수 없는 경우라도 파이프라인 내의 프래그먼트의 정면에 있는 초기 프래그먼트에 관하여 히든 표면 제거를 수행하도록 나중의 프래그먼트가 사용되게 한다.
따라서, 본 발명은 예컨대 그리고 종래 기술의 기법과 달리, 프리미티브 및/또는 프래그먼트가 사실상 렌더링 순서에서 나중의 프리미티브에 의해 차단되는 상황에서 "오버드로우"를 감소시키도록 또는 피하도록 사용될 수 있다. 이 효과는 본 발명이 예컨대 기존의 초기 깊이 시험 기법과 비교했을 때에 그래픽 처리 파이프라인에서 히든 표면이 불필요하게 처리되는 범위를 추가로 감소시킬 수 있다는 것이다.
출원인은 이 작업이 더 효과적이며, 이미 파이프라인 내에 있는 프래그먼트가 더 "감속"될수록, 새로운 트리거링 프래그먼트 등이 파이프라인에서 추월될 수 있다는 것을 추가로 인지하였다. 따라서, 위에서 논의한 바와 같이, 프래그먼트 등의 처리의 감속은 트리거링 프래그먼트가 몇몇의, 그리고 바람직하게는 모든 프래그먼트 등을 추월하게 하는 것이고, 프래그먼트는 "감속한다".
초기에 파이프라인에 있는 프래그먼트 등의 처리가 중지될 수 있는지를 알도록 그래픽 처리 파이프라인에서 조건 폐기 시험을 통과하는 샘플링 포인트 및/또는 프래그먼트의 결과를 이용하는 사상은 자체가 신규성이 있고 유리할 수 있다고 믿는다.
따라서, 본 발명의 다른 양태에 따르면, 처리될 그래픽 프래그먼트를 발생시키도록 입력 프리미티브를 레스터화하는 레스터화기와, 출력 프래그먼트 데이터를 발생시키도록 상기 레스터화기에 의해 발생되는 프래그먼트를 처리하는 렌더러를 포함하는 복수 개의 처리 스테이지를 포함하고, 각 그래픽 프래그먼트는 관련된 하나 이상의 샘플링 포인트를 갖는, 그래픽 처리 파이프라인을 작동시키는 방법으로서, 상기 방법은,
레스터화기에 의해 발생된 프래그먼트와 관련된 적어도 하나의 샘플링 포인트에 관하여 조건 폐기 시험을 수행하는 단계; 및
적어도 하나의 샘플링 포인트가 조건 폐기 시험을 통과하면, 파이프라인 내에서 전방으로 프래그먼트를 전송하고, 그래픽 처리 파이프라인 내에 있는 다른 샘플링 포인트의 처리가 조건 폐기 시험을 통과한 적어도 하나의 샘플링 포인트의 결과로서 중지될 수 있는지를 결정하는 단계를 포함하는, 그래픽 처리 파이프라인의 작동 방법이 제공된다.
본 발명의 다른 양태에 따르면, 처리될 그래픽 프래그먼트를 발생시키도록 입력 프리미티브를 레스터화하는 레스터화기와, 출력 프래그먼트 데이터를 발생시키도록 상기 레스터화기에 의해 발생되는 프래그먼트를 처리하는 렌더러를 포함하는 복수 개의 처리 스테이지를 포함하고, 각 그래픽 프래그먼트는 관련된 하나 이상의 샘플링 포인트를 가지며,
레스터화기에 의해 발생된 프래그먼트와 관련된 샘플링 포인트에 관하여 조건 폐기 시험이 수행될 수 있고,
상기 그래픽 처리 파이프라인은,
조건 폐기 시험을 통과한 레스터화기에 의해 발생된 프래그먼트와 관련된 적어도 하나의 샘플링 포인트에 응답하여, 프래그먼트를 전방으로 전송하고, 그래픽 처리 파이프라인 내에 있는 다른 샘플링 포인트의 처리가 조건 폐기 시험을 통과한 적어도 하나의 샘플링 포인트의 결과로서 중지될 수 있는지를 결정하도록 구성되는, 그래픽 처리 파이프라인이 제공된다.
본 발명의 이 작업이 이용하는 조건 폐기 시험은 나뭇잎 또는 펜스를 렌더링할 때에 사용되는 형태와 같은 임의의 적절한 그러한 시험을 포함할 수 있다.
그래픽 처리 파이프라인의 이용 가능한 조건 폐기 시험(조건 폐기 시험 스테이지)의 일부 또는 전부는 이 방식으로 작동하도록(작동을 트리거하도록) 구성될 수 있다. 바람직하게는, 일단 프래그먼트 등이 받게 되는 최종 조건 폐기 시험을 통과하면 오직 결정이 이루어진다.
조건 폐기 시험 또는 시험들 자체는 임의의 적절하고 원하는 방식으로, 예컨대 당업계에 공지된 및/또는 해당 그래픽 처리 시스템에 사용되는 일반적인 방식으로 수행될 수 있다.
다른 한편으로, 파이프라인 내의 다른 프래그먼트 등의 처리의 감속을 트리거한 샘플링 포인트 또는 포인트들, 또는 프래그먼트 또는 프래그먼트들이 받아야 하는 조건 폐기 시험을 실패하면(즉, 조건 폐기 시험의 결과로서 폐기되면), 출원인은 (트리거링 프래그먼트가 폐기되었기 때문에, 트리거 프래그먼트 등이 사실상 "감속된" 프래그먼트를 차단하지 않으므로) 해당 프래그먼트가 감속된 파이프라인 내에 임의의 프래그먼트 등을 안전하게 폐기할 수 없다는 것을 인지하였다. 따라서, 이 경우에, 초기 발췌 시험을 통과하는 해당 프래그먼트 등의 결과로서 감속된 임의의 프래그먼트는 그래픽 처리 파이프라인에 의해 여전히 계속 처리되어야 하고, 바람직하게는 여전히 처리된다.
이 경우에, "감속된" 프래그먼트 등은 더 느린 속도로 처리되도록 단순히 계속 남겨질 수 있다. 그러나, 특히 바람직한 실시예에서, "감속된" 프래그먼트 등은 그 처리의 감속을 트리거한 프래그먼트 등이 나중에 폐기되면 더 높은(그리고 바람직하게는 정상적인) 우선 순위("재개됨")로 처리되도록 복구된다. 바람직하게는, 이는 트리거링 프래그먼트 등이 예컨대 본 발명의 작동에 의해 임의의 다른 이유로 폐기("킬링")되면 또한 행해진다.
따라서, 본 발명의 이들 실시예 및 양태는 바람직하게는 적어도 하나의 샘플링 포인트가 조건 페기 시험을 실패하면(폐기되면), 조건 폐기 시험을 실패한 적어도 하나의 샘플링 포인트를 폐기하는 단계, 및 그래픽 처리 파이프라인 내에 있는 다른 샘플링 포인트의 처리가 조건 폐기 시험을 실패한 적어도 하나의 샘플링 포인트의 결과로서 재개되어야 하는지를 결정하는 단계를 더 포함한다.
이미 감속된 프래그먼트 등의 그러한 "재개"는 원하는 데로 달성될 수 있다. 바람직한 실시예에서, 해당 프래그먼트 등의 적절한 "재개"를 트리거하는 "재개" 신호의 전송에 의해 달성된다.
이들 "킬링" 및 "재개" 프로세스는 (예컨대, 전체 프래그먼트에 관하여가 아니라) 샘플링 포인트 레벨(분해능)에서 작동하고, 그리고 이에 따라 시험하며, 초기에 파이프라인 내에 있는 프래그먼트와 관련된 개별적인 샘플링 포인트의 추가 처리, 또는 재개를 중지할 수 있다. 이는 (예컨대, 모든 샘플링 포인트가 "중지"(또는 재개)될 때까지) 여전히 파이프라인 내에 있는 프래그먼트와 관련된 샘플링 포인트에서 "조금씩 깍아 내게 하는" 프로세스를 허용하는 경우에 특히 적절할 수 있고, 이 점에서 전체 프래그먼트가 폐기(또는 "재개")될 수 있다.
동등하게, 프로세스는 또는 또한 대신에 전체 프래그먼트에 관하여 즉 전체 프래그먼트(또는 복수 개의 프래그먼트의 세트)가 (최종) 조건 폐기 시험을 통과하면, 여전히 파이프라인 내에 있는 임의의 프래그먼트의 처리가 중지될 수 있는지가 결정되도록 작동하게 구성될 수 있다.
바람직한 실시예에서, 시험된 프래그먼트가 전체적으로 조건 시험을 통과(또는 실패)하면, 초기에 파이프라인 내에 있는 프래그먼트의 처리가 조건 폐기 시험을 통과한(또는 실패한) 프래그먼트의 결과로서 중지(또는 각각 재개)될 수 있는지가 결정된다.
바람직한 실시예에서, 결정은 렌더링 파이프란이 예컨대(그리고 바람직하게는) 프래그먼트에 작동하는 엔터티의 분해능에서 수행된다.
바람직하게는, 초기에 파이프라인 내에 있는 프래그먼트 및/또는 복수 개의 샘플링 포인트 중 임의의 하나의 처리가 조건 폐기 시험을 통과한(또는 각각 실패한) 적어도 하나의 샘플링 포인트 및/또는 프래그먼트의 결과로서 중지(또는 재개)될 수 있는지가 결정된다.
초기에 파이프라인 내에 있는 임의의 다른 샘플링 포인트 및/또는 프래그먼트의 처리가 중지될 수 있는지의 결정은 임의의 원하고 적절한 기준을 기초로 할 수 있다. 특히 바람직한 실시예에서, 그 모든 조건 폐기 시험을 통과한 샘플링 포인트(들) 및/또는 프래그먼트(들)이 파이프라인 내에 있는 샘플링 포인트 및/또는 프래그먼트를 오버드로우하는지를(그리고 바람직하게는 차단하는지를) 기초로 한다[샘플링 포인트 및/또는 프래그먼트가 앞서 파이프라인에 진입한 동일한 위치(들)를 나타내는 임의의 샘플링 포인트 및/또는 프래그먼트의 전면에 있는(그리고 이에 따라 불투명하다면 차단하는) 것을 가리키는 모든 조건 폐기 시험(및 초기 깊이 시험)을 통과하면]
따라서, 조건 폐기 시험 "통과" 사건의 이벤트 시에 더 이상 처리될 필요가 없는 샘플링 포인트 및/또는 프래그먼트의 결정은 바람직하게는 그래픽 처리 파이프라인의 스테이지 또는 스테이지들에 의해 수행되어, 현재 포함하고, 조건 폐기 시험을 통과한 (적절한) 샘플링 포인트 또는 샘플링 포인트(들) 또는 프래그먼트 또는 프래그먼트(들)에 의해 오버드로우되는 임의의 샘플링 포인트 및/또는 프래그먼트를 식별(결정)한다.
파이프라인 내의 임의의 다른 샘플링 포인트 및/또는 프래그먼트의 처리가 재개될 수 있는지의 결정은 유사하게 임의의 원하고 적절한 기준을 기초로 할 수 있다. 특히 바람직한 실시예에서, 파이프라인 내에 있는 감속된 샘플링 포인트(들) 및/또는 프래그먼트(들)이 조건 폐기 시험을 실패한 샘플링 포인트 및/또는 프래그먼트에 의해 더 이상 오버드로우될 수 없는지(그리고 바람직하게는 더 이상 차단될 수 없는지)를 기초로 한다[샘플링 포인트(들) 및/또는 프래그먼트가 조건 폐기 시험을 실패하고 폐기되었다면, 이들 샘플링 포인트 및/또는 프래그먼트가 앞서 파이프라인에 진입한 동일한 위치(들)를 나타내는 임의의 샘플링 포인트 및/또는 프래그먼트의 전면에 없다는(그리고 이에 따라 불투명하다면 차단하지 않는다는) 것을 의미한다].
따라서, 조건 폐시 시험 "실패" 사건의 이벤트 시에 재개될 수 있는 이들 샘플링 포인트 및/또는 프래그먼트의 결정은 바람직하게는 조건 폐기 시험을 실패한 (적절한) 샘플링 포인트 또는 샘플링 포인트들 및/또는 프래그먼트 또는 프래그먼트들에 의해 오버드로우되지 않는, 현재 포함하는(예컨대, 처리하는) 임의의 샘플링 포인트 및/또는 프래그먼트를 식별(결정)하는 그래픽 처리 파이프라인의 스테이지 또는 스테이지들에 의해 수행된다.
이들 프로세스는 임의의 적절하고 원하는 방식으로 수행될 수 있지만, 바람직하게는 파이프라인을 현재 차지하는 샘플링 포인트 및/또는 프래그먼트의 1개 또는 일부 또는 모두의 (예컨대, (x,y)) 위치를 조건 폐기 시험을 통과한(또는 실패한) 샘플링 포인트(들) 및/또는 프래그먼트(들)의 (예컨대, (x,y)) 위치와 비교함으로써 행해진다.
(전체 프래그먼트에 대해) 샘플링 포인트가 고려되는 경우, 이는 해당 샘플링 포인트의 "실제" 위치를 비교함으로써 행해질 수 있지만, 바람직한 실시예에서, 해당 샘플링 포인트를 나타내는 프래그먼트의 위치, 및 프래그먼트 내의 샘플링 포인트의 상대 위치를 (예컨대, 프래그먼트와 관련된 커버리지 마스크를 기초로 하여) 비교함으로써 행해진다.
프래그먼트가 고려되는 경우에, 이는 바람직하게는 파이프라인 스테이지를 현재 차지하는 프래그먼트 중 1개 또는 일부 또는 전부의 위치를 조건 폐기 시험을 통과한 또는 실패한 프래그먼트(들)의 위치(들)과 비교함으로써 행해진다.
복수 개의 프래그먼트의 세트가 고려되는(예컨대, 늦은 발췌 시험을 통과한) 경우에, 이는 바람직하게는 파이프라인 스테이지를 현재 차지하는 프래그먼트 중 1개 또는 일부 또는 전부의 위치를 조건 폐기 시험을 통과한 복수 개의 프래그먼트의 세트에서 프래그먼트에 의해 커버되는 위치(영역)의 범위와 비교함으로써 행해진다.
프래그먼트 등이 "킬링" 또는 "재개"되어야 하는지를 결정하는 프로세스는 바람직하게는 그 감속을 트리거하는 프래그먼트 등보다 "오래된"(그 전에 파이프라인 내에 이미 있는) 프래그먼트 등에 관하여 수행된다. 처리될 프리미티브(및 이에 따라 프래그먼트 및/또는 샘플링 포인트)는 이를 용이하게 하는 타임 스탬프와 관련될 수 있다.
조건 폐기 시험을 통과한(또는 실패한) (적절한) 샘플링 포인트(들) 및/또는 프래그먼트(들)과 동일한 렌더 출력의 (평면의) 위치를 차지하는(즉, 동일한 (x,y) 위치를 갖는) 임의의 오래된 샘플링 포인트 및/또는 프래그먼트의 처리는 (선택적으로) 중지(또는 각각 재개)될 수 있고, 바람직하게는 중지된다[예컨대, 또한 충족되는 샘플링 포인트의 처리를 중지시키는 다른 기준을 받는다].
바람직한 실시예에서, 샘플링 포인트 및/또는 프래그먼트가 추가 처리로부터 폐기될 수 있는지의 여부의 결정은 추가 점검 및/또는 기준을 받는다. 바람직하게는, 잠재적으로 폐기될(예컨대, 차단될) 프래그먼트(또는 샘플링 포인트)의 다른 특성이 먼저 점검되어, 예컨대 처리를 중지시키기 전에 여전히 요구되는 차단 질문와 관련된 것과 같이 여전히 요구되는 부작용을 갖기 때문에, 프래그먼트(또는 샘플링 포인트)가 임의의 다른 이유로 여전히 처리되어야 하는지를 알게 된다. 이 점검은 바람직하게는 프래그먼트(또는 샘플링 포인트)가 차단 질문(부착되는 액티브 차단 질문을 가짐)에 대해 또는 다른 부작용(이 경우에, 폐기되어서는 안됨)에 대해 여전히 요구되는지를 결정하는 것을 포함한다.
따라서, 특히 바람직한 실시예에서, 그래픽 처리 파이프라인은 조건 폐기 시험을 통과하는 프래그먼트와 관련된 적어도 하나의 샘플링 포인트에 응답하여 이미 파이프라인 내에 있는 샘플링 포인트 및/또는 프래그먼트 또는 프래그먼트들의 처리를 선택적으로 중지시키도록 구성된다.
파이프 내에 있는 임의의 샘플링 포인트 및/또는 프래그먼트의 처리가 샘플링 포인트 또는 프래그먼트 또는 프래그먼트들이 조건 폐기 시험을 통과 또는 실패할 때에 중지 또는 재개될 수 있는지를 결정하는 작동은 임의의 적절하고 원하는 방식으로 실시될 수 있다.
바람직하게는, 조건 폐기 시험을 통과 및/또는 실패하는 샘플링 포인트 또는 프래그먼트 또는 프래그먼트들의 이벤트는 관련 정보, 예컨대, 그리고 바람직하게는 시험을 통과한(또는 실패한) 샘플링 포인트 또는 프래그먼트(들)의 위치를 처리 파이프라인의 다른, 예컨대 초기 스테이지로 전송하는 것을 트리거하고, 이들 다른, 예컨대 초기 스테이지는 바람직하게는 그 정보를 이용하여 현재 취급하고 있는 샘플링 포인트 또는 프래그먼트 중 임의의 것이 그 중지 또는 재개된(예컨대, 그리고 바람직하게는 전술한 방식으로) 처리를 가질 수 있는지를 평가한다.
전체 프래그먼트에 관한 시험에서, 이 위치 정보는 바람직하게는 위에서 논의된 바와 같이 해당 프래그먼트(들)의 (x,y) 위치(들)를 포함한다. 시험이 복수 개의 프래그먼트의 세트에 관한 것인 경우, 이 위치 정보는 바람직하게는 (다시 위에서 논의된 바와 같이) 해당 복수 개의 프래그먼트의 세트의 프래그먼트에 의해 커버되는 (x,y) 위치의 범위를 포함한다. 시험이 샘플링 포인트에 관한 것인 경우, 위치 정보는 바람직하게는 프래그먼트에 대해 샘플링 포인트(바람직하게는, 위에서 논의된 바와 같이 커버리지 마스크)가 어느 샘플링 포인트 위치에 있는지의 지시와 함께 샘플링 포인트(들)이 관련된 프래그먼트의 (x,y) 위치를 포함한다.
방송 정보는 바람직하게는 또한 조건 폐기 시험(및 정보의 전송을 그렇게 트리거한) 및/또는 신호가 "재개" 또는 "킬링"("중지 처리") 신호인지 여부의 지시를 받는 프래그먼트의 "시효"를 지시하는 타임스탬프를 포함한다.
따라서, 특히 바람직한 실시예에서, 그래픽 처리 시스템은, 파이프라인 내에 있는 샘플링 포인트 및/또는 프래그먼트의 감속을 이미 트리거한 프래그먼트와 관련한 적어도 하나의 샘플링 포인트가 그 최종 폐기 시험을 통과하면, 조건 폐기 시험을 통과한 해당 적어도 하나의 샘플링 포인트(및/또는 프래그먼트)에 관한 정보를 그래픽 처리 파이프라인의 적어도 하나의, 바람직하게는 다른(및 바람직하게는 초기의) 스테이지로 전송하고, 그래픽 처리 파이프라인의 적어도 하나의 스테이지는 현재 스테이지에 있는 프래그먼트와 관련된 임의의 프래그먼트 및/또는 샘플링 포인트의 처리가 중지될 수 있는지를 결정하도록 조건 폐기 시험을 통과한 적어도 하나의 샘플링 포인트 및/또는 프래그먼트와 관련된 방송 정보를 이용하도록 구성된다.
유사하게, 특히 바람직한 실시예에서, 그래픽 처리 시스템은, 파이프라인 내에 있는 샘플링 포인트 및/또는 프래그먼트의 감속을 이미 트리거한 프래그먼트와 관련한 적어도 하나의 샘플링 포인트가 조건 폐기 폐기 시험을 실패하면, 조건 폐기 시험을 실패한 적어도 하나의 샘플링 포인트(및/또는 해당 프래그먼트)에 관한 정보를 그래픽 처리 파이프라인의 적어도 하나의, 바람직하게는 다른(및 바람직하게는 초기의) 스테이지로 전송하고, 그래픽 처리 파이프라인의 적어도 하나의 스테이지는 현재 스테이지에 있는 프래그먼트와 관련된 임의의 프래그먼트 및/또는 샘플링 포인트의 처리가 중지될 수 있는지를 결정하도록 조건 폐기 시험을 실패한 적어도 하나의 샘플링 포인트 및/또는 프래그먼트와 관련된 방송 정보를 이용하도록 구성된다.
바람직하게는, 그래픽 처리 파이프라인은 이들 일을 모두 행하도록 구성된다(즉, 파이프라인 내에 있는 샘플링 포인트 및/또는 프래그먼트의 감속을 이미 트리거한 각 프래그먼트는 프래그먼트가 받는 조건 폐기 시험(들)의 결과에 따라 "재개" 또는 "킬링" 신호의 전송을 트리거한다.
따라서, 특히 바람직한 실시예에서, 그래픽 처리 파이프라인은,
파이프라인 내의 샘플링 포인트 및/또는 프래그먼트의 감속을 이미 트리거한 레스터화기에 의해 발생된 프래그먼트에 관련한 적어도 하나의 샘플링 포인트에 대해 조건 폐기 시험을 수행하도록 구성되고,
적어도 하나의 샘플링 포인트가 조건 폐기 시험을 통과하면, 조건 폐기 시험을 통과한 적어도 하나의 샘플링 포인트에 관한 정보를 그래픽 처리 파이프라인의 적어도 하나의, 바람직하게는 초기의 스테이지로 전송하며,
그래픽 처리 파이프라인의 적어도 하나의 스테이지는 현재 스테이지에 있는 임의의 샘플링 포인트가 조건 폐기 시험을 통과한 적어도 하나의 샘플링 포인트에 의해 오버드로우되는지를 결정하도록 조건 폐기 시험을 통과한 적어도 하나의 샘플링 포인트와 관련된 방송 정보를 이용하고, 임의의 그러한 샘플링 포인트가 존재하면, 이들 오버드로우된 샘플링 포인트의 추가 처리를 선택적으로 중지하도록 구성된다.
유사하게, 특히 바람직한 실시예에서, 그래픽 처리 파이프라인은,
파이프라인 내의 샘플링 포인트 및/또는 프래그먼트의 감속을 이미 트리거한 레스터화기에 의해 발생된 프래그먼트에 관련한 적어도 하나의 샘플링 포인트에 대해 조건 폐기 시험을 수행하도록 구성되고,
적어도 하나의 샘플링 포인트가 조건 폐기 시험을 실패하면, 조건 폐기 시험을 실패한 적어도 하나의 샘플링 포인트에 관한 정보를 그래픽 처리 파이프라인의 적어도 하나의, 바람직하게는 초기의 스테이지로 전송하며,
그래픽 처리 파이프라인의 적어도 하나의 스테이지는 현재 스테이지에 있는 임의의 샘플링 포인트가 조건 폐기 시험을 실패한 적어도 하나의 샘플링 포인트에 의해 오버드로우되지 않는지를 결정하도록 조건 폐기 시험을 실패한 적어도 하나의 샘플링 포인트와 관련된 방송 정보를 이용하고, 임의의 그러한 샘플링 포인트가 존재하면, 이들 샘플링 포인트의 처리를 선택적으로 재개하도록 구성된다.
위에서 논의된 바와 같이, 가장 바람직하게는, 그래픽 처리 파이프라인의 스테이지(들)로 전송된 정보는 조건 폐기 시험을 통과한(또는 실패한) 샘플링 포인트(들) 및/또는 프래그먼트(들)의 위치(들), 및 바람직하게는 시효를 포함하고, 및/또는 그래픽 처리 파이프라인의 적어도 하나의 스테이지는, 현재 스테이지에 있는 임의의 샘플링 포인트 및/또는 프래그먼트가 처리되는 렌더 타겟(목적 버퍼), 예컨대 타일에서 조건 폐기 시험을 통과한 또는 실패한 샘플링 포인트(들) 및/또는 프래그먼트와 동일한 위치를 차지하는지를 결정하도록 조건 폐기 시험을 통과한 또는 실패한 샘플링 포인트(들) 및/또는 프래그먼트(들)과 관련된 방송 위치 정보를 이용하도록, 그리고 조건 폐기 시험을 각각 통과한 또는 실패한 샘플링 포인트(들) 및/또는 프래그먼트와 렌더 타겟에서 동일한 위치를 차지하는 임의의 샘플링 포인트 및/또는 프래그먼트의 나중의 처리를 각각 선택적으로 중지 또는 재개하도록 구성된다.
임의의 샘플링 포인트 및/또는 프래그먼트가 조건 폐기 시험 "통과" 또는 "실패" 사건의 이벤트 시에 더 이상 처리될 필요가 없거나 재개되어야 하는지가 결정되는 처리 파이프라인의 스테이지 또는 스테이지들은 그래픽 처리 파이프라인의 임의의 원하고 적절한 스테이지를 포함할 수 있다. 스테이지는 바람직하게는 프래그먼트 등의 처리가 초기 발췌 시험 또는 시험들을 통과하는 샘플링 포인트의 결과로서 감속되어야 하는지가 결정될 수 있는 그래픽 처리 파이프라인의 스테이지 또는 스테이지들을 적어도 포함한다. 처리 파이프라인은 이 목적을 위해 원할 때에 많은 스테이지로 분할될 수 있다.
특히 바람직한 실시예에서, 복수 개의 프래그먼트(및 바람직하게는 스테이지의 모든 프래그먼트) 및/또는 샘플링 포인트가 병행하여 시험될 수 있다. 이는 예컨대 한번에 복수 개의 프래그먼트의 패치를 시험할 수 있는 조건 폐기 시험의 이점을 효율적으로 취하는 것을 용이하게 한다.
처리가 중지될 수 있는 것으로 결정되는 샘플링 포인트 및/또는 프래그먼트는 임의의 원하고 적절한 형태로 중지 및/또는 생략된 그 처리를 가질 수 있다. 바람직하게는, 이는 그렇게 식별된 샘플링 포인트 및/또는 프를 "킬링"(무효)된 것으로서 마킹함으로써 행해지고, 관련 스테이지는 샘플링 포인트 및/또는 프래그먼트가 임의의 추가 처리를 행하기 전에 킬링(무효)되지 않았는지를 점검한다. 이는 이들 샘플링 포인트 및/또는 프래그먼트의 임의의 불필요한 처리를 회피 및/또는 중지하게 된다.
개별적인 샘플링 포인트가 고려되는 경우, 샘플링 포인트는 바람직하게는 해당 프래그먼트를 위해 커버리지 마스크에 그 값을 적절하게 설정함으로써 무효로서 마킹된다.
프래그먼트가 전체적으로 고려될 때에, 각 프래그먼트는 예컨대 설정되면 프래그먼트가 처리될 필요가 없다(폐기될 수 있다)는 것을 가리키는 관련된(예컨대, 관련된 프래그먼트 데이터의 일부로서) "킬링된"("무효") 비트를 갖는다. 한가지 바람직한 실시예에서, 이것이 행해지는 것이다. 처리 스테이지는, 예컨대 처리를 위해 수용하는 각 프래그먼트의 무효 비트를 점검한다. 이 비트는 또한 개별적인 샘플링 포인트의 시험이 프래그먼트와 관련된 모든 샘플링 포인트를 궁극적으로 무효로 만들면 설정될 수 있다.
프래그먼트의 유효성 태그가 설정되면 대기 행렬(캐쉬) 라인을 릴리스하도록 캐쉬와 같이 작동하는 유효성 태그를 갖는 프래그먼트 대기 행렬을 갖는 것과 같은 대안적인 구조가 대신에 또는 또한 원하는 데로 사용될 수 있다.
임의의 "킬링된" 프래그먼트가 파이프 내에 유지될 수 있지만(단, 처리되지 않음), 바람직한 실시예에서, 파이프라인로부터 무효 프래그먼트를 제거하는 단계가 취해진다. 이는 바람직하게는 파이프라인으로부터 임의의 무효 프래그먼트를 제거하도록 작동될 수 있는(수용하는) 하나 이상의 압밀 스테이지를 파이프라인에 제공함으로써 행해진다. 그러한 압밀 스테이지는 예컨대 프래그먼트가 FIFO를 통해 일할 때에 임의의 무효 프래그먼트를 제거하도록(임의의 홀을 클리어하도록) 작동하는 FIFO(first-in, first-out) 대기 행렬을 포함할 수 있다.
처리가 "재개"되어야 한다고 결정되는 샘플링 포인트 및/또는 프래그먼트의 경우에, 임의의 원하고 적절한 방식으로 행해질 수 있다. 이는 예컨대 프래그먼트 등의 처리가 어떻게 제1 배치에서 감속되었는지에 따라 좌우될 수 있다.
바람직한 실시예에서, 프래그먼트 등은 (그 감속된 우선 순위가 감소된 상태로부터, 그리고 그 상태에 대해) 처리를 위한 그 우선 순위를 증가시킴으로써 재개된다. 바람직하게는, 프래그먼트 등은 그 원래의 (정상적인) 처리 우선 순위 및 속도로 복구된다.
처리가 감속되어야 하는 프래그먼트 및/또는 샘플링 포인트가 파이프라인에 의해 그 처리를 중단함으로써 감속되는 처리를 갖는 경우, 프래그먼트 및/또는 샘플링 포인트는 바람직하게는 그 처리를 "비중단"시킴으로써(더 이상 중단시키지 않음으로써) 재개된다.
한가지 바람직한 실시예에서, "재개"될 중단된 프래그먼트 등은 그 처리가 중단되고 정상적으로 방식으로 처리하도록 파이프라인으로 복귀되는 "좀비 풀"로부터 제거된다.
처리가 감속되어야 하는 프래그먼트 및/또는 샘플링 포인트가 그 처리를 파이프라인에 의해 우선 순위가 감소되지 않고 그렇게 식별된 샘플링 포인트 및/또는 프래그먼트를 "우선 순위가 감소되는"(처리를 위한 감소된 우선 순위를 갖는) 것으로서 마킹함으로써 감속된 그 처리를 갖는 경우, 프래그먼트 및/또는 샘플링 포인트는 바람직하게는 샘플링 포인트 및/또는 프래그먼트를 "우선 순위가 감소된" 것으로서 더 이상 마킹하지 않음으로써 재개된다. 따라서, 샘플링 포인트 마스크와 같은 적절한 "우선 순위가 감소된" 메타 데이터 및/또는 프래그먼트와 관련된 "우선 순위가 감소된" 비트가 바람직하게는 적절하게 업데이트(변화)된다.
유사하게, 프래그먼트의 우선 순위가 감소된 태그가 설정되면 대기 행렬(캐쉬) 라인을 릴리스하도록 캐쉬와 같이 작동하는 우선 순위가 감소된 캐그를 갖는 프래그먼트 대기 행렬이 사용되는 경우, 우선 순위가 감소된 태그는 프래그먼트 등의 재개될 때에 적절하게 업데이트될 수 있다.
상기로부터, 특히 바람직한 실시예에서, 초기 발췌(예컨대, 깊이) 시험을 통과하고 파이프라인 내에 이미 있는 하나 이상의 프래그먼트 등의 처리의 감속을 트리거하는 신호를 전송하면 프래그먼트 및/또는 샘플링 포인트는, 받게 되는 모든 조건 폐기 시험을 통과하면 그 처리가 이미 감속된 프래그먼트 등의 하나 이상의 처리(폐기)의 중지를 트리거하는 신호를 전송하고, 받게 되는 조건 폐기 시험을 실패하면 그 처리가 이미 감속된 프래그먼트 등의 하나 이상의 처리의 재개를 트리거하는 신호를 전송한다는 것을 알 것이다.
상기로부터, 그 처리가 이미 감속된 프래그먼트 및/또는 샘플링 포인트는 제1 배치에서 샘플링 포인트 및/또는 프래그먼트의 감속을 트리거한 프래그먼트 및/또는 샘플링 포인트의 처리의 결과에 따라 중지 또는 재개되는 그 처리를 갖게 된다는 것을 또한 알 것이다.
특히 바람직한 실시예에서, 처리 파이프라인에서 임의의 프래그먼트의 처리가 감속되어야 하는지를 결정하도록 초기 발췌 시험 또는 시험들을 통과하는 프래그먼트의 이벤트가 사용되는 본 발명의 작동은 완전 불투명한 프래그먼트에 관해서만 수행된다. 따라서, 초기 발췌 시험을 통과하는 프래그먼트 또는 복수 개의 프래그먼트의 세트가 투명한 프래그먼트(즉, 완전히 불투명하지 않은 프래그먼트)이거나 포함하면, 프래그먼트 또는 프래그먼트들의 세트는 바람직하게는 여전히 처리를 위해 통과하지만, 바람직하게는 프래그먼트 또는 프래그먼트들의 세트와 관련된 초기 발췌 시험 통과 이벤트는 처리 파이프라인 내에 이미 있는 임의의 프래그먼트의 처리가 감속되어야 하는지 등을 결정하도록 사용되지 않는다.
이는 커버리지 시험에 대해 알파 시험과 알파를 받도록 요구되는 프래그먼트를 위한 본 발명의 잠재적인 프래그먼트 또는 샘플링 포인트 감속 및 "킬링" 작동을 간단하게 디스에이블한다(그리고, 동등하게, 더 투명에 가까운 프래그먼트 및/또는 샘플링 포인트는 더 먼 프래그먼트 및/또는 샘플링 포인트가 최종 출력에 여전히 보이지 않는 것을 방지할 수 없다는 점을 간단하게 허용한다).
출원인은 또한, 프래그먼트(또는 프래그먼트와 관련된 적어도 샘플링 포인트)가 초기 발췌 시험을 받고 통과하여 완전 RGB 기록 마스크를 갖는 상기 기준을 충족시키고; 프래그먼트가 이전의 RGBA 값에 따라 좌우되는 혼합 기능을 갖지 않으며; 프래그먼트를 위한 셰이더 프로그램이 타일 버퍼로부터 판독되지 않고; 프래그먼트가 완전히 불투명하며; 그러나 프래그먼트는 어떠한 이유로든 늦은 깊이 업데이트를 수행하도록 강요되지 않고, 그러한 프래그먼트 및/또는 샘플링 포인트를 위해, 사실상 샘플링 포인트 등이 이미 파이프라인 내에 있는 동일한 위치를 갖는 임의의 다른 샘플링 포인트 등을 차단하는 초기 발췌 시험 스테이지에서 즉시 결정될 수 있다는 것을 알았다.
이는, 예커대 초기 깊이 시험의 경우에, 동일한 위치를 갖는 파이프라인 내에 이미 있는 샘플링 포인트 및/또는 프래그먼트가 초기 발췌 시험을 통과한 새로운 샘플링 포인트(들) 및/또는 프래그먼트 후방에 있는 것으로 생각될 수 있어, (나중의 샘플링 포인트 및/또는 프래그먼트가 불투명하면) 이들 나중의 샘플링 포인트 및/또는 프래그먼트에 의해 차단되는 것으로 생각될 수 있기 때문이다(초기 깊이 시험을 통과한 것처럼, 늦은 깊이 업데이트가 강요되지 않고, 시험을 통과한 새로운 샘플링 포인트(들) 및/또는 프래그먼트가 동일한 위치를 갖는 임의의 초기 샘플링 포인트 및/또는 프래그먼트의 전면에 있어야 한다).
이 경우에, 이미 파이프라인 내에 있는 프래그먼트 등에게 "감속" 신호를 간단하게 전송하는 것이 여전히 가능하지만, 출원인은 그러한 프래그먼트 등이 초기 발췌 시험을 통과한 경우, 사실상 이미 파이프라인 내에 있는 적절한 프래그먼트 등의 처리를 안전하게 즉시(한번에) 중지시킬 수 있다는 것을 알았다.
따라서, 바람직한 실시예에서, 본 발명은 또한 그래픽 처리 파이프라인에서 처리되는 다른 샘플링 포인트의 처리가 중지될 수 있는지를 결정하도록 초기 발췌 시험을 통과하는 샘플링 포인트의 결과를 이용할 수 있고 또한 이용한다(적어도 시험된 샘플링 포인트(들) 및/또는 프래그먼트가 이미 파이프라인 내에 있는 샘플링 포인트 및/또는 프래그먼트를 "오버드로우"(차단)하는 초기 발췌 시험 스테이지에서 확실히 공지될 수 있는 경우에).
이어서, 이는 예컨대 기존의 초기 깊이 시험 기법에 비해 그래픽 처리 파이프라인에서 히든 표면이 불필요하게 처리되는 범위를 본 발명이 추가 감소하게 한다.
따라서, 특히 바람직한 실시예에서, 본 발명의 방법은,
프래그먼트가 처리를 위해 렌더러로 전송되기 전에 레스터화기에 의해 발생된 프래그먼트와 관련된 적어도 하나의 샘플링 포인트에 관하여 초기 발췌 시험을 수행하는 단계; 및
적어도 하나의 샘플링 포인트가 초기 발췌 시험을 통과하면, 프래그먼트를 처리를 위해 전방으로 전송하는 단계; 및
선택된 특성을 갖는 프래그먼트를 위해, 프래그먼트의 특성에 따라, 그래픽 처리 파이프라인 내에 있는 다른 샘플링 포인트의 처리가 감속되어야 하는지를 또는 그래픽 처리 파이프라인 내에 있는 다른 샘플링 포인트의 처리가 초기 발췌 시험을 통과하는 적어도 하나의 샘플링 포인트의 결과로서 중지될 수 있는지를 결정하는 단계를 포함한다.
그래픽 처리 파이프라인 내에 이미 있는 다른 프래그먼트 등의 처리를 (잠재적으로) 즉시 중지시키는 기준을 충족시키는 이들 샘플링 포인트 및/또는 프래그먼트 등의 경우, 작동은 바람직하게는 파이프라인 내에 있는 프래그먼트 등의 처리를 감속시키는 전술한 작동과 유사하여, 이미 파이프라인 내에 있는 프래그먼트 등의 처리를 감속시키는 대신에 프래그먼트 등의 처리가 (적절하다면) 중지되는 것(프래그먼트 등이 (즉시) 폐기되는 것)을 안전하게 한다. 이는 파이프라인 내에 있는 프래그먼트 등의 처리를 감속시키도록 전술한 작동에 대응하는 방식으로 달성 및 실행될 수 있고 바람직하게는 달성 및 실행된다.
파이프라인 내에 있는 다른 프래그먼트 등의 "킬링"(폐기)을 잠재적으로 트리거하는 초기 발췌 시험(들)을 통과하는 프래그먼트의 기준은 바람직하게는, 프래그먼트가 완전 RGB 기록 마스크를 갖는 것; 프래그먼트가 이전의 RGBA 값에 따라 좌우되는 혼합 기능을 갖는 것; 프래그먼트를 위한 셰이더 프로그램이 타일 버퍼로부터 판독되지 않는 것; 프래그먼트가 완전히 불투명한 것; 프래그먼트가 늦은 깊이 업데이트를 수행하도록 (어플리케이션 프로그래머에 의해) 강요되지 않는 것을 포함한다.
그래픽 처리 파이프라인의 스테이지(들)은 임의의 적절하고 원하는 방식으로 본 발명의 방식으로 작동하도록 구성될 수 있다. 바람직한 실시예에서, 스테이지는 발췌 및/또는 조건 폐기 시험을 수행하고, 시험(들)이 통과되고(또는 적어도 조건 폐기 시험의 경우 실패되고), 프래그먼트가 임의의 요구 기준을 충족시키면, 통과(또는 실패) 이벤트 및 관련된 필수 정보를 그래픽 파이프라인의 적절한 스테이지로 "전송"하도록 작동할 수 있는 조합된 시험 및 업데이트 로직을 포함한다.
초기 발췌 시험 및 조건 폐기 시험 "통과"(또는, 적어도 조건 폐기 시험의 경우, "실패") 이벤트에 응답하는 그래픽 처리 파이프라인의 스테이지 또는 스테이지들은 임의의 적절하고 원하는 방식으로 그렇게 행하도록 구성될 수 있다. 바람직하게는, 스테이지는 해당 스테이지에서 프래그먼트에 책임이 있고 시험 "통과" 또는 "실패" 정보를 수신하는 행위자와 관련되고, 처리가 감속 또는 재개될 수 있고 및/또는 더 이상 처리될 필요가 없는 그 "도메인"(스테이지)에서 임의의 프래그먼트 및/또는 샘플링 포인트를 식별하고, 프래그먼트 및/또는 샘플링 포인트의 처리를 감속 또는 재개(복구)하고 및/또는 그 임의의 불필요한 추가 처리를 방지하도록 작동할 수 있다.
몇몇 실시예에서, 그래픽 처리 파이프라인은 본 명세서에 설명되는 데이터를 저장하고 및/또는 본 명세서에 설명되는 프로세스를 수행하기 위한 소프트웨어를 조장하는 하나 이상의 메모리 및/또는 메모리 디바이스를 포함하고 및/또는 통신한다. 그래픽 처리 파이프라인은 또한 호스트 마이크로프로세서, 및/또는 그래픽 프로세서에 의해 발생된 데이터를 기초로 한 이미지를 디스플레이하기 위한 디스프렐이와 통신할 수 있다.
그래픽 처리 파이프라인의 렌더러는 당업계에 공지된 바와 같이 원하는 출력 그래픽 프래그먼트 데이터를 발생시키도록 수용하는 그래픽 프래그먼트를 렌더링(셰이드)하도록 작동될 수 있어야 한다. 임의의 적절하고 원하는 렌더링 요소를 포함할 수 있고 임의의 적절하고 원하는 방식으로 구성될 수 있다. 따라서, 예컨대 텍스쳐 맵퍼, 블렌더, 포깅 유닛(fogging unit) 등과 같은 하나 이상의 고정 함수 렌더링 스테이지를 비롯한 고정 함수 렌더링 파이프라인을 포함할 수 있다. 바람직한 실시예에서, 렌더러는 프래그먼트 셰이더(셰이더 파이프라인)(즉, 렌더링하도록 프래그먼트에서 프래그먼트 셰이딩 프로그램을 수행하도록 작동될 수 있고 프로그래밍될 수 있는 프로그래머블 파이프라인 스테이지)를 포함한다. 본 발명은 프래그먼트 셰이딩이 비교적 고가의 프로세스일 수 있기 때문에 프래그먼트 셰이딩이 사용되는 경우에 특히 유리할 수 있고, 히든 표면의 그렇게 더 효율적인 초기 제거가 프래그먼트 셰이딩이 행해지는 경우에 특히 유리하다.
당업자가 아는 바와 같이, 렌더러는 렌더링된 프레임 데이터가 바람직하게는 사용을 위해(예컨대, 프레임을 디스플레이에서 디스플레이하도록) 외부 메모리에서 프레임 버퍼 등의 출력 버퍼에 기록되는 출력 렌더링된 출력 버퍼를 발생시키도록 수용하는 프래그먼트를 처리한다.
본 발명은 그래픽 처리 시스템이 제공될 수 있는 출력 형태에 상관없이 사용될 수 있다. 따라서, 예컨대 렌더 출력이 (예컨대, 스크린 또는 프린터 상에)(한가지 바람직한 실시예에서 이 경우임) 디스플레이를 위해 이미지(프레임)를 형성하도록 의도되는 경웨 사용될 수 있다. 그러나, 본 발명은 또한 렌더 출력이 디스플레이를 위해 의도되지 않는 경우에, 예컨대 렌더 출력이 그래픽 처리 시스템이 ("텍스쳐에 대한 렌더링" 작업에서) 발생시키도록 사용되는 텍스쳐인 경우에, 또는 사실상 발생시키도록 사용되는 그래픽 처리 시스템이 임의의 다른 형태의 데이터 어레이인 경우에 사용될 수 있다.
본 발명의 다양한 기능은 임의의 원하고 적절한 방식으로 수행될 수 있다. 예컨대, 본 발명의 기능은 원하는 데로 하드웨어 또는 소프트웨어에서 실시될 수 있다. 따라서, 예컨대, 본 발명의 다양한 기능 요소, 처리 스테이지, 및 "수단"은, 원하는 방식으로 프로그램될 수 있는 적절하게 구성된 전용 하드웨어 요소 또는 처리 회로 및/또는 프로그래머블 하드웨어 요소 또는 처리 회로와 같이 다양한 기능등을 수행하도록 작동될 수 있는, 적절한 프로세서 또는 프로세서들, 컨트롤러 또는 컨트롤러들, 기능 유닛, 회로, 처리 로직, 마이크로프로세서 구조 등을 포함할 수 있다.
또한, 당업자에 의해 인지되는 바와 같이, 본 발명의 다양한 기능 등은 소정의 프로세서에서 병행하여 복사 및/또는 수행될 수 있다. 동등하게, 다양한 처리 스테이지는 원한다면 추리 회로 등을 공유할 수 있다.
본 발명은 "파이프라인형" 구조를 갖는 그래픽 처리 시스템, 그래픽 프로세서, 및 렌더러의 임의의 적절한 형태 또는 구성에 적용될 수 있다. 그래픽 처리 파이프라인은 그래픽 처리 파이프라인이 일반적으로 포함하는 임의의 적절하고 원하는 처리 스테이지 등을 포함할 수 있다. 특히 바람직한 실시예에서, 그래픽 처리 시스템은 타일 기반 그래픽 처리 시스템이다. 유사하게, 바람직한 실시예에서, 그래픽 처리 시스템은 다중 코어 시스템이다(즉, 복수 개의 그래픽 처리 코어를 포함한다).
따라서, 본 발명은 본 명세서에 설명되는 본 발명의 양태의 임의의 하나 이상의 또는 방법에 따라 작동되는 장치를 포함하는 그래픽 프로세서 및 그래픽 처리 플랫폼으로 연장된다. 위에서 논의된 특정한 기능을 수행하는 데에 필요한 임의의 하드웨어에 관하여, 그러한 그래픽 프로세서는 달리 그래픽 프로세서가 포함하는 유용한 기능 유닛 등의 임의의 하나 이상 또는 모두를 포함할 수 있다.
또한, 당업자라면 본 발명의 설명된 양태 및 실시예 모두가 본 명세서에 설명되는 바람직하고 선택적인 특징들의 임의의 하나 이상 또는 모두를 적절하게 포함할 수 있다는 것을 알 것이다.
본 발명에 따른 방법은 소프트웨어, 예컨대 컴퓨터 프로그램을 이용하여 적어도 부분적으로 실시될 수 있다. 따라서, 추가의 양태로부터 보았을 때에, 본 발명은 데이터 처리 수단에 설치될 때에 본 명세서에 설명된 방법을 수행하도록 특별하게 적응된 컴퓨터 소프트웨어, 및 프로그램이 데이터 처리 시스템에서 실행될 때에 본 명세서에서 설명되는 방법 또는 방법의 모든 단계를 수행하도록 적응된 코드 수단을 포함하는 컴퓨터 프로그램을 제공한다. 데이터 처리 시스템은 마이크로프로세서, 프로그래머블 FPGA(Field Programmable Gate Array) 등일 수 있다.
따라서, 본 발명은 컴퓨터 시스템에 사용하도록 컴퓨터 프로그램 제품으로서 적절하게 구현될 수 있다. 그러한 실시는 비일시적 컴퓨터 판독 가능한 매체 등의 유형 매체, 예컨대 디스켓, CD ROM, ROM, RAM, 플래시 메모리, 또는 하드 디스크에 고정된 일련의 컴퓨터 판독 가능한 명령어를 포함할 수 있다. 또한, 제한하지 않지만 광학 또는 아날로그 통신 라인을 비롯한 유형 매체, 또는 제한하지 않지만 마이크로파, 적외선 또는 기타 전송 기법을 비롯한 무형적으로 이용하는 무선 기법에 걸쳐 모뎀 또는 기타 인터페이스 디바이스를 통해 컴퓨터 시스템에 전달 가능한 일련의 컴퓨터 판독 가능한 명령어를 포함할 수 있다. 일련의 컴퓨터 판독 가능한 명령어는 본 명세서에서 이미 설명된 기능성의 전부 또는 일부를 구현한다.
이하, 본 발명의 다수의 바람직한 실시예가 오직 일례로서 첨부 도면을 참조하여 설명될 것이다.
도 1은 본 발명에 따른 그래픽 처리 시스템의 실시예를 개략적으로 도시한다.
이하, 본 발명의 다수의 바람직한 실시예를 설명한다. 이들 실시예는 그래픽 처리 시스템에서의 본 발명의 용도를 참조하여 주로 설명될 것이다. 그러나, 전술한 바와 같이, 본 발명은 초기 "데이터 엔터티" 발췌 시험을 포함하는 다른 파이프라인형 데이터 처리 시스템에 적용될 수 있다.
도 1은 본 발명에 따라 동작할 수 있는 그래픽 프로세서(1)를 개략적으로 예시한다.
도 1은 본 실시예의 동작과 관련되는 그래픽 프로세서(1)의 주요 요소와 파이프라인 스테이지를 보여준다. 당업자들이 알게 되는 바와 같이, 도 1에는 예시되지 않은 그래픽 프로세서의 다른 요소가 존재할 수 있다. 여기서 도 1은 단지 개략적이고, 예컨대 실제로, 예시된 기능 유닛과 파이프라인 스테이지는 도 1에서 별개의 스테이지로서 개략적으로 예시되고 있어도 중요 하드웨어 회로를 공유하는 것을 역시 유의하여야 한다. 또한, 도 1에 도시된 바와 같은 그래픽 프로세서의 스테이지, 요소 및 유닛 각각은 원하는 대로 구현될 수 있으며, 그에 따라 필요한 동작 및 기능을 수행하기 위해 예컨대, 적절한 회로 및/또는 처리 로직 등을 포함할 것임을 알 것이다.
도 1에 도시된 그래픽 처리 시스템은 타일 기반(tile-based) 시스템이다. 그래픽 프로세서(1)는 따라서 당업계에서 알고 있는 바와 같이 생성될 출력 프레임과 같은 렌더링 출력 데이터 어레이의 타일들을 생성할 것이다. (본 발명은 전술한 바와 같이 즉시 모드(immediate mode) 렌더링 시스템과 같은 다른 시스템에도 동일하게 적용된다) 출력 데이터 어레이는 당업계에 알려진 바와 같이 통상적으로 스크린이나 프린터와 같은 디스플레이 장치상에 디스플레이되도록 의도된 출력 프레임일 수 있거나, 예컨대, 그래픽 프로세서 등의 "렌더링 내지 텍스쳐(render to texture)" 출력을 포함할 수도 있다.
도 1은 래스터화 처리로의 입력을 위한 그래픽 프리미티브(다각형)(2)의 생성 후의 파이프라인 스테이지를 개략적으로 예시한다. 따라서, 이 포인트에서 그래픽 데이터(꼭지점 데이터)는 변환 및 점등 동작(도시 생략)을 경험하며, 프리미티브 셋업 스테이지(도시 생략)는 당업계에 알려진 바와 같이 그래픽 프로세서(1)에 제공되는 명령 및 꼭지점 데이터에 응답하여 프리미티브가 렌더링되도록 셋업이 이루어진다.
도 1에 도시된 바와 같이, 그래픽 프로세서(1)의 프래그먼트 처리 파이프라인에 있어서 이 부분은 래스터화(rasterisation) 스테이지(3), 초기(early) 계층적 ZS(깊이 및 스텐실) 시험 스테이지(4), 초기 ZS(깊이 및 스텐실) 스테이지(13), 프래그먼트 쉐이딩(shading) 스테이지 6의 형태의 렌더링 스테이지 및 후기(late) ZS(깊이 및 스텐실) 시험 스테이지(7)를 포함하는 다수의 처리 스테이지를 포함한다.
래스터화 스테이지(3)는 당업계에 알려진 바와 같이 렌더링 출력(예, 디스플레이될 이미지)을 처리를 위한 개별 그래픽 프래그먼트로 구성하는 프리미티브를 래스터화하도록 동작한다. 이를 위해, 래스터화기(3)는 렌더링을 위해 그래픽 프리미티브(2)를 수신하고, 해당 프리미티브를 샘플링 포인트에 래스터화하여, 프리미티브를 렌더링하는데 적절한 위치(적절한 샘플링 위치를 나타냄)를 갖는 그래픽 프래그먼트를 생성한다. 본 실시예에서, 래스터화기(3)에 의해 생성되는 각각의 그래픽 프래그먼트는 (이와 관련하여) 복수(통상 4개)의 샘플링 위치를 나타낸다. (물론 다른 구성도 가능하다) 각각의 그래픽 프래그먼트는 이와 관련하여 복수의 샘플링 포인트 중 프래그먼트가 실제로 렌더링에 사용되고 있는 것(즉, 실제 해당 프리미티브에 의해 커버되는 것)을 나타내는 샘플링 포인트를 지시하는 커버리지 마스크를 갖는다.
본 실시예에서, 래스터화기(3)는 2x2 그룹의 프래그먼트에 대응하는 최소 패치 크기로 점진적으로 작아지는 샘플링 포인트(즉, 2x2 그룹의 프래그먼트로 래스터화되는 샘플링 포인트의 어레이)의 패치(및 그에 따라 프래그먼트의 패치)에 대해 프리미티브를 반복 시험하여 프리미티브를 커버하지 않는(적어도 부분적으로) 임의의 패치를 버리는 계층적 래스터화기이다. 시험되는 각각의 패치는 주어진 세트의 프래그먼트에 대응한다.
이것은 래스터화기(3)에 의해 렌더링 타겟 영역의 큰 패치로 시작하여 해당 프리미티브가 해당 패치의 내부에 있는지를 시험하는 것으로 수행된다. 그렇지 않으면, 전체 패치가 버려지고, 그 다음 패치가 시험되는 등등이 행해진다. 다른 한편, 프리미티브가 패치 내에 있는 것으로 확인되면(적어도 부분적으로 패치를 커버하는 것으로 확인되면), 패치는 4 부분으로 서브-분할되며, 각각의 "서브-패치"는 다시 동일한 방식으로 최소 패치 크기에 이를 때까지 시험된다.
일단 최소 패치 크기에 도달되면(즉, 적어도 부분적으로 프리미티브를 커버하는 2x2 프래그먼트의 패치가 확인되면), 래스터화기(3)는 해당 최종 패치 내의 개별 샘플링 포인트를 시험하여 샘플링 포인트가 프리미티브에 의해 커버되는지 여부를 확인한다. 이후 래스터화기(3)는 프리미티브에 의해 커버되는 것으로 확인된 샘플링 포인트에 대응하는 레더링을 위해 개별 프래그먼트를 생성 및 출력한다.
래스터화기(3)는 각각의 프래그먼트와 관련하여 비트맵 형태의 커버리지 마스크를 포함하는데, 커버리지 마스크는 프래그먼트와 관련된 샘플링 위치 세트의 각각의 샘플링 위치에 대해 해당 샘플링 위치의 커버 여부(즉, 실제, 프래그먼트가 해당 샘플링 포인트의 렌더링에 사용되고 있는지 여부(즉, 해당 샘플링 포인트에 대해 관련 데이터가 저장되어야 하는지 여부))를 나타낸다.
물론, 다른 래스터화 배열도 가능할 것이다.
도 1에 도시된 바와 같이, 래스터화기(3)는 이와 관련된 초기 "계층적" 깊이(Z) 및 스텐실 테스팅 스테이지(4)를 구비할 수 있다. 이 계층적 깊이 및 스텐실 테스팅 스테이지(4)는 래스터화기(3)에 의해 발생된 패치에 대해 해당 패치의 도태(culled) 가능 여부를 확인하는 "초기" 깊이 및 스텐실 시험을 수행한다.
이를 위해, 래스터화기(3)에 의해 생성되는 샘플링 포인트(프래그먼트의)의 각각의 패치는 초기 계층적 깊이 및 스텐실 시험 스테이지(4)로 보내지고, 해당 스테이지에서는 샘플링 포인트(프래그먼트의)의 패치에 대해 패치가 해당 스테이지에서 포기(디스카드)될 수 있는지 여부를 알기 위한 Z(깊이) 시험이 수행된다. 이를 위해, 초기 계층적 깊이 및 스텐실 시험기(4)는 패치에 대한 적절한 깊이 샘플을 취득하는 것에 의해 래스터화기(3)로부터 수신하는 각각의 패치에 대한 깊이 값 범위를 유도하고, 패치가 렌더링될 다른 프래그먼트와 샘플링 포인트(예, 추가로 파이프라인 내에 있거나 이미 렌더링된 것)에 의해 차단되거나 그것들을 오버드로우하는지 여부에 대한 판정을 시도하기 위해 해당 깊이 값 범위와 패치에 의해 커버되는 샘플링(프래그먼트) 위치와 관련하여 이미 유도되어 저장된 깊이 값 범위를 비교한다. 동시에, 초기 스텐실 시험이 행해진다.
시험되는 패치가 초기 깊이 및 스텐실 시험에 실패하면, 임의의 추가의 처리로부터 포기(디스카드)된다.
시험되는 패치가 초기 깊이 및 스텐실 시험을 통과하면, 전술한 바와 같이 작은 "서브-패치"로의 추가의 서브-분할을 위해 래스터화기(3)로 복귀된다. 이후 각각의 "서브-패치"는 최소 패치 크기가 얻어질 때까지 시험을 위해 초기 깊이 및 스텐실 시험기(4)로 복귀되는 등등이 행해진다.
래스터화기(3)로부터 수신되는 복수의 샘플링 포인트의 패치에 대해 깊이 및 스텐실 시험을 수행시 초기 계층적 깊이 및 스텐실 시험 스테이지(4)에 의해 사용되는 깊이 값 범위는 깊이 및 스텐실 버퍼(5)에 저장된다. 깊이 값(및 스텐실 값)의 범위는 버퍼가 나타내는 각각의 패치 크기 및 위치에 대해(기본적으로 래스터화기(3)가 처리되고 있는 타일에 대해 생성할 수 있는 각각의 패치 크기 및 위치에 대해) 깊이 및 스텐실 버퍼(5)에 저장된다.
각각의 패치에 대해 저장된 깊이 값 범위는 각각의 패치에 대해 초기에 디폴트 값으로 설정되거나, 해당 값이 결정될 수 있으면, 패치에 대해 예상되는 깊이 값 범위로 설정된다. (일부 구성에서, 타일에 대한 프리미티브가 가질 수 있는 가능한 깊이 값의 범위는 미리 알 수 있다. 이것은 이후 해당 패치에 대한 예상 깊이 값의 범위를 깊이 버퍼(5)에 제공하는데 사용될 수 있다) 저장된 패치 깊이 값 범위는 초기 계층적 깊이 및 스텐실 시험 스테이지(4), 초기 깊이 및 스텐실 시험 스테이지(13) 및 후기 깊이 및 스텐실 시험 스테이지(7)에 의해 시험되는 패치 및/또는 샘플링 포인트가 각각의 깊이 및 스텐실 시험을 통과함에 따라 갱신된다.
깊이 및 스텐실 버퍼(5)에 렌더링되는 타일의 복수의 샘플링 포인트 위치(및 프래그먼트)의 패치에 대한 깊이 값의 예상 범위를 저장하는 것은 동일한 위치를 갖도록 파이프라인에 이미 존재하는 초기 프래그먼트가 임의의 깊이 또는 스텐실 시험을 아직 완료하지 않은 경우(예, 초기 계층적 깊이 및 스텐실 시험(4)과 초기 깊이 및 스텐실 시험(13)을 경험하지 않았고, 후기 깊이 및 스텐실 시험(7)을 아직 경험하지 않은 경우)에도 초기 계층적 깊이 및 스텐실 시험기(4)가 래스터화기(3)에 의해 생성되는 샘플링 포인트 위치의 패치와 관련하여 깊이 및 스텐실 시험을 여전히 수행할 수 있음을 의미한다. 이것은 초기 프래그먼트와 관련하여 깊이 시험이 아직 수행되지 않은 경우 예상 깊이 값의 범위를 사용하여 깊이 시험(예컨대)이 가질 수 있는 가능한 결과를 판정할 수 있기 때문이다. 이후 이것은 초기 프래그먼트가 실제 깊이 또는 스텐실 시험을 아직 경험하지 못한 경우 초기 계층적 깊이 및 스텐실 시험(4)을 (잠재적으로) 본 실시예의 방식으로 파이프라인에 존재하는 초기 프래그먼트의 처리를 중단하는데 사용할 수 있게 한다.
샘플링 포인트 위치의 패치에 대한 깊이 값의 범위의 저장 및 시험은 샘플링 포인트 위치의 큰 패치가 초기 깊이 및 스텐실 시험을 용이하게 받을 수 있음을 의미한다(이는 저장된 범위에 의해, 패치가 전적으로 해당 저장된 범위 밖에 있어서, 예컨대 전적으로 초기 계층적 깊이 및 스텐실 시험을 통과하는지 여부가 시험에 의해 결정되지 때문이다). 이것은 하기에 추가로 설명되는 바와 같이 초기 깊이 및 스텐실 시험 통과 이벤트의 방송을 용이하게 하고, 해당 이벤트는 하나의 처리 사이클 내의 패치 영역 내의 전체 그룹의 프래그먼트의 처리를 (잠재적으로) 중단시키는 것(예컨대, 각각의 프래그먼트의 처리를 하나씩 처리하는 것을 잠재적으로 중단하는 대신에)이 가능하도록 단일 처리 사이클 내의 렌더링 타겟에 대해 매우 큰 영역에 영향을 미친다.
초기 계층적 깊이 및 스텐실 시험 스테이지(4)는 당업계에 알려진 바와 같이 적절하게 보수적인 방식으로 동작하도록 구성된다.
일단 최소 패치 크기(본 실시예에서 2x2 프래그먼트의 패치)가 도달되면, 래스터화기(3)는 초기 계층적 Z 및 스텐실 시험 스테이지(4) 내지 처리를 위한 그래픽 처리 파이프라인의 나머지를 통과하는 패치(및 그에 따른 샘플링 포인트)를 나타내는 프래그먼트를 발행한다.
이러한 처리의 첫 부분은 래스터화기(3)에 의해 발행된(출력된) 각각의 프래그먼트를 초기 깊이 및 스텐실 시험 스테이지(13)에서의 초기 깊이 및 스텐실 시험을 받도록 하는 것이다. 이러한 초기 깊이 및 스텐실 시험 스테이지(13)는 래스터화기(3)에 의해 발행된 프래그먼트와 관련된 개별(커버된) 샘플링 위치에 대해 깊이 및 스텐실 시험을 수행한다(즉, 샘플링 포인트 당 해상도에서(per-sampling point resolution)).
이를 위해, 초기 깊이 및 스텐실 시험기(13)는 깊이 및 스텐실 버퍼(5)에 저장된 샘플링 위치 당 깊이 및 스텐실 값(per-sampling position depth and stencil values)을 사용한다. 따라서, 깊이 및 스텐실 버퍼(5)는 패치 당 깊이 값 범위(per-patch depth value ranges) 이외에 버퍼가 나타내는 각각의 샘플링 포인트에 대한(기본적으로 처리되고 있는 타일의 각각의 샘플링 포인트 위치에 대한) 적절한 깊이(Z) 값 및 스텐실 값을 저장한다. 이들 값은 초기 깊이 및 스텐실 시험 스테이지(13)와 후기 깊이 및 스텐실 시험 스테이지(7)에 의해 시험되는 샘플링 포인트가 각각의 깊이 및 스텐실 시험을 통과할 때 깊이 및 스텐실 버퍼(5) 내에 저장된다.
깊이 및 스텐실 버퍼(5)는 본 실시예에서는 패치 당 깊이 범위를 저장하는 하나의 버퍼와 샘플 당 깊이 값을 저장하는 다른 하나의 버퍼로 이루어진 두 개의 특징적인 버퍼(동일한 물리적 메모리를 갖더라도)로서 구성된다. 다른 구성도 물론 가능하다.
초기 깊이 및 스텐실 시험 스테이지(13)는 당업계에 알려진 바와 같이 적절하게 보수적인 방식으로 동작하도록 구성된다.
초기 깊이 및 스텐실 시험 스테이지(13)을 통과하는 프래그먼트(즉, 초기 깊이 및 스텐실 시험 스테이지(13)를 통과하는 적어도 하나의 관련 샘플링 위치를 갖는 프래그먼트)는 도 1에 도시된 바와 같이 "대기 행렬(queue)"(12)(그 기능과 목적은 하기에 더 상세히 논의됨)를 통해 프래그먼트 쉐이딩 스테이지(6)(렌더러)로 외측으로 보내진다.
(초기 깊이 및 스텐실 시험 스테이지(13)에 실패한 프래그먼트는 당업계에 알려진 바와 같이 초기 깊이 및 스텐실 시험 스테이지(13)에 의해 디스카드된다.)
프래그먼트 쉐이딩 스테이지(6)는 자체가 수신하는 프래그먼트에 대해 적절한 프래그먼트 처리 (렌더링) 동작을 수행함으로써 프래그먼트의 처리를 통해 당업계에 알려진 바와 같이 렌더링 출력을 위해(예, 프래그먼트의 디스플레이를 위해) 적절한 프래그먼트 데이터 등을 생성한다.
이러한 프래그먼트 처리는 당업계에 공지된 바와 같이, 적절한 프래그먼트 데이터의 생성을 위해, 프래그먼트에 대해 프래그먼트 쉐이더(shader) 프로그램을 실행하고, 프래그먼트에 텐스쳐를 적용하고, 블렌딩(blending), 포깅(fogging) 또는 다른 동작을 프래그먼트 등에 적용하는 것과 같은 임의의 적절하고 바람직한 프래그먼트 쉐이딩 처리를 포함할 수 있다. 본 실시예에서, 프래그먼트 쉐이딩 스테이지(6)는 쉐이더 파이프라인(프로그래밍 가능한 프래그먼트 쉐이더)의 형태이지만, 원하는 경우, 고정식 기능의 프래그먼트 쉐이딩 유닛을 사용하거나 대체하는 다른 구성도 가능하다.
레더링된 프래그먼트가 나타내는 샘플링 포인트가 현재 타일 버퍼(5)에 해당 값이 저장된 프래그먼트를 오버드로우할지 여부를 결정하기 위해(즉, 프래그먼트 쉐이딩 스테이지(6)로부터 발행되는 프래그먼트에 대한 프래그먼트 데이터가 타일 버퍼 내에 저장되어야 하는지 여부(이미 렌더링된 프래그먼트의 타이 버퍼(들) 내의 프래그먼트 데이터를 대체 또는 변형하여야 하는지 여부)의 결정하기 위해), (예컨대, 프래그먼트가 초기 Z 및 스텐실 시험을 경험하지 않은 경우에 수행되면,) 쉐이딩된 프래그먼트(쉐이딩된 프래그먼트와 관련된 커버링된 샘플링 포인트)에 대한 파이프라인 깊이 시험의 종료를 수행하는 "후기" 프래그먼트 Z 및 스텐실 시험 스테이지(7)가 존재한다.
이를 위해, 후기 깊이 시험 스테이지(7)는 프래그먼트 쉐이딩 스테이지(6)로부터 발행된 프래그먼트(와 관련된)의 깊이 값과 해당 샘플링 위치에 대해 깊이 버퍼(5)에 저장된 (샘플링 위치 당) 깊이 값과 비교한다. 후기 깊이 시험(7)을 통과하는 샘플링 포인트에 대한 깊이 값은 당업계에 알려진 바와 같이 갱신을 위해 Z-버퍼(5)에 적절히 기록된다.
또한, 이러한 후기 프래그먼트 깊이 및 스텐실 시험 스테이지(7)는 프래그먼트에 대해 임의의 필요한 스텐실 시험을 수행한다.
후기 프래그먼트 시험 스테이지(7)를 통과하는 프래그먼트는 프레임 버퍼, 디서(dither) 등과의 블렌딩과 같이 프래그먼트에 필요한 임의의 나머지 동작을 받는다(도시 생략).
마지막으로, 출력 프래그먼트 데이터 값은 당업계에 공지된 바와 같이 (기본적으로 처리되고 있는 타일의 각각의 샘플링 포인트에 대해) 버퍼가 나타내는 각각의 샘플링 포인트에 대한 칼라와 같은 적절한 값을 저장하는 적절한 타일 버퍼(8)에 기록된다.
일단 각각의 타일이 처리되면, 그 데이터는 저장을 위해 예컨대, 타일 버퍼(8)로부터 메인 메모리로(도시 생략)(예, 메인 메모리 내의 프레임 버퍼로) 전해지며, 전체 렌더링 출력(예, 디스플레이될 프레임(이미지))을 생성하도록 충분한 타일이 처리될 때까지 그 다음 타일이 처리되는 등등이 이루어진다.
물론, 프래그먼트 처리 파이프라인에 대한 다른 구성도 가능하다.
이상의 설명은 도 1에 도시된 그래픽 처리 시스템의 기본적인 래스터화 및 렌더링 처리를 기술한다. 본 발명의 일 실시예에 따른 도 1에 도시된 그래픽 처리 시스템의 동작을 이제 설명한다.
본 발명에 따르면, 본 실시예는 그래픽 처리 파이프라인 내에 있는 다른 프래그먼트의 처리가 감속되어야 하거나 정지될 수 있는지 여부를 판정하기 위해 초기 계층적 깊이 시험(4)을 통과하는 패치 또는 초기 깊이 시험(13)을 통과하는 프래그먼트의 결과를 이용한다.
이를 위해, 도 1에 도시된 바와 같이, 초기 계층적 깊이 및 스텐실 시험 스테이지(4)와 초기 깊이 및 스텐실 시험 스테이지(13)는 프래그먼트의 패치 또는 프래그먼트 각각이 초기 디스카드 시험을 통과하면, 처리 파이프라인에서 그 다음 스테이지로 패치 또는 프래그먼트를 통과시키는 것은 물론, 해당 초기 디스카드 시험 "통과" 이벤트에 관한 정보를 파이프라인의 스테이지(도 1에서 점선 9, 10, 11, 14로 나타낸 바와 같이)로 알리도록 구성된다. 이들은 또한 (수행될 수 있는 경우) 초기 깊이 시험을 통과한 프래그먼트와 관련된 샘플링 포인트에 대한 관련 깊이 값 및/또는 스텐실 값으로 깊이 및 스텐실 버퍼(5)를 갱신하도록 구성된다.
디스카드 시험 "통과" 이벤트의 전달 및 깊이 버퍼 등의 갱신은 본 실시예에서 초기 계층적 깊이 시험(4)과 초기 깊이 시험(13)을 통과하는 모든 패치 및 프래그먼트에 대해 수행되지 않지만, 소정의 기준(소정의 특성을 갖는)을 만족하는 패치 및 프래그먼트에 대해서만 수행된다. 이것은 나중의 프래그먼트가 초기 깊이 시험을 통과하는 경우 파이프라인 내의 프래그먼트를 잘못으로 감속시키고 디스카드하는 것을 방지하기 위함이다.
본 실시예는 어일리 깊이 시험 "통과" 이벤트가 파이프라인으로 전달되어야 하는지 여부와 초기 깊이 시험 "통과" 이벤트 브로드캐스팅이 취하여야 하는 형태를 결정하기 위해 초기 계층적 깊이 및 스텐실 시험 유닛(4)과 초기 깊이 및 스텐실 시험 유닛(13) 내에 "자동 감지" 구성을 사용한다.
이러한 자동 감지 구성은 파이프라인으로 그래픽 처리 파이프라인에 있는 다른 프래그먼트의 처리의 중단을 시발할 수 있는 초기 깊이 "통과" 이벤트를 브로드캐스팅(전달)하기 위해 다음의 요건을 갖는다: 새로운 패치 또는 프래그먼트는 초기 z/s 시험을 통과했어야 하고(그리고 후기 z/s 시험이 아닌 초기 z/s 시험에 의해 처리됨); 새로운 패치 또는 프래그먼트는 이전의 rgba 값에 의존하지 않고 풀 rgb 기록 마스크(z/스텐실은 이미 기록됨)와 블렌드 기능을 가져야 하며; 새로운 패치 또는 프래그먼트에 대한 쉐이더는 타일버퍼로부터 판독될 수 없고, 새로운 패치 또는 프래그먼트는 강제된 후기 z 갱신을 갖지 않아야 한다.
(새로운 패치 또는 프래그먼트는 예컨대 다음의 이유로 강제되는 후기 z 갱신을 가질 수 있다: 알파 시험; 포함범위까지의 알파(alpha to coverage); 쉐이더는 디스카드(discard)를 포함한다; 블렌드 쉐이더는 디스카드를 포함한다; 또는 쉐이더 내의 초기 플래그먼트는 후기 z 갱신을 하도록 강제된다. 따라서, 이러한 "강제 후기 z 갱신" 요건은 초기 Z 시험이 통과될 때 파이프라인에 있는 다른 프래그먼트의 처리를 즉시 중단시키는 동작이 충분히 불투명한 패치 및 프래그먼트에 대해서만 수행됨을 의미한다. 이것은 단적으로 근접한 투명 패치 또는 프래그먼트의 경우 선명한 프래그먼트가 최종 출력 내에서 여전히 가시적인 것을 방해하지 않을 수 있다는 사실을 허용한다.)
전술한 기준을 만족하는 새로운 패치 또는 프래그먼트는 그래픽 처리 파이프라인에 있는 다른 프래그먼트의 처리의 정지를 시발할 수 있는 초기 깊이 시험 "통과" 이벤트를 파이프라인으로 브로드 캐스팅(전달)한다. 패치 또는 프래그먼트가 이들 기준을 만족하지 않으면, 초기 계층적 깊이 및 스텐실 유닛(4)과 초기 깊이 및 스텐실 시험 유닛(13)에서의 "자동-감지" 구성은 초기 깊이 시험을 통과하는 패치 또는 프래그먼트가 그래픽 처리 파이프라인에 있는 다른 프래그먼트의 처리의 둔화를 시발시킬 수 있는 초기 깊이 시험 "통과" 이벤트를 파이프라인으로 브로드캐스팅(전달)하는 것을 시발하여야 하는지 여부를 결정한다.
자동-감지 구성은 그래픽 처리 파이프라인에 있는 다른 프래그먼트의 처리의 둔화를 시발할 수 있는 초기 깊이 시험 "통과" 이벤트를 파이프라인으로 브로드캐스팅(전달)하기 위해 다음의 요건을 갖는다: 새로운 패치 또는 프래그먼트는 초기 z/s 시험을 통과했어야 하고(그리고 후기 z/s 시험이 아닌 초기 z/s 시험에 의해 처리됨); 새로운 패치 또는 프래그먼트는 이전의 rgba 값에 의존하지 않고 풀 rgb 기록 마스크(z/스텐실은 이미 기록됨)와 블렌드 기능을 가져야 하며; 새로운 패치 또는 프래그먼트에 대한 쉐이더는 타일버퍼로부터 판독될 수 없고, 새로운 패치 또는 프래그먼트는, 알파 시험; 포함범위까지의 알파(alpha to coverage); 쉐이더는 디스카드(discard)를 포함한다; 블렌드 쉐이더는 디스카드를 포함한다; 또는 쉐이더 내에서 동일한 위치를 갖는 초기 플래그먼트는 후기 깊이 갱신을 하도록 강제된다라는 것이 아닌 이유로 강제된 후기 z 갱신을 갖지 말아야 한다.
따라서, 본 실시예에서, 알파 시험; 포함범위까지의 알파; 쉐이더는 디스카드를 포함한다; 블렌드 쉐이더는 디스카드를 포함한다; 또는 쉐이더 내에서 초기 플래그먼트는 후기 깊이 갱신을 하도록 강제된다라는 이류로 후기 깊이 갱신을 수행하도록 강제되는 프래그먼트는 다른 프래그먼트 및/또는 샘플링 포인트의 처리를 (잠재적으로) 둔화시키는 동작을 시발하는 것이 허용된다(시발하는데 사용된다).
이들 기준의 효과는 기본적으로 그 처리의 일부로서 임의의 형태의 조건적 버림 시험에 놓이게 되는 프래그먼트의 경우 그래픽 처리 파이프라인에 있는 프래그먼트의 처리의 중단을 시발할 수 있는 초기 깊이 시험 "통과" 이벤트를 파이프라인으로 전달하는 것보다 그래픽 처리 파이프라인에 있는 다른 프래그먼트의 처리의 둔화를 시발할 수 있는 초기 깊이 시험 "통과" 이벤트를 파이프라인으로 전달하는 것을 시발하는 것이다. 이것은 프래그먼트가 조건적 버림 조건 (시험)에 놓이는 경우, 소정의 초기 깊이 시험 스테이지에서는 초기 깊이 시험이 통과되더라도 프래그먼트가 궁극적으로 이미 파이프라인에 있는 프래그먼트를 차단하는 것이 결정될 수 없기 때문이다.
본 실시예는 초기 계층적 깊이 시험(4) 또는 초기 깊이 시험(13)을 통과하는 패치 또는 프래그먼트와 관련하여 초기 깊이 시험 통과 이벤트 정보의 전달을 시발하기 위해 "자동-감지" 구성을 사용하지만, 이에 대한 대비 구성으로서 상태 비트를 또한 사용하는 것도 가능하다. 상태 비트는 "자동-감지" 구성을 끄고 대신에 추가의 (예, 디스카드 시험 통과 이벤트 "인에이블") 상태 비트의 세팅(세팅의 유무)에 의해 시발되는 초기 디스카드 시험 통과 이벤트 정보 브로드캐스팅을 갖도록 설정될 수 있다. 이것은 예컨대, 디스카드 시험 통과 이벤트 동작이 (적절한 상태 비트의 설정에 의해) 수행되는 것의 여부를 설정하기 위해 어플리케이션 프로그래머가 허용되게 할 수 있다.
초기 계층적 깊이 및 스텐실 시험 스테이지(4)와 초기 깊이 및 스텐실 시험 스테이지(3)는 디스카드 시험을 수행하고, 시험이 통과되고 패치 또는 프래그먼트가 필요 기준을 만족하면, 이와 관련된 통과 이벤트와 필요한 정보를 그래픽 파이프라인의 적절한 스테이지로 "브로드캐스팅"하거나 예컨대, 깊이 버퍼(들) 내의 깊이 정보를 갱신하는 등의 디스카드 시험을 수행하도록 작동적일 수 있는 조합된 시험 및 갱신 로직을 포함한다.
본 실시예에서, 샘플링 포인트의 "퀄리파잉(qualifying)" 패치(즉, "정지 처리" 또는 "감속 처리" 신호의 전송을 시발시키는 기준을 만족하는 샘플링 포인트의 패치)가 초기 계층적 깊이 시험(4)을 통과시, 초기 계층적 깊이 및 스텐실 시험 스테이지(4)는 시험을 통과한 패치에 의해 커버되는 (x, y) 위치인 9, 10, 11을 대기 행렬(12), 프래그먼트 쉐이딩 스테이지(6), 래스터화기(3) 및 초기 계층적 깊이 및 스텐실 시험 스테이지(4) 자체(도 1에서 점선으로 도시됨)로 브로드캐스팅한다. 브로드캐스팅 정보는 보로드캐스트 신호가 임의의 프래그먼트의 처리가 중단되어야 하는지 여부(임의의 프래그먼트가 버려져야 하는지 여부)의 결정 또는 임의의 프래그먼트의 처리가 감속되어야 하는지 여부, 즉 브로드캐스트 신호가 프래그먼트 "킬(kill)" 신호 또는 프래그먼트 "감속(slow)" 신호인지 여부를 결정하는데 사용되는지 여부의 지시를 포함한다. 하기에 논의되는 바와 같이, 그래픽 처리 파이프라인의 이들 스테이지는 이들이 현재 취급하고 있는 프래그먼트 중 임의의 프래그먼트가 자체 처리를 중단하게 할 수 있거나 (적절하게) 감속되게 하여야 하는지 여부를 평가하기 위해 브로드캐스트 신호 타입 지시와 위치 정보를 이용한다.
초기 계층적 깊이 시험 통과 이벤트는 계층적 깊이 및 스텐실 시험 스테이지(4)와 본 실시예에서 래스터화기(3)로 전달되는데, 이는 래스터화기(3)와 초기 계층적 깊이 및 스텐실 시험 스테이지(4)가 전술한 바와 같이 반복적 방식으로 동작하므로, 예컨대 샘플링 위치의 나중의 패치가 이들을 오버드로우하는 것으로 판정될 수 있으면 그 처리를 생략할 수 있는 래스터화 및 초기 계층적 깊이 및 스텐실 시험 처리를 여전히 경험하는 이전에 생성된 샘플링 포인트의 패치가 존재할 수 있기 때문이다.
그래픽 처리 파이프라인의 다른 스테이지로 초기 계층적 깊이 시험 통과 이벤트를 브로드캐스팅하는 것은 물론, 초기 계층적 깊이(Z) 및 스텐실 시험 스테이지(4)는 적절한 경우, 깊이 및 스텐실 버퍼(5)를 초기 계층적 깊이 시험을 통과한 샘플링 포인트의 패치에 대한 관련 깊이 값 범위 및/또는 스텐실 값으로 갱신하도록 구성된다. 이것은 해당 버퍼가 예컨대 초기 계층적 깊이 및 스텐실 시험(4)을 경험한(및 통과한) 패치의 깊이 값 범위의 최신 기록을 담을 수 있게 함으로써 초기 계층적 깊이 및 스텐실 시험을 더욱 효율적으로 할 수 있다.
깊이 버퍼 등의 이러한 갱신은 해당 갱신이 패치 등의 처리에 에러를 야기할 어떤 위험도 제거하도록 적절히 보수적인 방식으로 수행된다.
따라서, 본 실시예에서, "퀄리파잉" 프래그먼트가 초기 깊이 시험(13)을 통과할 때, 초기 깊이 및 스텐실 시험 스테이지(13)는 시험을 통과한 프래그먼트와 대기 행렬(12) 및 프래그먼트 쉐이딩 스테이지(6)로의 (도 1에서 점선(14)으로 도시된 바와 같은) 브로드캐스트 신호 타입 지시(해당 프래그먼트의 성질에 의존함)에 의해 커버되는 (x, y) 위치를 브로드캐스팅한다(14). 하기에 논의되는 바와 같이, 그래픽 처리 파이프라인의 이들 스테이지는 이들이 현재 취급하고 있는 프래그먼트 중 임의의 프래그먼트가 자체 처리를 중단하게 할 수 있거나 (적절하게) 감속되게 하여야 하는지 여부를 평가하기 위해 브로드캐스트 신호 타입 지시와 위치 정보를 이용한다.
다시, 그래픽 처리 파이프라인의 다른 스테이지로 초기 깊이 시험 통과 이벤트를 브로드캐스팅하는 것은 물론, 초기 깊이(Z) 및 스텐실 시험 스테이지(13)는 깊이 및 스텐실 버퍼(5)를 초기 깊이 시험을 통과한 프래그먼트와 관련된 샘플링 포인트에 대한 관련 깊이 값 범위 및/또는 스텐실 값으로 갱신하도록 구성된다. 이것은 해당 버퍼가 예컨대 초기 깊이 및 스텐실 시험(13)을 경험한(및 통과한) 샘플링 포인트의 깊이 값의 최신 기록을 담을 수 있게 함으로써 초기 및 후기 깊이 및 스텐실 시험을 더욱 효율적으로 할 수 있다.
초기 계층적 깊이 및 스텐실 시험 스테이지(4)와 초기 깊이 및 스텐실 시험 스테이지(13)에 의한 초기 깊이 시험 "통과" 이벤트 프래그먼트 "킬" 신호(즉, 임의의 프래그먼트가 브로드캐스트 신호에 응답하여 중단될 수 있는지 여부가 결정되어야 함을 지시함)의 브로드캐스트에 응답하여, "킬" 신호 브로드캐스트를 받은 처리 파이프라인의 스테이지는 브로드캐스트 신호 내의 위치 정보를 이용하여 현재 요구를 담고 있는 임의의 프래그먼트가 초기 디스카드 시험 "통과" 이벤트의 결과로서 더 이상 처리되지 않는지 여부를 결정한다. 이 처리는 현재 파이프라인 스테이지를 점유하는 프래그먼트 전체의 (x, y) 위치와 초기 계층적 깊이 및 스텐실 시험 스테이지(4) 또는 초기 깊이 및 스텐실 시험 스테이지(13)에 의해 전달된 브로드캐스트 "킬" 신호에 의해 지시된 (x, y) 위치(들)(즉, 초기 디스카드 시험을 통과하고 프래그먼트 "킬" 신호의 브로드캐스트를 시발한 프래그먼트 및/또는 패치의 (x, y) 위치)(실제로 초기 깊이 및 스텐실 시험을 통과한 패치 또는 프래그먼트에 의해 차단되는 현재 스테이지 내에 있는 임의의 프래그먼트를 식별함)를 비교하는 것에 의해 수행된다.
초기 디스카드 시험을 통과하고 프래그먼트 "킬" 신호를 시발한 패치 또는 프래그먼트(들)와 동일한 (x, y) 위치를 갖는 임의의 현재 프래그먼트의 처리는 이후 중단되고, 또한 만족되는 프래그먼트의 처리를 중단하기 위한 소정의 다른 기준에 맞춰진다. 특히, 잠재적으로 디스카드될(즉, 차단되는) 파이프라인 내의 프래그먼트가 예컨대, 미해결된 차단 질의와 관련되어 여전히 요구되는 사이드 효과(side effect)를 갖기 때문과 같은 임의의 다른 이유로 여전히 처리되어야 하는지 여부도 확인된다. 차단되는 프래그먼트가 그것에 첨부된 여전히 활성인 차단 질의를 가지고 있지 않으면(그리고 다른 필요 사이드 효과가 없으면), 해당 프래그먼트는 버려지지만(그 처리가 중단됨) 그것에 첨부되는 활성인 차단 질의(또는 소정의 다른 여전히 필요한 사이드 효과)을 가지고 있으면, 버려지지 않는다(즉, 처리가 계속됨). 이러한 확인은 해당 그래픽 처리 파이프라인의 스테이지에 의해 수행된다.
추가의 처리로부터 프래그먼트가 잘못 버려질 위험을 줄이기 위해 초기 디스카드 시험 프래그먼트 "킬" "통과" 이벤트의 경우 더 이상 처리되지 않는 것이 필요한 프래그먼트의 결정은 적절하게 보수적인 방식으로 수행된다.
그래픽 처리 파이프라인의 스테이지 각각은 스테이지 내의 프래그먼트 전부를 동시에 시험한다. 이것은 파이프라인 스테이지가 초기 디스카드 시험 통과 이벤트가 잠재적인 디스카드 가능성을 발생시킬 수 있는 것과 같은 비율로 프래그먼트를 버릴 수 있게 한다.
후기 처리 스테이지 내의 프래그먼트는 그렇게 식별되는 프래그먼트를 "죽이는(killed)"(무효화) 것에 의해 자체의 처리를 중단하게 한다. 이를 용이하게 하기 위해, 각각의 프래그먼트는 이와 관련된 "킬드(killed)" 비트(예, 관련 프래그먼트 데이터의 일부로서)를 가지며, 킬드 비트는 설정시 프래그먼트가 처리될 필요가 없음(그리고 버려질 수 있음)을 지시한다. 파이프라인 처리 스테이지는 이들이 처리를 위해 수신하는 각각의 플래그먼트의 킬드 비트를 확인하도록(이후 그에 따라서 프래그먼트를 처리 또는 처리하지 않는다) 구성된다.
프래그먼트의 무효 태그가 설정되면 함께 사용될 수 있도록 질의(캐시) 라인을 릴리즈하는 캐시와 같이 작동하는 유효 태그를 갖는 프래그먼트 질의를 갖는 것과 같은 대안적인 구성이 원하는 경우 대신에 또는 함께 사용될 수 있다.
초기 디스카드 시험 프래그먼트 "킬" 통과 이벤트가 전달되는 그래픽 처리 파이프라인의 각각의 스테이지는 그 로컬 도메인(즉, 스테이지 또는 해당 처리 스테이지의 일부의 범위 내의) 내의 모든 프래그먼트에 대해 책임있는 대응하는 에이전트를 가진다. 각각의 에이전트는 그 로컬 도메인에 프래그먼트 관련 정보를 유지하고, 해당 에이전트가 수신하는 초기 디스카드 시험 프래그먼트 "킬" 통과 이벤트에 응답하여 프래그먼트의 불필요한 처리를 피하거나 및/또는 중단시키기 위해 프래그먼트를 킬드(무효)로 마킹하도록 동작 가능하다. 에이전트는 그 로컬 도메인에 프래그먼트 모두를 동시에 시험할 수 있도록 구성된다.
초기 계층적 깊이 및 스텐실 시험 스테이지(4)와 초기 깊이 및 스텐실 시험 스테이지(13)에 의한 초기 깊이 시험 "통과" 이벤트 프래그먼트 "감속" 신호의 브로드캐스팅에 응답하여(즉, 임의의 프래그먼트의 처리가 브로드캐스트 신호에 응답하여 감속되어야 하는지 여부가 결정되어야 함을 지시함), "감속" 신호 브로드캐스팅을 수신하는 처리 파이프라인의 스테이지는 그들이 현재 포함하는 임의의 프래그먼트의 처리가 초기 디스카드 시험 "통과" 이벤트의 결과로서 감속되어야 하는지 여부를 결정하기 위해 브로드캐스팅 신호 내의 위치 정보를 이용한다.
이러한 처리는 현재 파이프라인 스테이지를 점유하는 모든 프래그먼트의 (x, y) 위치와 초기 계층적 깊이 및 스텐실 시험 스테이지(4) 또는 초기 깊이 및 스텐실 시험 스테이지(13)에 의해 전달된 브로드캐스트 "감속" 신호에 의해 지시된 (x, y) 위치(들)(즉, 초기 디스카드 시험을 통과하고 프래그먼트 "감속" 신호의 브로드캐스트를 시발한 프래그먼트(들) 및/또는 패치의 (x, y) 위치)(실제로 초기 깊이 및 스텐실 시험을 통과한 패치 또는 프래그먼트에 의해 차단되는 현재 스테이지 내에 있는 임의의 프래그먼트를 식별함)를 비교하는 것에 의해 수행된다.
초기 디스카드 시험을 통과하고 프래그먼트 "감속" 신호를 시발한 패치 또는 프래그먼트(들)와 동일한 (x, y) 위치를 갖는 임의의 현재 프래그먼트의 처리는 이후 감속(지연)되고, 또한 만족되는 프래그먼트의 처리를 지연하기 위한 소정의 다른 기준에 맞춰진다. 특히, 잠재적으로 감속될 파이프라인 내의 프래그먼트가 예컨대, 미해결된 차단 질의와 관련되어 여전히 요구되는 사이드 효과를 갖기 때문과 같은 임의의 다른 이유로 여전히 정상 속도로 처리되어야 하는지 여부도 확인된다. 감속되는 프래그먼트가 그것에 첨부된 여전히 활성인 차단 질의를 가지고 있지 않으면(그리고 다른 필요 사이드 효과가 없으면), 그 처리는 감속되지만, 그것에 첨부되는 활성인 차단 질의(또는 소정의 다른 여전히 필요한 사이드 효과)를 가지고 있으면, 그 처리는 감속되지 않는다. 이러한 확인은 해당 그래픽 처리 파이프라인의 스테이지에 의해 수행된다.
파이프라인 내의 프래그먼트의 처리를 부정확하게 또는 부적절하게 지연시키는 위험을 줄이기 위해 초기 디스카드 시험 프래그먼트 "감속" "통과" 이벤트의 경우 처리가 감속되어야 하는 프래그먼트의 결정은 적절하게 보수적인 방식으로 수행된다.
그래픽 처리 파이프라인의 스테이지 각각은 스테이지 내의 프래그먼트 전부를 동시에 시험한다. 이것은 파이프라인 스테이지가 초기 디스카드 시험 통과 이벤트가 잠재적인 "감속" 가능성을 발생시킬 수 있는 것과 같은 비율로 프래그먼트를 지연(감속)할 수 있게 한다.
초기 디스카드 시험 프래그먼트 "감속" 통과 이벤트가 전달되는 그래픽 처리 파이프라인의 각각의 스테이지는 그 로컬 도메인(즉, 스테이지 또는 해당 처리 스테이지의 일부의 범위 내의) 내의 모든 프래그먼트에 대해 책임있는 대응하는 에이전트를 가진다(해당 에이전트는 프래그먼트 "킬" 초기 디스카드 시험 통과 이벤트의 취급시와 동일한 에이전트일 수 있다). 각각의 에이전트는 그 로컬 도메인에 프래그먼트 관련 정보를 유지하고, 해당 에이전트가 수신하는 초기 디스카드 시험 프래그먼트 "감속" 통과 이벤트에 응답하여 그 처리를 늦추기 위해 프래그먼트를 우선 순위를 낮추는 것으로 마킹하도록 동작 가능하다. 에이전트는 그 로컬 도메인 내의 프래그먼트 모두를 동시에 시험할 수 있도록 구성된다.
"감속" 프래그먼트는 정상시보다 더 천천히 처리되지만, 목표는 프래그먼트의 처리가 파이프라인을 통해 정상적으로 처리될 수 있는 속도보다 감속 또는 지연되는 것이지, 프래그먼트가 "감속시" 추가로 파이프라인에 의해 처리되는 것이 디스카드(영구적으로 중단)되는 것이 아님을 알아야 한다.
본 실시예에서, 구성은 "감속" 프래그먼트의 처리가 프래그먼트의 처리의 감속을 트리거하는 프래그먼트가 파이프라인 내의 "감속된" 프래그먼트 포인트를 추월함으로써 해당 "감속된" 프래그먼트의 처리의 감속을 트리거하는 프래그먼트의 처리가 파이프라인 내의 "감속된" 프래그먼트의 처리의 완료 전에 조건부 디스카드 시험을 완료할 가능성이 있도록 하는 정도로 감속되게 구성된다. 하기에 설명되는 바와 같이, 이것은 "트리거링" 프래그먼트가 (잠재적으로) 감속된 프래그먼트가 파이프라인에 의해 더 처리되지 않게 디스카드("킬")되게 사용될 수 있게 한다.
본 실시예에서, 그 처리가 감속되는 프래그먼트는 파이프라인에 의해 그 처리의 우선 순위가 감소되는 것에 의해(즉, 파이프라인에 의해 처리 우선도를 감소시키는 것에 의해)처리를 감속되게 할 수 있다. 이것은 캐시 액세스에 대한 및/또는 파이프라인에 의한 다른 처리에 대해 (감속되지 않은 프래그먼트에 비해) "감속된" 프래그먼트에 우선 순위를 덜 부여하는 것에 의해 달성된다.
프래그먼트는 그렇게 식별되는 프래그먼트를 "우선 순위가 감소되는 것(de-prioritised)"(감소된 처리 우선도를 갖도록)으로 마킹하는 것에 의해 "우선 순위가 감소된다". 관련 파이프라인 처리 스테이지는 프래그먼트가 어떤 처리를 받기 전에 "우선 순위가 감소되는 것"으로 마킹되었는지 여부를 확인하고, 이후 그에 따라 프래그먼트를 정상적인 또는 감소된 우선 순위로 처리한다.
각각의 프래그먼트는 그와 관련된 "우선 순위 감소된" 비트(예, 관련 프래그먼트 데이터의 일부로서)를 가지며, 해당 비트는 설정시 프래그먼트의 처리가 우선 순위가 감소되었음을 지시한다. 이후 처리 스테이지는 이들이 처리를 위해 수신한 각각의 프래그먼트의 "우선 순위-감소된" 비트를 확인할 수 있다.
원하는 경우 프래그먼트의 처리의 감속 및 지연을 위해 대안적인 구성이 사용될 수 있다. 예를 들면, 프래그먼트의 우선 순위 감소된 태그가 설정되는 경우 대기 행렬(캐시) 라인을 릴리즈하도록 캐시처럼 동작하는 우선 순위-감소된 태그를 갖는 프래그먼트 대기 행렬이 원하는 경우 대체하거나 함께 사용될 수 있다.
명령이 완료될 때 프래그먼트 풀(pool) 내에 배치되도록 처리되는 명령을 갖는 프래그먼트에 대한 다른 적절한 구성이 있을 수 있으며, 캐시 히트가 존재하고 명령이 실행을 위해 준비되면, 적절한 프래그먼트가 프래그먼트 풀로부터 인출되어 실행된다. 이후 프래그먼트는 해당 프래그먼트가 프래그먼트 풀을 벗어나는 것이 허용되어야 하는지 여부를 결정할 때 고려되는 추가의 인자로서 우선 순위 조건을 추가하는 것에 의해 감소되는 처리의 우선 순위를 가질 수 있다.
유사하게, 프래그먼트는 파이프라인에 의한 처리를 (예컨대, 그리고 바람직하게, "트리거링" 프래그먼트 및/또는 샘플링 포인트가 자체의 조건부 디스카드 시험 또는 시험(들)을 완료할 때까지) 일시 정지하는 것에 의해 자체의 처리를 감속되게 할 수 있다. 파이프라인 내의 프래그먼트의 처리에 있어 이러한 일시 정지는 예컨대, 그 처리가 일시 정지되는 "좀비 풀" 내에서 그 처리가 일시 정지되는 임의의 프래그먼트를 배치하는 것에 의해 달성될 수 있다.
초기 계층적 깊이 시험(4)을 패싱하는 패치 또는 초기 깊이 시험(13)을 패싱하는 프래그먼트의 결과로서 프래그먼트 "감속" 신호의 전달(브로드캐스트)을 이전에 트리거시킨 프래그먼트가 조건부 디스카드 시험(들)을 경험할 때, 본 실시예는 (통상적인)프래그먼트와 관련된 처리 샘플링 포인트를 디스카드 또는 유지하기 위해 조건부 디스카드 시험(들)의 결과를 이용하는 것은 물론, 그래픽 처리 파이프라인에 있는 다른 초기 프래그먼트의 처리가 중단될 수 있거나 회복되어여 하는지 여부를 결정하기 위해 조건부 디스카드 시험(들)을 패싱 또는 실패하는 프래그먼트의 결과를 이용한다.
이를 위해, 도 1에 도시된 바와 같이, 조건부 디스카드 시험(들)이 수행되는 쉐이더 파이프라인(6)은, 이전에 프래그먼트 "감속" 신호의 전달(브로드캐스트)을 트리거한 프래그먼트가 조건부 디스카드 시험을 경험하는 경우, (시험 결과에 따라) 프래그먼트를 디스카드하거나 프래그먼트를 처리의 다음 스테이지로 패싱하는 것은 물론, (도 1에서 점선 20, 21, 22, 23)으로 나타낸 바와 같이) 파이프라인의 스테이지로 조건부 디스카드 시험 "통과" 또는 "실패" 이벤트에 관한 정보를 전달한다.
조건부 디스카드 시험 "통과" 또는 "실패" 이벤트의 전달은 프래그먼트 "감속" 신호의 전달(브로드캐스트)을 이미 트리거시킨 모든 프래그먼트에 대해 수행된다.
본 실시예에서, 쉐이더 파이프라인(6)은 조건부 디스카드 시험 "통과" 또는 "실패" 이벤트가 파이프라인으로 전달되어야 하는지 여부와 조건부 디스카드 시험 "통과" 또는 "실패" 이벤트 브로드캐스트가 취하여야 하는 형태를 결정한다. 브로드캐스트는 (오직 초기 프리미티브만이 (잠재적으로) 신호에 의해 영향을 받도록) 프리미티브의 "시간 스탬프"도 포함한다.
처하게 될 최종 조건부 디스카드 시험을 통과하는 경우(즉, 처하게 될 조건부 디스카드 시험 모두를 통과하는 경우) 프래그먼트는 그래픽 파이프라인에 있으면서 조건부 디스카드 시험 "통과" 이벤트의 파이프라인으로의 브로드캐스팅(전달)을 트리거하는 프래그먼트 이전에 그래픽 파이프라인으로 들어가는 다른 프래그먼트의 처리의 중단을 트리거할 수 있는 조건부 디스카드 시험 "통과" 이벤트의 파이프라인으로의 브로드캐스팅(전달)을 트리거한다.
조건부 디스카드 시험을 실패하는 프래그먼트는 그래픽 파이프라인에 있으면서 조건부 디스카드 시험 "통과" 이벤트의 파이프라인으로의 브로드캐스팅(전달)을 트리거하는 프래그먼트 이전에 그래픽 파이프라인으로 들어간 이미 감속된 프래그먼트의 처리의 복원(복구)을 트리거할 수 있는 조건부 디스카드 시험 "실패" 이벤트의 파이프라인으로의 브로드캐스팅(전달)을 트리거한다.
쉐이더 파이프라인 스테이지(6)는 조건부 디스카드 시험을 수행하고, 프래그먼트가 필요 기준을 만족하면, 이와 관련된 통과 또는 실패 이벤트와 필요한 정보를 그래픽 파이프라인의 적절한 스테이지로 "브로드캐스팅"하도록 작동적일 수 있는 조합된 시험 및 갱신 로직을 포함한다.
본 실시예에서, "퀄리파잉" 프래그먼트(즉, "역방향(backward)" "정지 처리" 또는 "복구(복원: revive) 처리" 신호의 전송을 트리거할 기준을 충족하는 프래그먼트)가 조건부 디스카드 시험(conditional discard test)을 경험하는 경우, 쉐이더 파이프라인 스테이지(6)는 그 시험을 경험한 프래그먼트에 의해 커버된 (x, y) 위치들을 프래그먼트 쉐이딩 스테이지(6) 및 대기 행렬(12)로 브로드캐스팅(20, 21)한다(이는 또한 원한다면 레스터화 스테이지(3), 초기 계층적 깊이 및 스텐실 시험 스테이지(4)로 브로드캐스트될 수도 있다). 브로드캐스트 정보는 또한 임의의 프래그먼트의 처리가 정지되어야 할 지의 여부(임의의 프래그먼트가 디스카드되어야 할 지의 여부)를 결정하거나 임의의 프래그먼트의 처리가 복원(복구)되어야 할 지의 여부를 결정하는 데에 브로드캐스트 신호가 이용될지의 여부, 즉 브로드캐스트 신호가 "역방향 프래그먼트 킬" 신호 또는 "역방향 프래그먼트 복원" 신호인지에 대한 지시(indication)와, 해당 프래그먼트의 "세대(age)"를 나타내는 타임스탬프(timestamp)를 포함한다. 그러면, 아래에서 논의하는 바와 같이 그래픽 처리 파이프라인들의 그러한 스테이지들은 이들이 현재 핸들링하고 있는 임의의 프래그먼트는 그들의 처리가 정지될 수 있거나 (적절하다면) 그 처리가 복원되어야 할지의 여부에 액세스하는 데에 브로드캐스트 신호 타입 지시 및 위치와 "세대" 정보를 이용한다.
조건부 디스카드 시험 "통과" 이벤트 "역방향 프래그먼트 킬" 신호(즉, 임의의 프래그먼트의 처리가 그 브로드캐스트 신호에 응답하여 정지될 수 있는지의 여부를 나타내는 신호)의 브로드캐스트에 응답하여, 그 "킬" 신호 브로드캐스트를 수신한 처리 파이프라인의 스테이지들은 그 브로드캐스트 신호의 위치 정보를 이용하여, 그들이 현재 수용하고 있는 임의의 프래그먼트가 조건부 디스카드 시험 "통과" 이벤트의 결과로 더 이상 처리될 필요가 없는 지의 여부를 결정한다. 이 프로세스는 파이프라인 스테이지들을 현재 점유하고 있는 (구: older) 프래그먼트들 전부의 (x, y) 위치를 브로드캐스트 "킬" 신호 브로드캐스트에 의해 지시된 (x, y) 위치들(즉, 조건부 디스카드 시험을 통과하여 역방향 프래그먼트 "킬" 신호의 브로드캐스트를 트리거한 프래그먼트의 (x, y) 위치)과 쉐이더 파이프라인 스테이지(6)에 의해 비교함으로써 수행한다(이는 사실상 최종 조건부 디스크 시험을 통과한 프래그먼트에 의해 차단될 스테이지에 현재 있는 임의의 (구) 프래그먼트를 식별할 것이다).
이어서, 최종 조건부 디스카드 시험을 통과하여 "역방향" 프래그먼트 "킬" 신호를 트리거한 프래그먼트와 동일한 (x, y) 위치를 갖는 임의의 (구) 현재 프래그먼트의 처리는 그 프래그먼트의 처리를 정지시키기 위한 특정 기타 기준에도 역시 충족하는 것을 조건으로 하여 정지된다. 특히, 잠재적으로 디스카드될(즉, 차단될) 파이프라인 내의 프래그먼트가 임의의 기타 이유로, 예를 들면 미해결 차단 질의(unresolved occlusion query)와 관련한 것과 같이 여전히 필요로 하는 사이드 효과를 갖는다는 이유로 여전히 처리되어야 하는 지의 여부를 또한 체크한다. 차단되는 프래그먼트가 그에 첨부된 여전히 활성의 차단 질의를 갖지 않는다면(또한, 어떠한 기타 요구되는 사이드 효과도 갖지 않는다면), 그 프래그먼트는 폐기되지만, 활성 차단 질의가 그에 첨부되어 있다면(혹은, 여전히 요구되는 몇몇의 기타 사이드 효과를 갖는다면), 그 프래그먼트는 디스카드되지 않는다(즉, 그 처리는 계속된다). 이러한 체크는 해당 그래픽 처리 파이프라인의 스테이지에 의해 수행된다.
조건부 디스카드 시험 프래그먼트 "킬" "통과" 이벤트의 발생시에 더 이상 처리될 필요가 없는 프래그먼트의 결정은 적절한 보수적 방식으로 수행되어, 다른 처리로부터 프래그먼트가 부정확하게 디스카드될 위험을 감소시킨다.
그래픽 처리 파이프라인의 각 스테이지는 그 스테이지 내의 모든 프래그먼트를 동시에 시험한다. 이는 조건부 디스카드 시험 통과 이벤트가 잠재적 선별 기회를 생성할 수 있는 것과 동일한 속도로 파이프라인 스테이지들이 프래그먼트를 디스카드할 수 있게 한다. 초기 처리 스테이지에서의 프래그먼트들은 식별된 프래그먼트들 "킬(무효화)"된 것으로서 마킹함으로써 그들의 처리가 정지된다. 전술한 바와 같이, 이를 위해서는 각각의 프래그먼트들은 설정된다면 그 프래그먼트가 처리될 필요가 없음(따라서, 디스카드될 수 있음)을 나타내는 그와 관련된 "킬"된 비트(예를 들면, 관련 프래그먼트 데이터의 일부로서)를 갖는다
(또한, 프래그먼트의 무효 태그가 설정되어 있다면 대기 행렬 (캐시) 라인을 릴리즈하도록 캐시와 같이 작동하는 유효성 태그를 갖는 프래그먼트 대기 행렬을 갖는 것과 같은 대안적인 구성이 원하는 경우에 그 대신에 이용되거나 추가적으로 이용될 수 있다).
조건부 디스카드 시험 "역방향" 프래그먼트 "킬" 통과 이벤트가 브로드캐스트된 그래픽 처리 파이프라인의 각 스테이지는 그 로컬 도메인(즉, 스테이지 내에 또는 해당 처리 스테이지 내의 일부분) 내에 모든 프래그먼트를 책임질 대응 에이전트를 갖는다. 이는 바람직하게는 초기 깊이 시험 스테이지에 의해 전송된 프래그먼트 "킬" 및 "감속" 이벤트 브로드캐스트를 핸들링하는 것과 동일한 에이전트이다. 각각의 에이전트는 로컬 도메인 내의 프래그먼트에 관한 정보를 유지하여, 수신하는 조건부 디스카드 시험 "역방향" 프래그먼트 "킬" 통과 이벤트에 응답하여 그 프래그먼트들의 불필요한 처리를 방지 및/또는 정지하도록 프래그먼트들을 킬된(무효한) 것으로서 마킹하도록 작동할 수 있다. 에이전트들은 로컬 도메인 내의 모든 프래그먼트들 병렬로 시험할 수 있도록 구성된다.
이러한 "역방향 프래그먼트 킬" 신호 오퍼레이션은 모든 조건부 디스카드 시험을 통과하여 그보다 앞서 파이프라인에 입력되어 다른 프래그먼트의 "감속"을 이전에 트리거한 소정 프래그먼트의 결과가 임의의 "감속된" 프래그먼트를 "절멸(kill off)"하는 데에 이용될 수 있는데, 그 감속된 프래그먼트가 파이프라인에 의해 완전히 처리되기 전에 감속된 프래그먼트는 트리거하는 프래그먼트에 의해 파이프라인 내에서 추월되어 그 트리거하는 프래그먼트에 의해 사실상 차단될 것이다.
그러면, 이는 새로운 프래그먼트가 이미 파이프라인 내에 있는 프래그먼트를 실제로 차단할 지의 여부가 초기 깊이 시험 스테이지에서 충분한 확실성을 갖고 결정될 수 없는 경우라도 나중에 파이프라인에 입력되는 프래그먼트들이 (이들보다 전에) 일찍이 파이프라인에 입력된 프래그먼트들에 관한 히든 서페이스 제거를 수행하는 데에 이용될 수 있게 한다.
쉐이더 파이프라인 스테이지(6)에 의한 조건부 디스카드 시험 "실패(fail)" 이벤트 "역방향 프래그먼트 복원" 신호(즉, 임의의 프래그먼트의 처리가 그 브로드캐스트 신호에 응답하여 복원되어야 할지의 여부가 결정되어야 함을 나타내는 신호)의 브로드캐스트에 응답하여, 그러한 "복원" 신호 브로드캐스트를 수신한 처리 파이프라인의 스테이지는 그 브로드캐스트 신호 내의 위치 및 "세대" 정보를 이용하여, 그들이 현재 수용하고 있는 임의의 프래그먼트의 처리가 조건부 디스카드 시험 "실패" 이벤트의 결과로서 복원되어야할 지의 여부를 결정한다.
이 프로세스는 파이프라인 스테이지들을 현재 점유하고 있는 이전에 감속된 프래그먼트들 전부의 (x, y) 위치 및 "세대"를 브로드캐스트 "복원" 브로드캐스트에 의해 지시된 (x, y) 위치 및 "세대"(즉, 조건부 디스카드 시험을 실패하여 프래그먼트 "복원" 신호의 브로드캐스트를 트리거한 프래그먼트의 (x, y) 위치 및 "세대"와 쉐이더 파이프라인 스테이지(6)에 의해 비교함으로써 수행된다(이는 사실상 기지의 스테이지에 현재 있는 임의의 (구) 프래그먼트들이 조건부 디스카드 시험을 실패한 프래그먼트에 의해 차단되지 않을 것임을 식별할 것이다).
그래픽 처리 파이프라인의 각 스테이지는 다시 그 스테이지 내의 모든 프래그먼트를 병렬로 시험한다. 이는 조건부 디스카드 시험 실패 이벤트가 잠재적 "복원" 기회를 생성할 수 있는 것과 동일한 속도로 파이프라인 스테이지들이 (감속된) 프래그먼트들을 복원할 수 있게 한다.
본 실시예에서, 프래그먼트는 그 처리 우선 순위를 (그 "감속된" 우선 순위가 제거된 상태로부터 그에 비해) 증가시킴으로써 복원된다. 그 프래그먼트들은 그 원래 (정상의) 처리 우선 순위 및 속도로 복구된다. 이것은, "복원된(revived)" 프래그먼트를 "우선 순위 감소된 프래그먼트"로서 더 이상 표시하지 않음으로써 실행된다. 이에 따라, 프래그먼트가 "복원"되면, 프래그먼트와 관련한 적절한 "우선 순위 감소된" 비트가 갱신된다(변경된다)(언세트된다).
통상의 디스카드 시험 "백워드 프래그먼트 리바이브" 실패 이벤트가 브로드캐스트되는 그래픽 처리 파이프라인의 각 스테이지는, 로컬 도메인(즉, 문제의 처리 스테이지의 일부 또는 스테이지)(이는, 프래그먼트 "킬" 패스 이벤트 등을 취급하는 에이전트와 동일할 수도 있음) 내의 모든 프래그먼트를 담당하는 대응 에이전트를 갖는다. 각각의 에이전트는 프래그먼트에 관한 정보를 로컬 도메인 내에 유지하고, 프래그먼트를 더 이상 우선 순위 감소된 것이 아닌 것(더 이상 슬로우 다운되지 않는 것)으로 표시하여, 수신하는 통상의 디스카드 시험 프래그먼트 "복원" 실패 이벤트에 따라 처리를 리바이브(복원)하도록 조작될 수 있다. 에이전트는 로컬 도메인 내의 모든 프래그먼트를 병렬로 처리할 수 있도록 구성되어 있다.
(다른 배치를 사용하여 프래그먼트의 처리를 감속시키면, 프래그먼트가 적절한 방식으로 복원되어야 한다. 예컨대, 프래그먼트의 우선 순위 감소된 태그가 설정되면, 큐(캐쉬) 라인을 릴리스하는 캐쉬와 유사하게 동작하는 우선 순위 감소된 태그를 갖는 프래그먼트 큐(queue)가 사용되는 경우에, 프래그먼트가 리바이브될 때에 우선 순위 감소된 태그를 적절하게 갱신할 수 있다. 마찬가지로, 프래그먼트가 파이프라인에 의한 처리를 정지함으로써 처리를 슬로우 다운시키면, 프래그먼트 및/또는 샘플링 포인트는, 예컨대 처리가 정지된 "좀비 풀(zombie pool)"로부터 이들을 제거하여 처리를 "재개(unpausing)"하고 이들을 통상적인 방식으로 처리하기 위한 파이프라인에 리턴시킴으로써 리바이브될 수 있다.)
이러한 "백워드 프래그먼트 리바이브" 신호 동작은, 그 이전에 파이프라인에 들어온 다른 프래그먼트의 처리의 "슬로우 다운"을 이미 트리거한 프래그먼트의 결과를 허용하여, 파이프라인에 있어서 트리거링 프래그먼트가 추월한 임의의 "슬로우 프래그먼트"를 "리바이브"(복원)하는 데에 조건부의 디스카드 시험 중 하나를 사용할 수 없으며, 실제로, 트리거링 프래그먼트에 의해 막히지 않아, 슬로우 다운 프래그먼트가 다시 통상적으로 처리된다.
본 실시예에 있어서는, 후속하여 처리의 슬로잉을 트리거한 프래그먼트가 조건부 디스카드 시험을 실패(fail)하는 경우에는, 리바이브(복원)되는 임의의 "슬로우 다운" 프래그먼트가 통상의 프라이어러티로 처리될 뿐만 아니라, 처리의 슬로잉을 트리거한 프래그먼트가, 본 실시예의 조작의 결과로서의 "포워드 프래그먼트 킬" 신호에 의해 디스카드("킬")되면, "슬로우 다운(slowed down)" 프래그먼트가 디스카드("킬")된다. 이 경우에, "슬로잉" 프래그먼트를 킬하는 "포워드 프래그먼트 킬" 신호가 동일 동작에 있어서 "슬로우 다운" 프래그먼트를 "킬"하는 작용을 한다.
이상으로부터, 본 실시예에 있어서는, 어얼리 깊이 시험을 통과하고, 이미 파이프라인에 있는 하나 이상의 프래그먼트의 처리의 슬로잉 다운을 트리거할 수 있는 신호를 보내면, 프래그먼트는, 조건부 디스카드 시험을 겪을 때, 모든 조건부 디스카드 시험을 통과하면, 이전에 처리가 슬로우 다운된 프래그먼트의 하나 이상의 (디스카딩의) 처리의 정지를 트리거할 수 있는 신호를 보내거나, 조건부 디스카드 시험 중 하나를 실패하면, 이전에 처리가 슬로우 다운된 프래그먼트의 하나 이상의 처리의 리바이빙을 기동할 수 있는 신호를 보낸다.
마찬가지로, 어얼리 앤드 깊이 스텐실 시험을 통과한 나중 프래그먼트의 결과로서 처리가 이전에 슬로우 다운된 프래그먼트는 후속하여, 제1 플레이스에서의 프래그먼트의 처리의 슬로우 다운을 트리거하는 프래그먼트에 대한 조건부 디스카드 시험의 결과에 따라, 정지되거나 또는 리바이브된(복원된) 처리를 갖는다.
도 1에 도시된 바와 같이, 본 실시예에 있어서는, 그래픽 처리 파이프라인은, 그래픽 처리 파이프라인의 프래그먼트 쉐이더(6)의 앞에 위치된 프래그먼트가 통과해야 하는 큐(12)를 포함한다. 큐(12)는 프래그먼트의 하나의 전체 타일 사이즈 세트를 유지할 수 있도록 구성되어 있지만, 다른 배치도 물론 가능하다.
큐(12)는, 어얼리 컬링 시험 스테이지의 후에(즉, 계급에 따른 깊이 및 스텐실 테스터(4)와 어얼리 깊이 및 스텐실 테스터(13)의 후에), 파이프라인에 있을 수 있는 프래그먼트의 수를 증가시키는 효과를 갖고, 이에 의해 본 실시예의 방식으로 동작될 수 있는 프래그먼트의 수를 증가시킨다. 큐(12)의 사용은, 궁극적으로 가시적인 프래그먼트만이 큐(12) 후에 오는 프래그먼트 쉐이딩 스테이지(6)에 이르는 (그리고, 그에 의해 처리되는) 가능성을 현저하게 증가시킬 수 있다. 이것은, 프래그먼트 쉐이딩이 통상적으로 프래그먼트당 비교적 고가의 프로세스이므로 이점을 가지며, 이에 따라, 프래그먼트 쉐이더에 들어가는 프래그먼트의 수가 적을수록, 더욱 바람직하다.
큐(12)에 들어가는 프래그먼트는 동일한 순서로 큐를 나가지만, "킬드" 프래그먼트는 큐를 나갈 때 리소스의 프링(freeing)을 트리거한다.
상기로부터 본 발명은 바람직한 실시예에서 적어도 파이프라인 그래픽 처리시스템 내에서 일어날 수 있는 히든 표면의 (궁극적으로는 불필요한) 처리량을 추가로 감소시키기 위한 메커니즘을 제공함을 알 수 있다. 더욱이, 본 발명의 구성은 렌더링 순서가 전통적인 렌더링 파이프라인에 대해 최적일 때(따라서, 최적의 렌더링 순서로서 기존의 렌더링 파이프라인 구성에 비해 최소 비용을 제공함) 개입하지 않을 것이지만, 렌더링 순서가 비-최적화 상태일 때 실시되도록 구성되며, 이 경우, 적어도 본 발명의 바람직한 실시예에서 예비 렌더링 당 샘플 또는 프래그먼트 당 분류 처리에서처럼 히든 표면 제거에 효율적일 수 있는 포인트로 뒤집어진 프래그먼트와 히든 표면을 제거할 수 있다. 렌더링될 내용이 분류 알고리즘이 분류에 최적인 방식을 쉽게 감지할 수 없도록 된 경우(예, 프리미티브가 교차되거나 중첩하는 깊이 범위를 갖는 경우), 이것을 분류보다 더 효율적으로 행할 수 있다.
본 발명의 기법은 사용되는 다중 샘플링된 앤티-얼라이어싱(anti-aliasing)의 레벨에 무관하므로 고차 다중 샘플링된 앤티 얼라이어싱을 매우 저가로 사용할 수 있다.
파이프라인 내에 이미 존재하는 임의의 프래그먼트의 처리가 감속되어야 할지 여부를 결정하기 위해 초기 도태 시험 패스 이벤트의 결과를 사용하는 것은 특히 먼저 파이프라인에 들어간 프래그먼트의 처리를 후속으로 정지시키는 것을 용이하게 하지만, 추후의 프래그먼트가 차단되는 초기 도태 시험 스테이지에서는 어느 정도 결정될 수 없는데, 이는 예컨대, 추후의 프래그먼트의 경우 그래픽 처리 파이프라인에 의한 처리 중에 하나 이상의 조건부 디스카드 시험을 받아야 하기 때문이다. 따라서, 이것은 더 많은 프래그먼트의 처리가, 초기 도태 시험이 단독으로 사용되어 추후의 프래그먼트가 차단되는 것을 확실하게 할 수 있는 파이프라인 내의 임의의 프래그먼트를 즉시 디스카드("킬")하는 구성보다, 파이프라인의 단부에 접근하기 전에 정지될 수 있게 한다.
여기서, 본 실시예(및 본 발명의)의 프래그먼트 감속 및 후속 "킬링" 동작은 소수의 사이클의 현재 프래그먼트 내에 프래그먼트를 단순히 국부적으로 재배열하지 않고, 프래그먼트들을 순서를 바꿔 완전하게 하는(실제로 먼저 파이프라인으로 들어간 프래그먼트의 처리를 디스플레이하는 것에 의해) 효과를 제공하며, 더욱이 여전히 불가피하게 모든 프래그먼트를 처리하지 않고 필요치 않은 것으로 확인되는 임의의 프래그먼트를 디스카드하고 처리하지 않도록 동작한다.

Claims (17)

  1. 처리될 그래픽 프래그먼트를 발생시키도록 입력 프리미티브(input primitive)를 레스터화하는 레스터화기(rasteriser)와, 출력 프래그먼트 데이터를 발생시키도록 상기 레스터화기에 의해 발생되는 프래그먼트를 처리하는 렌더러(renderer)를 포함하는 복수 개의 처리 스테이지를 포함하고, 각 그래픽 프래그먼트는 관련된 하나 이상의 샘플링 포인트를 갖는, 그래픽 처리 파이프라인을 작동시키는 방법으로서, 상기 방법은,
    프래그먼트가 처리를 위해 렌더러로 전송되기 전에 레스터화기에 의해 발생된 프래그먼트와 관련된 적어도 하나의 샘플링 포인트에 관하여 초기 발췌 시험을 수행하는 단계; 및
    적어도 하나의 샘플링 포인트가 초기 발췌 시험을 통과하면, 처리를 위해 그리고 초기 발췌 시험을 통과한 적어도 하나의 샘플링 포인트에 응답하여 프래그먼트를 전방으로 전송하고, 그래픽 처리 파이프라인 내에 있는 다른 샘플링 포인트의 처리가 감속되어야 하는지를 결정하는 단계를 포함하는, 그래픽 처리 파이프라인의 작동 방법.
  2. 제1항에 있어서,
    이미 그래픽 처리 파이프라인 내에서 다른 샘플링 포인트의 처리가 감속되어야 하는지의 여부의 결정은 초기 발췌 시험을 통과한 샘플링 포인트가 또한 특정한 특성 또는 특성들을 갖는지의 여부를 기초로 하는, 그래픽 처리 파이프라인의 작동 방법.
  3. 제2항에 있어서,
    상기 특정한 특성은 그 처리의 일부로서 하나 이상의 조건 폐기 시험을 받는 샘플링 포인트를 포함하는, 그래픽 처리 파이프라인의 작동 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    파이프라인 내의 샘플링 포인트의 처리를 우선순위를 정하지 않음으로써 파이프라인 내에 있는 다른 샘플링 포인트의 처리를 감속시키는 단계를 포함하는, 그래픽 처리 파이프라인의 작동 방법.
  5. 제1항 내지 제3항 중 어느 한 항에 있어서,
    그래픽 처리 파이프라인 내에 있는 다른 샘플링 포인트의 처리가 초기 발췌 시험을 통과한 적어도 하나의 샘플링 포인트에 응답하여 감속될 수 있는지를 결정하는 단계는, 파이프라인 스테이지를 현재 차지하고 있는 샘플링 포인트 및/또는 프래그먼트의 위치를 초기 발췌 시험을 통과한 적어도 하나의 샘플링 포인트의 위치와 비교하는 단계를 포함하는, 그래픽 처리 파이프라인의 작동 방법.
  6. 제1항 내지 제3항 중 어느 한 항에 있어서,
    그래픽 처리 파이프라인 내에 있는 다른 샘플링 포인트의 처리가 초기 발췌 시험을 통과한 적어도 하나의 샘플링 포인트에 응답하여 감속될 수 있는지를 결정하는 단계는, 그 처리를 감속하기 전에 다른 샘플링 포인트가 여전히 정상적인 우선 순위로 처리되어야 하는지를 알도록 다른 샘플링 포인트의 다른 특성을 점검하는 단계를 더 포함하는, 그래픽 처리 파이프라인의 작동 방법.
  7. 제1항 내지 제3항 중 어느 한 항에 있어서,
    그래픽 처리 파이프라인 내에 있는 다른 샘플링 포인트의 처리가 감속되어야 하는지의 여부에 관한 결정을 미리 트리거한 레스터화기에 의해 발생되는 프래그먼트와 관련된 적어도 하나의 샘플링 포인트를 위한 하나 이상의 조건 폐기 시험을 수행하는 단계; 및
    적어도 하나의 샘플링 포인트가 받아야 될 모든 조건 폐기 시험을 통과하고, 그래픽 처리 파이프라인 내에 있는 다른 샘플링 포인트의 처리가 초기 발췌 시험을 통과한 적어도 하나의 샘플링 포인트의 결과로서 감속되어야 한다고 결정되었다면, 다른 샘플링 포인트의 처리가 모든 조건 폐기 시험을 통과한 적어도 하나의 샘플링 포인트의 결과로서 중지될 수 있는지를 결정하는 단계; 또는
    적어도 하나의 샘플링 포인트가 받아야 될 모든 조건 폐기 시험을 실패하고, 그래픽 처리 파이프라인 내에 있는 다른 샘플링 포인트의 처리가 초기 발췌 시험을 통과한 적어도 하나의 샘플링 포인트의 결과로서 감속되어야 한다고 결정되었다면, 다른 샘플링 포인트의 처리가 조건 폐기 시험을 실패한 적어도 하나의 샘플링 포인트의 결과로서 재개되어야 하는지를 결정하는 단계를 더 포함하는, 그래픽 처리 파이프라인의 작동 방법.
  8. 처리될 그래픽 프래그먼트를 발생시키도록 입력 프리미티브를 레스터화하는 레스터화기와, 출력 프래그먼트 데이터를 발생시키도록 상기 레스터화기에 의해 발생되는 프래그먼트를 처리하는 렌더러를 포함하는 복수 개의 처리 스테이지를 포함하고, 각 그래픽 프래그먼트는 관련된 하나 이상의 샘플링 포인트를 갖는, 그래픽 처리 파이프라인을 작동시키는 방법으로서, 상기 방법은,
    레스터화기에 의해 발생된 프래그먼트와 관련된 적어도 하나의 샘플링 포인트에 관하여 조건 폐기 시험을 수행하는 단계; 및
    적어도 하나의 샘플링 포인트가 조건 폐기 시험을 통과하면, 파이프라인 내에서 전방으로 프래그먼트를 전송하고, 그래픽 처리 파이프라인 내에 있는 다른 샘플링 포인트의 처리가 조건 폐기 시험을 통과한 적어도 하나의 샘플링 포인트의 결과로서 중지될 수 있는지를 결정하는 단계를 포함하는, 그래픽 처리 파이프라인의 작동 방법.
  9. 그래픽 처리 파이프라인으로서,
    처리될 그래픽 프래그먼트를 발생시키도록 입력 프리미티브를 레스터화하는 레스터화기와, 출력 프래그먼트 데이터를 발생시키도록 상기 레스터화기에 의해 발생되는 프래그먼트를 처리하는 렌더러와, 프래그먼트가 처리를 위해 렌더러로 전송되기 전에 레스터화기에 의해 발생된 프래그먼트와 관련된 샘플링 포인트에 관하여 초기 발췌 시험을 수행하는 초기 발췌 시험 스테이지를 포함하는 복수 개의 처리 스테이지를 포함하고, 각 그래픽 프래그먼트는 관련된 하나 이상의 샘플링 포인트를 가지며, 그래픽 처리 파이프라인은,
    초기 발췌 시험을 통과한 레스터화기에 의해 발생된 프래그먼트와 관련된 적어도 하나의 샘플링 포인트에 응답하여, 프래그먼트를 처리를 위해 전방으로 전송하고, 그래픽 처리 파이프라인 내에 있는 다른 샘플링 포인트의 처리가 감속되어야 하는지를 결정하도록 구성되는, 그래픽 처리 파이프라인.
  10. 제9항에 있어서,
    이미 그래픽 처리 파이프라인 내에서 다른 샘플링 포인트의 처리가 감속되어 하는지의 여부의 결정은 초기 발췌 시험을 통과한 샘플링 포인트가 또한 특정한 특성 또는 특성들을 갖는지의 여부를 기초로 하는, 그래픽 처리 파이프라인.
  11. 제10항에 있어서,
    상기 특정한 특성은 그 처리의 일부로서 하나 이상의 조건 폐기 시험을 받는 샘플링 포인트를 포함하는, 그래픽 처리 파이프라인.
  12. 제9항 내지 제11항 중 어느 한 항에 있어서,
    파이프라인 내에 있는 다른 샘플링 포인트의 처리의 감속은 파이프라인 내의 샘플링 포인트의 처리를 우선순위를 정하지 않는 것을 포함하는, 그래픽 처리 파이프라인.
  13. 제9항 내지 제11항 중 어느 한 항에 있어서,
    그래픽 처리 파이프라인은, 파이프라인 스테이지를 현재 차지하고 있는 샘플링 포인트 및/또는 프래그먼트의 위치를 초기 발췌 시험을 통과한 적어도 하나의 샘플링 포인트의 위치와 비교함으로써, 그래픽 처리 파이프라인 내에 있는 다른 샘플링 포인트의 처리가 초기 발췌 시험을 통과한 적어도 하나의 샘플링 포인트에 응답하여 감속될 수 있는지를 결정하도록 구성되는, 그래픽 처리 파이프라인.
  14. 제9항 내지 제11항 중 어느 한 항에 있어서,
    그래픽 처리 파이프라인은, 그 처리를 감속하기 전에 다른 샘플링 포인트가 여전히 정상적인 우선 순위로 처리되어야 하는지를 알도록 다른 샘플링 포인트의 다른 특성을 점검하도록 구성되는, 그래픽 처리 파이프라인.
  15. 제9항 내지 제11항 중 어느 한 항에 있어서,
    그래픽 처리 파이프라인은,
    그래픽 처리 파이프라인 내에 있는 다른 샘플링 포인트의 처리가 감속되어야 하는지의 여부에 관한 결정을 미리 트리거한 레스터화기에 의해 발생되는 프래그먼트와 관련된 적어도 하나의 샘플링 포인트를 위한 하나 이상의 조건 폐기 시험을 수행하고;
    적어도 하나의 샘플링 포인트가 받아야 될 모든 조건 폐기 시험을 통과하고, 그래픽 처리 파이프라인 내에 있는 다른 샘플링 포인트의 처리가 초기 발췌 시험을 통과한 적어도 하나의 샘플링 포인트의 결과로서 감속되어야 한다고 결정되었다면, 다른 샘플링 포인트의 처리가 모든 조건 폐기 시험을 통과한 적어도 하나의 샘플링 포인트의 결과로서 중지될 수 있는지를 결정하거나; 또는
    적어도 하나의 샘플링 포인트가 받아야 될 조건 폐기 시험을 실패하고, 그래픽 처리 파이프라인 내에 있는 다른 샘플링 포인트의 처리가 초기 발췌 시험을 통과한 적어도 하나의 샘플링 포인트의 결과로서 감속되어야 한다고 결정되었다면, 다른 샘플링 포인트의 처리가 조건 폐기 시험을 실패한 적어도 하나의 샘플링 포인트의 결과로서 재개되어야 하는지를 결정하도록 구성되는, 그래픽 처리 파이프라인.
  16. 그래픽 처리 파이프라인으로서,
    처리될 그래픽 프래그먼트를 발생시키도록 입력 프리미티브를 레스터화하는 레스터화기와, 출력 프래그먼트 데이터를 발생시키도록 상기 레스터화기에 의해 발생되는 프래그먼트를 처리하는 렌더러를 포함하는 복수 개의 처리 스테이지를 포함하고, 각 그래픽 프래그먼트는 관련된 하나 이상의 샘플링 포인트를 가지며,
    레스터화기에 의해 발생된 프래그먼트와 관련된 샘플링 포인트에 관하여 조건 폐기 시험이 수행될 수 있고,
    상기 그래픽 처리 파이프라인은,
    조건 폐기 시험을 통과한 레스터화기에 의해 발생된 프래그먼트와 관련된 적어도 하나의 샘플링 포인트에 응답하여, 파이프라인에서 프래그먼트를 전방으로 전송하고, 그래픽 처리 파이프라인 내에 있는 다른 샘플링 포인트의 처리가 조건 폐기 시험을 통과한 적어도 하나의 샘플링 포인트의 결과로서 중지될 수 있는지를 결정하도록 구성되는, 그래픽 처리 파이프라인.
  17. 프로그램이 데이터 처리 수단에서 실행될 때에 제1항 내지 제3항 중 어느 한 항에 따른 방법을 수행하도록 컴퓨터 소프트웨어를 포함하는 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능한 저장 매체.
KR1020130157253A 2012-12-17 2013-12-17 그래픽 처리 시스템에서 히든 표면의 제거 KR102057166B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US13/716,952 US9153070B2 (en) 2012-12-17 2012-12-17 Hidden surface removal in graphics processing systems
US13/716,952 2012-12-17
US13/909,561 US9214006B2 (en) 2013-06-04 2013-06-04 Hidden surface removal in graphics processing systems
US13/909,561 2013-06-04

Publications (2)

Publication Number Publication Date
KR20140078569A KR20140078569A (ko) 2014-06-25
KR102057166B1 true KR102057166B1 (ko) 2019-12-18

Family

ID=50031027

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020130157253A KR102057166B1 (ko) 2012-12-17 2013-12-17 그래픽 처리 시스템에서 히든 표면의 제거
KR1020130157252A KR102057163B1 (ko) 2012-12-17 2013-12-17 그래픽 처리 시스템에서 히든 표면의 제거

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020130157252A KR102057163B1 (ko) 2012-12-17 2013-12-17 그래픽 처리 시스템에서 히든 표면의 제거

Country Status (3)

Country Link
KR (2) KR102057166B1 (ko)
CN (2) CN103871020B (ko)
GB (2) GB2511176B (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9292898B2 (en) * 2013-03-15 2016-03-22 Intel Corporation Conditional end of thread mechanism
US9846959B2 (en) * 2014-07-03 2017-12-19 Mediatek Inc. Apparatus and method for controlling early depth processing and post depth processing
GB2559042B (en) * 2015-12-21 2019-06-05 Imagination Tech Ltd Allocation of tiles to processing engines in a graphics processing system
US10417815B2 (en) * 2017-01-27 2019-09-17 Advanced Micro Devices, Inc. Out of order pixel shader exports
GB2571979B8 (en) * 2018-03-15 2023-07-12 Advanced Risc Mach Ltd Graphics processing
CN112116519B (zh) 2019-06-19 2022-12-27 畅想科技有限公司 图形处理系统中的粗略深度测试
KR200491938Y1 (ko) 2020-05-06 2020-07-03 조현근 기능성 멀티 스카프
GB2608094A (en) * 2021-01-27 2022-12-28 Advanced Risc Mach Ltd Graphics processing
CN116894906A (zh) * 2023-09-11 2023-10-17 瀚博半导体(上海)有限公司 图形渲染方法和处理器硬件架构

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070268291A1 (en) 2006-05-22 2007-11-22 Sony Computer Entertainment Inc. Occlusion Culling Method and Rendering Processing Apparatus
US20080117221A1 (en) 2004-05-14 2008-05-22 Hutchins Edward A Early kill removal graphics processing system and method

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6646639B1 (en) * 1998-07-22 2003-11-11 Nvidia Corporation Modified method and apparatus for improved occlusion culling in graphics systems
WO2000011607A1 (en) * 1998-08-20 2000-03-02 Apple Computer, Inc. Deferred shading graphics pipeline processor
US7268779B2 (en) * 2002-12-24 2007-09-11 Intel Corporation Z-buffering techniques for graphics rendering
US8072451B2 (en) * 2004-12-29 2011-12-06 Intel Corporation Efficient Z testing
US8207972B2 (en) * 2006-12-22 2012-06-26 Qualcomm Incorporated Quick pixel rendering processing
GB0801812D0 (en) * 2008-01-31 2008-03-05 Arm Noway As Methods of and apparatus for processing computer graphics
GB201004673D0 (en) * 2010-03-19 2010-05-05 Imagination Tech Ltd Processing of 3D computer graphics data on multiple shading engines
GB201116438D0 (en) * 2011-09-22 2011-11-02 Advanced Risc Mach Ltd Occlusion queries in graphics processing

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080117221A1 (en) 2004-05-14 2008-05-22 Hutchins Edward A Early kill removal graphics processing system and method
US20070268291A1 (en) 2006-05-22 2007-11-22 Sony Computer Entertainment Inc. Occlusion Culling Method and Rendering Processing Apparatus

Also Published As

Publication number Publication date
CN103871020A (zh) 2014-06-18
GB201322284D0 (en) 2014-01-29
KR20140078568A (ko) 2014-06-25
GB2511177B (en) 2015-04-15
CN103871095B (zh) 2018-07-17
GB201322278D0 (en) 2014-01-29
CN103871020B (zh) 2018-10-16
GB2511176B (en) 2015-04-15
GB2511177A (en) 2014-08-27
GB2511176A (en) 2014-08-27
KR102057163B1 (ko) 2019-12-18
CN103871095A (zh) 2014-06-18
KR20140078569A (ko) 2014-06-25

Similar Documents

Publication Publication Date Title
KR102057166B1 (ko) 그래픽 처리 시스템에서 히든 표면의 제거
US9214006B2 (en) Hidden surface removal in graphics processing systems
US9153070B2 (en) Hidden surface removal in graphics processing systems
US10311016B2 (en) Hidden surface removal in graphics processing systems
US10013790B2 (en) Executing conditional tasks in a graphics processing pipeline
US9552665B2 (en) Hidden surface removal in graphics processing systems
US8698828B2 (en) Graphics processing systems
US8698820B2 (en) Graphics processing systems
US20160005140A1 (en) Graphics processing
EP3281177B1 (en) Graphics processing systems
US20140354670A1 (en) Rasterisation in graphics processing systems
US11790479B2 (en) Primitive assembly and vertex shading of vertex attributes in graphics processing systems
US11983792B2 (en) Fragment dependency management for variable rate shading
US20240169464A1 (en) Graphics processing systems
EP3794561A1 (en) Primitive z-sorting
US20240169465A1 (en) Graphics processing systems
GB2475375A (en) Dynamic Graphics Rendering Process

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant