KR20170026192A - 그래픽 처리 시스템 - Google Patents

그래픽 처리 시스템 Download PDF

Info

Publication number
KR20170026192A
KR20170026192A KR1020160107436A KR20160107436A KR20170026192A KR 20170026192 A KR20170026192 A KR 20170026192A KR 1020160107436 A KR1020160107436 A KR 1020160107436A KR 20160107436 A KR20160107436 A KR 20160107436A KR 20170026192 A KR20170026192 A KR 20170026192A
Authority
KR
South Korea
Prior art keywords
primitive
facing direction
processing
stage
primitives
Prior art date
Application number
KR1020160107436A
Other languages
English (en)
Other versions
KR102674511B1 (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
Application filed by 에이알엠 리미티드 filed Critical 에이알엠 리미티드
Publication of KR20170026192A publication Critical patent/KR20170026192A/ko
Application granted granted Critical
Publication of KR102674511B1 publication Critical patent/KR102674511B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/187Segmentation; Edge detection involving region growing; involving region merging; involving connected component labelling

Landscapes

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

Abstract

타일 기반의 그래픽 처리 파이프라인은 타일링 스테이지(23) 이전에 후방 대면 삼각형들을 도태시키도록 동작가능한 후방 대면 결정 및 도태 유닛(22)을 구비한다. 후방 대면 결정 및 도태 유닛(22)은 고려되고 있는 삼각형의 사이즈를 추정하는 삼각형 사이즈 추정기(31)를 구비한다. 삼각형의 사이즈가 선택된 사이즈보다 작으면, 고정 소수점 산술연산(320을 사용하여 삼각형의 면적이 계산되고, 이 면적 계산의 결과를 후방 대면 도태부(28)가 사용하여 삼각형을 도태시킬 것인지 아닌지를 판정한다. 한편, 프리미티브가 선택된 사이즈보다 큰 것으로 사이즈 추정기(31)가 판정한 경우에는, 삼각형이 고정 소수점 면적 계산(32) 및 후방 대면 도태 유닛(28)을 우회하고(33) 그 대신에 곧바로 타일러(23)로 전달된다. 큰 삼각형들이 고정 소수점 면적 계산기(32) 및 후방 대면 도태 유닛(28)을 우회(33)하는 것 대신에, 이들 삼각형들은 그것들의 면적을 예를 들어 부동 소수점 산술연산을 사용하여 계산하게 한 후 후방 대면 도태 연산을 겪게 할 수도 있다.

Description

그래픽 처리 시스템{GRAPHICS PROCESSING SYSTEMS}
본 발명은, 그래픽 처리 시스템에 관한 것으로, 특히 그래픽 처리 파이프라인에서, 예를 들어 래스터화 이전에, 프리미티브들을 도태시키는(culling) 메카니즘에 관한 것이다.
그래픽 처리는 보통 먼저 표시할 장면(예를 들면, 3D 모델)을 다수의 유사한 기본 성분들, 즉 "프리미티브들"로 분할하여 행해지며, 그후 이들 프리미티브들은 원하는 그래픽 처리 연산을 겪게 된다. 그래픽 "프리미티브들"은 보통 삼각형 등의 단순한 다각형의 형태를 갖는다.
표시할 프레임 등의 출력을 위한 프리미티브들은 보통, 그래픽 처리를 요구하는 어플리케이션(예를 들면, 게임)으로부터 수신된 그래픽 묘화 명령들(요구들)을 사용하여, 그래픽 처리 시스템에 대한 어플리케이션 프로그램 인터페이스에 의해 발생된다.
각각의 프리미티브는 일반적으로 정점들의 세트로 정의되고 표현된다. 프리미티브에 대한 각각의 정점은 보통 그것과 관련된 "속성들"의 세트, 즉 정점에 대한 데이터 값들의 세트를 갖는다. 이들 속성들은, 일반적으로, 위치 데이터와, 예를 들어, 해당 정점에 대한 칼라, 빛, 노멀(normal), 텍스처 좌표 등을 정의하는 기타의 비위치 데이터(배링(varyings))를 포함한다.
그래픽 처리 시스템에 의해 발생될 일정한 출력, 예를 들어 표시할 프레임에 대해, 보통 해당 출력에 대해 정의된 정점들의 세트가 존재하게 된다. 그후, 출력을 위해 처리할 프리미티브들은 생성되고 있는 그래픽 처리 출력에 대한 정점들의 세트 내부의 일정한 정점들을 포함하는 것으로 표시된다. 일반적으로, 전체 출력, 예를 들어 생성할 프레임은, "묘화 호출(draw calls)"로 불리는 더 작은 처리 유닛들로 분할된다. 각각의 묘화 호출은 그것에 대해 정의된 각각의 세트의 정점들과 이들 정점들을 사용하는 프리미티브들의 세트를 갖는다.
프리미티브들과 그것들의 정점들이 발생되고 정의되면, 표시용 프레임 등의 원하는 그래픽 처리 출력(렌더 타겟)을 발생하기 위해, 이것들은 그래픽 처리 시스템에 의해 처리될 수 있다. 이것은 기본적으로 (처리되고 잇는 프리미티브들의 정점들과 관련된 정점 속성들을 이용하여) 프리미티브들을 래스터화 및 렌더링하여 그래픽 처리 출력을 발생하는 과정을 포함한다.
일부의 그래픽 처리 유닛들은, 2차원 그래픽 처리 출력 또는 타겟(즉, 표시할 출력 프레임 등의 렌더링 처리의 출력)이 보통 "타일들"로 불리는 복수의 더 작은 면적의 서브 영역들로 렌더링되는 "타일 기반"의 그래픽 처리 파이프라인으로서 동작한다. 타일들 각각의 별개로(일반적으로 차례로) 렌더링된다. 그후, 렌더링된 타이들을 결합하여 전체 렌더링 출력(예를 들어, 표시할 프레임)을 제공한다. 이와 같은 구성에서는, 렌더 타겟(출력)은 보통 (면적에 의해) 규칙적인 사이즈를 갖고 형상을 갖는 렌더링 타일들(이것들은 보통 예를 들어 정사각형 또는 직사각형이다)로 분할되지만, 이것이 필수적인 것은 아니다.
"타일링(tiling)" 및 "타일 기반"의 렌더링에 대해 널리 사용되는 다른 용어로는 "청킹(chunking)"(렌더링 타일들은 "청크"로 불린다) 및 "버킷" 렌더링을 들 수 있다. 이하에서는 간략을 위해 "타일" 및 "타일링"이라는 용어를 사용하지만, 이들 용어는 모든 대안적인 동등한 용어 및 기술을 포괄하는 것이 의도된다는 점에 주목하기 바란다.
타일 기반의 그래픽 처리에서는, (예를 들어, 현재 처리되고 있는 묘화 호출을 구성하는) 일정한 출력에 대해 처리할 프리미티브들이, 처리 목적을 위해 그래픽 처리 출력(렌더 타겟)이 분할된 타일들에 대해, 각각의 타일에 대해 어떤 프리미티브들을 처리해야 하는지를 표시하는 각각의 프리미티브 목록들(타일 목록들)로 소트(sort)된다. 이와 관련하여, 각각의 타일에 대해 개별적으로 프리미티브 목록이 존재할 수도 있고, 또는 복수의 타일들을 포괄하는 프리미티브 목록들이 더 제공되거나 그 대신에 제공되어도 된다. 일정한 프리미티브가 한 개보다 많은 수의 프리미티브 목록에 포함되어도 되며, 이때에는 예를 들어 프리미티브가 한 개보다 많은 수의 타일에 속한다. 그래픽 프로세서 및 처리 파이프라인은 보통 프리미티브들을 이와 같은 목적을 위한 각각의 프리미티브 목록들로 소트하는 적절한 타일러(tiler)(타일링 스테이지)를 포함한다.
그후, 프리미티브 목록들을 이용하여, 그래픽 처리 출력의 특정한 타일을 처리시에 어떤 프리미티브들을 래스터화 및 렌더링해야 하는지를 판정한다.
프리미티브 소팅(타일링) 연산은 일반적으로, 렌더 출력에 대한 프리미티브들이 "어셈블(assemble)"된 후에(즉, 렌더 출력에 대한 정점들 및 이에 대응하는 정점 연결 정보를 사용하여 렌더 출력에 대한 정점들의 세트를 필요한 세트의 프리미티브들로 어셈블한 후에), 그러나 프리미티브들의 래스터화 이전에, 행해진다.
따라서, 타일링 연산시에 또는 그 이전에 추가적인 처리로부터 프리미티브들을 도태(폐기)함으로써, 타일 목록들에 소트되는(이에 따라 그후에 처리(적어도 래스터화)되는) 프리미티브들의 수를 줄이도록 시도하는 것이 유리하다.
이와 같은 프리미티브 도태의 일례는 장면 절두체 도태(view frustum culling)이다. 이 경우에는, 어떤 프리미티브가 발생되고 있는 출력에 대한 장면 절두체 외부에 완전히 속하는지 여부를 판정하고, 그런 경우에는, 이 프리미티브를 폐기한다(그리고 타일러에 의해 타일 목록들에 소트하지 않는다). 따라서, 이것은 장면 절두체 외부에 완전히 속하는 프리미티브들이 타일러에 의해 타일 목록들에 처리되지(과 그래픽 처리 파이프라인에서 추가적으로 처리되지) 않도록 한다.
본 출원인은, 특히 타일 기반의 그래픽 처리 유닛의 경우에, 개량된 프리미티브 도태 연산의 여지가 남아 있다고 생각된다.
본 발명의 제 1 면에 따르면, 그래픽 처리 파이프라인에서 그래픽 프리미티브를 처리하는 방법으로서,
상기 프리미티브의 속성이 특정한 조건을 만족하는지 여부를 판정하는 단계와,
상기 프리미티브의 속성이 특정한 조건을 만족할 때,
특정한 처리 연산 또는 연산들을 이용하여 상기 프리미티브의 대면 방향(facing direction)을 결정하는 단계와,
상기 프리미티브의 결정된 대면 방향을 이용하여, 추가적인 처리로부터 상기 프리미티브를 도태시킬 것인지 여부를 판정하는 단계와,
상기 대면 방향을 이용하여 추가적인 처리로부터 상기 프리미티브를 도태시킬 것으로 판정한 경우에, 추가적인 처리로부터 상기 프리미티브를 도태시키는 단계를 포함하는 그래픽 프리미티브 처리방법이 제공된다.
본 발명의 제 2 면에 따르면,
프리미티브의 속성이 특정한 조건을 만족하는지 여부를 판정하도록 동작가능한 테스팅(testing) 스테이지와,
특정한 처리 연산 또는 연산들을 이용하여 상기 프리미티브의 대면 방향을 결정하도록 동작가능한 대면 방향 결정 스테이지와,
상기 프리미티브의 결정된 대면 방향을 이용하여, 추가적인 처리로부터 상기 프리미티브를 도태시킬 것인지 여부를 판정하고, 상기 대면 방향을 이용하여 추가적인 처리로부터 상기 프리미티브를 도태시킬 것으로 판정한 경우에, 추가적인 처리로부터 상기 프리미티브를 도태시키도록 동작가능한 대면 방향 도태 스테이지를 구비하고,
상기 테스팅 스테이지는, 상기 프리미티브의 속성이 상기 특정한 조건을 만족한다는 판정에 응답하여 상기 특정한 처리 연산 또는 연산들을 이용하여 상기 프리미티브의 상기 대면 방향을 상기 대면 방향 결정 스테이지가 결정하게 하도록 동작가능한, 그래픽 처리 파이프라인이 제공된다.
본 발명은 처리할 그래픽 프리미티브의 대면 방향을 이용하여 추가적인 처리로부터 프리미티브를 도태시킬 것인지 여부를 결정하는 구성에 관한 것이다. 처리할 그래픽 프리미티브들은 전방 대면이거나 후방 대면이다(즉, 시점을 향하거나 시점으로부터 멀어진다), 이들 대면 방향에 근거하여 프리미티브들이 도태된다(폐기된다), 일반적으로, "후방" 대면 프리미티브들은 폐기되지만, 전방 대면 프리미티브들도 필요에 따라 더 폐기되거나 그 대신에 폐기될 수도 있다.
이하에서 더 설명하는 것과 같이, 본 출원인은, 예를 들어, 타일링 연산 이전에 프리미티브들을 도태시키기 위해 타일 기반의 그래픽 처리 파이프라인에서 타일링 처리를 하기 전에, 프리미티브들이 대면 방향에 근거하여 프리미티브들을 처리로부터 도태시키는 것을 유리하게 이용할 수 있다는 것을 인식하였다. 따라서, 이것은 타일러에 의해 처리될 필요가 있는(그리고 그후에 적어도 래스터화할 필요가 있는) 프리미티브들의 수를 용이하게 줄일 수 있도록 한다.
본 출원인은, 프리미티브들의 속성에 근거한, 예를 들면 바람직하게는, 프리미티브들의 사이즈에 근거한 대면 방향 결정을 위해 프리미티브들을 다르게 취급하는 것이 유리할 것이라는 것을 더 인식하였다. 이하에서 상세히 설명하는 것과 같이, 본 출원인은, 프리미티브들의 사이즈 등의 특성에 근거한 대면 방향 결정을 위해 프리미티브들을 다른 그룹들로 분류할 수 있으며, 더구나, 각각의 그룹의 프리미티브들에 대해 대면 방향 결정을 다르게 행함으로써, 처리할 프리미티브들의 대면 방향 결정을 위한 더욱 효율적인 시스템이 제공될 수 있다는 것을 인식하였다. 따라서, 이와 같은 구성은, 프리미티브들의 대면 방향에 근거하여 프리미티브들의 효율적인 도태를 허용하면서도, 예를 들어, 처리할 프리미티브에 대해 대면 방향 결정을 행할 때, 소비전력 면에서 이점을 갖는다.
따라서, 본 발명에서는, 특정한 속성(예를 들면, 프리미티브들의 사이즈)이 특정한 조건을 만족하는 프리미티브들이 특정한(예를 들면, 선택된, 바람직하게는 사전에 결정된) 처리 연산 또는 연산들을 사용하여 결정된 대면 방향을 갖는다.
특정한 처리 연산 또는 연산들을 이용하여 프리미티브의 대면 방향을 결정할 것인지 여부를 판정하는데 사용되는 프리미티브의 속성은, 대면 방향 결정을 행하기 위해 프리미티브들을 분류하는데 사용될 수 있는 프리미티브의 임의의 적절한 원하는 속성이 될 수 있다.
특히 바람직한 실시예에서, 프리미티브의 속성은 프리미티브의 사이즈이다.
바람직하게는, 프리미티브의 속성의 일부 형태의 표시 또는 표현, 예를 들면 사이즈를 결정한 후, 이것을 사용하여 프리미티브의 속성이 특정한 조건을 만족하는지 여부를 판정한다.
바람직한 실시예에서, 속성이 특정한 조건을 만족하는지 여부를 판정하기 전에, 프리미티브의 사이즈 등의 적절한 속성이 먼저 추정된다. 따라서, 특히 바람직한 실시예에서, 본 발명의 방법은, 프리미티브의 적절한 속성(예를 들면, 바람직하게는 사이즈)의 추정값 및/또는 표시값을 결정하는 단계와, 그후 프리미티브의 추정된 속성(예를 들면, 사이즈)이 특정한 조건을 만족하는지 판정하는 단계를 포함한다(그리고, 파이프라인은 이것을 행하도록 동작가능한 스테이지(처리회로)를 구비한다).
프리미티브의 속성은 임의의 적절한 방법으로 결정 및 추정될 수 있다.
속성이 프리미티브의 사이즈인 경우에는, 프리미티브의 면적을 그것의 사이즈의 추정값 및 표시값으로서 이용할 수 있지만(일 실시예에서는 이것을 행한다), 특히 바람직한 실시예에서, 프리미티브의 사이즈는 특정한 방향 또는 방향으로의 그것의 크기(extent)에 관해 결정된다. 가장 바람직하게는, 프리미티브의 유효 "직경"의 측정값이 결정된다.
이것은, 예를 들면, 특정한 방향 또는 방향들에서의(예를 들면, 좌표축들 중에서 한 개 또는 양측을 따라) 프리미티브의 크기를 추정하거나, 및/또는 (프리미티브의 가장 긴 변 등의) 프리미티브의 변 또는 변들의 크기를 고려하여 행해질 수도 있다. 따라서, 예를 들면, (예를 들어, x 및 y 방향으로의) 프리미티브의 길이 및 폭의 최대값(예를 들면, 최대의 수평 및/또는 수직 크기)을 프리미티브의 사이즈의 표시값으로 사용하고 이 사이즈를 추정하는데 사용할 수 있다. 이에 덧붙여 또는 이와 달리, 일정한 방향(예를 들면, x 및 y 축들을 따라) 프리미티브의 크기들의 합, 및/또는 프리미티브의 변들의 길이들의 합을 그것의 사이즈의 추정값으로 사용할 수도 있다.
일정한 방향 또는 방향에서의 프리미티브의 크기를 이용하는 것은 매우 길고 얇은 프리미티브들(따라서 이것은 한가지 특정한 방향으로만 크다)이 더욱 용이하게 식별될 수 있도록 한다.
바람직하게는, 프리미티브에 대한 정점들의 좌표들을 이용하여 프리미티브의 사이즈(예를 들면, 크기)를 추정한다.
이 경우에, 프리미티브에 대한 정점들의 좌표들을 직접 프리미티브의 사이즈의 표시값으로서(사이즈를 추정하기 위해) 이용할 수도 있다. 예를 들면, 좌표의 대소(magnitude)를 단단히 프리미티브의 사이즈의 표시값(사이즈를 추정하기 위해) 이용할 수도 있다. 이것은, 예를 들면, 원하는 렌더 출력 면적(화면) 외부로 뻗는 "거대한" 프리미티브들을 검출하는데 사용될 수도 있다. 예를 들면, 프리미티브의 정점들의 한 개 이상 또는 전체의 좌표들이 발생되고 있는 렌더 출력의 영역의 모서리에 또는 모서리 근처에 또는 모서리 외부에 속하는지(예를 들어, 렌더 출력을 위한 가드 영역(guard region)의 모서리 내부에 또는 모서리에, 또는 가드 영역의 외부에 속하는지) 결정할 수도 있다.
이와 달리 또는 이에 덧붙여, 예를 들어, 프리미티브에 대한 정점 좌표들의 프리미티브에 대해 초기의 처리를 행하고, 그후 이 처리의 결과를 프리미티브의 사이즈의 표시값으로서 사용함으로써, 프리미티브 사이즈(예를 들면, 크기)가 추정될 수 있으며, 바람직한 실시예에서는, 추정된다.
이와 같은 바람직한 실시예에서는, 프리미티브의 정점들의 각각의 좌표들 사이의 차이(들)를 이용하여 프리미티브의 사이즈를 추정하고 이 사이즈의 표시값으로 이용한다. 따라서, 이것은 좌표축들(x 및 y)의 각각을 따른 프리미티브의 크기의 측정값을 제공하게 된다. 그후, 프리미티브에 대한 최대의 차이값(즉, x 또는 y에서의 최대 크기)을, 예를 들어, 프리미티브의 사이즈를 표시하는 것으로 사용할 수도 있다.
예를 들어, 대면 방향 결정 연산이 프리미티브에 대한 각각의 정점들의 좌표들 사이의 차이를 결정하는 단계를 포함하는 경우에는(이것은 대면 방향 결정 연산이 프리미티브의 정점들의 좌표들을 사용하여 교차 곱(cross product)을 결정하는 단계를 포함하는 경우이다), 이들 비교 또는 차이 결정의 결과를 프리미티브가 특정한 조건을 만족하는지 아닌지를 판정하기 위한 프리미티브의 사이즈의 표시로서 사용할 수도 있다.
따라서, 대면 방향 결정 그 자체가 프리미티브의 사이즈의 추정값을 발생하는 경우에는, 이 사이즈 추정값을 사용하여 (대면 방향 결정 처리의 나머지 부분에 대해) 대면 방향 결정을 위해 프리미티브를 분류하는 방법을 결정할 수도 있다.
프리미티브의 속성, 예를 들면, 사이즈가 고려되는 특정한 조건은, 프리미티브의 대면 방향을 결정하는데 사용될 처리 연산의 선택이 근거를 둘 수 있는 속성에 대한 임의의 적절한 원하는 조건이 될 수 있다.
이 조건은 바람직하게는 특정한 속성이 특정한 (임계)값 또는 값들 이상인지 여부이다. 예를 들어, 프리미티브의 속성이 프리미티브의 (추정된) 사이즈인 경우에는, 이 조건은 바람직하게는 프리미티브의 사이즈가 특정한 사이즈 측정값보다 작은지 또는 이하인지(또는 특정한 사이즈 측정값보다 큰지 또는 이상인지) 여부이다. 가장 바람직하게는, 프리미티브의 (추정된) 사이즈가 특정한 임계 사이즈보다 작은 경우에는, 프리미티브의 대면 방향의 결정은 특정한 선택된 처리 연산 또는 연산들을 이용하여 행해진다. 따라서, 가장 바람직하게는, 프리미티브가 프리미티브의 대면 방향에 대해 결정하기 위해 만족해야 하는 속성을 특정한 처리 연산 또는 연산들을 사용하여 결정하도록 하기 위한 조건은, 프리미티브의 "사이즈"가 임계 사이즈 측정값보다 작거나 이하인지 여부이다.
따라서, 바람직한 일 실시예에서, 프리미티브의 정점들의 한 개 이상 또는 전체가 발생되고 있는 렌더 출력의 모서리에 또는 그 근처에(예를 들어 바람직하게는 렌더 출력의 모서리에 또는 가드 영역 내부에) 놓이는 경우에, 프리미티브가 특정한 처리 연산 또는 연산들을 사용하여 프리미티브의 대면 방향을 결정하기 이한 조건을 만족하는 것으로 생각된다. 또 다른 바람직한 실시예에서는, 프리미티브의 각각의 정점들의 좌표들 사이의 최대 차이값이 특정한, 바람직하게는 선택된, 바람직하게는 사전에 결정된 임계값 이하인 경우에, 프리미티브가 특정한 처리 연산 또는 연산들을 사용하여 행해진 프리미티브의 대면 방향의 결정을 위한 조건을 만족하는 것으로 판정된다.
프리미티브의 대면 방향은 임의의 적절한 방식으로 결정될 수 있다. 바람직하게는, (프리미티브의 면적의 부호는 이 프리미티브가 전방 대면(front-facing)인지 후방 대면(back-facing)인지 표시할 수 있기 때문에(일반적으로 "음"의 면적 값은 프리미티브가 후방 대면이라는 것을 표시한다)) 프리미티브의 면적의 부호를 판정함으로써 대면 방향이 결정된다. 물론, 필요한 경우에는, 다른 구성도 가능하다.
프리미티브의 면적의 부호는 임의의 적절한 방식으로 판정될 수 있다.
바람직한 실시예에서, 프리미티브의 정점들의 x/y 좌표들의 교차 곱의 부호를 이용하여 면적의 부호와 이에 따라서 프리미티브의 대면 방향을 결정한다. 따라서, 특히 바람직한 실시예에서, 프리미티브가 x 및 y 좌표들 각각을 갖는 3개의 정점들 v0, v1 및 v2를 갖는 삼각형인 경우에는, 삼각형의 면적(따라서, 삼각형의 대면 방향을 나타내는 면적의 부호)은 다음과 같이 결정된다:
면적 = ((v1.x-v0.x)(v2.y-v0.y)-(v1.y-v0.y)(v2.x-v0.x)).
이와 같은 수식은 삼각형의 2개의 모서리들로 이루어진 평행사변형의 면적을 제공한다(따라서 삼각형의 면적의 2개인 값을 산출하게 된다). 그러나, 대면 방향 결정을 위해 중요한 것은 면적의 부호(또는 면적이 정확히 제로값이거나)이므로, 이 수식이 삼각형의 정확한 면적을 계산하지 못한다는 사실은 대면 방향 결정을 위해 무시할 수 있다(또는 필요한 경우에는 수월하게 수정할 수도 있다).
이와 같은 방식으로 삼각형의 면적의 부호를 판정하는 것의 이점은, 수식들 (v1.x-v0.x) 등이 (정점 위치들 사이의 차이를 제공하므로) 계산으로부터 정점들의 절대 위치를 제거하므로, 삼각형들의 정점 좌표들 그 자체가 매우 큰 수이더라도, 결과적으로 얻어지는 차이값들은 삼각형의 실제 사이즈에만 의존하므로, 실제 좌표 값들 그 자체가 더 작은 수가 될 수 없더라도, 이 결과적으로 얻어지는 차이값들은 더 작은 수로 표현할 수 있다는 것이다. 또한, 전술한 것과 같이, 이들 차이값들은 대면 방향 결정 및 도태 연산을 제어하기 위한 프리미티브의 사이즈의 표시값으로서 사용될 수 있다.
이들 수식은, 예를 들어, 타일링 연산을 행할 때와 프리미티브의 모서리들을 표시하는 직선 방정식(line equation)을 발생할 때 바운딩 박스(bounding box)들을 생성하는데 사용된 값들에도 대응하므로, 필요한 경우에는, 그래픽 처리 파이프라인 연산의 나머지 단계들 및 스테이지들과 공유될 수 있으며 이들 나머지 단계들 및 스테이지들에 대해 재사용될 수 있다.
특히 바람직한 실시예에서는, 프리미티브가 후방 대면인지 여부가 판정된다. 따라서, 바람직한 실시예에서는, 프리미티브가 후방 대면인 것으로 판정되었을 때, 추가적인 처리로부터 이 프리미티브가 도태된다. 그러나, 필요한 경우에는, 전방 대면 프리미티브들을 도태시키는 것(또는 전방 및 후방 대면 프리미티브들 모두를 도태시키거나, 전방 대면 프리미티브와 후방 대면 프리미티브 모두를 도태시키지 않는 것)도 가능할 것이다.
프리미티브의 속성이 특정한 조건을 만족할 때 프리미티브의 대면 방향을 결정하는데 사용되는 특정한 처리 연산은 프리미티브의 대면 방향을 결정하기 위한 임의의 적절한 원하는 처리 연산이 될 수 있다. 특히 바람직한 실시예에서는, 이것은 더욱 효율적으로 및/또는 전력을 덜 사용하여 프리미티브의 대면 방향을 결정할 수 있는 처리 연산이다. 따라서, 바람직한 실시예에서는, 더 작은 프리미티브들의 대면 방향은 더 효율적이고 전력을 덜 사용하는 처리 연산을 사용하여 결정된다.
렌더 출력을 위해 사용할 정점들을 위해 사용되는 정점 좌표들은 일반적으로 정점 셰이딩 스테이지로부터 일정한 포맷으로, 예를 들면 일정한 부동 소수점 포맷으로 제공된다. 따라서, 프리미티브의 속성이 조건을 만족할 때 프리미티브의 대면 방향을 결정하는데 사용되는 특정한 처리 연산은, 바람직하게는, 초기의, 예를 들면 부동 소수점 포맷의 정점 좌표들을 사용하여 필요한 대면 방향 결정을 행하는 경우보다 더 효율적으로 및/또는 더 작은 전력을 사용하여 프리미티브의 대면 방향을 결정할 수 있는 처리 연산이다.
이와 같은 바람직한 일 실시예에서는, 프리미티브의 속성이 특정한 조건을 만족할 때 프리미티브의 대면 방향을 결정하는데 사용되는 처리 연산은, 초기에 제공된 정점 좌표들을 이용한 전체 계산에 필요한 것보다 더 작은 데이터 값들에 대한 범위를 사용하여 관련된 연산(계산)을 행하는 처리 연산이다.
이와 달리 또는 이에 덧붙여, 특정한 처리 연산은, 예를 들면, 바람직하게는, 부동 소수점 포맷 및 산술연산이 아니라 고정 소수점 포맷 및 산술연산을 이용하여, 정점 좌표들이 초기에 제공되는(그리고 처리될 필요가 있는) 포맷과는 다른(대안적인) (산술연산) 포맷을 사용하여 필요한 계산을 행한다.
따라서, 예를 들어, 특정한 처리 연산이, 필요한 경우에는, 대안적인 포맷을 사용하지만 초기에 제공된 정점 데이터에 대한 것과 동일한 범위를 사용하거나, 동일한 포맷을 사용하지만 초기에 제공된 정점 데이터보다 적은 범위를 사용하여, 또는 대안적인 포맷과 초기에 제공된 정점 데이터보다 적은 범위를 사용하여, 계산을 행하는 것이 가능할 것이다.
가장 바람직하게는, 프리미티브의 속성이 특정한 조건을 만족할 때 프리미티브의 대면 방향을 결정하는데 사용되는 특정한 처리 연산은 이와 다른 (대안적인) 포맷(예를 들어, 바람직하게는, 고정 소수점 처리)으로 데이터 값들에 대해 더 적은 범위를 사용하는 계산을 행한다.
따라서, 특히 바람직한 실시예에서, 프리미티브의 속성이 특정한 조건을 만족할 때 사용되는 특정한 처리 연산은, 산술연산과, 특정한, 바람직하게는 선택된, 바람직하게는 사전에 결정된 범위(와 포맷 및 비트 수)의 데이터 값들을 사용하는 것을 포함한다. 이 경우, 사용되는(지원되는) 수치 범위는, 바람직하게는, 프리미티브에 대한 정점 좌표들이 초기에 제공될 때 이 프리미티브에 대한 정점 좌표들에 대해 사용되는(지원되는) 범위(예를 들면, 바람직하게는, 정점 셰이딩 연산으로부터 프리미티브 어셈블리 연산까지)보다 작은 범위이다.
특히 바람직한 실시예에서, 프리미티브의 속성이 특정한 조건을 만족할 때 프리미티브의 대면 방향을 결정하는데 사용되는 특정한 처리 연산은, 고정 소수점 산술연산을 사용하여, 특히 프리미티브의 좌표값에 대해 대면 방향 결정에서 고정 소수점 값들을 사용하여, 프리미티브의 대면 방향을 결정하는 단계를 포함한다. 대면 방향 결정을 위해 고정 소수점 산술연산 및 값들을 사용하는 것은, 예를 들어, 부동 소수점 산술연산과 부동 소수점 값들을 사용하여 대면 방향 결정을 행하는 것에 비해, 더 효율적으로 (고정 소수점 산술 논리 유닛에서) 더 적은 전력을 사용하여 처리를 행할 수 있다는 것을 의미한다.
특히 바람직한 실시예에서, 프리미티브의 속성이 특정한 조건을 만족할 때 프리미티브의 대면 방향을 결정하는데 사용되는 특정한 처리 연산은, 대면 방향 결정시에(예를 들어, 프리미티브의 좌표들에 대한) 데이터 값들에 대해 더 적은 범위를 사용하여 프리미티브의 대면 방향을 결정하는 단계를 포함한다.
본 출원인은, 이와 관련하여, 대면 방향 결정을 위해 예를 들어 고정 소수점 산술연산 및 값들을 이용하는 것은, 예를 들어 부동 소수점 산술연산 및 부동 소수점 값들을 사용할 때보다 더욱 효율적으로 이 처리가 행해질 수 있도록 하지만, 처리될 모든 프리미티브들에 대해 이와 같은 고정 소수점 처리를 사용하는 것이 바람직하지 않을 수도 있다는 것을 인식하였다. 따라서, 예를 들어 일정한 고정 소수점 처리 구성을 이용하여, 모든 프리미티브들의 대면 방향을 단순히 결정하는 것은 효율적이지 않다.
이들 실시예들은, 먼저 프리미티브들의 속성, 특히, 바람직하게는 프리미티브들의 사이즈를 고려하여 (예를 들어, 고정 소수점 산술연산을 사용하여) 효율적으로 대면 방향 결정을 행하는 것이 적절한 프리미티브들을 식별하고, 그후 (예를 들면, 고정 소수점 산술연산 및 값들을 사용하여) 이에 따라 적절한 속성들(예를 들면, 크기)을 갖는 프리미티브들을 처리함으로써, 이것을 해소한다. 따라서, 이와 같은 구성은, 예를 들어, 고정 소수점 산술연산을 사용한 더욱 효율적인 처리가 적합한 프리미티브들을 이와 같은 방법으로 식별 및 처리할 수 있지만, 이와 같은 처리가 적절하지 않을 수도 있는 프리미티브들도 다르게(더욱 적절히) 식별 및 취급할 수 있다는 효과를 갖는다.
더구나, 본 출원인은, 실제로, 렌더 출력을 발생할 때, (예를 들면, 고정 소수점 산술연산을 사용하여) 더욱 효율적으로 프리미티브들의 대면 방향을 결정하는데 적합한(그 결과 그후에 이에 따라 도태될 수 있는) 충분한 프리미티브들이 존재하여, (예를 들어, 대면 방향 결정과 동일하게 처리할 모든 프리미티브들을 처리할 수 잇는 도태 스테이지(회로)를 단순히 제공하는 것에 비해) 이와 같은 목적을 위해 프리미티브들의 속성들(예를 들어, 사이즈)에 근거하여 프리미티브들을 분류하는데 필요한 추가적인 처리 및 회로보다 낫다는 것을 인식하였다.
특히 바람직한 실시예에서, 프리미티브의 속성이 특정한 조건을 만족할 때 사용되는 특정한 처리 연산은, 특정한, 바람직하게는 선택된, 바람직하게는 사전에 설정된 정밀도 및 범위(즉, 포맷 및 비트 수)의 고정 소수점 산술연산 및 고정 소수점 값들을 사용하는 단계를 포함한다. 이와 같은 경우에, 사용되는 고정 소수점 범위는 바람직하게는 프리미티브에 대한 정점 좌표들이 초기에 제공되는 범위(고정 소수점이나 부동 소수점에 무관하다)(예를 들면, 바람직하게는 정점 셰이딩 연산으로부터 프리미티브 어셈블리 연산까지)보다 작은 범위이다.
특정한 처리 연산이 고정 소수점 산술연산과 고정 소수점 값들을 사용하여 프리미티브에 대한 대면 방향 결정을 행하는 단계를 포함하는 경우에는, 사용될 고정 소수점 포맷에서 필요한 값들, 예를 들어, 정점 좌표들은, 임의의 적절한 원하는 방법으로 발생될 수 있다. 예를 들면, 부동 소수점 포맷으로 표현되는 초기 정점 좌표들은 적절히 고정 소수점 포맷으로 변환될 수도 있다. 물론, 다른 구성도 가능하다.
따라서, 고정 소수점 포맷으로의 변환은, (고정 소수점 산수연산 및 값들을 사용한 대면 방향 결정이 일어나기 전이라면) 그래픽 처리 파이프라인 연산 및 스테이지들의 시퀀스 내부의 임의의 원하는 적절한 시점 및 스테이지에서 일어날 수 있다. 바람직한 실시예에서는, "고정 소수점" 값 발생은, 프리미티브들이 변환된 정점들 및 정점 연결 정보로부터 어셈블된 후이며, 바람직하게는, 대면 방향 결정 및 도태 연산을 위한 사이즈 추정 이전에 일어난다.
특정한 처리 연산이 예를 들어 선택된 범위의 고정 소수점 산술연산 및 고정 소수점 값들을 사용하여 프리미티브에 대한 대면 방향 결정을 행하는 단계를 포함하는 경우에는, 바람직한 실시예에서는, 프리미티브의 속성이 만족해야만 하는 특정한 조건은 특정한 처리 연산이 사용하는 고정 소수점 산술연산의 (최대) 범위에 근거한다. 따라서, 특히 바람직한 실시예에서는, 프리미티브에 대한 관련된 데이터 값들(예를 들면, 정점 좌표들)이 특정한 대면 방향 결정 처리 연산이 사용하는 고정 소수점 데이터 값을 사용하여 표현될 수 있는지 여부가 프리미티브의 예를 들면 사이즈로부터 판정되고, 이들 데이터 값들이 이 고정 소수점 값 범위를 사용하여 표현될 수 있는 경우에는, 특정한 고정 소수점 처리 연산을 사용하여 프리미티브의 대면 방향이 결정된다(그러나 그렇지 않은 경우에는 결정되지 않는다).
프리미티브의 속성이 특정한 조건을 만족할 때 프리미티브의 대면 방향을 결정하는데 사용되는 특정한 처리 연산은 전체 대면 방향 결정 연산을 포함하고 이와 관련될 수 있다. 이 경우에, 프리미티브의 대면 방향은 예를 들면 고정 소수점 산술연산 및 고정 소수점 값들을 사용하여 전체가 결정될 것이다.
이에 덧붙여 또는 이와 달리, \프리미티브의 속성이 특정한 조건을 만족할 때 프리미티브의 대면 방향을 결정하는데 사용되는 특정한 처리 연산은, 프리미티브에 대한 전체 대면 방향 결정 연산의 특정한 일부(예를 들어, 일부분, 그러나 전부는 아니다)에 관련된다. 예를 들어, 대면 방향 결정의 초기 단계 또는 단계들은 (예를 들어, 부동 소수점 산술연산 및 부동 소수점 값들을 사용하는) 일정한 형태의 처리 연산을 사용하여 행해질 수 있고, 그후 프리미티브의 속성이 필요한 조건을 만족하는 경우에, 전체 대면 방향 결정 처리의 나중의 단계 및 단계들이 (예를 들면, 고정 소수점 산술연산 및 값들을 사용하는) 특정한 처리 연산을 사용하여 행해질 수도 있다.
따라서, 바람직한 일 실시예에서는, 프리미티브의 속성이 특정한 조건을 만족할 때 프리미티브의 대면 방향을 결정하는데 사용되는 특정한 처리 연산은, 이 프리미티브에 대한 전체 대면 방향 결정의 일부(그러나 전부는 아니다)에 대해 사용되는 처리 연산을 포함한다.
프리미티브의 속성이 이 프리미티브의 대면 방향을 결정하는데 사용되는 특정한 처리 연산에 대한 특정한 조건을 만족하지 않을 때, 이 프리미티브는 대면 방향 결정과 관련하여 다른 방식으로 처리(취급)될 수 있으며, 바람직하게는 처리(취급)된다.
바람직한 일 실시예에서, 프리미티브의 속성이 특정한 조건을 만족하지 않을 때, 프리미티브의 대면 방향이 단순히 결정되지 않고(즉, 프리미티브가 대면 방향 결정 및 도태를 겪지 않고), 그 대신에 프리미티브가 처리를 위해 파이프라인의 다음 스테이지(예를 들면, 바람직하게는 타일링 스테이지)로 앞으로 전달된다.
따라서, 바람직한 일 실시예에서, 테스팅 스테이지는, 프리미티브의 속성이 특정한 조건을 만족하지 않는 것으로 판정할 때, 프리미티브의 처리가 대면 방향 결정 스테이지를 생략(우회)하게 하도록 동작하여, 프리미티브가 대면 방향 결정 스테이지에 의해 처리되지 않고, 그 대신에 그후에 파이프라인 내부의 다음 스테이지(에를 들면, 바람직하게는 처리 파이프라인의 타일링 스테이지)에 의해 처리되는 것이 바람직하다.
또 다른 바람직한 실시예에서, 프리미티브의 속성이 특정한 처리 연산을 사용하여 결정되는 대면 방향에 대한 특정한 조건을 만족하지 않을 때, 프리미티브의 대면 방향이 그 대신에 또 다른 이와 다른 처리 연산 또는 연산들을 사용하여 결정된다. 이 경우, 사실상, 프리미티브의 대면 방향을 결정하는데 사용될 수 있는 2개의 다른 처리 연산이 존재하게 되고, 그후 프리미티브의 대면 방향을 결정하기 위해 어떤 처리 연산을 사용할지는 프리미티브의 속성, 예를 들면 사이즈에 근거하여 선택된다.
따라서, 바람직한 실시예에서는, 대면 방향 결정 스테이지는 적어도 2개의 다른 처리 연산을 사용하여 프리미티브의 대면 방향을 결정하도록 동작하고(바람직한 일 실시예에서는, 2개의(단지 2개의) 다른 처리 연산을 사용하여 프리미티브의 대면 방향을 결정하도록 동작하고), 테스팅 스테이지는 테스트되고 있는 프리미티브의 속성(에를 들면, 사이즈)에 근거하여(특히 이 속성이 특정한 조건을 만족하는지 아닌지에 근거하여) 처리 연산들 중에서 한 개를 사용하여 파이프라인의 대면 방향 결정 스테이지에 의해 프리미티브가 처리되도록 동작한다.
이들 구성에서, 프리미티브의 대면 방향을 결정하는데 사용되는 나머지 처리 연산은 프리미티브의 대면 방향을 결정할 수 있는 임의의 적절한 원하는 처리 연산이 될 수 있다. 바람직한 실시예에서, 이것은, (예를 들어, 프리미티브의 속성, 예를 들면, 사이즈가 특정한 조건을 만족할 때 사용되는 처리 연산이 고정 소수점 산술연산 및 값들을 사용하는 경우에) 프리미티브가 부동 소수점 산술연산 및 값들을 사용하는 것과 같은 특정한 조건을 만족할 때 사용되는 처리 연산보다 덜 효율적이고 및/또는 더 많은 전력 또는 처리 사이클을 사용하게 되는 처리 연산이다.
이때, 더 작은 프리미티브들에 대해 대면 방향 결정을 행하기 위한 특정한 처리 연산은 고려할 모든 프리미티브들의 대면 방향을 결정하기 위한 단지 한 개의 메카니즘을 사용하고 있을 때보다 처리할 필요가 있는 모든 프리미티브들을 고려할 때 전체적으로 더 우수한 효율이 존재할 수도 있다는 것을 의미할 수 있기 때문에, 필요한 경우에는, 프리미티브의 속성이 특정한 조건을 만족하지 않을 때 프리미티브의 대면 방향을 결정하는데 사용되는 나머지 처리 연산은, 그렇지 않은 경우로서 예를 들어 더 작은 영역 또는 더 낮은 전력에 대해 최적화되는 것보다 일부의 면에서(예를 들어, 성능 면에서) 더 악화될 수도 잇는 방식으로 프리미티브의 대면 방향을 결정하는 처리 연산이 되는 것이 가능하다.
프리미티브의 대면 방향을 결정하기 위한 나머지 처리 연산은, 프리미티브의 속성, 예를 들어 사이즈가 특정한 조건을 만족할 때 사용되는 처리 연산보다 더 큰 범위를 갖는 고정 소수점 산술연산 및 고정 소수점 값들을 사용하는 처리 연산이 될 수도 있다.
그러나, 바람직한 실시예에서, 예를 들어, 프리미티브의 속성이 특정한 조건을 만족하지 않을 때 프리미티브의 대면 방향을 결정하는데 사용되는 나머지 처리 연산은, (예를 들면, 프리미티브의 정점들의 좌표들에 대한) 부동 소수점 산술연산 및 부동 소수점 값들을 사용하여 프리미티브의 대면 방향을 결정한다.
부동 소수점 산술연산 및 부동 소수점 데이터 값들을 사용하여 프리미티브의 대면 방향을 결정하고자 할 때, 마찬가지로 프리미티브의 대면 방향은 바람직하게는 프리미티브의 면적의 부호를 판정하여 결정된다(그러나, 프리미티브의 면적은 부동 소수점 산술연산 및 부동 소수점 데이터 값들을 사용하여 결정된다).
프리미티브의 면적의 부호는 임의의 적절한 원하는 방법으로 부동 소수점 산술연산 및 부동 소수점 데이터 값들을 사용하여 결정될 수 있다. 바람직한 실시예에서, 프리미티브의 w 좌표들 및 와인딩(winding)의 부호들에 의해 수정된, (부동 소수점 값들로 표현되는) 프리미티브에 대한 정점들의 x/y 좌표들의 교차 곱을 사용하여 면적의 부호, 이에 따라 프리미티브의 대면 방향을 결정한다.
바람직한 실시예에서, 처리 경도들 중에서 한 개는 프리미티브의 대면 방향을 결정하기 위해 고정 소수점 산술연산 및 고정 소수점 값들을 사용하고, 처리 경로들의 다른 한 개는 프리미티브의 대면 방향을 결정하기 위해 부동 소수점 산술연산 및 부동 소수점 값들을 사용하거나, 프리미티브에 대한 모든 형태의 대면 방향 결정 및 도태를 완전히 우회한다. 이와 같은 구성에서, 바람직하게는, 프리미티브가 특정한 사이즈보다 작은 경우에는, 대면 방향 결정을 위한 부동 소수점 또는 우회 경로를 사용한다.
또한, 프리미티브가 테스트될 수 있는 대상인 복수의 다른 속성 조건들, 예를 들면 바람직하게는 임계 사이즈 측정값들이 존재할 수도 있으며, 각각의 이와 같은 조건은 대면 방향 결정을 위한 대응하는 관련된 처리 연산을 갖는다. 따라서, 이와 같은 경우에, 프리미티브들은 각각의 예를 들면 사이즈 범위들로 소트되고, 그후 각각의 프리미티브 "사이즈" 범위는 대면 방향 결정을 위한 대응하는 관련된 처리 경로(연산)를 갖는다. 따라서, 실제로, 프리미티브 속성(예를 들어, 사이즈)의 각각의 범위들이 존재하고, 각각의 범위는 프리미티브 대면 방향 결정을 위한 각각의 서로 다른 관련된 처리 연산(경로)을 갖는다.
예를 들어, 고정 소수점 산술연산을 각각 이용하지만 서로 다른 (최대) 범위들을 갖는 2개의 대면 방향 결정 경로들(그리고, 예를 들어, 대면 방향 도태 연산을 모두 생략하거나 대면 방향 결정을 위해 부동 소수점 산술연산을 사용하는 또 다른 처리 경로)이 존재할 수 있으며, 프리미티브에 대한 각각의 속성(예를 들어, 사이즈)은 해당 프리미티브에 대해 이들 서로 다른 처리 연산들 중에서 어느 것이 사용되는지를 결정한다.
따라서, 특히 바람직한 실시예에서, 그래픽 처리 파이프라인은 프리미티브의 대면 방향 결정을 위해 복수의 서로 다른 처리 경로들을 지원하고, 어떤 프리미티브에 대해 이들 처리 경로들 중에서 어느 것을 사용할지는 프리미티브의 속성, 예를 들어 바람직하게는 사이즈에 근거하여 결정된다.
또한, 프리미티브의 대면 방향 방향을 결정할 때 프리미티브의 사이즈 등의 속성을 이용하여 프리미티브에 대해 사용될 다음의(또는 장래의) 처리 연산을 결정하거나 선택하는 복수의 지점을 전체 대면 방향 결정 연산 내부에 갖는 것도 가능할 수 있다.
예를 들어, 이와 같은 제 1 대면 방향 결정 처리 연산 선택은 정점 좌표들의 절대값 크기에 근거하여 행해짐으로써, 정점 좌표들의 절대값 크기가 임계값보다 큰 경우에는 부동 소수점 산술연산 처리 경로를 선택하거나, 그렇지 않은 경우에는 고정 소수점 감산을 선택한 후, 이 감산의 결과에 근거하여 2개의 다른 고정 소수점 처리 경로들 중에서 한 개를 선택한다.
본 발명의 방법으로 프리미티브들의 대면 방향에 근거하여 프리미티브들의 대면 방향의 결정과 프리미티브의 (잠재적인) 도태는, 예를 들어, 바람직하게는, 프리미티브들의 대면 방향에 근거하여 추가적인 처리로부터 프리미티브들을 도태시키려고 시도하는 것이 적절하고 바람직한 경우에는, 그래픽 처리 파이프라인 연산의 임의의 적절한 원하는 스테이지에서 결정될 수 있다.
특히 바람직한 실시예에서는, 그래픽 처리 파이프라인은 타일 기반의 그래픽 처리 파이프라인이고, 본 발명의 방법에서의 대면 방향 결정 밑 도태는 그래픽 처리 파이프라인 연산의 타일링 스테이지(타일러) 이전에 행해짐으로써, 프리미티브들의 대면 방향에 근거하여 도태시킬 수 있는 프리미티브들은 타일링 연산에 의해 처리되지 않는다(프리미티브 목록으로 소트되지 않는다), 이와 같은 구성은 타일링 연산에 의해 처리할 프리미티브들의 수를 감소시키는 이점을 갖는다.
따라서, 바람직한 일 실시예에서, 본 발명의 방법으로 프리미티브들의 대면 방향에 근거하여 프리미티브들을 (잠재적으로) 도태시키는 연산은, 그래픽 처리 파이프라인의 프리미티브 어셈블링 스테이지 이전에, 그리고 그래픽 처리 파이프라인의 타일링 스테이지(연산) 이전에 행해진다.
따라서, 그래픽 처리 파이프라인은 바람직하게는 처리할 프리미티브들을 발생할 그래픽 처리 출력(렌더 출력)의 특정한 영역들에 대응하는 각각의 목록들로 소트하도록 동작하는 타일링 스테이지를 더 구비하고, 테스팅 스테이지, 대면 방향 결정 스테이지 및 대면 방향 도태 스테이지는 모드 그래픽 처리 파이프라인의 타일링 스테이지 앞에 배치된다(이전에 동작한다).
마찬가지로, 특히 바람직한 실시예에서, 그래픽 처리 파이프라인은 발생할 그래픽 처리 출력(렌더 출력)에 대한 정점들의 세트와 정점 연결 정보로부터 처리할 프리미티브들의 세트를 발생하는 프리미티브 어셈블리 스테이지를 구비하고, 테스팅 스테이지, 대면 방향 결정 스테이지 및 대면 방향 도태 스테이지는 프리미티브 어셈블리 스테이지의 뒤에(그러나, 타일링 스테이지가 존재하는 경우에는 타일링 스테이지 앞에) 배치된다(이후에 동작한다).
대면 방향 결정 및 도태 스테이지들(및 연산들)도 바람직하게는 프리미티브들의 래스터화(그래픽 처리 파이프라인의 래스터화 스테이지) 이전에 일어난다.
본 발명의 대면 방향 결정 및 도태 연산 이외에, 본 발명의 그래픽 프리미티브 처리방법 및 그래픽 처리 파이프라인은, 필요한 경우에는, 다른 프리미티브 도태 테스트 및 도태 연산을 포함할 수 있으며, 바람직하게는 포함한다. 예를 들어, 프리미티브도 장면 절두체 도태 연산을 겼을 수도 있는데, 이때 프리미티브가 장면 절두체 내부에 속하는지 아닌지를 판정한다. 또한, 프리미티브가 너무 작아 래스터화 스테이지에서 이 프리미티브가 샘플링 위치들로 래스터화되지 않는지 여부도 판정할 수 있다.
따라서, 바람직한 실시예에서, 그래픽 처리 파이프라인은, 프리미티브들을 테스트하여 이들 프리미티브가 장면 절두체 내부에 위치하는지 아닌지를 판정하는 장면 절두체 도태 스테이지와, 프리미티브들을 테스트하여 이들 프리미티브가 너무 작아 래스터화할 때 사실상 샘플링 포인트들을 커버하지 않는지를 판정하는 소형 프리미티브 도태 스테이지 중에서 적어도 한 개를 더 구비하고, 바람직하게는 이들 전체를 구비한다.
이들 추가적인 프리미티브 도태 스테이지들은 대면 방향 결정 스테이지 및 대 도태 스테이지(및 연산들) 앞에 배치됨으로써(이전에 동작함으로써), 그후 이들 다른 프리미티브 도태 연산 및 스테이지들을 통과한 프리미티브들만이 대면 방향 결정 및 도태 연산을 (잠재적으로) 겪게 한다.
바람직한 실시예에서는, 장면 절두체 프리미티브 도태 스테이지가 대면 방향 결정 스테이지 및 대면 방향 도태 스테이지(및 연산)의 앞에 배치되어(이전에 동작하여), 그후 장면 절두체 도태 연산 및 스테이지를 통과한 프리미티브들만이 대면 방향 결정 및 도태 연산을 (잠재적으로) 겪게 된다.
바람직한 실시예에서는, 소형 프리미티브 도태 스테이지가 대면 방향 결정 스테이지(및 연산)와 계산을 공유할 수도 있으므로, 이 소형 프리미티브 도태 스테이지가 대면 방향 결정 스테이지 및 대면 방향 도태 스테이지(및 연산) 앞에 또는 이들과 병렬로 배치된다(즉, 이들과 병렬로 또는 이후에 동작한다).
특히 바람직한 실시예에서, 본 발명의 방법과, 본 발명의 그래픽 처리 파이프라인은, 바람직하게는 전술한 본 발명의 대면 방향 결정 및 도태 연산 이전에(에 앞서서) 행해지는 추가적인 대면 방향 도태 연산 및 스테이지를 포함한다. 이와 같은 추가적인 대면 방향 도태 연산 및 스테이지는 바람직하게는 프리미티브에 대한 정점들의 각각의 좌표들을 비교하여, 이들 좌표들이 다른 것보다 더 큰지 또는 작은지 또는 같은지를 판정한 후, 이들 비교 결과를 이용하여, 프리미티브의 대면 방향에 근거하여 프리미티브를 도태시킬 수 있는지 아닌지를 판정한다.
본 출원인은 이와 관련하여, 각각의 정점 좌표 비교들의 결과에 따라(즉 이것들이 다른 것보다 큰지 또는 작은지 또는 같은지에 따라), 이들 정점 좌표 비교들에 근거하여, 프리미티브가 후방 대면인 것, 전방 대면인 것, 제로 면적을 갖는 것, 즉 "미지(unknown)"인 것(즉, 정점 좌표 비교로부터 이 프리미티브의 대면 방향을 결정할 수 없다)으로 분류할 수 있다. 따라서, 일부의 프리미티브들에 대해서는, 이들의 정점 좌표들의 비교로부터, 이들 프리미티브가 전방 대면 또는 후방 대면을 판정함으로써, 이 기준에 근거하여 (필요한 경우에는) 이들 프리미티브를 도태시키는 것이 가능하다.
이와 같은 추가적인 대면 방향 결정 및 도태 연산은 필요에 따라 구현될 수 있다. 바람직하게는, 각각의(바람직하게는 각각의 개별적인) 비교 결과들의 조합에 대해, 이것이 프리미티브가 전방 대면인지 또는 후방 대면인지(그리고 바람직하게는 이 프리미티브가 제로 면적을 갖는지)를 표시하는지 아닌지를 나타내는 룩업 테이블이 존재함으로써, 룩업 테이블 내부로 간단히 룩업을 행함으로써 도태 연산을 행할 수 있다.
바운딩 박스 결정은 보통 바운딩 박스의 모서리들을 결정하기 위해 프리미티브에 대한 정점들의 각각의 쌍들 사이의 비교를 필요로 하므로, 전술한 구성은 프리미티브들을 타일링할 때(프리미티브 목록들을 준비할 때) 바운딩 박스들을 이용하는 타일 기반의 그래픽 처리 파이프라인에 사용하는데 특히 유리하다. 따라서, 그후 바운딩 박스를 생성하기 위한 이들 비교의 결과들을 이용하여, 이와 같은 초기의 대면 방향 도태 연산 및 스테이지를 위한 프리미티브의 대면 방향을 식별하기 위해(이것이 가능한 경우에) 룩업 테이블의 색인을 만들 수 있다.
이와 같은 초기의 대면 방향 도태 스테이지는 바람직하게는 본 발명의 "메인(main)" 대면 방향 결정 및 도태 이전에 구현 및 수행된다. 따라서, 이와 같은 구성은, 더욱 수월하게 결정될 수 잇는 대면 방향을 갖는 일부 프리미티브들이 더 이른 스테이지에서 도태될 수 있으므로, 더 복합한 대면 방향 결정 및 도태 연산을 겪게 되는 프리미티브들의 수를 줄인다는 이점을 갖는다.
이들 구성에서, 정점 좌표들이 부동 소수점 값들로 초기에 제공되지만, 그후 본 발명의 메인 대면 방향 결정 및 도태 연산을 위해 대응하는 고정 소수점 값들로 변환되면, 바람직하게는 이와 같은 초기의 대면 방향 결정 및 도태 연산에 대한 정점 좌표들의 비교가 부동 소수점 값으로서 처리되고, 그후 이 초기 대면 방향 결정 및 처리 연산을 통과한 프리미티브들(및 그들의 정점들)만이 후속하는 대면 방향 결정 및 처리 연산을 위한 대응하는 고정 소수점 값들로 변환된다.
적절한 경우에는, 다수의 다른 도태 연산들 사이에서 처리 결과들을 공유하는 것도 가능하다. 예를 들어, 계산되고 있는 처리 연산들의 일부에서 사용되는 항들(terms)이 처리(예를 들면, 도태) 연산들의 나머지에서도 사용될 수 있는 경우에는, 필요한 경우에는, 이들 항들을 재계산하지 않고, 해당 항들을 보존하여 처리 연산들 중에서 복수의 처리 연산들에 재사용할 수 있다.
프리미티브가 후방 대면 결정 및 도태 연산을 통과하면(또는 이 연산을 겪지 않으면(우회하면), 이 프리미티브가 바람직하게는 그후에 추가적으로 처리되어, 예를 들면, 렌더 출력에 프리미티브를 (잠재적으로) 표시하기 위해 관련된 데이터를 발생한다. 이것은 바람직하게는 프리미티브를 래스터화 및 렌더링(셰이딩)하는 것을 포함한다.
타일 기반의 그래픽 처리 파이프라인의 경우에, 후방 대면 결정 및 도태 연산을 통과한(또는 이 연산을 겪지 않은) 프리미티브는 바람직하게는 타일링 연산을 겪어 적절한 프리미티브 목록 또는 목록들에 포함된다. 그후, 발생할 그래픽 출력의 모든 프리미티브들이 그들의 각각의 프리미티브 목록들로 소트되면, 각각의 타일들을 처리하여 이 타일들에 대한 프리미티브 목록들 내부에 포함된 프리미티브들을 래스터화 및 렌더링(셰이딩)하여 렌더 출력을 발생할 수 있다.
주어진 프리미티브가 일단 처리되면, 처리된 프리미티브 데이터(예를 들면, 샘플링 위치 값들)가, 필요한 경우에는, 예를 들어 버퍼에 기록될 수 있으며, 그후, 고려하고 잇는 모든 프리미티브들이 처리되면, 버퍼 내부의 데이터가, 예를 들면, 메인 메모리 내부의 프레임 버퍼에 기록된다.
발생할 그래픽 출력을 위한 일정한 프리미티브의 처리를 참조하여 본 발명을 설명하였지만, 본 발명의 기술분야의 당업자에게 있어서 자명한 것과 같이, 본 발명은 발생되고 있는 특정한 그래픽 출력에 대해 처리될 복수의 프리미티브들에 대해(바람직하게는 각각의 프리미티브에 대해 반복될 수 있으며 바람직하게는 반복된다. 따라서, 이들 처리는 발생할 연속된 그래픽 출력에 대해, 예를 들면 표시할 프레임들의 시퀀스에 대해 반복된다.
발생할 렌더 출력은 그래픽 처리 파이프라인에 의해 발생할 렌더 출력을 포함한다. 따라서, 이것은, 예를 들면, 타일 기반의 그래픽 처리 시스템에서 발생할 타일, 및/또는 출력 프래그먼트 데이터의 프레임을 포함해도 된다. 본 발명은, 표시용 프레임, 렌더-투(to)-텍스처 출력 등을 발생하기 위해 그래픽 처리 파이프라인이 사용하는 모든 형태의 출력을 위해 사용될 수 있다. 바람직한 실시예에서, 렌더 출력은 출력 프레임이다.
그래픽 처리의 최종 출력은, 예를 들면, 메인 메모리 내부의 프레임 버퍼에 기록되고, 그후 이 프레임 버퍼로부터 표시용 디스플레이로 제공되거나, 다른 식으로 처리된다.
본 발명은 임의의 원하는 적절한 그래픽 처리 시스템 및 파이프라인으로 구현될 수 있다. 그러나, 바람직한 실시예에서는, 그래픽 처리 시스템 및 파이프라인은 타일 기반의(타일링) 그래픽 처리 시스템 및 파이프라인이다. 이 경우, 파이프라인은 바람직하게는, 타일 샘플값들을 기억하는 타일 버퍼, 및/또는 (예를 들어, 타일 버퍼 내부의 데이터가 완료한 경우에) 타일 버퍼 내부의 데이터를 외부 (메인) 메모리(예를 들어, 프레임 버퍼)에 기록하는 기록부를 더 구비한다.
전술한 내용은 본 발명의 방식으로의 연산에 포함되는 그래픽 처리 파이프라인의 구성요소들을 설명하고 있다. 본 발명이 속하는 당업자에게 있어서 자명한 것과 같이, 그래픽 처리 파이프라인은, 그래픽 처리 파이프라인이 보통 포함하는 다른 처리 스테이지들의 한 개 또는 한 개 이상, 바람직하게는 전체를 포함할 수 있으며, 바람직하게는 포함한다. 따라서, 예를 들어, 그래픽 처리 파이프라인은, 바람직하게는, 대면 방향 도태 연산을 통과한(또는 우회한) 그래픽 프리미티브들을 래스터화하여 처리할 그래픽 프래그먼트들을 생성하도록 동작하는 래스터화기와, 래스터화기에 의해 발생된 프래그먼트들을 처리하여 렌더링된 프래그먼트 데이터를 발생하도록 동작하는 렌더러를 적어도 포함한다. 바람직한 실시예에서, 렌더러는 프로그래머블 프래그먼트 렌더러의 형태를 갖거나 이 프로그래머블 프래그먼트 렌더러를 포함한다.
그래픽 처리 파이프라인은 바람직하게는, 버텍스 셰이딩 스테이지, 프리미티브 어셈블리 스테이지, 타일러(타일링 스테이지), 프리미티브 설정 스테이지, 타일 샘플값들을 기억하는 타일 버퍼 또는 버퍼들 및/또는 (예를 들어 타일 버퍼 내부의 데이터가 완료한 경우에) 타일 버퍼 내부의 데이터를 외부 (메인) 메모리(예를 들면, 프레임 버퍼)에 기록하도록 동작하는 기록부 중에서 한 개 이상을 구비하고, 바람직하게는 전체를 구비한다.
그래픽 처리 파이프라인은, 깊이(또는 깊이 및 스텐실) 테스터 또는 테스터들, 블렌더 등과 같이 그래픽 처리 파이프라인이 포함하는 임의의 적절한 원하는 처리 스테이지를 더 포함해도 된다.
바람직한 실시예에서, 그래픽 처리 파이프라인은, 본 발명에서 설명한 데이터를 기억하고, 및/또는 본 발명에서 설명한 처리를 행하고 소프트웨어를 기억하는 한 개 이상의 메모리들 및/또는 메모리 소자들을 구비하고, 및/또는 이들 메모리들 및/또는 메모리 소자들과 통신한다. 그래픽 처리 파이프라인은, 호스트 마이크로 프로세서, 및/또는 그래픽 처리 파이프라인의 출력에 근거하여 화상들을 표시하는 디스플레이와 통신하고 있다.
물론, 다른 구성도 가능하다.
특히 바람직한 실시예에서, 본 발명의 다양한 기능은, 예를 들면, 표시장치용 프레임 버퍼에 기록되는 렌더링된 프래그먼트 데이터를 발생 및 출력하는 한 개의 그래픽 처리 플랫폼 상에서 행해진다.
본 발명은, 적절히 구성된 마이크로프로세서 기반의 시스템 등의 임의의 적절한 시스템으로 구현될 수 있다. 일부 실시예에서, 본 발명은 컴퓨터 및/또는 마이크로 프로세서 기반의 시스템으로 구현된다.
본 발명의 다양한 기능은 임의의 원하는 적절한 방식으로 행해질 수 있다. 예를 들면, 본 발명의 기능은 필요에 따라 하드웨어 또는 소프트웨어로 구현될 수 있다. 따라서, 예를 들어, 본 발명의 다양한 기능 구성요소, 스테이지 및 "수단"은, 원하는 방식으로 동작하도록 프로그래밍될 수 있는 적절한 전용 하드웨어 구성요소(처리회로) 및/또는 프로그래머블 하드웨어 구성요소(처리회로) 등과 같이, 다양한 기능을 행하도록 동작가능한 적절한 프로세서 또는 프로세서들, 제어기 또는 제어기들, 기능 유닛, 회로, 처리 로직, 마이크로프로세서 배치 등을 구비한다.
또한, 본 발명의 기술분야의 당업자에게 있어서 자명한 것과 같이, 본 발명의 다양한 기능 등은 특정한 프로세서 상에서 복제되거나, 및/또는 병렬로 수행되어도 된다는 점에 주목하기 바란다. 마찬가지로, 다양한 처리 스테이지는, 필요에 따라 처리회로를 공유해도 된다.
더구나, 그래픽 처리 파이프라인의 처리 스테이지들 및 유닛들 중에서 한 개 이상 또는 전체가 처리 스테이지 회로, 예를 들면, 한 개 이상의 고정된 기능 유닛(하드웨어) 처리회로의 형태, 및/또는 원하는 동작을 행하도록 프로그래밍될 수 있는 프로그래머블 처리회로로 구현되어도 된다. 마찬가지로, 처리 스테이지들 및 처리 스테이지 회로들 중에서 한 개 이상은 다른 처리 스테이지 또는 처리 스테이지 회로의 한 개 이상에 대한 별개의 회로 요소로서 설치되거나, 및/또는 처리 스테이지들 및 처리 스테이지 회로의 한 개 이상 또는 전체가 적어도 일부 공유된 처리회로로 구성되어도 된다.
또한, 본 발명이 속한 기술분야의 당업자에게 자명한 것과 같이, 본 발명의 이들 국면 및 실시예는 필요에 따라 전술한 본 발명의 바람직한 옵션의 특징의 어느 한 개 이상 또는 전체를 포함할 수 있고 바람직하게는 포함한다.
본 발명에 따른 방법은, 소프트웨어, 예를 들면, 컴퓨터 프로그램을 적어도 일부 사용하여 구현되어도 된다. 따라서, 또 다른 일면에서 볼 때, 본 발명은 데이터 처리수단에 설치되었을 때 본 발명에서 설명한 방법을 행하도록 명시적으로 구성된 컴퓨터 소프트웨어를 제공하고, 컴퓨터 프로그램 구성요소는 프로그램 구성요소가 데이터 처리장치 상에서 실행될 때 전술한 본 발명의 방법을 행하는 소프트웨어 코드 부분들을 포함하고, 컴퓨터 프로그램은 이 프로그램이 데이터 처리 시스템 상에서 실행될 때 전술한 본 발명의 방법 또는 방법들의 모든 스텝들을 행하도록 구성된 코드수단을 포함한다. 데이터 프로세서는 마이크로프로세서 시스템, 프로그래머블 FPGA(field programmable gate array) 등이어도 된다.
또한, 본 발명은, 데이터 처리수단을 포함하는 그래픽 프로세서, 렌더러 또는 마이크로프로세서 시스템을 동작하도록 사용될 때, 상기 데이터 처리수단과 연계하여, 상기 프로세서, 렌더러 또는 시스템이 본 발명의 방법의 단계들을 행하도록 하는 소프트웨어를 포함하는 컴퓨터 소프트웨어 기록매체로 더 확장된다. 이와 같은 컴퓨터 소프트웨어 기록매체는, ROM 칩, CD ROM, RAM, 플래시 메모리 또는 디스크 등의 물리적인 기억매체일 수도 있으며, 또는 선로를 거친 전자 신호, 광학 신호, 위성을 등에 대한 무선 신호 등의 신호일 수도 있다.
더구나, 본 발명의 방법의 모든 단계들이 컴퓨터 소프트웨어에 의해 실행될 필요는 없다는 것이 명백하므로, 더 넓은 국면에서, 본 발명은, 본 발명에서 설명한 방법의 단계들 중에서 적어도 한 개를 행하는 컴퓨터 소프트웨어와 컴퓨터 소프트웨어 기록매체 상에 설치된 소프트웨어를 제공한다.
따라서, 본 발명은 컴퓨터 시스템에서 사용되는 컴퓨터 프로그램 제품으로서 적절히 구현되어도 된다. 이와 같은 구현은, 예를 들어 디스켓, CD-ROM, ROM, RAM, 플래시 메모리 또는 하드디스크 등의 컴퓨터 판독가능한 매체와 같은 유형의 비일시적인 매체 위에 고정된 일련의 컴퓨터 판독가능한 명령들을 포함해도 된다. 또한, 이와 같은 구현은, 모뎀이나 다른 인터페이스 장치를 거쳐, 광 또는 아날로그 통신 라인을 포함하는 유형의 매체를 거쳐, 또는 적외선 또는 다른 전송 기술을 포함하는 무선 기술을 사용하여 무형으로 컴퓨터 시스템에 송신가능한 일련의 컴퓨터 판독가능한 명령들을 포함할 수도 있다. 이들 일련의 컴퓨터 판독가능한 명령들은 본 발명에서 전술한 기능의 전체 또는 일부를 구현한다.
본 발명의 기술분야의 당업자에게 있어서, 이와 같은 컴퓨터 판독가능한 명령들이 다수의 컴퓨터 아키텍처 또는 운영체계와 사용되는 다수의 프로그래밍 언어로 기록될 수 있다는 것은 자명하다. 더구나, 이와 같은 명령은, 반도체, 자기 또는 광학을 포함하는 현재 및 미래의 메모리 기술을 사용하여, 또는 광, 적외선 또는 마이크로웨이브를 포함하는 현재 및 장래의 통신기술을 이용하여 전송되어 기억될 수도 있다. 이와 같은 컴퓨터 프로그램은, 예를 들어 수축 포장된 소프트웨어와 같이 첨부된 인쇄되거나 전자 문서와 함께 착탈가능한 매체로서 배포되거나, 예를 들어, 시스템 ROM이나 고정 디스크와 같이 컴퓨터 시스템에 미리 로드되거나, 예를 들어 인터넷이나 월드 와이드 웹 등의 네트워크를 거쳐 서버 또는 전자 게시판으로부터 배포될 수도 있다.
이하, 첨부도면을 참조하여 본 발명의 바람직한 실시예를 설명한다.
도 1은 본 발명에 따라 동작할 수 있는 그래픽 처리 파이프라인의 일 실시예를 나타낸 것이다.
도 2는 도 1의 그래픽 처리 파이프라인의 프론트엔드 처리 연산을 더욱 상세히 나타낸 것이다.
도 3 및 도 4는 본 발명에 따른 도 1의 그래픽 처리 파이프라인의 프론트엔드 처리 연산의 제 1 실시예를 나타낸 것이다.
도 5 및 도 6은 본 발명에 따른 도 1의 그래픽 처리 파이프라인의 프론트엔드 처리 연산의 제 2 실시예를 나타낸 것이다.
도 7 및 도 8은 본 발명에 따른 도 1의 그래픽 처리 파이프라인의 프론트엔드 처리 연산의 제 3 실시예를 나타낸 것이다.
도면에서 적절한 경우에는 유사한 구성요소에 대해서는 유사한 참조번호를 사용한다.
이하, 표시용 컴퓨터 그래픽의 처리와 관련하여 본 발명의 바람직한 실시예를 설명한다.
컴퓨터 그래픽 화상을 표시하고자 할 때, 이것이 먼저 일련의 프리미티브들(다각형들)로 정의되고, 이들 프리미티브는 그후에 그래픽 렌더링을 위한 그래픽 프래그먼트들로 분할(래스터화)된다. 통상적인 그래픽 렌더링 연산중에, 렌더러는 프래그먼트들이 올바르게 표시될 수 있도록 각각의 프래그먼트와 관련된 (예를 들면) 칼라(적, 녹 및 청, RGB) 및 투명도(알파, a) 데이터를 수정하게 된다. 프래그먼트들이 완전히 렌더러를 가로지르면, 그들의 관련된 데이터 값들이 메모리에 기억되어 출력할 준비가 된다.
도 1은 본 발명에 따라 동작하는 그래픽 처리 파이프라인(1)을 개략적으로 나타낸 것이다. 도 1에 도시된 그래픽 처리 파이프라인(1)은 타일 기반의 렌더러이므로, 발생할 출력 프레임 등의 렌더 출력 데이터 어레이의 타일들을 생성하게 된다. (본 발명의 기술분야의 당업자에게 있어서 자명한 것과 같이, 필요한 경우에는 다른 렌더링 구성이 사용될 수 있다.)
타일 기반의 렌더링에서는, 중간 모드 렌더링에서와 같이 한번에 전체 렌더 출력, 예를 들면, 프레임이 효율적으로 처리되는 것 대신에, 렌더 출력, 예를 들어, 표시할 프레임이 보통 "타일"들로 불리는 복수의 더 작은 서브영역으로 분할된다. 각각의 타일(서브영역)은 별개로(일반적으로는 차례로) 렌더링되고, 그후 렌더링된 타일들(서브영역들)이 재결합되어 완전한 렌더 출력, 예를 들어 표시할 프레임을 제공한다. 이와 같은 구성에서는, 렌더 출력이 일반적으로 규칙적인 크기를 갖고 형상을 갖는 서브영역들(타일들)로 분할되지만((이것은 보통, 예를 들면 정사각형이나 직사각형이다), 이것은 필수적인 것은 아니다.
렌더 출력 데이터 어레이는, 보통 화면이나 프린터 등의 표시장치에 표시하도록 의도된 출력이지만, 예를 들어, ("렌더 투 텍스처" 출력으로도 알려진) 추후의 렌더링 패스(rendering pass)에서 사용하도록 의도된 중간 데이터를 포함해도 된다.
도 1은 본 발명의 연산과 관련되는 그래픽 처리 파이프라인(3)의 주 구성요소들과 파이프라인 스테이지들을 나타낸 것이다. 본 발명의 당업자에게 자명한 것과 같이, 도 1에 도시하지 않은 그래픽 처리 파이프라인의 다른 구성요소들이 존재한다. 또한, 도 1은 단지 개략도이며, 예들 들면, 실제로는 도시된 기능 유닛 및 파이프라인 스테이지들은, 도 1에서는 별개의 스테이지로 개략적으로 도시하였지만, 상당한 하드웨어 회로를 공유한다. 또한, 도 1에 도시된 그래픽 처리 파이프라인의 스테이지들, 구성요소들 및 유닛들 각각은 필요에 따라 구현될 수 있으며, 따라서 필요한 동작 및 기능을 행하기 위한, 예를 들면, 적절한 회로 및/또는 처리 로직을 구비한다.
도 1에 도시된 것과 같이, 그래픽 처리 파이프라인(1)은, "프론트엔드" 처리 스테이지(8), 래스터화 스테이지(3), 조기 Z(깊이) 및 스텐실 테스트 스테이지(4), 프래그먼트 셰이딩 스테이지(6), 후기 Z(깊이) 및 스텐실 테스트 스테이지(7), 블렌딩 스테이지(9), 버퍼(10)와, 다운샘플링 및 기록(다중샘플 분해(multisample resolve)) 스테이지(11)를 구비한다.
프론트엔드 스테이지(8)는 프리미티브들이 래스터화되는 렌더 출력을 발생하기 전에, 처리를 위해 프리미티브들을 어셈블하고, 처리를 위해 렌더 출력이 분할된 각각의 타일에 대해 어떤 프리미티브들을 처리해야 하는지를 표시하는 프리미티브 목록들을 준비하는 단계를 포함하는 다수의 처리 연산을 행한다. 이와 같은 프론트엔드 처리는 도 2 내지 도 8을 참조하여 이하에서 더욱 상세히 설명한다.
그래픽 처리 파이프라인(1)의 래스터화 스테이지(3)는 렌더 출력(예를 들어, 표시할 화상)을 구성하는 프리미티브들을 처리를 위한 개별적인 그래픽 프래그먼트들로 래스터화하도록 동작한다. 이것을 행하기 위해, 래스터화기(3)는 렌더링할 그래픽 프리미티브들을 생성할 렌더 출력을 표시하는 샘플링 위치들의 어레이와 대조하여, 어떤 샘플링 위치를 프리미티브가 커버하는지 판정한다. 그후, 래스터화기는 프리미티브들을 렌더링하기 위한 (적절한 샘플링 위치들을 표시하는) 적절한 위치들을 갖는 그래픽 프래그먼트들을 발생한다.
래스터화기(3)는 프리미티브에 의해 커버되는 렌더 출력을 샘플링하는데 사용되고 있는 샘플링 위치들의 각 샘플링 위치를 처리하기 위해 프래그먼트들을 생성한다. 그후, 이들 프래그먼트들은 처리를 위해 파이프라인의 나머지 부분으로 앞으로 보내진다.
조기 Z/스텐실 스테이지(4)는 래스터화기(3)로부터 수신한 프래그먼트들에 대해 Z(깊이) 테스트를 행하여, 이 스테이지에서 프래그먼트들을 폐기(도태(cull))할 수 있는지를 확인한다. 이것을 행하기 위해, 래스터화기(3)로부터 발행되는 프래그먼트의(와 관련된) 깊이값들을 이미 렌더링된 프래그먼트들의 데이터 값들(이들 데이터 값들은 버퍼(10)의 일부인 깊이(Z) 버퍼에 기억되어 있다)과 비교하여, 새로운 프래그먼트들이 이미 렌더링된 프래그먼트들에 의해 가리는지(또는 아닌지) 판정한다. 이와 동시에, 조기 스텐실 테스트를 행한다.
그후, 프래그먼트 조기 Z 및 스텐실 테스트 스테이지(4)를 통과한 프래그먼트들은 프래그먼트 셰이딩(렌더링) 스테이지(6)로 보내진다. 프래그먼트 셰이딩 스테이지(6)는 조기 Z 및 스텐실 테스트를 통과한 프래그먼트들에 대해 적절한 프래그먼트 처리 연산을 행하여, 당업계에서 공지된 것과 같이, 프래그먼트들을 처리하여 렌더 출력을 위한(예를 들면, 프래그먼트들의 표시를 위한), 적절한 렌더링된 프래그먼트 데이터를 생성한다.
이와 같은 프래그먼트 처리는, 프래그먼트들에 대해 프래그먼트 셰이더 프로그램을 실행하는 것, 프래그먼트들에 대해 텍스처를 적용하는 것, 프래그먼트들에 대해 포깅(fogging) 또는 기타 연산을 적용하는 것 등을 행하여, 당업게에 공지된 것과 같이, 적절한 프래그먼트 데이터를 생성하는 것과 같은, 적절한 원하는 프래그먼트 셰이딩 처리를 포함한다. 본 실시예에서, 프래그먼트 셰이딩 스테이지(6)는 프로그래머블 프래그먼트 셰이더의 형태를 갖지만, 필요한 경우에는, 고정된 기능 프래그먼트 셰이딩 유닛 등의 다른 구성도 가능하다.
그후에, 특히, 셰이딩된 프래그먼트들에 대해 파이프라인 깊이 테스트의 한쪽을 행하여 렌더링된 프래그먼트가 최종 이미지에서 실제로 보이게 되는지 여부를 판정하는 "후기" 프래그먼트 Z 및 스텐실 테스트 스테이지(7)가 존재한다. 이 깊이 테스트는 버퍼(10) 내부의 Z 버퍼에 기억된 프래그먼트의 위치에 대한 Z 버퍼 값을 이용하여, 프래그먼트 셰이딩 스테이지(6)에서 발행되는 프래그먼트들의(와 관련된) 데이터 값들을 (깊이 버퍼에 기억된) 이미 렌더링된 프래그먼트들의 깊이값들과 비교함으로써, 새로운 프래그먼트들에 대한 프래그먼트 데이터가 이미 렌더링된 프래그먼트들의 프래그먼트 데이터를 교체해야 하는지 판정한다. 또한, 이와 같은 후기 프래그먼트 깊이 및 스텐실 테스트 스테이지(7)는 프래그먼트들에 대한 필요한 "후기" 알파 및/또는 스텐실 테스트도 행한다.
그후 후기 프래그먼트 테스트 스테이지(7)를 통과한 프래그먼트들은, 필요에 따라, 블렌더(9)에서 버퍼(10)에 이미 기억된 프래그먼트들과의 필요한 블렌딩 연산을 겪는다. 디더(미도시) 등의 프래그먼트들에 필요한 나머지 다른 연산도 이 스테이지에서 행해진다.
마지막으로, (블렌드된) 출력 프래그먼트 데이터(값들)가 버퍼(10)에 기록되고, 이 버퍼로부터 이들 데이터가 예를 들어 프레임 버퍼로 출력되어 표시될 수 있다. 출력 프래그먼트에 대한 깊이값도 버퍼(10) 내부의 Z 버퍼에 적절히 기록된다. 타일 버퍼와 Z 버퍼는, 이 버퍼가 표시하는 각각의 샘플링 포인트에 대해(본질적으로는 처리되고 있는 타일의 각각의 샘플링 포인트에 대해) 적절한 칼라, 또는 Z 값을 각각 기억한다, 따라서, 타일 버퍼는 현재 처리되고 있는 렌더 출력(예를 들면, 표시할 프레임)의 일부를 표시하는 프래그먼트 데이터의 어레이를 기억한다.
본 실시예에서는, 3개의 타일 버퍼가 설치된다. 각각의 타일 버퍼는 그것의 프래그먼트 데이터를 (발생할 출력, 예를 들면 표시할 화상 내부의 32x32 어레이의 샘플링 위치들에 대응하는) 32x32 어레이로 기억한다. 따라서, 각각의 32x32 데이터 위치의 타일 버퍼는, 4x 안티엘리어싱(anti-aliasing)에서(즉, 픽셀당 4개의 샘플들을 취할 때), 예를 들면 표시할 프레임의 16x16 픽셀의 "타일"에 대응할 수 있다.
이들 타일 버퍼는 별개의 버퍼로 설치되거나, 또는 실제로 동일한 더 큰 버퍼의 일부이어도 된다. 이들 타일 버퍼는 그래픽 처리 파이프라인(칩)에(로컬하게) 배치된다.
본 실시예에서는, 3개의 타일 버퍼들 중에서 2개를 사용하여 각각의 샘플링 포인트에 대한 칼라(적, 녹, 청)값들을 기억하고(이와 같은 목적을 위해 한 개의 타일 버퍼를 사용할 수도 있지만, 2개가 바람직하다), 한 개의 타일 버퍼를 사용하여 각각의 샘플링 포인트에 대한 Z(깊이) 값 및 스텐실 값들을 기억한다. 물론, 다른 구성도 가능하다.
타일 버퍼(10)로부터의 데이터는 다운샘플링(다중샘플 분해) 유닛(11)에 입력되고, 여기에서 표시장치(미도시)의 프레임 버퍼 등의 출력 버퍼(이것은 그래픽 처리 플랫폼 그 자체에 위치하지 않을 수도 있다)에 출력된다(라이트백된다). (표시장치는, 예를 들어, 컴퓨터 모니터 또는 프린터 등의 픽셀들의 어레이를 포함하는 디스플레이를 구비할 수 있다.)
다운샘플링 유닛(11)은 타일 버퍼(10) 내부에 기억된 프래그먼트 데이터를 출력 버퍼(디바이스)를 위한 적절한 해상도로(즉, 출력 디바이스의 픽셀들에 대응하는 픽셀 데이터의 어레이가 발생되도록) 다운샘플링하여, 출력 버퍼(13)에 출력하기 위한 출력 값들(픽셀들)(14)을 발생한다.
본 실시예에서 그래픽 처리 파이프라인(1)의 다운샘플링 유닛(11)은 한번의 다운샘플링 연산(클록 사이클)에서 타일 버퍼(10)로부터의 4개의 샘플링 위치 값들을, 예를 들어 출력 버퍼(13)로 출력하기 위한 한 개의 출력 값(14)으로 다운샘플링할 수 있도록 동작한다.
다운샘플링은 임의의 적절한 방식으로 일어날 수 있다. 본 실시예에서는, 데이터의 선형 블렌딩을 이용하여 그것을 다운샘플링한다. 그러나, 필요한 경우에는, 다른 구성도 가능하다. 필요한 경우에는, 다운샘플링 유닛(11)도 그것이 출력 버퍼(13)로 출력하는 데이터에 대해 적절한 감마 정정을 적용해도 되고, 또는 이것이 예를 들어 프래그먼트 셰이딩 연산으로서 행해지거나, 다른 적적한 원하는 방법으로 행해져도 된다.
렌더 출력의 타일이 처리되고 그것의 데이터가 메인 메모리(예를 들면, 메인 메모리(미도시) 내부의 프레임 버퍼)로 출력되어 기억되면, 전체 렌더 출력(예를 들어, 표시할 프레임(이미지))을 발생하기 위해 충분한 타일들이 처리될 때까지 다음 타일이 처리된다.
그래픽 처리 파이프라인(1)의 다른 구성도 물론 가능하다.
도 2는 도 1에 도시된 그래픽 처리 파이프라인(1)의 프론트엔드 처리(8)를 더욱 상세히 나타낸 것이다.
도 2에 도시된 것과 같이, 본 발명의 실시예에서의 프론트엔드 처리(8)는, 삼각형 어셈블러(assembler)(어셈블리 스테이지)(20), 오프스크린(off-screen) 삼각형 도태 유닛(스테이지)(21), 삼각형 후방 대면 판정 및 도태 유닛(스테이지)(22) 및 타일러(타일링 유닛 스테이지(23)를 포함한다. (본 실시예에서는, 처리할 프리미티브들이 삼각형의 형태를 갖는 것으로 가정한다. 그러나, 필요한 경우에는 다른 형태의 프리미티브를 사용할 수도 있다(그리고 본 실시예에서 나타낸 삼각형과 대응하게 처리된다)).
삼각형 어셈블러(20)는, 발생할 렌더 출력에 대한 정점들의 세트 또는 스트림을 렌더 출력을 발생하기 위해 처리할 원하는 시퀀스 및 세트의 프리미티브들로 변환한다. 이것을 위해, 삼각형 어셈블러는, 렌더 출력을 발생하는데 사용할 정점들의 세트에 대한 적절히 변형된 위치 속성들(24)과 함께, 렌더링할 프리미티브들(삼각형들)을 형성하기 위해 정점들이 어떻게 합성되어야 하는지를 정의하는 그래픽 처리 파이프라인에 대한 어플리케이션 프로그램 인터페이스에 의해 제공된 (예를 들어, 정점 색인들의 형태를 갖는) 연결 정보(25)를 이용한다.
변형된 위치 속성들(24)은, 예를 들면, 제공되는 초기의 정점 속성들에 대해 정점 셰이딩 연산을 행하여, 예를 들면, 적절히 변형된 색인들을 출력하는 정점 셰이딩 스테이지(미도시)에 의해 주어진다.
또한, 삼각형 어셈블러(20)는, 필요한 경우에는, 퇴화 삼각형(예를 들면, 2개 이상의 정점들이 동일한 위치에 위치하는 삼각형)들을 거부한다.
오프스크린 삼각형 도태 유닛(21)은, 삼각형 어셈블러(20)에 의해 어셈블된 삼각형들을 수신하고, 이들 삼각형이 생성할 렌더 출력에 대해 정의된 경계 외부에 완전히 놓이는지 여부를 판정한다. 삼각형이 해당 렌더링 경계 외부에 완전히 놓이는 경우에는, 그것을 도태시킨다.
후방 대면 판정 및 도태 유닛(22)은, 프리미티브들(삼각형들)이 후방 대면인지 아닌지 판정하고, 후방 대면 프리미티브들을 추후의 처리로부터 퇴출시키도록 동작한다. 본 발명에 따른 이와 같은 연산을 행하기 위한 다수의 바람직한 실시예를 도 3 내지 도 8을 참조하여 이하에서 더욱 상세히 설명한다.
도 2에 도시된 것과 같이, 후방 대면 판정 및 도태 유닛(22)은, 특히, "미소 삼각형(micro-triangle)" 도태 유닛(26), 삼각형 면적 계산기(27) 및 후방 대면 도태 유닛(28)을 구비한다.
미소 삼각형 도태 유닛(26)은, 너무 크기가 작아서 렌더 출력을 발생하는데 사용되고 있는 모든 샘플링 포인트들을 놓치는(miss) 삼각형들을 폐기하도록 동작한다. 이것을 행하기 위해, 미소 삼각형 도태 유닛은 삼각형들의 모서리들에 대해 직선 방정식들을 결정 및 사용하여, 삼각형이 래스터화 처리 중에 고려되는 모든 샘플링 포인트들을 놓치는지 여부를 검사한다. 삼각형이 모든 샘플링 포인트들을 놓치면, 이 삼각형은 너무 작으므로 토태된다.
면적 계산기(27)는 미소 삼각형 도태 유닛(26)을 통과한 삼각형들의 면적의 부호를 판정한다.
후방 대면 도태 유닛(28)은 면적 계산기(27)에 의해 계산된 삼각형에 대한 면적의 부호를 이용하여 후방 대면 프리미티브들(삼각형들)을 식별하고 도태시킨다.
본 실시예에서는 미소 삼각형 도태 유닛이 면적 계산기(27) 및 후방 대면 도태 유닛(28) 앞에서 동작하는 것으로 도시되어 있지만, 다른 실시예에서는, 미소 삼각형 도태 유닛(26)이 면적 계산기(27) 및 후방 대면 도태 유닛(28) 뒤에서 또는 이와 병렬로 동작해도 된다. 사실상, 이들 유닛들과 동일한 계산을 공유하므로, 이와 같은 구성이 바람직하다.
그후, 후방 대면 도태 스테이지(22)를 통과한 프리미티브들(삼각형들)은,. (렌더 출력 내부의 프리미티브의 위치에 근거하여) 렌더 출력의 어떤 타일들에 대해 프리미티브가 처리되어야 하는지를 식별하도록 동작하고, 해당 프리미티브가 해당 타일들에 대한 관련된 프리미티브 목록들(29)로 처리되어야 한다는 것을 표시하는 적절한 명령을 추가하는 타일러(23)로 주어진다.
타일러(타일링 스테이지)(23)는 임의의 적절한 원하는 방법으로 프리미티브들을 타일들로 소트하도록 동작할 수 있다. 바람직한 실시예에서는, 고려되고 있는 각각의 삼각형에 대해 바운딩 박스가 생성된 후, 렌더 출력에 대해 테스트함으로써, 프리미티브가 (잠재적으로) 속하는 렌더 출력 면적(따라서 타일 또는 타일들)을 결정한다. 필요한 경우에는, 정밀 비닝(exact binning)과 같이, 바운딩 박스 비닝 이외의 타일링 구성이 사용되거나 대신 사용될 수 있다.
도 3 내지 도 8은 본 발명에 따른 도 2에 도시된 프론트엔드 처리의 동작에 대한 3가지 바람직한 실시예들을 개략적으로 나타낸 것이다.
도 3 및 도 4는, 특정한 사이즈보다 큰 삼각형들(프리미티브들)은 후방 대면 도태 면적 계산 또는 도태 테스트를 겪지 않고, 더 작은 삼각형들은, 더 간편한 면적 계산과, 특히 고정 소수점 처리와 선택된 범위의 데이터 값들을 사용하는 후방 대면 도태 테스트를 겪는 제 1 실시예를 나타낸 것이다.
도 3은 처리 스테이지들 및 유닛들을 나타낸 것이고, 도 4는 본 발명의 본 실시예에서의 프론트엔드 처리 연산을 나타낸 대응하는 흐름도이다.
알 수 있는 것과 같이, 도 3은 도 2에 도시된 프론트엔드 처리의 스테이지들 및 유닛들을 더욱 상세히 나타낸 것이다.
도 3에 도시된 것과 같이, 삼각형 어셈블리 스테이지(20) 다음에, 본 실시예에서는, 그래픽 처리 파이프라인으로 제공되고, 예를 들면, 부동 소수점 포맷으로, 정점 셰이딩 스테이지에서 처리되는 삼각형 정점 좌표들이 먼저 고정 소수점 변환기(30)를 사용하여 고정 소수점 포맷의 대응하는 좌표들의 세트로 변환된다.
또한, 고정 소수점 변환기(30)는 처리할 출력 근처의 가드 영역의 모서리들 바깥에 속하는 좌표들을 가드 영역 모서리들 위에 놓이는 값으로 고정(clamp)(설정)한다.
부동 소수점 삼각형 정점 좌표들은 임의의 적절한 원하는 방법으로 고정 소수점 포맷으로 변환될 수 있다. 본 실시예에서는, 고정 소수점 포맷은 바람직하게는 정의된 최대 좌표값 범위 및 최소 정밀도(precision)를 갖는 샘플링 위치들의 그리드를 표시할 수 있어, 고정 소수점 좌표들이 충분히 정의된 최대값과 (픽셀의 1/256 등의) 정의된 최소 정밀도를 갖게 된다. 이것은, 예를 들어, 원래 제공된 부동 소수점 좌표값들이 이와 같은 샘플링 위치들의 그리드에 균일하게 들어맞도록(snapped) 제약을 겪는 경우에 특히 적절하다.
삼각형 정점 좌표들에 사용되는 실제 고정 소수점 포맷은, 필요에 따라, 예를 들면, 사용될 좌표값들의 최대 범위와 정밀도에 따라 선택될 수 있다. 이것은, 그래픽 처리 파이프라인이 일부를 이루는 전체 데이터 처리 시스템의 최대 지원된 출력(예를 들면, 스크린) 사이에 근거하여도 되고, 바람직하게는 이에 근거한다. 예를 들어, 1/256 픽셀의 최소 정밀도를 갖는 16k/16x 픽셀들의 최대 지원된 스크린 사이즈에 대해, 적절한 고정 소수점 포맷은 부호를 갖는 16:8 고정 소수점 포맷이 될 것이다. 물론, 다른 구성도 가능하다.
그후, 이와 같이 변환된 프리미티브들은 오프스크린 도태 유닛(스테이지)(21)에서 오프스크린 도태를 겪는다. 이와 같은 유닛은 임의의 적절한 원하는 방법으로 프리미티브들이 오프스크린인지 아닌지를 판정한다. 예를 들어, 이 유닛은, 3개의 모든 정점들이 동일한 스크린 모서리의 보이지 않는 변 위에 있는지(예를 들어, 모든 x<0, 또는 모든 y>스크린 높이) 판정한다. 필요한 경우에는, 이 유닛이 장면 절두체 도태를 더 행하거나 대신에 행할 수도 있다.
그후, 오프스크린이기 때문에 도태되지 않은 삼각형들은 도 3에 도시된 것과 같이(이것은 도 2에 대응한다) 후방 대면 결정 및 도태 유닛(22)으로 주어진다.
후방 대면 결정 및 도태 연산의 첫 번째 스테이지로서, 사이즈 추정기(31)에 의해 삼각형의 사이즈(면적)가 추정된다.
본 실시예에서, 사이즈 추정기는, 삼각형에 대한 정점들 중에서 어느 것이 가드 영역 모서리에 놓이는지 여부를 판정함으로써 삼각형의 면적을 추정한다. (삼각형의 정점들 중에서 어느 것이 가드 영역 모서리에 고정된 경우에는, 프리미티브가 거대하여, 예를 들어, (필요한 경우에) 그것의 가시성(visibility)을 결정하기 위해서는 전체 부동 소수점 계산을 요구하거나, 또는 프리미티브가 작아 스크린의 일측으로부터 완전히 벗어난다(이 경우에는, 이 프리미티브가 대수롭지 않게 이미 거부되었을 수도 있으며, 거부되지 않은 경우에는, 이 시점에서 거부될 수 있다).)
사이즈 추정기(31)가 삼각형에 대한 정점들이 가드 영역 모서리에 놓이지 않는 것으로 판정한 경우에는, 삼각형이 후방 대면 도태 연산을 겪을 수 있을 정도로 충분히 작은 것으로 판정되므로, 이 삼각형은 테스트를 위해 미소 삼각형 도태 유닛(26)으로 전달된다.
삼각형이 미소 삼각형 도태 유닛(스테이지)(26)에 의해 도태되지 않은 경우에는, 이 삼각형이 면적 계산기(32)로 전달되고, 그후 후방 대면 도태 유닛(280으로 전달된다.
본 실시예에서는, 면적 계산기(32)는, 프리미티브 정점들에 대한 고정 소수점 값들을 사용하여 삼각형의 면적의 부호를 결정하도록 구성되므로, 비교적 효율적으로 삼각형에 대한 면적 계산을 행할 수 있다.
본 실시예에서, 면적 계산기(32)는 x 및 y 좌표를 각각 갖는 3개의 정점들 패, v1 및 v2를 갖는 삼각형의 면적의 부호를 다음과 같이 결정한다.
면적 = ((v1.x-v0.x)(v2.y-v0.y)-(v1.y-v0.y)(v2.x-v0.x))
이때, 정점 좌표들 v1.x, v0.x 들은 이들 좌표에 대한 적절한 고정 소수점 포맷의 값들이다.
이와 같은 수식은 삼각형의 2개의 모서리들로 이루어진 평행사변형의 면적을 제공한다(따라서 삼각형의 면적의 2개인 값을 산출하게 된다). 그러나, 대면 방향 결정을 위해 중요한 것은 면적의 부호(또는 면적이 정확히 제로값이거나)이므로, 이 수식이 삼각형의 정확한 면적을 계산하지 못한다는 사실은 대면 방향 결정을 위해 무시할 수 있다(또는 필요한 경우에는 수월하게 수정할 수도 있다).
면적 계산기(32)는, 면적 계산을 위해 필요한 감산 및 승산을 행할 수 있는 고정 소수점 산술연산 로직 유닛을 구비하여도 되고, 바람직하게는 구비한다.
그후, 후방 대면 도태 유닛(28)은, 면적 계산기(32)에 의해 계산된 삼각형의 면적의 부호를 이용하여, 이 삼각형이 후방 대면인지 아닌지를 판정한다. 후방 대면 도태 유닛이 삼각형이 후방 대면이라고 판정한 경우에는, 이 삼각형을 도태시킨다.
그후, 삼각형이 후방 대면 도태 판정을 통과하면, 타일러(23)로 전달되어 타일링된다.
도 3에 도시된 것과 같이, 삼각형이 너무 커서 후방 대면 도태 연산을 겪을 수 없는 것으로 사이즈 추정기(31)가 판정하는 경우에는, 이 삼각형이 단순히 타일러(23)로 직접 전송되는데, 즉 이 삼각형에 대해서는 미소 삼각형 도태(26), 면적 계산(32) 및 후방 대면 도태(29) 연산을 생략한다(건너뛴다).
본 출원인은, 이와 관련하여, 더 작은 삼각형들에 대해서는, 그것들의 면적을 결정하고 고정 소수점 산술연산 및 데이터 값들을 이용하여 후방 대면 도태 연산을 행하는 것이 가능하므로, 이 처리를 비교적 효율적으로 행할 수 있다는 것을 인식하였다. 그러나, 본 출원인은, 삼각형 면적 계산 및 후방 대면 도태 연산을 위해 고정 소수점 산출연산 및 값을 이용하는 것은 렌더링될 모든 삼각형에 적합하지 않을 수도 있으며, 특히, 이와 같은 구성은 매우 큰 삼각형들을 처리할 때 사용하는데에는 적합하지 않을 수도 있다는 것을 인식하였다.
본 발명은, 사이즈 추정기(31)를 사용하여 삼각형들의 사이즈에 따라 처리할 삼각형들을 분류한 후, 이 연산이 적합하지 않는 매우 큰 삼각형들에 대해서는 고정 소수점 산술연산 후방 대면 결정 및 도태 연산을 우회(건너뜀)함으로써 이것을 해소한다(그러나, 고정 소수점 후방 대면 결정 및 도태를 행하는데 유효한 더 작은 삼각형들은 후방 대면 결정 및 도태 연산을 겪는다).
이에 따르면, 타일링 연산(23) 이전에, 그리고, 예를 들어, 모든 경우의 삼각형에 대해, 특히 이와 같은 방법으로 만족스럽게 처리될 수 없을지도 모르는 큰 삼각형에 대해, 후방 대면 결정 및 도태를 수행하기 위한 지원을 제공할 필요가 없이, 비교적 효율적으로 후방 대면 도태를 행할 수 잇다.
도 4는 도 3에 도시된 프론트엔드 처리 파이프라인 구성에 대한 동작 시퀀스들을 나타낸 흐름도이다.
도 4에 도시된 것과 같이, 프론트엔드 처리는 삼각형 어셈블러(20)가 정점 색인들을 수집하여 처리되고 있는 삼각형을 어셈블하는 것으로 개시한다(스텝 40). 그후, 삼각형이 퇴화되었는지 여부를 판정한다(스텝 41). 삼각형이 퇴화한 것으로 판정된 경우에는, 이 삼각형이 거부된다(스텝 52).
한편, 삼각형이 퇴화하지 않은 것으로 판정된 경우에는, 이 삼각형에 대한 부동 소수점 정점 데이터가 페치되고(스텝 42), 대응하는 고정 소수점 값들로 변환된다(스텝 43).
그후, 가드 영역 밖에 속하는 정점들이 가드 영역 모서리들에 고정된다(스텝 44).
그후, 삼각형이 완전히 오프스크린인지 여부를 판정한다(스텝 45). 삼각형이 완전히 오프스크린 것으로 판정된 경우에는, 이 삼각형이 거부된다(스텝 52).
그후, 스텝 45에서 삼각형이 완전히 오프스크린이 아닌 것으로 판정된 경우에는, 삼각형의 정점들 중에서 어느 것이 가드 영역의 모서리에 위치하는지 여부를 판정한다(스텝 46).
모든 정점들이 가드 영역의 모서리에 위치하는 것으로 판정된 경우에는, 삼각형이 "큰" 것으로 판정하여, 온스크린(on-screen)인 것으로 가정함으로써(스텝 51), 타일링 연산으로 직접 주어진다(스텝 53)(즉, 후방 대면 결정 및 도태 스텝들 47 내지 50은 우회한다(건너뛴다)).
스텝 46에서 삼각형의 정점들이 모두 가드 영역의 모서리에 위치하지 않는 것으로 판정된 경우에는, 이 삼각형이 "작은" 것으로 분류되어(즉, 그것의 사이즈가 고정 소수점 후방 대면 결정 및 도태 연산을 수행하는데 적합한 것으로 판정되어), 이 삼각형에 대한 사이즈 추정값이 스텝 47에서 결정된다.
스텝 48에서, 모든 샘플링 포인트들을 놓칠 정도로 삼각형이 충분히 작은지 여부를 판정한다(그런 경우에는 삼각형이 거부된다(스텝 52)). 삼각형이 모든 샘플링 포인트들을 놓칠 정도로 작지 않은 경우에는, 고정 소수점 산술연산과 정점들이 변환된 고정 소수점 좌표값들을 이용하여 삼각형의 면적의 부호를 계산한다(스텝 49).
그후, 스텝 49에서 계산한 면적의 부호를 사용하여 삼각형이 후방 대면인지 아닌지를 판정한다(스텝 50).
삼각형이 후방 대면인 경우에는, 이 삼각형이 거부되지만(스텝 52), 후방 대면이 아닌 경우에는, 타일링 연산을 겪게 되고(스텝 53), 적절한 삼각형 데이터가 적절한 타일 목록들에 기록된다(스텝 54).
그후, 고려할 모든 삼각형들이 처리될 때까지, 다음 삼각형이 마찬가지로 처리될 수 있다.
도 5 및 도 6은 본 발명에 따른 도 2에 도시된 프론트엔드 처리의 제 2 실시예를 나타낸 것이다. 도 5는 처리 스테이지들 및 유닛들을 나타낸 것이고, 도 6은 본 발명의 본 실시예에서의 프론트엔드 처리 연산을 나타낸 대응하는 흐름도이다.
도 5 및 도 6에서 알 수 있는 것과 같이, 본 실시예에서는, 사이즈 추정기(31)가 가드 영역 모서리 위에 삼각형의 정점이 놓이는지 판정하는 경우(도 6의 스텝 46)(즉, 삼각형이 너무 커서 고정 소수점 후방 대면 도태 연산을 겪을 수 없는지 판정하는 경우), 삼각형이 곧바로 타일러(23)(타일링 스텝(53)으로 보내지는 것이 아니라, 삼각형의 면적의 부호를 계산하여 부동 소수점 면적 계산기(60)(도 5)에서 부동 소수점 산출연산과 정점 좌표들에 대한 값들을 이용하여 삼각형에 대한 후방 대면 도태 결정을 행하는 것(도 6의 스텝 65)을 제외하고는, 도 3 및 도 4에 도시된 실시예에서와 동일하게 삼각형들이 기본적으로 처리된다.
이것을 행하기 위해, 도 6의 스텝 65에서 면적 계산기(60)는, 삼각형의 정점들에 대한 초기 부동 소수점 값들을 취하고, 프리미티브의 w 좌표들 및 와인딩의 부호들에 의해 수정된, (부동 소수점 값들로 표현된) 프리미티브에 대한 정점들의 x/y 좌표들의 교차 곱을 취함으로써 이들 부동 소수점 값들을 사용하여 삼각형의 면적의 부호를 계산한다.
부동 소수점 면적 계산기(60)는, 면적 계산에 필요한 감산 및 승산을 행할 수 있는 부동 소수점 산술연산 로직 유닛을 구비해도 되고, 바람직하게는 구비한다.
이것은, 고정 소수점 면적 계산기(32)(도 6의 스텝 49)를 사용하여 대면 방향 결정을 위해 처리할 수 없는 삼각형들이 여전히 후방 대면 도태 및 결정 연산을 겪을 수 있다는 것을 의미한다. 그러나, 고정 소수점 산술연산 및 값들을 사용하여 처리하는데 적합하지 않은 것으로서 사이즈 추정기(31)에 의해 판정된 삼각형들만이 면적 계산기(60)에서 부동 소수점 산출연산 및 값들을 사용하여 처리함으로써(도 6의 스텝 65), 더 많은 전력을 소모하고 다수의 클록 사이클들을 필요로 하는 부동 소수점 계산이 고정 소수점 처리를 사용하여 처리할 수 없는 것으로 판정되는 삼각형들에 대해서만 행해지도록 보장한다.
도 5 및 도 6에 도시된 실시예에서와 같이, 후방 대면 결정 및 도태 유닛(22)이 삼각형들의 고정 소수점 및 부동 소수점 처리 모두를 지원하는 경우에는, 고정 소수점 경로 또는 부동 소수점 경로를 사용한 삼각형의 처리 사이의 분할을 필요에 따라 선택하고 변경할 수 있다. 예를 들어, 전술한 실시예에서는, 예를 들어, 16:8 고정 소수점 데이터 값 포맷을 사용하여 표현될 수 있는 데이터 값들을 갖는 삼각형들에 대해서는, 고정 소수점 경로를 사용하는 것으로 가정한다(이와 같은 방식으로 표현될 수 없는 데이터 값들을 갖는 삼각형들은 부동 소수점 처리 경로를 사용하여 처리된다)). 그러나, 예를 들어, 고정 소수점 경로는 고정 소수점 8:* 포맷을 사용하는 데이터 값들을 지원하는 것으로 설정하는 것이 가능할 것이며, 이와 같은 포맷으로 표현할 수 없는 데이터 값들을 갖는 삼각형들은 부동 소수점 처리 경로를 거쳐 처리된다. 이와 같은 구성은, 예를 들어, 단순히 모든 삼각형들을 부동 소수점 산술연산 및 데이터 값들을 이용하여 처리하는 것보다, 더 적은 면적을 갖고 더 작은 전력을 사용하는 후방 대면 결정 및 도태 유닛을 용이하게 한다.
도 7 및 도 8은 본 발명에 따른 도 2에 나타낸 프론트엔드 처리의 제 3 실시예를 나타낸 것이다. 도 7은 처리 스테이지들 및 유닛들을 나타낸 것이고, 도 8은 본 발명의 본 실시예에서의 프론트엔드 처리 연산을 나타낸 대응하는 흐름도이다.
도 7 및 도 8에서 알 수 있는 것과 같이, 본 실시예에서는, 후방 대면 결정 도태 스테이지(22)가 프리미티브의 면적의 부호를 결정하기 위한 2가지 고정 소수점 처리 경로(70, 71), 즉 "좁은(narrow)" 고정 소수점 면적 계산기(70) 및 "넓은(wide)" 고정 소수점 면적 계산기(71)를 지원한다는 것을 제외하고는, 도 5 및 도 6에 도시된 실시예와 기본적으로 동일하게 처리된다. "좁은" 고정 소수점 면적 계산기(70)는 특정한 사이즈(비트 수)까지 고정 소수점 데이터 값을 사용하여 산술 연산을 행할 수 있다. "넓은" 고정 소수점 면적 계산기(70)는 더 큰 크기(비트 수)를 갖는 고정 소수점 데이터 값들을 사용하여 산술 연산을 행할 수 있다.
따라서, 본 실시예에서는, 사이즈 추정기(31)는, 주어진 프리미티브가 "거대하여" 부동 소수점 면적 계산기(60)를 사용하여 후방 대면 결정을 위해 그것의 면적을 계산해야 하는지, 또는 "커서" 넓은 고정 소수점 면적 계산기(71)를 사용하여 후방 대면 결정을 위해 그것의 면적을 계산해야 하는지, 또는 좁은 고정 소수점 면적 계산기(70)를 사용하여 후방 대면 결정을 위해 그것의 면적의 부호를 계산할 수 있을 정도로 충분히 작은지 여부를 식별한다.
(도 7 및 도 8에 도시된 것과 같이, 좁은 고정 소수점 면적 계산기(70)를 사용하여 처리할 "작은" 삼각형들은 미소 삼각형 도태 연산(26)(도 8의 스텝 48)도 겪는다.)
도 8에 도시된 것과 같이, 사이즈 추정기(31)는, 삼각형의 정점들의 어느 것이 가드 영역의 모서리에 놓이는지 판정(도 8의 스텝 46)함으로써, 처리할 삼각형이 "거대하여" 부동 소수점 면적 계산기(60)에서 부동 소수점 산술연산을 사용하여 면적을 계산해야 하는지 여부를 판정한다. 예를 들어, 좌표들 중에서 어느 것이 216보다 큰 경우에는, 삼각형에 대한 부동 소수점 좌표들의 절대값 크기를 사용하여 삼각형이 "거대한지"(따라서, 부동 소수점 산술연산을 사용하여 그것의 면적을 계산해야 하는지) 아닌지를 더 판정하거나 그 대신에 판정할 수 있다.
스텝 46에서, 정점들 모두가 가드 영역의 모서리에 위치하지 않는 것으로(즉, 삼각형이 고정 소수점 산술연산을 사용하여 처리할 정도로 충분히 작은 것으로) 판정된 경우에는, 스텝 47에서 프리미티브의 사이즈의 추가적인 추정값이 결정된다. 이와 같은 사이즈 추정값은 프리미티브를 "좁은" 또는 "넓은" 고정 소수점 값들을 사용하여 그것의 면적을 계산하는데 적합한 것으로 분류하도록 동작한다.
이것은 임의의 적절한 방법으로 행해질 수 있지만, 바람직한 실시예에서는, 스텝 47에서 각각의 정점 좌표 쌍들, v1.x-v0.x, v2.y-v0.y, v1.y-v0.y 및 v2.x-v0.x 사이의 차이를 계산함으로써 사이즈 추정값이 계산된다(이들 차이는 전술한 것과 같이 면적 계산의 일부로서 이용된다). 사이즈 추정기(31)는, 이들 감산 연산의 결과들이 모두 좁은 고정 소수점 포맷 면적 계산기(70)가 사용하는 좁은 고정 소수점 포맷을 사용하여 표시될 수 있는지 아닌지를 판정한다(스텝 80).
사이즈 추정기(31)는, 면적 추정에 필요한 감산을 행할 수 있는 고정 소수점 산술연산 로직 유닛을 구비해도 되고, 바람직하게는 구비한다.
정점 좌표 감산의 결과들이 좁은 고정 소수점 면적 계산기(70)의 좁은 고정 소수점 포맷을 이용하여 표현할 수 있는 정도로 충분히 작은 것으로 판정된 경우에는, 도 8에 도시된 것과 같이, 이 삼각형을 테스트하여, 이 삼각형이 미소 삼각형 도태 유닛(260 내부의 모든 샘플링 포인트들을 커버하지 않을 정도로 작은지 여부를 판정한다(스텝 48). 삼각형이 미소 삼각형 도태부(26)에 의해 거부되는 경우에는, 면적 계산의 나머지 부분(즉, 감산의 결과들의 필요한 승산 및 이들 결과들의 감산)을 좁은 고정 소수점 면적 계산기(70)에서 좁은 고정 소수점 값들을 사용하여 행해진다(스텝 81).
한편, 스텝 70에서, 스텝 47에서 행해진 감산 연산의 결과들이 좁은 고정 소수점 포맷을 사용하여 표현될 수 없는 것으로 판정된 경우에는, 넓은 고정 소수점 면적 계산기(71)에서 넓은 고정 소수점 값들을 사용하여 프리미티브의 면적의 부호가 그 대신에 계산된다. 마찬가지로, 이 구성에서는, 넓은 고정 소수점 면적 계산기(71)가 스텝 47에서 사이즈를 추정하기 위해 발생된 차이값들의 필요한 승산과 그후 면적의 부호를 제공하기 위한 이들 결과들의 감산을 행한다.
좁은 고정 소수점 면적 계산기(70)는, 특정한 포맷(사이즈)의 고정 소수점 값들을 이용하여 면적 계산(의 나머지)을 위해 필요한 감산 및 승산을 행할 수 있는 고정 소수점 산술연산 로직 유닛을 구비해도 되고, 바람직하게는 구비한다.
넓은 고정 소수점 면적 계산기(71)는, 더 큰 포맷(사이즈)의 고정 소수점 값들을 이용하여 면적 계산(의 나머지)을 위해 필요한 감산 및 승산을 행할 수 있는 고정 소수점 산술연산 로직 유닛을 구비해도 되고, 바람직하게는 구비한다.
따라서, 이와 같은 구성은, 예를 들어, 동일한 더 넓은 고정 소수점 산술연산을 사용한 부동 소수점 산술연산을 이용하여 처리될 필요가 없는 모든 삼각형들을 처리하는 것이 아니라, 더 작고(따라서, 더 전력 효율적이고) 좁은 고정 소수점 산술연산을 이용하여 충분히 작은 삼각형들이 처리될 수 있게 한다.
도 7 및 도 8에 나타낸 실시예에서와 같이, 후방 대면 결정 도태 유닛이 삼각형들의 2가지 형태의 고정 소수점 처리를 지원하는 경우에는, 각각의 서로 다른 고정 소수점 경로와 서로 다른 고정 소수점 경로들의 상대적인 "사이즈"를 이용하여 삼각형들의 처리 사이의 분할을 필요에 따라 선택 및 변경할 수 있다. 예를 들면, 넓은 고정 소수점 경로(면적 계산기 71)는 16:8 포맷의 고정 소수점 수치들을 사용할 수 있고, 좁은 고정 소수점 경로(면적 계산기 70)는 4:8 포맷의 고정 소수점 수치를 사용할 수 있다.
정점 좌표들을 감산하여 얻어진 차이 값들이 좁은 고정 소수점 포맷을 이용하여 표현될 수 있는 삼각형들은 좁은 고정 소수점 처리 경로를 이용하여 처리될 수 있으며, 나머지 삼각형은 넓은 고정 소수점 포맷의 처리 경로를 이용하여 처리될 수 있다. 따라서, 예를 들면, 예를 들어 16 픽셀(및/또는 샘플링 위치들)까지의 최대 치수를 갖는 삼각형들은 좁은 고정 소수점 처리 경로를 이용하여 처리할 수 있고, 16 내지 1000 픽셀(및/또는 샘플링 위치들)의 최대 치수를 갖는 삼각형들은 넓은 고정 소수점 처리 경로를 이용하여 처리할 수 있고, 1000 픽셀(및/또는 샘플링 위치들)보다 큰 치수를 갖는 삼각형들은 부동 소수점 처리 경로를 이용하여 처리할 수도 있다.
본 실시예에 있어서 좁은 고정 소수점 면적 계산기(70)와 넓은 고정 소수점 면적 계산기(71)는 필요에 따라 배치될 수 있다. 예를 들어, 이것들은 완전히 별개의 연산 처리 유닛이거나, 좁은 고정 소수점 면적 계산기(70)가 넓은 고정 소수점 면적 계산기(71)의 서브셋(서브유닛)일 수도 있다(즉, 넓은 고정 소수점 면적 계산 유닛(71)의 서브셋을 이용하여 좁은 고정 소수점 면적 계산을 행한다).
필요한 경우에는, 전술한 실시예들에 대해 다양한 변형, 변경 및 추가가 행해질 수 있다.
예를 들면, 정점들의 부동 소수점 좌표들의 크기는, "거대한" 삼각형들을 "식별"하는데 사용되는 것 이외에, 삼각형(프리미티브)에 대한 바운딩 박스 유도를 행하는 방식을 결정하는데, 즉 고정 소수점 좌표들을 이용하여(예를 들어, 24:8 고정 소수점 좌표들을 이용하여) 바운딩 박스 유도를 행할 것인지, 또는 부동 소수점 좌표들(예를 들어, FP32 좌표들)을 이용하여 바운딩 박스 유도를 행할 것인지를 결정하는데 사용될 수도 있다.
또한, 예를 들어, 좌표들의 크기가 이용가능한 고정 소수점 경로에 대해 너무 큰 것으로 판정되지만, 사실상 고정 소수점 표현의 모든 정밀도를 사용하지 않는 것으로 판정된 경우에는, 고정 소수점 처리 경로에 "적합하도록(fit)" 좌표들(즉, 프리미티브)의 크기를 줄이는 것도 가능할 수 있을 것이다.
처리되고 있는 그래픽 프리미티브들이 삼각형들인 것을 참조하여 본 실시예들을 위에서 설명하였지만, 본 발명은, 필요에 따라, 삼각형이 아니라, 다른 형태의 그래픽 프리미티브를 위해 마찬가지로(이에 대응하여) 사용될 수도 있다는 것은 자명하다.
전술한 발명내용으로부터, 본 발명은, 적어도 그것의 바람직한 실시예들에 있어서, 예를 들어, 타일 기반의 그래픽 처리 파이프라인에서의 타일링 연산 전에, 프리미티브들의 후방 대면 도태를 행하는 더욱 효율적인 메카니즘을 제공한다는 것을 알 수 있다. 이것은, 본 발명의 바람직한 실시예들에서는, 처리할 프리미티브들을 그것들의 사이즈에 따라 분류하고, 그후 프리미티브의 사이즈에 근거하여 프리미티브에 대한 후방 대면 결정 및 도태 연산을 위한 처리 경로를 선택함으로써 달성된다.

Claims (25)

  1. 그래픽 처리 파이프라인에서 그래픽 프리미티브를 처리하는 방법으로서,
    상기 프리미티브의 속성이 특정한 조건을 만족하는지 여부를 판정하는 단계와,
    상기 프리미티브의 상기 속성이 상기 특정한 조건을 만족할 때,
    특정한 처리 연산을 이용하여 상기 프리미티브의 대면 방향(facing direction)을 결정하는 단계와,
    상기 프리미티브의 결정된 대면 방향을 이용하여, 추가적인 처리로부터 상기 프리미티브를 도태시킬 것인지 여부를 판정하는 단계와,
    상기 대면 방향을 이용하여 상기 추가적인 처리로부터 상기 프리미티브를 도태시킬 것으로 판정한 경우에, 상기 추가적인 처리로부터 상기 프리미티브를 도태시키는 단계를 포함하는 그래픽 프리미티브 처리방법.
  2. 제 1항에 있어서,
    상기 특정한 처리 연산을 사용하여 상기 프리미티브의 상기 대면 방향을 결정할 것인지 여부를 판정하는데 사용되는 상기 프리미티브의 상기 속성은 상기 프리미티브의 사이즈인 그래픽 프리미티브 처리방법.
  3. 제 2항에 있어서,
    상기 프리미티브의 정점들의 좌표들을 사용하여 상기 프리미티브의 상기 사이즈를 추정하는 단계를 포함하는 그래픽 프리미티브 처리방법.
  4. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 특정한 처리 연산을 사용하여 상기 프리미티브의 상기 대면 방향을 결정할 것인지 여부를 판정하는데 사용되는 상기 프리미티브의 상기 속성은 상기 프리미티브의 사이즈이고,
    상기 프리미티브의 상기 대면 방향이 상기 특정한 처리 연산을 사용하여 결정되도록 하기 위해 상기 프리미티브의 상기 속성이 만족해야 하는 상기 조건은, 상기 프리미티브의 사이즈가 임계 사이즈 측정값보다 작거나 이하인 그래픽 프리미티브 처리방법.
  5. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 프리미티브의 면적의 부호를 판정함으로써 상기 프리미티브의 상기 대면 방향을 결정하는 단계를 포함하는 그래픽 프리미티브 처리방법.
  6. 제 5항에 있어서,
    상기 프리미티브는 각각의 x 및 y 좌표들을 각각 갖는 3개의 정점들 v0, v1 및 v2를 갖는 삼각형이고, 상기 삼각형의 상기 면적의 상기 부호는,
    면적 = ((v1.x-v0.x)(v2.y-v0.y)-(v1.y-v0.y)(v2.x-v0.x))
    로서 결정되는 그래픽 프리미티브 처리방법.
  7. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 프리미티브의 상기 속성이 상기 특정한 조건을 만족할 때 상기 프리미티브의 상기 대면 방향을 결정하는데 사용되는 상기 특정한 처리 연산은, 고정 소수점 산출연산, 축소된 범위를 갖는 산술연산 및 축소된 정밀도를 갖는 산술연산 중에서 한 개 이상을 사용하여 상기 프리미티브의 상기 대면 방향을 결정하는 단계를 포함하는 그래픽 프리미티브 처리방법.
  8. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 프리미티브의 상기 속성이 상기 특정한 조건을 만족하지 않는 경우에는, 상기 프리미티브의 상기 대면 방향을 결정하지 않는 단계를 포함하는 그래픽 프리미티브 처리방법.
  9. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 프리미티브의 상기 속성이 상기 특정한 조건을 만족하지 않는 경우에는, 부동 소수점 산술연산을 이용하여 상기 프리미티브의 상기 대면 방향을 결정하는 단계를 포함하는 그래픽 프리미티브 처리방법.
  10. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 프리미티브의 상기 속성이 제 1의 특정한 조건을 만족하는 경우에는, 제 1 처리 연산을 사용하여 상기 프리미티브의 상기 대면 방향을 결정하고,
    상기 프리미티브의 상기 속성이 제 2의 특정한 조건을 만족하는 경우에는, 제 2 처리 연산을 사용하여 상기 프리미티브의 상기 대면 방향을 결정하고,
    상기 프리미티브의 상기 속성이 제 3의 특정한 조건을 만족하는 경우에는, 제 3 처리 연산을 사용하여 상기 프리미티브의 상기 대면 방향을 결정하거나, 상기 프리미티브의 상기 대면 방향을 결정하지 않는 단계를 포함하는 그래픽 프리미티브 처리방법.
  11. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 그래픽 처리 파이프라인은 타일 기반의 그래픽 처리 파이프라인이고, 대면 방향 결정 및 토태는 그래픽 처리 파이프라인 연산의 타일링 스테이지 이전에 행하는 그래픽 프리미티브 처리방법.
  12. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 그래픽 프리미티브에 대해 또 다른 프리미티브 도태 테스트 및 도태 연산을 행하는 단계와,
    상기 프리미티브의 속성이 상기 특정한 조건을 만족하고 상기 프리미티브가 상기 또 다른 프리미티브 도태 테스트 및 도태 연산을 통과하는 경우에만, 상기 특정한 처리 연산을 사용하여 상기 프리미티브의 상기 대면 방향을 결정하는 단계를 더 포함하는 그래픽 프리미티브 처리방법.
  13. 프리미티브의 속성이 특정한 조건을 만족하는지 여부를 판정하도록 동작가능한 테스팅 스테이지와,
    특정한 처리 연산 또는 연산들을 이용하여 상기 프리미티브의 대면 방향을 결정하도록 동작가능한 대면 방향 결정 스테이지와,
    상기 프리미티브의 결정된 대면 방향을 이용하여, 추가적인 처리로부터 상기 프리미티브를 도태시킬 것인지 여부를 판정하고, 상기 대면 방향을 이용하여 상기 추가적인 처리로부터 상기 프리미티브를 도태시킬 것으로 판정한 경우에, 상기 추가적인 처리로부터 상기 프리미티브를 도태시키도록 동작가능한 대면 방향 도태 스테이지를 구비하고,
    상기 테스팅 스테이지는, 상기 프리미티브의 속성이 상기 특정한 조건을 만족한다는 판정에 응답하여 상기 특정한 처리 연산을 이용하여 상기 프리미티브의 상기 대면 방향을 상기 대면 방향 결정 스테이지가 결정하게 하도록 동작가능한, 그래픽 처리 파이프라인.
  14. 제 13항에 있어서,
    상기 특정한 처리 연산을 사용하여 상기 프리미티브의 상기 대면 방향을 결정할 것인지 여부를 판정하는데 사용되는 상기 프리미티브의 상기 속성은 상기 프리미티브의 사이즈인 그래픽 처리 파이프라인.
  15. 제 14항에 있어서,
    상기 테스팅 스테이지는 상기 프리미티브에 대한 정점들의 좌표들을 사용하여 상기 프리미티브의 상기 사이즈를 추정하는 그래픽 처리 파이프라인.
  16. 제 13항 내지 제 15항 중 어느 한 항에 있어서,
    상기 특정한 처리 연산을 사용하여 상기 프리미티브의 상기 대면 방향을 결정할 것인지 여부를 판정하는데 사용되는 상기 프리미티브의 상기 속성은 상기 프리미티브의 사이즈이고,
    상기 프리미티브의 상기 대면 방향이 상기 특정한 처리 연산을 사용하여 결정되도록 하기 위해 상기 프리미티브의 상기 속성이 만족해야 하는 상기 조건은, 상기 프리미티브의 사이즈가 임계 사이즈 측정값보다 작거나 이하인 그래픽 처리 파이프라인.
  17. 제 13항 내지 제 15항 중 어느 한 항에 있어서,
    상기 대면 방향 결정 스테이지는, 상기 프리미티브의 면적의 부호를 판정함으로써 상기 프리미티브의 상기 대면 방향을 결정하는 그래픽 처리 파이프라인.
  18. 제 17항에 있어서,
    상기 프리미티브는 각각의 x 및 y 좌표들을 각각 갖는 3개의 정점들 v0, v1 및 v2를 갖는 삼각형이고, 상기 삼각형의 상기 면적의 상기 부호는,
    면적 = ((v1.x-v0.x)(v2.y-v0.y)-(v1.y-v0.y)(v2.x-v0.x))
    로서 결정되는 그래픽 처리 파이프라인.
  19. 제 13항 내지 제 15항 중 어느 한 항에 있어서,
    상기 프리미티브의 상기 속성이 상기 특정한 조건을 만족할 때 상기 프리미티브의 상기 대면 방향을 결정하는데 사용되는 상기 특정한 처리 연산은, 고정 소수점 산출연산, 축소된 범위를 갖는 산술연산 및 축소된 정밀도를 갖는 산술연산 중에서 한 개 이상을 사용하여 상기 프리미티브의 상기 대면 방향을 결정하는 단계를 포함하는 그래픽 처리 파이프라인.
  20. 제 13항 내지 제 15항 중 어느 한 항에 있어서,
    상기 테스팅 스테이지는, 상기 프리미티브의 상기 속성이 상기 특정한 조건을 만족하지 않는다는 판정에 응답하여, 상기 프리미티브의 처리가 상기 대면 방향 결정 스테이지를 우회하게 하도록 동작하는 그래픽 처리 파이프라인.
  21. 제 13항 내지 제 15항 중 어느 한 항에 있어서,
    상기 테스팅 스테이지는, 상기 프리미티브의 상기 속성이 상기 특정한 조건을 만족하지 않는다는 판정에 응답하여, 상기 대면 방향 결정 스테이지가 부동 소수점 산술연산을 이용하여 상기 프리미티브의 상기 대면 방향을 결정하게 하도록 동작하는 그래픽 처리 파이프라인.
  22. 제 13항 내지 제 15항 중 어느 한 항에 있어서,
    상기 대면 방향 결정 스테이지는 적어도 2개의 다른 처리 연산들을 사용하여 상기 프리미티브의 상기 대면 방향을 결정하도록 동작하고,
    상기 테스팅 스테이지는, 상기 프리미티브의 상기 속성이 특정한 조건을 만족하는지 여부에 근거하여 이들 처리 연산들 중에서 한 개를 사용하여 파이프라인의 상기 대면 방향 결정 스테이지에 의해 프리미티브가 처리되게 하도록 동작하는 그래픽 처리 파이프라인.
  23. 제 13항 내지 제 15항 중 어느 한 항에 있어서,
    처리할 프리미티브들을 발생할 그래픽 처리 출력의 특정한 영역들에 대응하는 각각의 목록들로 소트하도록 동작하는 타일링 스테이지를 더 구비하고,
    상기 테스팅 스테이지, 상기 대면 방향 결정 스테이지 및 상기 대면 방향 도태 스테이지는 모두 상기 그래픽 처리 파이프라인의 상기 타일링 스테이지 이전에 동작하는 그래픽 처리 파이프라인.
  24. 제 13항 내지 제 15항 중 어느 한 항에 있어서,
    상기 그래픽 처리 파이프라인의 상기 대면 방향 결정 스테이지 및 상기 대면 방향 도태 스테이지 이전에 동작하는 한 개 이상의 프리미티브 도태 스테이지들을 더 구비한 그래픽 처리 파이프라인.
  25. 청구항 1 내지 3 중 어느 한 항에 기재된 방법을 컴퓨터가 행하게 하기 위한 매체에 기억된 컴퓨터 프로그램.
KR1020160107436A 2015-08-26 2016-08-24 그래픽 처리 시스템 KR102674511B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1515146.7 2015-08-26
GB1515146.7A GB2541692B (en) 2015-08-26 2015-08-26 Graphics processing systems

Publications (2)

Publication Number Publication Date
KR20170026192A true KR20170026192A (ko) 2017-03-08
KR102674511B1 KR102674511B1 (ko) 2024-06-13

Family

ID=54292219

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160107436A KR102674511B1 (ko) 2015-08-26 2016-08-24 그래픽 처리 시스템

Country Status (5)

Country Link
US (1) US10650577B2 (ko)
KR (1) KR102674511B1 (ko)
CN (1) CN106485646B (ko)
GB (1) GB2541692B (ko)
TW (1) TWI769138B (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10068307B2 (en) * 2016-05-20 2018-09-04 Intel Corporation Command processing for graphics tile-based rendering
US11715262B2 (en) * 2018-12-17 2023-08-01 Advanced Micro Devices, Inc. Optimizing primitive shaders
EP3671652A1 (en) 2018-12-21 2020-06-24 Imagination Technologies Limited Transformed geometry data cache for graphics processing systems
GB2603618B (en) * 2020-12-18 2023-04-26 Imagination Tech Ltd Graphics processing systems and methods
US11790479B2 (en) * 2021-01-29 2023-10-17 Arm Limited Primitive assembly and vertex shading of vertex attributes in graphics processing systems
US11468633B1 (en) 2021-03-30 2022-10-11 Arm Limited Methods and systems for tile-based graphics processing

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5898437A (en) * 1995-04-28 1999-04-27 Sun Microsystems, Inc. Method for fast rendering of three-dimensional objects by generating lists of like-facing coherent primitives
US6359629B1 (en) * 1998-07-06 2002-03-19 Silicon Graphics, Inc. Backface primitives culling
US20040246251A1 (en) * 2003-03-27 2004-12-09 Simon Fenney Tiling system for 3D rendered graphics
CN1677443A (zh) * 2004-09-17 2005-10-05 威盛电子股份有限公司 部分边界框割截
CN102063523A (zh) * 2010-11-22 2011-05-18 长沙景嘉微电子有限公司 基于超采样算法的浮点定点相结合的线段反走样的实现
CN102171720A (zh) * 2008-10-20 2011-08-31 英特尔公司 使用了对顶点组进行剔除的图形处理

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5898437A (en) * 1995-04-28 1999-04-27 Sun Microsystems, Inc. Method for fast rendering of three-dimensional objects by generating lists of like-facing coherent primitives
US6359629B1 (en) * 1998-07-06 2002-03-19 Silicon Graphics, Inc. Backface primitives culling
US20040246251A1 (en) * 2003-03-27 2004-12-09 Simon Fenney Tiling system for 3D rendered graphics
CN1677443A (zh) * 2004-09-17 2005-10-05 威盛电子股份有限公司 部分边界框割截
CN102171720A (zh) * 2008-10-20 2011-08-31 英特尔公司 使用了对顶点组进行剔除的图形处理
CN102063523A (zh) * 2010-11-22 2011-05-18 长沙景嘉微电子有限公司 基于超采样算法的浮点定点相结合的线段反走样的实现

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Daniel Sunday, Fast Polygon Area and Newell Normal Computation, Journal of Graphics Tools, vol.7, no.2(2012)* *

Also Published As

Publication number Publication date
GB2541692A (en) 2017-03-01
US10650577B2 (en) 2020-05-12
TW201724020A (zh) 2017-07-01
GB201515146D0 (en) 2015-10-07
US20170061678A1 (en) 2017-03-02
CN106485646B (zh) 2022-04-01
CN106485646A (zh) 2017-03-08
TWI769138B (zh) 2022-07-01
KR102674511B1 (ko) 2024-06-13
GB2541692B (en) 2019-10-02

Similar Documents

Publication Publication Date Title
KR102674511B1 (ko) 그래픽 처리 시스템
EP3133552B1 (en) Denoising filter
US10043306B2 (en) Using depth data in a graphics processing system
US10957082B2 (en) Method of and apparatus for processing graphics
US9741159B2 (en) Graphics processing systems
KR101952633B1 (ko) 고 분해능 디스플레이 버퍼들의 효율적인 구성을 위한 방법
US10497085B2 (en) Graphics processing method and system
US10032308B2 (en) Culling objects from a 3-D graphics pipeline using hierarchical Z buffers
US20090195552A1 (en) Methods of and apparatus for processing computer graphics
KR20170015884A (ko) 오브젝트 및/또는 프리미티브 식별자들을 추적하는 것에 의한 그래픽스 프로세싱 강화
US9536333B2 (en) Method and apparatus for improved processing of graphics primitives
US9530241B2 (en) Clipping of graphics primitives
US7400325B1 (en) Culling before setup in viewport and culling unit
GB2456919A (en) Anti-aliasing computer generated graphics by alpha testing each sampling point of fragment individually
US7292239B1 (en) Cull before attribute read
US9286714B2 (en) Apparatus and method for processing graphics primitives
US9607390B2 (en) Rasterization in graphics processing system
US11468633B1 (en) Methods and systems for tile-based graphics processing
KR20230032826A (ko) 멀티-프래그먼트 렌더링에서 가상 두께 기반 레이어 병합 방법, 이를 수행하는 장치 및 컴퓨터 프로그램
Wang et al. Geometry shadow maps

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)