KR20010085424A - 지연 쉐이딩을 갖는 그래픽 프로세서 - Google Patents

지연 쉐이딩을 갖는 그래픽 프로세서 Download PDF

Info

Publication number
KR20010085424A
KR20010085424A KR1020017002171A KR20017002171A KR20010085424A KR 20010085424 A KR20010085424 A KR 20010085424A KR 1020017002171 A KR1020017002171 A KR 1020017002171A KR 20017002171 A KR20017002171 A KR 20017002171A KR 20010085424 A KR20010085424 A KR 20010085424A
Authority
KR
South Korea
Prior art keywords
texture
pixel
unit
vertex
block
Prior art date
Application number
KR1020017002171A
Other languages
English (en)
Other versions
KR100478767B1 (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 KR20010085424A publication Critical patent/KR20010085424A/ko
Application granted granted Critical
Publication of KR100478767B1 publication Critical patent/KR100478767B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • G06T15/87Gouraud shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/30Clipping
    • 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
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • 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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • 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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • G06T15/83Phong shading

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Computing Systems (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Image Input (AREA)
  • Processing Or Creating Images (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명은 지연 쉐이딩, 타일화된 프레임 버퍼, 다단 잠복면 제거 처리(도 5), 퐁(Phong) 쉐이딩(14000), 서브픽셀 안티알리아싱, 및 텍스쳐 맵핑과 범프 맵핑(12000)을 포함하고 있는 지연형 그래픽을 제공한다.

Description

지연 쉐이딩을 갖는 그래픽 프로세서{GRAPHICS PROCESSOR WITH DEFERRED SHADING}
2. 발명의 배경
2.1 3차원 컴퓨터 그래픽
컴퓨터 그래픽은 컴퓨터로 화상을 생성하는 기술 및 과학이다. 통상, 화상 또는 이미지의 생성을 렌더링이라고 한다. 일반적으로, 3차원(3D) 컴퓨터 그래픽에 있어서, 한 장면 내에 있는 대상물의 표면(또는 체적)을 표현하는 기하 구조는 픽셀로 변환되어 프레임 버퍼에 기억되고, 이어서 디스플레이 장치에 디스플레이된다. 컴퓨터 모니터에 사용되는 CRT 등의 실시간 디스플레이 장치는 이미지를 계속해서 연속 디스플레이함으로써 디스플레이를 리프레쉬시킨다. 이 리프레쉬는 항상 행으로 발생하며, 각 행을 라스터선 또는 스캔선이라고 한다. 본 명세서에서는 라스터선을 하단에서 상단으로 번호 부여하고, 상단에서 하단의 순서로 디스플레이한다.
3D 애니메이션에서는 일련의 이미지들이 디스플레이되어 3차원 공간에서 동영상의 환영을 일으킨다. 사용자는 대화형 3D 컴퓨터 그래픽에 의해 그의 관찰점을 변경하거나 기하구조를 실시간으로 변경함으로써, 새로운 이미지들을 실시간으로 바쁘게 생성하는 렌더링 시스템을 필요로 한다.
3D 컴퓨터 그래픽에 있어서, 렌더링 가능한 각 대상물은 대개 그 자신의 로컬 대상물 좌표계를 구비하고, 따라서 대상물 좌표에서 픽셀 디스플레이 좌표로 변환될(즉 치환될) 필요가 있다. 개념적으로, 이것은 4단계의 처리이다. 1) 전체 장면에 대한 좌표계인, 대상물 좌표에서 월드 좌표로의 변환(확대 또는 축소 포함), 2) 장면의 관찰점을 기준으로 한, 월드 좌표에서 눈 좌표로의 변환, 3) 투시도 스케일링(보다 먼 거리의 대상물이 보다 작게 보임)이 수행된 눈 좌표에서 투시도 변환된 눈 좌표로의 변환, 4) 투시도 변환된 눈 좌표에서 스크린 좌표라고도 불리는 픽셀 좌표로의 변환. 스크린 좌표는 3 차원 공간의 포인트들이고, 후술하는 바와 같이, 스크린 정밀도(즉, 픽셀) 또는 대상물 정밀도(고정밀의 수, 대개 부동점) 중 어느 하나일 수 있다. 이들 변환 단계는 임의의 변환이 발생하기 전에 적절한 변환 매트릭스를 미리 컴퓨팅함으로써 하나 또는 둘 이상의 단계로 압축될 수 있다. 일단 기하 구조가 스크린 좌표 내에 있다면, 프레임 버퍼 내에 기억되는 한 세트의 픽셀 칼라값으로 쪼개진다(즉, 「라스터화」된다). 픽셀 칼라값들을 생성하기 위해서는 고우러드(Gouraud) 쉐이딩법, 퐁(Phong) 쉐이딩법 및 텍스쳐 맵핑을 비롯해서 많은 기술이 사용된다.
종래 기술의 렌더링 처리에 관한 개요는, 1989년, 미국 메사츄세츠주 리딩에 소재하는 애디슨-웨슬리 출판사가 발간하고 저자가 와트(Watt)이며 1991년에 재판된 「3 차원 컴퓨터 그래픽의 기초」 중 제5장 렌더링 처리(97쪽 내지 113쪽)(ISBN 0-201-15442-0)에 있다(이하, 「와트의 저서」라고 함).
도 1은 좌표축이 xobj, yobj, zobj인 3 차원 대상물, 즉 4 면체를 도시하고 있다. 3 차원 대상물은 변환되고, 스케일링되어, 좌표축(x, y, z)를 기초로 한 관찰점의 좌표계에 배치된다. 대상물은 관찰면 상에 투영되고, 따라서 투시도에 맞게 보정된다. 이 때, 대상물은 2 차원으로 되는 것으로 보이지만, 대상물의 z 좌표는 유지되어 있으므로, 나중에 잠복면 제거 기술에 의해 사용될 수 있다. 최종으로, 대상물은 zscreen이 지면에 수직인 좌표축(xscreen, yscreen, zscreen)을 기초로 하여 스크린 좌표로 변환된다. 이제, 대상물의 포인트들은 x 좌표와 y 좌표가 디스플레이 스크린 내의 픽셀 위치(및 그의 부분)로 표기되고 z 좌표는 관찰점으로부터 스케일링된 거리로 표기된다.
기하 구조의 여러 개의 상이한 부분들이 동일한 픽셀에 작용할 수 있기 때문에, 장면의 관찰점에 가장 근접한 표면을 표현하는 기하 구조가 판단되어야 한다.따라서, 픽셀마다, 픽셀의 영역에 의해 경계되어 있는 볼륨 내의 가시면은 픽셀 칼라값을 판단하고, 반면에 잠복면은 픽셀에 영향을 주지 않게 되어 있다. 최단거리의 불명료한 표면보다 관찰점에 가까운 불명료하지 않은 표면(또는 표면, 만일 기하 구조의 엣지가 픽셀 영역을 가로지른다면)은 픽셀 칼라값에 영향을 주고, 반면에 불명료하지 않은 다른 모든 표면은 폐기된다. 본 명세서에서는 불명료하지 않은 다른 기하 구조에 의해 잠복되어 있는 기하 구조를 표현하기 위해 「폐색[되다](occluded)」이라는 용어를 사용한다.
가시면의 판단을 수행하기 위해 많은 기술이 개발되어 왔고, 이들 기술의 개관은 본 명세서에 참고로 인용되어 있는, 1990년, 미국 메사츄세츠주 리딩에 소재하는 애디슨-웨슬리 출판사가 2판을 발간하고 공저자가 폴리(Foley), 반담(van Dam), 페이너(Feiner) 및 휴즈(Hughes)이며 1991년에 정정판이 재판된 「컴퓨터 그래픽: 이론과 실제」 중 제15장 가시면 판단(649쪽 내지 720쪽)(ISBN 0-201-12110-7)에 있다(이하, 「폴리의 저서」라고 함). 폴리의 저서 중 650쪽에서, 용어 「이미지 정밀도」와 「대상물 정밀도」는 다음과 같이 정의되어 있다. 「이미지 정밀도 알고리즘은 통상 디스플레이 장치의 해상도로 수행되고, 각 픽셀에서의 가시도(visibility)를 판단한다. 대상물 정밀도 알고리즘은 각 대상물을 정의하는 정밀도로 수행되고, 각 대상물의 가시도를 판단한다」.
렌더링 처리를 진행함에 따라, 대부분의 종래 기술의 렌더링 장치(renderer)는 주어진 스크린 픽셀의 칼라값을 여러 번 계산해야 한다. 그 이유는 복수 개의 표면이 픽셀에 의해 경계된 볼륨을 교차하기 때문이다. 특정 장면에 대해 하나의픽셀을 렌더링해야 하는 평균 횟수를 그 장면의 깊이 복잡성(depth complexity)이라고 한다. 단순한 장면은 깊이 복잡성이 거의 1이고, 복잡한 장면은 깊이 복잡성이 10 또는 20일 수 있다. 장면 모델이 더더욱 복잡해지면, 렌더링 장치는 전에 없이 높은 깊이 복잡성의 장면을 처리할 필요가 있을 것이다. 따라서, 대부분의 렌더링 장치의 경우, 소정의 장면에 관한 깊이 복잡성은 소모성 처리의 단위(measure)이다. 예컨대, 깊이 복잡성이 10인 장면의 경우에는 잠복되어 있는 픽셀들을 처리하는 데 계산의 90%를 소모한다. 이러한 소모적인 계산은 단순한 Z 버퍼 기술(후술됨)를 이용하는 하드웨어 렌더링 장치에 특유한 것이며, 대개는 하드웨어로 쉽게 구성되기 때문에 선택된다. 따라서, Z 버퍼 기술보다 복잡한 방법은 대개 너무 복잡해서 원가면에서 효율적으로 구성할 수 없었다. 본 발명의 방법 및 장치의 중요한 특징은 기하 구조의 잠복 부분이 라스터화되기 전에 그 잠복 부분을 제거함으로써 이러한 소모적인 계산을 회피하면서도, 원가면에서 효율적인 하드웨어를 구성하는 데 충분할 정도로 간단하다는 것이다.
표면상의 한 점(흔히, 다각형 꼭지점)이 스크린의 좌표로 변환될 때, 그 점은 세 개의 좌표, 즉 1) 픽셀 단위의 x 좌표(대개, 부분을 포함함), 2) 픽셀 단위의 y 좌표(대개, 부분을 포함함), 3) 눈 좌표, 가상 스크린으로부터의 거리 또는 관찰점에서 본 표면의 상대 거리를 유지하는 다른 몇 가지 좌표계 중 어느 하나에서의 그 점의 z 좌표를 갖는다. 본 명세서에서, 양의 z 좌표값은 관찰점에서 본 「응시 방향」에 대해서 사용되고, 보다 적은 값은 그 관찰점에 더 가까운 위치를 나타낸다.
하나의 표면이 평판 다각형의 집합에 의해 근사될 때, 각 다각형의 꼭지점들은 스크린 좌표로 변환된다. (꼭지점 이외에) 다각형의 내부 또는 그 위에 있는 점들의 경우, 스크린 좌표는 꼭지점들의 좌표로부터, 통상 엣지 워킹(walking) 및 스팬(span) 보간의 처리에 의해 보간된다. 따라서, z 좌표값은 대개 기하구조가 렌더링됨에 따라서 각 픽셀값 내에 (칼라값과 함께) 포함된다.
2.2 상위 3D 그래픽 파이프라인
많은 하드웨어 렌더링 장치들이 개발되어 왔고, 본 명세서에서는 일 예로서 인용된, 저자가 데링 및 넬슨이고, 1993년 뉴욕주에 소재하는 ACM SIGGRAGH사가 발간하며, 소프트커버 ISBN 0-201-58889-7 및 CD-ROM ISBN 0-201-56997-3이고, 컴퓨터 그래픽 프로시딩스, 연례 회의 시리즈, 1993년 8월 1-6, SIGGRAPH93 프로시딩스의 101 내지 108쪽인, 제목: 레오: 비용 효과적인 3D 쉐이딩된 그래픽을 위한 시스템(이하, 데링의 자료라고 함)이 있다. 데링의 자료에는 상위의 3D 그래픽 파이프라인의 다이어그램(즉, 렌더링 장치, 또는 렌더링 시스템)이 포함되어 있다. 데링의 자료는 「최상위 레벨에서 거의 모든 상업용 3D 그래픽 액셀러레이터가 이 추상화(abstraction)를 적합하게 할 때 진정으로 일반적이다」라고 설명하고 있고, 이 파이프라인 다이어그램은 본 명세서의 도 2에서와 같이 재생된다. 이러한 파이프라인은 렌더링의 프로세스를 뜻하지만, 임의의 특정 하드웨어를 설명하지는 않는다. 이 자료는 상위의 3D 그래픽 파이프라인의 단계들 중 몇 개의 단계를 공유하는 새로운 그래픽 파이프라인을 제공한다. 상위의 3D 그래픽 파이프라인의 각 단계는 본 명세서에 간략하게 설명될 것이고, 도 3의 방법 흐름도로도 도시되어 있다. 본명세서의 전반에 걸쳐서 다각형의 프로세싱을 다루고 있지만, 3D 기하구조를 설명하는 다른 방법으로 대체될 수도 있을 것이다. 설명의 편의를 위해, 방법의 설명상, 다각형의 유형으로서는 삼각형을 사용한다.
도 2에 도시되어 있는 바와 같이, 데이터 입력(단계 212) 후 상위 3D 그래픽 파이프라인의 부동점 강조 기능들 중 제1 단계는 변환 단계(단계 214)이고, 이에 대해서는 전술한 바 있다. 또한, 변환 단계는 도 3에서 방법 흐름도의 외부 루프(outer loop)에서의 제1 단계로서 도시되어 있고, 또 「다음 다각형을 획득한다」를 포함한다. 제2 단계인 클립 테스트에서는 그 다각형이 관찰 볼륨(view volume)[절두체(frustum)로서 조형된 경우도 있음]에 적어도 부분적으로 포함되어 있는지를 확인하기 위해 그 다각형을 검사한다(단계 216). 그 다각형이 관찰 볼륨 내에 있지 않다면, 그 다각형은 버리고, 그렇지 않다면 프로세싱이 계속된다. 제3 단계는 면 판단이고, 여기에서는 관찰점으로부터 멀리 떨어져 접해 있는 다각형들은 버려진다(단계 218). 일반적으로, 면 판단은 닫힌 볼륨인 대상물에 대해서만 적용된다. 제4 단계인 라이팅 계산(lighting computation)에서는 일반적으로, 다양한 형태의 복수 개의 광원과 맵핑(mapping)하는 고우러드(Gouraud) 쉐이딩 및/또는 텍스쳐의 설정을 포함하지만, 퐁(Phong) 쉐이딩 또는 다른 많은 선택 방법 중 하나에 대해서 설정될 수도 있다(단계 222). 제5 단계인 클리핑에서는, 관찰 볼륨의 외부에 있는 다각형의 임의의 부분이 관찰면의 사각 영역 내에 투영하지 않을 것이기 때문에, 그 부분을 제거한다(단계 224). 일반적으로, 다각형 클리핑은 다각형을 관찰면의 영역 내에 투영하는 두 개의 보다 작은 다각형으로 분할함으로써 수행된다.다각형 클리핑은 계산상 고가이다. 제6 단계인 원근 분할에서는 대상물을 관찰면 상에 투영하기 위한 원근 보정을 수행한다(단계 226). 이 때, 다각형의 꼭지점을 나타내는 점들은 제7 단계인 스크린 공간 전환 단계에 의해 픽셀 공간 좌표로 전환된다(단계 228). 제8 단계(단계 230)인 증분 렌더링 장치의 셋업에서는 엣지 워킹과 스팬 보간(예컨대, x, y, z 좌표와, RGB 칼라와, 텍스쳐 맵 공간 u 및 v 좌표 등)에 필요한 다양한 개시값, 종료값 및 증분값을 계산한다.
작도 강조 기능 내에서, 엣지 워킹(단계 234)은 (동일한 다각형 내에서) 이미 발생된 스팬으로부터의 값들을 증분함으로써 디스플레이 장치의 라스터 라인마다 수평 스팬을 증가적으로 발생하고, 따라서 그 다각형의 반대 엣지를 따라 수직으로 「워킹」한다. 마찬가지로, 스팬 보간(단계 234)은 관찰점으로부터의 픽셀 거리를 표시하는 z 좌표를 비롯해서, 픽셀값을 발생하기 위해 스팬을 따라 수평으로 「워킹」한다. 마지막으로, 테스팅 및 블렌딩이라고도 칭하는 z 버퍼된 블렌딩(단계 236)은 최종 픽셀 칼라값을 발생한다. 또한, 픽셀값은 칼라값을 포함하며, 칼라값은 간단한 고우러드 쉐이딩(즉, 꼭지점 칼라값의 보간)에 의해서 또는 텍스쳐 맵핑(혼합된 복수 개의 텍스쳐 맵을 사용할 수도 있음), 퐁 쉐이딩(즉, 프래그먼트당 라이팅) 및/또는 범프 맵핑(보간된 표면 상태를 교란함) 등의 보다 많은 계산상 고가의 기술에 의해 발생될 수 있다. 작도 강조 기능이 완료된 후, 이중 버퍼된 MUX 출력 룩업 테이블 연산이 수행된다(단계 238). 이 구성에서, 모퉁이가 완곡한 블럭은 통상, 기능 또는 프로세스 연산을 나타내고, 모퉁이가 날카로운 사각형은 통상 기억된 데이터 또는 메모리를 나타낸다.
발생된 z 좌표값을 Z 버퍼에 기억되어 있는 대응값과 비교함으로써, z 버퍼된 블렌드는 (그 픽셀 위치에 대해서 이미 기억되어 있는 값보다 관찰점에 더 가깝다면) 새로운 픽셀값을 프레임 버퍼에 기록함으로써 그 새로운 픽셀값을 유지하거나, (더 멀다면) 그 새로운 픽셀값을 버린다. 이 단계에서, 안티에일리어싱 방법은 그 새로운 픽셀 칼라를 과거의 픽셀 칼라와 혼합(blend)할 수 있다. z 버퍼된 블렌드는 일반적으로 전술한 프래그먼트당 연산들 중 대부분을 포함하고 있다.
상위 3D 그래픽 파이프라인은 이중 버퍼된 프레임 버퍼를 포함하고 있고, 따라서 이중 버퍼된 MUX도 포함되어 있다. 칼라 맵값들을 변환하기 위해, 출력 룩업 테이블이 포함된다. 마지막으로, 디지털 아날로그 전환은 아날로그 신호를 생성하여 디스플레이 장치에 입력한다.
상위 3D 그래픽 파이프라인의 주요 종단점은, 그의 작도 강조 기능들이 다각형의 수가 고정된다면, 픽셀 레벨에서 확정적이지 않다는 것이다. 즉, 다각형의 수가 고정된다면, 다각형의 평균 크기가 증가함에 따라 보다 많은 픽셀 레벨 계산이 요구된다. 그러나, 부동점 강조 기능들은 다각형의 수에 비례하고 다각형의 평균 크기와는 무관하다. 따라서, 부동점 강조 기능과 작도 강조 기능 사이에 계산의 균형을 맞추는 것이 어렵다. 그 이유는 이 균형이 다각형의 평균 크기에 의존하고 있기 때문이다.
종래 기술의 Z 버퍼는 종래의 랜덤 액세스 메모리(RAM 또는 DRAM), 비디오 RAM(VRAM) 또는 특수용 DRAM을 기초로 하고 있다. 특수용 DRAM의 일 예는, 소프트커버 ISBN 0201607956, 1994년 뉴욕 소재의 ACM SIGGRAPH사가 발간한 컴퓨터 그래픽 프로시딩스, 연례 회의 시리즈, 1994년 7월 24-29, SIGGRAPH94 프로시딩스 중 167-174쪽에 실린 데링, 쉴라프 및 라벨의 자료인 「3D 그래픽에 적합한 신형 메모리 형태」가 있다.
2.3 파이프라인 상태
OpenGL은 프로그래머가 그래픽 이미지를 생성하기 위해 대상물과 연산을 지정할 수 있는 수 백가지의 기능과 절차로 이루어진 그래픽 하드웨어의 소프트웨어 인터페이스이다. 대상물과 연산은 3차원 대상물의 칼라 이미지를 생성하는데 적당한 특성을 포함하고 있다. OpenGL(버전 1.2)의 대부분은, 대상물이 점, 선, 다각형 또는 비트맵이고 연산이 그 대상물에 관한 연산이라고 하더라도 그래픽 하드웨어가 프레임 버퍼를 포함하고 있다고 가정 또는 요구한다. OpenGL(그래픽 인터페이스의 일 예에 불과함)의 일반적인 특징은 1998년 3월에 마크 세갈과 쿠르트 아켈리가 버전 1.2를 저술한 문헌 「OpenGL(등록 상표) 그래픽 시스템: 설명서(버전 1.2)」에 설명되어 있고, 본 명세서에 인용되고 있다. 문헌이 OpenGL에 대해서 작성되었지만, 본 발명은 OpenGL 또는 임의의 다른 표준 또는 비표준의 그래픽 인터페이스와 호환 가능하거나 부합하는 구조, 절차 또는 방법에 한정하지 않는다. 바람직하게는, 진보적인 구조와 방법은 OpenGL 또는 다른 표준 그래픽 인터페이스와 부합하게 구성되어, 표준 인터페이스 중 하나에 맞게 준비된 데이터 세트가 변형 없이 그 진보적인 구조와 방법에 의해 처리될 수 있다. 그러나, 그 진보적인 구조와 방법은 OpenGL이 제공하지 않는 몇 가지 특징을 제공하고, 이러한 상위의 입출력이 제공될 때에서 조차, 그 구성은 다양하게 제공된다.
종래 기술에 있어서, 「파이프라인 상태」라는 용어는 하나의 정의만 있는 것이 아니다. OpenGL의 세부는, 예컨대 그 상태 정보를 기억하는데 요구되는 비트와 바이트의 상태의 아이템들과 수로 그래픽 렌더링 기구 또는 파이프라인 상태의 형태와 량을 규정한다. OpenGL의 정의에 있어서, 파이프라인 상태는, 예컨대 꼭지점 그 자체, 꼭지점의 상태, 칼라를 포함하는 정보와 비꼭지점 정보에 관련된 대상물의 꼭지점을 포함하는 경향이 있다.
정보가 그래픽 렌더링 장치로 전송되면, 장면을 설명하기 위해 적어도 일부의 대상물 기하구조 정보가 제공된다. 통상, 대상물(들)은 꼭지점 정보로 지정되는 데, 대상물은 점, 선 또는 하나 또는 그 이상의 꼭지점으로 형성되는 다각형[대상물의 원시 요소(primitive)]에 의해 모델링, 정의, 어떤 경우에는 지정된다. 간략히 말하면, 꼭지점은 공간상의 위치이고, 예컨대 몇 개의 기준 원점에 대한 3개의 공간 (x, y, z) 좌표로써 지정될 수 있다. 각 꼭지점에는 그 꼭지점의 특징에 속하는 표면 상태, 칼라, 텍스쳐, 투명도 및 유사 정보 등의 다른 정보와 관련되어 있다. 그 정보는 본질상 「꼭지점당(per-vertex)」 정보이다. 불행하게도, 꼭지점당 정보에 대한 필수 요건으로서 인입 정보와 꼭지점 간의 1 대 1 관계를 규정하는 것은 불필요하게 한정적이다. 예컨대, 칼라값은 특정 꼭지점에 대한 데이터 스트림에서 지정될 수 있고, 따라서 후속 꼭지점에 대해서 칼라가 변할 때까지 그 데이터 스트림에서 재지정되지 않는다. 칼라값은, 소정의 칼라값이 꼭지점마다 인입 데이터 정보에 분명하게 포함되어 있지 않더라도, 여전히 꼭지점당 데이터로서 특징지어질 수 있다.
텍스쳐 맵핑은 꼭지점당 정보 또는 파이프라인 상태 정보 중 어느 하나로서 고려될 수 있는 정보 또는 데이터의 해당 예를 제공한다. 대상물 다마, 하나 또는 그 이상의 텍스쳐 맵이 지정될 수 있고, 각 텍스쳐 맵은 텍스쳐 좌표(들)를 갖는 등의 다양한 방식으로 인식될 수 있다. 한편으로는 파이프라인 상태의 부분으로서 텍스쳐 좌표로 지적하고 다른 편으로는 그것이 꼭지점당 정보라고 이의 제기할 수도 있는 텍스쳐 맵을 고려할 수 있다.
기하구조 대상물의 원시 요소에 대해 1 대 1 방식으로 관련되어 있지 않고, 라이팅 위치 및 강조, 재질 셋팅, 반사적 성질 및 렌더링 장치가 운용하는 다른 모든 규칙 등의 렌더링 장치에 의해 사용되는 다른 정보는 파이프라인 상태라고 칭하는 것이 보다 정확할 수 있다. 꼭지점 기준상 변하지 않거나 변하지 않을 수 있는 모든 것이 파이프라인 상태다라고 고려할 수 있지만, 전술의 이유로, 이것이 전적으로 명확한 정의는 아니다. 예컨대, 렌더링될 임의의 대상물에 적용되어야 할 특정의 깊이 테스트(후술의 설명 참조)를 정의할 수 있다. 예컨대 그 깊이 테스트는 z 값이 엄밀하게 일부의 대상물에 대해서는 「이상(以上)」이고, 다른 대상물에 대해서는 「이상이거나 동등」일 것을 필요로 할 수 있다. 이따금 변하는 이들 특정 깊이 테스트는 그 시각의 파이프라인 상태이다라고 고려될 수 있다.
OpenGL에서 렌더링 장치(파이프라인) 상태라고 고려되는 파라미터는 앞서 언급한 OpenGL 설명서(버전 1.2의 제193-217쪽)의 섹션 6.2에서 확인된다.
따라서, 기본적으로, 렌더링 장치에 의해서 사용되는 데이터 또는 정보는 두 가지 형태, 즉 (1) 꼭지점당 데이터로서 생각될 수 있는 원시 요소 데이터와, (2)그 이외의 파이프라인 상태 데이터(또는 간단히 파이프라인 상태)가 있다. 이러한 구별은 특별한 규칙이라기 보다는 가이드라인으로서 생각되어야 한다. 그 이유는, 임의의 정보 아이템을 파이프라인 상태와 비파이프라인 상태 중 어느 하나로서 취급하는 그래픽 렌더링 장치의 구성 방법은 여러 가지가 있기 때문이다.
2.4 프래그먼트당 연산
상위 3D 그래픽 파이프라인에 있어서, 「z 버퍼된 블렌드」 단계는 실제로 보다 작은 많은 「프래그먼트당」 연산 단계를 합체하고 있다.
OpenGL(Open Graphics Library)과 D3D 등의 애플리케이션 프로그램 인터페이스(API)는 프래그먼트당 연산의 집합을 정의한다(버전 1.2의 OpenGL 설명서 중 챕터 4를 참조). 본 발명의 구조 및 방법과 종래의 구조 및 절차간의 임의의 상위적 유사성과 차이점이 보다 용이하게 이해될 수 있게 몇 가지 예시적인 OpenGL 프래그먼트당 연산을 간략히 검토하기로 한다.
OpenGL 하에서, 프레임 버퍼는 2차원 어레이로서의 픽셀들의 집합을 기억한다. 프레임 버퍼 내에 기억되어 있는 각 화상 요소, 즉 픽셀은 단순히 소정 개수의 비트들의 집합이다. 픽셀당 비트수는 특정 GL 구성 또는 내용에 따라 변화한다.
프레임 버퍼의 각 픽셀에 대응하는 비트들은 하나의 비트면으로 함께 그루핑되고, 각 비트면은 각 픽셀로부터의 단일 비트를 포함한다. 비트면들은 칼라, 깊이, 스텐실 및 누적 버퍼라고 칭하는 몇 개의 로직 버퍼로 그루핑된다. 이어서, 칼라 버퍼는 OpenGL 하에서 전방 좌측 버퍼, 전방 우측 버퍼, 후방 좌측 버퍼, 후방 우측 버퍼 및 몇 개의 부가적인 보조 버퍼라고 칭하는 것들을 포함한다. 전방 버퍼들에 기억되어 있는 값은 디스플레이 모니터에 통상 디스플레이되는 값이고, 후방 버퍼들과 보조 버퍼들의 내용은 눈으로 볼 수 없고 디스플레이되지 않는다. 스테레오 환경은 전방 좌측 버퍼와 전방 우측 버퍼 모두를 디스플레이하고, 모노 환경은 전방 좌측 버퍼만을 디스플레이한다. 일반적으로, 칼라 버퍼는 동일한 수의 비트면을 가져야 하지만, 환경의 특정 구성은 후측 버퍼들, 후방 버퍼들 또는 보조 버퍼들을 일체 제공하지 않을 수 있고, 소정의 구성 또는 환경은 스텐실, 깊이 또는 누적 버퍼들을 부가적으로 제공하거나 제공하지 않을 수 있다.
OpenGL 하에서, 칼라 버퍼는 양의 정수의 칼라 꼭지점 또는 R, G, B 또는 옵션으로 양의 정수값의 수 A로 구성되고, 칼라 버퍼, 깊이 버퍼(제공되는 경우), 스텐실 버퍼(제공되는 경우) 및 누적 버퍼(제공되는 경우)의 각각의 비트면 수는 고정되며 윈도우 종속적이다. 누적 버퍼가 제공되는 경우, 그것은 적어도 칼라 버퍼를 행하는 수만큼의 R, G, B 칼라 성분당 비트면을 가져야 한다.
라스터화에 의해 생성되고 (xw, yw)의 윈도우 좌표를 갖는 프래그먼트는 수만은 테스트, 파라미터 및 조건을 기초로 한 그 위치에서 프레임 버퍼 내의 픽셀을 변경한다. 주목할 것은, 통상적으로 수행되는 몇 개의 테스트 중에서, 순차적으로 소정의 프래그먼트와 그의 관련 데이터에서부터 개시하고 프레임 버퍼로의 최종 출력 스트림으로 종료하는 것은 수행 순서가, 1) 픽셀 소유권 테스트, 2) 시저(scissor) 테스트, 3) 알파 테스트, 4) 칼라 테스트, 5) 스텐실 테스트, 6) 깊이 테스트, 7) 블렌딩, 8) 디더링, 9) 로지코프(logicop)이다(그리고, API 중에는 몇 가지 변경이 있음). OpenGL은 알파 테스트와 스텐실 테스트 사이의 명백한 「칼라 테스트」에 대해서는 제공하지 않음에 주의한다. OpenGL 하의 프래그먼트당 연산은 모든 칼라 계산 이후에 적용된다. 이들 테스트와 연산들에 대해서는 간략하게 후술한다.
2.4.1 소유권 테스트
OpenGL 하에서, 픽셀 소유권 테스트는 프레임 버퍼에서 위치 (xw, yw)의 픽셀이 GL 환경에 의해 현재 소유되고 있는지를 판단한다. 소유하고 있지 않다면, 윈도우 시스템은 인입 프래그먼트의 운명을 결정한다. 가능한 결과는 그 프래그먼트가 버려지거나 후속 프래그먼트당 연산의 몇 개의 부분집합이 그 프래그먼트에 적용되는 것이다. 이 픽셀 소유권 테스트에 의해, 윈도우 시스템은 GL의 행동을 적절하게 제어할 수 있다.
디스플레이 스크린을 갖는 컴퓨터에서, 하나 또는 몇 개의 프로세스가 실행되고 각 프로세스는 디스플레이 스크린 상에 윈도우를 갖는다고 가정한다. 프로세스마다, 관련 윈도우는 그 프로세스가 기록하거나 렌더링하기를 원하는 픽셀을 정의한다. 윈도우가 두 개 이상이 있는 경우, 하나의 프로세스와 관련된 윈도우는, 그 윈도우의 뒤에서, 다른 프로세스와 관련된 윈도우의 전방에 있을 수 있고, 또는 두 윈도우 모두가 전체적으로 보일 수도 있다. 전체 디스플레이 스크린 또는 데스크탑에는 단일의 프레임 버퍼만이 있기 때문에, 픽셀 소유권 테스트는 어느 프로세스와 관련 윈도우가 각 픽셀을 소유하고 있는지를 판단하는 것을 포함한다. 만일 특정 프로세스가 픽셀을 「소유」하지 않고 있다면, 프레임 버퍼에 관한 픽셀 소유권 테스트는 실패가 되고, 그 픽셀은 버려진다. 통상의 패러다임 하에서, 픽셀 소유권 테스트는 각 프로세스에 의해 실행되고, 프레임 버퍼 내의 주어진 픽셀 위치에 대해서, 그 픽셀은 프로세스들 중 하나에 대해서는 픽셀 소유권 테스트를 통과시킬 수 있고, 다른 프로세스에 대해서는 픽셀 소유권 테스트가 실패될 수 있다. 더욱이, 일반적으로, 특정 픽셀은, 하나의 프로세스만이 동일 시각에 특정 프레임 버퍼 픽셀을 소유할 수 있기 때문에, 하나의 프로세스에 대해서만 소유권 테스트를 통과시킨다.
몇 가지 렌더링 설계에 있어서, 픽셀 소유권 테스트는 특히 관련이 없을 수 있다. 예컨대, 장면이 오프스크린 버퍼로 렌더링되고, 이어서 데스크탑으로 블럭 전달되거나 「블리트(blit)」 되고 있다면, 픽셀 소유는 아무런 관련도 없다. 각 프로세스는 그의 소유의 오프스크린 버퍼를 유효하게 소유하고 그 버퍼의 전방에는 아무 것도 없기 때문에, 각 프로세스는 픽셀 소유권 테스트(수행된다면)를 자동으로 또는 필요에 따라서 통과시킨다.
만일 특정프로세스에 대해서, 픽셀이 그 프로세스에 의해 소유되어 있지 않다면, 픽셀값을 그 위치에 기록할 필요는 없고, 그 픽셀에 대한 모든 후속 처리는 무시될 수 있다. 통상의 워크스테이션에 있어서, 스크린 상의 특정 픽셀과 관련된 모든 데이터는 라스터화 중에 판독된다. 그 프레임 버퍼 픽셀을 소유하는 프로세스의 인식에 관한 정보, z 버퍼, 칼라값, 과거 칼라값, 알파값, 스텐실 비트 등을 비롯해서, 그 픽셀을 공급하는 임의의 다각형에 관한 모든 정보가 판독된다. 만일 프로세스가 픽셀을 소유하고 있다면, 다른 다운스트림 프로세스(예컨대, 시저 테스트, 알파 테스트 등)가 실행된다. 반면에, 프로세스가 픽셀을 소유하고 있지 않고그 픽셀에 대한 소유권 테스트가 실패된다면, 그 프로세스는 그 픽셀을 더 고려하지 않아도 되고, 그 픽셀은 후속 테스트를 위해 건너뛰게 된다.
2.4.2 시저 테스트
OpenGL 하에서, 시저 테스트는 (xw, yw)이 좌측 하부 (좌측, 하부) 좌표에 대응하는 4 개의 좌표값, 시저 사각형의 넓이 및 그 시저 사각형의 높이에 대응하는 4 개의 좌표값에 의해 정의되는 시저 사각형 내에 있는지를 판단한다. 그 값들은 OpenGL 하에서 절차 「시저 회피(intleft, intbottom, sizeiwidth, sizeiheight)」에 의해 설정된다. 만일left≤ xwleft+width이고bottom≤ ywbottom+height라면, 시저 테스트는 통과하고, 그렇지 않으면, 시저 테스트는 실패하고 테스트되고 있는 특정 프래그먼트는 버려진다. 초기 상태는 다양하게 제공되고 에러 조건들이 감시되며 보고된다.
간략히 말해서, 사각형은 온스크린 또는 오프스크린일 수 있는 윈도우를 정의한다. 그 윈도우는 (한 점과 그 한 점으로부터의 높이와 넓이로 표현될 수 있더라도) x 좌측, x 우측, y 상부, y 하부 좌표에 의해 정의된다. 이 시저 윈도우는 그 스크린 배열된 시저 내에 속하는 다각형 프래그먼트로부터의 픽셀들만 변한다는 점에서 유용하다. 다각형이 시저 윈도우를 벌리는 경우에, 시저 윈도우 내부에 있는 그 픽셀들만이 변한다.
OpenGL 기구 내의 다각형이 파이프라인으로 내려가면, 파이프라인은 z 값과 그 픽셀의 칼라를 판단하기 위해 그가 필요로 하는 모든 것을 계산한다. 일단 z 값과 칼라가 판단되면, 그 정보는 어떤 정보가 프레임 버퍼 내에 있어야 하는지를 판단하는데 사용된다(따라서, 디스플레이 스크린 상에 무엇이 디스플레이 되는지를 판단함).
픽셀 소유권 테스트에서와 같이, 시저 테스트는 픽셀 및/또는 프래그먼트가 실제로 프레임 버퍼에 입력하여 출력을 변하게 하기 이전에 그 픽셀 및/또는 프래그먼트를 버리는 수단을 제공한다.
2.4.3 알파 테스트
칼라는 4 개의 값, 즉 적색(R), 녹색(G), 청색(B) 및 알파(A)에 의해 정의된다. 그 RGB 값은 그 주요 칼라들의 기여도를 정의하고, 알파는 투명도와 관련있다. 통상, 칼라는 각 성분마다 32 비트값, 8 비트이지만, 그러한 표현이 32 비트에 한정되지는 않는다. 알파 테스트는 주어진 픽셀의 알파값을 알파 기준값과 비교한다. 비교의 행태도 지정될 수 있고, 따라서 예컨대 그 비교는 이상(greater-than) 연산, 이하(less-than) 연산 등일 수 있다. 만일 그 비교가 이상 연산이라면, 픽셀의 알파값은 알파 테스트를 통과시키기 위해 기준 이상이어야 한다. 따라서, 만일 픽셀의 알파값이 0.9이고 기준 알파가 0.8이며 비교가 이상이면, 그 픽셀은 알파 테스트를 통과시킨다. 알파 테스트를 통과시키지 않는 임의의 픽셀은 버려진다. OpenGL 설명서에는 알파 테스트가 OpenGL에서 사용되는 방법을 기술하고 있고, 따라서 여기에서는 더 이상 설명하지 않는다.
알파 테스트는 프래그먼트당 연산이고, 모든 프래그먼트 칼라링 계산과, 라이팅 및 쉐이딩 연산이 완료된 후에 발생한다. 이들 프래그먼트당 연산의 각각은종래의 z 버퍼 블렌딩 연산의 일부로서 생각될 수 있다.
2.4.4 칼라 테스트
칼라 테스트는, 픽셀 알파(A)값과 기준값간의 크기 또는 로직적 비교를 수행하지 않고, 칼라 테스트가 R, G 및 B 칼라 성분 중 하나 또는 소정의 조합과 기준값(들)간의 크기 또는 로직적 비교를 수행한다는 점을 제외하고, 전술한 알파 테스트와 유사하다. 비교 테스트는 예컨대, 이상, 이하, 등가, 같거나 그 이상, c1과 c2가 미리 결정된 기준값 등일 때의 「c1이상이고 c2이하」일 수 있다. 예컨대, 기준 최소 R값과 기준 최대 R값은, 픽셀 R값이 그 최소 및 최대 사이에 있을 때에만 칼라 테스트가 통과되게, 지정될 수 있다. 칼라 테스트는 예컨대, 청색 스크린 기능을 제공하는데 유용할 수 있다. 비교 테스트는 또한, 단일의 칼라 성분 또는 칼라 성분들의 소정의 조합 상에서 수행될 수 있다. 더욱이, 알파 테스트에 대해서는 통상 각 성분에 대해 하나의 값을 가지지만, 칼라 테스트에 대해서는 성분당 두 개의 값, 즉 최대값과 최소값이 유효하게 존재한다.
2.4.5 스텐실 테스트
OpenGL 하에서, 스텐실 테스트는 종래적으로 위치 (xw, yw)에서 스텐실 버퍼에 기억되어 있는 값과 기준값간의 비교 결과를 기초로 하여 프래그먼트를 버린다. 몇 개의 스텐실 비교 기능은, 기준값이 이하, 이하이거나 같음, 같음, 이상이거나 같음, 이상, 또는 스텐실 버퍼 내의 마스크된 기억값과 같지 않음이더라도, 항상 스텐실 테스트가 통과하지 않도록 허용된다. OpenGL 하에서, 스텐실 테스트가 실패하면, 인입 프래그먼트는 버려진다. 기준값과 비교값은 256 개의 상이한 값이 표현될 수 있게, 복수 개의 비트, 통상 8비트를 갖는다. 대상물이 프레임 버퍼 내로 렌더링될 때, 스텐실 테스트를 갖는 태그도 프레임 버퍼 내에 기록된다. 이들 스텐실 비트는 파이프라인 상태의 일부이다. 수행하기 위한 스텐실 테스트의 형태는 기하 구조가 렌더링되는 시기에 지정될 수 있다.
스텐실 비트는 다양한 필터링 연산, 마스킹 연산 또는 스텐실링 연산을 구성하는데 사용된다. 예컨대, 만일 특정 프래그먼트가 끝나서 프레임 버퍼 내의 특정 픽셀에 영향을 미친다면, 스텐실 비트는 픽셀 정보와 함께 프레임 버퍼에 기록될 수 있다.
2.4.6 깊이 버퍼 테스트
OpenGL 하에서, 깊이 버퍼 테스트는 깊이 비교가 실패할 경우에 인입 프래그먼트를 버린다. 그 비교는 OpenGL 심볼 정수 DEPTH_TEST를 이용하여 인에이블 커맨드와 디스에이블 커맨드로 인에이블되거나 디스에이블된다. 깊이 테스트가 디스에이블될 때, 깊이 비교와, 깊이 버퍼값에 대해 후속 가능한 업데이트는 우회되고, 프래그먼트는 다음 연산으로 통과된다. 스텐실 비트도 포함되고, 그 테스트가 우회되더라도 변경된다. 스텐실값은 깊이 버퍼 테스트가 통과되었을 경우에 변경된다. 만일 깊이 테스트가 인에이블되면, 깊이 비교가 발생하고, 깊이 버퍼와 스텐실값은 후속해서 변경된다. 깊이 텍스트가 OpenGL에 사용되는 방식은 OpenGL 설명서의 145쪽에서 보다 상세하게 설명되어 있다.
깊이 비교는 가능한 출력이 다음과 같이 사용된다. 즉, 깊이 버퍼 테스트는,인입 프래그먼트의 zw값이 이하, 이하이거나 같음, 같음, 이상, 이상이거나 같음, 또는 인입 프래그먼트의 (xw, yw) 좌표에 의해 주어지는 위치에 기억되어 있는 깊이값과 같지 않음일 경우에 언제든지 통과하지 않는다. 만일 깊이 버퍼 테스트가 실패하면, 인입 프래그먼트는 버려진다. 프래그먼트의 (xw, yw) 좌표에서의 스텐실값이 깊이 버퍼 테스트 실패에 대한 효과로 현재 기능에 따라 업데이트된다. 그렇지 않은 경우, 프래그먼트는 다음 연산으로 이어지고, 프래그먼트의 (xw, yw) 위치의 깊이 버퍼의 값은 프래그먼트의 zw값으로 설정된다. 이 경우, 스텐실값은 깊이 버퍼 테스트 성공에 대한 효과상 현재 기능에 따라 업데이트된다. 필요한 OpenGL 상태는 8값의 정수와, 깊이 버퍼링이 인에이블인지 이스에이블인지를 표시하는 단일 비트이다.
2.4.7 블렌딩
OpenGL 하에서, 블렌딩은 인입 프래그먼트의 (xw, yw) 위치의 프레임 버퍼에 기억되어 있는 R, G, B 및 A값과 인입 프래그먼트의 R, G, B 및 A값을 조합한다.
블렌딩은 통상, 인입 프래그먼트의 알파값(A)과, 픽셀에 기억되어 있는 상응하는 프레임 버퍼의 그것에 의존한다. 다음의 설명에서는, Cs는 인입 프래그먼트에 대한 소스 칼라를 칭하고, Cd는 상응하는 프레임 버퍼 위치에서의 목표 칼라를 칭하며, Cc는 GL 상태에서의 고정 칼라를 칭한다. 이들 칼라의 각 RGBA 성분들은 s, d 및 c의 첨자로 각각 표기되어 있다.
기본적으로, 블렌딩은 프레임 버퍼에서의 칼라와 프래그먼트에서의 칼라를 취해서 그들을 함께 혼합하는 연산이다. 블렌딩을 달성하는 방법, 즉 특정 블렌딩 기능은 소스와 목표 양자에 대해 다양한 대안들(alternative)로부터 선택될 수 있다.
블렌딩에 대해서는 OpenGL 설명서의 146-149쪽에 설명되어 있고, 본 명세서에 인용되어 있다. 다양한 블렌딩 방정식이 OpenGL 하에서 이용 가능하다. 예컨대, 부가형 블렌드는 소스 칼라(Cs)와 소스 가중 인자(D) 네 개 한 벌(quadruplet)의 곱을 목표 칼라(Cd)와 목표 가중 인자(D) 네 개 한 벌의 곱을 더함으로써 취득된다. 즉, C=CsS+CdD이다. 이와 달리, 블렌드 방정식은 감산(C=CsS-CdD), 역감산(C=CdD+CsS), 최소 함수[C=min(Cs, Cd)], 최대 함수[C=max(Cs, Cd)]일 수 있다. OpenGL 하에서, 블렌드 방정식은 각 칼라 성분과 그의 상응하는 가중 계수에 대해서 개별적으로 평가된다. 네 개의 R, G, B, A 성분들의 각각은 그 자신의 가중 인자를 갖는다.
블렌딩 테스트(또는 블렌딩 방정식)는 파이프라인 상태의 일부이고 모든 다각형에 대해 잠재적으로 변할 수 있지만, 보다 통상적으로는 형성된 대상물 또는 몇 개의 다각형에 대해서만 변할 수도 있다.
일반적으로, 블렌딩은 픽셀 소유권 테스트와 스텐실 테스트 등의 다른 테스트들이 일단 통과되어 고려 하의 픽셀 또는 프래그먼트가 출력에서 효과를 가질 또는 가질 수 있음이 분명할 때에만 수행된다.
2.4.8 디더링
OpenGL 하에서, 디더링은 두 개의 칼라값 또는 인덱스들 중에서 선택한다. RGBA 모드에서, m이 프레임 버퍼 내의 그 성분에 할당된 비트의 수일 때 이진점의 왼쪽으로 m 비트를 갖는 고꼭지점값으로서 칼라 성분들 중 임의의 성분의 값을 고려하고, 각각의 이러한 값 c를 호출한다. 각 c에 대해서, 디더링은 c1∈{max{0,[c]-1, [c[}이 되도록 값 c1을 선택한다. 이 선택은 픽셀의 xw및 yw좌표에 의존할 수 있다. 칼라 인덱스 모드에서, 동일한 규칙이 단일 칼라 인덱스인 c에 적용된다. c의 값은 성분 또는 인덱스에 대해서 프레임 버퍼 내에 표현될 수 있는 최대값보다 크지 않아야 한다.
많은 디더링 알고리즘이 가능하지만, 임의의 알고리즘에 의해 생성되는 디더링된 값은 일반적으로 인입값과 프래그먼트의 x 및 y 윈도우 좌표에만 의존해야 한다. 디더링이 디스에이블될 때, 각 칼라 성분은 상응하는 프레임 버퍼 성분 내에 존재하는 만큼의 비트로 고꼭지점값에 절단되고, 칼라 인덱스는 프레임 버퍼 내의 칼라 인덱스 부분에 표현 가능한 가장 가까운 정수로 반올림된다.
디더링의 OpenGL 명세서는 특히 149-150쪽의 OpenGL의 설명에서 보다 충분하게 설명되어 있고, 본 명세서에 인용되고 있다.
2.4.9 로지코프
OpenGL 하에서, 인입 프래그먼트의 칼라 또는 인덱스값과, 상응하는 위치의 프레임 버퍼 내에 기억되어 있는 칼라 또는 인덱스값 사이에 적용되는 최종의 로직 연산이 있다. 로직 연산의 결과는 그 값들을 프래그먼트의 (x, y) 좌표의 프레임버퍼에 배치시킨다. 소스(s)와 목표(d) 사이에는, 예컨대 클리어, 셋트, 앤드, 누프(noop), 익스클루시브오어, 오어, 노어, 낸드, 인버트, 복사, 인버티드 앤드, 등가, 역(逆) 오어, 역 앤드, 인버티드 복사, 인버티드 오어를 비롯해서, 다양한 로직 연산이 사용될 수 있다. 로지코프 인자와, 상응하는 연산 및 OpenGL 로지코프 ㅈ거용의 부가적인 세부는 OpenGL 설명서의 제150-151쪽에 설명되어 있다. 로지코프 연산은 기록시 선택되는 각 칼라 인덱스 버퍼에 대해서, 또는 기록시 선택되는 각 칼라 버퍼의 각 청색값, 녹색값, 청색값, 알파값에 대해서 독립적으로 수행된다. 요구되는 상태는 로직 연산을 표시하는 정수와, 로직 연산이 인에이블 또는 디스에이블되는지의 여부를 표시하는 두 개의 비트이다.
2.5 안티에일리어싱
본 명세서에서, 픽셀은 디스플레이 장치의 개별적으로 제어 가능한 최소 엘리먼트로서 칭한다. 그러나, 이미지는 이산 픽셀들로 양자화되기 때문에, 공간 에일리어싱이 생긴다. 통상의 에일리어싱 결과물은 직선 또는 엣지가 픽셀의 열들(rows)을 가로질러서 비스듬하게 절단될 때 생기는 「계단」 효과이다.
일부 렌더링 시스템은 각 서브픽셀이 독립적으로 칼라링될 수 있는 경우에 픽셀을 서브픽셀들로 분할함으로써 에일리어싱 효과를 감소시킨다. 이미지가 디스플레이되어야 할 때, 각 픽셀 내의 모든 서브픽셀에 대한 칼라들은 그 픽셀의 평균 칼라를 형성하기 위해 함께 혼합된다. 픽셀당 최대 16 개의 서브픽셀을 사용하는 렌더링 장치는 소프트커버 ISBN 0-201-58889-7 및 CD-ROM ISBN 0-201-56997-3, 1993년 뉴욕 소재의 ACM SIGGRAPH사가 발간한 컴퓨터 그래픽 프로시딩스, 연례 회의 시리즈, 1993년 8월 1-6, SIGGRAPH93 프로시딩스 중 109-116쪽에 실린 아켈리의 자료인 「3D 그래픽에 적합한 신형 메모리 형태」가 있다)(이하, 아켈리의 자료라고 함).
다른 종래 기술의 안티에일리어싱 방법은 블렌딩을 수행하는데 사용되는 A 버퍼(이 기술은 아켈리 자료에도 포함되어 있음)이고, 카펜터의 자료(SIGGRAPH 1984 컨퍼런스 프로시딩스, 제103-108쪽)(이하, 카펜터의 자료라고 함)인 「A 버퍼, 안티에일리어스된 잠복표면 방법」에 설명되어 있다. A 버퍼는 렌더링된 다각형에 의해 소정의 픽셀의 백분율 커버리지의 트랙을 유지함으로써 에일리어싱을 감소하는 안티에일리어싱 기술이다. 이 기술의 주요 종단점은 수용 가능한 안티에일리어스된 다각형을 얻기 위해 각 픽셀에서 다각형을 전방에서 후방으로(front-to-back)[또는 후방에서 전방으로(back-to-front)]로 분류할 필요가 있다는 것이다.
2.6 내용 어드레스 가능한 메모리
대부분의 내용 어드레스 가능한 메모리(CAM)는 입력 벡터와, CAM 내에 기억되어 있는 데이터 워드들의 각각 사이에 비트 대 비트(bit-for-bit) 동질성 테스트를 수행한다. 이러한 형태의 CAM은 동질성 테스트에 영향을 미치지 않게 모든 워드 내의 상응하는 비트를 제거하기 위해 비트 위치들을 마스킹하는 일이 빈번하다. 그 작업을 수행하는데는 상당 수의 클럭 사이클이 필요하기 때문에, 동질성 테스트를 행하는 CAM에서 크기 비교를 수행하는 것은 비효율적이다. 현재,일부 컴퓨터에서는 가상 메모리 시스템 내의 변환 룩-어사이드(look-aside) 버퍼에 CAM이 사용되고 있다. CAM은 고속 컴퓨터 네트워크에서 어드레스를 정합하는데 사용되기도 한다.
본 명세서에 있어서, 크기 비교 CAM(MCCAM)은 기억되어 있는 데이터가 숫자로서 취급되고, 산술적 크기 비교(즉, 이하, 이상, 작거나 같음 등)는 데이터에 관해서 병렬로 수행되는 임의의 CAM으로서 한정된다. 이것은 숫자로서가 아니고 기억되어 있는 데이터를 엄밀하게 비트 벡터로서 취급하는 범용 CAM과는 대조적이다. 본 명세서에 인용되어 있는 MCCAM 특허는 발명자가 제롬 에프. 둘룩크 쥬니어이고, 발명의 명칭이 「완전 병렬 크기 비교를 행할 수 있는 내용 어드레스 가능한 메모리 시스템(Content-Addressible Memory System Capable of Fully Parallel Magnitude Comparisons)」이며, 특허 공개 일자가 1991년 2월 26일인 미국 특허 번호 제4,996,666호(이하, 둘룩크 특허라고 함)이다. 특히 인용되고 있는 둘룩크 특허의 구조들에 대해서는 「둘룩크 특허」라는 접두사를 병기하기로 한다(예컨대, 「둘룩크 특허의 MCCAM 비트 회로」).
MCCAM의 기본 내부 구조는 워드들 내에 구성되어 있는 메모리 비트의 집합이다. 각 워드는 기억되어 있는 데이터와 입력 데이터간의 하나 또는 그 이상의 산술적인 크기 비교를 수행할 수 있다. 일반적으로, MCCAM의 경우, 숫자들의 벡터가 병렬로 워드들의 어레이에 적용될 때, 모든 워드들의 모든 산술 비교는 병렬로 생긴다. 이러한 병렬 탐색 비교 연산을 기억되어 있는 데이터의 「질문(query)」이라고 부른다.
본 명세서에 설명되어 있는 발명은, 결과 비트의 모든 질문을 모든 클럭 사이클에 출력하고, 부가적인 출력을 형성하기 위해 이들 질문 결과 비트들을 함께 로직 「or」할 수 있는 능력을 비롯한 다양한 특성을 부가함으로써 MCCAM의 능력을향상시킨다.
3 본 발명의 요약
본 발명의 형태들에 관한 개요 - 상위 레벨의 요약
컴퓨터 그래픽은 컴퓨터로 화상 또는 이미지를 생성하는 기술 및 과학이다. 이 화상 생성을 보통 렌더링이라고 한다. 예컨대 3차원 애니메이션에 있어서, 움직임의 외관은 일련의 이미지를 디스플레이시킴으로써 달성된다. 대화형 3차원(3D) 컴퓨터 그래픽에 의해, 사용자는 그의 관찰점을 변경시키거나 실시간으로 기하구조를 변경시킬 수 있고, 따라서 새로운 이미지를 실시간으로 진행하게 생성할 수 있는 렌더링 시스템을 필요로 한다. 그러므로, 고품질의 이미지를 갖는 칼라의 실시간 성능이 점점 더 중요해지고 있다.
본 발명은 새로운 그래픽 프로세서와 방법에 관한 것이고, 특수화된 서브시스템, 서브마이크로프로세서, 아키텍쳐, 및 상응하는 절차를 포함하는 여러 가지의 서브구조(substructure)를 포괄하고 있다. 본 발명의 실시예들은 지연된 쉐이딩, 틸티드 프레임 버퍼, 다단의 잠복면 제거 프로세싱, 다른 구조 및/또는 절차 중 하나 또는 그 이상을 포함할 수 있다. 본 명세서에서는, 이하에서 이 그래픽 프로세서를 DSGP(Deferred Shading Graphic Processor: 지연 쉐이딩 그래픽 프로세서) 또는 DSGP 파이프라인이라고 하지만, 때로는 파이프라인이라고도 칭한다.
본 발명은 DSGP 파이프라인에 관한 복수 개의 실시예를 포함하고 있다. 본 발명의 실시예들은 하드웨어상, 퐁 쉐이딩, 서브픽셀 안티에일리어싱 및 텍스쳐 맵칭과 범프 맵핑을 갖는 고성능 3D 그래픽을 제공하도록 설계되어 있다. DSGP 파이프라인은 성능을 희생시키지 않고서도 이들 복잡한 특성들을 제공한다.
DSGP 파이프라인은 있을 수 있는 인터페이스 선택권 중에서, 고급형 그래픽 포트(AGP) 및/또는 PCI 버스 인터페이스를 포함하지만 그에 한정하지 않는 있을 수 있는 다양한 인터페이스를 거쳐서 컴퓨터에 연결될 수 있다. 대개는 VGA와 비디오 출력도 포함되어 있다. 본 발명의 실시예들은 OpenGL 및 Direct3D API 양자를 지원한다. 마크 세갈과 쿠르트 아켈리가 저술하고 존 리치가 편집하며 제목이 「OpenGL 그래픽 시스템: 설명서(버전 1.2)」인 OpenGL 설명서는 본 명세서에 인용되고 있다.
이제, 지연 쉐이딩 그래픽 파이프라인의 몇 가지 예시적인 실시예 또는 변형예에 관해서 설명한다.
3.1 지연 쉐이딩 그래픽 파이프라인의 변형
여기에서는 지연 쉐이딩 그래픽 파이프라인의 몇 가지 변형예 또는 실시예에 관해 설명하고, 특성들의 다양한 조합을 갖는 실시예들이 구현될 수 있다. 더욱이, 본 발명의 특성들은 다른 특성들과는 독립적으로 구현될 수 있다. 전술된 대부분의 주요 특성들은 DSGP 파이프라인의 모든 변형예들에 적용될 수 있다.
3.1.1 타일, 스탬프, 샘플 및 프래그먼트
3D 그래픽 원시 요소들의 각 프레임(장면 또는 사용자 프레임이라고도 함)은 디스플레이 스크린 상에 3D로 렌더링된다. 윈도우는 픽셀들의 사각형 그리드로 구성되고, 그 윈도우는 타일들로 분할된다(이하에서, 타일들은 16×16 픽셀들이라고 가정하지만, 크기는 임의일 수 있음). 만일 타일들이 사용되지 않는다면, 윈도우는하나의 타일이라고 고려된다. 각 타일은 스탬프들로 더 분할된다(이하에서, 스탬프들은 2×2 픽셀들이라고 가정하고, 따라서 타일당 64 개의 스탬프가 되지만, 하나의 타일 내에서 스탬프의 크기는 임의일 수 있음). 각 픽셀은 하나 또는 그 이상의 스탬프들을 포함하고 있고, 각 스탬프는 그의 고유 칼라값과 z값을 갖는다(이하에서, 픽셀들은 네 개의 샘플들을 포함하고 있지만, 임의의 갯수가 사용될 수 있음). 프래그먼트는 특정 픽셀 내에서 소정의 원시 요소에 의해 커버되는 샘플들의 군집이다. 「프래그먼트」라는 용어는 특정의 원시 요소와 특정 픽셀 내의 가시적인 샘플들의 군집을 설명하는데에도 사용된다.
3.1.2 지연 새이딩
보통의 Z 버퍼 렌더링에 있어서, 렌더링 장치는 각 원시 요소의 각 픽셀마다 칼라값(RGB 또는 RGBA) 및 z값을 계산하고, 이어서 새로운 픽셀의 z값을 Z 버퍼 내의 현재의 z값과 비교한다. 만일 z값 비교 결과로 z값 비교가 프레임 버퍼 내의 현존하는 픽셀의 앞에 있음을 표시한다면, 그 새로운 픽셀은 과거의 픽셀을 덮어쓰고, 그렇지 않으면, 그 새로운 픽셀은 버려진다.
Z 버퍼 렌더링은 우수하고 정교한 하드웨어가 필요없다. 그러나, Z 버퍼 렌더링은 통상, 장면이 많은 잠복면을 포함하고 있는 경우에, 상당한 프로세싱 노력이 소비되게 된다. 복잡한 장면들에 있어서는, 렌더링 장치는 최종 화상에서 볼 수 있는 정도의 픽셀 수만큼 칼라값들을 10회 또는 20회 동안 계산한다. 이것은 퐁 쉐이딩 또는 텍스쳐 맵핑 등의 임의의 픽셀당 연산의 계산 비용이 10 또는 20으로 곱해짐을 의미한다. 전체 프레임을 통해 평균된 픽셀당 표면의 수를 프레임의 깊이복잡도라고 한다. 종래의 z 버퍼된 렌더링 장치에 있어서, 깊이 복잡도는 특정 프레임을 렌더링할 때 렌더링 장치의 비효율성의 측정값이다.
지연 쉐이딩을 수행하는 파이프라인에 있어서, 잠복면 제거(HSR)는 임의의 픽셀 칼라링이 수행되기 전에 완료된다. 지연 쉐이딩 파이프라인의 대상은 최종 이미지(즉, 정확한 HSR)에서 나타나는 그들 원시 요소들에 대해서만 픽셀 칼라들을 생성할 수 있다. 일반적으로, 지연 쉐이딩은 HSR가 시작하기 전에 누산될 원시 요소들을 필요로 한다. 불명료한 원시 요소들만을 갖는 프레임의 경우, HSR 프로세스는 모든 픽셀 내의 각 샘플에서 단일의 가시적인 원시 요소를 판단한다. 일단 가시의 원시 요소가 소정의 샘플에 대해서 판단되면, 그 샘플 위치에서의 원시 요소의 칼라가 판단된다. 부가적인 효율은 샘플당 칼라들을 계산하기 보다 동일 픽셀 내의 모든 샘플들에 대해서 단일의 픽셀당 칼라를 판단함으로써 달성될 수 있다.
(대개 투명도로 인한) 원시 요소들의 (전술한 OpenGL 설명서에서 정의된 바와 같은) 적어도 몇 개의 알파 블렌딩을 갖는 프레임의 경우, 두 개 또는 그 이상의 원시 요소들에 의해 칼라링되는 몇 개의 샘플들이 있다. 이것은 HSR 프로세스가 샘플당 가시의 원시 요소들의 집합을 판단해야 함을 의미한다.
OpenGL 등의 몇 가지 API에 있어서, HSR 프로세스는 원시 요소들을 버릴 수 있는 다른 연산에 의해(즉, 깊이 테스트 이외의 연산에 의해) 복잡해질 수 있다. 이들 다른 연산들에는 (본 명세서의 다른 곳에서 설명되는 바와 같이) 픽셀 소유권 테스트, 시저 테스트, 알파 테스트, 칼라 테스트, 및 스텐실 테스트를 포함한다. 이들 연산들 중 몇 가지는 (알파 테스트 등의) 그의 칼라를 기초로 하여, HSR 프로세스 이후까지 지연 쉐이딩 파이프라인 내에서 판단되지 않는 소정의 원시 요소를 버린다(즉, 알파값들은 픽셀 프래그먼트 칼라링에 포함되는, 텍스쳐링 프로세스에 의해 생성되는 경우가 많기 때문에). 예컨대, 보다 먼 원시 요소(대개, z값이 더 큰 곳에 있음)를 통상적으로 가릴 원시 요소는 알파 테스트에 의해 버려질 수 있고, 따라서 그 원시 요소가 그 보다 먼 원시 요소를 가리지 않게 한다. 알파 테스트를 고려해 넣지 않는 HSR 프로세스는 그 보다 먼 원시 요소를 실수로 버릴 수 있다. 따라서, 지연 쉐이딩과 알파 테스트 간의 불일치가 존재한다(칼라 테스트와 스텐실 테스트의 경우에도 마찬가지임). 즉, 픽셀 칼라링은 잠복면 제거 이후까지 연기되지만, 잠복면 제거는 픽셀 칼라에 의존할 수 있다. 이 문제에 대한 간단한 해법에는 다음 두 가지 방법이 있다. 1) 알파 테스트, 칼라 테스트, 및 스텐실 테스트 등의 API로부터 비깊이의존형 테스트를 제거하는 방법. 그러나, 이 포텐셜 해법은 현재의 프로그램을 지연 쉐이딩 파이프라인에 관해 적절하게 수행하지 못하게 할 수도 있다. 2) HSR 프로세스가 몇 가지 칼라 생성를 수행하게 하는 방법. 그러나, 이 포텐셜 해법은 데이터의 흐름을 상당히 복잡하게 할 것이다. 따라서, 이들 방법 중 어느 것도 관심을 끌지 못한다. 제3의 방법, 즉 보존성 잠복면 제거(CHSR)는 본 발명의 구조 및 방법에 의해 제공되는 중요 혁신 중에 하나이다. CHSR에 관해서는 상세한 설명 중 후속 부분에 더욱 상세하게 설명된다.
많은 API의 다른 복잡성은 깊이 테스트를 변경할 수 있는 능력에 있다. 3D 렌더링을 생각하는 표준 방법은, 가시적인 대상물이 가려진 대상물보다 가깝게 있다(즉, z값이 더 적음)고 가정하고, 이는 「이하(less-than)」 깊이 테스트(즉, 소정의 대상물이 그의 z값이 다른 기하구조보다 「이하」인 경우에 보임)를 선택함으로써 달성된다. 그러나, 대부분의 API는, 이상, 이하, 이상이거나 동등, 동등, 이하이거나 동등, 이하, 동등하지 않음 등의 다른 깊이 테스트를 대수 관계, 크기 관계 및 로직 관계에 지원한다. 근본적으로, 이는 보이는 것에 대해 「규칙들을 변경」시킨다. 이러한 복잡성은, API에 의해 애플리케이션 프로그램이 소정의 프레임 내의 깊이 테스트를 변경시킬 수 있게 함으로써 합성될 수 있다. 가시도에 따라, 상이한 기하구조는 철저하게 상이한 규칙들에 종속될 수 있다. 그러므로, 상이한 렌더링 규칙들을 갖는 원시 요소들의 시간 순서가 고려되어야 한다. 예컨대, 도 4에 도시된 실시예에 있어서, 세 개의 원시 요소는 각각의 깊이 테스트를 갖고 있음을 도시하고 있다(z 디멘젼만이 도면에 도시되어 있고, 따라서 이것은 하나의 샘플에 대한 예로 고려될 수 있다). 만일 그 원시 요소들이 A, B, C의 순서로 렌더링된다면, 원시 요소 B가 최종 가시 표면일 것이다. 그러나, 만일 그 원시 요소들이 C, B, A의 순서로 렌더링된다면, 원시 요소 A가 최종 가시 표면일 것이다. 이것은 지연 쉐이딩 파이프라인이 어떻게 원시 요소들의 시간 배열을 유지해야 하고, 정확한 파이프라인 상태(예컨대, 깊이 테스트)가 각 원시 요소와 어떻게 관련되는지를 설명하고 있다.
3.1.3 지연 쉐이딩 그래픽 파이프라인, 제1 실시예(버전 1)
도 2에는 종래의 3D 그래픽 파이프라인이 도시되어 있다. 이제, 도 4와 관련하여, 본 발명의 3D 지연 쉐이딩 파이프라인 버전 1(이하, 「DSGPv1」)의 제1 실시예에 관해 설명한다. 본 발명의 파이프라인(도 4)은 작도 강조 기능들(231)을,(1) 도면에서 장면 메모리하고 하는, 파이프라인 상태와, 각 원시 요소를 설명하는 원시 요소 데이터를 기억하는 장면 메모리(250), (2) 정확한 잠복면 제거 프로세스(251), (3) 프래그먼트 칼라링 프로세스(252), (4) 블렌딩 프로세스(253)로 대체함으로써 상위의 종래 파이프라인(도 2)로부터 얻었음이 관찰될 것이다.
장면 메모리(250)는 소정의 프레임에 대한 원시 요소 데이터를 그들의 속성들과 함께 기억하고, 또 그 프레임 전반에 걸쳐서 파이프라인 상태의 다양한 셋팅들을 기억한다. 원시 요소 데이터는 꼭지점 좌표, 텍스쳐 좌표, 꼭지점 칼라, 꼭지점 노말(normal) 등을 포함한다. DSGPv1에서, 원시 요소 데이터는 또한, 공간, 칼라 및 엣지 편차를 포함하는 증분적 렌더링 장치에 대한 셋업에 의해 생성되는 데이터를 포함한다.
소정의 프레임 내의 모든 원시 요소가 부동점 강조 기능(213)에 의해 처리되고 장면 메모리(250)에 기억되는 경우, HSR 프로세스가 개시한다. 장면 메모리(250)는 이중 버퍼될 수 있고, 따라서 HSR 프로세스는 부동점 강조 기능이 다음 프레임에 관한 계산을 수행하는 동안 하나의 프레임에 관해 계산을 수행할 수 있다. 장면 메모리는 삼중 버퍼될 수도 있다. 장면 메모리는 HSR 프로세스에 대한 스크래치패드이고, HSR 프로세스에 대한 증분적 결과를 기억하며, HSR 프로세스가 시작된 이후에 모든 원시 요소는 장면 메모리로 기억된다.
장면 메모리에서, 모든 원시 요소는 그 원시 요소가 파이프라인에 입력되었을 때 명료했던 파이프라인 상태 정보와 관련있다. 파이프라인 상태를 각 원시 요소와 관련짓는 가장 간단한 방법은 전체 파이프라인 상태를 각 원시 요소 내에 포함시키는 것이다. 그러나, 이것은, (특히, 원시 요소들이 동일한 대상물 내에 있을 때) 파이프라인 상태 중 상당 부분이 대부분의 원시 요소들간에 변화하지 않기 때문에, 매우 많은 량의 잉여 정보를 생성할 것이다. 정보를 장면 메모리 내에 기억하는 지연 방법은 개개의 리스트, 즉 파이프라인 상태 셋팅을 위한 하나의 리스트와 원시 요소들을 위한 하나의 리스트를 유지하는 것이다. 더욱이, 파이프라인 상태 정보는 복수 개의 서브리스트들로 분할될 수 있고, 각 서브리스트에 대한 부가는 그 서브리스트의 일부가 변할 때에만 발생한다. 원시 요소들을 기억하는 지연 방법은, 그 원시 요소들을 재생성하기 위해 연속 정보와 함께 일련의 꼭지점들을 기억함으로써 행해진다. 원시 요소들을 기억하는 이 지연 방법은 다른 경우에 다각형 그물(메쉬)과 선 스트립에서 발생할 잉여 꼭지점들을 제거한다.
DSGPv1에 대해 설명된 HSR 프로세스는, 잠복면 제거가 행해지는 경우에 그것이 DSGPv1에서의 유일한 장소이기 때문에, 정확한 잠복면 제거(EHSR)일 것이 요구된다. 이 정확한 잠복면 제거(EHSR) 프로세스(251)는 어느 원시 요소들이 프레임 버퍼 내의 픽셀들의 최종 칼라에 영향을 미치는지를 판단한다. 이 프로세스는 파이프라인 상태의 변화를 고려하고, 다양한 복잡성을 그 프로세서로 생성한다. 대부분의 이들 복잡함은 전술한 바와 같이 프래그먼트당 연산들(소유권 테스트, 시저 테스트, 알파 테스트 등)로부터 생긴다. 이러한 복잡함들은, 정확한 잠복면 제거가 요구되지 않게, 후술되는 혁신적인 보존 잠복면 제거(CHSR)에 의해 해결된다.
프래그먼트 칼라링 프로세스는 소정의 픽셀 내의 각 샘플 또는 샘플들의 그룹에 대한 칼라들을 생성한다. 이것에는 고우러드 쉐이딩, 텍스쳐 맵핑, 퐁 쉐이딩및 픽셀 칼라들을 생성하기 위한 다른 다양한 기술들이 포함될 수 있다. 이 프로세스는 엣지된 워크(232)와 스팬 보간(234)와는 다르다. 그 이유는, 이 프로세스는 원시 요소들의 서브섹션들에 대한 칼라들을 효율적으로 생성할 수 있어야 하기 때문이다. 즉, 소정의 원시 요소는 부분적으로 보일 수 있고, 따라서 칼라들은 그의 픽셀들 중 일부만에 대해서 생성되어야 하고, 엣지 워크와 스팬 보간은 전체 원시 요소가 칼라링되어야 한다고 가정한다. 더욱이, HSR 프로세스는 소정의 원시 요소의 복수 개의 가시 서브섹션을 생성할 수 있고, 이들은 다른 원시 요소들의 가시 서브섹션 중에서 제때에 산재될 수 있다. 따라서, 프래그먼트 칼라링 프로세스(252)는 원시 요소의 엣지를 따라서 또는 x축 또는 y축을 따라서 증가적인 계산을 행할 필요도 없이 소정의 원시 요소 내의 랜덤 위치에서의 칼라값들을 생성할 수 있어야 한다.
본 발명의 실시예의 블렌딩 프로세스(253)는 픽셀당 단일의 칼라를 생성하기 위해 프래그먼트 칼라들을 함께 조합한다. 종래의 z 버퍼된 블렌드 프로세스(236)와는 반대로, 이 블렌딩 프로세스(253)는 z 버퍼 연산들을 포함하지 않는다. 그 이유는, 정확한 잠복면 제거 프로세스(251)는 이미 어느 원시 요소들이 각 샘플에서 가시적인지를 판단했기 때문이다. 블렌딩 프로세스(253)는 각 샘플마다 개개의 칼라값을 유지할 수 있거나, 샘플 칼라들은 전체 픽셀에 대해서 단일 칼라를 형성하도록 함께 혼합될 수 있다. 만일 개개의 칼라값들이 샘플당 유지되고 있고 프레임 버퍼(240) 내에 개별적으로 기억된다면, 최종 픽셀 칼라들은, 데이터가 디지털 아날로그 전환기(242)에 전송될 때, 스캔 아웃 프로세스 동안 샘플 칼라들로부터 생성된다.
3.1.4 지연 쉐이딩 그래픽 파이프라인, 제2 실시예(버전 2)
DSGPv1에 대해 전술한 바와 같이, 장면 메모리(250)는 원시 요소 데이터와 파이프라인 상태를 기억한다. 도 5에 도시되어 있는 지연 쉐이딩 그래픽 파이프라인의 제2 실시예(버전 2)(DSGPv1)에 있어서, 이 장면 메모리(250)는 두 개의 부분, 즉 공간 메모리(261) 부분과 다각형 메모리(262) 부분으로 분할된다. 데이터의 분할은 간단하게 원시 요소 데이터와 파이프라인 데이터로 되지 않는다.
DSGPv2에서, HSR에 필요한 파이프라인 상태 데이터의 부분은 공간 메모리(261)에 기억되고, 나머지는 다각형 메모리(262)에 기억된다. HSR에 필요한 파이프라인 상태의 예들에는 (예컨대, OpenGL 설명서에 정의되어 있는 바와 같이) DepthFunc, DepthMask, StencilEnable 등이 포함되어 있다. HSR에 필요하지 않은 파이프라인 상태의 예들에는 BlendEquation, BlendFunc, 스티플 패턴 등이 포함되어 있다. 특정 블렌딩 함수의 선택 또는 식별[예컨대, R=RSAS+R0(1-AS)를 선택)은 HSR에 대해서 필요하지 않지만, HSR 프로세스는 원시 요소가 블렌딩에 종속되어 있는지의 여부를 고려해야 한다. 그리고, 이것은 대개 원시 요소가 이전의 기하구조를 완전히 막을 수 없는 것으로서 취급됨을 의미한다. 마찬가지로, HSR 프로세스는 원시 요소가 시저 테스트, 알파 테스트, 칼라 테스트, 스텐실 테스트 및 기타의 프래그먼트당 연산에 종속되어 있는지의 여부를 고려해야 한다.
원시 요소 데이터도 분할된다. HSR에 필요한 원시 요소 데이터의 부분은 공간 메모리(261)에 기억되고, 원시 요소 데이터의 나머지는 다각형 메모리(262)에기억된다. HSR에 필요한 원시 요소 데이터의 부분은 꼭지점의 위치와 공간 미분(즉, 엣지에 대한 δz/δx, δz/δy, δx/δy 등)를 포함한다. HSR에 필요하지 않은 원시 요소 데이터의 부분은 꼭지점 칼라, 텍스쳐 좌표, 칼라 미분 등을 포함한다. 만일 프래그먼트당 라이팅이 파이프라인에서 수행되면, 전체의 라이팅 방정식이 모든 프래그먼트에 적용된다. 그러나, 지연 쉐이딩 파이프라인에 있어서, 가시 프래그먼트만은 라이팅 계산을 필요로 한다. 이 경우, 다각형 메모리는 꼭지점 노말, 꼭지점 아이(눈) 좌표, 꼭지점 표면 탄젠트, 꼭지점 바이노말, 이 모든 속성들의 공간 미분, 및 기타의 원시 요소당 라이팅 정보를 포함할 수도 있다.
HSR 프로세스 동안에, 원시 요소의 공간 속성은, 특히 HSR 프로세스가 타일당을 기준으로 하여 행해진다면, 반복적으로 액세스된다. 장면 메모리(250)를 공간 메모리(261)와 다각형 메모리(262)로 분할하는 것은 총 메모리 대역폭을 감소시키는 이점이 있다.
증가형 렌더링 장치(230)에 대한 셋업으로부터의 출력은 공간 데이터 분리 프로세스(263)으로 입력되고, 이는 HSR에 필요한 모든 데이터를 공간 메모리(261)에 그리고 나머지 데이터를 다각형 메모리(262)에 기억한다. EHSR 프로세스(264)는 원시 요소 공간 데이터(예컨대, 꼭지점 스크린 좌표, 공간 미분 등)와 (프래그먼트당 테스팅 연산에 대한 모든 제어 비트를 비롯한) HSR에 필요한 파이프라인 상태의 부분을 수신한다.
가시 프래그먼트들이 EHSR(264)로부터 출력될 때, 데이터 정합 프로세스(265)는 꼭지점 상태와 파이프라인 상태를 가시 프래그먼트와 정합시키고,타일 정보는 타일 버퍼(266)에 기억된다. 파이프라인의 나머지는 주로, 픽셀로(부터)의 샘플 전환(267), 프레임 버퍼로(부터)의 판독 및 기록, 이중 버퍼된 MUX 출력 룩업, 및 프레임 버퍼에 기억되어 있는 데이터의 실제 아날로그 디스플레이 장치 신호값들로의 디지털 아날로그(D/A) 전환을 비롯한 스캔 아웃 프로세스와 관련있다.
3.1.5 지연 쉐이딩 그래픽 파이프라인, 제3 실시예(버전 3)
도 6에 도시된 지연 쉐이딩 그래픽 파이프라인의 제3 실시예(버전 3)(DSGPv3)에 있어서, 장면 메모리(250)는 아직 두 개의 부분[공간 메모리(261)와 다각형 메모리(262)]으로 분할되어 있고, 부가하여 증가형 렌더링 장치(230)에 대한 셋업은 데이터 분리 후와 정확한 잠복면 제거 이전에 발생하는 공간 셋업에 의해 대체된다. 파이프라인 구조의 나머지와 프로세스들은 제1 실시예에 관해 이미 설명된 바와 같이 변경되지 않는다.
3.1.6 지연 쉐이딩 그래픽 파이프라인, 제4 실시예(버전 4)
도 7에 도시된 지연 쉐이딩 그래픽 파이프라인의 제4 실시예(버전 4)(DSGPv4)에 있어서, 제3 실시예(도 6)의 정확한 잠복면 제거는 보존의 잠복면 제거 구조와 절차에 의해 대체되고, 다운 스트림 z 버퍼된 블렌드는 블렌딩 절차를 대체한다.
3.1.7 지연 쉐이딩 그래픽 파이프라인, 제5 실시예(버전 5)
도 8에 도시된 지연 쉐이딩 그래픽 파이프라인의 제5 실시예(버전 5)(DSGPv5)에 있어서, 정확한 잠복면 제거는 제3 실시예에서와 같이 사용되지만,틸팅이 부가되고, 타일 분류 절차는 데이터 분리 후에 부가되며, 판독은 공간 셋업 이전에 타일에 의해 행해진다. 더욱이, 처음 세 개의 실시예의 다각형 메모리는 상태 메모리로 대체된다.
3.1.8 지연 쉐이딩 그래픽 파이프라인, 제6 실시예(버전 6)
도 9에 도시된 지연 쉐이딩 그래픽 파이프라인의 제6 실시예(버전 6)(DSGPv6)에 있어서, 제5 실시예(도 8)의 정확한 잠복면 제거는 보전 잠복면 제거에 의해 대체되고, 제5 실시예의 다운스트림 블렌딩은 z 버퍼된 블렌딩(테스팅 및 블렌딩)에 의해 대체된다. 이 제6 실시예는, 몇 가지 특성을 명명하기 위한, 두 부분의 장면 메모리, 원시 요소 데이터 분할 또는 분리, 공간 셋업, 틸팅 및 타일당 프로세싱, 보존 잠복면 제거, 및 z 버퍼된 블렌딩(테스팅 및 블렌딩)을 비롯한 본 발명의 구조 및 방법에 의해 제공되는 유리한 특성들 중 몇 가지를 내재하고 있기 때문에, 보다 우수하다.
3.1.9 있을 수 있는 다른 실시예들(버전들)
본 발명의 그래픽 파이프라인의 몇 가지 예시적인 실시예들이 도 4 내지 도 9와 관련해서 도시되고 설명되었지만, 본 명세서에서 공개하고 있는 설명에 비추어 보면, 당해 기술 분야의 숙련자들은 본 발명의 구조와 절차가 여러 가지의 조합과 치환으로 구성되어 본 발명의 다른 실시예들을 만들 수 있음을 용이하게 이해할 것이고, 본 발명이 본 명세서에서 특히 언급한 특정의 조합에 한정하는 것이 아님을 알아야 한다.
3.2 주요 혁신에 관한 개관
파이프라인은 원시 요소들을 렌더링하고, 본 발명은 삼각형, 선 및 점을 포함하는 렌더링 가능한 원시 요소의 집합에 관해 설명되고 있다. 세 개 이상의 꼭지점이 있는 다각형은 기하구조 블럭의 삼각형들로 분할되지만, DSGP 파이프라인은 변(邊)이 더 많은 4변형 또는 다각형을 렌더링하기 위해 용이하게 변형될 수 있을 것이다. 따라서, 파이프라인은 임의의 다각형이 일단 삼각형들로 쪼개지면 그 다각형을 렌더링할 수 있기 때문에, 본 발명의 렌더링 장치는 임의의 다각형 원시 요소를 효율적으로 렌더링한다.
주어진 원시 요소가 영향을 미칠 수 있는 곳이 디스플레이 스크린 상의 3D 윈도우 중 어느 부분인지를 식별하기 위해, 파이프라인은 작도되어 있는 3D 윈도우를 일련의 보다 작은 영역들, 소위 타일과 스탬프로 분할한다. 파이프라인은 지연 쉐이딩을 수행하고, 픽셀 칼라들은 잠복면 제거 이후까지 판단되지 않는다. 크기 비교 내용 어드레스 가능한 메모리(MCCAM)의 사용에 의해, 파이프라인은 잠복 기하구조 컬링을 효율적으로 수행할 수 있다.
3.2.1 보존 지연 쉐이딩
본 발명에 의해 제공되는 핵심 아이디어 또는 진보적인 사상 중 하나는 보존 잠복면 제거(CHSR)에 관한 것이다. CHSR는 각 원시 요소를 시간 순서로 처리하고, 소정의 원시 요소가 접촉하는 샘플마다, 깊이 테스트와 알파 테스트에서 다양한 API 상태 변수를 기초로 하여 보존 판정을 행한다. CHSR 프로세스의 주요 특성 중 하나는, 알파 테스트, 칼라 테스트, 및 스텐실 테스트 등의 API로부터의 비깊이의존 테스트가 DSGP 파이프라인에 의해 수행될 수 있더라도, 칼라 계산은 잠복면 제거 동안에는 행해질 필요가 없다는 것이다. CHSR 프로세스는 샘플당 유한 상태 기구(FSM)를 고려할 수 있다. 이하에서는, 각 샘플당 FSM을 유한 상태 기구(SFSM)라고 부른다. 각 SFSM은, (1) z 좌표 정보, (2) 원시 요소 정보(그 샘플 또는 픽셀에서 원시 요소의 칼라를 생성하는데 필요한 임의의 정보), (3) 하나 또는 그 이상의 상태 비트[예컨대, 이들 비트는 정밀하거나 보존적인 z값(들)을 지정할 수 있다]를 포함하는 샘플당 데이터를 유지한다. 샘플당 복수 개의 z값은 용이하게 사용될 수 있지만, 샘플당 원시 요소 정보의 복수 개의 집합은 고가일 것이다. 이하에서는, SFSM은 하나의 원시 요소에 대한 원시 요소 정보를 유지하는 것으로 가정한다. 또한, SFSM은 분류된 투명성에 사용되고 다음 섹션에서 설명되는 투명성 정보를 유지할 수 있다.
3.2.2 CHSR와 알파 테스트
알파 테스트를 다루는 CHSR 프로세스의 일 예로서, 도 10 내지 도 14, 특히 도 11의 다이어그램도를 고려한다. 이 다이어그램은 특정 샘플에 대한 상이한 z 좌표 위치에서 여섯 개의 원시 요소(원시 요소 A, B, C, D, E 및 F)의 렌더링을 도시하고 있고, 다음의 순서(「깊이 클리어」에서 시작하고, 「깊이 테스트」가 이하로 설정됨), 즉 원시 요소 A, B 및 C(「알파 테스트」가 디스에이블됨), 원시 요소 D(「알파 테스트」가 인에이블됨), 및 원시 요소 E 및 F(「알파 테스트」가 디스에이블됨)의 순서로 렌더링된다. 도면으로부터, zA〉zC〉zB〉zE〉zD〉zF이므로, 원시 요소 A가 가장 먼 z 좌표 거리임을 알 수 있다. 또한, 알파 테스트는 원시 요소 D에 대해서는 인에이블되지만, 다른 원시 요소들 각각에 대해서는 디스에이블됨을 알 수있다.
CHSR에 관한 상기 설명으로부터, CHSR 프로세스는 샘플 유한 상태 기구(SFSM)라고 고려될 수 있음을 상기한다. 보존 잠복면 제거하의 이들 여섯 개의 원시 요소를 알파 테스트로 렌더링하는 단계들은 다음과 같다.
단계 1: 깊이 클리어에 의해, 각 샘플 유한 상태 기구(SFSM)에 다음의 결과가 생긴다. 1) z값들은 최대값으로 초기화된다. 2) 원시 요소 정보는 클리어된다. 3) 샘플 상태 비트는 z값이 정밀함을 표시하도록 설정된다.
단계 2: 원시 요소 A가 SFSM에 의해서 처리될 때, 그 원시 요소는 유지되고(즉, 가시 표면에 대한 현재의 최상의 생각으로 된다), 이에 의해, SFSM은, 1) 「근거리」 z값으로서 z값 zA, 2) 칼라 원시 요소 A에 필요한 원시 요소 정보를 기억하고, 3) z값(zA)은 정밀하다고 명명된다.
단계 3: 원시 요소 B가 SFSM에 의해서 처리될 때, 그 원시 요소는 유지되고(그의 z값은 원시 요소 A의 그것 이하이다), 이에 의해, SFSM은, 1) 「근거리」 z값으로서 z값 zB(zA는 버린다), 2) 칼라 원시 요소 B에 필요한 원시 요소 정보를 기억하고(원시 요소 A의 정보는 버린다), 3) z값(zB)은 정밀하다고 명명된다.
단계 4: 원시 요소 C가 SFSM에 의해서 처리될 때, 그 원시 요소는 버리고(즉, 그것은 가시 표면에 대한 현재의 최상의 생각, 즉 원시 요소 B에 의해 가려진다), SFSM 데이터는 변경되지 않는다.
단계 5: (알파 테스트를 인에이블시킨) 원시 요소 D가 SFSM에 의해서 처리될때, 그 원시 요소는 원시 요소 B보다 가깝고 그의 알파값은 SFSM이 동작하는 시간에 미지이기 때문에, 그 원시 요소의 가시성은 판단될 수 없다. 어느 원시 요소가 보이게 될지(원시 요소 B 이든 원시 요소 D 이든)에 관한 결정은 수행될 수 없기 때문에, 원시 요소 B는 (그의 칼라를 생성시키도록) 파이프라인으로 내려 보내고, 원시 요소 D는 유지된다. 이하에서는, 이를 원시 요소 B의 「초기 디스패치」라고 부른다. 원시 요소 D의 프로세싱이 종료되었을 때, SFSM은, 1) 「근거리」 z값은 zD이고 「원거리」 z값은 zB이다, 2) 칼라 원시 요소 D에 필요한 원시 요소 정보(원시 요소 D의 정보는 초기 디스패치를 수행했다), 3) (근거리와 원거리 모두가 유지되기 때문에) z값은 보존으로서 명명된다라는 사실을 기억한다. 이 조건에서, SFSM은 zD보다 가까운 기하구조의 한 단편이 앞의 기하구조를 가리고, zB보다 먼 기하구조가 가려지며, zD와 zB사이의 기하구조가 판단되지 않는다고 판단할 수 있고, 보일 수 있다고 가정되어야 한다(따라서, 보존 추정이 행해진다). SFSM이 보존 상태에 있고 그것이 유효한 원시 요소 정보를 포함하고 있을 때, SFSM 방법은 기억되어 있는 원시 요소 정보의 깊이값이 근거리 깊이값이라고 고려한다.
단계 6: (알파 테스트를 디스에이블시킨) 원시 요소 E가 SFSM에 의해서 처리될 때, 그 원시 요소는 근거리 z값과 원거리 z값 사이(즉, zD와 zB사이)에 있기 때문에, 그 원시 요소의 가시성은 판단될 수 없다. 그러나, 원시 요소 E는 이 시기에 파이프라인으로 내려 보내지지 않는다. 그 이유는, 원시 요소가 올바른 시간 순서를 벗어나 z 버퍼된 블렌드(뒤에서, 양호한 실시예에 있어서의 픽셀 블럭의 일부로서 설명됨)에 도달하게 될 수 있기 때문이다. 따라서, 원시 요소 D는 시간 배열을 유지하기 위해 파이프라인으로 내려 보낸다. 원시 요소 E의 프로세싱이 완료되었을 때, SFSM은, 1) 「근거리」 z값은 zD이고 「원거리」 z값은 zB이다(이들은 변경되지 않았고, zE는 유지되지 않음에 주의한다), 2) 칼라 원시 요소 E에 필요한 원시 요소 정보(원시 요소 D의 정보는 초기 디스패치를 수행했다), 3) (근거리와 원거리 모두가 유지되기 때문에) z값은 보존으로서 명명된다라는 사실을 기억한다.
단계 7: 원시 요소 E가 SFSM에 의해서 처리될 때, 그 원시 요소는 유지되고(그의 z값은 원시 요소 A의 그것 이하이다), 이에 의해, SFSM은, 1) 「근거리」 z값으로서 z값 zF(zD와 zB는 버린다), 2) 칼라 원시 요소 F에 필요한 원시 요소 정보를 기억하고(원시 요소 E의 정보는 버린다), 3) z값(zF)은 정밀하다고 명명된다.
단계 8: 타일을 접촉하는 모든 기하구조가 처리되었을 때(또는, 타일이 없는 경우에는, 프레임 내의 모든 기하구조가 처리되었을 때), 임의의 유효 원시 요소 정보가 파이프라인으로 내려 보내진다. 이 경우, 원시 요소 F의 정보가 보내진다. 이것은 엔드 오브 타일[또는 엔드 오브 프레임] 디스패치이고, 초기 디스패치가 아니다.
이 예시적인 CHSR 프로세스의 요약에 있어서, 원시 요소 A 내지 F가 처리되었고, 원시 요소 B, D 및 F는 파이프라인으로 내려 보내졌다. B, D 및 F의 가시성을 분해하기 위해, (양호한 실시예에 있어서의 픽셀 블럭의) z 버퍼된 블렌드는 파이프라인의 단부 부근에 포함된다. 이 예에서는, 샘플에 대해서 칼라 원시 요소 F만이 사용된다.
3.2.2.1 CHSR과 스텐실 테스트
CHSR 프로세스의 양호한 실시예에 있어서, 모든 스텐실 연산은 파이프라인의 단부 부근에서 행해지고, 따라서 스텐실값은 프레임 버퍼 내에 유지되고 있기 때문에 (양호한 실시예에 있어서의 컬 블럭에서 발생하는) CSHR 방법에서 사용할 수 없다. 스텐실값은 CHSR 프로세스에서 사용하기 위해 프레임 버퍼로부터 전송될 수 있지만, 이것은 대개 성능을 감소시킬 장거리 잠재 경로를 필요로 할 것이다. OpenGL 등의 API에서는 스텐실 테스트가 알파 테스트 이후에 수행되기 때문에, 스텐실값은 CHSR 프로세스 내에 정밀하게 유지될 수 없고, 알파 테스트의 결과는 CHSR 프로세스에 알려지지 않는다. 이것은 스텐실 테스트가 정밀하게 모델링될 수 없음을 의미한다. 게다가, 렌더링 장치는 (대개 각 프레임의 개시시에 클리어되는 깊이값과는 반대로) 많은 프레임에 걸쳐서 스텐실값을 유지하고, 이들 스텐실값은 프레임 버퍼 내에 기억된다. 이 모든 것 때문에, CHSR 프로세스는 스텐실 연산을 다룰 때 보존 방법을 이용한다. 만일 소정의 원시 요소가 프레임 버퍼 내의 스텐실값에 영향을 미칠 수 있다면, 스텐실 연산이 깊이 테스트 이전에 발생하기 때문에, 그 원시 요소는 항상 파이프라인으로 내려 보내진다(이하에서는, 이를 「CullFlushOverlap」이라고 부르고, 컬 블럭 내의 신호 CullFlushOverlap의 주장으로써 표시된다)(OpenGL 설명서 참조). CullFlushOverlap 조건은 SFSM을 그의 대부분의 보존 상태에 대해서 설정한다.
다른 가능성으로서, 만일 스텐실 기준값(OpenGL 설명서 참조)이 변경되고 스텐실 테스트가 프레임 버퍼 내의 스텐실값을 기초로 하여 샘플값을 버리도록 인에이블되고 구성된다면, SFSM의 모든 유효 원시 요소 정보는 파이프라인으로 내려 보내지고(이하에서는, 이것을 「CullFlushAll」이라고 부르고, 컬 블럭 내의 신호 CullFlushAll의 주장으로써 표시된다), z값은 그들의 최대값으로 설정된다. 이 「프러슁」은, 스텐실 기준값을 변경하는 것이 z 버퍼된 블렌드(또는 픽셀 블럭)에서 「가시성 규칙」을 효과적으로 변경하기 때문에, 필요하다.
스텐실 테스트를 취급하는 CHSR 프로세스의 일 예(OpenGL 설명서 참조)로서, 도 12의 다이어그램도를 고려한다. 여기에서는 네 개의 특정 샘플(SFSM0 내지 SFSM3으로 명명된 SFSM에 상응함)을 커버하는 두 개의 원시 요소(원시 요소 A 및 C)와, 그들 네 개의 샘플 중 두 개의 샘플을 커버하는 부가의 원시 요소(원시 요소 B)가 있다. 그 세 개의 원시 요소는 다음의 순서(깊이 클리어에서 시작하고, 깊이 테스트가 이하로 설정됨), 즉 원시 요소 A(스텐실 테스트가 디스에이블됨), 원시 요소 B(스텐실 테스트가 인에이블되고 StencilOp가 「REPLACE」로 설정됨, OpenGL 설명서 참조), 및 원시 요소 C(스텐실 테스트가 디스에이블됨)의 순서로 렌더링된다. 그 단계들은 다음과 같다.
단계 1: 깊이 클리어에 의해, 본 예에서 네 개의 SFSM의 각각에 있어서 다음의 결과가 생긴다. 1) z값들은 최대값으로 초기화된다. 2) 원시 요소 정보는 클리어된다. 3) 샘플 상태 비트는 z값이 정밀함을 표시하도록 설정된다.
단계 2: 원시 요소 A가 각 SFSM에 의해서 처리될 때, 그 원시 요소는 유지되고(즉, 가시 표면에 대한 현재의 최상의 생각으로 된다), 이에 의해, 네 개의 SFSM은, 1) 「근거리」 z값으로서 그들에 상응하는 z값(각각 zA0, zA1, zA2, zA3중 어느 하나), 2) 칼라 원시 요소 A에 필요한 원시 요소 정보를 기억하고, 3) 각 SFSM에서의 z값은 정밀하다고 명명된다.
단계 3: 원시 요소 B가 각 SFSM에 의해서 처리될 때, 샘플 1과 2만이 영향을 받아, SFSM0과 SFSM3은 영향을 받지 않게 되고, SFSM1과 SFSM2는 다음과 같이 업데이트되게 된다. 1) 원거리 z값은 최대값으로 설정되고, 근거리 z값은 최소값으로 설정된다. 2) 원시 요소 A와 B에 대한 원시 요소 정보는 파이프라인으로 내려 보낸다. 3) 샘플 상태 비트는 z값이 보존적임을 표시하도록 설정된다.
단계 4: 원시 요소 C가 각 SFSM에 의해서 처리될 때, 원시 요소는 유지되지만, SFSM들은 원시 요소를 동일한 방법으로 모두 조작하지는 않는다. SFSM0과 SFSM3에서, 상태는 다음과 같이 업데이트된다. 1) zC0와 zC3는 「근거리」 z값들이 된다(zA0와 zA3는 버린다). 2) 칼라 원시 요소 C에 필요한 원시 요소 정보(원시 요소 A의 정보는 버린다). 3) z값들은 정밀하다고 명명된다. SFSM1과 SFSM2에서, 상태는 다음과 같이 업데이트된다. 1) zC1과 zC2는 「원거리」 z값들이 된다(근거리 z값들은 유지된다). 2) 칼라 원시 요소 C에 필요한 원시 요소 정보. 3) z값들은 보존적이라고 명명된 채 유지된다.
이 예시적인 CHSR 프로세스의 요약에 있어서, 원시 요소 A 내지 C가 처리되었고, 모든 원시 요소들은 파이프라인으로 내려 보내졌지만, 모든 샘플들에서는 아니다. 가시성을 분해하기 위해, (양호한 실시예에 있어서의 픽셀 블럭의) z 버퍼된블렌드는 파이프라인의 단부 부근에 포함된다. 이 예에서는, 복수 개의 샘플들은 CullFlushOverlap이 선택된 샘플들을 플러쉬하고 다른 샘플들은 영향받지 않게 내버려두는 것을 설명하도록 개시되었다.
3.2.2.2 CHSR와 알파 블렌딩
알파 블렌딩은 두 개의 원시 요소의 칼라들을 하나의 칼라로 조합하는데 사용된다. 그러나, 원시 요소들은 여전히, z값들의 업데이트를 위해 깊이 테스트에 종속되어 있다.
알파 테스트로 다루는 CHSR 프로세스의 일 예로서, 도 13을 고려한다. 여기에서는 소정의 특정 샘플에 대해 네 개의 원시 요소(원시 요소 A, B, C 및 D)가 있고, 다음의 순서(깊이 클리어에서 시작하고, 깊이 테스트가 이하로 설정됨), 즉 원시 요소 A(알파 블렌딩이 디스에이블됨), 원시 요소 B 및 C(알파 블렌딩이 인에이블됨), 및 원시 요소 D(알파 블렌딩이 디스에이블됨)의 순서로 렌더링된다. 그 단계들은 다음과 같다.
단계 1: 깊이 클리어에 의해, 각 CHSR SFSM에 있어서 다음의 결과가 생긴다. 1) z값들은 최대값으로 초기화된다. 2) 원시 요소 정보는 클리어된다. 3) 샘플 상태 비트는 z값이 정밀함을 표시하도록 설정된다.
단계 2: 원시 요소 A가 SFSM에 의해서 처리될 때, 그 원시 요소는 유지되고(즉, 가시 표면에 대한 현재의 최상의 생각으로 된다), 이에 의해, SFSM은, 1) 「근거리」 z값으로서 z값(zA), 2) 칼라 원시 요소 A에 필요한 원시 요소 정보를 기억하고, 3) z값은 정밀하다고 명명된다.
단계 3: 원시 요소 B가 SFSM에 의해서 처리될 때, 그 원시 요소는 유지되고(그의 z값이 원시 요소 A의 값 이하이기 때문), 이에 의해, SFSM은 다음을 기억하게 된다. 1) 근거리 z값으로서 z값(zB)(zA는 버린다). 2) 칼라 원시 요소 B에 필요한 원시 요소 정보(원시 요소 A의 정보는 파이프라인으로 내려 보낸다). 3) z값(zB)은 정밀하다고 명명된다. 렌더링 프로세스 중 이 시점에서는 원시 요소 B의 칼라가 원시 요소 A와 혼합될 수 있기 때문에, 원시 요소 A는 파이프라인으로 내려 보내진다. 이로써, 원시 요소들이 파이프라인으로 내려 보내질 때, 그 원시 요소들의 시간 순서가 보호된다.
단계 4: 원시 요소 C가 각 SFSM에 의해서 처리될 때, 그 원시 요소는 버려지고(즉, 가시 표면에 대한 현재의 최상의 생각, 즉 원시 요소 B에 의해 가려진다), SFSM 데이터는 변경되지 않는다. 원시 요소 B와 C가 투명의 표면으로서 렌더링될 필요가 있다면, 원시 요소 C는 원시 요소 B에 의해 잠복되지 않아야 함에 주의한다. 이것은 원시 요소 B가 렌더링되고 있는 동안 깊이 마스트를 턴오프하지만, 정정될 투명성 블렌딩에 대해서, 그 표면들은 전방에서 후방으로 또는 후방에서 전방으로의 순서 중 어느 하나의 순서로 혼합되어야 함으로써 달성된다.
만일 깊이 마스크(OpenGL 설명서 참조)가 디스에이블되면, 깊이 버퍼로의 기록(즉, z값의 저장)은 수행되지 않는다. 그러나, 그 깊이 테스트는 여전히 수행된다. 이 예에서, 만일 깊이 마스크가 원시 요소 B에 대해 디스에이블되면, 값(zB)은 SFSM에 저장되지 않는다. 이어서 원시 요소 C는 그의 z값이 zA와 비교될 것이기 때문에, 가시적이라고 고려될 것이다.
이 예시적인 CHSR 프로세스의 요약에 있어서, 원시 요소 A 내지 D가 처리되었고, 모든 원시 요소들은 파이프라인으로 내려 보내졌지만, 모든 샘플들에서는 아니다. 가시성을 분해하기 위해, (양호한 실시예에 있어서의 픽셀 블럭의) z 버퍼된 블렌드는 파이프라인의 단부 부근에 포함된다. 이 예에서는, 복수 개의 샘플들은 CullFlushOverlap이 선택된 샘플들을 플러쉬하고 다른 샘플들은 영향받지 않게 내버려두는 것을 설명하도록 개시되었다.
3.2.2.3 CHSR와 이상 깊이 테스트
보존적 잠복면 제거 절차의 구성은 OpenGL 등의 다른 표준 API와의 호환성을 유리하게 유지한다. 많은 API의 하나의 복잡함은 깊이 테스트를 변경할 수 있는 능력임을 상기한다. 3D 렌더링에 관한 생각의 표준적 방법은 가시 대상물들이 가려진 대상물들보다 가깝게 있고(즉, z값이 보다 작음), 이는 「이하」 깊이 테스트(즉, 소정의 대상물의 z값이 다른 기하구조 「이하」라면, 그 대상물은 가시적임)를 선택함으로써 달성됨을 상기한다. 그러나, 또한, 대부분의 API는, 대수 관계, 크기 관계 및 로직 관계에서의 이상, 이하, 이상이거나 동등, 이하이거나 동등, 이하, 동등하지 않음 등과 같이, 소정의 프레임 내에서 변경될 수 있는 다른 깊이 테스트를 지원한다. 기본적으로, 이것은 가시적인 것에 대한 「규칙의 변경」을 극적이게 하고, 그 결과, 상이한 렌더링 규칙들이 상이한 원시 요소들의 시간 순서가 고려되어야 한다.
진보적인 보존 잠복면 제거의 경우에 있어서, 상이한 또는 부가적인 절차들은, 「이상」 깊이 테스트가 사용될 때, 다른 표준 API와의 호환성을 유지하기 위해, 후술되는 이유로 유리하게 이용될 수 있다. 또한, 당해 기술 분야의 숙련자들은 깊이 테스트가 이상이거나 동등, 또는 다른 경우에는 설명된 예외들로 될 다른 기능 관계라면, 유사한 변경이 유리하게 사용될 수 있음을 인식할 것이다.
종래의 비지연 쉐이딩 장치의 경우에 모든 기하구조 아이템에 대해서 규칙들의 시퀀스를 실행하고, 다음에 최종의 렌더링된 결과를 보고자 하는 것임을 더 주의한다. 비교해 보면, 진보적인 지연 쉐이딩 장치의 실시예들에 있어서, 그러한 종래의 패러다임은 깨진다. 진보적인 구조와 방법은, 기하구조의 모든 단편 내의 모든 픽셀에 대해서 모든 칼라를 만들거나 생성하지 않고서도, 어떤 기하구조가 프레임 버퍼 내의 최종값에 실제로 영향을 미칠 것인지를 예견하거나 예측한다. 원칙적으로, 기하구조의 공간 위치가 조사되고, 임의의 특정 샘플, 즉 z 버퍼의 최종 칼라에 영향을 미치는 하나의 기하구조 아이템에 대해서 판단이 행해지며, 이어서 그 칼라만을 생성한다.
3.2.2.4 CHSR 프로세스에 대한 추가 고려 사항
샘플들은 병렬로 행해지고, 일반적으로 소정의 스탬프 내의 모든 픽셀들 내의 모든 샘플은 병렬로 행해진다. 따라서, 클럭 사이클당 하나의 스탬프가 처리(그리고, 스탬프당 픽셀이 네 개이고 픽셀당 샘플이 네 개 있음)될 수 있다면, 클럭 사이클당 16 개의 샘플이 처리된다. 「스탬프」는 한 번에 처리되는 픽셀과 샘플의 수를 정의한다. 이 스탬프당 프로세싱은 대개 파이프라인되고, (이전의 원시 요소로부터의) 동일 스탬프가 완료되기 전에 소정의 스탬프가 다시 처리되어야 한다면(즉, 순서를 벗어난 스탬프 프로세싱이 조작될 수 있다면), 파이프라인 스톨(stall)이 주입된다.
필요한 초기 디스패치가 없다면, 엔드 오브 타일 디스패치만이 필요하다. 이것은, 소정의 타일 내의 모든 기하구조가 불명료하고 스텐실 테스트 또는 연산이 없으며 보이지 않을 수 있는 알파 테스트된 원시 요소들이 없는 경우이다.
각 SFSM의 원시 요소 정보는 모든 원시 요소 정보가 기억되어 있는 소정의 메모리 내로의 포인터에 의해 대체될 수 있다. 양호한 실시예에서 후술하는 바와 같이, 칼라 포인터는 다각형 메모리 내의 원시 요소의 정보를 지시하는데 사용된다.
대안으로서, 원거리 z값만이 유지되고(근거리 z값은 유지되지 않음), 따라서 데이터 기억량이 감소되지만, 원시 요소 F 이후에 「보존적」으로 유지하기 위해 샘플 상태 비트를 필요로 하고, 또한 원시 요소 E가 원시 요소 F의 전방 또는 후방에 있는지의 여부를 알지 못할 수 있기 때문에 원시 요소 E는 파이프라인으로 내려 보내지게 된다.
근거리 z값과 원거리 z값 모두를 유지하기 위한 대안으로서, 원거리 z값만이 유지될 수 있을 것이고, 따라서 데이터 기억량은 감소되지만, 「정밀함」이라고 명명되었을 경우에 「보존적」으로 유지하기 위해 샘플 상태 비트를 필요로 하고, 또한 부가의 샘플들이 파이프라인으로 내려 디스패치되게 된다. 전술한 제1 CHSR의 예(알파 테스트를 포함하는 것)에서, 샘플 상태 비트는 원시 요소 F 이후에 「보존적」으로 유지될 것이고, 또한 원시 요소 E는, 근거리 z값의 결핍으로 인해 원시요소 E가 원시 요소 F의 전방 또는 후방에 있는지의 여부를 알지 못할 것이기 때문에, 파이프라인으로 내려 보내질 것이다.
프로세싱 스탬프는, 단순히 SFSM이 스탬프 단위로 병렬로 오퍼레이팅할 수 있게 하는 것보다 효율이 높다. 또한, 스탬프는 파이프라인으로 내려 보내진 데이터 패킷의 수를 줄이는데도 사용된다. 즉, 소정의 스탬프 내의 하나의 샘플이 디스패치(초기 디스패치 또는 엔드 오브 타일 디스패치 중 어느 하나)될 때, 동일한 스탬프와 동일한 원시 요소 내의 다른 샘플들도 디스패치된다(이하에서는, 이러한 조인트 디스패치를 가시 스탬프 부분 또는 VSP이라고 부른다). 전술한 제2 CHSR 예(스텐실 테스트를 포함하는 것)에서, 네 개의 모든 샘플이 동일한 스탬프 내에 있다면, 샘플 1과 2의 초기 디스패칭은 샘플 0과 3을 초기 디스패칭하게 할 것이다. 이에 의해 보다 많은 샘플이 파이프라인으로 내려 보내지게 되고 칼라 계산의 량이 증가될 것 같지만, 순수한 증가는 (대체로) 발생하지 않고, 오히려 칼라 계산의 순수한 감소가 발생한다. 이것은, 기타의 경우에는 공간 일관성 스탬프들을 잠재적으로 분할하기 위한, 소정의 픽셀 내의 공간 일관성(즉, 동일 픽셀 내의 샘플들은 함께 가시적이거나 함께 잠복적인 경향이 있다)과, 알파 테스트, 칼라 테스트, 스텐실 테스트 및/또는 블렌딩을 갖는 엣지들에 대한 대기 시간 때문이다. 즉, 부가적인 샘플들이 계산적인 부하를 분명하게 증가시키지 않을 때 그 부가적인 샘플들을 파이프라인으로 내려 보내는 것은 보내져야 하는 VSP의 총수를 감소시킴으로써 오프셋보다 많다. 전술한 제2 CHSR의 예에서, 모든 샘플들이 동일한 스탬프 내에 있다면, 동일한 수의 VSP가 생성될 것이다.
알파 테스트의 경우에, 원시 요소에 대한 알파 테스트가 (텍스쳐링 등의 다른 장소로부터가 아니고) 꼭지점에서의 알파값으로부터만 생긴다면, 전체 원시 요소에 대해서, 단순화된 알파 테스트가 행해질 수 있다. 즉, 꼭지점 프로세싱 블럭(다음의 섹션에서 GEO라고 칭함)은 꼭지점 알파값의 임의의 보간이 알파 테스트를 통과시키도록 보장할 때를 판단하고, 그 원시 요소에 대해서 알파 테스트를 디스에이블시킨다. 이것은, CHSR이 수행되기 전에 알파값이 판단될 수 없다면, 행해질 수 없다.
만일 소정의 프레임이 깊이 클리어에서 개시하지 않는다면, SFSM들은 그들의 최대 보존 상태(최소시의 근거리 z값과 최대시의 원거리 z값)로 설정된다.
양호한 실시예에서, CHSR 프로세스는 컬 블럭에서 수행된다.
3.2.3 파이프라인 상태 정보를 비롯한, 타일에 의한 하드웨어 분류
진보적인 구조와 방법에서, 파이프라인 상태 정보의 시간 순서를 보호하는 것을 비롯해서, 시간 순서는 각 타일 내에 보호된다. 클리어 패킷도 사용된다. 본 발명의 실시예들에 있어서, 분류는 하드웨어와 RAMBUS 메모리에서 수행되고, 유리하게는 하나의 꼭지점을 이중 위치 기억시킬 수 있다. 분류된 투명성 모드의 경우, 보장된 불분명 기하구조(즉, 보다 먼 기하구조를 가리는 것으로 알려진 기하구조)는 제1 통과에서 분류 메모리로부터 판독된다. 후속의 통과들에서, 기하구조의 나머지는 각 후속 통과에서 한 번 판독된다. 양호한 실시예에서, 타일 분류 방법은 분류 블럭에서 수행된다.
모든 꼭지점과 관련 모드 패킷 또는 상태 정보 패킷은 시간 순서의 선형(리니어) 리스트로서 기억된다. 원시 요소에 의해 접촉되는 각 타일마다, 포인터는 그 원시 요소를 완성하는 그 선형 리스트의 꼭지점에 부가된다. 예컨대, 삼각형 원시 요소는 세 개의 꼭지점에 의해 정의되고, 포인터는 그 삼각형 원시 요소를 완료하는 선형 리스트의 (제3) 꼭지점에 부가될 것이다. 제3 꼭지점과 달리 제1 꼭지점을 사용하는 다른 구조들은 그와 달리 구성될 수 있다.
기본적으로, 포인터는 원시 요소의 꼭지점들 중, 원시 요소의 다른 꼭지점들을 찾기 위한 적절한 정보를 갖는 하나의 꼭지점을 지시하는데 사용된다. 이들 원시 요소들을 독출하는 시간이 되면, 전체 원시 요소는 꼭지점과 포인터로부터 재구성될 수 있다. 각 타일은 꼭지점들을 지시하는 포인트들로 된 리스트이고, 그 리스트로부터 원시 요소를 재생성할 수 있다. 이 방법에 의해, 소정의 꼭지점을 다른 원시 요소와 공유하고 있더라도, 모든 원시 요소들은 기억될 수 있고, 각 꼭지점을 한 번 기억할 뿐이다.
본 발명의 진보적인 절차의 일 실시예에서, 타일당 리스트가 유지된다. 본 출원인은 그 리스트에 원시 요소를 기억시키지 않지만, 그 대신에 리스트는 원시 요소들에 대한 포인터들을 기억시킨다. 이들 포인터들은 원시 요소들 중 하나를 실제로 지시하고 있고, 하나의 포인터는 원시 요소에 있는 꼭지점들 중 하나를 지시하며, 또한, 그 포인터는 동일한 원시 요소에 있는 다른 꼭지점들을 찾는데 적절한 정보를 포함하고 있다. 이러한 분류 구조는 세 개의 기억부 구조들, 데이터 기억부, 타일 포인터 기억부, 및 모드 포인터 기억부로 이루어지는 구조를 이용하여 하드웨어로 유리하게 구성될 수 있다. 주어진 타일의 경우, 목표는 처리되고 있는 특정 타일과 접촉하는 원시 요소들의 시간 순서 순열을 재생성하지만, 그 타일과 접촉하지 않는 원시 요소들을 무시하는 것이다. 본 출원인은 초기에 모드들을 추출했고, 그들 모드를 독립적으로 기억시켰으며, 이제, 본 출원인은 모드 패킷들을 올바른 장소에 이 원시 요소들의 스트림으로 주입시키고자 한다. 원시 요소를 처리하기 위해서 하나 이상의 타일에 중복할 수 있는 모드 패킷이 요구되기 때문에, 본 출원인은 하나의 스테이지에서 모드 패킷을 단순히 추출하고 나서 그것을 다른 스테이지에서 재주입하는 것은 불충분함을 매우 주의하고 있다. 따라서, 모드 패킷은 적절한 시기에 관련된 모든 타일들과 재연계되어야 한다.
한 가지 간단한 방법은 모드 패킷에 대한 포인터를 모든 타일 리스트에 기록하는 것일 것이다. 이 리스트의 후속 판독들 동안에, 모드 판독 패킷 어드레스를 액세스하고 적절한 모드 데이터를 판독하는 것이 용이할 것이다. 그러나, 이 방법은 포인터를 모든 것에 기록하는 것과 타일들과 관련된 비용 때문에 종단점이 있다. 본 발명의 진보적 절차에 있어서, 각 타일의 프로세싱 도중에, 본 출원인은 적절한 타일 포인터 리스트로부터의 엔트리를 판독하고, 만일 본 출원인이 그 꼭지점에 대한 모드 데이터를 판독(인출)했다면, 본 출원인은 데이터 기억부로부터 그 꼭지점을 부활시켜 그것을 파이프라인에 전송하기만 하면 된다. 그러나, 모드 데이터가 부활된 최종 꼭지점과, 타일 포인터 리스트 내의 다음 순열의 꼭지점 사이에 변경된 경우에, 모드 데이터는 데이터 기억부로부터 인출되고, 파이프라인으로 전송된 후에, 다음 꼭지점은 꼭지점이 도달할 때 적절한 모드 데이터가 이용 가능하도록 전송된다. 본 출원인은 모드 포인터의 엔트리들이 어느 꼭지점에서 모드가 변하는 지를 식별함에 주의한다. 일 실시예에서, 모드 포인터의 엔트리들은 모드 데이터가 속하는 제1 꼭지점을 기억하지만, 모드 데이터가 공급되는 최종 꼭지점을 기억하는 등의 다른 절차들은 일관된 규칙을 따르는 한 사용될 수 있다.
3.2.4 DSGP 연산의 두 가지 모드
DSGP는 뚜렷한 두 가지 모드, 즉 시간 순서 모드와 분류된 투명성 모드로 동작할 수 있다. 시간 순서 모드는 전술되어 있고, 임의의 특정 타일 내에서 원시 요소들의 동일한 순시 순열을 유지하도록 설계된다. 양호한 실시예에서, 파이프라인 동작 모드의 제어는 분류 블럭에서 행해진다.
분류 블럭은 모드 추출 유닛(MEX)과 셋업 (STP) 유닛 사이의 파이프라인에 배치된다. 분류 블럭은 주로, 디스플레이 윈도우 주변에서 산란되는 기하구조를 취하고 그것을 타일로 분류하도록 동작한다. 또한, 분류 블럭은 분류 메모리를 관리하고, 그것은 몇 가지 모드 정보와 함께, 라스터화되기 이전에 전체 장면으로부터의 모든 기하구조를 기억한다. 분류 메모리는 꼭지점들과 모드들로 된 이중 버퍼된 리스트로 구성되어 있다. 한 페이지에는 소정의 장면의 기하구조(꼭지점마다 및 모드마다)를 모아 놓고 있지만, 다른 페이지는 그의 기하구조를 (원시 요소마다 및 모드마다) 파이프라인의 나머지로 전송하고 있다.
분류 메모리의 한 페이지가 기록되고 있을 때, 꼭지점들과 모드들은 그들이 분류 블럭에 의해 수신될 때 분류 메모리에 순차적으로 기록된다. 분류 메모리로부터 한 페이지가 판독될 때, 그 판독은 타일당 단위로 행해지며, 판독 프로세스는 두 가지 모드, 즉 시간 순서 모드와 분류된 투명성 모드로 동작한다.
3.2.5 시간 배열 모드
시간 배열된 모드에서, 꼭지점들과 모드들의 시간 순서는 각 타일 내에 보존되고, 타일은 수평 및 수직하게 바운드되는 디스플레이 윈도우의 일부이다. 보존된 시간 순서에 따라, 본 출원인은 주어진 타일에 대해, 꼭지점들과 모드들이 기록된 순서와 같은 순서로 판독됨을 의미한다.
3.2.6 분류된 투명성 모드
3.2.6 분류된 투명성 모드
분류된 투명성 모드에서 각 타일의 판독이 복수 개의 통과로 분할되고, 여기서 제 1통과에서 보증된 불투명한 기하구조는 분류 블럭으로부터 출력되고, 연속 통과에서 잠재적으로 투명한 기하구조는 분류 블럭으로부터 출력된다. 각 분류된 투명성 모드 통과내에서 시간 순서는 보장되고, 모드 데이터는 그 올바른 시간 순서 위치로 삽입된다. 분류된 투명성 모드는 후에서 전 또는 전에서 후로 수행될 수 있다. 양호한 실시예에서 그 분류된 투명성 방법은 분류 블럭 및 컬 블럭에 의해 결합해서 수행된다.
3.2.7 복수 스텝의 잠복면 제거
종래에 잠복면이 "정확한" 잠복면 제거 절차 또는 z-버퍼를 사용해서 제거된다. 본 발명의 구조 및 방법의 일실시예에서 2단계 방법은 (i) "이전에" 잠복면 제거 및 (ii) z-버퍼를 토대로한 절차로 실행된다. 다른 실시예에서 3단계 방법은 (i) 특정한 공간 컬 절차, (ii) 이전의 잠복면 제거, 및 (iii) z-버퍼로 실행된다. 이전에 감춰진 표면 제거(CHSR)의 각종 실시예는 본 개시에서 다른 데서 이미 설명되었다.
3.2.8 파이프라인 상태 보호 및 캐싱
각 꼭지점은 칼라 포인터를 포함하고, 꼭지점을 수신할 때, 칼라 포인터를 포함하는 꼭지점은 분류 메모리 데이터 저장부로 저장된다. 칼라 포인터는 꼭지점 데이터를 칼라 부분을 포함하는 디각형 메모리 꼭지점 저장부의 위치에 대한 포인터이다. 재질-라이팅 모드(MLM) 포인터 세트는 스트립 또는 팬의 모든 꼭지점와 관련된다. MLM은 하기에서 설명했듯이 6개의 메인 포인터 플러스 2개의 다른 포인터를 포함한다. 6개의 메인 포인터 각각이 텍스쳐, 화소, 라이팅 등을 예로 해서 파이프라인에서 변화하는 모든 상태의 시퀀셜 저장인 다격형 메모리 상태 저장에 어드레스를 구비하여, 미래에 필요할 때 사용자는 MLM 포인터를 조사하고 다각형 메모리 상태 저장으로 가게 하고 그 시간에 존재한 상태를 찾아냄으로써 꼭지점와 연관된 MLM 포인터로부터 꼭지점(또는 하나 이상의 꼭지점로부터 형성된 대상물)를 렌더링하길 필요로 하는 상태를 재생성한다.
모드 추출 블럭(MEX)은 임시 순서로된 상태 변화 데이터를 수집하고, 그 상태를 다각형 메모리에 저장하고, 분류 메모리로 통과하는 꼭지점 데이터에 적절한 포인터를 부착하는, 기하구조 및 분류간의 논리 블럭이다. 정규 OpenGL 파이프라인에서 및 분류 블럭까지의 본 발명의 파이프라인의 실시예에서, 기하구조 및 상태 데이터가 파이프라인으로 하향으로 보내지는 순서로 처리된다. 재질 형태, 라이팅, 텍스쳐, 모드, 및 스티플의 상태 변화는 그들을 따르는 원시 요소에 영향을 준다. 예를 들어, 각 새로운 대상물는 상태 변화에 의해 진행되어 재질 파라미터를 그 대상물에 대해 세트한다.
다른 한편으로 본 발명의 파이프라인에서 프래그먼트는 컬 블럭후에 파이프라인을 타일 순서로 하향 전송된다. 모드 주입 블럭은 시간 순서를 대신해서 데이터를 공간(타일) 순서로 처리하는 파이프라인의 일부에서 상태를 어떻게 보호하는 지를 표시한다. 기하구조 데이터에 부가해서, 모드 인출 블럭은 컬에 의해 모드 데이터(컬_모드)의 서브세트를 사용하는 파이프라인으로 하향으로 보낸다. 모드 인출 블럭은 적절한 칼라 포인터를 기하구조 패킷에 삽입한다.
파이프라인 상태는 다음과 같은 여럿의 카테고리로 브레이크하여 저장를 최소화한다. 즉, (1) 공간 파이프라인 상태가 모든 꼭지점을 변화시키는 분류로 향하는 데이터를 포함하고; (2) 컬_모드 상태는 자주 변하지 않는 (분류을 경유해서) 컬로 향하는 데이터를 포함하고; (3) 칼라는 모든 꼭지점을 변화시키는 다각형 메모리로 향하는 데이터를 포함하고; (4)재질은 각 대상물에 변화하는 데이터를 포함하고; (5)텍스쳐A가 텍스쳐 0&1인 텍스쳐 블럭에 대해 제 1 상태 세트를 포함하고; (6)텍스쳐B는 텍스쳐 2내지 7인 텍스쳐 블럭에 대해 제 2 상태 세트를 포함하고; (7)모드는 여지까지 거의 변화하지 않은 데이터를 포함하고; (8)라이트는 퐁에 대한 데이터를 포함하고; (9)스티플은 다각형 스티플 패턴에 대한 데이터를 포함한다. 재질, 텍스쳐, 모드, 라이트 및 스티플 데이터는 MLM 데이터(재질, 라이트 및 모드에 대한)로 총체적으로 불리워진다. 사용자는 상태 보호용 MLM 포인터와 특히 관련된다.
상태 변화 정보는 원시 요소(공간 및 칼라 패킷)의 출현시까지 MEX에 누적된다. 그 시간에, 최종 원시 요소까지 변화되었던 MLM 데이터는 다각형 메모리로 기록된다. MLM 데이터에 대한 적절한 포인터와 함께 칼라 데이터도 다각형 메모리로 기록된다. 공간 데이터는 다각형 메모리로의 포인터(칼라 포인터)와 함께 분류하도록 보내진다. 칼라 및 MLM 데이터는 다각형 메모리에 모두 저장된다. 상기 기록을 위한 공간 할당은 마이크로-구조 정의로 최적화되어 성능을 개선한다.
상기 모든 기록은 포인터를 경유해서 액세스된다. 분류 메모리의 각 원시 요소 엔트리는 다각형 메모리의 대응하는 칼라 엔트리에 대해 칼라 포인터를 포함한다. 칼라 포인터는 칼라 어드레스, 칼라 오프셋, 및 사용자로 하여금 점, 선 또는 삼각형을 구성하게 하고 MLM 포인터를 위치시키는 칼라 형태를 포함하고 있다. 칼라 어드레스는 원시 요소에서 최종 꼭지점을 점한다. 꼭지점는 순서대로 저장되어, 원시 요소의 꼭지점가 삼각형 팬의 경우를 제외하고는 인접한다. 칼라 오프셋은 상기 꼭지점 리스트에서 칼라 어드레스로부터 제 1 듀얼옥트로 점한다. (사용자는 점 리스트, 선 스트립 또는 삼각형 팬을 꼭지점 리스트로서 불리운다. 제 1 듀얼옥트는 꼭지점 리스트에서 점, 선, 스트립 또는 팬용 MLM 데이터에 대해 포인터를 포함한다. 꼭지점 리스트의 연속적인 듀얼옥트는 칼라 데이터 엔트리를 포함한다. 삼각형 팬에서 삼각형에 대한 3개의 꼭지점는 칼라 어드레스, (칼라 어드레스-1), 및 (칼라 어드레스-칼라 오프셋+1)에 있다. 그것은 포인터가 분류 메모리에 저장되는 방법과 완전히 같지는 않다.
상태는 시변 엔티티이고, MEX가 상태 변화를 누적하여 상태가 꼭지점 또는 꼭지점 세트에 대해 재생성될 수 있다. MIJ 블럭이 상태를 꼭지점의 다운스트림과매칭하는 역할을 한다. 꼭지점이 MEX로 오고 소정의 표시기가 세트될 때마다, 파이프라인 상태 정보의 서브셋이 세이브될 필요가 있다. 모든 상태가 아니고 변화되었던 상태만이 저장되는 데, 왜냐하면 완전한 상태는 상태에 대한 증가하는 변화로부터 생성될 수 있다. 재질, 텍스쳐A, 텍스쳐B, 모드, 라이트, 및 스티플에 대한 6개의 MLM 포인터는 각 상태 정보에 대한 대부분의 최근 변화를 저장하는 어드레스 위치를 식별한다. 상기 상태중 하나에서의 각 변화가 메모리에 저장되는 시퀀적으로 순서된 상태 저장 리스트의 끝에서 부가적인 엔트리에 의해 식별된다. 효과적으로, 모든 상태 변화가 저장되고 시간(또는 꼭지점의 수신)에서 점에 대응하는 특정한 상태가 필요로 될 때, 그 상태는 그 포인터로부터 재구성된다.
세이브되는 모드의 상기 패킷은 렌더링전에 MIJ에 의해 검색 또는 재구성되는 모드 데이터의 큰 세트뿐만 아니라 저장되는 모드 데이터 변화로 불려지게 사용되지만 모드 패킷으로서 불리워진다. 특히, 모든 상태는 상대적으로 적은 칼라 포인터에서 유지된 정보로부터 재생성될 수 있다.
다각형 메모리 꼭지점 저장부는 칼라 부분과 같이 저장한다. 다각형 메모리는 감춰진 제거용으로 필요로 하지 않는 파이프라인 상태의 일부를 저장하고, 그것은 감춰진 표면 제거용으로 필요로 하지 않는 꼭지점 데이터의 일부도 저장한다(칼라를 형성하기에 필요한 아이템에 우선해서).
3.2.9 텍셀 재사용 검출 및 타일을 토대로한 처리
본 발명의 구조 및 방법은 텍스쳐 맵의 다수 층(해상도)의 트리리니어 맵핑을 장점으로 이용한다.
텍스쳐 맵은 AGP 인터페이스를 사용해서 호스트 컴퓨터의 메모리로부터 부하로된 단일-버퍼된 메모리를 일반적으로 구비하는 텍스쳐 메모리에 저장된다. 전형적인 실시예에서 단일 다각형은 4개까지의 텍스쳐를 사용할 수 있다. 텍스쳐는 밉-맵된다. 즉, 각 텍스쳐는 텍스쳐 맵 시리즈를 다른 상세 또는 해상도 레벨로 구비하고, 각 맵은 아이 점로부터 텍스쳐의 출현을 설정된 거리로서 표시한다. 텍스쳐 값을 설정된 픽셀 프래그먼트에 대해 생성하도록, 텍스쳐 블럭은 텍스쳐 맵으로부터 트리-리니어 보간을 수행하여 올바른 상세 레벨에 근접한다. 텍스쳐 블럭은 비등방성 보간 등과 같은 다른 보간 방법을 대안적으로 수행한다.
텍스쳐 블럭은 보간된 텍스쳐값(일반적으로 RGBA 칼라값으로서)을 퐁 블럭으로 프래그먼트 단위로 공급한다. 범프 맵은 특정한 텍스쳐 맵 종류를 나타낸다. 칼라를 대신해서, 범프 맵의 각 텍셀이 높이 필드 경사도를 포함한다.
복수 개의 층은 MIP 층이고, 보간은 MIP 층내 및 그 층들간에서 이루어진다. 제 1보간은 각 층내에서 이루어지고, 사용자는 2개의 인접한 층들간에 보간하고, 그 2개의 층중 하나는 필요로 되는 것보다 더 높은 해상도를 공칭적으로 갖고, 그 나머지층은 필요로 되는 것보다 낮은 해상도를 갖고, 그럼으로써 그것은 3차원으로 행해져서 최적의 해상도를 생성한다.
본 발명의 파이프라인은 텍스쳐 재사용 레지스터인 텍스쳐 캐시를 포함하는 텍스쳐 메모리를 포함하는 데 왜나하면 그 구조 및 동작이 종래의 캐시와 다르기 때문이다. 호스트는 통상적으로 매우 크나 텍스쳐를 렌더링하기위한 텍스쳐용 저장부도 포함하고, 그것은 텍스쳐 메모리로 불리우는 텍스쳐 캐시로 부하되야한다. S및 T's는 각 VSP와 관련된다. 트리리니어 MIP 맵핑을 수행하기위해, 사용자는 8개의 샘플을 블렌드하여, 본 발명의 구조는 병렬로 동작하는 8개의 컨텐트를 어드레스 지정하는 (메모리) 캐시를 구비한다. 일실시예에서 캐시 식별자는 컨텐트의 어드레스가능한 태그중 하나이고, 그것은 캐시의 태그 부분 및 캐시의 데이터 부분을 위치시키는 이유는 태그 또는 색인으로부터 분리해서 위치되기 때문이다. 종래에, 태그 및 데이터는 서로 위치되어 태그상의 질의(query)가 데이터를 설정한다. 본 발명의 구조 및 방법에서 태그 및 데이터는 스플리트되고 색인은 파이프라인으로 하향으로 보낸진다.
데이터 및 태그는 다른 블럭에 저장되고, 컨텐트를 어드레스 지정하는 룩업은 어드레스의 룩업 또는 질의, 그 자체의 그 어드레스에 저장된 "데이터" 및 다른 블럭에서 저장되는 실제 데이터를 참고로 하는 색인이다. 색인은 결정되고, 파이프라인으로 하향으로 보내져서 색인에 의해 참고로된 데이터가 결정될 수 있다. 환언해서, 태그는 하나의 위치에 있고, 텍스쳐 데이터는 제 2위치에 있고, 색인은 2개의 저장 구조들간의 링크를 구비한다.
본 발명의 일실시예에서 텍셀 재사용 검출 레지스터(TRDR)는 텍셀 보간기와 같은 집적 회로상에 일반적으로 위치된 복수의 관련 메모리를 구비한다. 양호한 실시예에서, 텍셜 재사용 검출 방법은 텍스쳐 블럭에서 수행된다.
종래의 3D 그래픽 파이프라인에서, 공간에서 어떤 배향의 대상물는 렌더된다. 대상물는 그위에 텍스쳐 맵을 갖고, 그것은 복수 개의 삼각형 원시 요소에 의해 표시된다. 소프트웨어에서 실행된 절차는 하드웨어에 지시하여 특정한 대상물텍스쳐를 DRAM으로 부하로 되게 한다. 그후에 특정한 대상물에 공통적이어서 같은 텍스쳐 맵을 갖는 모든 삼각형은 상기 장치로 공급되고 텍스쳐 보간은 수행되어 그 특정한 대상물를 나타나기에 필요로 되는 칼라로 된 모든 픽셀을 생성한다. 그 대상물가 칼라링되었을 때, 대상물가 렌더링하므로 DRAM의 텍스쳐 맵은 파괴될 수 있다. 복수의 동일한 대상물(다른 배향 또는 위치에서) 등의 같은 텍스쳐 맵을 갖는 하나 이상의 대상물가 있다면, DRAM내의 텍스쳐 맵이 삭제되기전에 모든 그와 같은 형태의 대상물는 바람직하게는 텍스쳐될 수 있다. 다른 기하구조가 공급될 수 있으나, 같은 텍스쳐 맵은 모두에 대해 사용될 수 있어서, 호스트 메모리로부터 텍스쳐 맵을 반복 검색하고 그것을 하나 이상의 파이프라인 구조에 일시적으로 위치시킬 필요성을 제거한다.
더 복잡한 종래의 방식에서, 하나 이상의 텍스쳐 맵이 검색되어 메모리에 저장되고, 예를 들어 2개 이상의 맵은 가용한 메모리, 텍스쳐 맵의 크기, 복수 개의 텍스쳐 맵을 저장 또는 유지할 필요성, 관리 방식의 복잡화에 따라 저장된다. 상기 종래의 텍스쳐 맵핑 방식인 공간 대상물 일관성이 기본적으로 중요한 것이다. 모든 단일 대상물 및 같은 텍스쳐 맵을 사용하는 대상물 그룹에 대해, 대상물를 형성하는 모든 삼각형이 함께 처리된다. 구문 공간 일관성이 방식에 인가되는 데 왜냐하면 삼각형이 대상물로부터 형성하고 공간에 연결되어, 공간적으로 일관성을 갖게 된다.
본 발명의 연기된 세이더 구조 및 방법에서 사용자는 상기 형태의 공간 대상물 일관성으로부터 인식가능한 장점에 의존하거나 인출할 필요가 없다. 본 발명의연기된 세이더의 실시예는 타일을 대신해서 동작한다. 설정된 타일은 모든 대상물, 복수의 대상물, 모든 대상물, 또는 여럿의 대상물중 일부을 가짐으로써, 모든 타일에 대한 공간 대상물의 일관성을 통상적으로 갖지 않는다.
본 발명의 구조 및 방법이 연기된 세이더에 관한 것이므로 사용자는 종래의 개념을 완전히 파괴해야한다. 타일이 모든 대상물를 갖도록 발생될지라도 거기에는 통상적으로 다른 배경이 있고, 타일이 공간 일관성의 정도를 지원할 지라도, 본 발명의 컬 블럭 및 컬 절차가 통상적으로 발생하고 완전히 점프되고 공간적으로 일관안된 순서로 VSPs를 보낸다. 결과로써, 파이프라인 및 텍스쳐 블럭이 실시간으로 및 수신된 대상물 원시 요소(예를 들어, 삼각형)에 필요한 텍스쳐에 응답해서 텍스쳐를 플라이(fly)상에서 변화시킬 수 있는 것을 장점으로 한다. 특정한 대상물 원시 요소(예를 들어, 단일 삼각형)를 처리하도록 호스트로부터 텍스쳐 맵을 반복 검색하는 요구가 방금 수신되고, 다음의 다른 대상물 원시 요소가 다른 텍스쳐 맵을 필요로 할 때 그 텍스쳐의 처리는 적어도 확실치 않고 빠른 동작으로 되지 않는다.
본 발명의 구조 및 방법에서 상당한 크기의 메모리는 카드상에서 지원된다. 하나의 실행에서 128 메가바이트가 구비되나, 다소간의 메가바이트는 구비된다. 예를 들어, 34 Mb, 64 Mb, 256 Mb, 512 Mb 이상이 사용자의 필요성, 메모리용으로 카드상에서 가용한 실제 소유지, 및 가용한 메모리의 밀도에 따라 제공된다.
모든 가시적인 프래그먼트에 대해 8개의 텍셀을 판독하느니보다, 그들을 사용하고, 그들을 버리고서, 다음의 프래그먼트용 8개의 텍셀이 검색 및 저장되고, 그들이 다시 필요로 하는 합리적인 기회가 있을 때 본 발명의 구조 및 방법은 그들을 저장 및 재사용한다.
가시적인 프래그먼트를 수신할 때마다 8개의 텍셀을 판독 및 버리는 것은 비실용적이다. 오히려, 상기 텍셀을 재사용하는 것이 바람직한데, 왜냐하면 사용자가 타일 공간에서 돌아다닌다면, 타일(시각형 타일 픽셀 그리드에서 시퀀셜 로우를 따라 통상적으로 처리된)내의 사용자의 픽셀 그리드가 오게 되어 같은 텍스쳐 맵이 시퀀셜 픽셀에 대해 필요하지 않는 반면에, 같은 텍스쳐 맵이 타일의 n 영역에서 클러스터되고 그후에 제 1사용후 몇개의 처리 단계만을 필요로 되는 여럿의 픽셀에 대해 필요로 하기 때문이다, 바림직하게는, 본 발명은 반복해서 판독되었던 텍셀을 사용하고, 그래서 사용자가 하나를 필요로 할 때, 사용자는 그것을 판독하고, 사용자가 특정한 텍스쳐 맵을 필요로 하는 하나의 프래그먼트를 일단 보았을 때가 양호한 기회이고, 나중의 시간 기간동안에 사용자가 같은 타일에 있을 때가 양호한 기회라는 것을 사용자는 알고, 사용자는 같은 텍스쳐를 필요로 하는 같은 대상물로부터 다른 프래그먼트를 발생시킨다.
그래서, 사용자는 상기 캐시에서 그것들을 세이브하고, 그후에 플라이상에서 사용자는 필요로 하는 것을 캐시(텍스쳐 재사용 레지스터)로부터 룩업한다. 예를 들어, 프라그먼트 및 텍스쳐 맵이 처음에 발생될 때마다 캐시 미스가 존재한다면, 그 텍스쳐 맵은 검색되고 캐시에 저장된다.
텍스쳐 맵 검색 대기 시간은 다른 관심사이나, 선입선출 데이터 구조 및 조견 또는 예측 검색 절차의 사용을 통해 처리된다. 선입선출은 CAM과 관련해서 큰 작업이다. 아이템이 필요로 될 때, 아이템이 이미 저장되었는 지가 결정되고, 표시기는 FIFO에 또한 위치되어 캐시 미스가 있다면, 정보을 검색하고 그것을 저장하는 상대적으로 느린 메모리를 없애버리는 것이 여전히 가능하다. 어떤 이벤트에서, 데이터가 캐시에 있거나 그것이 호스트 메모리로부터 검색되면, 그것은 단위 메모리에(또한, 새롭게 검색되면 캐시로) 위치된다.
효과적으로, FIFO는 지연의 분류로서 동작하여 텍스쳐에 대한 필요성이 일단 식별될 때(그 실제 사용에 앞서) 데이터는 그것을 필요로 하기전에 검색 및 재관련되어, 검색이 처리를 통상적으로 느리게 하지 않는다.
상기 FIFO 큐는 상기 파이프라인의 슬랙을 취하여 제공함으로써 항상 예측하고 볼 수 있다. 상기 FIFO를 검사함으로써, 비 은닉 텍스쳐는 공간 장치 메모리 및 캐시에 위치된 호스트 메모리로부터 식별되고 검색되어, 판독할 때 이용할 준비를 한다.
룩어헤드 및 예측 검색을 제공하는 상기 FIFO 및 다른 구조는 대상물 당 처리에 통상적으로 이용되는 공간 대상물 일치성을 타일마다 처리시 손실되는 경우에 문제점이 발생하기 때문에 몇가지 견지에서 제공된다. 또한, 본 발명의 구조 및 방법은 대상물내에서 임의 공간 일치성을 이용하여, 한 대상물안에 모든 픽셀이 순차적을 행하여지는데 주목하자, 본 발명은 일시적 및 공간적인 일치성이 있다는 사실에 장점이 있다.
3.2.10 패킷화된 데이터 전송 프로토콜
본 발명의 구조 및 방법은 패킷의 블럭간에 정보(데이터 및 제어 등)를 전달하는 장점이 있다. 우리는 패킷화 데이터 전달과 같은 이러한 패킷화 통신 및 패킷화 데이터 전달 프로토콜(PDTP)로써 패킷화 데이터의 내용을 언급한다.
PDTP의 한 가지 장점은 모든 데이터가 블럭간에 한 개의 버스를 걸쳐 전송되어 다른 데이터 타입에 대한 개별 버스에 필요하다는 것이다. 다른 PDTP의 장점은 그 정보의 패킷화가 상기 순서로 유지함으로써, 적합한 렌더링에 중요하다는 것이다. 랜더링이 파이프라인 상태의 변경에 민감하고, 그 시간 순서 시퀀스를 유지하는 리콜은 일반적으로 중요하며, 예컨대, 상기 파이프라인의 아래로 패킷의 흐름 관리는 특히 중요하다.
패킷의 전달은 순차적인데, 그 이유는 상기 버스가 일부 시간 순서로 패킷이 순차적으로 도달하는 순차적인 링크이기 때문이다. 예컨대, "채움 패킷"이 블럭에 도달할 때, 상기 블럭의 FIFO로 진행하고, VSP가 도달하는 경우, 상기 블럭의 FIFO로 진행한다. 각 프로세서 블럭은 그 입력에서 패킷이 도달하는 것을 대기하고, 패킷이 도달할 때, 패킷 헤더를 찾아서 어떤 작용을 취할지를 결정한다. 상기 작용은 상기 패킷을 상기 출력으로 전송하고(임의 다른 작용 또는 처리없이 단지 통과), 그것과 어떤 작용을 행할 수 있다. 상기 패킷화 데이터 구조 및 패킷화 데이터 구조의 사용, 및 버스와의 결합으로, FIFO, 다른 버퍼, 또는 레지스터 기벅은 3차원 그래픽보다 광법위하게 적용할 수 있으며, 복수의 기능 또는 처리 블럭과 장치가 서로 상호 접속되고 통신하는 파이프라인 구조에 적용될 수 있다. 패킷 전송의 사용은 순서를 유지하거나 시간 순서에 중요한 장점이 있다.
PDTP의 일 실시예에서, 각 패킷은 패킷 식별기 또는 ID 및 다른 정보를 갖는다. 많은 다른 종류의 패킷이 있고, 모든 다른 패킷 형태는 표준 길이를 갖고, 패킷의 종류를 식별하는 헤더를 포함한다. 상기 다른 FVOZLT은 다른 형태 및 다양한 길이를 갖지만, 각 특정 패킷 타입은 표준 길이를 갖는다.
유익하게-, 각 블럭은 입력에 FIFO를 갖고, 상기 패킷은 관련 정보를 상기 블럭에 의해 상기 FIFO에 누적하는 FIFOs를 통하여 흐른다. 상기 패킷은 상기 블럭 기능이 추출되는 것과 관련이 있도록 다른 또는 모든 브록또는 다른 블럭을 통하여 흐른다.
본 발명의 구조 및 방법의 일 실시예에서, 상기 FIFO 내에 상기 스토리지 셀 또는 레지스터가 소정의 폭을 가지기 때문에, 작은 패킷이 단지 한 개의 FIFO 레지스터를 필요로하고, 큰 패킷은 복수 개의 레지스터, 예컨대, 2,3,5,10,20, 50 또는 그 이상의 레지스터를 필요로 한다. 상기 가변 패킷 길이 및 한 개의 패킷이 몇 개의 FIFO 스토리지 레지스터를 소비할 확률은 상기 패킷의 제1 부분이 패킷의 종류를 식별하고, 상기 패킷의 타입, 패킷의 크기 및 지속하는 FIFO 엔트리의 개수를 직접 또는 간섭으로 식별하는 문제점이 나타나지 않는다. 본 발명의 구조 및 방법은 본 문제의 다른 섹션에 기술된 다양한 패킷 타입을 제공하고 지지한다.
3.2.11 프래그먼트 칼라링
프래그먼트 칼라링은 2차원 디스플레이 공간에서 실행되고, 상기 디스플레이된 픽셀의 샘플링 좌표에 대한 삼각형 원시 요소의 꼭지점을 포함한다. 필수저긍로, 프래그먼트 칼라링은 삽입 기능을 상기 3개의 프래그먼트 꼭지점에 제공하여 상기 3개의 꼭지점간에 공간 위치된 위치에 대한 칼라를 결정한다. 통상적으로, 그러나, 상기 상입을 실행할 때 수정을 취할 것에 대하여 몇가지 설명할 것이다. 상기 삽입 변수는 투시 수정 변수가 있는 것과 같이 은닉된다.
3.2.12 노말의 보간
다양한 전제는 표면의 계산, 특히 3차원 그래픽 환경에서 다른 표면 표준사이에 삽입되는 표면 표준에 관한여 통상적으로 수용한다. 상기 전제는 계산을 용이하고 효율적으로 하기위하여 정확성을 따지지 않는다. 이상적으로, 표면 표준은 상기 삽입에 기초하여 표면 표준각의 실제 각차이에 기초하여 삽입되어야 한다. 실제로, 상기 각 계산은 3차원 그래픽 적용에 적합하지 않다.
따라서, 더욱 통상적으로, 표면 표준은 2개의 입력 표준에 대한 선형 삽입을 토대로 삽입된다. 품질 랜더링을 떨어뜨리기 위하여, 상기 복합 표면 표준의 선형 삽입은 적당히 정확하게 적용할 수 있지만, 2차원 삽입을 고려하면, 한 개의 벡터가 다른 벡터보다 크지만, 상기 제1 벡터에 비하여 각 변화가 클 때, 그 결과 벡터는 2개의 벡터사이에 비교가능한 각의 차이에도 불구하고 커다른 크기의 벡터에 전체적으로 영향을 미친다. 이것은 대상물 에러에 기인하고, 일부 표면 쉐이딩 또는 광 계산은 불규칙한 결과를 제공하고 상기 출력 전경을 손상시킬 수 있다.
몇가지 이러한 문제점이 선형 삽입이 정상 벡터 세트상에 실행되는 경우 조차도 최소화될 수 있는 반면, 이것은 반드시 그러한 것은 아닌데, 그 이유는 일부 APIs가 독립 x, y, z 삽입 및 다른 기법의 3개의 좌표 삽입을 포함하는 비정상 벡터 및 다양한 삽입 기법을 지원하기 때문이다.
본 발명의 구조 및 방법에 있어서, 그 크기는 방향 또는 각으로부터 개별적으로 삽입된다. 그 삽입 크기는 동일한 크기인 방향 벡터로 계산된다.
상기 이상적인 각 삽입이 매우 정확성있게 제공할 수 있는 반면, 상기 상빕은 구의 표면상에 3개의 점 및 다양한 큰 원의 계산을 포함한다. 이러한 수학적으로 복잡한 분류은 실시간 고속 파이프라인 처리에 적합하지 않다. 이러한 각 절차와 비교하여, 발명의 표면 정상 삽입 절차는 종래의 선형 삽입보다 정확성이 크고, 종래의 각 삽입의 계산 복잡도가 떨어진다.
3.2.13 공간 셋업
본 발명의 바람직한 실시예에 있어서, 공간 셋업은 셋업 블럭(STP)에서 실행된다. 상기 셋업(STP) 블럭은 상기 분류(SRT) 블럭으로부터 패킷의 스트림을 검색한다. 이러한 패킷은 랜더링될 원시 요소에 대한 공간 정보를 갖는다. 상기 STP 블럭의 출력은 상기 컬(CUL) 블럭으로 진행한다. 상기 SRT로부터 수신된 원시 요소는 채운 삼각형, 선 삼격형, 선, 스티플 선 및 점이 될 수 있다. 각 이러한 원시 요소는 에이리어싱 또는 불에일리어싱 모드로 랜더링될 수 있다. 상기 SRT 블럭은 타일 순서로 원시 요소를 STP(다른 파이프라인 단계 다운스트림)로 전송한다. 각 타일 내에 상기 데이터는 시간 순서 또는 분류 투명성 순서로 조직된다. 상기 컬 블럭은 타일 순서(실제, STP가 SRT로부터 원시 요소를 검색하는 순서)로 STP로부터 데이터를 검색하고, 상기 랜더링 이미지에 기여하지 않는 원시 요소의 일부분에 대한 컬을 검색한다. 이것은 2개의 단계로 수행된다. 상기 제1 단계는 내용이 소정의 소정의 값 이상인 직사각형 메모리 어레이의 구성 요소 검생을 허용한다. 상기 제2 단계는 간단한 내용 비교에 의해 샘플에서 행하는 검색을 세분한다. STP 블럭은 상기 컬 블럭에 의해 처리하는 인입 원시 요소를 준비한다. STP는 제1 단계 컬링에 대하여 타일을 삽입하는 원시 요소의 일부분에 대한 타이트한 경계 박스 및 최소의 깊이 값(Zmin)을 발생하여, Zmin 보다 작은 깊이 값을 갖는 경계 박스에 스템프를 표시한다. 상기 Z 컬 단계는 이러한 후보 스템프를 취하여, 그들이 상기 원시 요소의 일부분인 경우, 상기 스템프에서 샘플에 대한 실제 깊이 값을 계산한다. 이러한 더욱 정확한 깊이 값은 비교에 이용되고, 가능한 한 샘플씩 폐기한다. 제1 스테이지 컬리에 대한 경계 박스 및 Zmin에 이외에, STP는 상기 Z 컬 단계에 대한 타일 에지를 갖는 깊이 및 원시 요소 삽입 점 등 다른 기준 변수, 깊이 경사도, 선 경사를 계산한다. 상기 CUL 장치는 다른 파이프라인 단계에 의해 사용된 VSPs를 발생한다.
본 발명의 바람직한 실시예에서, 상기 공간 셋업 절차는 셋업 블럭에서 실행된다. 본 발명의 공간 셋업 구조 및 방법의 중요한 특징은 (1) 통합 원시 요소의 발생 및 지원, (2) 원시 요소용 타일내에 Zmin을 계산하는 절차, (3) 타일 비교 y 값 및 스크린 비교 x 값의 사용, (4) 상기 다운 스트림 하드웨어를 간소화하는 종래의 에지 워크에 부가하여 에지 호프(실제로 상기 컬 블럭에서 실행)을 실행하는 것을 포함한다.
통합 원시 요소의 제목에 대하여, 선 원시 요소가 직사각형 및 삼각형이 되어 변형 직사각형이 되는 것을 고려하여, 이러한 각각을 위와 같이 수학적으로 나타낸다. 셋업은 선 세그먼트를 4개의 꼭지점으로 이루어지는 사변형으로 변환한다. 삼각형은 3개의 꼭지점을 갖는다. 셋업은 4개의 점 세트를 갖는 각 원시 요소를 기술한다. 모든 값이 모든 원시 요소에 필요한 것은 아니다. 삼각형에 대하여, 셋업은 삼각형의 방향에 의존하여 위, 아래, 및 좌측 또는 우측 모서리를 이용한다. 선 세그먼트는 사변형으로 처리되어 , 셋업은 모두 4개의 점을 이용한다. 삼각형의 꼭지점이 최초의 꼭지점과 동일한 반면에, 셋업은 새로운 꼭지점을 발생하여 쿼드로 선을 나타낸다. 상기 원시 요소의 통합 표현은 상기 윈도우 좌표에서 최초의 꼭지점 세트에 할당되는 원시 요소 디스크립터를 이용한다. 또한, 디스크립터가 유효하다고 지시하는 플래그 및 중요한 값이다.
삼각형에 대하여, VtxYmin, TtxYmax, VtxLeftC, VtxRightC, LeftCorner, RightCorner 디스크립터는 y 좌표에 의해 삼각형 꼭지점을 분류함으로써 얻어진다. 선 세그먼트에 대하여, 이러한 디스크립터는 선 쿼드 꼭지점이 발생될 때 할당된다. VtxYmin은 최소의 y 값을 갖는 꼭지점이고, TtxYmax는 최대의 y 값을 갖는 꼭지점이고, VtxLeftC는 삼각형의 경우에 긴 y 에지(VtxYmin, TtxYmax에 의해 형성된 삼각형의 에지)의 왼쪽에 놓인 꼭지점이고, 사변형으로 꼭지점 (VtxYmin, TtxYmax)을 결합하여 형성한 사각형의 왼쪽에 놓인 꼭지점이다. 삼각형이 왼쪽에 긴 y 에지가 놓인 다면, 상기 플래그 , LeftCorner는 VtxLeftC 가 무효를 지시하는 불량(0)이다. 유사하게, VtxRightC는 삼각형의 경우에 긴 y 에지의 오른쪽 및 사변형에 대하여 꼭지점 (VtxYmin, TtxYmax)을 결합하여 형성한 사각형의 오른쪽에 놓인 꼭지점이다. 삼각형이 긴 에지가 오른쪽 에지에 있는 경우, 상기 플래그 RightCorner은 VtxRightC가 무효를 지시하는 불량(0)l다. 이러한 디스크립터는 상부 및 하부 타일 에지상에 플리미티브의 클리핑에 이용된다. 실제로, VtxYmin, TtxYmax, VtxLeftC, VtxRightC는 상기 최최의 원시 요소 꼭지점에 인덱스인 것에주목하자.
삼각형에 대하여, VtxXmin, TtxXmax, VtxTopC, VtxBotC, TopCorner, BottomCorner 디스크립터는 x 좌표에 의해 삼각형 꼭지점을 분류함으로써 얻어진다. 선 세그먼트에 대하여, 이러한 디스크립터는 선 쿼드 꼭지점이 발생될 때 할당된다. VtxXmin은 최소의 x 값을 갖는 꼭지점이고, VtxXmax는 최대의 x 값을 갖는 꼭지점이고, VtxTopC는 삼각형의 경우에 긴 x 에지(VtxXmin, VtxXmax에 의해 형성된 삼각형의 에지)에 놓인 꼭지점이고, 사변형으로 꼭지점 (VtxXmin, VtxXmax)을 결합하여 형성한 사각형의 왼쪽에 놓인 꼭지점이다. 삼각형이 긴 x 에지가 상부 에지에 놓인 다면, 상기 플래그 , TopCorner는 VtxTopC 가 무효를 지시하는 불량(0)이다. 유사하게, VtxBotC는 삼각형의 경우에 긴 x 축 아래에 놓은 꼭지점이고, 사변형에 대하여 꼭지점 (VtxXmin, VtxXmax)을 결합하여 형성한 사각형의 아래에 놓인 꼭지점이다. 삼각형이 긴 에지가 아래쪽 에지인 경우, 상기 플래그 BottomCorner은 VtxBotC가 무효를 지시하는 불량(0)l다. 이러한 디스크립터는 오른쪽 및 왼쪽 타일 에지상에 플리미티브의 클리핑에 이용된다. 실제로, VtxXmin, VtxXmax, VtxTopC, VtxBotC는 상기 최최의 원시 요소 꼭지점에 인덱스인 것에 주목하자. 또한, 상기 4개의 다각형 에지의 경사(∂x/∂y) 및 경사(∂xy/∂x)의 반대를 이용한다.
모든 이러한 디스크립터는 사각면 원시 요소에 대한 유효 값을 갖지만, 이 모두는 삼각형에 대하여 유효할 수 없다. 초기에, 많은 디스크립터가 삼각형 및 사변형과 같이 기술할 것처럼 보인다. 그러나, 이후에 알 수 있는 바와 같이, 쉽게얻을 수 있으며, 일정한 방법을 셋업 원시 요소에 제공할 수 있다.
직사각형(또는 선으로 동일하게 직사각형을 해석)으로 선 처리는 공간 및 폭 안에 2개의 점츨 특정하는 것을 포함한다. 직사각형으로 삼각형을 처리하는 것은 4개의 점을 특정하는 데, 통상적으로, 일 실시예어서, y-외쪽 또는 y 오른쪽은 변형되고 특정되지 않는다. 그 목표는 상기 타일 내측에 Zmin을 찾는다. 상기 x 값은 전체의 윈도우에 걸쳐 범위될 수 있지만, y 값은 상대적인 타일이되어, 그 결과, 비트는 y 값 타일 비교 좌표를 만드는 것에 의해 그 계산으로 세이브된다.
3.2.14 대상물 태그
3차원 전경의 원형 그래피 표현은 상기 전형 그래프의 각 노드에 식별자를 할당한다. 이러한 식별자(대상물 태그)는 상기 전경에서 대상물를 취하는 그래프 동작, 가시 결정, 충돌 검출 및 랜더링한 다른 통계 변수의 발생에 이용할 수 있다. 상기 랜더링의 파이프라인은 알파 테스트, 칼라 테스트, 스텐실 테스트, 및 깊이 테스트 등의 복수의 픽셀 테스트를 허용한다. 알파 및 칼라 테스는 대상물가 투명성 픽셀을 갖는 경우를 결정하여 그 값을 폐기할 때 유용하다. 스텐실 테스트는 다양한 특정 효과 및 CSG에서 대상물 삽입의 결정에 유용하다. 깊이 테스트는 은닉 표면 제거에 유용하다.
이러한 문서에서, 상기 전경에서 대상물를 태그하고 가시 범주의 소정의 세트를 통과한 어떤 대상물에 관하여 피드백하는 방법을 기술한다.
2개의 레벨의 대상물 할당 기법이 이용된다. 상기 대상물 식별자는 2개의 부분 그룹(g) 및 멤버 태그(t)로 이루어진다. 상기 그룹 "g"는 4 비트 식별자이고(그러나, 더욱 많은 비트가 이용될 수 있다), 상기 대상물를 그룹화하는데 이용될 수 있는 다른 변수 또는 전경 그래프 브렌치를 인코딩하는데 이용될 수 있다. 상기 구성 tag(t)는 5 비트 값이다(다시 한번, 더욱 많은 비트는 이용될 수 있다). 이러한 방법에서, 각 그룹은 32개의 구성원을 가질 수 있다. 32 비트 상태 워드는 각 그룹에 이용된다. 이러한 상태 워드의 비트는 상기 테스트 범위를 통과한 구성원을 지시한다. 상기 상태는 대상물 그룹, 대상물 태그, 태그 테스트 ID{DepthTest, AlphaTest, ColorTest, StencilTest)로 이루어진다. 상기 대상물 태그는 파이프라인 아래로 통과되어, 버퍼 혼합에 이용된다. (또는 바랍직한 실시예의 픽셀 블럭). 상기 샘플이 가시적이면, 상기 대상물 태그는 특정 CPU 판독가능 레지스터의 특정 비트를 설정하는데 이용된다. 이것은 랜더링이 계산될 때마다 대상물들이 파이프라인에 제공될 수 있고, 상기 호스트 CPU(상기 어플리케이션 프로그램을 랜더링하는 CPU 또는 CPUs)는최소한 부분적으로 볼 수 있는 대상물를 결정한다.
대안으로, 상기 구성원 tag(t)는 한 개의 그룹만을 암시하는데 이용될 수 있다.
대상물 태그는 투명성 판정, 조기 대상물 폐기 및 충돌 검출을 얻어내는데 이용된다.
초기 대상물의 폐기에 대해서, 대상물는 랜더링 파이프라인내에서 그의 경계 볼륨을 가짐으로써 관측을 위해 테스트 가능하며 전술한 바와 같이 관측을 위한 테스트가 가능하다. 그러나, 경계 볼륨이 프레임 버퍼로 랜더링되지 않게 하기 위해 칼라, 깊이, 스텐실은 클리어되어야 한다(이러한 마스크 비트에 대한 설명에 대해서는 OpenGL(상표명)의 명세서를 참조.).
3.2.15 단일 관측 비트
상기한 대상물 태그에 대한 대안으로서, 단일 비트는 호스트 CPU에 대한 피드백으로서 사용 가능하다. 이 방법에서, 관측을 위해(즉, 피킹, 투명도 결정, 초기 대상물 폐기, 충돌 검출 등) 테스트되는 대상물는 그 자체 프레임에서 분리되고 있다. 다음에, 프레임의 어느 것이 관측 가능하면, 하나의 "관측 비트"가 설정되고, 그렇지 않으면, 클리어된다. 이러한 비트는 호스트 CPU에 의해서 판독 가능하다. 이 방법의 이점은 단순성이다. 단점은 테스트될 별개의 대상물(대상물 세트)에 대해서 개개의 프레임을 사용할 필요가 있어 관측 결정에 있어서 대기 시간이 도입될 가능성이 있다는 것이다.
3.2.16 슈퍼타일 홉 시퀀스
3D 이미지를 랜더링할 때, 종종 화상을 관통하는 수평 띠가 나머지 이미지 보다 훨씬 복잡한 "수평선 효과"가 있다. 일례가 배경 및 하늘에서 단순한 유리면을 가진 거리의 도시 스카이라인이다. 유리 및 스카이는 다각형(가능하게는 하나의 지구)이 거의 없으며 도시는 많은 다각형과 깊은 깊이의 복잡성을 가진다. 이러한 수평선 효과는 또한 장면을 통해 비수평 띠를 따라 발생할 수 있다. 타일이 단순히 상에서 하로 그리고 좌에서 우로 순서적으로 처리되면, 복잡한 타일이 뒤면과 뒷면이 마주쳐서 파이프라인내에서 부하의 불균형이 있게 된다. 그러므로, 이것은 공간 코히어런스의 감소를 가져옴으로써(왜냐하면 인접 타일이 순차적으로 처리되지 않게 때문이다.), 파이프라인내에서 캐시의 효율성을 줄여 성능을 떨어뜨린다. 공간순차 타일 처리 및 총체적 랜덤 패턴 사이의 절충으로서, 타일은 "슈퍼 타일로 구성되는데, 각 슈퍼타일은 복수개의 공간적으로 인접한 타일이며, 다음에 슈퍼타일의 랜덤 패턴이 처리된다. 그러므로, 공간적 코히어런스가 슈퍼타일내에서 보존되고 수평선 효과는 회피된다. 양호한 실시예에서, 슈퍼타일 홉 시퀀스 방법이 분류 블럭에서 수행된다.
3.2.17 스캔아웃 동안의 정규화
출력중 정규화가 본 발명의 절차인데, 본 발명에서 프레임 버퍼내에서 값을 결정학 위해 또는 그밖에 달리 결정된 프레임 버퍼내의 값을 결정하기 위해 이전 처리 이력을 고려하고, 스크린내의 값들의 범위가 스케일되거나 값들의 범위가 디스플레이될 수 있도록 정규화된다. 선형 및 비선형 스케일링이 적용될 수 있고 클리핑 또한 동적 범위가 몇개의 상대적으로 밝거나 어두운 픽셀에 의해서 지나치게 받아들이지 않도록 허용될 수 있고 동적 범위는 D/A 변환기의 변환 범위에 맞추어진다.
출력 픽셀값이 생성되는 방식에 대한 어떤 지식은 이러한 방법의 이점을 알 수 있게하는 통찰력을 부여한다. 때론, 출력 픽셀값은 세기 또는 밝기로 지칭되는데, 이는 출력 픽셀값이 실제 세계에서 장면 밝기 또는 세기을 시뮬레이션하거나 표현하기 위한 방식으로 표시된다.
픽셀 칼라는 매우 큰 동적 범위를 스팬할 수 있도록 부동점 수로 표현되는 것이 좋다. 디스플레이에 한번 스케일된 정수값은 출력 세기가 계산되어 나중에 재스케일링 가능한 방식으로 주어진다면 충분한 범위를 제공하지 않을 수 있다.OpenGL을 포함하는 표준 API하에서, 부동점값으로서 표현되는 라이트는 좌표 거리임에 주목하라. 그러므로, 종래의 표현 방식에 비해서 낭비된 사용 가능한 디스플레이 동적 범위로 특정 밝기 범위쪽으로 스큐되어가 모든 블랙(다크) 또는 모든 화이트(라이트)를 장면에 대해서 표현하는 것이 상대적으로 쉽다.
본 발명의 정규화 절차하에서, 부동점 표현 처리량으로 계산을 유지하는 것이 좋으며, 최종 장면은 출력 디스플레이 및 D/A 변환기 성능으로 선의 픽셀 세기값을 가져오는 어떤 스케일링 루틴을 이용하여 매핑된다. 디스플레이 장치에 대한 이러한 스케일링 또는 정규화는 범위의 압축 또는 신장, 선형 압축 또는 신장, 대수적 압축, 로그적 압축, 지수 또는 멱 신장, 다른 대수 또는 다각형 매핑 함수, 도는 이들의 조합없이 상이한 범위의 값들로 소정 범위의 값들을 오프셋 또는 이동하는 연산을 포함할 수 있다. 대안적으로, 임의의 매핑 전달 함수를 갖는 룩업 테이블은 출력값 세기 변환을 수행하도록 구현될 수 있다. 수행 시 화상을 디스플레이하기 위해 버퍼 스왑 시 스캔아웃 동안에 로그적으로(또는 그밖에 달리) 스케일한다.
변환은 소정의 룰 세트하에서 자동적으로 수행되는 것이 바람직하다. 예컨대, 픽셀 히스토그램을 기초로한 정규화를 규정하는 룰이 구현될 수 있거나, 픽셀의 가우스 분포를 규정하는 룰 또는 어떤 선택적 세기의 클리핑으로 또는 클리핑없이 출력 세기를 선형적으로 스케일하는 룰이 구현될 수가 있다. 여기서 제공된 매핑 함수의 종류는 단지 컴퓨터 그래픽과 디지탈 이미지 처리 기술 분야에서 공지된 많은 입/출력 세기 변환의 예들이다.
이 방법은 또한 라이팅, 대상물 칼라 등을 규정하는데 있어 어느 정도 여유를 허용하며 관측 가능한 최종 출력을 랜더링하게 한다. 최종 결과가 미학적으로 완전하지 않을지라도, 최종 매핑을 튜닝하기 위한 기초를 제공할 것이며, 어떤 상호 작용적인 조절이 바람직하나 디버깅, 미세 튜닝, 또는 설정 연산으로서 선택적으로 제공될 수 있다.
3.2.18 스탬프를 근간으로 한 z 값 설명
VSP가 디스패치될 때, 그것은 하나의 프리미티에 대응하며, z 버퍼 블랜드(즉, 픽셀 블럭)는 VSP에서 모든 샘플에 대한 별개의 z 값을 필요로 한다. VSP(고려할 만한 대역폭을 취하는)내에서 모든 퍼샘플 z값의 송신을 통한 개선으로서, VSP는 x 및 y(수학적으로, 원시 요소의 z 값에 대한 평면 수학식)에 대한 z의 편미분과 z 기준값을 포함할 수 있다. 다음에 이 정보는 z 버퍼 블랜드(즉, 픽셀 블럭)에서 이용되어 퍼샘플 z 값을 재구성함으로써, 대역폭을 절감한다. CHSR 처리를 위해 계산된 z 값은 불일치가 랜더링 에러를 야기할 수 있기 때문에 z 버퍼 블랜드(즉, 픽셀 블럭)에서의 컴퓨터와 동일하도록 주의가 이루어져야 한다.
양호한 실시예에서, 스탬프를 근간으로 한 z 값 설명 방법은 컬 블럭에서 수행되며, 퍼샘플 z 값은 픽셀 블럭에서 이 설명으로부터 생성된다.
3.2.19 퐁블럭에서 대상물을 근간으로 한 프로세서 자원
퐁 라이팅 블럭은 양호하게 복수의 프로세서 또는 처리 요소를 포함한다. 프레그먼트 칼라 생성 동안에, 많은 상태가 필요하며, 공통 대상물로부터의 프레그먼트는 동일 상태를 사용하며, 그러므로 적어도 효율성의 이유로 최소 캐싱 요건인동일 대상물로부터의 프레그먼트는 동일 프로세서에 의해서 처리되어야 한다.
본 발명의 구조 및 방법에 있어서, 동일 대상물로부터 발원하는 모든 프레그먼트는 동일 프로세서로 송신된다.(또는 복수의 동일 프로세서에 로딩하는 서버가 있다.) 이는 퐁 블럭에서 상태 캐싱을 감소한다.
본 발명의 구조 및 방법의 양호한 실시예는 퍼타일 처리를 구현하고 싱글 타임이 복수 개의 대상물를 포함할 수 있음을 상기하라. 그러므로, 퐁 블럭 캐시는 전형적으로 하나 이상의 대상물에 대새 상태를 저장하며 적절한 상태를 공통 대상물로부터의 프레그먼트를 다루는 프로세서로 송신된다. 특정 대상물로부터의 프레그먼트에 대한 상태가 특정 프로세서에 송신된 다음, 그 대상물로부터 모든 다른 프레그먼트가 그 프로세서에 지향되는 것이 좋다.
이와 관련해서, 모드 주입 유니트(MIJ)는 대상물 또는 자재를 지정하고 MIJ는 모든 다운 스트림 블럭에 캐시를 할당한다. 퐁 유니트는 어느 대상물 데이터가 어느 퐁 유니트 프로세서에 캐시되는 트랙과 동일 대상물를 동일 프로세서에 속하게 하는 모든 프레그먼트를 펀넬하기 위한 시도를 유지한다. 로컬 불균형이 있다면 이것에 대한 선택적인 선택적 예외가 발생하며, 이 경우, 프레그먼트는 다른 프로세서에 할당될 것이이다.
이 대상물 태그 베이스 자원 할당(대안적으로, 다른 설명 부분에서 자재 태그 베이스 자원 할당이라고 또한 취해짐)은 퐁유니트에서 프레그먼트 엔진의 프레그먼트 프로세서에 대해서 발생한다.
3.2.20 파이프라인 상태로서 동적 마이크로코드 생성
퐁 유니트는 텍스쳐 환경 계산을 수행하는데 텍스쳐 환경 계산을 수행하고 대상물로부터의 프레그먼트를 처리하기 위해 특정 처리 요소를 선택한다. 앞에서 기술한 바와 같이, 공통 대상물로부터 동일 퐁 프로세서 또는 엔진으로 프레그먼트를 지향하기 위한 시도가 행해진다. 적용될 특정 텍스쳐, 표면의 속성, 칼라 등과 무관하게, 복수 개의 선택과 그에 따른 처리 환경의 변화가 있다. 여기서 텍스쳐 환경 및 라이팅과 관련하여 동적 마이크로코드 생성이 기술되는 동안, 강조 구조 및 절차는 일반적으로 마이크로코드, 머신 상태, 처리의 다른 유형에 보다 폭넓게 저장 가능하다.
본 발명의 구조 및 방법에 있어서, 삼각형 스트립의 처리가 개시되는 매번, 변경 자재 파라미터가 발생하거나 텍스쳐 환경을 터치하는 변경의 거의 모든 것이 발생하고, 퐁 유니트의 마이크로코드 엔진이 마이크로코드를 생성하며, 이 마이크로코드는 파이프라인 상태의 성분으로서 취급된다. 일반적으로는 머신 상태로서 특별하게는 3D 그래픽 프로세서에서 파이프라인 상태로서 이런 식으로 생성된 마이크로코드의 취급은 실질적인 이점으로서 다루어진다.
예를 들면, 퐁 유니트는 복수의 프로세서 또는 프레그먼트 엔진을 포함한다.(여기서, 프레그먼트 엔진은 프레그먼트의 텍스쳐 처리를 담당하는 퐁 유니트의 구성 요소와 프레그먼트 블럭에서 발생하는 보간 이외의 상이한 처리를 기술한다.) 마이크로코드는 프레그먼트 엔진에서 나타나고 동일 마이크로코드(상태)를 필요로 하는 어느 다른 프레그먼트가 필요 시 갖도록 프레그먼트 엔진으로 다운로드된다.
비록 퐁 블럭에서 프레그먼트의 실시예가 일반적으로 동일할지라도, 다운로드 가능한 마이크로코드의 존재는 특별한 정도를 제공한다. 상이한 마이크로코드는 MIJ 캐싱 메카니즘의 동작에 따라서 다운로드 가능하다. 그러므로, 동적 마이크로코드 생성은 텍스쳐 환경 및 라이팅을 위해 제공된다.
3.2.21 가변 스케일 범프 맵
가변 스케일 범프맵을 생성하는 것은 하나 또는 두개의 별개의 절차, 즉 자동 베이스 생성 및 자동 그라디언트 필드 생성을 포함한다. 그레이 스케일 이미지 및 세기 공간에서의 그의 미분을 고려하자, 자동 그라디언트 필드는 그레이 스케일 이미지의 그레이 스케일 세기에 대해 미분을 취하여 그 미분을 표면 법선 섭동으로서 사용하여 범프맵에 대한 범프를 생성한다. 자동 베이스 생성은 다각형 메모리에서 계산과 메모리 기억 장치, 처리에 있어 입력 대역폭을 절감한다.
각 삼각형 꼭지점에 대해, s,t, 표면 법선이 규정된다. 그러나, s, t는 칼라가 아니며, 이들은 텍스쳐 범프에 대한 2차원 표면 법선, 즉 텍스쳐 범프 맵이다. s, t는 이용 가능한 범프 맵을 작성하기 위해 표면 법선을 섭동하는 방향을 규정하기 위해 사용된다. s, t는 우리에게 섭동 방향을 규정할 수 있는 기준과 좌표계를 부여한다. 각 픽셀에서 s, t 좌표계를 이용함으로써 픽셀 위치에서 표면 탄젠트, 쌍법선을 규정할 필요성을 배제한다. 그 결과, 본 발명의 구조 및 방법은 계산, 메모리 기억장치, 입력 대역폭을 줄일 수가 있다.
3.2.22 타일 버퍼 및 픽셀 버퍼
퍼픽셀 타일단 버퍼 세트가 픽셀 아웃과 BKE 블럭 사이에 존재한다. 이들 버퍼 각각은 3개의 상태 비트, 즉 Empty, BkeDoneForPix, 이와 관련된 PixcDoneForBke를 가진다. 이들 비트는 이러한 버퍼를 사용하기 위해 PixelOut 및 후단 사이에서 핸드세이크를 조절(시뮬레이션)한다. 후단 및 PixelOut 유니트는 유니트가 판독하거나 기록하는 단버퍼를 표시하는 현재의 입력버퍼와 출력 버퍼를 유지한다.
PIX에 의해 랜더링하는 타일을 준비하기 위해, BKE 블럭은 다음 빈(Empty) 버퍼를 취하여 프레임 버퍼 메모리로부터 데이터를 판독한다(필요하다면, RGBAClearMask, DepthMask, StencilMask에 의해서 결정된 바와 같이, 비트 평면의 세트가 클리어하지 않으면, 버퍼메모리에서 판독된다). 후단이 타일내에서 판독과 함께 행해진 다음에, BkeDoneForPix 비트를 세트한다. PixelOut는 입력 타일의 BkeDoneForPix 비트를 본다. 이 비트가 설정되지 않으면, PixelOut는 스톨하고, 그렇지 않으면 픽셀 타일 버퍼에서 BkeDoneForPix 비트, 칼라, 깊이 및/또는 스텐실 비트 평면을 클리어하여 그것을 적절하게 타일 샘플 버퍼로 전송한다.
출력상에서, PixelOut 유니트는 픽셀 타일 버퍼에서 픽셀로 랜더링된 타일의 샘플을 결정한다.후단 유니트(BKE) 블럭은 이 버퍼를 프레임 버퍼 메모리에 전송한다. 픽셀 버퍼는 PixelOut 유니트에 의해서 순서가 역으로 된다. PixelOut는 랜더링된 샘플을 유래하는 동일 픽셀 버퍼로 내보낸다. 픽셀 타일 버퍼에 출력된 타일이 완료된 후, PixelOut 유니트는 PixDoneForBke 비트를 설정한다. 다음에 BKE 블럭은 PixDoneForBke 세트로 픽셀 타일 버퍼를 취하여, 그 비트를 클리어하여 그것을 프레임 버퍼 메모리로 전송한다. 전송 완료 후, 빈 비트는 버퍼상에서 설정된다.
3.2.23 스캔아웃간 윈도우 픽셀 주밍
후단 유니트는 데이터 및/또는 신호를 CRT 또는 다른 디스플레이 디바이스로 송신하는 기능을 하며 디지탈 정보를 디스플레이를 구동하기 적합한 아날로그 신호로 변환하기 위한 D/A 변환기를 포함한다. 후단은 또한 바이리니어 보간기를 구비하고 있어, 프레임 버퍼로부터의 픽셀은 픽셀이 CRT 디스플레이로 송신될 때 픽셀의 공간 스케일을 변경하도록 보간될 수 있다. 스캔아웃간 픽셀 주밍은 계속해서 스케일 또는 줌 해상도를 랜더링하는 것을 포함하지 않는다. 일실시예에서, 픽셀 주밍은 퍼윈도우에 기초해서 선택적으로 수행되며, 윈도우는 데스크톱 또는 디스플레이 영역의 일부이다.
3.2.24 스캔아웃간 가상 블럭 전송(VBLT)
종래의 구조 및 방법은 온스크린 메모리 기억장치 및 오프스크린 메모리 기억장치를 제공하며, 기억 장치 각각은 칼라 버퍼, z 버퍼, 어떤 스텐실을 구비하고 있다. 3D 랜더링 프로세스는 이러한 오프스크린 버퍼를 랜더링한다. 하나의 스크린 메모리는 디스플레이상에 도시된 데이터에 대응한다. 랜더링이 오프스크린 메모리에서 완료될 때, 오프스크린 메모리의 내용은 블럭 트랜스퍼(BLT)로서 지칭되는 온스크린 메모리에 복사된다.
메모리 대역폭을 줄이고 여기서 설명하고 있는 이점을 실현하기 위해, 본 발명의 구조 및 방법은 데이터를 스플라이싱하고 대체 위치로부터의 데이터를 판독함으로써 가상 블럭 전송 또는 가상 BLT를 수행한다.
3.2.25 꼭지점 리스트용 토큰 삽입
이 문맥에서 토큰은 대응하는 엔트리가 파이프라인을 가리키는 파이프라인으로 다운 전송된 다른 항목들 사이에 삽입된 정보 항목이다. 예컨대, 꼭지점의 x,y,z 좌표는 파이프라인으로 공급되며 이 좌표는 32 비트양이며, 토큰이 삽입되어 식별을 위해 엔트리 자체에서 여분의 비트가 없기 때문에 추종하는 수가 꼭지점 x,y,z 값인 파이프라인에 통보한다. 토큰은 송신되는 데이터를 해석하는 방법을 파이프라인 하드웨어에 통보한다.
우선권 주장
본 출원은 미국특허법 35 USC § 119(e)에 의해 1998년 8월 20일자로 출원된 미국 특허 가출원 번호 제60/097,336호와 미국특허법 35 USC § 120에 의해 1998년 12월 17일자로 출원된 미국 특허 출원 번호 제09/213,990호를 우선권 주장한 것이다.
1. 발명의 분야
본 발명은 일반적으로 3차원 컴퓨터 그래픽, 특히 지연 쉐이딩 및 다른 보강된 특성을 이용하는 3차원 그래픽 프로세서에 관한 구조 및 방법에 관한 것이다.
본 발명의 부가의 목적과 특징은 도면과 연계하여 다음의 상세한 설명 및 특허 청구 범위로부터 더 쉽게 명확해질 것이다.
도 1은 좌표축, 관찰점의 좌표계 및 스크린 좌표가 있는 4면체를 도시하는 도면이다.
도 2는 3D 그래픽 파이프라인에 관한 종래의 상위 렌더링 장치를 도시하는 도면이다.
도 3은 본 발명의 3 차원 그래픽 파이프라인의 일실시예를 도시하는, 특히 다른 기능 블럭과 애플리케이션이 호스트와 호스트 메모리를 실행하는 기하 구조 엔진(3000)의 관계를 도시하는 도면이다.
도 4는 본 발명의 3 차원 지연 쉐이딩 그래픽 파이프라인의 제1 실시예를 도시하는 도면이다.
도 5는 본 발명의 3 차원 지연 쉐이딩 그래픽 파이프라인의 제2 실시예를 도시하는 도면이다.
도 6은 본 발명의 3 차원 지연 쉐이딩 그래픽 파이프라인의 제3 실시예를 도시하는 도면이다.
도 7은 본 발명의 3 차원 지연 쉐이딩 그래픽 파이프라인의 제4 실시예를 도시하는 도면이다.
도 8은 본 발명의 3 차원 지연 쉐이딩 그래픽 파이프라인의 제5 실시예를 도시하는 도면이다.
도 9는 본 발명의 3 차원 지연 쉐이딩 그래픽 파이프라인의 제6 실시예를 도시하는 도면이다.
도 10은 보존적 잠복면 제거의 일실시예를 고려한 도면이다.
도 11은 보존적 잠복면 제거의 일실시예에서 알파 테스트와 깊이 테스트를 고려한 도면이다.
도 12는 보존적 잠복면 제거의 일실시예에서 스텐슬 테스트를 고려한 도면이다.
도 13은 보존적 잠복면 제거의 일실시예에서 알파 혼합을 고려한 도면이다.
도 14는 보존적 잠복면 제거의 일실시예를 달리 고려한 도면이다.
도 15는 파이프라인의 일실시예에 관하여 블럭을 통하는 예시적인 데이터 흐름을 도시하는 도면이다.
도 16은 컬 블럭의 일실시예가 부분적으로 불명료한 삼각형으로부터 프래그먼트들을 생성하는 방법을 도시하는 도면이다.
도 17은 픽셀 블럭의 일실시예가 하나의 스탬프 안에 있는 각 프래그먼트들의 가치를 진행하는 방법을 도시하는 도면이다.
도 18은 프런트 엔드 커맨드 인출와 복호화 블럭(CFD)(2000) 내에 주요 기능 유닛들이 있음을 나타내는 파이프라인의 일실시예의 예시적인 블럭도를 도시하는 도면이다.
도 19는 지연 쉐이딩 그래픽 프로세서(DSGP)의 하나의 실시예가 꼭지점 좌표를 치환하는 방법을 강조하여 도시하는 도면이다.
도 20은 지연 쉐이딩 그래픽 프로세서(DSGP)의 하나의 실시예가 노말, 탄젠트, 및 바이노말을 치환하는 방법을 강조하여 도시하는 도면이다.
도 21은 기하 구조 블럭(GEO)의 기능 블럭도를 도시하는 도면이다.
도 22는 본 발명의 구조의 3칩 실시예(a three-chip embodiment) 내의 반도체 칩들 상에 있는 기능 블럭들간의 관계를 도시하는 도면이다.
도 23은 모드 추출 블럭(MEX)의 하나의 실시예에 있어서 예시적인 데이터 흐름을 도시하는 도면이다.
도 24는 전송되는 패킷과 모드 추출 블럭(MEX)을 도시하는 도면이다.
도 25는 예시적인 모드 추출 블럭의 온칩 상태 벡터 파티셔닝의 일실시예를 도시하는 도면이다.
도 26은 다각형 메모리에 정보를 저장하는 처리 형태를 도시하는 도면이다.
도 27은 MEX에 대한 다각형 메모리의 예시적인 구성을 도시하는 도면이다.
도 28은 MEX 블럭 내의 칼라 포인터에 대한 칼라 정보의 예시적인 비트 구성을 도시하는 도면이다.
도 29는 MEX 블럭 내의 칼라 타입 필드의 예시적인 구성을 도시하는 도면이다.
도 30은 점 리스트, 선 스트립, 삼각형 스트립, 또는 삼각형 팬의 리스트에 관한 제1 듀얼-옥트 내에 기억되어 있는 MLM 포인터 패킷의 내용을 도시하는 도면이다.
도 31은 데이터가 분류 메모리 페이지 내에 기억되는 방법과 그 분류 메모리 페이지가 데이터 기억부와 포인터 기억부로 분할되는 방법에 관한 예시적인 실시예를 도시하고 있다.
도 32는 분류 블럭의 예시적인 실시예를 간략화한 블럭도이다.
도 33은 타일 ABC와 중심이 (xTile, yTile)인 타일에 관한 접촉된 타일 계산 절차의 형태를 도시하는 도면이다.
도 34는 상기 접촉된 타일 계산 절차의 형태를 도시하는 도면이다.
도 35a 및 도 35b는 상기 접촉된 타일 계산의 임계 거리 계산의 형태를 도시하는 도면이다.
도 36a는 타일의 위치와 삼각형의 위치간의 제1 관계를 수직 벡터와 임계 거리간의 특정 관계들에 대해서 도시하는 도면이다.
도 36b는 타일의 위치와 삼각형의 위치간의 제2 관계를 수직 벡터와 임계 거리간의 특정 관계들에 대해서 도시하는 도면이다.
도 36c는 타일의 위치와 삼각형의 위치간의 제1 관계를 수직 벡터와 임계 거리간의 특정 관계들에 대해서 도시하는 도면이다.
도 37은 임계 거리 판단에 관한 요소들과, 타일의 여러 변 중 한 변에 대한 선의 각도의 관계를 도시하는 도면이다.
도 38a는 하나의 윈도우가 252개의 타일을 18×14의 어레이로 되어 있는 경우에 있어서 슈퍼타일 호프 절차 시퀀스의 예시적인 실시예를 도시하는 도면이다.
도 38b는 도 38a에서 N=63이고 M=13일 때 슈퍼타일 호프 절차에 대한 예시적인 시퀀스를 도시하는 도면이다.
도 39는 STP 블럭에 도달하고, 또 에일리어싱 모드 또는 안티에일리어싱 모드로 렌더링된 DSGP 삼각형을 도시하고 있다.
도 40은 선을 사각형으로, 그리고 다양한 배열의 에일리어싱 선과 안티에일리어싱 선의 작도에 대해서 생성된 사각형으로 변환함으로써 DSGP가 그 선을 렌더링하는 방법을 도시하는 도면이다.
도 41은 사용자 지꼭지점이 기하 구조 유닛 내의 렌더링된 점으로 조절되는 방법을 도시하는 도면이다.
도 42는 안티에일리어싱 선 세그먼트들이 평행도형과 삼각형을 균일하게 라스터화하는 CUL 유닛 스캔 변환기 내에서 사각형으로 변환되는 방법을 도시하는 도면이다.
도 43은 에일리어싱 선의 단부점들이 안티에일리어싱 선의 경우의 삼각형에 비교하여, 평행도형을 이용하여 계산되는 방법을 도시하는 도면이다.
도 44는 사각형이 선의 가시 부분들을 표현하는 방법을 도시하는 도면이다.
도 45는 소정의 클립된 점에 대해서 새로운 선 개시점 및 스티플 오프셋 stplStartBit가 생성되는 방법을 도시하는 도면이다.
도 46은 선 모드 삼각형의 기하 구조를 도시하는 도면이다.
도 47은 꼭지점의 할당을 비롯해서, 셋업이 선과 삼각형을 표현하는 형태를 도시하는 도면이다.
도 48은 기울기의 할당을 비롯해서, 셋업이 선과 삼각형을 표현하는 형태를 도시하는 도면이다.
도 49는 선의 배열을 기초로 한 사각형의 할당을 비롯해서, 셋업이 선과 삼각형을 표현하는 형태를 도시하는 도면이다.
도 50은 클립 디스크립터의 작명법과 꼭지점에 대한 클립 코드의 할당을 비롯해서, 셋업이 선과 삼각형을 표현하는 방법을 도시하는 도면이다.
도 51은 셋업이 특정값을 CUL로 통과시키는 형태를 비롯해서, 셋업이 선과 삼각형을 표현하는 형태를 도시하는 도면이다.
도 52는 점 처리와 관련하여 타일 좌표의 판단을 도시하는 도면이다.
도 53은 도태 블럭의 예시적인 실시예에 관한 도면이다.
도 54는 도태 블럭 서브 유닛의 예시적인 실시예에 관한 도면이다.
도 55는 충분히 관련되어 있고 캐쉬 태그의 룩업을 위해 내용 어드레스 가능한 메모리(CAM)를 이용하는 태그 캐쉬의 예시적인 실시예의 도면이다.
도 56은 mde 데이터가 흘러서 DSGP 파이프라인의 부분들에 캐쉬되는 방법을 도시하는 도면이다.
도 57은 프래그먼트 블럭의 예시적인 실시예의 도면이다.
도 58은 픽셀 프래그먼트들이다양한 원시 요소에 의해 형성되는 VSP의 예들을 도시하는 도면이다.
도 59는 삼각형에 대해 원근 정정 중입자 보간법을 이용하여 프래그먼트 블럭 보간의 형태를 도시하는 도면이다.
도 60은 부등량의 벡터간의 보간이 어떻게 불균일한 각입도(angular granularity)로 되고, 본 발명의 구조와 방법이 왜 이와 같이 노말과 탄젠트를 보간하지 않는지를 도시하는 도면이다.
도 61은 프래그먼트 블럭 내에서 보간 계수를 형성하는 데 사용되는 프래그먼트 x 좌표와 y 좌표가 어떻게 형성되는지를 도시하는 도면이다.
도 62는 텍스쳐 어레이 어드레싱의 개략을 도시하는 도면이다.
도 63은 파이프라인 내의 퐁 유닛의 위치와 근거리 블럭에 대한 관계를 도시하는 도면이다.
도 64는 몇 개의 서브 유닛들로 구성되는 블럭도를 도시하는 도면이다.
도 65는 PIX 블럭의 블럭도를 도시하는 도면이다.
도 66은 백엔드 블럭(BKE)과 그에 인터페이스하는 유닛을 도시하는 도면이다.
도 67은 BKE를 통해 메모리 판독 및 기록을 수행하는 외부 클라이언트 유닛을 도시하는 도면이다.
4 시스템 레벨 개관
파이프라인은 호스트 컴퓨터의 I/O 버스로부터 데이터를 얻고, 그 데이터를 처리하며, 그 데이터를 컴퓨터의 디스플레이에 송출한다. 파이프라인은 12 개의 블럭, 더하기 세 개의 메모리 스토어와 프레임 버퍼로 분할된다. 도 15는 파이프라인(100)을 통한 데이터의 흐름을 도시하고 있다. 파이프라인을 형성하는 블럭들은 아래에서 설명된다.
4.1 커맨드 인출와 디코드(CFD)
커맨드 인출와 디코드(CFD)(2000)는 I/O 버스를 통한 호스트 컴퓨터와의 통신을 취급한다. 그것은 그의 입력을 일련의 패킷으로 전환하고, 그것은 기하구조 블럭으로 통과한다. 대부분의 입력 스트림은 기하학적 데이터, 즉 선, 점 및 다각형으로 구성된다. 이들 기하학적 대상물에 관한 설명은 칼라, 표면 노말, 텍스쳐 좌표 등을 포함할 수 있다. 입력 스트림도 라이팅, 블렌딩 모드 및 버퍼 기능 등의 렌더링 정보를 포함한다.
4.2 기하구조(GEO)
기하구조 블럭(3000)은 네 가지 주요 임무, 즉 변환, 다각형을 삼각형으로 하는 재구성, 클립핑 및 고우러드 쉐이딩에 필요한 꼭지점당 라이팅 게산을 취급한다.
우선, 기하구조 블럭은 인입 그래픽 원시 요소들을 균일한 좌표 공간(「월드 스페이스」)으로 변환한다. 이어서, 그것은 그 원시 요소들을 뷰잉 볼륨, 또는 프러스텀(frustum)으로 클립한다. 뷰잉 볼륨을 한정하는 6면(좌측, 우측, 상측, 하측, 전방 및 후방)에 더하여, DSGP 파이프라인은 여섯 개의 사용자 정의 가능한 클립핑 평면을 제공한다. 클립핑 후에, 기하구조 블럭은 세 개 이상의 꼭지점을 갖는 다각형을 삼각형의 세트로 쪼개서, 프로세싱을 단순화한다.
마지막으로, 프레임 내에 임의의 고우러드 쉐이딩이 있다면, 기하구조 블럭은 프래그먼트 블럭이 그 쉐이딩을 수행하는데 사용하는 꼭지점 칼라들을 계산한다.
4.3 모드 추출(MEX)
모드 추출 블럭(4000)은 데이터 스트림을 두 개의 부분, 즉 1) 꼭지점과, 2) 그밖의 것들로 분리한다. 꼭지점들은 분류 블럭으로 전송된다. 그밖의 다른 것들, 즉 라이트, 칼라, 텍스쳐 좌표 등은 다각형 메모리라고 하는 특수 버퍼에 기억되고, 그것은 모드 주입 블럭에 의해 호출될 수 있다. 다각형 메모리는 이중 버퍼되고, 따라서 모드 주입 블럭은, 모드 추출 블럭이 다음 프레임에 대한 데이터를 기억하고 있는 동안에, 하나의 프레임에 대한 데이터를 판독할 수 있다. 다각형 메모리에 기억되어 있는 모드 데이터는 세 개의 주요 카테고리, 즉 프레임당 데이터(라이팅 등), 원시 요소당 데이터(재질 성질 등) 및 꼭지점당 데이터(칼라 등)에 속한다. 모드 추출 블럭과 모드 주입 블럭은 효율을 최적화하기 위해 이들 카테고리를 더 분할한다.
각 꼭지점마다, 모드 추출 블럭은 꼭지점 데이터와 포인터를 포함하고 있는 패킷의 분류 블럭을 다각형 메모리로 전송한다. (포인터는, 칼라 외에 다른 정보의 모든 종류들을 호출하는데 사용되기 때문에, 다소 오도되는 칼라 포인터라고 부른다). 또한, 패킷은 꼭지점이 점, 선의 종점, 또는 삼각형의 모서리를 표현하는지를 표시하는 필드를 포함한다. 꼭지점들은 그 꼭지점들이 파이프라인으로 입력된 것과 동일한 순서인 정시 시퀀스 순서로 전송된다. 또한, 패킷은 현재의 꼭지점이 주어진 원시 요소의 최종 꼭지점을 형성(즉, 그 원시 요소를 「완료」)하는지의 여부를 지시한다. 삼각형 스트립 또는 팬과, 선 스트립 또는 루프의 경우에, 꼭지점들은 인접 원시 요소들간에 공유된다. 이 경우, 패킷들은 각 원시 요소에서 다른 꼭지점들을 어떻게 식별하는지를 표시한다.
4.4 분류(SRT)
분류 블럭(6000)은 모드 추출 블럭으로부터 꼭지점들을 수신하고, 타일에 의해 결과적인 점, 선 및 삼각형을 분류한다. 이중 버퍼된 분류 메모리(7000)에서, 그것은 프레임 내의 각 타일마다 그래픽 원시 요소들과, 타일 포인터 리스트들로 된 세트의 리스트, 즉 프레임 내의 각 타일에 관한 하나의 리스트를 유지한다. 그것이 소정의 원시 요소를 완성하는 소정의 꼭지점(예컨대, 삼각형의 제3 꼭지점)을 수신할 때, 그것은 원시 요소가 어느 타일과 접촉하는지를 확인하도록 검사한다. 소정의 원시 요소가 접촉하는 각 타일에 대해, 분류 블럭은 그 꼭지점에 대한 포인터를 그 타일의 타일 포인터 리스트에 더한다.
분류 블럭이 소정의 프레임 내의 모든 기하구조를 분류하는 것을 종료했을 때, 그것은 데이터를 셋업으로 전송한다. 각 분류 블럭 출력 패킷은 소정의 완성된 원시 요소를 표현한다. 분류는 그의 출력을 타일 단위 순서, 즉 주어진 타일을 접촉하는 모든 원시 요소에 이어서 다음 타일을 접촉하는 모든 원시 요소 등의 순서로 전송한다. 이것은, 일단 각 타일에 대해 동일한 원시 요소가 접촉하면, 분류가 그 동일한 원시 요소를 여러번 전송할 수 있음을 의미함에 주의한다.
4.5 셋업(STP)
셋업 블럭(8000)은 선과 삼각형에 대한 공간 미분을 계산한다. 그것은 데이터의 하나의 타일의 가치, 즉 한 번에 하나의 원시 요소를 처리한다. 소정의 원시 요소를 처리할 때, 그것은 그 데이터를 컬 블럭에 전송한다. 또한, 셋업 블럭은 스티플된 선들을 분리된 선 세그먼트들(각 정방형 영역)로 쪼개고, 그 타일 내의 각 원시 요소에 대한 최소 z값을 계산한다. 셋업으로부터의 각 원시 요소 패킷 출력은 하나의 원시 요소, 즉 삼각형, 선 세그먼트 또는 점을 표현한다.
4.6 컬(CUL)
컬 블럭(9000)은 보다 복잡한 블럭들 중 하나이고, 프로세싱은 두 단계, 즉 크기 비교 내용 어드레스 가능한 메모리(MCCAM) 컬과 서브픽셀 컬로 분할된다. 컬 블럭은 한 번에 하나의 타일로 데이터를 접수한다. MCCAM 컬은 이미 처리된 기하구조에 의해 완전히 잠복되는 원시 요소들을 버린다. 서브픽셀 컬은 (부분적으로 또는 전체적으로 보이는) 남아 있는 원시 요소들을 취해서, 가시 프래그먼트들을 판단한다. 서브픽셀 컬은 한 번에, 여러 개의 프래그먼트들로 된 하나의 스탬프를 출력한다. 이를 가시 스템프 부분(VSP)이라고 한다. 도 16은 컬 블럭이 부분적으로 가려진 삼각형으로부터 프래그먼트들을 어떻게 생성하는가하는 예를 도시하고 있다.
컬 블럭에 의해 생성된 가시 스탬프 부분은, 복수 개의 원시 요소가 그 스탬프를 접촉하더라도, 단일의 원시 요소만으로부터의 프래그먼트들을 포함하고 있음에 주의한다. 따라서, 도면에서, 출력 VSP는 회색 삼각형만으로부터의 프래그먼트들을 포함하고 있다. 백색 삼각형의 조각에 의해 형성된 프래그먼트는 분리된 VSP에서 전송되고, 두 개의 VSP의 칼라들은 나중에 픽셀 블럭에서 조합된다.
소정의 VSP 내의 각 픽셀은 주어진 프래그먼트에 의해 그 픽셀이 얼마나 많이 점유되고 있는지를 판단하기 위해 복수 개의 샘플들로 더 분할된다. 픽셀 블럭은, 그것이 그 픽셀에 대한 최종 칼라를 생성하도록 프래그먼트들과 혼합할 때, 이 정보를 사용한다.
4.7 모드 주입(MIJ)
모드 주입 블럭(10000)은 다각형 메모리(5000)로부터 칼라, 재질 성질 등의 모드 정보를 호출하고, 그것을 요구되는 바와 같이 다운스트림으로 통과시킨다. 대역폭을 저장하기 위해, 개개의 다운스트림 블럭은 최근에 사용된 모드 정보를 캐쉬한다. 모드 주입 블럭은 캐쉬 다운스트림되고 있는 정보의 트랙을 유비하고, 필요에 따라서 정보를 전송할 뿐이다.
4.8 프래그먼트(FRG)
프래그먼트 블럭(11000)은 주요 작업이 보간이므로 다소 오도된 작명이다. 이 블럭은 고우러드 쉐이딩에 대한 칼라값, 퐁 새이딩에 대한 표면 노말 및 텍스쳐 맵핑에 대한 텍스쳐 좌표를 보간한다. 또한, 이 블럭은, 범프 맵이 사용 중이라면, 범프 맵핑 알고리즘에 사용하기 위해 표면 탄젠트를 보간한다.
프래그먼트 블럭은 무게 중심 계수를 이용하여 투시적으로 정정된 보간을 수행한다.
4.9 텍스쳐(TEX)
텍스쳐 블럭(12000)은 텍스쳐 맵들을 픽셀 프래그먼트에 공급한다. 텍스쳐 맵은 텍스쳐 메모리(13000)에 기억된다. 전술한 다른 메모리 스토어와는 달리, 텍스쳐 메모리는 단일 버퍼된다. 그것은 AGP 인터페이스를 이용하여 호스트 컴퓨터의 메모리로부터 로드된다. 단일의 다각형은 네 개의 텍스쳐까지 사용할 수 있다.
텍스쳐는 밉맵(mip-map)된다. 즉, 각 텍스쳐는 일련의 텍스쳐 맵들을 상이한 수준의 세부로 구비하고, 각 맵은 시각점으로부터의 주어진 거리에서 그 텍스쳐의 외양을 표현한다. 주어진 픽셀 프래그먼트에 대한 텍스쳐값을 생성하기 위해, 텍스쳐 블럭은 텍스쳐 맵으로부터 트라이리니어(tri-linear) 보간을 수행하여 정확한 수준의 세부에 접근한다. 또한, 텍스쳐 블럭은 이방성 보간 등의 다른 보간 방법을 수행한다.
텍스쳐 블럭은 (대개 RGBA 칼라값으로서의) 보간된 텍스쳐값들을 프래그먼트당의 단위로 퐁 블럭에 공급한다. 범프 맵은 특수한 종류의 텍스쳐 맵을 표현한다. 칼라 대신, 범프의 각 픽셀은 높이 필드 변화도를 포함하고 있다.
4.10 퐁(PHG)
퐁 블럭(14000)은 각 픽셀 프래그먼트에 대한 퐁 쉐이딩을 수행한다. 이 퐁 블럭은 모드 주입 블럭, 텍스쳐 블럭으로부터의 텍스쳐 칼라 및 프래그먼트 블럭에 의해 생성된 표면 노말에 의해 공급되는 라이팅 정보와 재질을 이용하여, 프래그먼트의 외형 칼라를 판단한다. 만일 범프 맵핑이 사용 중이면, 퐁 블럭은 텍스쳐 블럭으로부터의 보간된 높이 필드 변화도를 이용하여, 쉐이딩 이전에 프래그먼트의 표면 노말을 교란한다.
4.11 픽셀(PIX)
픽셀 블럭(15000)은 VSP를 수신하고, 각 프래그먼트는 독립된 칼라값을 갖는다. 픽셀 블럭은 각 픽셀 내의 각 샘플에 관해 픽셀 소유권 테스트, 시저 테스트, 스텐실 연산, 깊이 테스트, 블렌딩, 디더링 및 로직 연산을 수행한다(OpenGL 설명서 1.1 중 섹션 4.1인 「프래그먼트당 연산」, 제109쪽 참조). 픽셀 블럭이 종료된 픽셀들의 타일 단위로 누산했을 때, 그것은 각 픽셀 내의 샘플들을 혼합하고(따라서, 픽셀들의 안티에일리어싱을 수행), 그들을 백엔드로 전송하여, 프레임 버퍼 내에 기억되게 한다.
도 17은 픽셀 블럭이 어떻게 프래그먼트들의 스탬프 단위로 처리하는지를 도시하고 있다. 이 예에서, 픽셀 블럭은 두 개의 VSP, 즉 회색 삼각형의 하나와 백색 삼각형의 하나를 수신한다. 이어서, 그것은 프래그먼트와 배경 칼라를 혼합하여, 최종 픽셀을 생성한다. 그것은 각 프래그먼트가 커버하는 픽셀의 부분이 얼마나 많은지 또는 보다 정밀하게 되어야 할지에 따라서 그 프래그먼트가 커버하는 수에 의해 그 프래그먼트를 가중 부여한다.
이 블렌딩에 더하여, 픽셀 프로세싱 블럭은 스텐실 테스팅, 알파 블렌딩, 및 픽셀의 안티에일리어싱을 수행한다. 그것이 종료된 픽셀들의 타일을 누산할 때, 그것은 그들을 백엔드로 전송하여, 프레임 버퍼에 기억되게 한다.
4.12 백엔드(BKE)
백엔드(16000)는 픽셀 블럭으로부터 한 번에, 픽셀들로 된 하나의 타일을 수신하고, 그들을 프레임 버퍼(17000)로 기억시킨다. 또한, 백엔드는 픽셀들로 된 타일들을 다시 픽셀 블럭으로 전송한다. 그 이유는, 특정 프레임 버퍼값은 프레임에서 프레임으로 생존할 수 있기 때문이다. 예컨대, 스텐실 비트값은 많은 프레임에 걸쳐서 일정할 수 있지만, 그 모든 프레임 내에서 사용될 수 있다.
프레임 버퍼의 제어에 더하여, 백엔드는 2D 작도를 수행하고, 종료된 프레임을 출력 장치로 전송한다. 그것은 프레임 버퍼와 컴퓨터 모니터와 비디오 출력간에 인터페이스를 제공한다.
4.13 파이프라인에서의 블럭들간의 통신
진보적인 구조와 방법은 파이프라인의 기능 블럭들간에 패킷화된 통신을 제공한다. 이들 패킷의 본질은 개개의 기능 블럭 섹션에서와, 섹션 3의 연산에 관한 초기의 설명에 설명되어 있다.
5 시스템 블럭의 상세한 설명
5.1 버스 인터페이스 블럭(AGI)
AGI 블럭은 데이터를 호스트 메모리 또는 CPU에(로부터) 전송 및 수신하기 위해 AGP 및/또는 PCI에 의해 지시된 모든 기능을 담당한다. 이 블럭은 AGP와, 칩의 나머지간의 비동기 경계를 완전하게 캡슐화해야 한다. AGI 블럭은 PIO에 의해 커맨드를 고속 전송할 수 있도록 AGP 2.0 세목에서의 옵션적인 고속 기록 능력을이용해야 한다. AGI 블럭은 판독/기록 제어기, DMA 제어기, 및 CFD 상의 인터럽트 제어 레지스터에 연결된다.
5.2 커맨드 인출와 디코드 블럭(CFD)
5.2.1 개관
CFD 블럭은 화상을 실제로 작도하는, AGP 인터페이스와 하드웨어 사이의 유닛이다. 여기에는 수학이 거의없는 많은 제어 및 데이터 이동 유닛들이 있다. CFD 플럭이 하고 있는 일의 대부분은 다른 블럭에 대한 데이터를 경로 지정하는 것이다. 2D, 3D, 백엔드 및 링에 대한 커맨드와 텍스쳐는 AGP 버스를 지나서, 전단에 의해 그들을 소비하는 유닛으로 경로 지정된다. CFD는 커맨드의 일부 디코딩과 언팩킹을 행하고, AGP 인터페이스를 관리하며, 전후 관계 스위치를 위해 DMA 이송에 포함되고, 일부 상태를 유지한다. 그것은 DSGP 시스템의 최저로 우아하지만 최상으로 기본적 성분 중 하나이다.
도 18은 CFD 블럭(2000)에서의 주요 기능 유닛을 나타내는 파이프라인의 블럭도를 도시하고 있다. DSGP 그래픽 시스템의 전단은 두 개의 서브 유닛, 즉 AGI 블럭과 CFD 블럭으로 나뉜다. 이 섹션의 나머지는 CFD 블럭의 아키텍쳐를 설명하는데 할애될 것이다. 기준들은 AGI에 관해서 행해지지만, 그 기준들은 CFD가 AGI를 다룸에 있어서 갖고 있는 요구 조건들의 내용 내에 있을 것이다.
5.2.2 서브블럭 설명
5.2.2.1 판독/기록 제어
일단 AGI가 AGP 또는 PCI 판독/기록 트랜잭션을 완료하면, 그것은 데이터를판독/기록 제어(2014)로 이동시킨다. 기록의 경우에 있어서, 이 기능 유닛은 그것이 수신하는 데이터를 이용하여, 레지스터 또는 그 물리적인 어드레스에 상응하는 큐로 다중화한다(상세한 점은 어드레스 공간을 참조). 판독의 경우에 있어서, 디코더는, 판독 트랜잭션이 완료될 수 있게, 적당한 레지스터에서 AGI 블럭으로의 데이터를 다중화한다.
판독/기록 제어는 CFD 어드레스 공간의 모든 가시 레지스터로 판독 또는 기록할 수 있고, 2D 및 3D 커맨드 큐(2022, 2026)로 기록할 수 있으며, 또한 백엔드 입력 버스(2036)를거쳐서 판독 및 기록을 전송할 수 있다.
만일 판독/기록 디코더가 판독만 가능하거나 존재하지 않는 레지스터에 대한 기록을 수신하면, 그것은 메시지를 인터럽트 발생기(2016)으로 전송해서, 그것이 액세스 위반 인터럽트를 발생하는지를 요청한다. 그것은 그 기록에 대한 더 이상의 의무를 갖지 않고, 다만 추가의 판독과 기록을 계속 접수해야 한다.
만일 판독/기록 디코더가 기록만 가능하거나 존재하지 않는 레지스터에 대한 판독을 수신하면, 그것은 판독 트랜잭션을 깨끗히 삭제해야 한다. 이어서, 그것은 메시지를 인터럽트 발생기에 전송하여, 액세스 위반 인터럽트가 생성되는 것을 요청해야 한다. 그것은 더 이상의 의무를 갖지 않고, 다만 판독과 기록을 계속해서 접수해야 한다.
5.2.2.3 3D 커맨드 큐
또한, AGI와 3D 커맨드 디코드(2034) 사이에는 수 킬로바이트의 버퍼링이 필요하다. AGI를 지나는 커맨드 전달 속도와 GEO 블럭에 의한 성능 모드 커맨드 실행속도 사이의 불균등성을 원활하게 처리하기 위해서는 사이즈가 조절이되어야 한다.
이 큐는 오버런을 회피하도록 흐름 제어된다. 엔트리들의 번호가 큐로 배열될 수 있게 호스트에 의해 프로그램되는 3D 하이 워터 마크 레지스터가 존재한다. 이 엔트리들의 번호가 충족되거나 초과될 때, 3D 하이 워터 인터럽트가 생성된다. 호스트가 이 인터럽트를 얻자마자, 그것은 하이 워터 인터럽트를 디스에이블시키고, 로우 워터 인터럽트를 인에이블시킨다. 엔트리가 3D 로우 워터 마크 레지스터에 있는 것보다 큐에 있는 것이 적을 때, 로우 워터 인터럽트가 생성된다. 하이 워터 인터럽트가 수신되는 시간에서 로우 워터가 수신되는 시간까지, 드라이버는 거의 차있는 커맨드 버퍼에 기록이 발생하기 않게 하는 일을 한다.
5.2.2.4 3D 커맨드 디코드
커맨드 디코더(2034)는 3D Cmd 큐(2026)와 3D 응답 큐(2028)로부터의 커맨드를 판독 및 해석하고 그들을 재포맷된 패킷으로서 GEO 블럭에 전송하는 일을 한다. 디코더는 그들을 GEO 블럭에 보내거나 그들이 바뀌는 상태를 쉐도윙하기 이전에 「고속」 커맨드에 대한 데이터 전환을 수행한다. 3D 커맨드 디코드는 포맷 전환을 수행할 수 있어야 한다. 입력 데이터 포맷은 API에 의해 허용되는 모든 것들(대개, C 언어 또는 다른 프로그래밍 언어에서 허용되는 모든 것들)을 포함한다. 3D 커맨드 디코드로부터의 출력 포맷은 하드웨어에 의해 처리될 수 있는 것들에 제한되고, 대개 부동점 또는 「칼라」 포맷 중 어느 하나이다. 칼라 데이터 포맷의 정확한 비트 정의는 파이프라인의 나머지를 통해서 칼라가 어떻게 표현되는가에 따라서 다르다.
커맨드 디코드는 3D 커맨드 큐로부터의 판독을 시동할 때 개시한다. DMA 커맨드가 삭제될 때, 커맨드 디코더는 커맨드와 데이터를 DMA 제어기(2018)에 전송한다. DMA 제어기는 요청된 데이터를 3D 응답 큐에 전달하기 시작할 것이다. 이어서, 3D 커맨드 디코더는 3D 응답 큐로부터의 DMA 커맨드에 지정되어 있는 만큼의 바이트를 판독하여, 응답 큐 내의 데이터를 노말 커맨드 스트림으로서 해석한다. 3D 커맨드 디코더가 DMA 커맨드에서 지정된 바이트수를 판독했을 때, 3D 커맨드 디코더는 정규 커맨드 큐로부터의 판독으로 다시 스위치한다. 3D 응답 큐로부터의 판독 중에는, 모든 DMA 커맨드가 무효 커맨드라고 고려된다.
이 3D 커맨드 디코드는 무효 커맨드를 검출하는 일을 한다. 무효 커맨드가 있으면, 무효 커맨드 인터럽트가 생성되어야 한다(보다 상세한 설명은 인터럽트 제어 부분을 참조).
또한, 3D 커맨드 디코드는, 큐에서 꼭지점 커맨드가 검출될 때, 소정의 꼭지점 패킷을 전송하는데 필요한 현재 상태 벡터를 해석하고 저장한다. 또한, 3D 커맨드 디코드는 현재의 「개시」 내부의 완료된 최종 세 개의 꼭지점(OpenGL 설명서를 참조), 그들의 관련 상태, 마지막으로 만난 「개시」의 종류를 기억해 둔다. 전후 관계 스위치가 발생할 때, 3D 커맨드 디코드는 독출하기 위해 이들 쉐도우된 값들을 호스트에 이용할 수 있게 해야 하고, 따라서 호스트는 나중에 전후 관계를 재시작하는 「파이프를 리프라임」할 수 있다.
5.2.2.5 DMA 제어기
CFD DMA 제어기(2018)는 DSGP 카드와의 모든 트랜잭션을 개시하고 유지하는일을 한다. DSGP는 항상 임의의 DMA 전송의 마스터이고, DMA 제어기가 슬레이브일 필요는 없다. 2D 엔진과 3D 커맨드 디코드는 DMA 제어기의 마스터라고 주장한다. DMA 기록과 DMA 판독 모두는 지원되지만, 2D 블럭만이 DMA 기록을 시작할 수 있다. DSGP는 항상 DMA의 마스터이다.
DMA 이송은 다음과 같이 시작된다. 개시 위치의 물리적 어드레스와 함께 DMA 커맨드와 이송할 바이트수는 2D 또는 3D 커맨드 큐 중 어느 하나에 기록된다. 그 커맨드가 3D 커맨드 디코더 또는 2D 유닛에 의해 판독될 때, 데이터를 갖는 DMA 요청은 DMA 제어기에 전송된다. 2D에 의한 DMA 기록의 경우에 있어서, 2D 유닛은 호스크 큐로의 기록(2020)에 데이터를 배치하기 시작한다. 일단 DMA 제어기가 임의의 이전 DMA를 종료하면, DMA 제어기는 DMA 요청을 확인하고 데이터의 이송을 개시한다. 만일 DMA가 DMA 기록이라면, 제어기는 데이터를 호스트 큐로의 기록으로부터 AGI를 거쳐 시스템 메모리로, 또는 백엔드 입력 버스를 거쳐 프레임 버퍼로 이동시킨다. 만일 DMA가 DMA 판독이라면, 제어기는 데이터를 시스템 메모리로부터 AGI를 거쳐 또는 백엔드로부터 벡엔드 출력 버스(2038)를 거쳐 2D 응답 큐 또는 3D 응답 큐로 끌어 낸다. 일단 제어기가 요구된 바이트수를 이송했다면, DMA 제어기는 DMA 요구를 행하고, 요구 유닛이 그의 커맨트 큐로부터 다음 커맨드를 판독할 수 있게 한다.
DMA 제어기는, 이송의 나머지가 소정의 캐쉬 라인보다 적을 때까지(AGP 성능 최대화 백색 자료에 의해 권고되는 바와 같이) 캐쉬 라인 이송에 후속하는 트랜잭션(필요하다면)을 개시하기 위해 비캐쉬 라인 배열된 판독/기록을 행함으로써, AGP로직의 성능을 최대화하도록 해야 한다.
5.2.2.6 2D 응답 큐
2D 응답 큐는 2D 블럭에 의해 개시되는 DMA 판독으로부터의 데이터를 위한 저장소이다. DMA 요구가 전송된 후, 2D 엔진은 2D 응답 큐로부터 판독해서, 2D 커맨드 큐에서의 커맨드와 같이 내용을 취급한다. DMA 커맨드가 응답 큐에서 만날 때에만 유일한 제한이 있고, 그것은 무효 커맨드로서 취급되어야 한다. 현재의 DMA 커맨드에 지정되어 있는 바이트수가 응답 큐로부터 판독된 후, 2D 엔진은 2D 커맨드 큐로부터 커맨드들을 다시 판독한다.
5.2.2.7 3D 응답 큐
3D 응답 큐는 3D 커맨드 디코드에 의해 개시되는 DMA 판독으로부터의 데이터를 위한 저장소이다. DMA 요구가 전송된 후, 커맨드 디코드는 3D 응답 큐로부터 판독해서, 3D 커맨드 큐에서의 커맨드와 같이 내용을 취급한다. DMA 커맨드가 응답 큐에서 만날 때에만 유일한 제한이 있고, 그것은 무효 커맨드로서 취급되어야 한다. 현재의 DMA 커맨드에 지정되어 있는 바이트수가 응답 큐로부터 판독된 후, 3D 엔진은 3D 커맨드 큐로부터 커맨드들을 다시 판독한다.
5.2.2.8 호스트 큐에 기록하기
호스트 큐에의 기록은 2D가 DMA를 거쳐서 호스트에 기록하기를 원하는 데이터를 포함하고 있다. 2D가 시스템 메모리로 내보낼 수 있는 DMA 이송을 요구한 후, 그것은 호스트 큐를 링 또는 백엔드로부터 올 수 있는 데이터로 채운다. 이 작은 버퍼가 있으면, DMA 엔진은 데이터를 이동시키는 피크 AGP 성능을 달성할 수 있다.
5.2.2.9 인터럽트 생성기
호스트와 DSGP 보드간의 통신 중 주요 부분은 인터럽트에 의해 행해진다. 인터럽트는 대개, 드물게 발생하는 작업과 예외적인 연산을 표시하는데 사용된다. 보드 상에는 두 개의 인터럽트 발생 레지스터가 있고, 이들에 의해, 호스트는 레지스터를 판독하고, 어느 인터럽트가 인터럽트를 생성하게 하는지를 판단할 수 있다. 발생 레지스터 중 하나는 리트레이스와 같은 전용 인터럽트에 배정되고, 다른 것은 커널에 의해 할당되는 상위 인터럽트에 배정된다. 이들 각각에 대해서, 레지스터를 액세스하기 위해 호스트가 판독할 수 있는 물리적 어드레스가 두 개 있다. 제1 어드레스는 폴링에 대한 것이며, 인터럽트 발생 레지스터에서의 데이터에 영향을 미치지 않는다. 제2 어드레스는 인터럽트를 제공하기 위한 것이며, 인터럽트가 판독될 때 그 인터럽트를 자동으로 클리어시킨다. 이어서, 호스트는 그 판독이 계속해서 반복하는 모든 인터럽트를 제공하는 일을 한다. 각 인터럽트 발생 레지스터에 대해서, 발생에서의 그 비트가 0?1 전이를 만들 때 소정의 인터럽트가 생성되는지의 여부를 판단하는 인터럽트 마스크 레지스터가 존재한다.
DSGP는 소정의 인터럽트에 대해 64 개의 상이한 발생을 지원한다. 그 중 일부는 고정되고, 그 중 일부는 상위이다. 각각에 대해서는 아래에서 약술된다.
5.2.2.9.1 리트레이스
리트레이스 인터럽트는 초당 약 85 내지 120회 일어나고, 모니터의 수직 귀선소거 기간 중의 일부 점에서 백엔드 하드웨어에 의해 제기된다. 정밀한 타이밍은 백엔드 입력 버스를 통해 레지스터 기록에 의해 벡엔드 유닛에 프로그램된다.
5.2.2.9.2 3D FIFO 하이 워터
3D FIFO 하이 워터 인터럽트는 파이프가 성능 모드에서 실행 중일 때에는 드물게 일어나지만, 3D 파이프가 보다 낮은 성능에서 실행 중일 때에는 자주 발생할 수 있다. 커널 모드 드라이버는 3D Cmd 버퍼에서 허용되는 엔트리수를 표시하는 3D 하이 워터 엔트리 레지스터를 프로그램한다. 이것이 버퍼 내에 있는 것보다 엔트리가 더 많을 때마다, 하이 워터 인터럽트가 발생된다. 이어서, 커널 모드는 인터럽트를 배치하는데 필요하고, 3D 버퍼를 오버플로우가 일어날 수도 있는 기록이 생기지 않게 한다. 인터럽트 핸들러에서, 커널은 파이프가 하이 워터 마크 아래로 흘러가는 것에 가까운지를 확인하도록 검사할 것이다. 만일 그렇지 않다면, 3D FIFO 하이 워터는 하이 워터 인터럽트를 디스에이블시키고 로우 워터 인터럽트를 인에이블시킨다.
5.2.2.9.3 3D FIFO 로우 워터
3D FIFO 로우 워터 인터럽트가 인에이블될 때, 3D FIFO의 엔트리수가 3D 로우 워터 엔트리 레지스터의 수보다 적다면 인터럽트가 생성된다. 이것은 프로그램이 다시 3D FIFO에 기록하기에 충분히 안전하게 3D FIFO가 클리어되어 없어진 커널에 신호를 보낸다.
5.2.2.9.4 2D 하이 워터
이것은, 2D FIFO를 감사하는 것을 제외하고, 3D FIFO 하이 워터 인터럽트에 정확히 유사하다. 2D FIFO 하이 워터 인터럽트는 파이프가 성능 모드에서 실행 중일 때에는 드물게 일어나지만, 2D 파이프가 보다 낮은 성능에서 실행 중일 때에는자주 발생할 수 있다. 커널 모드 드라이버는 2D Cmd 버퍼에서 허용되는 엔트리수를 표시하는 2D 하이 워터 엔트리 레지스터를 프로그램한다. 이것이 버퍼 내에 있는 것보다 엔트리가 더 많을 때마다, 하이 워터 인터럽트가 발생된다. 이어서, 커널 모드는 인터럽트를 배치하는데 필요하고, 2D 버퍼를 오버플로우가 일어날 수도 있는 기록이 생기지 않게 한다. 인터럽트 핸들러에서, 커널은 파이프가 하이 워터 마크 아래로 흘러가는 것에 가까운지를 확인하도록 검사할 것이다. 만일 그렇지 않다면, 2D FIFO 하이 워터는 하이 워터 인터럽트를 디스에이블시키고 로우 워터 인터럽트를 인에이블시킨다.
5.2.2.9.5 2D FIFO 로우 워터
2D FIFO 로우 워터 인터럽트가 인에이블될 때, 2D FIFO의 엔트리수가 2D 로우 워터 엔트리 레지스터의 수보다 적다면 인터럽트가 생성된다. 이것은 프로그램이 다시 2D FIFO에 기록하기에 충분히 안전하게 2D FIFO가 클리어되어 없어진 커널에 신호를 보낸다.
5.2.2.9.6 액세스 위반
이것은 현존하지 않는 레지스터에 대한 기록 또는 판독이 있을 때마다 발생되어야 한다.
5.2.2.9.7 무효 커맨드
이것은 쓰레기 커맨드가 FIFO에서 검출(가능하다면)될 때마다 또는 특권이 부여된 커맨드가 사용자 프로그램에 의해 FIFO에 기록되면, 발생되어야 한다. 커널은 이 인터럽트를 배정하고 어긋난 작업을 없앤다.
5.2.2.9.8 텍스쳐 미스
이 인터럽트는 텍스쳐 유닛이 텍스쳐 메모리 내에 적재되지 않은 소정의 텍스쳐에 액세스하려고 할 때 생성된다. 특스쳐 유닛은 링을 지나서 인터럽트 발생 레지스터에 기록을 전송하고, 링 화이트를 갖는 이 기록을 텍스쳐 미스 ID 레지스터로 진행시킨다. 커널은 인터럽트를 배정하고, 텍스쳐 미스 ID 레지스터를 판독하여, 어느 텍스쳐가 누락되어 있는지를 판단하고, 그 텍스쳐를 다운로드하기 위해 소정의 텍스쳐 DMA를 셋업하며, 그 텍스쳐 TLB를 업데이트한 다음, 그 인터럽트를 클리어시킨다.
5.2.2.9.9 상위 인터럽트
인터럽트 발생 레지스터의 인터럽트들 중 나머지는 상위이다. 상위 인터럽트들은, 완료시 그 인터럽트 수를 턴온하는 인터럽트 발생기에 메시지를 전송하는 커맨드를 전송하는 소프트웨어에 의해 발생된다. 이 모든 인터럽트는 백엔드 윤시의 하부에 도달하는 주어진 커맨드에 의해 생성되어, 2D 또는 3D 파이프라인으로부터 온다. 백엔드는 기록을 전용선을 거쳐서 인터럽트 발생 레지스터에 전송한다(그 레지스터는 동일 칩상에 있고, 따라서 링을 이용하는 것은 과도하게 없앨 수도 있다).
5.3 기하구조 블럭(GEO)
5.3.1 그래픽 파이프라인 위치
GEO 블럭은 그래픽 파이프라인의 전단에 있는 제1 계산 유닛이다. 그 블럭은 꼭지점과 노말의 변환과 같이, 주로 꼭지점당 연산을 취급한다. 전단(즉, AGI 블럭과 CFD 블럭)는 그래픽 하드웨어 커맨드를 인출하고 디코드하는 작업을 행한다. 전단은 필요한 변환 매트릭스, 재질 및 라이트 파라미터, 및 기타의 모드 셋팅을, GEO 블럭의 입력 레지스터에 적재한다. GEO 블럭은 변환된 꼭지점 좌표, 노말, 생성 및/또는 변환된 텍스쳐 좌표, 및 꼭지점당 칼라를 모드 추출 블럭과 분류 블럭에 전송한다. 모드 추출 블럭은 다각형 메모리에 「칼라」 데이터와 모드들을 기억시킨다. 분류 블럭은 타일에 의해 꼭지점당 「공간」 데이터를 구성하고 그것을 분류 메모리에 기록한다.
5.3.2 연산 모드
파이프라인은 그의 특성들로 된 임의의 서브세트만이 사용 중일 때 최대 성능 모드로 작동할 수 있다. 이 모드에서, GEO 블럭은 각 원시 요소마다 있을 수 있는 모든 연산으로 된 서브세트만을 수행한다. 보다 많은 특성이 인에이블될 때, 파이프라인은 일련의 보다 낮은 성능 모드를 통해 이동한다. 기하구조 엔진은 가용한 계산 요소를 재사용하여, 비성능 모드 셋팅에 대해 보다 저속으로 원시 요소들을 처리한다. 특성을 성능 모드에 맵핑하는 것에 대해서는 하기의 섹션에 설명되어 있다.
5.3.3 GEO 블럭의 기능적 개관
GEO 블럭은 기하구조의 원시 요소들, 즉 점, 선, 삼각형, 사각형, 및 다각형을 한정하는 꼭지점에 대해 동작한다. 그 블럭은 꼭지점당 단위로 좌표 변환과 고우러드 쉐이딩 연산을 수행한다. 그 블럭은 원시 요소 어셈블리 단계 중에만 꼭지점들을 선과 삼각형으로 함께 그룹핑한다(프로세스시, 그 블럭은 사각형과 다각형을 삼각형의 세트로 쪼개 내려간다). 그 블럭은 각 원시 요소마다 클립핑과 표면 탄젠트 생성을 수행한다.
5.3.3.1 꼭지점 좌표 변환
각 꼭지점은 대상물 좌표의 세트(Xo, Yo, Zo, Wo)에 의해 지정된다. 네 개의 좌표를 부가하면, 꼭지점은 등질의 좌표로 표현될 수 있다. 등질 시스템에서, 회전, 스케일링 및 전이를 포함하는 일련의 변환는 모델 뷰 매트릭스라고 하는 단일의 변환 매트릭스로 조합될 수 있다. 꼭지점 대상물 좌표는 그들을 아래의 4×4 모델 뷰 매트릭스로 곱함으로써 꼭지점 눈 좌표로 변환된다.
(Xe, Ye, Ze, We)T=MMV*(Xo, Yo, Zo, Wo)T
투영 매트릭스라고 하는 다른 매트릭스가 그 눈 좌표에 적용되어, 정규화된 장치 좌표를 얻는다. 최종의 뷰포트 변환이 적용되어, 이 좌표를 윈도우 좌표로 전환한다.
(Xc, Yc, Zc, Wc)T=MP*(Xe, Ye, Ze, We)T
(Xd, Yd, Zd)T=(Xc, Yc, Zc)T/Wc
(Xw, Yw, Zw)T=(Xd, Yd, Zd)T*(Sw, Sy, Sz)T+(Ox, Oy, Oz)T
전체(full) 성능 모드에서, 파이프라인은 눈 좌표를 보유할 필요는 없다. 따라서, 그것은 단일의 조합된 매트릭스를 이용해서, 꼭지점 대상물 좌표를 클립 좌표로 변환한다.
(Xc, Yc, Zc, Wc)T=MMVP*(Xo, Yo, Zo, Wo)T
도 19는 DSGP가 꼭지점 좌표를 어떻게 변환하는지를 요약 설명하고 있다.
5.3.3.2 노말, 탄젠트 및 바이노말 평가
공간 좌표에 부가하여, GEO 블럭은 각 꼭지점마다 현재의 노말, 현재의 텍스쳐 좌표, 및 현재의 칼라를 처리할 수 있어야 한다. 노말은 라이팅 계산에 영향을 미친다. 현재의 노말은 3차원 벡터(Nxo, Nyo, Nzo)이다. 텍스쳐 좌표는 소정의 텍스쳐 이미지가 소정의 원시 요소로 어떻게 맵핑되는지를 판단한다.
(Nxe, Nye, Nze)T=MMVI*(Nxo, Nyo, Nzo)T
Mmv로부터 얻은 상부의 최좌측 3×3 매트릭스를 반전하면, 매트릭스 Mvmi가 형성된다. 노말을 변환한 후, GEO 블럭은 그를 단위 길이로 재정규한다.
(Nxu, Nyu, Nzu)T=MMVI*(Nxe, Nye, Nze)T*{1/SQRT(Nxe2, Nye2, Nze2)}
범프 맵핑에 대해서, 사용자는 두 개 이상까지의 벡터, [표면] 탄젠트 및 바이노말을 제공할 수 있다. GEO 블럭은 이를 변환하고 그것이 노말을 행할 때 재정규화한다. 또한, 그것은 사용자가 그 벡터들을 공급하지 않으면, 이들 벡터를 생성할 수 있다. GEO 블럭은 텍스쳐 좌표와 꼭지점 눈 좌표, 그리고 노말과 탄젠트의 교차 곱으로부터의 바이노말을 이용하여 탄젠트를 생성한다.
GEO 블럭은 범프 맵핑에 필요한 탄젠트와 바이노말을 1/2의 속도로 생성한다.
도 20은 DSGP가 노말, 탄젠트 및 바이노말을 어떻게 변환하는지에 대해 요약 설명하고 있다. 도 21에는 기하구조 블럭(GEO)의 개관이 제공되어 있다. 도 22는 진보적인 구조의 하나의 3칩(a three-chip) 실시예에서 반도체칩 상의 기능 블럭들간의 관계들을 도시하는 도면이다.
5.3.3.3 꼭지점 칼라
라이팅이 디스에이블될 때, 현재의 칼라는 꼭지점 칼라를 판단한다. 라이팅이 인에이블될 때, GEO 블럭은 꼭지점 노말, 라이팅과 재질 파라미터를 이용하여, 꼭지점 칼라를 평가한다. 또한, 재질 칼라는 현재의 칼라로부터 옵션적으로 추출될 수 있다. 칼라는 네 개의 값, 즉 R, G, B 및 A 또는 단일 칼라 인덱스값로서 지정된다. 칼라는, 그 칼라가 GEO 블럭에서 사용되기 전에, CFD에 의해서 부동점 번호로 전환된다. 꼭지점 라이팅 평가의 종료시, 그 결과의 칼라는 0.0에서 1.0의 범위를 포함하여 표현하는 8 비트 고꼭지점으로 다시 클램프된다.
5.3.3.4 텍스쳐 좌표 프로세싱
또한, 텍스쳐 좌표는 사용자에 의해서 제공되는 대신에 꼭지점 좌표 또는 나말을 이용하여 생성될 수 있다. 변환 매트릭스는 옵션적으로 텍스쳐 좌표에 적용될 수 있다. 텍스쳐 좌표는 s, t, r 및 q로 명명된 등질의 좌표를 이용하여 지정된다. 변환 매트릭스는 4×4 매트릭스이다. 성능의 경우에 있어서, 얻어진 q는 1이고, r은 무시되며, s와 t는 텍스쳐 맵을 액세스하는데 사용된다. 감소된 성능에서, q는 투시도 스케일링에 대해서 텍스쳐 좌표를 분할하는데 사용된다. 텍스쳐 좌표 r은 3차원 텍스쳐와 쉐도우에 대해 사용된다. GEO 블럭에서는 최대 8 세트의 텍스쳐 좌표가 지원된다. 두 개의 텍스쳐 좌표는 1/2 성능으로 변환될 수 있다. 다섯 개의 텍스쳐 좌표는 최대 성능 속도의 1/3으로 취급될 수 있다. 마지막으로, 8 개의 텍스쳐 좌표 모두는 1/4 성능 속도로 생성되고 변환될 수 있다.
5.3.3.5 클리핑
GEO 블럭은 꼭지점 클립 좌표를 평면이 아웃코드를 생성하는 클립에 비교한다. 그 블럭은 이 아웃코드를 이용하여, 뷰 볼륨 외부에 있는 원시 요소들을 거절한다(예컨대, 소정의 원시 요소 내의 모든 꼭지점이 최상부의 클립핑 평면 위에 있다면, 그 원시 요소는 거절된다). 몇 개의 원시 요소들이 그 뷰 볼륨을 완전히 벗어나 있더라도, 그 원시 요소들은 사소하게 거절될 수 없다. 만일 아웃코드가, 그 원시 요소가 뷰 볼륨이 완전히 내부에 있고 어떠한 클립핑 평면과도 교차하고 있지 않음을 표시한다면, 그 원시 요소는 수용되고, 더 이상의 클립핑 계산은 필요치 않다.
사소하게 수용되거나 거절되지 않는 원시 요소들은 아웃코드가 소정의 클립 평면과 교차하는 엣지를 표시하는 사용자 정의된 클립 평면과 뷰 볼륨에 대해서 클립될 것이다. 소정의 원시 요소 중 하나의 꼭지점이 클립될 때, GEO 블럭은 하나 또는 그 이상의 새로운 꼭지점을 생성해야 한다. GEO 블럭은 이들 새로운 꼭지점들에 대한 「칼라」 데이터를 보간하지 않는다. 즉, 그 꼭지점들은 원래의 원시 요소의 꼭지점들로부터의 「칼라」 데이터를 공유한다. 이것은 동일한 칼라 포인터를 모드 추출에 의해, 최종 칼라 꼭지점에 의해서 지정되는 동일한 삼각형으로부터 생성된 클립된 모든 꼭지점에 배당함으로써 행해진다.
현재의 꼭지점과 이전의 꼭지점의 윈도우 좌표들은 다각형들의 면방향을 판단하는데 사용되고, 옵션적으로 후면 컬링을 수행한다.
5.3.3.6 라이팅
최대 성능 모드에서, 라이팅 연산은 무한히 두 개의 라이트에 대해서 행해지고, 로컬 뷰어와 스포트 라이트에 대해서는 행해지지 않는다.
고우러드 쉐이딩의 경우에는 꼭지점당 두 세트의 칼라가 평가된다. 주요 칼라(원색)는 그 칼라의 환경 성분, 방출 성분 및 확산 성분을 포함하고, 스포트라이트에 의해서 감쇄되고 하일라이트된다. 그 칼라는 적색 성분, 녹색 성분, 청색 성분 및 알파 성분(RGBA)을 갖는다. 모든 라이트와 현재의 재질 셋팅은 주요 칼라에 영향을 미친다. 보충 칼라는 꼭지점 라이팅의 반사 성분에 상응한다. 그것은 R 성분, G 성분 및 B 성분을 갖는다. 또한, 그것은 거리에 의해서 감쇄되고, 라이트가 영향을 미치는 스포트를 포함한다. 만일 분리된 반사 칼라 모드 셋팅이 온이 아니면, 주요 칼라는 그 반사 성분도 포함하고, 보충 칼라는 클리어된다(R=0, G=0, B=0).
프래그먼트 블럭은 독립적으로 주요 칼라와 보충 칼라를 보간한다. 주요 칼라는 보충 칼라가 주어진 프래그먼트에 대해서 적용되기 이전에 텍스쳐 칼라와 혼합되어, 최종 픽셀 칼라를 판단한다.
퐁 쉐이딩에 대해서, GEO 블럭은 임의의 초과 작업을 행하지 않는다. DSGP 파이프라인은 분리된 라이트에 대해서 퐁과 고우러드 쉐이딩 모두를 동시에 지원하지 않는다. 이것은 고우러드를 이용하여 총 라이트수를 상당히 증가시키고 최대 8개의 퐁 라이트를 이용하여 라이팅의 질을 높인다. 퐁은 주요 및 보충 칼라가 칼라 재질에 대해서 「현재의」 칼라로서 출력하는 GEO 블럭을 이용한다.
5.4 모드 추출 블럭(MEX)
모드 주입(MIJ) 블럭과 연계하여 모드 추출 블럭(MEX)은 그래픽 상태 관련 정보의 관리에 관한 일을 한다. 재래식 그래픽 파이프라인에 있어서, 상태 변경은 증가적이다. 즉, 상태 파라미터의 값은 그것이 변경될 때까지 유효하게 남아 있다. 따라서, 애플리케이션은 변하는 파라미터를 업데이트하지 않으면 안된다. 더욱이, 렌더링은 선형이다. 즉, 원시 요소들은 수신된 순서로 렌더링된다. 점, 선, 삼각형 스트립, 삼각형 팬, 다각형, 사각형 및 사각형 스트립은 그래픽 원시 요소들의 예이다. 따라서, 상태 변경은 소정의 원시 요소에 대한 공간 정보가 수신될 때까지 누산되고, 그들 누산된 상태는 그 원시 요소의 렌더링 중에 영향을 미치고 있다.
DSPG 파이프라인에서, 렌더링은 잠복면 제거 이후까지 지연된다. 기하구조(GEO) 블럭은 원시 요소들은 순서대로 수신하고, 모든 꼭지점 연산(변환, 꼭지점 라이팅, 클립핑, 및 원시 요소 어셈블리)을 수행하며, 그 데이터를 파이프라인으로 내려 보낸다. 분류 블럭은 시간 배열된 데이터를 수신하고, 그 데이터가 접촉하는 타일에 의해 그 데이터를 저장한다. (각 타일 내에는 리스트가 시간 순서대로 존재한다). CUL 블럭은 SRT 블럭으로부터 데이터를 타일 순서대로 수신하고, 렌더링된 이미지에 절대 영향을 미치지 않는 원시 요소들의 부분들을 추려낸다. CUL 블럭은 VSP를 생성한다. VSP는 스탬프 상에서 소정의 다각형의 가시 부분에 상응한다. TEX 유닛과 PHG 유닛은 VSP를 수신하고, 프래그먼트들을 각각 텍스쳐하고라이팅하는 일을 한다. 최종 블럭, 즉 픽셀 블럭은 VSP와 프래그먼트 칼라를 소비하여, 최종 칼라를 생성한다.
원시 요소는 많은 타일들과 접촉할 수 있고, 따라서 재래식 렌더링 파이프라인과는 달리, 프레임을 렌더링하는 과정 중에 여러 차례(그 원시 요소가 접촉하는 타일마다 한 번씩) 이용될 수 있다. 파이프라인은 원시 요소가 그 파이프라인을 만났을 때 그래픽 상태를 유효하게 재생해내야 하고, SRT로부터의 파이프라인 단계 다운스트림에 의해 이용될 때마다 그것을 재호출해야 한다. MEX는 일시적으로 배열된 상태 변경 데이터를 모아서 저장하는 기하구조 블럭과 분류 블럭간의 로직 블럭이고, 적절한 포인터를 원시 요소의 꼭지점에 붙여서, 그것이 렌더링될 때 정확한 상태를 원시 요소와 연계시킨다. 모드 주입(MIJ) 블럭은 상태와, 그것이 필요할 때 상태 포인터(본 명세서에서는 대개 MLM 포인터라고 함)와 연계된 임의의 다른 정보를 검색하는 일을 한다. 그 블럭은 또한, 정보를 적절하게 재패키징하는 일도 한다. 재패키징의 일 예는 다각형 메모리 내의 꼭지점 데이터가 검색되고 프래그먼트에 대해 삼각형 입력 패킷으로 번들될 때 발생한다.
우선, DSGP 상태 관리 후의 연산 이론 및 일반 원리에 관해 언급한다. 이어서, MEX 블럭과 그 MEX 블럭에 대한 인터페이스에 관해 언급한다. 또, 다양한 상태 포인터들과 연계된 데이터가 RDRAM 내에 어떻게 구성되는지에 관해 언급한다. 또, MEX가 필요로 하는 재패키징 또는 프로세싱에 관해 언급한다. 이어서, MEX 입력 및 출력 패킷이 이어지고, 메모리 사이즈와 대역폭 분석에 관해 간략히 언급한다.
5.4.1 상태 관리
그래픽 상태는 렌더링된 원시 요소들의 외형에 영향을 미친다. DSGP 파이프라인의 여러 개의 부분들은 여러 개의 상태 정보를 사용한다. 여기에서는, GEO 블럭으로부터의 파이프라인 단계 다운스트림에 대해서만 관련짓는다. DSGP는 그래픽 상태를, 그 상태 정보가 다양한 파이프라인 단계들에 의해서 어떻게 사용되는지를 기초로 하여, 몇 개의 카테고리고 쪼갠다. 상태를 적절히 구획하는 것이 매우 중요하다. 그 구획하는 일은 성능(대역폭과 액세스를 제한하게 되므로), 칩들의 사이즈(보다 큰 캐쉬 및/또는 로직적인 복잡함), 및 핀 카운트에 영향을 미칠 수 있다.
5.4.1.1 모드 추출 블럭 기능성
MEX 블럭은 다음과 같은 일을 한다.
1. 기하구조로부터 데이터 패킷들을 수신한다
2. 그 데이터 패킷들에 필요한 임의의 프로세싱을 수행한다
3. 파이프라인의 쉐이딩 부분이 필요로 하는 정보(나중에 MIJ에 의한 검색을 위해)를 다각형 메모리 내에 적절하게 저장한다
4. 그 MIM가 이 원시 요소과 연계된 상태를 알도록, 분류 유닛에 전송된 원시 요소들에 상태 포인터를 첨부한다
5. 분류, 셋업 및 컬이 필요로 하는 정보를 분류 블럭에 전송한다
6. 다각형과 분류 메모리 오버플로우를 취급한다
도 23에는 MEX 데이터 흐름에 관한 다른 관찰을 도시하고 있다.
다각형 메모리 내에 저장된 상태는 MIJ, 예컨대 프래그먼트, 텍스쳐, 퐁 및픽셀 블럭들로부터 다운스트림된 블럭들에 의해 사용되는 것이다. 이 상태는 본 명세서의 상세한 설명 중 다른 곳에서 설명되는 바와 같이 파티셔닝(구획분할)된다.
5.4.1.2 모드 주입 블럭
MIJ는 다음과 같은 일을 한다.
1. BeginFrame, EndFrame,및 BeginTile 등의 다양한 제어 패킷들을 프래그먼트와 픽셀 유닛들에 경로 지정한다
2. 상태를 CUL 블럭으로부터 수신된 각 VSP와 연계한다
3. 다각형 메모리로부터의 상태 패킷을 검색한다
4. 원시 요소들을 작성한다. 다각형 메모리는 꼭지점당 데이터를 기억한다. VSP의 원시 요소 종류에 따라서, MIJ는 다각형 메모리로부터 필요한 꼭지점(삼각형 원시 요소는 3, 선 원시 요소는 2, 점 원시 요소는 1)을 검색한다
5. 칼라, TexA, TexB, 라이트, 재질, PixelMode 및 스티플의 내용들의 트랙을 유지하고, 적절한 캐쉬 포인터를 캐쉬 미스 데이터 패킷에 연계한다
6. 데이터를 프래그먼트와 픽셀 블럭에 전송한다
7. 파이프라인 내의 스톨을 처리한다
따라서, 모드 주입은 VSP의 각 프래그먼트마다 최종 칼라를 계산하는데 필요한 꼭지점당 데이터와 상태의 검색을 취급한다.
5.4.1.3 그래픽 상태 파티셔닝
DSGP는 그래픽 상태를 복수 개의 부분으로 파티셔닝하고, 이하에서는 7 개의 부분으로 가정한다. 이것은 각 원시 요소마다 기억되어 있는 꼭지점당 정보에 부가되어 있다. 이 섹션은 상태 정보의 개관에 관한 것이다.
5.4.1.3.1 분류, 셋업 및 컬에 의해 필요한 상태와 공간 데이터
이것은 분류 블럭, 셋업 블럭 및 컬 블럭이 필요로 하는 상태 정보이다. 다각형 메모리에는 이것이 저장되어 있지 않다. 이 정보는 세 개의 패킷, 즉 CullMode 패킷, VertexMode 패킷 및 공간 패킷으로서 수신된다. 이들 패킷은 SRT로 향하고, 기하구조 유닛으로부터 온다. 컬 패킷 내의 정보는 표적 작도 버퍼와, CUL 블럭이 필요로 하는 제어 비트를 포함한다.
VertexMode 패킷은 호스트 컴퓨터에 의해 생성된 모드 정보(즉, 소프트웨어)를 포함하고 있다. MEX는 그 정보를, 그것이 분류 블럭으로 통과되기 이전에 각 공간 패킷에 첨부한다. VertexMode 패킷에는 선폭, 점크기, 선 스티플 정보 및 깊이 테스트 연산 제어 비트가 포함되어 있다.
공간 패킷은 꼭지점의 윈도우 좌표와, 기하구조 블럭이 필요로 하는 다른 꼭지점당 정보, 예컨대 선 원시 요소들의 스티플 패턴에 대한 개시 비트를 포함하고 있다. 공간 패킷에는 꼭지점의 윈도우 좌표, 다각형 와인딩, 다각형 팬과 스트립에서의 꼭지점 재사용, 엣지 플래그, 및 블렌딩 연산 제어 비트(예컨대, 알파 테스트와 알파 블렌딩)가 포함되어 있다. 꼭지점 모드는 소프트웨어에 의해서 생성된다.
기하구조 블럭은 소프트웨어로부터 컬 모드와 꼭지점 모드를 수신한다. 그 블럭은 전술한 바와 같이 컬 모드와 꼭지점 모드를 MEX로 전송한다. MEX는 꼭지점 모드를 공간 패킷에 첨부함으로써 분류를 위해 공간 패킷을 작성한다. 또한, MEX 블럭은 상태 MLM 포인터를 이 패킷에 첨부한 후에, 그것을 분류 블럭에 통과시킨다. 더욱이, 원시 요소는 동시에 점이기도 하고 선이기도 할 수 없기 때문에, MEX 블럭은 선폭 파라미터와 점폭 파라미터를 하나의 파라미터로 붕괴한다. 그것은 분류 원시 요소 형태를 이용하여, 그 원시 요소가 점, 선 또는 다각형인지를 판단한다. 만일 원시 요소가 점이면, 그것은 그 점폭을 분류로 내려 보내고, 그렇지 않으면 그것은 선폭을 전송한다. 다른 필드들은 접촉하지 않은 채 놔둔다.
5.4.1.3.2 텍스쳐 파라미터
텍스쳐링은 많은 파라미터를 갖기 때문에, 특히 복수 개의 텍스쳐가 포함되어 있는 경우에는, 텍스쳐 패킷들이 복수 개 있는 것이 유리하다. 이하에서는, 텍스쳐 파라미터 패킷이 두 개(소위 TexA와 TexB) 있다고 가정하지만, 파라미터는 부가의 패킷들로 더 분할될 수 있다. 텍스쳐 파라미터 패킷은 텍셀(texel)을 검색하고 필터링하는데 필요한 정보를 포함하고 있다. 본 명세서에서는 각 꼭지점에 배당되는 있을 수 있는 텍스쳐가 8개 라고 가정한다. TexA 파라미터 패킷은 제1의 두 텍스쳐에 대한 파라미터들을 포함하고 있고, TexB 파라미터 패킷은 최대 6개의 부가 텍스쳐에 대한 동일 (꼭지점당) 정보를 포함하고 있다. 대부분의 경우에는 한 번에 한 개 또는 두 개의 텍스쳐만이 액티브할 것이기 때문에, 이러한 대칭적 구획 분할이 선택된다. 일부 드문 경우에는 두 개 이상의 텍스쳐가 사용될 수도 있다. 이것은 텍스쳐 파라미터 캐쉬 온칩의 사이즈를 작게 유지하는데 도움이 된다. TexA 패킷과 TexB 패킷은 기하구조 유닛으로부터 수신된다. 텍스쳐당 정보에는 텍스쳐 ID, 텍스쳐 디멘젼의 수(즉, 1D, 2D 또는 3D), 텍스쳐 사이즈(즉, 폭, 높이 및 깊이), 텍스쳐 보더 정보, 텍스쳐 포맷, 텍스쳐 필터 제어 비트, 텍스쳐 포장 제어비트, 텍스쳐 클램핑 제어 비트, 세부 제어 비트의 레벨, 및 텍스쳐 비교 연산 제어 비트가 포함되어 있다.
또 다시, TexA 패킷은 이들 엔트리들 중 하나 또는 두 개를 포함하고 있고, TexB 패킷은 최대 6 개의 엔트리를 포함할 수 있다. TexA 패킷과 TexB 패킷은 소프트웨어에 의해서 생성되고, GEO 블럭을 거쳐서 MEX에 전송된다. MEX는 TexA와 TexB를 두 개의 상태 구역(파티션)으로서 관리하고 그들을 다각형 메모리에 저장한다. 각 TexA와 TexB 상태 구역은 그와 연계된 포인터를 갖는다. 모드 주입 블럭은 나중에 필요할 때 이들 패킷을 검색한다. 기하구조 블럭은 이 정보의 어느 것도 이용하지 않는다.
텍스쳐 id, 그의 (s, t, r) 좌표, 및 밉프맵 레벨이 주어지면, 텍스쳐 블럭은 그 텍셜을 검색하고, 필요할 때 그 텍셀 데이터를 언팩킹하고 필터링하는 일을 한다. 프래그먼트 블럭은 텍스쳐 id, s, t, r, 밉프 레벨 및 텍스쳐 모드 정보를 텍스쳐 블럭에 전송한다. 프래그먼트로부터 오는 s, t, r, 및 밉프 레벨은 부동점 값임에 주의한다. 각 텍스쳐마다, TEX 블럭은 하나의 36 비트 텍셀값을 PHG로 출력한다. 텍스쳐 블럭은 프래그먼트 칼라와 텍스쳐 칼라를 조합하지 않는다. 그것은 퐁 블럭에서 발생한다. 텍스쳐 블럭은 텍스쳐 파라미터와 텍스쳐 좌표를 필요로 한다. 텍스쳐 파라미터는 텍스쳐 블러 내의 두 개의 텍스쳐 파라미터 캐쉬로부터 얻는다. 프래그먼트 블럭은 밉프 레벨 계산시 텍스쳐 폭 파라미터와 텍스쳐 높이 파라미터를 이용한다. 프래그먼트는 TextureDimension 필드를 이용하여, 텍스쳐 디멘젼과, 인에이블된다면(0은 텍스쳐가 디스에이블되는 것을 의미한다) 소정의 좌표와연계하는 TexCoordSet이 그것으로 설정되는 지를 판단한다.
5.4.1.3.3 라이팅 파라미터
상태의 「라이팅」 구역은 프래그먼트 라이팅 계산에 이용되는 복수 개의 라이트(이하, 본 명세서에서는 라이트가 최대 8 개라고 가정한다)에 대한 정보, 및 포그 파라미터 등의 소정의 프래그먼트의 라이팅에 영향을 미치는 글로벌 상태를 포함하고 있다. 라이트 캐쉬 패킷은 다음의 라이트당 정보, 즉 라이트 형태, 감쇄 상수, 스포트라이트 파라미터, 라이트 위치 정보, 및 라이트 칼라 정보(환경 칼라, 확산 칼라 및 반사 칼라 포함)를 포함한다. 또한, 라이트 캐쉬 패킷은 다름의 글로벌 라이팅 정보, 즉 글로벌 환경 라이팅, 포그 파라미터, 및 사용 중인 라이트의 수를 포함한다.
라이트 캐쉬 엔트리는 약 300 바이트이다(8 개의 라이트의 각 라이트당 대략 300 비트 더하기 글로벌 라이트 모드의 120 비트). LightCache 패킷은 소프트웨어에 의해서 생성되고, GEO 블럭을 거쳐서 MEX에 전송된다. MEX는 LightCache 패킷을 상태 구역들 중 하나로서 관리하고, 그것을 필요할 때 다각형 메모리에 저장한다. LightCache 상태 구역은 그와 연계되어 있는 포인터를 갖는다. 모드 주입 블럭은 나중에 필요할 때 다각형 메모리로부터 이 패킷을 검색한다. 기하구조 블럭은 이 정보를 전혀 이용하지 않는다.
라이팅 상태를 캐쉬하는 다른 방법으로서, 전체 라이팅 상태를 캐쉬하기 보다 라이트당 캐쉬 엔트리가 사용될 수 있다. 이에 의해, 라이트 파라미터 캐쉬 미시가 있을 때, 보다 적은 데이터가 파이프라인으로 전송될 수 있다. 따라서, 애플리케이션 프로그램에는, 단일 라이트가 변경될 때, 라이팅 파라미터들의 「라이터(lighter) 가중치」 스위칭이 제공될 것이다. 그러나, 이것은 라이팅 상태의 관리에 있어서 부가적인 복잡함을 필요로 한다.
5.4.1.3.4 프래그먼트 재질 파라미터
그래픽 상태의 재질 구역(파티션)은 프래그먼트 라이팅 계산에 사용되는 재질에 관한 모든 정보를 포함하고 있다. 프래그먼트 재질 상태는 소정의 원시 요소의 꼭지점에 첨부된 재질 상태와는 다름을 주의한다. GEO 블럭에서 수행되는 꼭지점 라이팅 계산 중에는 프래그먼트 재질 상태 정보가 사용되지 않는다. 이 패킷에는 텍스쳐 인에이블 제어 비트(액티브 텍스쳐의 선택), 텍스쳐 환경 파라미터, 재질 칼라 파라미터[방출 칼라, 환경 칼라, 확산 칼라, 반사 칼라 및 빛나는 정도], 빛나는 정도 컷오프값, 및 칼라 재질 파라미터가 포함되어 있다.
텍스쳐는 최대 8개가 있을 수 있기 때문에, 각 프래그먼트마다 최대 8 개의 텍셀이 TEX로부터의 PHG에 의해 수신될 수 있다. 텍셀은 재질 상태 패킷 내의 텍스쳐 엔트리와 같은 순서로 수신된다.
5.4.1.3.5 픽셀 모드
픽셀 모드는 PIX 블럭에서의 프래그먼트당 연산에 영향을 미친다. 소프트웨어는 픽셀 모드 패킷을 생성하고, 그것은 GEO를 거쳐서 MEX로 전송된다. MEX는 다각형 메모리에 패킷을 저장한다. MIJ는 패킷을 검색하고, 그것을 PIX 블럭으로 전송한다. 픽셀 모드는 다음의 정보, 즉 프레임 버퍼 기록 마스크(깊이 마스크, 칼라 마스크 및 스텐실 마스크), 블렌딩 연산, 깊이 기능, 스텐실 기능 및 시저 연산을포함하고 있다.
이 패킷 내의 일부 정보는 SRT로 향하는 VertexModes 내에 포함되어 있는ㄴ 것과 동일하다. 소프트웨어는 다양한 모드 패킷에 필요한 상태 정보를 복제하는 일을 한다.
5.4.1.3.6 스티플
스티플 패킷은 다각형 스티플 패턴을 지정한다. 스티플 패턴은 자주 사용되지 않고 또 사용될 때에도 자주 변경되지 않기 때문에 독립적으로 캐쉬되는 것이 효율적이다. 이것은 바이트의 수가 상당히 많다(32×32 비트 패턴에 필요하기 때문에 대개 128 바이트). 따라서, 그것을 임의의 다른 파라미터 캐쉬에 포함시키는 것은 관련된 패킷에 상당한 부가 오버헤드를 부가할 것이다.
5.4.1.3.7 프래그먼트-텍스쳐-퐁 블럭들에 대한 꼭지점당 데이터
각 VSP마다, 프래그먼트 블럭은 공급된 꼭지점당 데이터를 보간하고, 프래그먼트 블럭으로부터 다운스트림된 블럭들에 필요한 정보를 생성한다. 보간된 파라미터들은 VSP에 첨부된 상태 포인터에 따라서 있을 수 있는 파라미터의 일부 또는 전부로 구성될 수 있다. 파라미터수의 가변성을 고려하기 위해, 다각형 메모리에 기억되어 있는 패킷 사이즈는 특정 꼭지점에 사용되는 파라미터의 수와 종류에 따라 가변된다. 이들 파라미터에는 원시 요소 타입, 다각형 팬과 스트립을 구축하는 꼭지점 재사용, 클립되지 않은 x, y 및 1/w 값, 꼭지점 눈 좌표(x, y, x), 역 투시도 항, 꼭지점의 주요 칼라 및 보충 칼라, 꼭지점 노말 벡터, 탄젠트 벡터, 바이노말 벡터, 및 최대 8 개의 텍스쳐 좌표 세트가 포함되어 있다. 노말 벡터, 탄젠트벡터 및 바이노말 벡터는 각각 단일 벡터 또는 유닛 벡터 중 어느 하나(즉, 벡터의 방향)와 그에 상응하는 크기로서 표현될 수 있다.
보간된 원시 요소 파라미터(예컨대, 노말, 텍스쳐 좌표 등)는 원시 요소가 디스플레이 스크린에 클립되더라도 원시 요소의 원래 꼭지점 파라미터들로부터 생성될 수 있기 때문에, 클립되지 않은 꼭지점 x, y 및 1/w 값은 특히 유용하다. 따라서, 소정의 원시 요소가 클립될 때, 모든 원시 요소들을 스크린 상에 유지하기 위해서 새 꼭지점이 생성된다. 이것은 대개, 모든 꼭지점 파라미터가 (디스플레이 스크린 엣지를 따라서) 이들 새 꼭지점 위치에서 보간되어야 함을 필요로 할 것이고, 이는 연산의 값비싼 세트이다. 클립 생성된 꼭지점에서의 이들 파라미터의 보간은, 클립된 값들을 분류 메모리에 기억(즉, 공간 x, y 및 z값)시키고 클립되지 않은 꼭지점 파라미터들을 다각형 메모리에 기억시킴으로써, 회피된다. 따라서, 분류 메모리 내의 원시 요소들과 다각형 메모리 내의 원시 요소들간에는 다대1(多對一)의 관계가 존재한다.
노말 벡터, 탄젠트 벡터 및 바이노말 벡터를 독립된 방향과 크기로 분리하면, 방향을 크기와는 독립적으로 보간하기 용이하게 된다. 방향을 크기와는 독립적으로 보간하는 것은, 특히 원래의 벡터(즉, 꼭지점에서의 벡터)의 크기가 큰 인자에 의해 다를 때, 보다 진정한 각도 보간을 제공한다.
GEO 블럭은 다각형 메모리 내에 기억되어 있는 꼭지점당 정보를 생성한다. MIJ 블럭은 VSP를 포함하는 원시 요소를 재작성하기 위해 다각형 메모리로부터 필요한 상태와 꼭지점을 검색하는 일을 한다.
삼각형 꼭지점 텍스쳐 좌표는 프래그먼트 유닛에는 전송되지만 텍스쳐 유닛에는 전송되지 않음에 주의한다. 텍스쳐 유닛은 프래그먼트 블럭으로부터의 각 프래그먼트마다, 보간되고 투시도 정정된 텍스쳐 좌표를 수신한다.
5.4.2 MEX 블럭의 기능 상세
5.4.2.1 MEX 블럭의 기능적 개관
MEX가 달성해야 하는 것이 무엇이고 또 그것을 어떻게 행하는지를 이해하기 위해, 도 24에 도시되어 있는 예를 고려해본다.
MEX는 GEO로부터 패킷의 순열을 수신한다. 각 원시 요소마다, 우선, MEX는 관계된 상태 패킷을 수신하고, 이어서 기하구조 패킷을 수신한다. (칼라 꼭지점 정보는 분류 꼭지점 정보 이전에 수신된다.) 분류 꼭지점 데이터는 클립된 원도우 좌표 등의, 원시 요소들을 분류하고 추려내는데 필요한 정보로 구성되어 있다. VtxMode 패킷은 깊이 테스트 등에 관한 정보를 포함하고 있다. CullMode 패킷, VtxMode 패킷 및 분류 꼭지점 패킷의 정보는 파이프라인의 분류-셋업-컬 부분으로 전송된다. 「칼라」 꼭지점 데이터는 꼭지점 눈 좌표, 꼭지점 노말, 텍스쳐 좌표 등의, 원시 요소 프래그먼트를 라이팅하고 텍스쳐링하는데 필요한 정보로 구성되어 있고, 나중에 검색될 다각형 메모리에 저장된다.
파이프라인의 분류-셋업-컬 부분은 원시 요소들을 VSP로 전환한다. 이어서, 이들 VSP는 텍스쳐되고, 파이프라인의 프래그먼트-텍스쳐-퐁 부분에 의해 라이팅된다. 컬 블럭에서 MIJ 블럭으로 출력되는 VSP는 원시 요소들에 의해 반드시 배열되지는 않는다. 대부분의 경우에 있어서, 그들은 타일 상에서 VSP 주사 순으로 되어있을 것이다. 즉, 상이한 원시 요소들에 대한 VSP들이 인터리브될 것이다. 명백하게, 파이프라인의 프래그먼트-텍스쳐-퐁 부분은 특정 VSP가 어느 원시 요소에 속하는지, 그리고 그 원시 요소가 도입되었을 때의 그래픽 상태를 알 필요가 있다. MEX는 「칼라 포인터」를 각 분류 꼭지점과 연계시킨다(이어서, 이것은 이 원시 요소에서의 각 VSP로 통과된다). MIJ는 그 포인터를 디코드하고, 다각형 메모리로부터 필요한 정보를 검색한다.
따라서, MEX는 최종 상태 저장 이후에 생긴 임의의 상태 변경을 누적해야 한다. 그 상태 변경은 소정의 꼭지점을 만나는 즉시, 효과를 내게 된다. MEX는 칩 상에 상태 벡터를 유지한다. 이 상태 벡터는 도 25에 도시된 바와 같이 10 개의 구역을 갖는다. MEX는 그 상태 벡터를 기억하기 위해 거의 1170 바이트의 온칩 메모리를 필요로 한다.
VertexMode는 MEX의 레지스터에 유지되어 있고, 파이프라인의 분류-셋업-컬 부분으로 통과된 꼭지점에 추가된다. CullMode는 Mex2SrtCullModePkt로서 분류에 전송된다. 따라서, 컬 모드는 다각형 메모리에 저장되지 않아 포인터를 필요로 한지 않으므로, 10 개의 오점(dirty) 비트와 9 개의 모드 포인터가 있다. MEX가 GEO 블럭으로부터 상태 구역에 상응하는 입력 패킷을 수신한다. MEX가 칼라 꼭지점을 수신할 때, MEX는 그 오염 비트를 조사하여, 상태의 임의의 부분이 최종 저장 이후에 업데이트되었는지를 확인한다. 업데이트되었고 현재 원시 요소의 렌더링과 관계 있는 모든 상태 구역은 다각형 메모리와 업데이트된 그들의 포인터에 저장된다. 또한, 그들의 오염 비트는 클리어된다. 오염 비트는 다각형 메모리에 저장되어 있는원시 요소들에 대해서만 클리어될 뿐임에 주의한다. TextureA, TextureB 및 재질 중 어느 것이 다각형 메모리에 저장되는가는 원시 요소의 「면」과 오염 비트에 달려 있다. 이것은 도 26에서 도식적으로 약도되어 있다.
MEX는 MLM 포인터라고 하는 합성 포인터를 작성한다. MLM 포인터는 적용 가능한 TextureA, TextureB, 재질, 라이트, 스티플 및 PixelMode의 최종 저장된 위치에 대한 포인터를 포함하고 있다.
클리어 패킷은 유사하게 처리됨에 주의한다. 클리어 패킷이 수신될 때, MEX는 SendToPixel 플래그를 조사한다. 만일 SendToPixel 플래그가 세트되어 있다면, MEX는 PixelMode가 오염되어 있는지를 알아보기 위해 검사한다. 만일 PixelMode 오염 비트가 세트되어 있다면, MEX는 PixMode를 다각형 메모리에 저장하고, PixModePtr을 업데이트하며, PixelMode 오염 비트를 클리어하고, 새 MLM 포인터를 생성하며, 그 포인터를 분류 블럭으로 통과시키기 이전에 그 포인터를 클리어 패킷에 첨부한다.
5.4.2.2 입력 패킷 프로세싱
모드 추출 블럭에서 각 입력 패킷에 대해 기하구조 블럭으로부터 취해진 동작은 여러 도면에 도시되어 있다. 본 출원인은 「메쉬」를 이용하여, 상태의 변경에 이어지는 점의 새 순열을 표시함에 주의한다. 따라서, 「메쉬」는 점, 선 스트립, 선 세그먼트 또는 삼각형 리스트 또는 팬의 순열이다.
5.4.2.3 다각형 메모리 관리
다각형 메모리는 듀얼옥트(dualoct)로서 보일 수 있다. 원시 요소 데이터는메모리 더미의 상부에서부터 기입되고, 모드 데이터는 그 힙의 하부에서부터 기입된다. 도 24의 예에 대해서, 다각형 메모리 레이아웃은 도 27과 같은 것을 들 수 있을 것이다.
주의해야 할 몇 가지는 다음과 같다.
1. 상태 벡터의 구역들은 다각형 메모리에 나태하게 저장한다. 필요한 것을 저장할 뿐이다.
2. 상태 벡터들은 디폴트 리셋이 없다. 드라이버/소프트웨어가 하는 일은 모든 상태가 적절하게 개시되었는지를 확인하는 것이다.
3. 소정의 메쉬의 모든 꼭지점은 사이즈가 동일하다.
4. 칼라 오프셋은 8 비트이고, 따라서 소정의 메쉬에서 꼭지점은 많아야 256개 이다.
5. MEX는 현재의 vertexPointer, vertexCount와, 원시 요소를 완료하는데 필요한 이전의 (최대) 두 개의 꼭지점을 유지한다. 또한, MEX는 modePointer도 유지한다.
vertexPointer는 다각형 메모리의 현재 꼭지점 엔트리에 대한 포인터이다. VertexCount는 최종 상태 변경 이후에 다각형 메모리에 저장된 꼭지점의 수이다. VertexCount는 ColorOffset에 배당된다. 분류 원시 요소의 경우, VertexPointer는 colorPointer에 배당된다. 메모리 오버플로우를 취급하고 있는 동안에는 이전의 꼭지점이 사용된다. MIJ는 colorPointer, ColorOffset, 꼭지점 사이즈 정보(GEO로부터 수신된 ColorType에서 엔코드됨)를 이용하여, 다각형 메모리로부터 MLM 포인터와 원시 요소 꼭지점을 검색한다.
5.4.2.3.1 메모리 이중 버퍼링과 오버플로우
일부 드문 경우에 있어서, 다각형 메모리가 오버플로우할 수 있다. 다각형 메모리 및/또는 분류 메모리는 단일 사용자 프레임이 너무 많은 정보를 포함하고 있는 경우에 오버플로우할 것이다. 오버플로우 점은 다각형 메모리의 사이즈, 즉, 프레임 내의 재질 변경, 모드 변경, 텍스쳐 변경, 및 라이트 변경의 빈도수와, 사용된 원시 요소들의 특성에 달려 있다. 메모리가 가득 차면, 모든 원시 요소은 파이프를 넘칠 것이고, 다각형 메모리 버퍼게 또 다른 기입이 있는 경우에는 사용자 프레임이 종료될 것이다. 분류 메모리 오버플로우는 동일한 오버플로우 메카니즘을 발생할 것임에 주의한다. 다각형 메모리 버퍼와 분류 메모리 버퍼는 일관되게 유지되어야 한다. 다른 메모리에서의 오버플로우로 인해 하나의 메모리에 어떠한 스키드(skid)이든 배제된다(또는, 더 좋게는, 회피된다). 따라서, MEX에서, 오버플로우로 인한 프레임 브레이크는 분류 메모리 오버플로우가 발생한 분류로부터의 신호 때문이거나 MEX 그 자체 내의 메모리 오버플로우 때문에 생길 수 있다. MEX 내의 분류 메모리 오버플로우 신호는 MEX 다각형 메모리 그 자체 내의 오버플로우와 같은 방식으로 취급된다.
다각형 메모리 오버플로우는 상당히 고가일 수 있음에 주의한다. 분류 메모리와 같은 다각형 메모리는 이중 버퍼된다. 따라서, MIJ가 다른 버퍼로부터 판독되고 있는 동안, MEX는 하나의 버퍼에 기록될 것이다. 이러한 상황은 프레임의 프로세싱시에 지연을 초래할 것이다. 그 이유는, MEX는 MIJ가 프레임과 작업하기를 기다렸다가 다음 (제3) 프레임으로 이동할 필요가 있기 때문이다. MEX와 SRT는 알맞게 잘 동기화된다. 그러나, 컬은, 그 MEX가 함께 작업하는 프레임을 MIJ가 판독하기 시작하기 이전에, 데이터의 한 타일 분량을 처리했어야 할 필요가 있다. 따라서, 각 프레임마다, 이 가능한 지연 또는 스톨이 존재한다. 메모리 오버플로우가 있는 경우, 이러한 상황은 상당히 악화될 수 있다. 통상의 오버플로우 상황에서, 제1 프레임은 데이터를 많이 갖기 쉽고, 제2 프레임은 데이터를 매우 적게 갖기 쉽다. MEX가 순열 내의 다음 프레임을 처리하기 시작하기 이전에 와해된 시간은, 「전체 프레임에 대한 MEX가 소요하는 시간 + CUL 타일 잠재 + 전체 프레임에 대한 MIJ 프레임 프로세싱」이고, 「전체 프레임에 대한 MEX가 소용하는 시간 + 오버플로우 프레임에 대한 MEX가 소요하는 시간」이 아니다. 와해 시간은 정상 프레임에 대한 시간의 거의 두 배임에 주의한다. 이러한 비용을 절감하는 유일한 방법은 소프트웨어가 장면 사이즈를 산정해서, 그 프레임을 대략 동등한 두 개의 콤플렉스 프레임으로 쪼개는 것이다. 그 외에, 꼭 필요할 때에만 오버플로우를 생성하는 정책을 하드웨어로 구성할 수 있다.
모드 추출은 오버플로우를 초래한 삼각형(및 그의 상태)을 다음 버퍼에 기억할 필요가 있다. 꼭지점 리스트의 어느 곳에 있는가에 따라서, 현재 버퍼에 이미 기록되어 있는 꼭지점들을 다음 버퍼에 전송할 필요가 있을 수 있다. 이것은 꼭지점을 다시 판독하거나 두 개의 꼭지점을 MEX 주위에 유지함으로써 행해질 수 있다. 선은 하나의 선행 꼭지점만을 필요로 하고 점은 다른 꼭지점과 쌍을 이루지 않을 것이라는 것에 주의한다. DoColorVertex 코드 인(code in)은 이러한 요구 조건을감안한다. 또한, 오버플로우도 취급된다. 완료시, MIJ는 소정의 신호를 MEX에 전송한다. MEX와 분류가 완료된 후에만 셋업과 컬이 소정의 타일에 관한 원시 요소들을 처리하기 시작할 수 있기 때문에, MIJ는 VSP가 도달하기 시작하기를 스톨 대기할 수 있다.
5.4.2.4 칼라 포인터 생성
MEX는 모든 원시 요소 꼭지점이 분류로 전송한 「colorPointer」, 「colorOffset」 및 「colorType」을 첨부한다. 「colorPointer」는 다각형 메모리 내의 꼭지점 엔트리를 지시한다. 이 꼭지점 엔트리는 분류 원시 요소가 연계되어 있는 삼각형(선 또는 점)을 완료하는 꼭지점이다. 전술한 예(도 27 참조)에서, 꼭지점(V3)은 ΔV1VaVb와 ΔV1VbV2가 연계되어 있는 DV1V2V3을 완성하므로, 분류 꼭지점(Va, Vb, V2)에는 모두 칼라 꼭지점(V3)에 상응하는 칼라 포인터가 배정된다. ΔV1V2V3의 꼭지점 파라미터, 즉 노말, 칼라, 텍스쳐 좌표 등은 ΔV1VaVb와 ΔV1VbV2에 대해 생성되는 VSP 내의 프래그먼트들을 라이팅하고 텍스쳐링하는데 사용된다.
「colorOffset」는 원시 요소에 적용할 수 있는 MLM 포인터를 기억하는데 사용되는 듀얼옥트로 그 colorPointer의 꼭지점을 분리하는 꼭지점의 수이다. 전술한 예에서 다시, Va, Vb및 V2와 연계되어 있는 칼라 오프셋은 st0 및 cv3, 즉 3을 분리하는 꼭지점들의 수이다. colorOffset는 MIJ가 MLM 포인터(MLM 포인터 = colorPointer - colorOffset * vertexSize -1)을 검색하게 돕고, 그것은 이어서 Light, TexA, TexB, Material, PixMode, 및 스티플 포인터를 검색하도록 디코드된다. 이것은 다각형 메모리 내의 메쉬의 최대 꼭지점수를 256 개로 제한함에 주의한다. (colorOffset는 양의 8 비트 정수이고, 따라서 값은 0 내지 255이다. 즉, colorPointer의 최종 꼭지점을 더하면, 최대 256 개의 꼭지점을 얻는다.)
「colorType」은 다각형으로부터 완성된 원시 요소를 검색하는 방법에 관한 것이다. 꼭지점들은 순서대로 기억되고, 따라서 소정의 원시 요소의 꼭지점들은 삼각형 팬의 경우를 제외하고 인접해 있다. 점의 경우에는 colorPointer에 의해 지시되는 꼭지점을 필요로 할 뿐이다. 선의 경우에는 ColorPointer에 의해 지시되는 꼭지점과, 칼라 꼭지점 어레이 내에 있는 이것 이전의 꼭지점을 필요로 한다. 삼각형 팬의 경우에는 colorPointer에서의 꼭지점, 그것 이전의 꼭지점, 및 MLM 포인터 이후 어레이 내의 제1 꼭지점을 필요로 한다. 전술한 예에서, 꼭지점(V8)에 의해 정의되는 분류 원시 요소는 꼭지점(V5, V7및 V8)을 검색할 필요가 있을 것이다. 따라서, 삼각형 팬의 경우, 그 삼각형에 대한 세 개의 꼭지점은 ColorPointer, (ColorPointer - 1), 및 (ColorPointer - ColorOffset)에 있다.
도 28에는 「칼라」 정보에 사용되는 비트들이 도시되어 있다.
칼라 종류 필드는 vertexType으로부터 입력 패킷 헤드와 꼭지점 패킷 길이 내에 구성된다. 그 필드는 패킷의 사이즈와, 그것이 속해 있는 원시 요소의 타입을 지정한다. 칼라 종류 필드의 값들은 도 29에 리스트로 되어 있다.
도 30은 점 리스트, 선 스트립, 삼각형 스트립, 또는 삼각형 팬의 리스트의 제1 듀얼옥트 내에 기억되어 있는 MLM 포인터 패킷의 내용을 도시하고 있다.
5.4.2.5 상태의 프로세싱
대체로, MEX는 자신이 수신하는 대부분의 패킷의 내용을 알 필요가 없다. 타입과 사이즈를 알기만 하면 된다. 이러한 규칙에는 몇 가지 예외가 있다.
「칼라」 꼭지점 패킷의 경우, MEX는 현재 꼭지점에 의해 정의되는 원시 요소에 관한 정보를 알 필요가 있다. 특히, MEX는 그의 타입과, 삼각형인지, 즉 전면(前面))이 접하고 있는지를 알 필요가 있다. 이 정보는 오버플로우의 경우에 원시 요소를 작성할 수 있수 있게 칩 상에 적절한 꼭지점 엔트리들을 저장할 때 사용된다. 이 정보는 기하구조 블럭에 의해 패킷 헤더 내에 캡슐화된다.
MEX는 삼각형의 전면과 후면 모두에 대한 재질과 텍스쳐 데이터를 누적한다. 다각형 메모리에는 「FrontFace」 비트를 기초로 하여 하나의 상태 세트만이 기록된다. 전방/후방 배열은 삼각형 스트립 또는 팬 내에서 변하지 않음에 주의한다. FrontFace는 올바른 TextureA 파라미터, TextureB 파라미터 및 재질 대상물을 원시 요소와 연계시키는데 사용된다. 만일 메쉬가 중앙의 배열을 변경시키면, GEO는 각각의 새로운 메쉬가 전면 또는 후면으로 되도록 그것을 두 개 또는 그 이상의 메쉬로 쪼갠다.
마찬가지로, CullMode의 경우, MEX는 원시 요소의 종류에 따라서 LineWidth 속성과 PointWidth 속성 중 하나로부터 스트립을 벗겨낼 수 있어야 한다. 만일 꼭지점이 점을 정의하면 LineWidth가 버려지고, 만일 꼭지점이 선을 정의하면 PointWidth가 버려진다. MEX는 선폭 또는 점폭 중 어느 하나만을 분류 유닛에 통과시킨다.
「클리어」 패킷의 경우에, MEX는 SendToPixel 플래그가 세트되어 있는지의 여부를 검사한다. 만일 이 플래그가 세트되어 있다면, MEX는 PixelMode를 (필요하다면) 저장하고, 적절한 ColorPointer를 생성하여 그 출력 클리어 패킷에 첨부한다.
5.5 분류 블럭(SRT)
5.5.1 SRT 블럭의 기능적 개관
분류 블럭은 모드 추출(MEX)과 셋업(STP) 사이의 파이프라인 내에 배치되어 있다. 분류 블럭의 주요 기능은 디스플레이 윈도우 주변에 산란된 기하구조를 취하여 그것을 타일들로 분류하는 것이다. 분류 블럭은 분류 메모리를 관리하고, 분류 메모리는 전체 장면에 대한 모든 기하구조가 라스터화되기 이전에 적은 량의 모드 정보와 함께 그 모든 기하구조를 기억한다. 분류 메모리는 꼭지점과 모드의 이중 버퍼된 리스트이다. 한 쪽 페이지는 소정의 장면의 기하구조를 (꼭지점마다 그리고 모드마다) 담고 있고, 다른 쪽 페이지는 그의 기하구조를 파이프라인의 나머지에 (원시 요소마다 그리고 모드마다) 전송한다.
챕터 「아키텍쳐의 개관」에서 설명한 바와 같이, 윈도우는 타일의 세트로 수평 및 수직 분할되고, 분류는 각 타일마다 배열된 리스트를 유지한다. 분류 메모리의 한 페이지가 기록될 때, 꼭지점과 모드는 그들이 분류 블럭에 의해 수신되는 순서대로 분류 메모리에 기록된다. 분류 메모리의 한 페이지가 판독될 때, 타일당을 기준으로 행해진다. 판독 프로세스는 두 가지 모드, 즉 시간 순서 모드와 분류된 투명성 모드로 동작한다. 시간 순서 모드에 있어서, 꼭지점와 모드의 시간 순서는 각 타일 내에서 보존된다. 즉, 주어진 타일에 대해서, 꼭지점과 모드는 그들이 기록되어 있는 것과 동일한 순서로 판독된다. 분류된 투명성 모드에 있어서, 각 타일의 판독은 복수 개의 통로로 분할된다. 제1 경로에 있어서, 보증된 불명료 기하구조가 분류 블럭으로부터 출력되고, 후속의 통로에 있어서, 잠재적으로 투명한 기하구조가 분류 블럭으로부터 출력된다. 각 통로 내에서, 시간 배열은 보존되고, 모드 데이터는 그의 정확한 시간 순서 위치에 삽입된다.
분류 블럭의 입력에서, 프레임의 개시는 MEX 출력 개시 프레임 패킷의 수신에 의해 지명되고, 항상 사용자 프레임의 시작에 상응한다(즉, 애플리케이션은 새 화상을 작도하기 시작한다.) 이들 개시 프레임 패킷들은 분류 메모리 페이지들이 스왑프될 때 파이프라인으로의 분류에서 셋업으로 통과된다. 소정의 프레임의 단부는 MEX 출력 엔드 프레임 패킷의 수신에 의해 지명되지만, 만일 메모리 오버플로우가 발생하지 않았고 소프트웨어가 사용자 프레임을 분할하려고 하지 않았다면, 그 사용자 프레임의 단부에 상응할 뿐이다. 분류 메모리 또는 다각형 메모리가 가득 차게 되면, 메모리 오버플로우가 발생한다. 따라서, 분류 블럭으로 들어가는 단부 프레임 패킷은 두 가지 종류, 즉 사용자 프레임의 단부와, 사용자 프레임을 파이프라인 내에서 파이프라인 내의 복수 개의 프레임들로 분할할 필요에 의해 유발되는 소정의 프레임의 단부가 있다. 파이프라인의 제2 반(셋업과 그 외)은 사용자 프레임이 복수 개의 프레임들로 분할될 때 소정의 타일을 복수 번 처리하도록 요청될 것이다. 각 프레임은 독립적이고 상이한 전후 관계로부터 입력될 수 있기 때문에, 모든 파이프라인 상태 정보는 프레임당 단위로 분류 메모리(모드 패킷들과 같은)또는 다각형 메모리로 기억되어야 한다.
프레임 내에서, 분류 블럭은 점, 선 및 삼각형인 분류 원시 요소들을 수신하고 출력한다. 분류 원시 요소 삼각형은 가득찬 삼각형 또는 선 모드 삼각형일 수 있다. 그러나, 원시 요소는 점, 선, 가득찬 삼각형, 및 삼각형의 엣지인 선들을 포함하는 컬 원시 요소에 따라 분류된다.
분류 원시 요소와 컬 원시 요소 사이의 주요 차이는 선 모드 삼각형의 엣지가 분리된 원시 요소라고 고려된다는 점이다. 만일 선 모드 삼각형이 분류 블럭에 의해 수신되면, 그것은 그의 엣지 접촉에 따라서 분류된다. (LineFlag TRUE를 갖는) 삼각형의 임의의 엣지에 의해, 전체 삼각형은 엣지가 접촉하는 타일들로 분류되게 되지만, 동일한 타일 내의 복수 개의 엣지를 갖는 삼각형은 타일당 포인터 엔트리를 유발할 뿐이다. 이것은 타일당 원시 요소의 수를 감소시킨다. 그 이유는, 예컨대 큰 선 모드 삼각형이 그의 엣지들 중 아무 것도 타일들과 접촉하지 않은 채 몇 개의 타일들을 둘러 싸고 있다면, 이들 타일 내의 이 삼각형에 대해서는 컬 원시 요소가 전혀 판독되지 않는다. 컬 원시 요소는 셋업 블럭의 설명에서는 더욱 자세하게 설명되어 있지만, CullType 파라미터는 기본적으로 선 모드 삼각형의 세 개의 엣지 중에서 선택할 수 있는 부가 비트를 갖는 SortPrimitiveType 파라미터이다.
도 31은 분류메모리 페이지에 기억되는 데이터의 일 예로서, 타일은 6 개, 원시 요소는 8 개를 포함하고 있다. 예에서 보는 바와 같이, 각 분류 메모리는 두 개의 부분, 즉 데이터 기억부와 포인터 기억부로 나뉘어 있다. 데이터 기억부는 그의 데이터를 수신 순서대로 기억하고 있고, 두 종류의 기억 엔트리, 즉 꼭지점 패킷과 모드 패킷을 기억하고 있다. 도 31의 예는 13 개의 꼭지점 패킷과 3 개의 모드 패킷을 도시하고 있다. 포인터 기억부는 두 종류의 리스트, 즉 타일당 하나인 타일 포인터 리스트들과 모드 포인터 리스트를 포함하고 있다. 도 31의 예는 총 18 개의 꼭지점 포인터를 포함하고 있는 6 개의 타일 포인터를 도시하고 있고, 또한 1 개의 클리어 포인터와 3 개의 컬 포인터를 포함하는 모드 포인터를 도시하고 있다. 꼭지점 패킷과 모드 패킷의 사이즈는 항상 단일 램버스 듀얼옥트이다. 따라서, 도 31에 도시된 어드레스는 이중 8진수 어드레스이다.
꼭지점이 분류 블럭으로 공급되고 이어서 데이터 기억부에 기록될 때, 각 타일마다 타일 포인터가 작성된다. 타일 포인터 리스트의 각 꼭지점 포인터는 상응하는 타일의 일부를 커버하는 컬 원시 요소를 포함하고 있는 분류 원시 요소의 최종 분류 메모리 꼭지점 패킷의 데이터 기억부 내의 어드레스(즉, 포인터)를 포함하고 있다. 예컨대, 도 31에서, 꼭지점(11)이 만드는 삼각형[즉, 이중 8진수 어드레스(11)에 기록되는 분류 메모리 꼭지점 패킷]은 3 개의 타일과 접촉하고, 이 꼭지점에 대한 포인터는 3 개의 접촉된 타일들[타일(2), 타일(4) 및 타일(5)]에 대한 타일 포인터 리스트에 부가된다.
어드레스 외에, 각 꼭지점 포인터는 오프셋도 포함하고 있다. 오프셋이 0 이면, 분류 원시 요소의 종류는 점이다. 도 31의 일 예에서는 꼭지점(16)으로 표현되는 점이 있고, 타일(5)에서 네 번째 포인터 엔트리를 형성한다. 오프셋이 1 이면, 원시 요소의 종류는 선이다. 도 31의 일 예에서는 꼭지점(14)와 꼭지점(15)로 형성된 선이고, 타일(0)에서는 첫 번째 포인터 엔트리를 그리고 타일(2)에서 네 번째 포인터 엔트리를 형성한다. 이 두 개의 엔트리에서, 어드레스 필드는 15이고, 이는 선의 최종 꼭지점을 지시한다. 선의 경우, 다른 꼭지점은 항상 바로 앞선 어드레스의 꼭지점이다. 오프셋이 두 개 또는 그 이상이면, 분류 원시 요소의 종류는 삼각형이고, 그 오프셋은 그 삼각형의 첫 번째 꼭지점의 위치를 판단하는데 사용된다. 예컨대, 도 31에서, 꼭지점(12)은 소정의 삼각형의 세 번째 꼭지점이다. 두 번째 꼭지점은 항상 바로 이전의 어드레스이고, 이 예에서는 꼭지점(11)이다. 첫 번째 꼭지점은 어드레스에서 오프셋을 감산함으로써 얻는다. 이 예에서, 오프셋은 4이고, 첫 번째 꼭지점은 꼭지점(8)(즉, 12-4=8)이다. 따라서, 4 개의 꼭지점 포인터들은 소정의 엔트리를 타일(2), 타일(3), 타일(4) 및 타일(5)에 관한 리스트들에 더함으로써 포인터 기억부에 부가된다. 이들 4 개의 엔트리의 각각은 어드레스=12이고 오프셋=4이다.
어드레스와 오프셋 외에, 각 꼭지점 포인터는 투명 플래그 비트도 포함하고 있다. 이 불 로직 변수는 파이프라인이 분류된 투명 모드 내에 있을 때에만 사용된다. 그것이 참(TRUE)이면, 원시 요소는 아마도 투명할 것이라고 취급되고, 거짓(FALSE)이면, 원시 요소가 불명료하다고 보증된다. 이 전후 관계에서, 「불명료」하다는 것은 원시 요소가, 윈도우 내의 동일 영역을 점유하는 보다 먼 곳의 기하구조를 완전히 가리는 것을 의미한다. 도 31에 도시된 예에서, 꼭지점(9) 내지 꼭지점(11)이 만드는 삼각형들은 그들의 투명성 비트가 참(TRUE)으로 세트되고, 꼭지점 포인터에서 「T」로 표시된다. 이들 3 개의 삼각형은 9 개의 타일들과 접촉하고, 따라서 T 표시기를 갖는 엔트리는 9 개이다.
모드 패킷이 분류 블럭에 공급되고, 이어서 데이터 기억부에 기록되면, 단일의 모드 포인터 리스트가 작성된다. 모드 포인터 리스트의 각 엔트리는 데이터 기억부에 있는 모드 패킷의 어드레스이다. 포인터에는 두 가지 종류가 있고, 각 종류는 상응하는 모드 패킷의 종류, 즉 1) 분류 메모리 클리어 패킷의 어드레스를 포함하고 있는 클리어 포인터와, 2) 분류 메모리 컬 패킷의 어드레스를 포함하고 있는 컬 포인터를 갖는다.
클리어 포인터와 컬 포인터 모두는 ModePktType 파라미터를 포함하고 있고, 이는 모드 패킷의 종류를 표시한다. 두 포인터는 소정의 불 로직 변수(SubFrameBreakOnClear와 SubFrameBreakOnCull)를 포함하고 있고, 이 불 로직 변수는 모드 패킷에 의해 소정의 프레임이 그 점에서 SubFrame들로 분할되게 될 수 있음을 표시한다. 그 불 로직 변수가 참(TRUE)이고, 현재의 SubFrame이 이미 투명성 기하구조를 포함하고 있다면, 그 프레임은 그 모드 패킷의 바로 이전에 분할된다. 도 31에 도시된 예에서, 하나의 컬 포인터는 SubFrameBreakOnCull 비트가 참(TRUE)으로 세트되고, 이는 그 컬 포인터에서 「S」로 표시된다. 클리어 포인터는 다른 불 로직, 즉 SendToPixel도 포함하고 있고, 이는 버퍼 클리어 연산이 픽셀 블럭 내에서 발생해야 함을 표시한다.
분류 메모리 페이지의 판독 동안에, 복수 개의 꼭지점이 분류 원시 요소로 어셈블되고, 모드는 분류 메모리 어드레스들이 항상 증가하도록 모든 타일의 출력 스트림에 주입된다. 도 31의 예에서, 타일(3)이 판독될 때, 출력 패킷의 순서는 0,1, 4, 5, 6, 7, 12 및 13이다(데이터 기억부의 어드레스들로서 지정됨). 타일(3)과 접촉하는 원시 요소들만(즉, 4, 5, 6 및 12)이 출력되지만, 4 개의 모든 모드 패킷이 출력됨에 유의한다. 일반적으로, 모든 모드 패킷은 모든 타일 중에 전송된다. 그러나, 일부 모드 패킷들은 출력 스트림으로 전송되지 않는다. 그 이유는, 그들은 제거되거나 목표 작도 버퍼와 관련이 없기 때문이다. 이에 관해서는 나중의 섹션에서 상세하게 설명한다.
꼭지점 패킷과 모드 패킷 외에, 분류 메모리는 소위 「트윈」 패킷이라고 하는 사용자 프레임들 사이에 있다고 고려되는 데이터 패킷들을 기억하기도 한다. 특히, 트윈 패킷은 소프트웨어가 최종의 사용자 프레임을 발생한 이후와 소프트웨어가 최초의 사용자 프레임을 발생하기 이전에 파이프라인으로 입력될 뿐이다. 아키텍쳐의 투시도로부터, 트윈 패킷에는 분류 메모리 페이지의 일부분이 고려되지 않는다. 그러나, 분류 메모리의 다른 곳에는 데이터를 기억하지 않기 때문에, 트윈 패킷은 분류 기록 프로세스에 의해 분류 메모리 페이지 내에서 데이터 기억부의 개시부에 기억된다. 트윈 패킷은 주로, 3D 프레임에 의해 동기되어야 하는 2D 커맨드에 사용된다. 예컨대, 만일 기하구조가 오프스크린 버퍼(p-버퍼)에 렌더링되면, stretch-Blt 연산은 데이터를 프레임 버퍼로 이송하고, 이 연산은 프레임들 사이에서 발생해야 한다. 트윈 패킷은 모든 누적 버퍼 연산에도 사용된다.
도 32는 분류 블럭의 개략적인 블럭도를 도시하고 있다. 이미 언급한 특성들 외에, 도 32는 이중 버퍼된 상태 레지스터들을 도시하고 있다. 이들 레지스터는 기록되고 판독되는 프레임들의 파라미터를 기억한다. 파라미터에는, 수평 타일수, 수직 타일수, 목표 작도 버퍼가 이중 버퍼되어 있는지의 여부, 목표 작도 버퍼가 스테레오인지의 여부, 프레임이 시간 순서 모드 또는 분류된 투명성 모드인지의 여부, 픽셀 내의 샘플 위치 선택, 샘플 가중치 부여, 및 프레임이 분류 메모리 또는 다각형 메모리에서 오버플로우에 의해 유발되었는지의 여부가 포함된다.
알고리즘적인 투시도로부터, 타일은 독립적이고, 어떠한 순서로도 판독될 수 있다. 그러나, 텍스쳐의 재사용을 최대화하기 위해, 소위 「슈퍼타일」이라고 하는 타일 그룹들이 순차적으로 판독된다. 슈퍼타일당 타일의 수는 선택 가능하지만, 항상 슈퍼타일당 2×2 개의 타일을 선택하기로 한다. 그리고, 장면 수평 복잡성 영향으로 인한 로드(load) 불균형을 최소화하기 위해, 슈퍼타일이 행 단위로 또는 열 단위로 판독되지는 않는다. 오히려, 슈퍼타일은 공간적으로 엇갈리게(의사 랜덤하게) 판독된다. 정확한 순서가 중요하지는 않지만, 순차적인 판독 세트의 슈퍼타일들은 윈도우 상에 직선에 속하지 않아야 한다. 이 의사 랜덤 워크(진로: walk)에 대한 알고리즘에 대해서는 나중에 설명한다.
스테레오 3D 윈도우의 경우, 좌측 버퍼와 우측 버퍼는 분리되어 있다고 간주하고, 각각은 독립된 타일 세트를 갖는다. 예컨대, 1024×768 윈도우는 타일이 64×48 개(총 타일수는 3,072 개)이지만, 스테레오 윈도우는 타일이 2×64×48 개(총 타일수는 6,144 개)이고, 각 (x, y) 위치에 2 개의 타일이 있다(좌측에 한 개, 우측에 한 개).
애플리케이션이 동일 프레임 내의 소정의 타일에 대한 전방 버퍼와 후방 버퍼 모두에 대해서 렌더링하는 경우, 그 타일은 두 개의 진행, 즉 처음에는 후방 버퍼에 대해서, 이어서는 전방 버퍼에 대해서 처리되어야 한다. 그러나, 후방 버퍼에 대해서만 렌더링되는 기하구조는 전방 버퍼에 대해서만 렌더링되는 기하구조에 대한 깊이 테스트의 결과를 변경시킬 수 있기 때문에(그 역도 가능), 모든 기하구조(전방이든 후방이든)는 양자의 진행 중에 파이프라인으로 전송되어야 한다. 더욱이, 양자의 진행에 대해서는 동일한 개시의 깊이값과 스텐실값이 사용되어야 한다. 따라서, 주어진 타일에 대한 후방 진행과 전방 진행은, 후방 단부가 동일의 개시 깊이값과 스텐실값을 프레임 버퍼에서 픽셀 블럭 내의 보존적 타일 버퍼에 적재시킬 수 있게, 보존적으로(즉, 즉 그들 사이에 다른 타일이 없다) 발생해야 한다. 만일 후방 버퍼에 대한 경과가 전방 버퍼에 대한 경과의 초기 적재 이전에 완료했다면, 렌더링 에러가 발생했을 것이다. 백엔드는 이를 보증해야 한다.
기록 프로세스 중에는, 만일 원시 요소들의 영역이 실제로 타일의 부분을 커버한다면, 그들 원시 요소들을 타일들에 배정하는 것만이 중요할 뿐이다. 단순한 경계 상자가 사용될 수 있지만, 이 결과, 특히 대각선과 좁고 긴 대각선형 삼각형의 경우에 분류 메모리 대역폭이 낭비되게 될 것이다. 나중의 섹션에서, 접촉한 타일 계산에 대한 정밀한 알고리즘이 설명된다.
분류 메모리 페이지 중 약 절반은 포인터에 대해서 사용된다. 따라서, 분류 메모리에 필요한 바이트수는 최대 꼭지점수의 약 64 배이다(모드 패킷은 그다지 기여하지 않는다). 각 꼭지점은 16 바이트를 필요로 하고, 포인터는 부가의 16 바이트를 필요로 하며, 두 개의 페이지가 필요하다.
분류 블럭은 각 프레임에 있는 삼각형의 갯수 등, 몇 개의 성능 계량의 트랙을 유지한다. 섹션 「분류 블럭으로부터의 출력」에 있는 서브섹션 「호스트로부터 판독 가능한 성능 계량 능력」을 참조 바란다.
5.5.2 분류 블럭 기능의 상세
분류 블럭은 연산을 병렬로 처리하는 두 개의 프로세스, 즉 분류 기록 프로세스와 분류 판독 프로세스를 포함하고 있다. 분류 기록 프로세스는 그 둘 중 「마스터」이다. 그 이유는, 분류 기록 프로세스는 기록이 완료되고 기록 프로세스가 한가할 때 분류 기록 프로세스를 개시하기 때문이다. 의사 코드는 모든 변수가 「포괄적」이라고 가정한다. 다른 기능적 세부는, 어느 타일이 소정의 원시 요소에 의해서 접촉되고 있는지를 판단하는 접촉된 타일의 계산과 같이 이 섹션 내에 포함되어 있다.
5.5.2.1 분류 기록 프로세스
분류 메모리의 경우, 분류 기록 프로세스는 데이터 기억부에서 꼭지점과 모드 패킷의 순열 리스트를 생성한다(도 31 참조). 분류 기록 프로세스는 타일당 타일 포인터 리스트와 프레임당 모드 포인터 리스트를 생성하기도 한다.
5.5.2.2 분류 판독 프로세스
분류 판독 프로세스는 엄밀한 타일당의 기준으로 출력 패킷 순열을 생성하고, 좌측 타일과 우측 타일은 분리하에 취급된다.
5.5.2.2.1 분류 판독 프로세스 아웃터 제어 루프
분류 판독 프로세스의 외부 제어 루프는 3 가지 기능 성분,즉 TimeOrderMode, Sorted Transparency Mode OpaqueLoop() 및SortedTransparencyMode TransLoop()를 포함하고 있고, 이들 각각은 다음 섹션에 설명되어 있다.
첫 번째 모드 패킷은 모든 타일에 출력될 것이기 때문에, 모드 패킷의 캐슁은 FILO 기준으로 행해져야 한다. 또한, 캐슁 메카니즘은 버블을 프로세싱으로 주입하는 것으로부터 모드 패킷을 선택하는 어드레스 비교를 방지하기 위해(시간 순서를 판단하기 위해) 적어도 두 개의 모드 패킷을 앞서서 보아야 한다.
5.5.2.2.2 시간 순서 패킷 프로세싱
이것은 파이프라인이 시간 순서 모드일 때 각 분류 메모리 패킷 종류에 대해서 취한 동작에 관한 것이다.
5.5.2.2.3 분류된 투명성 패킷 프로세싱, 센딩 불명료 기하구조
이것은 불명료 기하구조에 대한 단일 경과 중에 파이프라인이 분류된 투명성 모드일 때 각 분류 메모리 패킷 종류에 대해서 취한 동작에 관한 것이다.
5.5.2.2.4 분류된 투명성 패킷 프로세싱, 센딩 투명성 기하구조
이것은 투명한 기하구조에 대한 복수 개의 통과 중에 파이프라인이 분류된 투명성 모드일 때 각 분류 메모리 패킷 종류에 대해 취한 동작을 포함하고 있다. 분류 메모리 클리어 패킷은 항상 투명성 프로세싱 중에 스킵된다.
5.5.2.2.5 클리어 레지스터 기능성
만일 StencilMode가 2 비트 스텐실 모드로 윈도우를 설정했다면, 소프트웨어는 모든 8 비트에 걸쳐서 StencilMask와 StencilValue의 두 개의 최하위 비트를 복제한다. 소프트웨어는 ClearDepth의 값을 셋팅할 때 OpenGL DepthMask를 고려하기도 한다. 그 이유는 백엔드 블럭은 클리어를 행할 때 DepthMask를 검사하지 않기 때문이다.
5.5.2.2.6 컬 레지스터 기능성
CullSoftSubFrameBreak는 실제로 「누산」되는 유일한 신호이다. SoftSubFrameBreak와 OnlySoftSubFrameBreak는 분류 판독 프로세스에 의해 사용되지는 않지만, 디버그 목적상 분류 메모리 컬 패킷에 포함되어 있다.
5.5.2.3 접촉된 타일 계산
삼각형, 즉 ABC와, 중심이 (xTile, yTile)인 타일이 있는 경우, 삼각형이 타일을 접촉하는 지를 판단하고자 한다(도 33). 알고리즘은 삼각형의 각 선이 평면을 두 개의 반쪽 평면, 즉 내부 반쪽 평면과 외부 반쪽 평면으로 분할한다는 사실에 따른다. 만일 타일이 선들 중 임의의 선에 의해 정의된 외부 반쪽 평면 내에 완전히 들어 있으면, 그것은 삼각형에 의해 접촉되지 않는다. 삼각형에 의해 접촉되기 위해서는, 타일은 3 개의 모든 내부 반쪽 평면 내에 적어도 부분적으로 포함되어 있어야 한다.
접촉된 타일의 계산은 선에도 적용되지만, 선 스티플링은 접촉된 타일의 계산의 목적상 무시된다.
시작을 위해, 삼각형의 선들 중 하나에 수직인 벡터가 있고, 이 벡터는 도 34에 도시하고 있는 바와 같이 선에서 타일의 중심으로 향한다고 가정한다.
이 수직 벡터의 크기(d)를 계산함으로써, 타일의 중심이 선으로부터 얼마나 멀리 떨어져 있고, 그것이 내부 반쪽 평면인지 외부 반쪽 평면인지를 판단할 수 있다. d에 대한 음의 값은 타일의 중심이 선에 의해 정의되는 내부 반쪽 평명 내에 있음을 표시한다. 이어서, 선이 타일과 교차하는(만나는) 임계 거리(t)를 계산한다. 도 35a와 도 35b에 도시하고 있는 바와 같이, 이 거리는 Tile(Φ)의 측면들 중 한 측면에 대한 선의 각도의 함수이다.
수직 벡터(d)가 임계 거리(t)보다 크면, 타일은 삼각형의 완전 외부에 있다(도 36c). d가 0과 t 사이에 있으면, 선은 타일과 교차하고(도 36b), d가 음수이면, 타일의 중심은 선에 의해 정의되는 내부 반쪽 평면 내에 있다(도 36a).
삼각형의 각 선마다 이들 계산을 수행함으로써, 삼각형이 타일을 접촉하고 있는 지를 판단할 수 있다.
5.5.2.3.1 수직 벡터
(x0, y0)에서 (x1, y1)로의 선 AB의 경우, 방정식은 다음과 같다.
이 선에 수직하고 (xTile, yTile)를 통과하는 선의 방정식은 다음과 같다.
다음으로, 원래의 선과 수직선의 교차점을 판단한다.
편의상, 이 방정식을 아래와 같이 다시 기재한다.
다음으로, (x, y)와 (xTile, yTile)간의 거리를 계산한다.
5.5.2.3.2 임계 거리의 판단
임계 거리를 판단하기 위해, 도 37에 도시하고 있는 바와 같이 타일의 변들중 한 변에 대한 선의 각도를 관찰할 필요가 있다.
5.5.2.3.3 Adding It All Up
따라서, 주어진 선을 기초로 하여 타일이 삼각형의 외부에 있는 지를 판단하기 위해, 다음의 비교를 행한다.
이러한 비교의 편의상, 각도를 제1 사분면으로 변환하고, 따라서 실제 테스트는 다음 식과 같다.
만일 이 테스트가 참(true)이라면, 타일은 삼각형의 외부에 있다. 삼각형의다른 선들에 대해서도 유사한 비교를 할 수 있다.
여기에서,
만일 3 가지 모든 테스트가 거짓이라면, 삼각형은 타일과 접촉하고 있다.
선의 경우, 계산은 삼각형의 한 변에 대한 계산과 유사하지만, 선이 타일과 교차하는 지에 대해서만 관심있을 뿐이다(즉, 삼각형에서 그랬던 것과 같이 「내부」인지 「외부」인지에 관해 걱정할 필요가 없다). 따라서, d의 부호는 고려하지 않고, 다만, 그의 크기만을 고려한다. 선폭도 고려해야 한다. 이들 두 가지 변경을 행하면, 다음의 테스트가 제공된다.
만일 이 테스트가 거짓이라면, 선은 타일과 접초하고 있다.
참고로, 안드레아스 쉴링이 저술하고 1991년 7월, 컴퓨터 그래픽스사가 출간한 서적, 「서브픽셀을 갖는 새로운 단순 효율적인 안티에일리어싱」을 보기 바란다.
5.5.2.4 슈퍼타일 호프 시퀀스
3D 이미지를 렌더링할 때는 「수평 효과」가 자주 나타나는데, 이 수평 효과에서는 화상을 통한 수평 열이 이미지의 나머지보다 상당히 더 복잡하다. 일 예로는 전면에 있는 단순한 풀밭의 평면과 떨어져서 도시의 스카이라인이 있고 그 위에 하늘이 있는 것이다. 풀밭과 하늘은 다각형이 몇 개 안되지만(가능하게는 각각 한 개), 도시는 다각형이 많고 깊이 복잡성도 크다. 이러한 수평 효과는 소정의 장면을 통한 비수평 열을 따라서도 발생할 수 있다. 타일이 단순한 상부에서 하부로 그리고 좌측에서 우측으로의 순서로 처리된다면, 복잡한 타일은 후방에서 후방으로에 직면할 것이고, 그 결과, 파이프라인 내에 적재의 불균형이 있을 수 있게 된다. 따라서, 타일에서 타일로 갈 때 스크린 상에서 랜덤하게 「도약」하는 것이 보다 좋을 것이다. 그러나, 이것은 공간 긴밀성의 감소로 되어(인접 타일들이 순차적으로 처리되지 않기 때문), 파이프라인 내의 캐쉬의 효율을 감소시키고 성능도 감소시킬 것이다. 공간적으로 순차적인 타일의 프로세싱과 전체적으로 랜덤한 패턴간의 타협으로서, 타일은 각 SuperTile이 공간적으로 인접한 복수 개의 타일들인 SuperTile들로 구성되고, 이어서, SuperTile들의 랜덤 패턴이 처리된다. 따라서, 공간 긴밀성은 SuperTile 내에서 보존되고, 수평 효과는 회피된다.
3D 윈도우는 타일들로 분할되고, 이들 타일은 「SuperTile들」로 그룹핑된다. 소정의 SuperTile 안에 있는 복수 개의 타일들은 MEX 출력 개시 프레임 패킷 내에 포함되어 있는 파라미터 SuperTileSize에 의해 선택 가능하다. 타일들이 처리되는 순서(「SuperTile 도약 순서」라고 함)는 마찬가지로 MEX 출력 개시 프레임 패킷 내에 포함되어 있는 SuperTileStep에 의해 제어된다.
도 38a는 SuperTile 도약 순서의 간단한 예를 설명하고 있다. 이 예에서는윈도우(6202)가 18×14 어레이 내의 252 개의 타일들로 구성되어 있음을 도시하고 있다. SuperTileSize는 2×2 개의 타일(그러나, 사이즈는 1×1, 1×2, 2×1, 2×2, 2×3, 3×2, 3×3, 3×4, 4×3, 4×4를 비롯해서 어느 것도 가능하다)이라고 가정되고, 따라서 9×7 어레이 내에는 63 개의 슈퍼 타일이 있다. 슈퍼 타일의 리스트는 선형 리스트로 전환된다고 고려되며, 이 전환은 상부 좌측에서 개시하여 한 칸씩 슈퍼타일에 번호를 부여함으로써 행해진다. 다음의 변수들을 정의한다.
N= 윈도우 내의 슈퍼 타일 수
M= SuperTileStep
Tn= 처리되어야 할 nthSuperTile
SuperTile의 처리 순서는 다음과 같다.
T0= 0
Tn+1= modN(Tn+M)
도 38a의 예에서, N=63과 M=13이다. 이 결과, 순서는 도 38b에 도시되어 있는, T0=0, T1=13, T2=26, T3=39, T4=52, T5=2, T6=15, ...로 된다. M이 N 이하일 필요는 없다.
N과 M이 프라임(prime)(즉, 그들의 최대 공통 인자는 1이다)인 한, 이러한 반복 알고리즘은 모든 SuperTile을 힛트(hit)할 것이다. N 또는 M이 프라임 수일 필요는 없지만, M이 항상 프라임 수이게 선택된다면, 모든 SuperTile이 힛트될 것이다.
다른 적용예로서, SuperTile은 전체 윈도우를 커버하는데 필요한 것보다 클 수 있고, 2a×2a=22a라고 가정되며, 따라서 총 SuperTile수가 2의 정수승임이 보장된다. 이것은 단순히 높은 순서의 비트들 버림으로써 「modN」계산을 행할 수 있게 될 것이다. 이 방법의 불충분한 측면은 존재하지 않는 SuperTile이 순열 내에 포함될 것이라는 점이다. 존재하지 않는 이들 SuperTile들은 반드시 검출해서 건너 뛰어야 한다.
5.5.2.5 라인 플래그
선 모드 삼각형의 경우, 분류 블럭은, 각 선에 대해서 독립적으로, 어느 타일이 선에 의해 접촉되어 있는 지를 판단한다. 그러나, 동일한 삼각형으로부터의 복수 개의 선이 소정의 타일과 접촉하고 있다면, 그 삼각형에 대해서 단 하나의 포인터가 타일 포인터 리스트에 부가된다. 그 이유는, 분류 블럭이 분류 원시 요소들(컬 원시 요소들이 아님)을 분류하고 있기 때문이다.
선 모드 삼각형이 수신될 때[즉, LineMode가 참(TRUE)이고, LineFlags 파라미터 내의 하나 또는 그 이상의 비트가 참(TRUE)임], 그 삼각형은 가득찬 삼각형으로서보다, 하나 또는 그 이상의 선으로서 작도될 수 있다. LineFlags에는 3 개의 비트가 있다. 그 중 하나는 삼각형의 각 엣지에 대한 것이다. 각각은 그의 상응하는 엣지가 선으로서 작도될 수 있는 지의 여부를 표시한다. 3 개의 비트는, 1) 비트 0(LSB)은 꼭지점 0과 꼭지점 1간의 엣지에 상응함, 2) 비트 1은 꼭지점 1과 꼭지점 2간의 엣지에 상응함, 3) 비트 2(MSB)는 꼭지점 2와 꼭지점 0간의 엣지에 상응함을 표현한다. LineFlags 파라미터는 GEO 블럭에 설정된다. 그 이유는, 그것은 어느 꼭지점이 다각형을 완성하는 지를 판단하는 파이프라인의 일부이기 때문이고, 그것이 클립핑하는 일을 하기 때문이다.
3 개의 LineFlags 비트는 일부 엣지 선들이 작도되지 않아야 하기 때문에 그들에 상응하는 엣지를 독립적으로 제어한다. 예컨대, OpenGL 사변형은 항상 두 개의 삼각형으로 분할되지만, 선 모드로 작도될 때에는, 그 사변형 내부의 엣지들은 작도되지 않는다. 따라서, 원래의 사변형 내에 있는 소정의 엣지에 상응하는 각 삼각형의 2 개의 엣지는 그들의 선 플래그들을 참으로 설정시키고, 삼각형의 다른 엣지들(사변형 내부의 공유된 엣지들)은 그들의 선 플래그들을 거짓으로 설정시킨다.
5.5.2.6 스플리팅 삼각형 팬
각 포인터 엔트리에 있는 오프셋 파라미터는 비트수가 6 개이고, 이는 최대 오프셋이 63임을 의미한다. 만일 삼각형 팬이 63 이상의 오프셋을 필요로 한다면, 그 삼각형 팬은 2 개의 꼭지점을 데이터 기억부에 복제함으로써 분할된다. 칼라 메모리에서도 유사한 현상이 발생하며, 분류 블럭 입력 패킷 내의 나머지 데이터를 수반하는 칼라 메모리로의 포인터들은 이를 고려해야 한다.
5.5.2.7 라인 폭 고려사항
OpenGL에서, 선은 안티에일리어싱된 직사각형으로서 작도되고, 그의 폭은 픽셀 폭의 수로서 지정되며, 그의 길이는 종점들간의 거리이다. 더욱이, 이들 선은 스티플(stipple)되어, 그 직사각형을 그의 길이를 따라 일련의 인티에일리어싱된사각형으로 쪼개며, 각 사각형은 통상과 같이 칼라링되거나 완전히 투명하다고 지적될 수 있다. 스티플된 선들은 상상의 점선으로서 생각될 수 있다.
선 원시 요소(선 또는 선 모드 삼각형 중 어느 하나)가 분류 블럭에 의해 수신될 때, 선의 폭은 그 선 원시 요소를 인접 타일들로 빠지게 할 수 있다.
5.6 셋업 블럭(STP)
셋업(STP) 블럭은 분류(SRT) 블럭으로부터 패킷들로 된 스트림을 수신한다. 이들 패킷은 원시 요소들에 관한 공간 정보를 렌더링되게 한다. STP 블럭의 출력은 컬(CUL) 블럭으로 향한다. SRT로부터 수신된 원시 요소들에는 삼각형, 선 삼각형, 선, 스티플된 선 및 점이 채워질 수 있다. 이들 원시 요소들의 각각은 에일리어싱 모드 또는 안티에일리어싱 모드로 렌더링될 수 있다. SRT 블럭은 원시 요소들을 타일 순서대로 STP(및 다른 파이프라인 단계 다운스트림)에 전송한다. 각 타일 내에는 데이터가 시간 순서로 또는 분류된 투명성 순서로 구성된다. CUL 블럭은 데이터를 STP 블럭으로부터 타일 순서(실제로는, STP가 SRT로부터 원시 요소를 수신하는 순서)로 수신하고, 렌더링된 이미지들에 전혀 기여하지 않는 원시 요소의 부분을 추려 버린다. 이것은 두 개의 단계로 수행된다. 제1 단계, 즉 MCCAM 컬에서는 내용물이 주어진 값 이상인 직사각형 메모리 어레이의 그들 엘리먼트들을 검출할 수 있다. 제2 단계에서는 소정의 샘플을 샘플 내용 비교에 의해 행함으로써 이 검색을 정제한다. STP 블럭은 CUL 블럭에 의한 프로세싱을 위해 인입 원시 요소들을 준비한다. STP는 MCCAM 컬링을 위한 타일과 교차하는 원시 요소의 부분에 대해 엄격한 경계 상자와 최소 깊이값(Zmin)을 생성한다. MCCAM 컬 단계는 Zmin 이하의 깊이값들을 포함할 수 있는 그 경계 상자 내의 스탬프들을 마크한다. Z 컬 단계는 이들 후보 스탬프들을 취해서, 만일 그들 후보 스탬프들이 언의 일부라면, 그 스탬프 내의 샘플들에 대한 실제의 깊이값을 계산한다. 이어서, 이 보다 정확한 깊이값은 샘플 기준으로 소정의 샘플에 관한 비교를 위해 사용되고, 버릴 수 있으면 버린다. MCCAM 컬링에 대한 경계 상자와 Zmin 외에, STP는 깊이의 변화도, 선의 기울기, 및 깊이와, Z 컬 단계의 경우 타일 엣지와의 원시 요소 교차점 등의 다른 기준 파라미터를 계산하기도 한다. CUL 유닛은 다른 파이프라인 단계에 의해 사용되는 VSP를 생성한다.
전후 관계를 설정하기 위해, 다양한 STP 원시 요소들에 관해 요약 설명하기로 한다.
5.6.0.1 다각형
STP 블럭에 도달하는 다각형은 기본적으로 삼각형이다. 삼각형은 에일리어싱 모드 또는 안티에일리어싱 모드로 렌더링될 수 있다. 도 39는 DSGP 삼각형을 도시하고 있다. STP 유닛은 에일이어스된 삼각형과 안티 에일리어스된 삼각형을 동등하게 처리한다. 파이프라인 유닛은 렌더 에일리어스된 삼각형을, 모든 샘플을 픽셀의 중심에 배치시킴으로써 다운스트림시킨다. 안티 에일리어스된 경우, 샘플의 위치는 제어 패킷들 중 하나의 제어 패킷에 의해 통과되는 SampleLocSel 파라미터에 의해 판단된다. 소정의 샘플이 삼각형의 기하구조 경계 내에 들어간다면, 그 샘플은 삼각형에 속한다. 만일 그 샘플이 삼각형의 엣지 상에 정확하게 만난다면, 그 샘플이 삼각형에 속하는 지의 여부를 판단하기 위해, 산입 법칙을 이용한다.
5.6.0.2 선
DSGP는 선들들 사분면으로 전환함으로써 그들 선을 렌더링한다. 도 40은 다양한 배향 구조의 에일리어스된 선과 안티 에일리어스된 선들을 작도하기 위해 생성되는 다양한 사변형을 도시하고 있다. 선의 폭은 거의 지원되는 폭으로 라운드된다. 폭의 조절은 SORT 단계 이전에 행해져야 한다. 그것은 소프트웨어에 의해서 행해질 수 있다. STP는 인입 선 폭을 변형시키지 않는다.
사각형은 에일리어스된 선과 안티 에일리어스된 선에 대해서 상이하게 생성된다. 에일리어스된 선의 경우에는 사각형의 꼭지점은 선이 x 위주인지 y 위주인지의 여부에 따라서 다르기도 하다.
5.6.0.3 점
DSGP는 안티 에일리어스된 점을 원으로서 그리고 에일리어스된 선을 사각형으로서 렌더링한다. 원은 사용자 지정 위치에 중심 배치된다. 원의 직경은 사용자에 의해 지정된 폭이고, 거의 지원된 폭으로 라운드된다. 에일리어스된 점을 작도하는 경우, 점의 사용자 지정된 위치는 얻어진 폭이 각각 홀수인지 짝수인지의 여부에 따라 픽셀의 중심에 스냅되거나 픽셀의 모서리에 라운드된다. 선의 경우에서와 같이, 점의 사이즈와 위치의 조절은 SORT 블럭 이전에 파이프라인에서 일어나야 한다. 점의 위치는 변환에 지배되기 때문에, 기하구조 유닛은 이렇게 하는 것이 제위치인 것 같다. 도 41은 렌더링된 점을 도시하고 있다. 사용자 지정 점은 원으로 표시된다.
5.6.1 셋업 블럭 기능 개관
이 섹션에서, 이들 원시 요소들의 각각에 대한 액션의 셋업을 조망해 본다. 특수 프로세싱에 관한 세부는 섹션 3에 있다.
5.6.1.1 파일된 다각형
셋업은 처리할, CUL 유닛에 대한 다각형을 채운다. STP는 3 개의 삼각형 꼭지점에 대한 윈도우 좌표(x, y, z)를 수신한다. 또한, STP는 다각형 오프셋의 계산에 사용되는 「인자」를 수신한다. 안티 에일리어싱 상태는 채워진 삼각형 셋업이 행해지는 방법을 변경하지 않음에 주의한다. CUL 블럭과 픽셀 블럭은 픽셀의 중심에 대한 모든 샘플을 와해시킴으로써 에일리어스된 삼각형의 라스터화를 취급한다. 또한, 삼각형의 꼭지점은 윈도우 좌표의 유효 범위 내에 떨어진다, 즉, 삼각형 좌표는 윈도우의 경계에 클립되었다고 가정한다.
엣지 상의 삼각형들은 모두 버린다. 엣지 상의 삼각형들은 어떠한 VSP를 생성한다고 예견되지 않는다. 만일 STP에서 그 삼각형들을 버리지 않는다면, 이들 삼각형의 라스터화와 연계된 CUL에 프로세싱 오버헤드가 생길 것이다. 게다가, 이렇한 삼각형이 VSP를 생성하는 드문 경우에, 픽셀의 명암도는 변칙적일 수 있다. 이것은 엣지의 기울기들 중 두 개가 등가일 때 검출된다.
각각의 채워진 다각형의 경우, STP는 다음을 행한다.
1. 상부 꼭지점, 하부 꼭지점, 좌측(또는 우측) 꼭지점을 제공하기 위해 꼭지점들을 배열한다. 또한, 중간 꼭지점이 y에서 긴 엣지, 즉 최대 y값과 최소 y값을 갖는 꼭지점과 연결하는 엣지의 좌측 또는 우측에 있는 지의 여부를 표시하는 leftC 플래그 또는 rightC 플래그를 설정한다.
2. x와 y를 따라 x의 편미분을 계산한다(δz/δx, δz/δy).
3. 다각형 오프셋이 인에이블되면, 다각형 오프셋을 계산하고, 그 오프셋을 각 꼭지점의 z값에 더한다.
4. CUL 유닛에 대한 3 개의 엣지의 기울기들을 계산한다. 엣지 상의 삼각형들을 버린다.
5. 타일 경계 상의 삼각형을 클립한다.
6. CUL 유닛에 대해서 바운딩 상자, 상부 엣지 교차부, 타일과 교차하는 삼각형 영역의 최소 z, 및 (기준 스탬프에 관한) 기준 z값을 계산한다.
7. 코드를 원시 요소에 배정하고 관련 정보를 CUL 유닛에 전송한다.
전술한 바와 같이, 바운딩 상자와 Zmin은 MCCAM 컬에 사용된다. 상부 엣지 교차부, 선 기울기, 모서리 점, 기준 z값 및 z 변화도는 CUL 블럭에 의해 z 컬링에 사용된다.
5.6.1.2 안티에일리어싱 솔리드 라인
CUL 유닛은 평행 사변형과 삼각형을 균일하게 라스터화하는 주사 전환기를 이용한다. 안티 에일리어스된 선 세그먼트는 도 42에 도시되어 있는 바와 같이 직사각형으로 전환된다.
선의 각 단부의 직사각형 꼭지점들에는 선의 종단점으로서 동일한 z값들이 배정되고, 따라서 상수 z의 선은 선 그 자신에 수직하게 된다. 각 선 세그먼트에 대해, STP는 다음을 행한다.
1. x 꼭지점 변위와 y 꼭지점 변위(xhw, yhw)를 판단한다.
2. 직사각형의 꼭지점들을 판단한다. 계산된 꼭지점은 선이 에일리어스되어 있는지 또는 안티 에일리어스되어 있는 지의 여부에 달려 있다.
3. CUL 유닛에 관해 부축(minor axe)과 주축(major axe)의 기울기들을 계산한다. (부축은 주축에 수직하다.)
4. 상부 꼭지점, 하부 꼭지점, 좌측 꼭지점 및 우측 꼭지점을 제공하기 위해 꼭지점들을 배열한다.
5. x와 y를 따라 이 직사각형에 관한 z의 편미분을 계산한다(δz/δx, δz/δy).
6. 타일 경계에 대한 직사각형을 클립한다.
7. CUL 유닛에 대해서 바운딩 상자, 상부 엣지 교차부, 타일과 교차하는 삼각형 영역의 최소 z, 및 기준 스탬프에 관한 기준 z값을 계산한다.
8. 원시 요소 코드를 배정하고 관련 정보를 CUL 유닛에 전송한다.
5.6.1.3 에일리어스된 솔리드 라인
전술한 바와 같이, 에일리어스된 선의 종단점들은 안티 에일리어스된 전으 ㅣ종단점들이 계산되는 방법과는 다르게 계산된다. 안티 에일리어스된 선의 경우에서와 같은 직사각형 대신에, 에일리어스된 선들에 관한 평행 사변형을 계산한다. 평행 사변형의 엣지들 중 두 개는 선의 길이에 평행하고, 다른 두 개의 엣지는 도 43에 도시되어 있는 바와 같이 (x 주축의 선에 대해) 수직 또는 (y 주축의 선에 대해) 수평 중 어느 하나이다.
OpenGL은 평행 사변형의 꼭지점들은 다음과 같이 되도록 계산되어야 한다.
1. 두 개의 세그먼트가 x 주축 또는 y 주축 중 어느 하나이면, 보존적 다중선 세그먼트들을 작도하는 동안에 갭 또는 오버스트라이크가 없다.
2. OpenGL 다이아몬드 출구 법칙과 DSGP 벙법을 이용하여 라스터화되는 총 프래그먼트수 사이에는 많아야 한 개의 칼럼(또는 로우) 부등(disparity)이 있다.
3. 라스터화된 프래그먼트들의 좌표는 x 방향과 y 방향에서 하나 이상의 유닛만큼 벗어난다.
그러나, 이것은 CUL이 평행 사변형과 삼각형을 어떻게 라스터화하는 지에 관한 임의의 제약이 있다. CUL은 2 개의 원시 요소들에 의해 공유되는 엣지 상에 정확하게 놓여 있는 소정의 프래그먼트가 그들 중 하나에만 포함되게 프래그먼트 산입 법칙을 사용할 필요가 있다. (안티 에일리어스된 렌더링의 경우, 산입 법칙은 프래그먼트보다는 샘플에 적용한다.) 셋업은 에일리어스된 넓은 선을 작도하기 위해 다음을 행한다.
1. x 꼭지점 변위와 y 꼭지점 변위(xhw, yhw)를 판단한다.
2. 선의 기울기를 관찰함으로써 평행 사변형의 꼭지점들을 판단한다. 선의 종단점은 변형되지 않는다.
3. CUL 유닛에 관해 선의 길이에 평행한 엣지를 따라 기울기를 계산한다. 다른 축은 수평 또는 수직이다.
4. 상부 꼭지점, 하부 꼭지점, 좌측 꼭지점 및 우측 꼭지점을 제공하기 위해 꼭지점들을 배열한다.
5. x와 y를 따라 이 직사각형에 관한 z의 편미분을 계산한다(δz/δx,δz/δy).
6. 사각형과 타일 경계의 교차점을 계산한다.
7. CUL 유닛에 대해서 바운딩 상자, 상부 엣지 교차부, 타일과 교차하는 삼각형 영역의 최소 z, 및 기준 스탬프에 관한 기준 z값을 계산한다.
8. 적절한 원시 요소 코드를 배정하고 관련 정보를 CUL 유닛에 전송한다.
단계 2 내지 단계 8은 에일리어스된 선과 안티 에일리어스된 선의 경우에 동등하게 이용될 수 있음에 주의한다.
5.6.1.4 스티플된 선
스티플링과 관련된 상태는 16 비트 스티플 패턴, 스티플 반복 인자 r, stplStartBit, 및 stplRepeatStrt를 포함한다. 스티플 패턴은 선 모드에서 작도되는 선 스트립, 선 루프, 및 다각형의 각 세그먼트를 통해 연속되어야 한다. stplStartBit 및 stplRepeatStrt는 이 연속성을 이용하는데 사용되는 상태 파라미터이다. 셋업은 각 선 세그먼트에 관해 stplStartBit 및 stplRepeatStrt에 관한 정보를 얻는다. 기하구조 유닛은 각 선 서그먼트의 개시시 stplStartBit 및 stplRepeatStrt 오프셋을 계산하는 일을 한다. 또한, 선폭 w는 생성된 선 세그먼트들의 외형을 제어한다. 셋업은 스티플 패턴 내에서 계속되는 1의 순열들을 네 개로 쪼갠다. 안티 에일리어스된 선의 경우, 그 네 개는 직사각형들이다. 이들 직사각형들은 길이가 nr이고 넓이가 w이다. n은 그 순열에 있는 1의 수이다. 이들은 선의 가시 부분을 나타낸다(도 44).
비안티에일리어스된 선의 경우, 그 네 개는 평행 사변형들이다. STP는 1 비트의 각 행렬에 대해 사각형을 생성하고, 이들 네 개들의 일부는 타일 경계들의 외부에 있을 수 있을 것이다. 이들 네 개에 관한 불필요한 프로세싱을 감소하기 위해, 전제적으로 타일 외부에 놓여 있는 네 개들을 발생시키는 스티플 세그먼트들을 클립한다. 만일 선의 개시점(x0, y0)이 타일의 외부에 놓여 있다면, 그 개시점에 가장 가까운 타일 경계에 대한 선을 클립한다. 그 클립된 선 개시점은 제1 선 네 개가 완전히 포함되게 생성된다. 이것은 타일 경계상에 연속성이 있음을 보장할 것이다. 이것은 타일 주변에 클립핑 보호 대역을 배치하는 것과 마찬가지이다. 클립된 점에 대해서는 새로운 선 개시점과 스티플 오프셋 stplStartBit가 생성된다. (여기에서는 과거의 stplRepeatStart를 유지한다.) 이것은 도 45에 도시되어 있다.
선은 각각 x 방향과 y 방향으로 xhw와 yhw만큼 변위된 타일의 엣지에 클립된다. 따라서, 스티플된 선들의 프로세싱은 다음의 단계를 갖는다.
1. 선이 에일리어스되어 있는지 또는 안티 에일리어스되어 있는 지에 따라서 꼭지점의 변위를 판단한다.
2. 클립된 점이 보호 타일 상에 또는 외부에 있게 선의 헤드를, 보호 대역을 갖는 타일(tileXmin-xhw, tileYmin-yhw, tileXmax+xhw, tileYmax+yhw)에 클립한다. 클립된 세그먼트의 길이는 스티플 비트의 단위들이다. 새로운 stplStartBit를 얻는다.
3. 스티플에 있는 1 비트의 각 순열에 대해서, 네 개를 구성하고, 그것을 파이프로 전송한다. 이 프로세스는 새로운 개시점이 타일 보호 대역 외부로 떨어질 때가지 계속된다.
5.6.1.5 선 삼각형
선 모드에서 삼각형을 작도하는 경우, STP 유닛은 세 개의 삼각형 꼭지점에 대한 윈도우 좌표(x, y, z) 외에 엣지 플래그들을 수신한다. 이들 엣지 플래그들은 엣지가 작도되어야 할 셋업 유닛에 관한 것이다. 또한, 셋업 유닛은 다각형 오프셋의 계산시 사용되는 「인자」를 수신한다. 작도되어야 할 엣지는 다각형 오프셋에 의해 먼저 오프셋되고, 이어서 폭 w의 리본(선의 속성)으로서 작도된다. 또한, 이들 선들은 스티플링이 인에이블되면 스티플될 수 있다. 도 46은 선 모드 삼각형의 기하구조를 도시하고 있다.
각 선 다각형의 경우, STP는 다음을 행한다.
1. 모든 엣지 상의 삼각형을 버린다. 이에 관한 보다 상세한 설명은 채워진 삼각형에 관한 섹션을 참고하기 바란다.
2. x와 y를 따라서 z의 편미분을 계산한(δz/δx, δz/δy).
3. 다각형 오프셋 계산이 인에이블된다면, 다각형 오프셋을 계산하고, 그 오프셋을 세 개의 꼭지점의 각각에서 z값에 더한다.
4. 엣지들을 순서대로 가로지른다. 엣지가 가시적이면, 폭과 스티플 등의 선 속성을 이용하여 엣지를 작도한다. STP는 한 번에 한 개의 삼각형 엣지를 처리한다.
5. 안티에일리어스 또는 에일리어스 등의 선 속성, 스티플, 폭 등을 기초로 하여 선을 작도한다.
6. 나타내는 삼각형의 엣지에 따라서 적절한 원시 요소 코드를 사각형에 배정하고, 그것을 CUL에 전송한다.
5.6.1.6 에일리어스된 점과 안티에일리어스된 점
셋업은 Ytop, Xcenter 및 Yoffset을 찾아서, 이들 값을 점폭과 에일리어싱 상태와 함께 CUL에 전송한다.
5.6.2 셋업 블럭 기능의 상세
이전의 섹션에서 설명된 다양한 원시 요소들의 프로세싱은 많은 공통점이 있다. 원시 요소들을 통일적으로 표현하여, 이 공통점을 설명한다.
5.6.2.1 단일화된 원시 요소 표현
앞서 설명한 바와 같이, 세업은 선 세그먼트를 네 개의 꼭지점으로 이루어진 평행 사변형으로 전환한다. 삼각형은 세 개의 꼭지점이 있다. 셋업은 각 원시 요소를 네 개의 점으로 된 세트로 설명한다. 모든 값이 모든 원시 요소를 필요로 하지는 않음에 주의한다. 삼각형의 경우, 셋업은 그 삼각형의 배향 구조에 따라서 상부, 하부 및 좌측 모서리 또는 우측 모서리 중 어느 하나를 사용한다. 선 세그먼트는 평행 사변형으로서 취급되고, 따라서 셋업은 네 개의 모든 점을 사용한다. 도 47 내지 도 51은 셋업이 삼각형과 선을 어떻게 표현하는 지를 도시하고 있다. 삼각형의 꼭지점들은 원래의 꼭지점과 동일하지만, 셋업은 새로운 꼭지점을 생성하여 네 개로서 선을 표현함에 주의한다.
원시 요소들의 통합된 표현 방법은 윈도우 좌표에서 원래의 꼭지점 세트에 배정되는 원시 요소 디스크립터를 사용한다. 그 외에, 어느 디스크립터가 유효값과 의미있는 값, 즉 VtxYmin, VtxYmax, VtxLeftC, VtxRightC, LeftCorner 및 RightCorner를 갖는 지를 표시하는 플래그들이 있다.
삼각형의 경우, 이들 디스크립터들은 그들의 y 좌표에 의해 삼각형 꼭지점을 분류함으로써 얻는다. 선 세그먼트의 경우, 이들 디스크립터들은 선의 네 개의 꼭지점들이 생성될 때 배정된다. VtxYmin은 최소 y값을 갖는 꼭지점이다. VtxYmax는 최대 y값을 갖는 꼭지점이다. VtxLeftC는 삼각형의 경우에 긴 y 엣지(꼭지점 VtxYmin과 VtxYmax를 연결함으로써 형성된 삼각형의 엣지)의 좌측과, 평행 사변형의 경우에 꼭지점 VtxYmin과 VtxYmax를 연결함으로써 형성된 대각선의 좌측에 놓여 있는 꼭지점이다. 만일 그 삼각형이 그 긴 y 엣지가 좌측 엣지이기도 하게 되어 있다면, 플래그 LeftCorner는 VtxLeftC가 무효임을 표시하는 거짓(0)이다. 마찬가지로, VtxRightC는 삼각형의 경우에 긴 y 엣지의 우측과, 평행 사변형의 경우에 꼭지점 VtxYmin과 VtxYmax를 연결함으로써 형성된 대각선의 우측에 놓여 있는 꼭지점이다. 만일 그 삼각형이 그 긴 y 엣지가 우측 엣지이기도 하게 되어 있다면, 플래그 RightCorner는 VtxRightC가 무효임을 표시하는 거짓(0)이다. 이들 디스크립터는 상부 및 하부 타일 엣지에 관한 원시 요소의 클립핑에 대해 사용된다. 실제로, VtxYmin, VtxYmax, VtxLeftC 및 VtxRightC는 원래의 원시 요소 꼭지점으로 인덱스됨에 주의한다.
부가의 디스크립터에는 VtxXmin, VtxXmax, VtxTopC, VtxBotC, TopCorner 및 BottomCorner가 있다. 삼각형의 경우, 이들 디스크립터들은 x 좌표에 의해 삼각형의 꼭지점들을 분류함으로써 얻는다. 선 세그먼트의 경우, 이들 디스크립터들은 선의 네 개의 꼭지점들이 생성될 때 배정된다. VtxXmin은 최소 x값을 갖는 꼭지점이다. VtxXmax는 최대 x값을 갖는 꼭지점이다. VtxTopC는 삼각형의 경우에 긴 x엣지(꼭지점 VtxXmin과 VtxXmax를 연결함으로써 형성된 삼각형의 엣지)의 위와, 평행 사변형의 경우에 꼭지점 VtxXmin과 VtxXmax를 연결함으로써 형성된 대각선의 위에 놓여 있는 꼭지점이다. 만일 그 삼각형이 그 긴 x 엣지가 상부 엣지이기도 하게 되어 있다면, 플래그 TopCorner는 VtxTopC가 무효임을 표시하는 거짓(0)이다. 마찬가지로, VtxBotC는 삼각형의 경우에 긴 x 엣지의 아래와, 평행 사변형의 경우에 꼭지점 VtxXmin과 VtxXmax를 연결함으로써 형성된 대각선의 아래에 놓여 있는 꼭지점이다. 만일 그 삼각형이 그 긴 x 엣지가 하부 엣지이기도 하게 되어 있다면, 플래그 BottomCorner는 VtxBotC가 무효임을 표시하는 거짓(0)이다. 이들 디스크립터는 좌측 및 우측 타일 엣지에 관한 원시 요소의 클립핑에 대해 사용된다. 실제로, VtxXmin, VtxXmax, VtxTopC 및 VtxBotC는 원래의 원시 요소 꼭지점으로 인덱스됨에 주의한다.
도 47은 꼭지점의 배정을 도식적으로 도시하고 있다. 이 외에, 본 출원인은 {SlYmaxLeft, SlYmaxRight, SlLeftYmin, SlRightYmin}으로 표현되는 네 개의 다각형 엣지의 기울기들(δx/δy)과, 기울기의 역(dx/dy){rSlXminTop, rSlXminBot, rSlTopXmax, rSlBotXmax}을 사용한다. 사용되는 기울기 명명의 협정은 SlStrtEnd이다. Sl은 엣지의 기울기이고, Strt는 엣지의 제1 꼭지점 식별자이며, End는 엣지의 제2 꼭지점 식별자이다. 따라서, SlYmaxLeft는 VtxYMax와 VtxLeftC를 연결하는 좌측 엣지의 기울기이다. 만일 leftC가 유효가 아니면, SlYmaxLeft는 긴 엣지의 기울기이다. 앞에 붙이 글자 r은 기울기가 역임을 표시한다. 즉, (δx/δy)가 아니라 (δy/δx)를 표현한다. 도 48은 기울기의 배정을 도식적으로 도시하고 있다.
이 모든 디스크립터들은 사변형 원시 요소들의 유효값을 갖지만, 그들 모두가 삼각형에 대해 유효하지 않을 수 있다. 처음에는 단순한 원시 요소들을 설명하기에 디스크립터들이 많아 보이지만, 나중에 보는 바와 같이, 그들 디스크립터들은 상당히 용이하게 획득될 수 있고, 그들 디스크립터들은 원시 요소들을 셋업하기는데 매우 균일한 방법을 제공한다.
STP에 의해 다양한 원시 요소들을 처리함에 있어서 여러 단계들을 검사하면, 다음의 기능적 유닛들이 나온다.
1. 삼각형 디스크립터
2. 깊이 변화도 및 오프셋 계산
3. 선을 쿼드로 전환하기 위한 꼭지점 생성
4. 스티플된 선의 프리프로세싱
5. 타일에 클립핑하는 쿼드
6. Zmin, Zref, Bbox 계산
7. 점 프로세서
다음의 서브섹션에서는 이들 각 유닛들의 아키텍쳐를 상세하게 설명한다.
5.6.2.2 삼각형 디스크립터
삼각형의 경우, 셋업은 꼭지점 세트, 즉 (x0, y0, z0), (x1, y1, z1) 및 (x2, y2, z2)에서부터 개시한다. y에 의해 (오름차순으로) 분류되는 꼭지점에 관한 세 개의 인덱스 i0, i1 및 i2가 판단된다. 마찬가지로, x에 의해 (오름차순으로) 분류되는 꼭지점에 관한 세 개의 인덱스 j0, j1 및 j2가 판단된다.
인덱스 i0, i1 및 i2는 (dx/dy) 미분 세트를 계산하는데 사용된다. 그리고, 인덱스 j0, j1 및 j2는 꼭지점에 대한 (dy/dx) 미분을 계산하는데 사용된다.
본 출원인은 엣지 상의 삼각형, 즉 두 개의 엣지의 기울기가 같은 삼각형을 버린다. 중앙의 꼭지점이 좌측에 있는지 또는 우측에 있는지에 관해서는, 기울기들, 즉 꼭지점 v[i2]와 꼭지점 v[i1]에 의해 형성되는 선의 dx2/dy와, 꼭지점 v[i2]와 꼭지점 v[i0]에 의해 형성되는 선의 dx0/dy를 비교함으로써 판단된다. 만일 (dx2/dy>dx0/dy)이면, 긴 엣지의 우측에 있고, 그 밖의 경우에는 긴 엣지의 좌측에 있다. 이어서, 계산된 값들이 원시 요소의 디스크립터들에 배정된다. x 디스크립터를 배정하는 것은 유사하다. 이어서, 본 출원인은 본 출원인이 삼각형의 프로세싱에 필요한 엣지 기울기와 꼭지점 디스크립터를 갖는다.
5.6.2.3 깊이 변화도 및 오프셋 계산
깊이 변화도는 x 축과 y 축을 따른 편미분이다. 본 출원인은 다음의 방정식을 사용한다.
셋업은 분류 유닛으로부터 각 꼭지점 x값에 대한 26 개의 비트(s25)를 수신한다. 편미분은 1.24.10의 정밀도 값으로서 계산된다. x, y 좌표는 정밀도가 픽셀당 (8×8) 서브라스터 그리드에 상응하는 14 비트 정수이다. 편미분은 서브라스터 그리드의 스케일에 관해 계산된다.
다각형 오프셋은 다음과 같이 주어진다.
「인자(factor)」는 SRT 블럭으로부터 통과된다. (r*unit) 오프셋 부분은 GEO에서 소중하다. 본 출원인은 STP에서만 제1 항을 계산한다. 변화도 스케일을 고려하기 위해, 8의 곱셈이 행해진다. 깊이값은 24 비트 정수로서 표현된다. 이 오프셋은 꼭지점 z값들의 각각에 부가된다. 계산된 오프셋은 z값들에 부가되기 이전에 24 비트(실은 s24)에 클램프된다.
5.6.2.4 4개의 꼭지점 생성
본 출원인은 선 세그먼트들을 폭 w의 평행 사변형으로 전환한다. 본 출원인은 단부 상의 선들, 즉 동시 발생 종단점들을 갖는 선들을 버린다. 단부 상의 선들을 버리지 않으면, 선에 대한 0폭의 쿼드를 생성할 것이다. 이에 의해, 불필요한 패킷이 파이프에 전송되게 되어, VSP를 생성할지도 모르는 드문 경우에, 변칙적인 픽셀 농도가 생긴다. 오프셋을 계산하고 꼭지점을 디스크립터에 배정하는 프로세스는 초기에 표시되었고, 매우 직관적이다. 하지만, 아키텍쳐 파이프라인은 있을 수 있는 위험을 조심할 필요가 있다. 선 종단점이 주어지면, 본 출원인은 다음과 같이삼각함수를 계산한다.
또한, 선의 폭은 w이고, 종단점에서의 수평 및 수직 꼭지점 변위은 도 42 및 도 43에 도시되어 있는 바와 같이 각각 xhw 및 yhw에 의해 주어진다고 가정하자. 따라서, 네 개의 쿼드 꼭지점은 다음과 같이 배정된다.
xhw 및 yhw 즉 쿼드 꼭지점의 계산은 선의 배향 구조와 그의 에일리어싱 상태를 기초로 하여 행해진다. 도 49는 선의 배향 구조를 기초로 하여 사분면 배정을 도시하고 있다.
선이 놓여 있는 사분면이 어느 것인지는 (x0, y0)에 대해서 (x1, y1)의 상대 위치를 관찰함으로써 판단된다. 각 사분면에 대한 xhw, yhw 및 원시 요소 디스크립터가 판단된다. 또한, 본 출원인은 여기에서 StrtClipX, StrtClipY, EndClipX, EndClipY, OpX 및 OpY의 배정을 부가했다. 이들 6 개의 파라미터는 스티플된 선의 프로세싱 중에 사용된다. StrtClipX, StrtClipY, OpX 및 OpY는 전체적으로 타일 외부에 있는 임의의 스티플 세그먼트의 초기 제거 중에 사용된다. EndClipX 및 EndClipY는 ops와 함께, 선이 타일을 벗어났을 때를 판단하기 위해 사용된다.
이것은 다음의 프로세싱을 위해 쿼드에 관한 꼭지점과 원시 요소 디스크립터를 제공한다.
5.6.2.5 스티플 선 프리프로세싱
본 명세서의 상세한 설명 중 다른 곳에서 설명한 바와 같이, 스티플된 선 프리프로세싱은 두 개의 단계가 있다. 우선, 본 출원인은 타일과 접촉하지 않는 시트플 세그먼트를 제거하고, 새로운 개시 스티플 비트를 계산한다. 이어서, 본 출원인은 선을 가로지르고, 스티플 내의 1 비트들의 순열에 상응하는 선 길이를 생성한다. 본 출원인은 쿼드 꼭지점 생성이 본 출원인에게 반분의 폭 변위를 제공했다고 가정한다. 제1 스텝은 엣지들을 보호 대역만큼 변위시킨 이후 타일 경계를갖는 선의 제1 교차점을 찾는다. SRT 블럭은 타일과 접촉하는 선들을 본 출원인에게 전송할 뿐임에 주의한다. 따라서, 기울기 등을 기초로 하여 선의 사소한 거절을 점검할 필요가 없다. StrtClipX, StrtClipY, OpX 및 OpY는 이전의 섹션에서 획득되었다.
일단 교차점(xint, yint)이 계산되면, 주어진 개시점과 교차점 사이에 통과하는 스티플 패턴 비트의 수(nbits)를 찾는다. stplStart는 nbits에 부가되고, 본 출원인은 하위 4 개의 비트를 고려하여 본 출원인이 고려해야 하는 현재의 스티플 비트를 찾는다. stplRepeatStart는 변형되지 않은 채로 유지된다. 선 개시점은 「nbits」 스티플 패턴 비트들을 렌더링하는데 사용되는 선의 길이만큼 변위된다.
본 출원인은 보다 조밀한 클립핑을 행하고 새로운 stplRepeatStart를 생성할 수 있었음에 주의한다. 이것은 최상의 경우에 많아야 1 개의 부가적인 쿼드를 본 출원인에게 절감시켰을 것이기 때문에 절차가 뒤따르지 않은 것이다. 그 정도의 수혜로는 부가된 하드웨어 비용을 정당화하지 않는다.
이제, 본 출원인은 스티플 패턴 내의 1 비트들의 각 실행마다 쿼드를 생성하도록 선 세그먼트를 종횡하고, 제1 비트에 대해서 stplRepeatStart에서의 더 먼 반복 인자를 갖는 stplStart에서 시작한다. 일 예를 고려해보자. 만일 stplStartrk 14 이고, stplRepeat가 5 이며, stplRepeatStart가 4 라면, 15 번째 비트, 즉 스티플 패턴의 최종 비트로 이동하기 이전에 한 번 스티플 패턴의 14 번째 비트를 그린다. 만일 14 번째 비트와 15 번째 비트가 설정되고 0 번째 스티플 비트가 노어 설정되면, 쿼드 선 세그먼트는 6의 길이를 가질 것이다. 의사 코드에 사용된 Xscale과 Yscale은 스티플된 선 프리프로세싱 중에 초기에 서브루틴 DoStippleClip에서 계산된 것들과 같다.
일단 선 세그먼트 종단점이 획득되면, 그것은 굵은선으로서 렌더링될 수 있다. 선의 모든 쿼드들에 공통된 파라미터들이 단 한 번에 계산되도록 마이크로 아키텍쳐에서 최적화가 이루어져야 한다. 깊이 변화도, 선 기울기, 깊이 오프셋 및 xhw, yhw는 모든 스티플 쿼드에 공통이므로, 단 한 번에 생성될 필요가 있다.
5.6.2.6 타일 경계에서의 쿼드 클리핑
본 출원인은 CUL 블럭의 MCAAM 컬에 필요한 최소 z와 바운딩 파라미터를 얻기 위해 현재의 타일에 관해 원시 요소의 교차부를 판단할 필요가 있다. 본 출원인의 통일된 원시 요소 표현 방법에 있어서, 본 출원인은 일반화된 쿼드를 사용하여 마찬가지로 삼각형을 표현한다. 본 출원인은 원시 요소 클립 디스크립터를 사용하여 타일에 관한 원시 요소의 교차부를 설명한다. 이들 디스크립터들은 타일의 4 개의 엣지를 갖는 원시 요소의 교차점들과, 그 교차부가 유효값을 생성했는 지를 표시하는 관련 유효 플래그이다. 클립 디스크립터들의 명명은 도 50에 표시되어 있다. 다음의 서브섹션에서는 원시 요소를 타일에 클립하는데 사용되는 알고리즘을 상세하게 설명한다.
5.6.2.6.1 꼭지점 클립 코드의 계산
우선, 본 출원인은 원시 요소 꼭지점들의 각각에 대해 클립코드를 계산한다. 클립코드는 도 50에 도시된 바와 같은 꼭지점들에 배정되고, 그들 꼭지점의 각각에 대해 다음과 같이 획득된다.
5.6.2.6.2 교차부 계산
본 출원인은 그 클립보드를 사용하여, 클립되어야 할 엣지와, 어느 경계로의 엣지인지를 판단한다. 고려 중인 원시 요소는 볼록형이다. 각 타일 엣지는 반쪽 평면을 정의하고, 따라서 본 출원인은 두 개의 교차점을 갖거나 각 엣지에 교차점을 전혀 갖지 않는다.
상부 타일 엣지에 클립핑하면 tLeft와 tRight를 얻고, 이들은 상부 타일 엣지 상의 좌측 클립 꼭지점과 우측 클립 꼭지점이다.
하부 타일 엣지에 클립핑하는 것은 상부 엣지 상의 그것과 동등하게 수행된다. 하부 엣지 클립핑은 bLeft와 bRight를 얻고, 이들은 하부 좌측 클립 꼭지점과 하부 우측 클립 꼭지점이다.
좌측 및 우측 엣지 클립핑은 x에서 분류된 꼭지점을 사용하고, 좌측 엣지 상에서 높은 교차점과 낮은 교차점, 즉 lLow, lHigh와, 우측 엣지 상에서 높은 교차잠과 낮은 교차점, 즉 rLow, rHigh를 얻는다. 좌측 엣지에 대한 절차는 하부 엣지와 같고, 우측 엣지에 대한 절차는 상부 엣지와 같음에 주의한다. 또한, 본 출원인은 기울기 디스크립터 대신에 역기울기 디스크립터를 사용하고 있음에 주의한다.
좌측 타일 엣지 상에 클립핑하는 것은 우측 타일 엣지와 같게 행해진다. 좌측 엣지 클립핑의 출력은 두 개의 점, 즉 lLow와 lHigh이다.
이제, 본 출원인은 8 개의 모든 점, 즉 tLeft, tRight, bLeft, bRight, lLow, lHigh, rLow 및 rHigh를 갖는다.
5.6.2.6.3 교차점의 유효화
우선, 그들을 확인하여 그들이 우측 범위 내에 있는지를 확실히 한다. 예컨대, 상부 타일 엣지를 갖는 교차점은 그들이 모두 티일의 좌측에 있게 되어 있을 수 있다. 이 경우, 교차점들은 무효로 마크된다. 만일 엣지를 갖는 교차부가 그 교차부에 하나 또는 두 개의 타일 상부 모서리를 포함하고 있게 되어 있다면, 유효인 새로운 교차점이 생성된다.
유효하다고 할 교차점이 전혀 없다면, 원시 요소는 버린다. 대부분의 경우에, 타일 외부에 놓여 있는 삼각형은 SRT 블럭에 의해 버려질 것임에 주의한다. 그러나, 몇 가지의 드문 경우에 있어서, 본 출원인은 완전히 타일 외부에 있는 삼각형, 예컨대 11.3까지 스냅핑하는 꼭지점이 와인딩의 역을 발생하는 길고 가는 삼각형을 얻을 수도 있다. 이 경우, 유효 플래그에 의해, 본 출원인은 그 삼각형을 버릴 수 있을 것이다.
5.6.2.6.4 윈도우 외부의 쿼드 꼭지점
윈도우의 엣지에서 타일 상의 선이 넓으면, 계산된 꼭지점들 중 하나 또는 그 이상이 윈도우 범위 외부에 놓이는 것도 가능하다. 셋업은 이것을, 초과 좌표 범위의 2 비트(즉, 한 비트는 음수값을 고려할 수 있고, 한 비트는 크기 범위를 증가할 수 있는 것)를 수행함으로써 다룰 수 있다. CUL 블럭(x 좌표에 대한 14.2)에 전송되는 데이터의 범위와 정밀도는 윈도우 범위 내부에 있는 점들을 정의하기에 충분하다. CUL 블럭이 셋업으로부터 얻는 데이터는 좌측 모서리 점과 우측 모서리 점을 포함하고 있다. 쿼드 꼭지점이 윈도우 범위 외부에 떨어지는 경우에, 셋업은 다음의 값들을 CUL에 통과시킬 것이다.
● 만일 tRight.x가 윈도우 범위의 우측에 있다면, 우측 윈도우 엣지에 클램프한다.
● 만일 tLeft.x가 윈도우 범위의 좌측에 있다면, 좌측 윈도우 엣지에 클램프한다.
● 만일 v[VtxRightC].x가 윈도우 범위의 우측에 있다면, 꼭지점 rLow, 즉 우측 타일 엣지 상의 보다 낮은 클립점을 우측 모서리로서 전송한다.
● 만일 v[VtxLeftC].x가 윈도우 범위의 좌측에 있다면, 꼭지점 lLow, 즉 좌측 타일 엣지 상의 보다 낮은 클립점을 좌측 모서리로서 전송한다.
이것은 도 51에 도식적으로 표현되어 있다.
삼각형들은 기하구조에 의해서 유효 윈도우 범위에 클립된다. 본 출원인은 넓은 선에 대해서 생성되는 쿼드들에 관한 걱정을 해야할 뿐이다. 컬은, 범위를 벗어나서 x값이 엣지 워킹 중에 발생할 수 있기 때문에, 라스터화 중에 스팬 종단점을 계산할 때, 오버프로우와 언더플로우를 검출할 필요가 있다. 만일 오버플로우 또는 언더플로우가 발생하면, x 범위는 타일 범위 내에 클램프되어야 한다.
이제, 본 출원인은 클립된 점과 유효 플래그를 얻었다. 이제, 본 출원인은 Zmin, 바운딩 상자 및 기준 스탬프의 계산으로 진행할 수 있다.
5.6.2.7 바운딩 상자, 최소 Z 및 기준 스탬프 판단
바운드 상자, zMin, 및 기준 스탬프값을 계산하기 위해, 본 출원인은 원시 요소와 타일의 교차부를 사용한다. 본 출원인은 타일 내에 놓여 있는 원시 요소의 부분에 대한 최소 Z값을 계산한다. 원시 요소를 타일 경계에 클립핑하는 것은 컬 블럭의 MCCAM 컬에 대한 Zmin의 촘촘한 추정치를 얻는데 중요하다.
5.6.2.7.1 바운딩 상자 계산
원시 요소 교차부의 바운딩은 클립된 꼭지점을 검사함으로써 판단된다. 본 출원인은 이들 8 개의 점을 사용하여 바운딩 상자를 계산한다. 우선, 본 출원인은 타일 경계에 대한 바운딩 상자를 초기화하고, 이어서 그것을, 엣지 클립점을 검사함으로써 타일로 이동시킨다.
이제, 본 출원인은 바운딩 상자를 얻었다. 이들 xmin, xmax, ymin, ymax 픽셀 좌표는 스탬프 좌표로 전환될 필요가 있다. 이 전환은, 우선권 그 좌표들을 타일 관련 값들로 전환하고, 이어서 높은 세 개의 비트들만(1 비트씩 우측으로 시프트한다)을 고려함으로써 달성될 수 있다. 이것은 xmax(및/또는 ymax)가 타일의 엣지에 있을 때를 제외하고 정상 작동한다. 그 경우, 본 출원인은 시프팅 이전에 1 유닛씩 xmax(및/또는 ymax)를 감분한다.
5.6.2.7.2 최소 Z 계산
이제, 본 출원인은 원시 요소와 타일의 교차부에 대한 최소 z값을 계산한다. 본 출원인은 클립핑 계산시 포함되어 있지 않았을 수도 있기 때문에 8 개의 교차점과 꼭지점 i1을 고려할 필요가 있다. 깊이 계산은 고가의 연산이고, 따라서 본 출원인은 수행될 필요가 있는 깊이 계산의 수를 최소화하고자 하는 것에 주의한다. x와 y에서의 z 편미분의 부호를 검사함으로써, 본 출원인은 만일 원시 요소가 타일을 완전히 덮었다면 최소 깊이값에 상응할 수 있는 타일 모서리를 찾을 수 있다. 일단 본 출원인이 타일 모서리를 판단했다면, 본 출원인은 클립된 두 개의 최근접 점에서의 깊이값을 계산하기만 하면 된다. 꼭지점 i1에서의 z값과 함께 이들 두 개의 값은 본 출원인에게 최고 z값을 제공한다.
이제, 본 출원인은 최소 z값과, 그것이 획득되는 클립 꼭지점을 인지한다. z값은 CUL에 전송하기 이전에 24 비트에 클램프된다. 이제, 본 출원인은 기준 스탬프와 기준 z값을 계산한다.
5.6.2.7.3 기준 스탬프와 기준 Z 계산
원시 요소의 각 꼭지점에 대해 z값을 통과시키는 대신에, 셋업은 단일의 z값을 통과시켜, 원시 요소 내의 특꼭지점에서의 z값을 표현한다. 셋업은 최소 z를 갖는 꼭지점을 포함하고 있는 기준 스탬프를 선택한다. 본 출원인은 이를, 꼭지점 좌표를 정수값으로 절단하고 상응하는 스탬프를 찾음으로써 달성한다. 기준 스탬프가 계산되기 이전에, 우측 엣지 상의 꼭지점의 경우에는 x 좌표가 감분되고, 상부 엣지의 경우에는 y 좌표가 감분된다. 기준 스탬프를 식별하기 위해 로직이 사용되기도 한다.
기준 스탬프를 식별하는 것은, 증분값을 클립 꼭지점이 x 좌표와 y 좌표에 부가하고, x값과 y값을 최근접 짝수값으로 절단함으로써 포함하고 있는 스탬프를 찾음으로써 행해진다.
기준 z값 zRefTile은 기준 스탬프의 중심에서 계산된다. 셋업은 타일에 있는 그의 위치를 지정하는, 한 쌍의 3 비트값(xRefStamp및 yRefStamp)을 갖는 기준 스탬프를 식별한다. 기준 스탬프는 타일의 모서리로부터 스탬프 내의 오프셋으로서 식별됨에 주의한다.
본 출원인은 스크린 공간에서 오프셋을 얻기 위해 8(스탬프에서의 서브픽셀수)을 곱해야 한다.
이제, 본 출원인은 삼각형과 평행 사변형을 컬에 의해 프로세싱하는데 필요한 모든 것을 얻었다.
5.6.2.8 점 프로세싱
점의 경우에, 다음을 찾는다(도 52 참조).
CYT(타일 좌표에서, 타일의 상부 엣지에 의해 클립된, 원의 최상부 점)
CYB(타일 좌표에서, 타일의 하부 엣지에 의해 클립된, 원의 최하부 점)
Yoffset(CYT와 클립되지 않은 원의 하부간의 거리)
X0(윈도우 좌표에서 중심의 x 좌표)
점에 대해 필요한 계산에서, 본 출원인은 범위가 0.0에서 16.0인 타일 관련 y값에 대해 8 비트를 사용한다. 이것은 5 개의 정수 비트를 필요로 한다. 3 개의 부분 비트가 픽셀당 8 개의 서브라스터를 고려하는데 사용된다.
5.6.2.8.1 유한 dx/dy
유한 dx/dy는 엣지가 완벽하게 수평임을 의미한다. 수평 엣지의 경우에, 두 개의 종단점 중 하나는 모서리 꼭지점(VtxLeftC와 VtxRightC)이어야 한다. 좌표가 윈도우 범위 이내에 놓여 있는 원시 요소의 경우, 컬은 유한 기울기를 사용하지 않을 것이다. 그 이유는, 컬의 엣지 워킹 알고리즘의 경우, 좌측 및/또는 우측 모서리 꼭지점의 y값으로부터, 그것을 소정의 모서리로 전환했고 그것은 수평 엣지를 따라 워킹할 필요가 없다는 것을 말할 수 있을 것이기 때문이다.
불행하게도, 쿼드 꼭지점이 윈도우 범위 외부에 떨어질 때, 본 출원인은 특히 비안티 에일리어스된 선의 경우에 사소한 문제에 부닥친다. 상부 우측 모서리가 윈도우 범위 외부에 있는 비안티 에일리어스된 선의 경우를 고려한다. 이어서, RightC는 rLow 클립점으로 이동되고, 컬의 엣지 워킹은 수평 엣지 상에 모서리를 돌린다고는 간주하지 않을 것이고, 그것은 tRight(또는 tLeft)로부터 스팬 종단점을 계산하려고 할 것이다. (도 51 참조).
이 경우, 컬의 엣지 워킹은 기울기를 필요로 할 것이다. 엣지 워킹에 대한 개시점이 윈도우의 바로 그 엣지에 있기 때문에, 엣지 워킹이 정확하게 사인된 기울기로 계산하는 임의의 X는 오버플로우(또는 언더플로우)를 발생할 것이고, X는윈도우 엣지로 다시 간단히 클램프될 것이다. 따라서, 그것은 실제로, 그것이 정확한 사인으로 되어 있는 한 그것이 사용하는 어떤 기울기값을 사용하는지는 중요하지 않다.
또한, 유한의 값은 셋업이 기울기를 사용하는 것과는 관계가 없다. 셋업은 기울기를 사용하여, 타일 엣지를 갖는 원시 요소 엣지의 가로채기를 계산한다. 그 가로채기를 계산하는 방정식은 X=X0+ΔY*dx/dy의 형태로 되어 있다. 이 경우, 유한의 dx/dy는 반드시 0의 Y를 의미한다. 따라서, dx/dy의 값은 아무런 영향을 미치지 않는다.
셋업은 부동점 포맷에서 내부적으로 기울기를 계산한다. 부동점 유닛은 유한 플래그를 주장할 것이고, 유한의 결과가 발생해야 한다. 셋업은 유한 기울기에 관해 아무런 영향을 미치지 않고, 컬은 유한 기울기의 크기에 관해 아무런 영향을 미치지 않지만, 사인에 관해서는 영향을 미치기 때문에, 본 출원인은 유한성을 표현할 필요가 전혀 없다. 정확한 사인을 판단하는 문제를 해소하기 위해, 셋업은 유한 기울기를 0으로 만든 후에 그것을 컬로 통과시킨다.
5.7 컬 블럭(CUL)
5.7.1 CUL 블럭의 기능 개관
컬 유닛은, 1) 잠복면 제거를 프리쉐이딩하고, 2) 원시 요소 기하구조 엔트리(삼각형, 선 및 점)들을, 가시 스탬프 부분(VSP)라고 하는 스탬프 기반의 기하구조 엔트리로 쪼개는 일을 한다. 일반적으로, 컬 유닛은 잠복면의 보존적 컬링을 행한다. 컬은 잠복면을 보존적으로 제거할 뿐이다. 그 이유는, 컬은 알파 테스트와스텐실 테스트 등의 몇 가지 「프래그먼트 연산」을 취급하지 않기 때문이다. 컬 블럭의 샘플 z 버퍼는 두 개의 깊이값을 유지할 수 있지만, 컬 블럭은 샘플당 하나의 원시 요소의 속성들을 기억할 뿐이다. 따라서, 샘플이 기하구조의 두 개의 조각으로부터 칼라를 블렌딩하는 것을 필요로 할 때마다, 컬은 블렌딩된 기하구조의 두 조각을 잠복시키는 나중의 기하구조가 존재할 수 있더라도 제1 원시 요소를 (시간 순서를 사용하여) 파이프라인으로 전송해야 한다.
컬 유닛은 타일당을 기준으로 삼각형, 선 또는 점을 각각 설명하는 셋업 출력 원시 요소 패킷들을 수신한다. 분류는 인입 기하구조 엔트리들을 타일에 보관하는 유닛이다. 셋업은 컬에 관한 보다 상세한 기하구조의 정보를 제공하여 잠복면 제거를 행하기 위해 원시 요소를 프리프로세스하는 유닛이다. 셋업은 모든 엣지에 관한 기울기값, 타일 내의 원시 요소의 바운딩 상자, 타일 내의 원시 요소의 최소 깊이값(최전방), 및 기타 관련 데이터를 미리 계산한다. 분류 이전에, 모드 추출은 칼라, 라이트, 텍스쳐 및 관련 모드 데이터의 정보를 이미 추출했고, 컬은 다각형 메모리 내에 기억되어 있는 칼라, 라이트 및 텍스쳐 데이터를 지시하는 칼라 포인터라고 하는 포인터와 컬에 관련된 모드 데이터를 얻을 뿐이다.
컬 유닛은 한 번에 하나의 가시 스탬프 부분(VSP)을 모드 주입 유닛에 전송한다. VSP는 스탬프 내의 기하구조 엔터티의 가시 부분이다. 모드 주입은 그 VSP를 그의 칼라, 라이트 및 텍스쳐 데이터와 재연결하고, 그것을 파이프라인에서 프래그먼트와 나중의 스테이지에 전송한다.
컬 유닛은 두 개의 주요 기능을 수행한다. 일차적인 기능은 프레임 버퍼에서의 최종 결과(잠복면 제거의 보존적 형태)에 영향을 미치지 않게 보장되는 기하구조를 제거하는 것이다. 이차적인 기능은 원시 요소들을 스탬프 부분(SP)의 유닛으로 쪼개는 것이다. 스탬프 부분은 원시 요소와 주어진 스탬프의 교차부이다. 부분의 량은 샘플링에 의해서 판단된다. 임의의 스탬프는 16 개의 판단된 샘플점을 가질 것이다(실제로, 스탬프 내의 각 픽셀은 4 개의 판단된 샘플점을 갖는다). 이어서, 부분의 「사이즈」는 주어진 스탬프의 원시 요소에 의해 덮히는 샘플점의 수와 세트에 의해 주어진다.
컬은 원시 요소를 한 번에 한 개의 타일로 처리한다. 그러나, 현재의 프레임의 경우, 파이프라인은 두 가지 모드, 즉 시간 순서 모드와 분류된 투명성 모드 중 하나에 속한다. 시간 순서 모드에서, 꼭지점과 모드의 시간 순서는 각 타일 내에 유지되고, 타일은 데이터를 통해서 단일의 통로로 처리된다. 즉, 주어진 타일에 대해서, 꼭지점과 모드는 기록되는 순서와 동일한 순서로 판독되지만, 그들이 현재의 타일에 영향을 미치지 않는 경우에는 스킵된다. 분류된 투명성 모드에서, 각 타일의 프로세싱은 복수 개의 통로로 분할된다. 여기에서, 제1 통로에서는 보증된 불명료 기하구조가 처리된다(분류 블럭은 이 통로에 관한 비투명 기하구조를 전송할 뿐이다). 후속의 통로들에서, 잠재적으로 투명한 기하구조가 처리된다(분류 블럭은 각 통로마다 투명한 모든 기하구조를 반복적으로 전송한다). 각 통로 내에서, 시간 배열은 유지되고, 모드 데이터는 그의 정확한 시간 순서 위치에 삽입된다.
시간 순서 모드에서, 타일 내에 「단순한 불투명 기하구조」(즉, 시저 테스트, 알파 테스트, 칼라 테스트, 스텐실 테스트, 블렌딩 또는 로지코프가 없음)만이있는 경우에, 컬은 타일 내의 모든 원시 요소를 처리한 후에 임의의 VSP를 모드 주입에 디스패치할 것이다. 그 이유는, 컬 잠복면 제거 알고리즘은 각 샘플마다, 그 샘플을 덮는 단일의 원시 요소(즉, 칼라)를 명확하게 판단할 수 있다. 「단순한 불투명 기하구조」의 경우는 렌더링 장치가 일반적으로 너무 자주 나타나지 않는 특수한 경우이다.
시간 순서 모드에서, 입력 기하구조가 타일 내의 「단순한 불투명 기하구조」에 한정되지 않을 때, VSP의 초기 디스패치(전체 VSP 세트 또는 선택된 VSP)가 요구될 수 있다. 그러나, 예외 없이, 주어진 타일의 모든 VSP가 디스패치된 후에, 다른 타일의 임의의 VSP가 디스패치될 수 있다. 일반적으로, 초기 디스패치는 기하구조의 하나 이상의 조각이 임의의 샘플에 대한 최종 타일값들(픽셀 내의)에 영향을 미칠 수도 있을 때 요구된다.
분류된 투명성 모드에서, 각 타일은 복수 개의 통로에서 처리된다(타일 내에 적어도 몇 개의 투명 기하구조가 있다고 가정함). 각 통로에서, VSP의 초기 디스패치는 없다.
만일 입력 패킷이 원시 요소 패킷이라면, PrimType 파라미터는 원시 요소의 종류(삼각형, 선 또는 점)를 표시한다. 원시 요소의 공간 위치(미분 등을 포함)는 「통일된 디스크립션」을 이용하여 찾는다. 즉, 패킷은 원시 요소를 사변형(스크린 배열되지 않음)으로서 디스크립션하고, 삼각형과 점은 퇴화한 경우이다. 「통일된 디스크립션」에 관해서는 섹션 「셋업 출력 원시 요소 패킷」에서 상당히 자세하게 설명된다. 패킷은 모드 주입에 의해 사용되는 칼라 포인터이다. 또한, 패킷은 복수개의 모드 비트를 포함한다. 그들 중 많은 모드 비트가 원시 요소 단위로 변할 수 있다. 다음의 것들, 즉 CullFlushCurrent, DoAlphaTest, DoABlend, DepthFunc, DepthTestEnabled, DepthTestMask 및 NoColor가 「모드 비트」인 것으로 고려되고, Z 컬 상태 기구에 입력된다.
원시 요소 외에, 컬은 다음의 패킷 종류들, 즉 셋업 출력 클리어 패킷, 셋업 출력 컬 패킷, 셋업 출력 개시 프레임 패킷, 셋업 출력 엔드 프레임 패킷, 셋업 출력 개시 타일 패킷, 및 셋업 출력 트윈 패킷을 수신한다. 이들 패킷 종류들의 각각은 나중의 섹션에 상세하게 설명되어 있다. 그러나, 총체적으로, 이들 패킷은 「모드 패킷」이라고 알려져 있다(공인되게, 다소 오도된 작명).
셋업 출력 클리어 패킷은 몇 가지 종류의 버퍼 클리어가 수행될 수 있음을 표시한다. 그러나, 사용자 프레임의 개시부에서 발생하는(그리고 시저 테스트에 지배를 받는) 버퍼 클리어는 개시 타일 패킷 내에 포함되어 있다.
셋업 출력 컬 패킷은 모드 비트들로 된 패킷이다. 이 패킷은, 1) MCCAM 컬과 Z 컬 프로세스들을 인에이블링/디스에이블링, 2) 컬 블럭으로부터 모든 VSP의 플러쉬를 발생하는 비트, 즉 CullFlushAll, 3) 세 가지 종류의 원시 요소에 대한 디안티 에일리어싱을 디스에이블하는 AliasPolys, AliasLines 및 AliasPoints를 위한 비트들을 포함한다.
셋업 출력 개시 프레임 패킷은 새로운 프레임이 개시하는 컬에 관한 것이다. 다음 패킷은 분류 출력 개시 타일 패킷일 것이다. 셋업 출력 개시 프레임 패킷은 파이프라인에 걸쳐서 필요한 모든 프레임당 정보를 포함하고 있다.
셋업 출력 엔드 프레임 패킷은 프레임이 종료되었고, 현재 타일의 입력이 완료되었음을 표시한다.
셋업 출력 개시 타일 패킷은 현재 타일이 종료되었고, 처리된 데이터가 파이프라인으로 프러쉬되어야 하는 컬에 관한 것이다. 그리고, 동시에, 그것은 새로운 타일의 원시 요소를 처리하기 시작해야 한다. 만일 파이프라인이 분류된 투명성 모드 내에 있기 때문에 타일이 반복될 수 있다면, 이것은 다른 셋업 출력 개시 타일 패킷을 요구한다. 따라서, 만일 특정 타일이 하나의 불명료 통로와 4 개의 투명 통로를 필요로 한다면, 총 5 개의 개시 타일 패킷이 셋업으로부터 전송된다. 이 패킷은 윈도우 내에서 타일의 위치를 지정한다.
셋업 출력 트윈 패킷은, 당연히 타일 사이에 있는 프레임들 사이(between)[따라서, 트윈('tween)]에서 발생할 수 있을 뿐이다. 컬은 이 패킷을 블랙 박스로서 취급하고, 그 패킷을 그대로 파이프라인에 통과시킨다. 이 패킷은 144 비트인 하나의 파라미터, 즉 TweenData만을 갖는다.
도 53은 컬 블럭의 기본 블럭도를 도시하고 있다.
원시 요소가 수신될 때마다, 컬은 MCCAM(9002)에게 원시 요소의 바운딩 상자를 질문함으로써 그 원시 요소를 제거하려고 시도할 것이다. 만일 MCCAM이 그 원시 요소가 타일 내에 완전히 잠복되어 있다고 대답하면, 그 원시 요소는 버린다. 만일 MCCAM이 그 원시 요소를 완전히 거절할 수 없다면, 스탬프 리스트를 생성할 것이고, 리스트 내의 각 스탬프는 가시적일 수도 있는 원시 요소의 일부분을 포함할 수 있다. 잠재적 가시 스탬프들로 된 이 리스트는 컬의 스탬프 선택 블럭(9008)으로전송된다. 스탬프 선택 블럭은 원시 요소의 기하구조 데이터를 사용하여, 실제로 원시 요소에 의해 접촉되어 있는 타일의 각 스탬프 로우(row) 내에서 스탬프 세트를 판단할 것이다. MCCAM에 의해 생성된 스탬프 리스트와 결합되었으면, 스탬프 선택 블럭은 한 번에 하나의 잠재적 가시 스탬프(9006)를 Z 컬 블럭(9012)에 디스패치시킨다. 각 스탬프는 16×16 개의 서브픽셀로 된 그리드로 분할된다. 각 수평 그리드 선을 서브라스터 선이라고 부른다. 스탬프당 16 개의 샘플점의 각각은 256 개의 가능한 서브픽셀 위치들 중 하나의 중심에 떨어져야 한다(안티 에일리어스된 원시 요소의 경우). 각 픽셀은 그의 경계 내에서 4 개의 샘플점을 갖는다. 원시 요소에 의해 접촉되는 스탬프 로우 내에 있는 스탬프 세트를 판단하는 프로세스는 적어도 하나의 샘플점을 포함하고 있는 각 서브라스터 선에 있는 원시 요소의 최좌측 및 최우측 위치를 계산하는 것을 포함한다. 본 출원인은 이들 최좌측 및 최우측 위치, 즉 XleftSubsi와 XrightSubsi를 호출해야 한다. XleftSubsi와 XrightSubsi는 각각, 샘플 i에 대한 x 최좌측 서브라스터 선과 샘플 i에 대한 x 최우측 서브라스터 선을 나타낸다. 샘플들에는 0에서 15까지의 수치가 부여된다. XleftSubsi와 XrightSubsi의 판단을 통상 엣지 워킹 프로세스라고 부른다. 만일 엣지 상의 한 점(x0, y0)을 안다면, y1의 y 위치에 상응하는 z1의 값은 다음 식에 의해 용이하게 판단될 수 있다.
스탬프 수 외에, 16 쌍의 XleftSubsi와 XrightSubsi세트는 또한, 스탬프 선택 블럭에 의해 Z 블럭으로 전송된다.
Z 컬 유닛은 한 번에 하나의 스탬프 수(또는 StampID)를 수신한다. 각 스탬프 수는 MCCAM에 의해 판단되는 바와 같이 가시적일 수 있는 원시 요소의 일부분을 포함하고 있다. 16 쌍의 XleftSubsi와 XrightSubsi세트에 의해, 16 개의 샘플점 중 어느 점들이 원시 요소에 의해 덮히는 지를 판단할 수 있다. Xsamplei, 즉 샘플 i의 x 좌표값이 다음 식을 만족하면, 샘플 i는 덮혀 있다.
덮힌 각 샘플마다, 본 출원인은 그 샘플점에서의 원시 요소의 z값을 계산한다. 동시에, 16 개의 샘플점에 대한 현재 z값과 z상태는 샘플 z 버퍼로부터 판독된다. 각 샘플점은 「보존적」 또는 「정밀한」 z 상태를 갖는다. 컬에 의해 수신된 모드 비트와 결합되는 z 상태는 샘플 유한 상태 기구를 구동시킨다. 그 상태 기구는 원시 요소의 z값과 z 버퍼의 z값간의 비교를 샘플당 단위로 제어한다. 그 비교의 결과는, 새로운 원시 요소는 그 원시 요소가 덮고 있는 각 샘플점에서 가시적인지 잠복적인지를 판단하는데 사용된다. 만일 그 원시 요소는 가시적인 임의의 샘플점을 포함하고 있다면, 가시적 샘플 패턴이 소정의 새로운 VSP 커버리지 마스크에 형성된다. 또한, 샘플의 픽셀 FSM은 z 버퍼가 그 샘플에 대해 어떻게 업데이트되어야 하는 지와, 그 새로운 VSP의 샘플점이 초기에 디스패치되어야 하는 지를 판단한다. 더욱이, 샘플의 픽셀 FSM은 샘플점을 포함할 수 있는 임의의 과거 VSP가 파괴되어야 할 지 또는 초기에 디스패치되어야 할 지를 판단한다. 이들 샘플당 제어 신호들은 Z 컬에 의해서 SendNew 마스크, KeepOld 마스크 및 SendOld 마스크로서 생성되고, 스탬프 부분 마스크 유닛(9014)에 전송된다. 픽셀 유한 상태에 대한 상태 테이블에 관해서는 아키텍쳐 설명서에 설명되어 있고, 본 명세서에서는 되풀이하지 않는다. 16 개의 샘플점의 z값의 최대값은 MCCAM을 업데이트하는데 사용된다.
분류된 투명성의 경우는 Z 컬에 대한 추가적인 이슈를 제공하고, 샘플 z 버퍼에 관한 Zfar값과 Znear값의 논의를 초래한다. 분류된 투명성 모드에서, 본 출원인은 시간 순서 라스터화의 정상 모드 대신에, 최전방 불명료 층에 최근접한 층에서 시작하는 공간 순서로 투명 원시 요소가 라스터화되기를 원한다. 이것은 컬 유닛을 몇 번 통해 가도록 소정의 타일에 관한 투명 원시 요소들을 필요로 하다. 첫 번째에는, 분류 유닛에 투명 원시 요소만을 전송한다. z값은 마지막 문단에서 설명된 바와 같이 업데이트된다. 본 출원인은 종류 Zfar의 투명 원시 요소들에 관한 z값들을 호출한다. 통로(통과)의 종료시, 투명 VSP는 디스패치된다. 두 번 째 분류는 타일에 관한 투명 원시 요소들을 컬에 전송할 뿐이다. 초기에, z 버퍼의 Znear 부분은 가능한 최소 z값으로 프리세트된다. Zfar 뒤에 z값이 있는 샘플점은 잠복되어 있지만, Zfar 앞과 Znear 뒤의 z값은 명료에 보다 가깝고, 따라서 현재의 Znear의 z값을 대체한다. 통로(통과)의 종료시, 본 출원인은 명료층과 가장 가까운 층의 z값을 가질 것이다. 명료층에 가장 가까운 것을 나타내는 VSP는 디스패치된다. Znear와 Zfar의 역할은 바뀌어 있고, Z 컬은 투명 원시 요소들의 제2 통로(통과)를 수신한다. 이 프로세스는 Z 컬이, 그것이 투명 원시 요소들의 있을 수 있는 모든 층들을 처리했는 지를 판단할 때까지 계속된다. 또한, 분류된 투명 모드의 Z 컬은픽셀 유한 상태 기구에 의해 제어된다.
스탬프 부분 마스크 블럭은 타일 내의 각 스탬프에 관한 VSP 커버리지 마스크들을 포함하고 있다. 하나의 스탬프가 가질 수 있는 VSP의 최대수는 16 이다. 새로운 VSP가 Z 컬로부터 오는 경우, VSP 마스크는 업데이트 또는 초기 디시패치될 필요가 있다. 스탬프 부분 마스크 블럭은 SendNew 제어 신호, KeepOld 제어 신호 및 SendOld 제어 신호에 따라서 마스크 업데이트를 수행하거나 엄밀하게 디스패치될 것이다. 새로운 VSP는 스탬프 내에 있는 모든 과거 VSP의 커버리지 마스크를 잠재적으로 변형시킬 수 있기 때문에, 업데이트는 스탬프 내에 있는 16 개의 과거 VSP의 최대치에 대해 동시에 발생해야 한다. 스탬프 부분 데이터 블럭(9016)은 칼라 포인터에 한정되지 않는 것을 비롯해서, VSP와 관련된 다른 정보를 포함하고 있다. 또한, 스탬프 부분 데이터 메모리는 소정의 타일 내에 포함되어 있는 모든 VSP에 관한 데이터를 유지할 필요가 있다. 새로운 VSP가 생성될 때마다, 그의 관련 데이터는 메모리에 기억되어야 할 필요가 있다. 그리고, 과거 VSP가 디스패치될 때마다, 그의 데이터는 메모리로부터 회복될 필요가 있다.
5.7.2 컬 블럭 기능 상세
컬 블럭은 다음의 서브 유닛들, 즉, 1) 입력 FIFO, 2) MCCAM 컬, 3) 서브라스터화기, 4) 칼럼 선택, 5) Z 컬, 6) MCCAM 업데이트, 7) 새로운 VSP 큐, 8) 스탬프 부분 메모리 마스크, 9) 스탬프 부분 메모리 데이터, 10) 디스패치 큐, 및 11) 디스패치 로직으로 구성되어 있다. 이들 서브 유닛들에 관해서는 다음의 섹션들에서 설명된다. 도 54는 컬 서브 유닛들의 블럭도를 도시하고 있다.
5.7.2.1 입력 FIFO
입력 FIFO 서브 유닛(9002)은 셋업 유닛(8000)과 인터페이스한다. 입력 FIFO 서브 유닛(9002)은 셋업으로부터 데이터 패킷을 수신하고, 각 패킷을 하나의 큐로 기억한다. 필요한 FIFO 메모리 위치의 수는 16에서 32 사이이지만, 본 출원인은 여기에서, 깊이가 16 이라고 가정한다.
5.7.2.2 MCCAM 컬
MCCAM 컬 서브블럭(9002)은 공간 어드레스 가능한 메모리(MCCAM)를 사용하여, 원시 요소의 바운딩 상자에 관한 공간 질문을 수행해서 가시적일 수 있는 바운딩 상자 내의 스탬프 세트를 판단한다. Z 비교에 대해 사용할 값은 ZminTile이다. MCCAM 컬은 입력 FIFO로부터 사이클당 하나의 원시 요소를 처리할 수 있다. FIFO를 형성하는 판독 연산은, FIFO가 비어 있지 않고, 제거된 최종 원시 요소가 MCCAM 컬에 의해 판독되는 바와 같이 완전히 잠복되거나 최종 원시 요소가 서브라스터기 유닛(9052)에 의해 처리되고 있을 때, 발생한다. 다시 말하면, MCCAM 컬이 서브라스터기보다 앞서서 작업하지는 않을 것이다. 오히려, MCCAM 컬은 서브라스터기가 처리해야 할 다음 원시 요소를 얻고 나서 대기할 뿐이다.
5.7.2.3 스탬프 선택 로직 내의 서브라스터화기
서브라스터화기(9052)는 엣지 워킹을 행하는 서브 유닛이다(실제로, 「워킹(walking)」이라는 용어가 의미하는 것처럼 계산은 되풀이되지 않는다). 스탬프의 각 로우에 대해서, 그 MCCAM 컬은 잠재적으로 가시적임을 표시한다. MCCAM 컬은 16 샘플점들의 각각에 대해 XleftSubsi와 XrightSubsi를 동시에 계산한다.XleftSubsi와 XrightSubsi의 각 쌍은 원시 요소에 의해 접촉되고 있는 로우에서 스탬프 세트를 지정할 것이다. 서브라스터화기는 소정의 샘플점이 배치되어 있는 각 서브라스터화기 선에 대한 스탬프 로우에 접촉된 스탬프 세트를 판단하고, 접촉된 16 개의 스탬프 세트들을 1 개의 접촉된 스탬프 리스트에 조합시킨다. 서브라스터화기는 각 스탬프 로우에 대해 소정의 요구를 MCCAM 컬에 통과시키고, 소정의 가시 스탬프 리스트를 수신한다. 가시 스탬프 리스트는 그 접촉된 스탬프 리스트와 조합되고, 따라서 스탬프 로우 내의 최종의 잠재적인 가시 스탬프 세트를 판단한다. 각 로우에 대해, 가시 스탬프 세트는 스탬프 선택 로직의 칼럼 선택 부분에 전송된다. 서브라스터화기는 사이클당 스탬프들로 된 하나의 로우를 처리할 수 있다. 만일 소정의 원시 요소가 스탬프들로 된 1 개 이상의 로우를 포함하고 있다면, 서브라스터화기는 1 이상의 사이클을 취하여 원시 요소를 처리할 것이고, 따라서 입력 FIFO로부터 원시 요소의 제거를 스톨하기 위해 MCCAM을 요구할 필요가 있다. 소정의 요구가 칼럼 선택 유닛에 의해 행해진다면, 서브라스터화기 그 자체는 스톨될 수 있다.
5.7.2.4 스탬프 선택 로직 내의 칼럼 선택
칼럼 선택 서브 유닛(9054)은 각 클럭 사이클에서 처리하도록 스탬프하는 Z 컬 유닛(9012)에 관한 것이다. 만일 소정의 스탬프 로우가 1 개 이상의 잠재적 가시 스탬프를 포함하고 있다면, 칼럼 선택 유닛은 서브라스터화기에게 스톨할 것을 요구할 필요가 있다.
5.7.2.5 Z 컬
Z 컬 서브 유닛(9012)은 샘플 z 버퍼를 포함하고 있다. 서브라스터화기에 의해 계산되는 XleftSubsi와 XrightSubsi를 기초로 하여, Z 컬 서브 유닛(9012)은 원시 요소에 의해 덮히는 스탬프의 샘플점 세트를 판단한다. 이어서, Z 컬 서브 유닛(9012)은 그들 샘플점에서 원시 요소의 z값을 계산하고, 그 결과의 z값을 그 스탬프에 관한 z 버퍼에 기억되어 있는 상응 z값과 비교한다. 비교 결과, 현재의 컬 모드 비트 및 샘플 상태 기구의 상태를 기초로 하여, z 버퍼는 업데이트된다. 각 샘플에 대해서, Z 컬의 유한 상태 기구는 다음의 비트들, 즉 OldSampleKeep, OldSampleSend, NewSampleMask 및 NewSampleSend를 생성한다. NewSampleMask 비트 세트(그들 중 16 개)는 새로운 스탬프 부분(SP) 커버리지 마스크를 구성한다. 그 새로운 SP는 NewVSP 큐에 디스패치된다. 원시 요소가 스탬프 내에서 전혀 가시적이지 않은 경우(모든 NewSampleMask 비트가 거짓임)에, NewVSP 큐로 전송되는 것은 아무 것도 없다.
5.7.2.6 MCCAM 업데이트
MCCAM 업데이트 서브 유닛(9056)은 16 개의 샘플점에 관해 업데이트된 z값들 중 최대값을 판단하고, 그 최대값을 MCCAM 유닛에 전송하여 MCCAM을 업데이트한다.
5.7.2.7 NewVSP 큐
Z 컬 서브 유닛은 클럭 사이클당 스탬프 부분당 4 개의 비트 세트, 즉 OldSampleKeep, OldSampleSend, NewSampleMask 및 NewSampleSend를 생성한다. 「이상적인」 환경 하에서, SPM Mask&Valid 서브 유닛은 매 클럭 사이클마다 하나의 새로운 스탬프 부분을 기억할 수 있다. 그러나, SPM Mask&Valid 서브 유닛은 VSP의 초기 디스패치가 발생할 때 소정의 새로운 스탬프 부분에 대해 복수 개의 클럭을필요로 한다. 이것이 발생할 때, NewVSP 큐(9058)는 새로운 스탬프 부분을 기억하고, 따라서 Z 컬을 스톨링 없이 진행할 수 있다.
NewVSP 큐는 단순한 큐이다. 이 큐는 초기 디스패치의 경우에만 유용하다. SPM Mask&Valid 유닛은 한 번에 1 개의 VSP를 취급할 수 있을 뿐이다. 만일 초기 디스패치가 1 개 이상의 VSP를 포함한다면, Z 컬 유닛은 NewVSP 큐를 가지지 않았음을 스톨해야 할 것이다. 성능 분석을 기초로 하여, 본 출원인은 소정의 타일에 450 개의 스탬프가 접촉되었다고 기대한다. 깊이 복잡성이 2라면, 본 출원인은 타일당 Z 컬로부터 오는 225 개의 VSP를 기대할 것이다. 이것은 본 출원인이 스탬프당 평균적으로 약 4 개의 VSP를 볼 수 있을 것임을 의미한다. 블렌드가 50 픽셀 영역을 커버하게 되는 삼각형은 평균적으로 3 개의 타일과 접촉할 수 있고, 소정의 타일 내에 접촉하는 스탬프의 수는 8 개 이하이어야 한다. 따라서, 본 출원인은 NewVSP 큐 깊이를 32로 설정하기를 원한다.
5.7.2.8 SPM Mask&Valid
스탬프 부분 메모리 마스크와 유효 서브 유닛은 타일에 대해 VSP 커버리지 마스크를 포함하고 있다. 각 VSP 엔트리는 그곳에 유효 VSP가 기억되어 있는 지를 표시하기 위해 유효 비트를 필요로 할 것이다. VSP에 대한 유효 비트들은 분리된 메모리에 기억되어 있다. 이 서브 유닛은 마이크로아키텍쳐 블럭도로 도시되어 있는 바와 같이 이중 버퍼된다(즉, 두 개의 사본이 있다). 액티브 상태 페이지는 현재 타일에 관한 VSP를 포함할 것이고, 디스패치 상태 페이지는 최종 타일의 VSP(현재 디스패치되고 있는)를 포함할 것이다. 새로운 VSP가 NewVSP 큐로부터 제거될때, 액티브 상태 SPM Mask&Valid 유닛(9060)은 이미 그의 마스크 메모리 내에 있는 VSP에 대한 VSPMask를 업데이트하고, 그 새로운 VSP를 메모리 내용에 부가한다. 초기 디스패치를 요구하는 칼라 블렌딩 또는 다른 조건이 발생할 때, 액티브 상태 SPM Mask&Valid는 SPM 데이터 유닛을 통해서 VSP를 디스패치 큐로 디스패치시킨다. 마스크 업데이트 또는 초기 디스패치의 동작은 Z 컬에 의해서 생성된 OldSampleKeep 제어 신호, OldSampleSend 제어 신호 및 NewSampleSend 제어 신호에 의해 제어된다. 액티브에서 디스패치로 그리고 그 역으로의 상태 전이는 모드 패킷에 의해 제어된다. 소정의 타일의 패킷 시그널링 단부(개시 타일, 엔드 프레임, 버퍼 클리어, 또는 CullFlushAll을 갖는 컬 패킷은 참으로 설정한다)를 수신함으로써, 액티브 상태는 디스패치 상태로 그리고 그 역으로 전환되게 된다. 디스패치 상태의 페이지는 단순히 각 스탬프를 통해 순환하고, 모든 VSP를 SPM 데이터 유닛(9064)에 전송하여, 그 모든 VSP를 디스패치 큐로 전송(轉送)한다.
5.7.2.9 SPM 데이터
스탬프 부분 메모리 데이터 서브 유닛(9064)은 타일 내의 모든 VSP마다의 Zstamp, dz/dx, dz/dy 및 ColorPointer를 기억한다. 이 유닛도 이중 버퍼된다. SPM Mask&Valid는 새로운 VSP 정보를 SPM 데이터에 전송하고, 그것이 새로운 VSP를 전송하는지 또는 새로운 VSP를 그의 메모리에 저장시키는 지를 전한다. 만일 새로운 VSP가 저장되어야 한다면, SPM Mask&Valid도 그 새로운 VSP가 점유해야 하는 것이 16 개의 가능한 슬롯 중 어느 위치인 지를 전한다. 그 외에, 초기 디스패치의 경우에, SPM 데이터도 VSP 위치들로 된 리스트와, 초기 디스패치를 요구하는 관련VSPMask들을 얻는다. SPM 데이터 블럭은 우선, 디스패치되어야 할 임의의 과거 VSP가 있는 지를 검사한다. 만일 하나라도 있으면, SPM 데이터 블럭은 그의 메모리로부터 VSP 데이터를 간단히 판독하고, SPM Mask&Valid 블럭으로부터 전송된 VSPMask와 병합하며, VSP를 디스패치 큐에 배치한다. 이어서, SPM 데이터 블럭은 새로운 VSP도 전송되어야 하는 지와 그것이 긍정적인 지를 검사하고 나서, 그 새로운 VSP 데이터를 디스패치 큐에 통과시킨다. 만일 새로운 VSP가 전송되지 않아야 한다면, SPM 데이터 블럭은 그 새로운 VSP 데이터를 그의 메모리에 기록한다.
5.7.2.10 디스패치 큐와 디스패치 로직
이 유닛은 데이터 중 하나의 엔트리 분량을 두 개의 SPM의 디스패치 큐들 중 하나로부터 모드 주입 유닛으로 전송한다. 그 유닛은 디스패치 상태 SPM으로부터 먼저 디스패치하려고 시도할 것이다. 스탬프 부분 메모리가 그의 모든 VSP들을 소진한 디스패치 상태 이후에만, 그 유닛은 액티브 상태 SPM 디스패치 큐로부터 디스패치하려고 할 것이다.
5.8 모드 주입 블럭(MIJ)
5.8.1 서론
모드 추출 블럭과 연계하여, 모드 주입(MIJ) 블럭은 그래픽 상태 관련 정보를 관리하는 일을 한다. 종래의 그래픽 파이프라인에서, 상태 변경은 증분적이다. 즉, 상태 파라미터의 값은 그것이 변경될 때까지 유효하게 남아 있다. 따라서, 애플리케이션은 변경하는 파라미터들을 업데이트해야 할 뿐이다. 게다가, 렌더링은 선형적이다. 즉, 원시 요소들은 수신된 순서대로 렌더링된다. 점, 선, 삼각형 스트립, 삼각형 팬, 다각형, 쿼드 및 쿼드 스트립은 그래픽 원시 요소들의 예들이다. 따라서, 소정의 원시 요소에 관한 공간 정보가 수신될 때까지 누적된 모든 상태 변경은 그 원시 요소의 렌더링 중에 효력이 있다.
APEX 파이프라인에 관하여 설명한 본 발명의 일 실시예에서, 렌더링은 타일 베이스이다. 기하구조(GEO) 블럭은 원시 요소들을 순서대로 수신하고, 모든 꼭지점 연산(변환, 꼭지점 라이팅, 클립핑 및 원시 요소 어셈블리)을 수행하며, 그 데이터를 파이프라인에 전송한다. 분류 블럭은 시간 배열된 데이터를 수신하고, 그 데이터가 접촉하는 타일만큼 그 데이터를 보관한다. (각 타일 내에는 리스트가 시간 순서로 있다.) CUL 블럭은 데이터를 SRT 블럭으로부터 시간 순서로 수신하고, 렌더링된 이미지들에 전혀 기여하지 않는 원시 요소들의 부분들을 도태시켜 버린다. CUL 블럭은 VSP를 생성한다. VSP는 스탬프에 관한 소정의 다각형의 가시 부분에 상응한다. 스탬프는 이미지의 2×2 픽셀 영역이다. TEX 유닛과 PHG 유닛은 VSP를 수신한다. 그리고 TEX 유닛과 PHG 유닛은 각각 프래그먼트들을 텍스쳐링하고 라이팅하는 일을 한다. 최종 블럭, 즉 픽셀 블럭은 VSP와 프래그먼트 칼라를 사용하여 최종 화상을 생성한다.
소정의 원시 요소는 많은 타일들과 접촉할 수 있다. 따라서, 종래의 렌더링 파이프라인과는 달리, 프레임을 렌더링하고 있는 과정 중에 여러 번(그것이 접촉하는 각 타일에 한 번) 조회될 수 있다. 파이프라인은 원시 요소가 파이프라인에 진입했을 때 그래픽 상태를 효과적으로 기억하고 있다가, 그것이 SRT로부터 다운스트림되는 파이프라인 스테이지에 의해 조회될 때마다 그것을 재호출해야 한다. MEX는기하구조와, 일시적으로 배열된 상태 변경 데이터를 수집하고 저장하는 분류 블럭 사이의 로직 블럭이며, 적절한 포인터를 원시 요소 꼭지점에 부착하여 그것이 렌더링될 때 정확한 상태를 그 원시 요소와 연결짓는다.
모드 주입(MIJ) 블럭은 필요할 때 상태와, 상태 포인터(MLM 포인터라고도 알려짐)와 관련된 임의의 다른 정보를 부활시키는 일을 한다. 또한, 모드 주입 블럭은 정보를 적절하게 재패키징하는 일을 한다. 재패키징의 일 예는 다각형 메모리 내의 꼭지점 데이터가 부활되고 프래그먼트에 대한 원시 요소(삼각형, 선, 점) 입력 패킷으로 번들될 때 발생한다.
APEX 상태 관리 뒤의 연산 이론과 일반 원리는 MEX 블럭의 아키텍쳐 설명서에 논의되어 있다. 다각형 메모리 내의 다양한 데이터 패킷 구성도 MEX 블럭 설명서에 상세하게 설명되어 있다. 본 출원인은 본 명세서의 독자가 우선권 MEX 블럭 아키텍쳐 설명서를 통독할 것을 권장한다.
이 명세서에서, 우선, 본 출원인은 MIJ 블럭의 기능적 필요 조건에 관해 설명한다. 이어서, 본 출원인은 MIJ 블럭에 대한 입출력 인터페이스를 논의한다. 이것에 이어서, MIJ 블럭에 의해 사용되는 기능적 세부와 알고리즘을 설명한다. 마지막으로, 본 출원인은 성능과 메모리 대역폭 필요 조건을 언급한다.
5.8.2 MIJ 블럭의 기능 개관
앞서 언급한 바와 같이, MIJ는 CUL 블럭으로부터 VSP 패킷을 수신한다. 각 VSP 패킷은 2×2 픽셀 스탬프에 관한 원시 요소의 가시 부분에 상응한다. 컬 블럭에서 MIJ 블럭으로 출력되는 VSP 패킷은 반드시 원시 요소에 의해 배열되지는 않는다. 대부분의 경우에, VSP는 타일에 관한 VSP 주사 순서로 있을 것이다. 즉, 상이한 원시 요소들에 대한 VSP들은 인터리브될 수 있다. VSP에서의 프래그먼트들을 라이트, 텍스쳐 및 합성하기 위해, MIJ 블럭으로부터 다운스트림되는 파이프라인 스테이지들은 원시 요소의 종류(즉, 점, 선, 삼각형, 선 모드 삼각형)에 관한 정보, 즉 원시 요소의 꼭지점에서의 윈도우 좌표와 눈 좌표, 노말 좌표, 칼라 좌표, 및 텍스쳐 좌표 등의 그의 기하구조와, 원시 요소에 적용 가능한 PixelModes, TextureA, TextureB, 라이트, 재질 및 스티플 등의 렌더링 상태를 필요로 한다. 이 정보는 MEX에 의해 다각형 메모리 내에 저장된다. 또한, MEX는 ColorPointer들{ColorAddress, ColorOffset, 및 ColorType}을 분류에 전송되는 각 원시 요소에 부착하고, 이어서 그 원시 요소의 VSP들의 각각에 통과된다. MIJ는 이 포인터를 디코드하여, 다각형 메모리로부터 필요한 정보를 부활한다.
MIJ는 프레임에 관해 작업하기 시작한 이후에, CUL로부터 BeginFrame 패킷을 수신한다. 프레임에 대한 VSP 프로세싱은 CUL이 프레임 내의 제1 타일에 의해 행해지고 MIJ가 그 타일에 대한 제1 VSP를 수신할 때 시작한다.
5.8.2.1 칼라 포인터 디코드
칼라 포인터는 세 개의 부분, 즉 ColorAddress, ColorOffset 및 ColorType으로 이루어진다. (본 출원인은 독자에게 ColorPointer와 MLM_Pointer의 세부에 대해 모드 추출 아키텍쳐 설명서를 참조하기를 권한다.) ColorAddress는 원시 요소를 완료하는 ColorVertex를 지시한다. ColorOffset는 MLM_Pointer를 포함하고 있는 dualoct로부터 ColorAddress를 분리하는 꼭지점의 수를 제공한다. ColorType은 선모드 삼각형에 대한 원시 요소의 종류, 각 ColorVertex의 사이즈, 및 인에이블된 엣지에 관한 정보를 포함하고 있다. 원시 요소를 형성하는 ColorVertices는 2, 4, 6, 또는 9 듀얼옥트 길이일 수 있다. MIJ는 ColorPointer를 디코드하여, MLM_Pointer를 포함하고 있는 듀얼옥트의 어드레스들과, 원시 요소를 형성하는 모든 ColorVertices를 얻는다. MLM_Pointer는 다각형 메모리 내의 6 개의 상태 패킷들의 듀얼옥트 어드레스를 포함하고 있다.
5.8.2.2 캐쉬 관리
5.8.2.2.1 문제 개관
MIJ 블럭은, VSP가 그 스테이지에 도달하기 이전에, 프래그먼트, 텍스쳐, 퐁 및 픽셀 블럭이 VSP 내의 프래그먼트를 처리하는데 필요한 모든 정보를 갖는 것을 보장하는 일을 한다. 다시 말하면, 원시 요소의 ColorVertices와, MLM_Pointer의 포인터들 에 의해 지시되는 6 개의 상태 패킷은 VSP 프래그먼트가 처리되기 이전에 그들을 필요로 하는 블럭에 상주할 필요가 있다. 만일 MIJ가 VSP들의 각각에 대해 MLM_pointer, 상태 패킷, 및 ColorVertices를 부활하려 했다면, VSP당 거의 1KB의 데이터에 달할 것이다. 이것은 데이터를 판독하는 경우와 데이터를 FRG 블럭과 PIX 블럭으로 기록해내는 경우에 있어서 125 GB/sec의 다각형 메모리 대역폭에 상당한다. 분명한 것은, 각 VSP에 대한 데이터를 부활할 수 없고 몇 가지 형태이 캐슁이 요구된다.
VSP와 원시 요소에는 몇 가지 일관성이 있을 것, 즉 동일한 원시 요소에 상응하는 VSP의 순열을 얻기 쉽다고 가정하는 것이 합리적이다. 본 출원인은 이 일관성을 이용하여, 다각형 메모리로부터 판독되고 프래그먼트 블럭과 픽셀 블럭으로 이송되는 데이터의 량을 감소시킨다. 만일 현재 VSP가 이전의 VSP와 동일한 원시 요소로부터 발원한다면, 본 출원인은 데이터 부활을 전혀 행할 필요가 없다. 앞서 지적한 바와 같이, VSP는 원시 요소의 순서로 MIJ에 도달하지 않는다. 그 대신에, VSP는 타일 상의 VSP 주사 순서로 있다. 즉, 주사선을 가로지르는 상이한 원시 요소들에 대한 VSP들은 인터리브될 수 있다. 이러한 이유 때문에, 현재와 이전의 VSP만을 기초로 한 캐슁 구조 약 80 % 만큼 대역폭을 삭감할 것이다. 다른 구조는 보다 양호한 성능까지도 제공할 것이다. 예컨대, 전체 타일, 실제로는 쿼드 타일 상에서의 원시 요소 일관성을 이용하는 구조가 있다. 분명한 것은, 본 출원인은 MLM_Pointer들에 대한 캐쉬, 각 상태 구역(파티션), 및 MIJ에서의 칼라 원시 요소들을 유지함으로써 이를 행할 수 있다. 각 캐쉬의 사이즈는 타일 상에서의 그들의 발생 빈도라고 판단된다. 이 구조는 문제, 즉 다각형 메모리로부터 데이터를 부활하는 것을 해결할 수 있지만, 본 출원인은 여전히 데이터가 변경될 때마다 MIJ에서 프래그먼트 블럭과 픽셀 블럭으로의 데이터 이송을 취급할 필요가 있다. 본 출원인은 이를 다음과 같이 하여 해결한다.
5.8.2.2.2 캐쉬된 데이터와 태그의 디커플링
MIJ에 의해 부활된 데이터는 다른 블럭들에 의해 소비된다. 따라서, 본 출원인은 캐쉬 데이터를 그들 블럭 내에 기억시킨다. 프래그먼트 블럭, 텍스쳐 블럭, 및 픽셀 블럭의 각각은 캐쉬 세트를 갖는다. 이들 캐쉬는 그들의 캐쉬선 엔트리를 에서 진행하는 실제 데이터를 유지한다. MIJ는 다각형 메모리로부터 각 유닛에 관한 관련 데이터를 부활하고 그것을 그 유닛들에 전송하기 때문에, 전술한 네 개의 유닛에 있는 각 캐쉬들의 현재 상태를 알 필요가 있다. 이것은 각 캐쉬들에 대한 태그를 유지하고 MIJ가 모든 캐쉬 관리를 행하게 함으로써 달성된다. 따라서, 캐쉬 데이터는 그 캐쉬 데이터를 필요로 하는 블럭에 상주하고, 캐쉬 태그는 MIJ에 상주한다.
MIJ는 다운스트림 블럭들에 관한 7 개의 캐쉬, 즉, FRG 블럭에 관한 캐쉬 한 개[ColorData 캐쉬(10016)], TEX 블럭에 관한 캐쉬 두 개[TexA 캐쉬(10018) 및 TexB 캐쉬(10020)], PHG 블럭에 관한 캐쉬 두 개[라이크 캐쉬(10024) 및 재질 캐쉬(10022)] 및 PIX 블럭에 관한 캐쉬 두 개[PixMode 캐쉬(10026) 및 스티플 캐쉬(10028)]를 관리한다. 이들 각 캐쉬에 대해서, 태그는 MIJ에 캐쉬되고, 데이터는 상응하는 블럭에 캐쉬된다. 또한, MIJ는 태그와 함께 데이터 엔트리의 인덱스를 유지한다. 이들 7 개의 캐쉬 외에, MIJ는 효율상 내부에 두 개의 캐쉬, 즉 ColorVertex 캐쉬(10012)와 MLM_Pointer 캐쉬(10014)도 보유하고 있다. 이를 위해, 태그와 데이터 모두는 MIJ에 상주한다. 9 개의 모든 태그 캐쉬는 완전히 연합되어 있고, 본 출원인은 캐쉬 태그 룩업에 대한 CAM을 사용한다. 이들 캐쉬는 도 55에 작성되어 있다.
본 출원인은 후속의 섹션에서 이들 각 캐쉬에 관한 캐슁 메카니즘에 대해 간략히 설명한다.
5.8.2.2.3 변형된 FIFO 대체 정책
MIJ 내의 모든 캐쉬에 대해서, 본 출원인은 캐쉬 교체를 위한 변형된 FIFO알고리즘을 사용한다. 이 알고리즘에서, 캐쉬 내의 각 엔트리마다, 본 출원인은 엔트리 태그와 함께WasHit플래그를 유지한다. 카운터는 캐쉬 내에서 교체될 현재 엔트리를 표시하는데 사용된다.
5.8.2.3 칼라 캐슁
「칼라」 캐슁은 칼라 원시 요소들을 캐쉬하는데 사용된다. 인에이블된 프로세싱 특성들의 크기에 따라, ColorVertex는 다각형 메모리에서 2, 4, 6, 또는 9 듀얼옥트 길이일 수 있다. 게다가, 원시 요소는 그 원시 요소가 각각 점, 선 또는 채워진 삼각형인지에 따라서 ColorVertices를 한 개, 두 개 또는 세 개를 필요로 할 것이다. 다른 캐쉬와는 달리, 칼라 캐슁은 캐쉬 룩업과 교체라는 통상의 문제 외에도 가변 데이터 사이즈의 문제를 취급할 필요가 있다.
다각형 메모리에서의 쿼터 성능 칼라 꼭지점이 9 개의 듀얼옥트를 점유하고 있더라도, 본 출원인은 9 개의 듀얼옥트 전체를 정말로 필요로 하지 않음에 주의한다. 실제로, 쿼터 성능 ColorVertex에는 1200 개의 비트가 있다. 본 출원인은 ColorCache의 각 엔트리가 900 비트의 폭이라고 가정한다. 따라서, 총 퍼포먼스가 채워진 삼각형은 하나의 칼라 캐쉬 엔트리에 적합할 것이고, 반분의 퍼포먼스가 채워진 삼각형은 두 개의 칼라 캐쉬 엔트리에 적합할 것이다. 본 출원인은 4 개의 칼라 캐쉬 엔트리를 3 분의 1의 퍼포먼스 레이트 삼각형과 4 분의 1(쿼터)의 퍼포먼스 레이트 삼각형에 배정한다. 3 분의 1의 퍼포먼스 레이트 삼각형이 세 개의 칼라 캐쉬 엔트리에 적합하더라도, 본 출원인은 그 3 분의 1의 퍼포먼스 레이트 삼각형에 4 개의 엔트리를 배정함에 주의한다. 이와 같이 하면 3 분의 1의 레이트 원시요소들에 대해 세 개의 칼라 캐쉬 엔트리를 사용하는 것보다 캐쉬의 유지 보수가 매우 간단해진다. 본 출원인은 부분적으로 무효화된 원시 요소들을 취급할 필요가 없다.
프래그먼트 블럭 내의 칼라 캐쉬는 256 개의 총 퍼포먼스 칼라 원시 요소들을 유지할 수 있다. MIJ의 TagRam은 프래그먼트 블럭 내의 칼라 데이터 캐쉬와 1 대 1의 대응 관계를 갖는다. APEX 파이프라인에서, ColorAddress는 칼라 원시 요소를 유일하게 식별함에 주의한다. 따라서, 본 출원인은 24 비트 ColorAddress를 칼라 캐쉬에 대한 태그로서 사용한다.
칼라 데이터 인출 요구는 ColorDataFetch 서브블럭에 전송된다. 이 블럭은 칼라 어드레스와 칼라 종류를 사용하여, 이 원시 요소에 필요한 꼭지점의 수, 각 꼭지점의 사이즈, 및 인출되어야 할 각 꼭지점의 ColorAddress를 판단한다. 본 출원인은 상당수의 칼라 원시 요소가 스트립 또는 팬의 일부분이라고 예상한다. 여기에서는 ColorVertex 부활 패턴에서의 일관성을 이용할 기회가 있다. 이것은 꼭지점 캐슁을 통해서 행해진다. CCIX는 VSP에 합체되어, 프래그먼트 블럭으로 향한다.
5.8.2.3.1 다른 캐슁
또한, 본 발명의 구조는 MLM_Pointer 캐슁, 모드 패킷 캐슁, 제어 패킷 프로세싱, 및 프래그먼트와 픽셀 출력 큐 관리에 대해서도 제공한다.
5.8.3 기능 유닛
모드 주입 블럭은 CUL 블럭과, CUL로부터 다운스트림되는 나머지 파이프라인 사이에 상주한다. MIJ는 제어 패킷과 VSP 패킷을 CUL 블럭으로부터 수신한다. 출력측에서, MIJ는 프래그먼트 블럭과 픽셀 블럭과 인터페이스한다.
MIJ는 다음과 같은 일을 한다.
1. BeginFrame, EndFrame, 및 BeginTile 등의 다양한 제어 패킷을 프래그먼트 유닛과 픽셀 유닛에 발송한다.
2. 프리인출 패킷을 SORT에서 픽셀로 발송한다.
3. VSP에 상응하는 원시 요소의 모든 꼭지점에 대한 ColorPointer를 판단한다.
4. 다각형 메모리 내의 MLM_Pointer의 위치를 판단하고 그것을 부활한다.
5. 다각형 메모리 내의 다양한 상태 패킷의 위치를 판단한다.
6. 어느 패킷이 부활되어야 하는 지를 판단한다.
7. Color 캐쉬, TexA 캐쉬, TexB 캐쉬, 라이트 캐쉬 및 재질 캐쉬(프래그먼트 블럭, 텍스쳐 블럭 및 퐁 블럭의 경우)와, PixelMode 캐쉬 및 스티플 캐쉬(픽셀 블럭의 경우)를 내용의 트랙을 유비하고, 적절한 캐쉬 포인터를 각 캐쉬 미스 데이터 패킷에 연관짓는다.
8. 다각형 메모리로부터 상태와 칼라 꼭지점 패킷을 부활한다.
9. 원시 요소들을 작성한다. 다각형 메모리는 꼭지점당 데이터를 기억한다. VSP의 원시 요소 종류에 따라, MIJ는 다각형 메모리로부터 요구되는 꼭지점(삼각형 원시 요소의 경우에는 3 개, 선 원시 요소의 경우에는 2 개, 점 원시 요소의 경우에는 1 개)을 부활한다.
10. 데이터를 프래그먼트 블럭과 픽셀 블럭에 전송한다.
11. 파이프라인에서의 스톨들을 처리한다.
12. 완료된 경우에 MEX로 시그널링한다.
따라서, 모드 주입은 VSP의 각 프래그먼트마다 최종 칼라를 계산하는데 필요한 상태와 꼭지점당 데이터의 부활을 취급한다.
5.9 프래그먼트 블럭(FRG)
5.9.1 개관
프래그먼트 블럭은 컬 및 모드 주입 이후와 텍스쳐, 퐁 및 범프 이전에 배치된다. 프래그먼트 블럭은 쉐이딩되어야 할 필요가 있는 최대 네 개의 프래그먼트로 구성되어 있는 가시 스탬프 부분(VSP)을 수신한다. VSP의 프래그먼트들은 항상 동일한 원시 요소에 속하고, 따라서 프래그먼트들은 모든 모드 셋팅을 비롯해서 꼭지점에서 정의되는 원시 요소 데이터를 공유한다. 샘플 마스크, 즉 sMask는 VSP의 어느 서브픽셀 샘플들이 액티브한 지, 즉 주어진 픽셀에 대해 네 개의 샘플 중 하나 또는 그 이상이 액티브한 지를 정의한다. 이것은 소정의 프래그먼트가 픽셀에 대해 필요함을 의미하며, 원시 요소에 대한 꼭지점 기반의 데이터는 보간되어 프래그먼트 기반의 데이터를 형성한다. 액티브 서브픽셀 샘플 위치는 프래그먼트의 상응하는 x 좌표와 y 좌표를 판단하는데 사용된다.
대역폭을 절감하기 위해, 프래그먼트 블럭은 동일한 원시 요소에 속하는 복수 개의 VSP에 의해 재사용될 칼라 데이터를 캐쉬한다. VSP를 전송하기 이전에, 모드 주입은 칼라 캐쉬가 그 요구되는 데이터를 포함하고 있는 지를 식별한다. 만일 그것이 힛트(a hit)라면, 모드 주입은 캐쉬로의 인덱스를 포함하는 VSP를 전송한다. 캐쉬 미스시, 모드 주입은 캐쉬로부터의 엔트리를 새로운 칼라 데이터로 교체한 후에, 칼라 캐쉬 인덱스가 새로운 엔트리를 지시하는 VSP 패킷을 전송한다. 마찬가지로, 모든 모드, 재질, 텍스쳐 인포(info), 및 라이트 인포 셋팅은 그들이 사용되는 블럭에 캐쉬된다. 또한, 이들 각 캐쉬의 인덱스는 VSP 패킷에 포함되어 있다. 다각형 데이터 외에, 프래그먼트 블럭은 몇 개의 텍스쳐와 모드 인포를 캐쉬한다. 도 56은 DSGP 파이프라인의 후반부에서의 흐름과 모드 데이터의 캐슁을 도시하고 있다.
프래그먼트 블럭의 주요 기능은 VSP의 모든 액티브 프래그먼트에 대한 꼭지점에 제공되는 다각형 정보의 보간이다. 프래그먼트 블럭의 출력에서, 본 출원인은 여전히 프래그먼트당 데이터가 모두 보간된 스탬프들을 갖는다. 프래그먼트 블럭은 주어진 프래그먼트의 보간들을 병렬로 수행하고, VSP 내의 프래그먼트들은 정해지지 않은 순서로 행해질 수 있다. 완전히 보간된 스탬프들은 수신된 순서와 동일한 순서로 텍스쳐 블럭, 퐁 블럭 및 범프 블럭에 발송된다. 그 외에, 프래그먼트 블럭은 최대 네 개의 텍스쳐에 대한 세부의 레벨(LOD 또는 λ) 값들을 생성하고, 그들을 텍스쳐 블럭에 전송한다.
프래그먼트 블럭은 가변 스탬프 프로세싱 시간과 칼라 캐쉬 충만 잠복을 평활하기 위해 그의 입력에 적당한 사이즈의 FIFO를 가질 것이다.
도 57은 프래그먼트 블럭의 블럭도를 도시하고 있다.
프래그먼트 블럭은 6 개의 서브블럭으로 분할될 수 있다. 즉,
1. 캐쉬 충만 서브블럭(11050)
2. 칼라 캐쉬(11052)
3. 보간 계수 서브블럭(11054)
4. 보간 서브블럭(11056)
5. 노말화 서브블럭(11058)
6. LOD 서브블럭(11060)
제1 블럭은 칼라 캐쉬 미스를 취급한다. 새로운 다각형 데이터는 캐쉬에 있는 과거 데이터를 교체한다. 칼라 캐쉬 인덱스, 즉 CCIX는 교체될 엔트리를 지시한다. 그 블럭은 모든 다각형 데이터를 직접 캐쉬에 기록하지 않는다. 그 블럭은 꼭지점 좌표, w 좌표의 역, 및 옵션의 텍스쳐 q 좌표를 사용하여, 무게 중심 계수들을 계산한다. 그 블럭은 그들 무게 중심 계수를 계산하는데 사용되는 info 대신에, 그들 무게 중심 계수를 캐쉬에 기록한다.
제2 서브블럭은 칼라 캐쉬를 실행한다. 프래그먼트가 VSP 패킷을 수신(힛트)할 때, CCIX에 의해 지시되는 캐쉬 엔트리는 꼭지점에서의 다각형 데이터와 관련 무게 중심 계수를 액세스하기 위해 판독된다.
제3 서브블럭은 VSP의 제1 프래그먼트에 대한 보간 계수들을 준비한다. 그들 계수는 다음 프래그먼트의 계수들의 증분적 계산을 용이하게 하기 위해 분자와 분모에 관한 면 방정식의 형태로 표현된다. 삼각형의 전체 영역은 분자와 분모 모두를 분할하고, 따라서 단순화될 수 있다. 또한, 무게 중심 계수들은 용장성 빌트인을 갖기 때문에(분수들의 합은 전체와 같다), 부가적인 기억부와 대역폭은 분모와 함께 무게 중심 좌표들로 된 세 개의 세트 중 두 개를 제공함으로써 절감된다. 넌퍼포먼스의 경우로서, 1 이 아닌 q를 갖는 텍스쳐 좌표들은 분모에 관한 3 개 이상의 계수를 사용하여 보간될 것이다.
스탬프당 주어진 x 좌표와 y 좌표는 스탬프 내의 보다 낮은 좌측 픽셀에 상응한다. 소정의 타일 내의 스탬프의 위치만이 이들 좌표에 의해서 판단된다. 개개의 패킷은 후속 패킷들이 속하는 타일의 좌표들을 제공한다. 프래그먼트 x 좌표와 y 좌표의 보다 낮은 비트들 서브픽셀 정밀도로 판단하기 위해, 룩업 테이블에는 sMask의 상응하는 비트들이 사용된다. 액티브 샘플 위치에서 보간 위치를 선택하는 것은 보간 계수들이 항상 양수이고, 그들의 합이 1임을 보장한다.
제4 서브블럭은 덮혀 있는 각 픽셀마다, 칼라, 노말, 텍스쳐 좌표, 눈 좌표 및 범프 탄젠트를 보간한다. 보간기들은 그들의 정밀도에 따라서 네 개의 그룹으로 분할된다. 제1 그룹은 8 비트 고정의 점 칼라 분수들을 보간한다. 값들은 0과 1 사이에 있고, 값 1의 이진수 표현 방법은 모든 비트들이 1로 설정되는 것이다. 제2 세트는 16 비트, 고꼭지점, 노말에 관한 유닛 벡터들 및 표면 탄젠트 방향들을 보간한다. 제3 세트는 16 비트 가수들을 갖는 24 비트 부동점 수들을 보간한다. 꼭지점 눈 좌표들과, 노말과 표면 탄젠트의 크기들은 이 카테고리에 속한다. 마지막 그룹은 24 비트 FP 수이지만 다른 보간 계수들을 가질 수도 있는 텍스쳐 좌표들을 보간한다. 보든 보간 계수들은 24 비트 FP값들로서 생성되지만, 8 비트 또는 16 비트 점값들을 보간할 때에는 불과 몇 개의 비트 또는 고꼭지점 표현으로 사용될 수 있다.
제5 서브블럭은 노말 탄젠트와 표면 탄젠트를 다시 노말화한다. 이 프로세스 중에 얻은 크기들은 버린다. 원래의 크기들은 퐁과 범프 블럭으로 발송되기 이전에각각 보간된다.
텍스쳐 맵 u, v 좌표들과 세부 레벨(LOD)은 제6 서브블럭에서 평가된다. 무게 중심 계수들은 텍스쳐 LOD를 판단할 때 사용된다. 두 개의 텍스쳐 좌표들과 관련된 최대 네 개의 독립된 텍스쳐들이 지원된다. 따라서, 유닛은 최대 네 개의 LOD와 프래그먼트당 두 세트의 s, t 좌표들을 생성할 수 있고, 24 비트 FP값으로서 표현된다.
5.9.1.1 sMask와 pMask
도 58은 픽셀 프래그먼트들이 다양한 원시 요소들에 의해 형성되는 VSP의 예들을 도시하고 있다. 또한, sMask의 사본은 픽셀 블럭으로 직접 전송되어, 쉐이딩 블럭들(프래그먼트, 텍스쳐, 퐁 및 범프)을 우회한다. 또한, 우회 패킷은 z값, 모드와 다각형 스티플 인덱스를 포함하고 있고, VSPptr에 의해 지시되는 위치에서 재배열 버퍼에 기록된다. pMask는 프래그먼트 블럭에서 생성되고, sMask 대신에 텍스쳐와 퐁으로 전송된다. 실제의 커버리지는 픽셀에서 평가된다.
5.9.1.2 삼각형에 대한 무게 중심 보간
프래그먼트 블럭은투시 정정 무게 중심 보간을 이용하여 값들을 보간한다. 이 섹션에서는 그 프로세스에 관해 설명한다.
삼각형을 라스터화함으로써 생성되는 각 프래그먼트와 관련된 데이터에 관해서, 본 출원인은 삼각형의 프래그먼트들에 대해서 이들 값이 어떻게 생성되는 지에 관해 지정함으로써 시작한다. 본 출원인은 삼각형(11170)에 관한 무게 중심 좌표들을 정의한다(도 59). 무게 중심 좌표는 세 개의 수, 즉 A0, A1및 A2로된 세트이고,이들은 각각 [0, 1]의 범위 내에 있고, A0+A1+A2=1이다. 이들 좌표는 삼각형 내이 임의의 점 p 또는 삼각형의 경계상에서 다음의 식으로서 유일하게 지정한다.
여기에서, V0, V1및 V2는 삼각형의 꼭지점이다. A0, A1및 A2는 다음 식과 같이 구한다.
여기에서 Area(i, j, k)는 꼭지점 i, j 및 k를 갖는 삼각형의 윈도우 좌표에서의 영역을 표기한다. 이 영역을 계산하는 한 가지 방법은 다음 식과 같다.
V0, V1및 V2에서의 데이터를 각각 f0, f1및 f2는 로서 표기한다. 이어서, 삼각형을 라스터화함으로써 생성된 윈도우 좌표 x와 y를 갖는 프래그먼트에서의 데이터 값 f(x, y)는 다음 식과 같이 주어진다.
여기에서 wcO, wc1및 wc2는 각각 V0, V1및 V2의 클립 w 좌표이다. A0, A1및 A2는 데이터가 생성되는 프래그먼트의 무게 중심 좌표들이다.
a0=a1=a2=1
다음 식에 대한 텍스쳐 s 및 q 좌표는 제외한다.
a0=q0, a1=q1, a2=q2
5.9.1.3 선에 대한 보간
선을 따르는 프래그먼트 데이터의 보간의 경우, 약간 다른 방정식이 사용된다.
생성된 프래그먼트 중심의 윈도우 좌표를 pr=(x, y)이라고 하고, 선의 종단점들(꼭지점들)을 p2=(x2, y2)과 p1=(x1, y1)이라고 하자. t를 다음과 같이 설정한다. 그리고, p1에서 t=0이고 p2에서 t=1임에 주의한다.
5.9.1.4 점에 대한 보간
만일 원시 요소가 점이라면, 보간은 행해지지 않는다. 꼭지점 2는 데이터를 유지하는 것으로 가정된다. q가 1과 같지 않은 경우, s 좌표, t 좌표 및 r 좌표는 q에 의해 분할될 필요가 있다.
5.9.1.5 벡터 보간
범프 맵핑의 경우, 노말 탄젠트와 표면 탄젠트는 방향성 유닛 벡터와 관련된 크기를 가질 수 있다. 이 경우, 본 출원인은 스칼라 크기들과는 독립적으로 그 유닛 벡터 성분들을 보간한다. 이와 같이 하면, 분명히, 자신의 크기를 갖는 x 좌표, y 좌표 및 z 좌표 성분보다 양호한 시각적 결과를 얻는다. 이것을 특히, 방향과 크기가 독립적으로 사용될 때 중요하다.
도 60은 부등(不等) 크기의 벡터들을 보간하면 각도 입도가 고르지 않게 되는 이유를 도시하고 있다. 이 때문에, 본 출원인은 이와 같은 방법으로 노말과 탄젠트를 보간하지 않는다.
5.9.1.6 프래그먼트 x 좌표와 y 좌표
도 61은 보간 계수들을 형성하는데 사용되는 프래그먼트 x 좌표와 y 좌표가 어떻게 형성되는 지를 도시하고 있다. 소정의 타일 프로세싱의 개시시에 설정된 타일 x 좌표와 y 좌표는 최상위 비트들을 형성한다. 샘플 마스크(sMask)는 어느 프래그먼트가 처리되어야 하는 지를 찾는데 사용된다. 룩업 테이블은 서브픽셀의 정밀도로 최하위 비트 좌표들을 제공한다. 본 출원인은, 만일 본 출원인이 2 비트의 샘플 위치 선택을 얻는 것만으로도 족하다면, LUT의 사이즈를 줄일 수 있을 것이다.
5.9.2 방정식
5.9.2.1 캐쉬 미스 계산
제1 무게 중심 계수들은 칼라 캐쉬 미스에 관한 프래그먼트 유닛에서 평가될필요가 있을 것이다. 삼각형의 경우에는 다음 식과 같다.
위 방정식에서, xw0, xw1및 xw2는 세 개의 삼각형 꼭지점의 윈도우 x 좌표들이다. 마찬가지로, yw0, yw1및 yw2는 삼각형 꼭지점들의 세 개의 y 좌표들이다. 실제의 무게 중심 계수들의 경우, 모든 성분들은 삼각형의 영역에 의해 분할될 필요가 있다. 계수들이 영역에 의해서도 분할되는 분모를 형성하는 본 발명의 경우에는 투시적 정정 때문에 이것이 반드시 필요한 것은 아니다.
선의 경우, 꼭지점 좌표 xw1, xw2및 yw1, yw2는 다음의 관계를 갖는다.
이제, 본 출원인은 투시 정정된 무게 중심 계수 성분을 다음과 같이 형성한다.
여기에서, wic0은 꼭지점 0의 클립 w 좌표의 역이다(기하구조에서 행해지는역).
분모 성분은 개개의 상수를 분자에 더함으로써 형성될 수 있다.
상기 계산은 삼각형당 한 번만 행해져야 한다. 칼라 메모리 캐쉬는 동일한 삼각형의 다음 VSP에 대한 계수들을 저장하는데 사용된다. 캐쉬 미스시, 계수들은 다시 평가될 필요가 있다.
5.9.2.2 보간 계수
다음에, 본 출원인은 좌표(w, y)를 갖는 VSP의 제1 픽셀에 관한 무게 중심 좌표들을 준비한다.
이어서, x 방향의 다음 픽셀에 관해서는 다음과 같다.
또는, y 방향의 다음 픽셀에 관해서는 다음과 같다.
넌퍼포먼스 경우(2 분의 1의 속도), n이 꼭지점 수(0 내지 2 개)이고 m이 텍스쳐 수(0내지 3 개)인 경우, 텍스쳐 좌표 qn[m]은 1이 아니면, 텍스쳐 좌표들을 보간하기 위한 부가적인 분모가 평가된다.
(x, y) 좌표를 갖는 소정의 픽셀에 관한 무게 중심 좌표들이 평가될 때, 본 출원인은 그들을 사용하여 보간한다. 선의 경우, 다음의 방정식에서는 LO가 필요하지 않으므로 0이라고 가정한다.
5.9.2.3 보간 방정식
총 퍼포먼스 모드의 경우, 본 출원인은 한 세트의 텍스쳐 좌표를 보간한다.
확산 칼라와 반영 칼라는 다음과 같다.
8 비트 칼라값들은 실제로 0과 1 사이에 포함되는 분수임에 주의한다. 규칙에 따라, 미싱 표현된 수는 1-2-8이다. 값 1은 모든 비트가 미싱 표현을 대신하는 것을 설정할 때 표현된다. 칼라 인덱스가 R, G, B 및 A 대신에 사용될 때, 8 비트 인덱스값은 칼라의 확산 및 반영 성분의 R값을 교체한다.
그리고, 표면 노말은 다음과 같다.
노말 벡터는 보간 이후에 다시 노말화되어야 한다.
2 분의 1의 레이트(누적적임)시, 본 출원인은 필요시에 꼭지점 눈 좌표를 보간한다.
2 분의 1의 레이트(누적적임)시, 본 출원인은 최대 네 개의 텍스쳐 좌표를 보간한다. 이것은 평면 방정식 또는 무게 중심 좌표 중 어느 하나를 이용하여 행해진다. 또한, r 텍스쳐 좌표들은 총 레이트의 3 분의 1의 레이트로 렌더링하는 볼륨 텍스쳐에 대해서 보간된다.
꼭지점당 범프 탄젠트로서 사용자가 편미분을 제공하는 경우에, 본 출원인은 그들을 보간할 필요가 있다. 간단하게, 하드웨어는 항상, 2 분의 1의 레이트로 표면 탄젠트들을 보간할 것이다.
또한, 표면 탄젠트들은 보간 이후에, 노말처럼 노말화되어야 한다.
또한, 본 출원인은 무게 중심 계수들을 이용하여, 윈도우 w 좌표와 y 좌표에 관해 텍스쳐 s와 t의 편미분을 구한다.
qn[m]이 1이 아닌 경우에, Wi(x, y)는 Wqi[m](x, y)으로 교체된다.
이것은 보간된 s, t 및 그들의 편미분을 구하는 다른 방법보다 좋은 도입이다.
다른 항도 마찬가지로 구할 수 있다. 칼라와 노말처럼, 보간되어야 할 모든 값들은 증분적 평가 방법에 의해 계산의 필요 조건을 감소시키기 위해, 이러한 평면 방정식 모드로 표현될 수 있고 삼각형 info 캐쉬에 저장될 수 있음에 주의한다.
본 출원인은 다음과 같이 정의한다.
여기에서는, λ를 세부 레벨(LOD)라고 부르고, ρ를, 텍스쳐 이미지의 확대도 또는 축소도를 통제하는 스케일 인자라고 부른다. n과 m은 2차원 텍스쳐 맵의 넓이와 높이이다. u와 v의 편미분은 s와 t의 부분들을 이용하여 얻는다. 1차원 텍스쳐 맵의 경우 t, v 및 편미분 δv/δx와 δv/δy는 0으로 설정된다.
선의 경우, 방정식은 다음과 같다.
DSGP 파이프라인은 두 세트의 텍스쳐 좌표를 갖는 최대 네 개의 텍스쳐를 지원한다. 특히, i=0.3인 경우, TEXTURE_1D[i] == 1 또는 TEXTURE_2D[i] == 1이면, 본 출원인은 텍스쳐 좌표 TEXTURE_COORD_SET_SOURCE[i]를 이용하여 λ를 계산한다.
프래그먼트 블럭은 각 액티브 텍스쳐마다 s, t, r 및 λ를 텍스쳐 블럭에 통과시킨다. λ는 최종 LOD가 아님에 주의한다. 텍스쳐 블럭은 LOD 클램핑 등의 부가적인 규칙을 적용하여, λ에 대한 최종값을 얻는다.
5.9.3 메모리 캐슁 구조
프래그먼트는 세 개의 캐쉬를 사용하여, 필요한 연산을 수행한다. 주된 캐쉬는 칼라 캐쉬이다. 칼라 캐쉬는 원시 요소(삼각형, 선 또는 점)에 대한 칼라 데이터를 유지한다. 캐쉬 미스 판단과 교체 로직은 실제로 모드 주입 블럭에 배치되어 있다. 프래그먼트 블럭은 통상 관련 칼라 데이터를 유지하는 엔트리를 지시하는 인덱스를 갖는 「힛트」 패킷을 수신한다. 만일 모드 주입 블럭이 미스를 검출하면, 「충만」 패킷은 우선권 그 캐쉬의 엔트리를 새로운 데이터로 교체하기 위해 전송되고 나서, 임의의 「힛트」 패킷이 그 새로운 데이터를 이용하기 위해 전송된다. 따라서, 캐쉬 교체와 사용 로직은 인입 패킷들이 순서대로 처리되기 때문에, 모드 주입이 전송하는 패킷의 순서를 변경하지 않는 것이 중요하다.
프래그먼트 블럭은 프래그먼트 블럭은 그 데이터의 일부를 변형한 후에, 캐쉬가 충만하는 도중에 칼라 캐쉬에 기록한다. 이것은 미시 시간 동안에 무게 중심 계수들을 준비하기 위해 행해진다. 꼭지점 윈도우 좌표, 꼭지점에서의 클립 w 좌표의 역, 및 꼭지점에서의 텍스쳐 q 좌표가 Cx[1:0], Cy[1:0], Ck[1:0], Dx, Dy, Dk무게 중심 계수들에 의해 사용되고 교체된다. 마찬가지로, Sx, Sy, Tx및 Ty값은 캐쉬 미시 중에 구해지며, 다른 데이터와 함께 기억된다.
칼라 캐쉬는 소정의 256 엔트리, 즉 4 세트 관계형 캐쉬로서 구성되어 있다. 모드 주입 유닛과 프래그먼트 유닛의 microArchitecture는 퍼포먼스의 목표가 존속되어 있다면 이 구성을 변경할 수 있다. 총 레이트시 칼라 캐쉬 미스는 평균 처리된 VSP의 15 % 이하일 것이라고 가정한다.
2 분의 1 레이트시 필요한 데이터는 두 개의 보존적 엔트리로서 칼라 캐쉬에 기억된다. 이 경우에 제공되는 인덱스는 항상 짝수일 것이다.
프래그먼트 블럭에 사용된 텍스쳐 정보의 경우, 두 개의 모드 캐쉬가 사용된다. 이들은 동등하게 구성된 캐쉬들이고, 각각은 두 개의 텍스쳐에 대한 정보를 유지한다. 두 개의 텍스쳐 인덱스, 즉 TX0lX 및 TX1lX는 텍스쳐 좌표를 최대 네 개의 텍스쳐와 연계하기 위해 모든 「힛트」 패턴에 제공된다. 텍스쳐당, 다음의 데이터는 텍스쳐 모드 캐쉬로부터 판독된다.
TEXTURE_1D, TEXTURE_2D, TEXTURE_3D는 주어진 텍스쳐에 대한 인에이블 비트이다.
TEXTURE_HIGH, TEXTURE_WIDTH는 각각 u와 v 계산에 사용되는 m과 n값들을 정의한다.
TEXTURE_COORD_SET_SOURCE는 어느 텍스쳐 좌표가 주어진 텍스쳐에 바운드되어 있는 지를 식별한다.
텍스쳐 모드 캐쉬는 32 엔트리 총 관계형 캐쉬(a 32 entry fullyassociative cache)로서 구성된다. 텍스쳐 모드 캐쉬 0에 관해 가정된 미스 레이트는 VSP당 0.2 % 이하이다.
이 외에, 모드는 모드 캐쉬 내의 프래그먼트에 캐쉬되기도 한다. 모드 캐쉬는 총 관계형 8 엔트리 캐쉬(a fully associative eight-entry cache)로서 구성된다. 가정된 미스 레이트는 VSP당 0.001 % 이다(무시 가능). 다음의 info는 모드 캐쉬에 캐쉬된다.
SHADE_MODEL (1 비트)
BUMP_NO_INTERPOLATE (1 비트)
SAMPLE_LOCATION_SELECT (3 비트)
5.9.4 있을 수 있는 미래의 고려 사항
VSP의 프로세싱 순서도 변경될 수 있다. 픽셀 블럭 이전의 재배열 버퍼는 스탬프들을 다시 조립한다. 동일한 x 좌표와 y 좌표(독립된 원시 요소들에 속함)를 공유하는 VSP는 도착 순서로 제공될 필요가 있다. VSPptr는 각 VSP를 수반하여, 재배열 버퍼 내의 VSP의 위치를 표시한다. 버퍼는 FIFO로서 구성되고, 여기에서, 쉐이딩이 완료된 것에 대한 최전방 스탬프는 픽셀 블럭으로 발송된다.
VSP 프로세싱 순서에 대한 다른 고려 사항은 다양한 모드 캐쉬들이다. 모드 인덱스는 「힛트」 패킷이 「미스」 패킷을 지나지 않을 것이라고 가정한다. 이것은 「미스」 패킷들은 「힛트」 패킷에 대한 장벽을 형성하는 것을 의미한다. 명백하게는, 프로세스 순서는, 다운스트림 블럭이 모드 주입에 의해 제공된 동일 순서로 패킷들을 본다면, 상응하는 모드 캐쉬 info를 인출한 후에 변경될 수 있다.
5.10 텍스쳐 블럭(TEX)
5.10.1 개관
다각형은 대상물의 기울기를 정의하도록 3D 그래픽에 사용된다. 텍스쳐 맵핑은 다각형을 상세한 이미지들로 칼라링함으로써 표면 텍스쳐들을 시뮬레이션하는 기술이다. 통상, 단일의 텍스쳐 맵은 복수 개의 다각형으로 이루어진 소정의 전체 대상물을 커버할 것이다. 텍스쳐 맵은 RGBA 칼라의 하나 또는 그 이상의 사각형 어레이들로 이루어져 있다(꼭지점에서 최대 2K by 2K). 사용자는 수동 또는 자동으로 기하구조 블럭 내의 좌표들을 각 꼭지점에서의 텍스쳐 맵에 공급한다. 이들 좌표는 각 프래그먼트마다 보간되고, 텍스쳐값들은 그 프래그먼트에 배정된 텍스쳐 맵과 칼라에서 룩업된다. 범프 맵 계수들은 light_texture 확장을 이용하여 마찬가지로 얻는다. 보다 상세한 것은 퐁 블럭을 참조한다.
대상물들이 관찰자로부터 멀리 있으면 그들 대상물은 보다 작게 보이기 때문에, 텍스쳐 맵은 텍스쳐 패턴이 텍스쳐되고 있는 대상물에 비해 동일한 사이즈로 보이게 스케일되어야 한다. 물론, 각 프래그먼트마다 텍스쳐 이미지를 스케일링하고 필터링하는 것은 고가의 계획이다. 밉프맵핑은 렌더링 장치가 런타임시 이러한 작업의 일부를 회피할 수 있게 한다. 사용자는 일련의 텍스쳐 어레이를 연속적으로 보다 낮은 분해능으로 제공하고, 각 어레이는 특정의 세부 레벨(LOD 또는 λ)로 텍스쳐를 표현한다. 프래그먼트 블럭은 관찰자와 각 프래그먼트마다의 거리를 기초로 하여 그 각 프래그먼트마다 세부 레벨값을 계산하고, 텍스쳐 블럭은 그 프래그먼트에 대한 텍스쳐값을 생성하기 위해 두 개의 최근접 밉프맵 어레이들을 보간한다.예컨대, 만일 소정의 프래그먼트가 λ=0.5라면, 텍스쳐 블럭은 λ=0과 λ=1을 표현하는 어레이들을 보간한다.
꼭지점 보드는 텍스쳐 맵핑을 트라이리니어 미프맵핑에 초당 250M 텍스쳐된 프래그먼트들로 지원한다. 최대 8 개의 텍스쳐 맵과, 프래그먼트당 텍스쳐 좌표들로 된 8 개의 세트는 비례적으로 보다 낮은 퍼포먼스로 지원된다. 꼭지점은 SGI 확장 또는 높이 변화도 필드를 이용하여 범프 맵을 텍스쳐로서 취급한다. 그것은, 보다 낮은 최적의 텍셜 재사용으로 인해 텍셀 캐쉬가 보다 덜 효율적으로 수행할 것이기 때문에, 다소 보다 저속의 레이트로 3D 텍스쳐 맵핑을 수행할 것이다.
본 출원인은 꼭지점에서 다음의 확장을 OpenGL 1.1에 지원할 것이다.
● 멀티텍스쳐...최대 8 개의 텍스쳐 맵과, 프래그먼트당 텍스쳐 좌표들로 된 8 개의 세트
● 3D 텍스쳐...3D 텍스쳐에는 바이리니어 블렌딩이 지원된다. 3D 텍스쳐에 대한 트라이리니어 밉프맵핑은 소프트웨어로 취급된다.
● LOD 클랩핑...밉프맵핑하는데 텍스쳐 LOD의 서브셋트만을 사용하기를 요구함
● 엣지 클램프...클램프된 텍스쳐들을 행하는 합당한 방법
● 쉐도우...다중통로 쉐도우를 지원하는 간단한 확장
● 범프와 깊이 텍스쳐들에 대한 사인된 데이터 종류 지원(12-12-12 및 16-16)
엣지 클램핑, LOD 클램핑, 및 3D 텍스쳐는 OpenGL 1.2의 일부이다.
텍스쳐 블럭은 로컬 재사용을 얻기 위해 텍셀을 캐쉬한다. 텍스쳐 맵들은 18 바이트 블럭(6-6-6)에 기억될 수 있는 노말 벡터를 제외하고, RGBA 데이터(블럭당16 바이트)의 2×2 블럭들으로 텍스쳐 메모리에 기억된다.
5.10.1.1 가상 텍스쳐 번호
사용자는 텍스쳐가 OpenGL 호출을 갖는 사용자 공간으로부터 통과될 때 소정의 텍스쳐 번호를 제공한다. 사용자는 하나의 맵으로 텍스쳐될 몇 개의 삼각형을 전송하고, 이어서 동일한 프레임의 다른 삼각형들을 텍스쳐링하기 위해 동일한 텍스쳐 번호와 관련된 텍스쳐 데이터를 변경시킨다. 본 출원인의 파이프라인은 소정의 프레임에 대한 모든 텍스쳐 데이터 세트는 텍스쳐 블럭에 이용 가능한 것을 필요로 한다. 소프트웨어에서, 본 출원인은 가상 텍스쳐 번호를 각 텍스쳐 맵에 배정한다.
5.10.2 텍스쳐 메모리
텍스쳐 메모리는 텍스쳐 블럭이 현재 사용하고 있는 텍스쳐 어레이들을 기억한다. 소프트웨어는 텍스쳐 메모리를 관리하여, 호스트 메모리로부터의 텍스쳐 어레이들을 텍스쳐 메모리에 복사한다. 또한, 그것은 텍스쳐 메모리에 있는 텍스쳐 어레이 어드레스 테이블을 유지한다.
5.10.2.1 텍스쳐 어드레싱
텍스쳐 블럭은 가상 텍스쳐 번호와 LOD에 의해 텍스쳐 어레이들을 식별한다. 최고위 LOD에 대한 어레이들은 단일의 레코드로 럼프(lump)된다. (일 실시예에서, 7 개의 LOD는 각각 21 킬로바이트를 포함하고 있다.) 텍스쳐 어레이 포인터 테이블은 소정의 텍스쳐 어레이 ID(LOD와 결부된 가상 텍스쳐 번호)를 텍스쳐 메모리의 어드레스와 연결짓는다. 본 출원인은 수천개의 텍스쳐 어레이 포인터를 지원할 필요가 있고, 따라서 텍스쳐 어레이 포인터 테이블은 텍스쳐 메모리에 기억되어야 할 것이다. 본 출원인은 초당 약 500M 번으로 텍스쳐 어레이 ID를 어드레스에 맵할 필요가 있다. 다행해도, 인접 프래그먼트들은 항상 동일한 텍스쳐 어레이를 공유할 것이고, 따라서 본 출원인은 텍스쳐 어레이 포인터에 대한 캐쉬의 경우 양호한 힛트 레이트를 얻는다. (일 실시예에서, 텍스쳐 어레이 캐쉬의 사이즈는 128 개의 엔트리이지만, 보다 크거나 작은 다른 사이즈가 사용되어도 된다.) 도 62는 텍스쳐 어레이 어드레싱의 개관을 제공하고 있다.
텍스쳐 블럭은 이중 해슁(hashing) 알고리즘을 사용하여, 메모리의 포인터 테이블을 검색한다. 소프트웨어는 테이블 엘리먼트들을 기억하기 위해 하드웨어 해슁 알고리즘을 이용하여 텍스쳐 어레이 포인터 테이블을 관리한다.
5.10.2.2 텍스쳐 메모리 할당
소프트웨어는 텍스쳐 메모리의 할당을 취급한다. 텍스쳐 블럭은 텍스쳐 메모리에 이미 없는 텍스쳐 어레이를 필요로 할 때 인터럽트를 호스트에 전송한다. 호스트는 텍스쳐 어레이를 메인 메모리에서 텍스쳐 메모리로 복사하고, 전술한 바와 같이 텍스쳐 어레이 테이블을 업데이트한다. 호스트는 어느 텍스쳐 어레이가 새로운 데이터에 의해 덧씌어질 지를 제어한다.
호스트는 쓰레기 수집 등을 행하기 위해 텍스쳐 메모리를 재정렬할 필요가 있을 것이다. 하드웨어는 다음의 메모리 복사를 지원할 것이다.
● 호스트에서 메모리로
● 메모리에서 호스트로
● 메모리에서 메모리로
동기화 구조는 정확한 행동을 보증하기 위해 사용될 것이다. 폭력적인 방법은 임의의 메모리 복사 행위 이전에 텍스쳐 블럭을 플러쉬할 것이다. 그러나, 본 출원인은 텍스쳐 어레이 포인터 테이블(13106) 주변을 기초로 하여 보다 완화된 구조로 충분할 수 있을 것이다. 소프트웨어는 몇 개의 커맨드를 통해 동기를 제어하여, 텍스쳐 파이프라인을 개시, 정지 및 플러쉬할 수 있다. 이하, 「호스트 커맨드」 참조.
5.10.2.3 텍스쳐 메모리의 내용
텍스쳐는 2×2 텍셀 블럭으로 분할된다. 어레이의 각 텍셀 블럭은 텍스쳐 메모리에서, 네 개의 텍셀에 대한 RGBA, RGB, 또는 높이 변화도 데이터를 포함하고 있는 16 또는 18 바이트 레코드로 표현된다. 주어진 프래그먼트를 트라이리니어 밉프맵핑으로 텍스쳐링하는 것은 그 프래그먼트가 2×2 블럭에 대해 발생하는 것에 따라서 이들 블럭들 중 2 내지 8 개를 액세스하는 것을 필요로 한다.
5.10.2.4 텍스쳐 메모리 데이터 경로
텍스쳐 메모리와 텍스쳐 블럭간의 정상 경로 외에, 호스트 메모리에서 텍스쳐 메모리고 가는 경로가 있다. 대역폭은 약 500 MB/s이어야 한다. 이 「후문(Back Door) 버스」 경로는 프레임 버퍼와 텍스쳐 메모리를 호스트에 연결시킨다. 또한, 본 출원인은 소프트웨어의 제어 하에 텍스쳐 메모리에서 메모리에서 메모리로의 복사를 지원한다.
5.10.2.5 텍스쳐 포맷
하드웨어에 있어서, 본 출원인은 OpenGL 내부 포맷, 즉 RGBA8, RGB12(사인됨), 및 LUMNANCE16_ALPHA16(사인됨)을 지원한다. 소프트웨어는 이들 포맷 중 기억부의 서브세트, 예컨대 RGB8을 사용하는 다른 포맷들을 지원할 것이다. 예컨대 범프 맵 계수들에 대한 텍스쳐 메모리의 일부 용도는 다른 방법으로 텍셀 비트들을 이해할 것이다. 본 출원인은 범프 맵 텍스쳐에 대한 16 비트 보간을 지원할 것이다. 텍스쳐 블럭 이후에, 모든 칼라는 노말, 깊이, 및 높이 필드같은 light_texture 량을 제외하고 8 비트 량으로서 처리된다.
전술한 포맷을 지원하기 위해, 본 출원인은 두 세트의 16 비트값, 세 세트의 12 비트값, 또는 네 세트의 8 비트값에 관한 리니어(선형) 보간 계산을 수행할 필요가 있다. 텍스쳐 블럭은 계산을 위해 네 세트의 산술 유닛, 즉 16 비트 정밀도의 두 세트, 12 비트 정밀도의 한 세트, 및 8 비트 정밀도의 한 세트를 사용한다.
모든 16 및 12 비트 연산은 사인된 것임에 주의한다. 정규 칼라를 사인된 12 비트 번호로 취급하는 것은 사인되지 않은 8 개 이상의 비트들을 여전히 보존할 것이다.
5.10.2.5.0.1 비디오 텍스쳐
비디오 피드는 몇 개의 YUV(또는 YIQ) 포맷 중 하나 내에 있다. 본 출원인은 RGB 전환을 행하고, RGB로 전환하기 위해 2D 코어를 이용하고 또한 2×2 블럭 내에 텍셀을 기억하기 위해 램버스 마스크된 기록들을 이용함으로써 그 값들을 텍셀 포맷(주시선 순서 대신에 2×2 블럭)으로 팩(pack)한다. 이 데이터는 텍스쳐 메모리 내에 기억되고 노말 텍스쳐로서 디스플레이될 것이다.
5.11 퐁 및 범프 맵핑 블럭(PHB)
5.11.1 알고리즘 개관
퐁 블럭은 프래그먼트 블럭으로부터의 칼라, 재질, 기하구조, 및 라이팅 정보와, 텍스쳐 블럭으로부터의 텍스쳐 정보를 결합함으로써 프래그먼트의 칼라를 계산한다. 그 결과는 칼라링된 프래그먼트이고, 이는 픽셀 블럭으로 발송되며, 그 프래그먼트는 프레임 버퍼 내에 이미 상주하고 있는 임의의 칼라 정보와 혼합된다.
퐁은 프레임, 타일 또는 스크린 공간의 개념에 관해 전혀 영향을 미치지 않는다.
5.11.2 칼라 인덱스 모드
텍스쳐와 프래그먼트 라이팅 연산은 칼라 인덱스 모드에서는 발생하지 않는다. 퐁 블럭에 의해 수행되는 계산만이 포그 계산이다. 이 경우, 인입 프래그먼트 칼라의 R값의 가수(假數)는 0에서 255까지 변하는 8 비트 인덱스로서 이해되고, 프로세싱을 위해 직접 포그 블럭으로 향한다.
5.11.3 파이프라인 위치
퐁 블럭은 텍스쳐 이후와 픽셀 이전에 배치된다. 퐁 블럭은 텍스쳐와 프래그먼트 모두로부터 패킷을 수신한다. 프래그먼트는 프래그먼트당 데이터와, 모드 주입으로부터 통과되는 캐쉬 충만(fill) 패킷을 전송한다. 텍스쳐는 텍셀 데이터만을 전송한다.
퐁에 의해 생성되는 결과만이 픽셀로 전송된다. 픽셀이 요구하는 다른 모든 데이터는 독립된 데이터 경로를 통해 간다. 도 63은 파이프라인에서의 퐁의 위치와인접 블럭들에 대한 관계를 도시하고 있다.
퐁 블럭은 두 개의 내부 캐쉬, 즉 「라이트」 캐쉬와 「재질」 캐쉬를 갖는다. 라이트 캐쉬는 장면 라이트와 글로벌 렌더링 모드 등의 자주 변하는 정보를 유지한다. 재질 캐쉬는 통상 대상물당을 단위로 변하는 정보를 유지한다.
5.11.4 퐁 계산 블럭
퐁 절차는 본 명세서에 요약되어 있는 몇 개의 하위 계산으로 이루어져 있다. 요구되는 데이터의 세부와 상태 정보와 함께 의사 코드는 본 명세서에서 나중에 설명된다. 도 64는 퐁의 블럭도로서, 다양한 계산이 수행되는 것을 도시하고 있다.
5.11.4.1 텍스쳐 계산
텍스쳐 게산(14114)는 텍스쳐 블럭으로부터 인입 텍셜과, 재질 캐쉬로부터 텍스쳐 모드 정보를 받는다. 텍스쳐 환경 계산을 적용하고, 존재한다면 복수 개의 텍스쳐를 병합한다. 그 결과를, 종래의 텍스쳐의 용도인 경우에는 라이트 환경 서브 유닛에, 또는 칼라 외에 퐁 계산의 몇 개의 파라미터를 변형시킴으로써 텍스쳐 이해되는 경우에는 범프 등의 다른 서브 유닛에 발송한다.
5.11.4.2 재질 계산
재질 계산(14126)은 라이팅 계산을 위해 재질값의 소스를 판단한다. 현재의 재질 모드 비트를 이용하여, 프래그먼트 재질을 텍스쳐값으로, 또는 고우러드 계산에서 발원하는 인입 주요 칼라로 교체하기로 결정할 수 있다.
5.11.4.3 범프 계산
범프 계산(14130)은 표면 노말을 판단한다. 프래그먼트에 의해서 보간되는 바와 같이 노말을 단순하게 통과시킬 수 있고, 또는 3×3 매트릭스 곱을 포함하는 계산으로 텍셀값을 사용할 수 있다.
5.11.4.4 라이트-텍스쳐 계산
라이트 텍스쳐 계산(141134)은 라이트의 성분들 중 임의의 것이 텍스쳐 계산으로부터 발송된 텍셀에 의해 교체되어야 할 지를 결정한다.
5.11.4.5 프래그먼트 라이팅 계산
프래그먼트 라이팅 계산(14138)은 GEO 블럭에서의 꼭지점당 라이팅에 사용되는 것과 유사한 방정식을 이용하여 이 프래그먼트에 대한 실제의 라이팅 계산을 수행한다.
5.11.4.6 라이트 환경 계산
라이팅 환경 계산(14142)은 프래그먼트 라이팅 계산의 결과를 텍스쳐 블럭으로부터 발송된 텍스쳐 칼라와 혼합한다.
5.11.4.7 포그 계산
포그 계산(14146)은 「포그」를 적용한다. 즉, 관찰자의 눈에서 프래그먼트까지의 거리에만 의존하는 계산을 이용하여 프래그먼트 칼라를 변형시킨다.
5.12 픽셀 블럭(PIX)
5.12.1 픽셀 블럭의 개관
픽셀 블럭(PIX)은 3D 파이프라인에서의 백엔드 이전에 최종의 블럭이다. 픽셀 블럭은 OpenGL 및 Direct3D 프래그먼트당 연산들에 관한 일을 한다. 이들 연산에는 알파 테스트, 스텐실 테스트, 깊이 테스트, 블렌딩, 디더링, 및 로직 연산들이 포함된다. 픽셀 소유권 테스트는 윈도우 시스템의 일부(OpenGL 1.1 설명서 중 챕터 4를 참조)이고, 백엔드에서 행해진다. 이들 연산 외에, 픽셀은 안티 에일리어성을 위해 샘플 누적을 수행한다.
PIX 이전의 파이프라인 스테이지들은 원시 요소들을 VSP로 전환한다. VSP는 스탬프 상의 다각형의 가시 부분에 상응한다. 스탬프는 이미지의 2×2 픽셀 영역이다. SRT 블럭은 각 타일마다 원시 요소를 수집하는 일을 한다. CUL 블럭은 데이터를 SRT 블럭으로부터 타일 순서로 수신하고, 렌더링된 이미지에전혀기여하지 않는 원시 요소의 부분들을 도태시킨다. CUL 블럭은 VSP를 생성한다. 또한, TEX 유닛과 PHG 유닛은 VSP를 수신하기도 하고, 프래그먼트를 각각 텍스쳐링하고 라이팅하는 일을 하기도 한다.
PIX 블럭은 모드 주입(MIJ) 블럭과 퐁(PHG) 블럭으로부터 입력을 수신한다. VSP와 모드 패킷은 MIJ로부터 수신되고, VSP에 관한 칼라는 PHG로부터 수신된다. 또한, PHG는 VSP에 관한 프래그먼트당 z값들을 공급할 수도 있다. 이것은 대상물이 그것에 공급되는 깊이 텍스쳐를 가질 때 일어난다. VSP에 관한 프래그먼트 칼라는 VSP와 동일한 순서로 PIX 블럭에 도달한다. PIX 블럭은 적용 가능한 모드 셋팅에 따라서 각 가시 샘플에 대한 데이터를 처리한다. PIX가 현재 타일에 관한 모든 스탬프의 처리를 종료할 때, PIX는 PixelOut(PXO) 유닛에 신호를 보내어, 타일에 관한 칼라 버퍼, z 버퍼, 및 스텐실 버퍼를 출력한다. PixelOut 유닛은 픽셀 샘플을 처리하여, 픽셀에 관한 칼라값, z값 및 스텐실값을 생성한다. 이들 픽셀값은 백엔드(BKE) 블럭에 전송된다. 프레임 버퍼에 관한 RDRAM 메모리 제어기는 BKE 블럭 내에 있다. BKE 블럭은 PIX에 의한 기하구조(VSP)의 렌더링을 위해 현재 타일 버퍼를 준비한다. 이것은 프레임 버퍼로부터 현존하는 칼라값, z값 및 스텐실값을 적재(로딩)하는 것을 포함할 수 있다.
도 65는 픽셀 블럭(PIX) 블럭의 블럭도이다.
샘플당 z 버퍼, 스텐실 버퍼 및 칼라 버퍼는 이중 버퍼된다. 따라서, PixelOut이 하나의 타일을 백엔드로 전송하고 있는 동안, 깊이 유닛과 블렌드 유닛은 제2 타일에 기록 중일 수 있다. 샘플당 칼라 버퍼, z 버퍼 및 스텐실 버퍼는 데이터의 하나의 타일 분량, 즉 1024 샘플을 기억하기에 충분할 만큼 크다. 또한, 각 타일마다 픽셀당 z 버퍼, 스텐실 버퍼 및 칼라 버퍼로 된 세트가 있다. 이들 픽셀당 버퍼들은 BKE 블럭과 인터페이스하기 위한 중간 기억부로서 사용된다.
또한, PIX는 MIJ로부터 백엔드(BKE) 블럭에 관한 몇 개의 패킷 바운드를 수신한다. 입력 필터는 이들 패킷을 백엔드 프리인출 큐로 적절하게 통과시키고, 백엔드 프리인출 큐에서는 이들 패킷이 수신된 순서로 처리된다. 또한, 일부 패킷은 PixelOut 유닛의 큐로도 전송된다. 전술한 바와 같이, PIX 블럭은 MIJ 블럭과 PHG 블럭으로부터 입력을 수신한다. 이들 두 개의 입력은 두 개의 입력 큐가 취급한다. MIJ로부터의 데이터 패킷은 VSP 큐로 가고, PHG로부터의 프래그먼트 칼라 패킷/깊이 패킷은 칼라 큐로 간다. 또한, PIX 블럭은 BKE 블럭에 관한 몇 개의 패킷 바운드를 수신한다. 또한, 패킷들 중 일부는 PixelOut 유닛의 입력 큐로 복사된다. BKE 블럭과 PXO 블럭은 데이터 패킷들을 수신된 순서로 처리한다. MIJ는 데이터 패킷들을 입력 FIFO 내에 배치시키다. 입력 필터는 패킷 헤더를 검사하고,BKE 블럭에 관한 데이터 바운드를 BKE 블럭으로, 그리고 PIX가 필요로 하는 데이터 패킷들을 VSP 큐로 전송한다. MIJ로부터 수신된 패킷들 중 대다수는 VSP 큐에 대해 바운드되고, 일부는 BKE 블럭으로 갈 뿐이며, 일부는 VSP 큐에 복사되고, BKE 유닛과 PXO 유닛으로 전송된다.
본 출원인은 타일 준비를 위한 필요와 메카니즘을 설명하기 위해 약간 논지를 벗어난다. 통상의 렌더링 시퀀스는 다음의 연산들을 가질 수 있다.
1. 필요시, 칼라 버퍼, z 버퍼 및 스텐실 버퍼를 그들의 클리어값으로 초기화한다
2. 필요시, 배경 이미지(들)를 버퍼(들)에 Blt 연산한다
3. 기하구조를 렌더링한다
4. 다른 Blt
5. 기하구조를 몇 개 더 렌더링한다
6. 완료하고 던져 버린다
만일 스텝 2에서 Blt 연산이 전체 윈도우를 커버한다면, 그 버퍼에 관한 클리어링 연산은 요구되지 않아도 된다. 만일 Blt 연산이 일부 윈도우를 커버한다면, 클리어가 필요할 수 있다. 게다가, 연산 1과 연산 2는 역순으로 일어날 수 있다. 즉, 전체 윈도우에 대한 Blt 다음에 윈도우의 일부의 클리어링이 올 수 있다. 전체 윈도우를 커버하고 시저 테스트, 타일 정렬, 및 스케일링을 요구하지 않는 전(前) 기하구조 Blt는 타일 버퍼로 다시 독입되는 이미지로서 BKE 블럭에 의해 수행될 수있다. 후(後) 기하구조 Blt들과, 윈도우의 일부를 커버하고 스케일링을 포함하는 Blt들은 파이프라인의 텍스쳐된 원시 요소들로서 사용된다. 마찬가지로, 클리어 연산은 두 가지 종류로 나뉜다. 전체 윈도우 클리어 연산은 PixelOut 유닛에서 수행되고, 윈도우의 일부만을 커버하는 클리어 연산은 PIX 파이프라인에서 수행된다. PIX(그리고 PIX의 일부인 PixelOut)와 BKE는 연산이 호출되는 때에 다양한 버퍼에 관한 기록 마스크들을 인식한다. 사실, BKE 블럭은 기록 마스크를 이용하여, 타일 버퍼를 다시 판독할 필요가 있는 지를 판단한다. 타일 버퍼의 판독은 또한, 프레임의 렌더링에 의해 다각형 또는 분류 메모리가 오버플로우하게 될 때 발생한다. 파이프라인은 사용자 프레임을 두 개 또는 그 이상의 순차적인 프레임으로 쪼갠다. 따라서, 동일한 사용자 프레임의 경우에, 타일은 PIX 블럭 내에서 한 번 이상 조회될 수 있다. 타일을 만나는 제1 시기에, PIX(아마도 PixelOut 유닛) 블럭은 렌더링 이전에 온칩 타일 버퍼를 클리어값으로 클리어할 필요가 있을 수 있다. 후속 프레임의 타일을 렌더링하기 위해, 픽셀 칼라값, z값, 스텐실값은 프레임 메모리로붜 판독된다. 매우 가능성 있는 다른 시나리오는, z 버퍼가 클리어되고 칼라 버퍼와 스텐실 버퍼가 프리렌더링된 이미지로부터 타일에 적재될 때, 발생한다. 따라서, 타일 준비의 일부로서, 두 가지 일이 일어난다. 배경 이미지는 프레임 버퍼 메모리로부터, 인에이블되지 않은 비트 평면과 클리어되는 인에이블된 비트 평면(칼라 마스크, z 마스크 및 스텐실 마스크에 상응)으로 판독된다. PIX로부터 업스트림되는 파이프라인 스테이지는 「클리어」 정보를 전송하는 일을 하기 때문에 이들의 기능적 능력을 인식할 필요가 있다.
PIX는 인입 샘플의 z값을 현존하는 픽셀들의 z값과 비교하여, 어느 샘플을 유지할 지를 결정한다. 또한, 픽셀은 오버플로우로 인해 사용자 프레임의 분할로부터 얻어지는 임의의 칼라 블리딩(bleeding) 산물이 최소화되도록 상태 비트를 제공한다.
5.12.2 픽셀 블럭 내의 기능 유닛
픽셀 블럭 내의 기능 유닛의 경우, 칼라값, 알파값 및 스티플값은 프래그먼트당 생성되고 따라서 상응하는 테스트의 결과가 프래그먼트의 모든 샘플에 적용됨에 주의한다. 시저 테스트에서도 마찬가지로 동일하다. 이것은 프래그먼트당 계산 및 샘플당 계산에 기초하여 최적화를 시도하는 것이다.
픽셀 스텐실 연산과 샘플 스텐실 연산의 주요 차이는 스텐실값이 어떻게 타일 버퍼로부터 호출되고 그것에 기록되는 가에 있다.
5.13 백엔드 블럭(BKE)
5.13.1 기능 개관
5.13.1.1 용어 정의
이하에서, 본 명세서을 읽는데 용이하게 다음의 용어들을 정의한다. 독자는 필요에 따라 이 섹션을 건너 뛰어도 되고 읽어도 된다.
픽셀 소유(PO BOX) 는 주어진 픽셀에 관해 그것이 속하는 스크린 윈도우 ID를 판단하는 서브 유닛이다. 이 메카니즘을 이용하여, 스캔아웃은 그 픽셀과 관련된 오버레이 윈도우가 있는 지를 판단하고, 3D 타일 기록은 그 픽셀에 대한 기록 허용을 점검한다.
BKE 버스 는 BKE를 TDG, CFD 및 AGI와 인터페이스하는 상호 접속부이다. 이 버스는 프레임 버퍼 메모리와 BKE 레지스터에 판독 및 기록하는데 사용된다.
프레임 버퍼(FB) 는 BKE에 의해 제어되는 메모리로써, 2D 윈도우 및 3D 윈도우와 관련된 모든 칼라값과 깊이값을 유지한다. 이 버퍼는 픽셀 칼라를 리프레쉬 레이트로 스캔아웃함으로써 모니터에 디스플레이되는 스크린 버퍼를 포함한다. 또한, 이 버퍼는 스크린 오버레이와 p 버퍼, 디스플레이 리스트와 꼭지점 어레이, 및 누적 버퍼를 막는다. 스크린 버퍼와 3D p 버퍼는 이중 버퍼될 수 있다.
5.13.1.2 주요 기능
도 66은 유닛들이 인터페이스하는 백엔드를 도시하고 있다. 도면에서 보는 바와 같이, BKE는 픽셀 유닛과 대부분 상호 작용하여, 3D 타일을 판독 및 기록하고, 2D 그래픽 엔진과 상호 작용하여, Blit 연산을 수행한다. CFD 유닛은 BKE 버스를 이용하여, 프레임 버퍼로부터 디스플레이 유닛을 판독한다. AGI 유닛(1104)은 BKE 레지스터와 메모리 맵된 프레임 버퍼 데이터를 판독 및 기록한다.
백엔드의 주요 기능은 다음과 같다.
● 3D 타일 판독
● 픽셀 소유를 이용한 3D 타일 기록
● 기록 인에이블과 오버레이 검출을 위한 픽셀 소유
● 픽셀 소유를 이용한 스캔아웃
● 고정된 비율의 줌
● 3D 누적 버퍼
● 프레임 버퍼 판독 및 기록
● winid(위도우 id) 맵에 대한 칼라 키
● VGA
● RAMDAC
5.13.2 3D 타일 판독
BKE는 PIX로부터의 프리인출된 타일 개시 커맨드를 수신한다. 이들 패킷은 SRT에서 발원하고 모든 3D 유닛을 우회하여, 타일 버퍼의 내용을 판독하는데 필요한 대기 시간을 제공한다. 3D 윈도우 특성들은 PIX로부터 앞서 유사하게 수신된 개시 프레임 커맨드에 의해 초기화된다. 이들 특성들은 칼라 및 깊이 표면에 대한 어드레스, 평면들에 대한 인에이블 비트(알파 버퍼, 스텐실 버퍼, A 버퍼 및 B 버퍼), 윈도우의 폭, 높이 및 보폭, 및 칼라 포맷 등을 포함하고 있다.
픽셀 어드레스는 윈도우 파라미터를 이용하여 계산된다. 타일 기하구조를 이용하여, 16 개의 픽셀이 단일의 메모리 판독 요구에 의해 인출된다.
픽셀 소유는 3D 타일 판독에 대해 참고되지 않는다. 만일 윈도우가 메인 스크린 내에 있다면, (윈도우의 상부에 있는) 소유는 기록 프로세스 중에 판단된다.
픽셀은 감소된 정밀도의 칼라에 대한 24 비트 칼라로 확장되지 않지만, 32 비트 픽셀 워드로 언팩된다. 깊이값들은 필요시에 독립된 버퍼들에 독입(讀入)된다.
빈번하게, 개시 타일은, 크리어 연산이 적용될 것이기 때문에 타일 판독이 요구되지 않음을 표시한다. 타일 버퍼는 여전히 할당되어 있고, 타일 기록에 대한픽셀 소유가 개시할 것이다.
5.13.3 3D 타일 기록
3D 타일 기록 프로세스는 3D 타일 판독이 종료하자마자 개시한다. 이 지연 시간은 픽셀 소유 기록 인에이블을 판단하는데 사용된다. 타일 개시 메모리 어드레스는 이미 3D 타일 판독 프로세스 중에 계산되어 있다. 기록 인에이블은 램버스 메모리 기반의 프레임 버퍼에 대한 기록 마스크로서 사용된다. 칼라는 프레임 버퍼에 기록되기 이전에 칼라 깊이 파라미터에 의해 지정되게 팩된다.
5.13.4 픽셀 소유
픽셀 소유는 고유된 스크린에 대한 기록 인에이블을 판단하고 스캔아웃 판독에 대한 오버레이 윈도우를 식별하는데 사용된다.
픽셀 소유 블럭은 8 비트 윈도우 id들을 갖는 픽셀당 윈도우 id 맵과 16 개의 바운딩 상자들을 포함하고 있다. 이들 윈도우 id들은 16 개의 윈도우를 설명하는 소정의 테이블을 지시한다. 바운딩 상자와 winid 맵 메카니즘에 대한 독립된 인에이블 비트들은 동시 사용을 허용한다. 제어 비트들은 어느 메카니즘이 우선권 적용되는 지를 판단하는데 사용된다.
픽셀 소유는 스크린 x 픽셀 좌표와 y 픽셀 좌표를 사용한다. 각 바운딩 상자는 그 윈도우 내에 포함되어 있는 최대 픽셀 좌표와 최소 픽셀 좌표를 지정한다. 바운딩 상자들은 상부 윈도우가 최종 인에이블된 바운딩 상자에 의해 지정되게 배열된다. 바운딩 상자들은 사각형 형상의 윈도우들로 셋업되기에 용이하다. 그들 바운딩 상자들은 대부분 3D 윈도우에 사용되지만, 사용되는 2D 윈도우의 수가 적은경우에는 이 메카니즘이 2D 윈도우를 클립하는데 사용될 수도 있다.
임의의 형상의 보다 많은 수의 윈도우의 경우, 보다 많은 메모리 강조 메카니즘이 사용된다. 픽셀당 8 비트 윈도우 id 맵은 주어진 스크린 픽셀이 속하는 위도우를 식별하기 위해 옵션으로 유지된다.
기록시, 만일 타일의 윈도우 id가 픽셀 소유에 의해 획득된 픽셀 id와 일치하면, 픽셀 기록이 인에이블된다. 스캔아웃의 경우, 스크린에서 오버레이로 그리고 다시 역으로의 전이는 픽셀 소유 윈도우 id와 현재 스캔아웃 윈도우 id를 비교함으로써 검출된다.
픽셀 소유 프로세스를 가속화하기 위해, 픽셀 점검은 16 픽셀 점검(a 16 pixels check)을 수행함으로써 자주 회피된다. 배열된 수평 16 픽셀 스트립의 경우, 모든 것은 동일한 윈도우 id를 공유하고, 이것은 하나의 연산으로 판단될 수 있다.
5.13.5 스캔아웃
스캔아웃은 프레임 버퍼 칼라를 판독하고, 데이터를 RAMDAC로 전송하여 디스플레이한다. 스캔아웃은 프레임 버퍼에 관한 최상위 우선권 연산이다. 스캔아웃될 픽셀들은 판독 픽셀 소유 블럭을 통과하여, 가상 블릿(blit), 오버레이 등을 행한다. 비교적 큰 큐는 RAMDAC의 입력에서 사용되어, 오버레이를 취급하고 수평 귀선소거 기간을 이용하는 것에 관한 불규칙 대기 시간을 평활한다.
팔렛트 정정과 감마 정정은 RAMDAC에 의해 수행된다. 고정 비율의 줌아웃 기능은 스캔아웃 중에 백엔드에 의해 수행된다.
스캔아웃은 1600×1200 스크린에 대해 120 Hz의 리프레쉬 레이트를 감소된 2D 퍼포먼스로 달성할 수 있어야 한다. 총 3D 퍼포먼스에서, 75 Hz 리프레쉬 레이트의 최소값이 요구된다.
스캔아웃은 윈도우당 네 개의 상이한 픽셀 칼라 포맷을 지원한다. 메인 스크린 상의 모든 윈도우는 동일한 픽셀 칼라 포맷을 공유한다. 지원된 칼라 포맷은 다음과 같다.
● 32 비트 RGBA (8-8-8-8)
● 24 비트 RGB (8-8-8)
● 16 비트 RGB (5-6-5)
● 8 비트 칼라 인덱스
스캔아웃은 항상 24 비트를 스캔아웃 큐(SOQ)에 기록한다. 칼라 전환과 언팩킹은 수행되지 않는다. 8 비트 칼라와 16 비트 칼라에 대해서는 하위 비트들이 클리어된다. 픽셀당 칼라 포맷을 표시하기 위해서, 두 개의 부가 비트가 사용된다.
또한, 임의의 스테레오 장치에 대해서는 인터레이스된 스캔아웃이 지원된다.
실시간 3D 애플리케이션은 작은 윈도우에 작도하고 그 작은 이미지를 큰 윈도우로 줌잉함으로써 렌더링의 속도를 향상시킬 필요가 있다. 바이리니어 보간을 갖는 이 줌잉은 픽셀이 스캔아웃될 때 행해진다.
BKE는 고정된 임의의 스케일링 비율, 즉 각 방향으로 16/n, n=1..15를 지원한다. 샘플점들과 보간 계수들은 줌 연산 이전에 소프트웨어에 의해 다운로드된다.
고정된 동일 비율(동일 계수들)을 이용하여, 최대 네 개의 윈도우가 줌아웃될 수 있다. 스캔아웃된 픽셀들에 대해서, 줌 바운딩 상자들이 비교되어, 픽셀이 줌 기능 출력으로부터 얻어질 필요가 있는 지가 판단된다. 줌 로직은 계수 테이블 인덱스를 시퀀스할 수 있게 연속으로 동작된다. 따라서, 스캔아웃의 윈도우 id가 줌 상자들의 윈도우 id와 일치하지 않는다면, 줌 출력은 무시된다.
윈도우 줌 상자들에 대해서, 중복은 허용되지 않는다.
5.13.6 3D 누산 버퍼
BKE는 64 비트 (칼라당 16 개의 비트) 누적 버퍼를 지원한다. 누적 커맨드는 프레임들간의 트윈 패킷들로서 수신된다. 그들 누적 커맨드는 3D 타일 칼라, 누적 버퍼 칼라 및 중간값과의 곱셈 기능과 덧셈 기능을 수행한다. 그 결과는 누적 버퍼 또는 3D 타일 중 어느 하나에 기록된다.
시저 테스트가 인에이블될 때, 현재 시저 상자 내에 있는 그들 픽셀은 임의의 누적 연산에 의해 업데이트되고, 다른 경우에는 윈도우 내의 모든 픽셀이 업데이트된다.
픽셀들이 3D 타일에 다시 기록될 때, 시저 테스트 외에 디더링과 칼라 마스킹도 적용된다. 칼라 인덱스 모드에 대해서는 누적 버퍼들이 사용되지 않는다.
5.13.7 프레임 버퍼 판독과 기록
BKE는 모든 내부 서브 유닛과 외부 유닛에 대해 판독 인터페이스 및 기록 인터페이스를 제공한다. AGI, CFD 및 TDG는 BKE 버스를 이용하여 프레임 버퍼 판독 및 기록 요구를 만든다. BKE는 이들 유닛으로부터 버스 요구를 중재한다.
내부 서브 유닛은 메모리 버스를 이용하여 프레임 버퍼를 액세스한다. 3D 타일 판독, 3D 타일 기록, 누적 버퍼 판독 및 기록, 픽셀 소유 winid 맵 판독, 스캔아웃 스크린 및 오버레이 판독, 줌 윈도우 판독, 및 칼라 키 winid 맵 기록의 모두는 메모리 버스를 이용하여, 프레임 버퍼를 액세스한다.
대역폭 능력이 총 3.2 Gbyte/sec인 두 개의 램버스 메모리 채널은 프레임 버퍼에 대한 퍼포먼스 필요 조건을 유지하는데 사용된다. 스캔아웃과 줌 판독은 최상위 우선권을 갖는다.
5.13.8 칼라 키 윈도우 ID 맵 기록
윈도우의 칼라 키 기능은 윈도우 id 맵을 거쳐서 BKE에 의해 제공된다. 특수 칼라 키를 갖는 픽셀들은 적절한 윈도우를 지시하기 위해 그들의 상응하는 윈도우 id 맵 세트(key_id_on)를 가질 것이다. 윈도우 id가 key_id_on인 기록이 발생한다면, 칼라 키된 픽셀들만이 교체될 것이다.
BKE는 소프트웨어가 칼라 키에 대한 윈도우 id 맵을 생성하는데 사용될 수 있는 특수한 특성을 포함하고 있다. 칼라 버퍼 기록이 특수한 윈도우에서 발생하고 칼라들이 임의의 범위 이내에 있는 경우에는 소정의 픽셀에 대한 winid가 기록될 수 있다.
5.13.9 RAMDAC
RAMDAC는 디지털 칼라값을 아날로그값으로 전환하는데 사용된다. 소프트웨어 프로그램 가능한 칼라 팔렛트는 8 비트 칼라 인덱스를 24 비트 RGB값으로 전환한다. 또한, 룩업 기반의 감마 정정을 수행하기 위해, 동일한 RAM이 사용된다. 룩업 RAM은 각 칼라 성분당 1 개인 세 개의 256×10 비트 SRAM으로서 구성된다.
RAMDAC는 최대 300 MHz를 생성하고 픽셀 클럭들을 생성할 수 있다. RAMDAC는 VGA 코어 또는 스캔아웃 큐로부터 픽셀을 받아 들인다. RAMDA777C는 SEI로부터 코어로서 획득된다. 본 명세서에서는 그의 기능에 관한 코어 및 기본 필요 조건과의 인터페이스를 지정하는데 불과할 것이다.
5.13.10 VGA
VGA 코어는 부트 시간 중에만, 그리고 윈도우 NT 하에서 실행 중인 풀 스크린 호환성 애플리케이션에 의해 사용된다. VGA 코어는 레지스터 판독 및 기록에 관한 BKE 버스, 프레임 버퍼 판독 및 기록에 관한 메모리 버스, 및 VGA 모드에서의 스캔아웃에 관한 RAMDAC와 인터페이스한다. VGA 유닛이 디스에이블되는 경우에, 그의 스캔아웃은 무시된다.
VGA 코어는 Alpin 시스템으로부터 획득된다. 본 명세서에서는 그의 기능에 관한 코어 및 기본 필요 조건과의 인터페이스를 지정할 뿐이다.
5.13.11 BKE 버스
CFD 설명에서 설명한 바와 같이, 모두 BKE 버스라고 부르는 백엔드 입력 버스와 백엔드 출력 버스가 있다.
BKE 및 AGI, CFD 및 TDG를 통한 메모리 판독과 기록을 수행하는 외부 클라이언트 유닛은 도 67을 참조한다.
이들 유닛은 BKE 버스의 소유를 얻기 위해 요구/허용 프로토콜을 따른다. 일단 소정의 클라이언트에게 버스가 허용되면, 판독 또는 기록 패킷을 BKE에 전달할 수 있고, BKE로부터 판독 데이터를 샘플할 수 있다.
클라이언트는 그의 Req 신호를 주장함으로써 BKE 버스 소유를 요청한다. BKE는 이 요청과 다른 조건들을 중재할 것이다. 요구 중인 클라이언트에게 소유가 허용되는 경우에, BKE는 Gnt 신호를 주장할 것이다. 그의 메모리 액세스가 종료한 후, 현재의 소유자는 Req 신호를 제거하거나, 또는 BKE로부터 Rls(Release: 포기) 신호를 수신할 때까지 그의 소유를 유지(park: 대기)함으로써 소유를 자발적으로 포기할 수 있다. 대개, 클라이언트는 제한된 시간 내에 소유를 기권한 후 Rls 신호를 수신해야 한다. 예컨대, 클라이언트는 더 이상 새로운 판독/기록 요구를 BKE에 전달해서는 안된다. 만일 번속중인 판독이 있다면, 클라이언트는 최종 판독 데이터가 복귀되면 바로 소유를 포기해야 한다.
부가적인 설명
본 발명은 여러 가지의 혁신적인 구조, 방법 및 절차를 제공한다. 그 구조는 개개의 회로, 디지털과 아날로그 회로들, 컴퓨터 아키텍쳐와 시스템, 파이프라인 아키텍쳐 및 프로세서 연결성을 비롯해서 많은 형태를 갖는다. 방법 논리적으로, 본 발명은 지연 쉐이딩에 관한 절차와, 지연 쉐이딩 장치에 사용하고 통상적으로 비지연 쉐이딩 장치와 데이터 프로세서에 적용 가능한 다른 수 많은 혁신적 절차를 제공한다. 당해 기술 분야의 숙련자들은, 본 발명의 수 많은 구조와 절차가 3차원 그래픽 프로세서에 대해 설명되었지만, 혁신적인 많은 것들이 2차원 프로세싱과 데이터 프로세싱에 대해 클리어 이용 가능성을 갖고, 조작이 대개 포함되어 있음을 이해할 것이다. 예컨대, 범용 컴퓨팅 장치, 시스템 및 아키텍쳐의 전후 관계에 혁식적인 많은 것들이 사용될 수 있다. 또한, 몇 가지 실시예들은 하드웨어 구성예로부터 요구 또는 수혜받을 것이지만, 혁신적인 것들의 적어도 몇 가지는 소프트웨어/펌웨어 구성예 및 그들의 조합 중 어느 하나에 적용 가능함이 이해되어야 할 것이다.
전술한 본 발명의 진보적인 구조 및 방법이 제공하는 혁신적인 특성들 중 몇 가지의 요약 리스트는 바로 아래에 제공되고 있다. 이 리스크는 예시적인 것이므로, 한정으로서 해석되어서는 안된다. 특히, 본 명세서에서 설명한 개개의 구조와 절차는 다양한 방법으로 조합될 수 있고, 이들 조합은 낱낱이 리스트화되지 않았음에 주의한다. 게다가, 이 리스트는 본 발명의 혁신적인 것들을 3차원 그래픽 프로세서에 적용하는 것에 촛점이 맞추어져 있지만, 그들 본 발명의 혁식적인 것들은 본 명세서에 설명하고 도면에 도시한 구조 및/또는 동작을 갖는 범용 컴퓨팅 기구에 용이하게 적용될 수 있다.
본 명세서에 설명한 본 발명은 다음의 것들을 포함하는 진보적인 수 많은 구조와 방법을 제공하지만 이에 구조와 절차를 한정하지는 않는다. 1) 3차원 그래픽 지연 쉐이딩 장치 아키텍쳐, 2) 보존적 잠복면 제거, 3) 타일 프리인출, 4) 전후 관계 스위칭, 5) 보다 양호한 안티에일리어싱을 위한 SRT에 의한 다중 경로, 6) 샘플 위치의 선택, 7) 분류 이전 셋업, 8) 트윈 패킷, 9) 패킷화된 데이터 전송, 10) 알파 테스트, 블렌딩, 스티플된 선 등, 11) 칩 파티셔닝, 12) 대상물 태그(특히, 지연 쉐이딩 아키텍쳐에서), 13) 칼라 공간에서의 로가리즘직 노말화(부동점 칼라), 14) 백엔드 마이크로아키텍쳐, 15) 스캔아웃 중의 픽셀 줌잉, 16) 스캔아웃 상의 가상 블럭 이송(BLT), 17) 픽셀 소유, 18) 윈도우 ID, 19) 블럭킹(Blocking)및 넌블럭킹 인터럽트 메카니즘, 20) 큐잉 메카니즘, 21) 꼭지점 리스트들에 대한 토큰 삽입, 22) 지연 쉐이딩 장치에서의 알파 테스트와 스텐실의 취급, 23) 잠복면 제거, 24) 타일화된 내용 어드레스 가능한 Z 버퍼, 25) 3 스테이지 Z 버퍼 프로세스, 26) Z Ref와 Dz/dx 및 Dx/dy를 갖는 스탬프 다운스트림의 전송, 27) Z 버퍼 메모리로부터의 스탬프 부분 메모리 분리, 28) 분류된 투명성 알고리즘, 29) 샘플당 유한 상태 기구, 30) SAM 구성, 31) 프래그먼트 마이크로아키텍쳐, 32) GEO 마이크로아키텍쳐, 33) 파이프스테이지 인터리빙, 34) 다각형 클립핑 알고리즘, 35) 2차원 블럭 마이크로아키텍쳐, 36) 0 대 1 인클루시브 곱셈기(Mul-18p), 37) 정수-부동-정수 (Ifi) 정합 유닛, 38) 테일러 시리즈 구성, 39) 수학 블럭 구성 방법, 40) 다중칩 통신링 그래픽, 41) 지연 쉐이딩 장치의 모드 취급 방법, 42) 모드 캣칭, 43) MLM 포인터 기억부, 44) 다각형 메모리 내의 분류 전체의 클립된 다각형, 45) 퐁/범프 마이크로아키텍쳐, 46) 프래그먼트 엔진의 재질-태그-기반 자원 할당, 47) 텍스쳐 환경과 라이팅에 대한 동적 마이크로코드 생성, 48) 지연 쉐이딩 아키텍쳐에서의 탄젠트 공각 라이팅 실행 방법, 49) 가변 스케일 범프 맵, 50) 자동 기본 생성, 51) 독립적으로 각도와 크기를 행함에 의한 자동 변화도 필드 생성 노말 보간, 52) 지연 쉐이딩 장치에서의 포스트-타일-분류 셋업 연산, 53) 통일화된 원시 요소 디스크립션(설명), 54) 타일 관련 Y값과 스크린 관련 X값, 55) 하드웨어 타일 분류, 56) 충분한 공간 룩어헤드 메카니즘, 57) 접촉된 타일 구성, 58) 텍스쳐 재사용 정합 레지스터(지연 쉐이딩 장치 포함), 59) 픽셀로 확장된 샘플(텍스쳐 미스 핸들링), 60) 타일 버퍼와 픽셀 버퍼(텍스쳐 마이크로아키텍쳐), 61) 프로세서에서패킷화된 데이터 이송.
본 명세서에 언급한 모든 공개 자료, 특허, 및 특허 출원은 개개의 각 공개 자료 또는 특허 출원이 본원에 인용되게 구체적이고 개별적으로 표시된 것과 동일한 범위로 본 명세서에 인용되고 있다.
본 발명의 특정 실시예들의 전술한 설명은 예시와 설명의 목적상 제공된 것이었다. 그들 설명이 본 발명을 공개한 것과 꼭같은 형태로 맞추거나 한정하고자 하는 것은 아니며, 분명한 것은 상기한 교시의 견지에서 보면 많은 변형예와 수정예가 가능하다. 그들 실시예들은 본 발명의 원리와 그의 실제적 적용을 최적으로 설명하기 위해 설명되어 있다. 따라서, 당해 기술 분야의 숙련자들은 본 발명과 다양한 실시예들을, 의도하는 특정의 용도에 적합하게 다양하게 변형하여 최적하게 사용할 수 있다. 본 발명의 범주는 본 명세서에 첨부한 특허 청구 범위와 그 청구 범위의 균등물에 의해 정의되어야 한다.
관련 출원
본 출원은 본원에 인용하고, 출원일자가 1998년 8월 20일이며, 발명의 명칭이 「지연 쉐이딩을 갖는 그래픽 프로세서」인 미국 특허 가출원 번호 제60/097,336호에 관해서 미국 특허법 제35조 제119(e)항의 적용을 받아 청구한다.
또한, 본 출원은 다음의 미국 특허 출원에 관해서 미국 특허법 제35조 제120항의 적용을 받아 청구한다.
1) 출원 번호: 제09/213,990호, 출원일: 1998년 12월 17일, 발명의 명칭: 지연 쉐이딩 아키텍쳐에서 탄젠트 공간 라이팅을 행하는 방법(대리인 관리 번호: A-66397)
2) 출원 번호: , 출원일: , 발명의 명칭: 통일된 원시 요소 디스크립터를 이용한 3D 그래픽 파이프라인의 셋업 연산 수행 장치 및 방법(대리인 관리 번호: A-66382)
3) 출원 번호: , 출원일: , 발명의 명칭: 포스트 파일 분류 셋업(대리인 관리 번호: A-66383)
4) 출원 번호: , 출원일: , 발명의 명칭: 타일 관련 Y값 및 스크린 관련 X값(대리인 관리 번호: A-66384)
5) 출원 번호: , 출원일: , 발명의 명칭: 3차원 그래픽 파이프라인의 이미지 데이터의 공간 분류 시스템, 장치 및 방법(대리인 관리 번호: A-66380)
6) 출원 번호: , 출원일: , 발명의 명칭: 3차원 그래픽 파이프라인의 대상물 기하구조를 분류하기 위해 보장된 보존성 메모리 추정치를 생성하는 시스템, 장치 및 방법(대리인 관리 번호: A-66381)
7) 출원 번호: , 출원일: , 발명의 명칭: 3차원 그래픽 파이프라인의 렌더링 소스 밸런싱 시스템, 장치 및 방법(대리인 관리 번호: A-66379)
8) 출원 번호: , 출원일: , 발명의 명칭: 파이프라인 상태 기억 및 부활을 갖는 그래픽 프로세서(대리인 관리 번호: A-66378)
9) 출원 번호: , 출원일: , 발명의 명칭: 텍스쳐 생성 방법 및 장치(대리인 관리 번호: A-66398)
10) 출원 번호: , 출원일: , 발명의 명칭: 3D 그래픽 파이프라인의 기하구조 연산 장치 및 방법(대리인 관리 번호: A-66373)
11) 출원 번호: , 출원일: , 발명의 명칭: 3D 그래픽 파이프라인의 프래그먼트 연산 장치 및 방법(대리인 관리 번호: A-66399)
12) 출원 번호: , 출원일: , 발명의 명칭: 지연 쉐이딩 파이프라인 프로세서(대리인 관리 번호: A-66360)
13) 출원 번호: , 출원일: , 발명의 명칭: 지연 쉐이딩을 갖는 그래픽 프로세서의 보존적 잠복면 제거 수행 방법 및 장치(대리인 관리 번호: A-66386)
14) 출원 번호: , 출원일: , 발명의 명칭: 고급 특성을 갖는 지연 쉐이딩 그래픽 파이프라인 프로세서(대리인 관리 번호: A-66364)

Claims (1)

  1. 지연 그래픽 파이프라인 프로세서로서,
    (a) 외부 컴퓨터로부터의 데이터 및/또는 커맨드의 입력을 통신 채널을 통해 전달하고 상기 입력을 일련의 패킷으로 변환하는 커맨드 인출 및 디코드 유닛과,
    (b) 상기 패킷을 수신하며 좌표 변환, 모든 다각형을 실제 또는 축소의 삼각형으로 분해, 관찰 볼륨 클립핑, 고우러드 쉐이딩에 필요한 옵션적 꼭지점당 라이팅 및 칼라 계산을 수행하는 기하구조 유닛와,
    (c) 상기 다각형 유닛과 관련되며, 상기 기하구조 유닛으로부터 데이터 스트림을 수신하여 상기 데이터 스트림을 상기 다각형 메모리에 전송되어 기억되는 비꼭지점 데이터와 분류 유닛에 전달된 꼭지점 데이터로 분리하는 모드 추출 및 다각형 메모리와,
    (d) 상기 분류 유닛과 관련되고, 상기 모드 추출 유닛으로부터 꼭지점을 추출하고 결과로 얻은 점, 선, 삼각형을 타일로 정렬하며 타일당의 순서로 완성 원시 요소를 나타내는 분류 블럭 출력 패킷에 의하여 상기 분료된 기하구조를 셋업 유닛으로 전달하는 분류 유닛 및 분류 메모리와,
    (e) 상기 분류 블럭 출력 패킷을 수신하여 타일당 단위에 기초해서 선 및 삼각형에 대한 공간 미분을 한 번에 하나의 원시 요소에 대해서 계산하고 상기 공간 미분을 패킷 형태로 컬 유닛에 전달하는 셋업 유닛과,
    (f) 한 번에 데이터의 하나의 타일 분량을 수신하며, 크기 비교 내용 어드레스 가능한 메모리(MCCAM) 컬 서브 유닛 및 서브 픽셀 컬 서브 유닛을 가진 컬 유닛-상기 MCCAM 컬 서브 유닛은 사전 처리된 기하구조에 의해서 완전히 숨겨진 원시 요소를 버리도록 동작 가능하며, 상기 서브픽셀 컬 서브 유닛은 부분적으로 또는 완전히 가시적인 잔류 원시 요소를 처리하고, 잔류 원시 요소의 가시 프래그먼트를 결정하며, 상기 서브픽셀 컬 서브 유닛는 프래그먼트의 스탬프값을 한 번에 출력한다-와,
    (g) 상기 컬 유닛으로부터 입력을 수신하고 상기 다각형 메모리로부터의 칼라 및 재질의 성질을 포함하는 모드 정보를 수신하며 상기 모드 정보를 하나 이상의 프래그먼트 유닛, 텍스쳐 유닛, 퐁 유닛, 픽셀 유닛, 후단 유닛에 전달하는 모드 주입 유닛-상기 프래그먼트 유닛, 상기 텍스쳐 유닛, 상기 퐁 유닛, 상기 픽셀 유닛, 상기 후단 유닛의 적어도 일부는 최근에 사용된 모드 정보에 대한 모드 캐시를 포함하고, 상기 모드 주입 유닛은 이미 캐시된 정보를 식별하는 상태 정보를 유지하고 이미 캐시된 정보를 송신하지 않음에 따라 통신 대역폭을 축소한다-와,
    (h) 고우러드 쉐이딩에 대한 칼라값을 보간하며, 텍스쳐 맵핑용 텍스쳐 좌표와 퐁 쉐이딩용 표면 노말을 보간하고, 텍스쳐를 나타내는 범프 맵이 사용되고 있으면, 표면 탄젠트를 보간하며, 무게 중심 계수를 이용하여 정정된 보간을 수행하는 프래그먼트 유닛과,
    (i) 상기 텍스쳐 유닛와 관련된 텍스쳐 유닛 및 텍스쳐 메모리-상기 텍스쳐 유닛는 상기 텍스쳐 메모리에 저장된 텍스쳐 맵을 픽셀 프래그먼트에 인가하고, 상기 텍스쳐는 MIP 맵핑되며, 상이한 레벨의 상세로 일련의 텍스쳐 맵을 포함하며,각 맵은 눈 점(eye point)으로부터 소정 거리에서 텍스쳐의 외형을 표현하며, 상기 텍스쳐 유닛은 정확한 상세 레벨에 근접하는 소정의 픽셀 프래그먼트에 대한 텍스쳐 값을 생성하도록 상기 텍스쳐맵으로부터 트라이리니어 보간을 수행하고, 상기 텍스쳐 유닛은 보간된 텍스쳐값을 프래그먼트에 기초해서 상기 퐁 유닛에 전달한다-와,
    (j) 상기 모드 주입 유닛에 의해 공급된 라이팅 정보 및 재질, 상기 텍스쳐 유닛으로부터의 상기 텍스쳐 칼라, 프래그먼트의 외형 칼라를 결정하기 위해 상기 프래그먼트 유닛에 의해서 생성된 상기 표면 노말을 이용하여 각 픽셀 프래그먼트에 대한 퐁 쉐이딩을 수행하는 퐁 라이팅 유닛-상기 퐁 블럭은 범프 맵핑이 이용되고 있으면 쉐이딩 전 프래그먼트의 표면 노말을 섭동하도록 상기 텍스쳐 유닛로부터의 상기 보간된 높이 필드 변화도를 선택적으로 이용한다-와,
    (k) 각 프래그먼트가 독립 칼라값을 가지는 가시적 스탬프 부분이라 불리는, 프래그먼트의 하나의 스탬프값을 한 번에 수신하며, 각 픽셀의 각 샘플에 대한 픽셀 소유권 테스트, 시저 테스트, 알파 테스트, 스텐실 연산, 깊이 테스트, 블렌딩, 디더링 및 논리 연산을 수행하고, 완성된 픽셀의 타일값을 누적한 후, 픽셀을 안티에일리어싱하기 위해 각 픽셀내에서 샘플들을 블렌딩하며, 상기 안티에일리어싱된 픽셀을 후단 유닛에 전달하는 픽셀 유닛과,
    (l) 상기 픽셀 유닛에 결합되어 상기 픽셀 유닛으로부터 픽셀의 타일값을 한 번에 수신하여 상기 픽셀을 프레임 버퍼에 저장하는 상기 후단 유닛을 포함하는 지연 그래픽 파이프라인 프로세서.
KR10-2001-7002171A 1998-08-20 1999-08-20 그래픽 렌더링 방법, 컴퓨터 그래픽 파이프라인용 상태 감시 장치 및 3차원 그래픽 렌더링용 계산처리 시스템 KR100478767B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US9733698P 1998-08-20 1998-08-20
US60/097,336 1998-08-20
US09/213,990 1998-12-17
US09/213,990 US6771264B1 (en) 1998-08-20 1998-12-17 Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor

Publications (2)

Publication Number Publication Date
KR20010085424A true KR20010085424A (ko) 2001-09-07
KR100478767B1 KR100478767B1 (ko) 2005-03-24

Family

ID=26793137

Family Applications (2)

Application Number Title Priority Date Filing Date
KR10-2001-7002171A KR100478767B1 (ko) 1998-08-20 1999-08-20 그래픽 렌더링 방법, 컴퓨터 그래픽 파이프라인용 상태 감시 장치 및 3차원 그래픽 렌더링용 계산처리 시스템
KR10-2001-7002201A KR100485241B1 (ko) 1998-08-20 1999-08-20 개선된 지연 쉐이딩 그래픽 파이프라인 프로세서

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR10-2001-7002201A KR100485241B1 (ko) 1998-08-20 1999-08-20 개선된 지연 쉐이딩 그래픽 파이프라인 프로세서

Country Status (6)

Country Link
US (5) US6771264B1 (ko)
EP (2) EP1105844A1 (ko)
JP (3) JP3657519B2 (ko)
KR (2) KR100478767B1 (ko)
AU (6) AU5687899A (ko)
WO (6) WO2000019377A1 (ko)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7161603B2 (en) 2003-04-28 2007-01-09 Kabushiki Kaisha Toshiba Image rendering device and image rendering method
KR100853912B1 (ko) * 2002-06-13 2008-08-25 아나로그 디바이시즈 인코포레이티드 초기 메모리에 저장된 화상 데이타를 처리하는 방법, 컴퓨터 판독가능 기록매체 및 장치
KR100887012B1 (ko) * 2004-09-13 2009-03-04 엔비디아 코포레이션 그래픽 처리 서브시스템 및 픽셀 단편에 대해 적어도하나의 값을 결정하기 위한 방법
KR100890702B1 (ko) * 2006-05-12 2009-03-27 엔비디아 코포레이션 그래픽 프로세서의 다중 디스플레이 헤드를 이용한안티앨리어싱
KR100922780B1 (ko) * 2004-09-22 2009-10-21 콸콤 인코포레이티드 그래픽 프로세서를 위한 효율적인 인터페이스 및 어셈블러
US8041903B2 (en) 2008-10-31 2011-10-18 Samsung Electronics Co., Ltd. Processor and method for controlling memory
KR101451966B1 (ko) * 2013-06-17 2014-10-22 (주)가비아 모바일용 영상 렌더링 제공 시스템 및 방법
KR20170095815A (ko) * 2014-12-11 2017-08-23 인텔 코포레이션 포지션 온리 파이프라인에서의 완화된 소팅

Families Citing this family (646)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8253729B1 (en) * 1983-05-09 2012-08-28 Geshwind David M Trimming depth buffer during 2D to 3D conversion
US6590996B1 (en) * 2000-02-14 2003-07-08 Digimarc Corporation Color adaptive watermarking
US7023437B1 (en) 1998-07-22 2006-04-04 Nvidia Corporation System and method for accelerating graphics processing using a post-geometry data stream during multiple-pass rendering
US6480205B1 (en) 1998-07-22 2002-11-12 Nvidia Corporation Method and apparatus for occlusion culling in graphics systems
US7068272B1 (en) 2000-05-31 2006-06-27 Nvidia Corporation System, method and article of manufacture for Z-value and stencil culling prior to rendering in a computer graphics processing pipeline
US6646639B1 (en) * 1998-07-22 2003-11-11 Nvidia Corporation Modified method and apparatus for improved occlusion culling in graphics systems
US7375727B1 (en) * 1998-07-22 2008-05-20 Nvidia Corporation System, method and computer program product for geometrically transforming geometric objects
WO2000011607A1 (en) * 1998-08-20 2000-03-02 Apple Computer, Inc. Deferred shading graphics pipeline processor
US6771264B1 (en) * 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
US6978045B1 (en) * 1998-10-02 2005-12-20 Minolta Co., Ltd. Image-processing apparatus
GB2343601B (en) * 1998-11-06 2002-11-27 Videologic Ltd Shading and texturing 3-dimensional computer generated images
US6509905B2 (en) * 1998-11-12 2003-01-21 Hewlett-Packard Company Method and apparatus for performing a perspective projection in a graphics device of a computer graphics display system
JP3258286B2 (ja) * 1998-12-15 2002-02-18 インターナショナル・ビジネス・マシーンズ・コーポレーション 半透明物体と不透明物体とが混在する複数の物体についての画像データをコンピュータ表示画面に表示する描画方法および描画装置
US7224364B1 (en) * 1999-02-03 2007-05-29 Ati International Srl Optimal initial rasterization starting point
US6466223B1 (en) * 1999-03-24 2002-10-15 Microsoft Corporation Method and apparatus for texture memory management
US6791569B1 (en) * 1999-07-01 2004-09-14 Microsoft Corporation Antialiasing method using barycentric coordinates applied to lines
US6628836B1 (en) * 1999-10-05 2003-09-30 Hewlett-Packard Development Company, L.P. Sort middle, screen space, graphics geometry compression through redundancy elimination
JP3950926B2 (ja) * 1999-11-30 2007-08-01 エーユー オプトロニクス コーポレイション 画像表示方法、ホスト装置、画像表示装置、およびディスプレイ用インターフェイス
US7209140B1 (en) 1999-12-06 2007-04-24 Nvidia Corporation System, method and article of manufacture for a programmable vertex processing model with instruction set
US6870540B1 (en) * 1999-12-06 2005-03-22 Nvidia Corporation System, method and computer program product for a programmable pixel processing model with instruction set
US6844880B1 (en) 1999-12-06 2005-01-18 Nvidia Corporation System, method and computer program product for an improved programmable vertex processing model with instruction set
US6848029B2 (en) 2000-01-03 2005-01-25 Dirk Coldewey Method and apparatus for prefetching recursive data structures
US7058636B2 (en) * 2000-01-03 2006-06-06 Dirk Coldewey Method for prefetching recursive data structure traversals
US6731297B1 (en) * 2000-01-11 2004-05-04 Intel Corporation Multiple texture compositing
US7483042B1 (en) * 2000-01-13 2009-01-27 Ati International, Srl Video graphics module capable of blending multiple image layers
US6995761B1 (en) * 2000-01-14 2006-02-07 California Institute Of Technology Compression of 3D surfaces using progressive geometry
GB2363045B (en) * 2000-01-28 2004-06-02 Namco Ltd Game system and image creating method
US20020009293A1 (en) * 2000-02-03 2002-01-24 Aldrich Kipp A. HDTV video server
JP3349490B2 (ja) * 2000-02-14 2002-11-25 インターナショナル・ビジネス・マシーンズ・コーポレーション 画像表示方法、画像表示システム、ホスト装置、画像表示装置、およびディスプレイ用インターフェイス
US7159041B2 (en) * 2000-03-07 2007-01-02 Microsoft Corporation Method and system for defining and controlling algorithmic elements in a graphics display system
US7098925B1 (en) * 2000-03-10 2006-08-29 Intel Corporation Shading of images using texture
US7038811B1 (en) * 2000-03-31 2006-05-02 Canon Kabushiki Kaisha Standardized device characterization
US6819321B1 (en) * 2000-03-31 2004-11-16 Intel Corporation Method and apparatus for processing 2D operations in a tiled graphics architecture
CN1430769B (zh) * 2000-03-31 2012-05-30 英特尔公司 拼块式图形结构
US6532013B1 (en) 2000-05-31 2003-03-11 Nvidia Corporation System, method and article of manufacture for pixel shaders for programmable shading
US6690372B2 (en) 2000-05-31 2004-02-10 Nvidia Corporation System, method and article of manufacture for shadow mapping
US6664963B1 (en) 2000-05-31 2003-12-16 Nvidia Corporation System, method and computer program product for programmable shading using pixel shaders
US7119813B1 (en) * 2000-06-02 2006-10-10 Nintendo Co., Ltd. Variable bit field encoding
US7032031B2 (en) * 2000-06-23 2006-04-18 Cloudshield Technologies, Inc. Edge adapter apparatus and method
US7405734B2 (en) * 2000-07-18 2008-07-29 Silicon Graphics, Inc. Method and system for presenting three-dimensional computer graphics images using multiple graphics processing units
US6963347B1 (en) * 2000-08-04 2005-11-08 Ati International, Srl Vertex data processing with multiple threads of execution
US6980218B1 (en) * 2000-08-23 2005-12-27 Nintendo Co., Ltd. Method and apparatus for efficient generation of texture coordinate displacements for implementing emboss-style bump mapping in a graphics rendering system
US6999100B1 (en) 2000-08-23 2006-02-14 Nintendo Co., Ltd. Method and apparatus for anti-aliasing in a graphics system
US7002591B1 (en) * 2000-08-23 2006-02-21 Nintendo Co., Ltd. Method and apparatus for interleaved processing of direct and indirect texture coordinates in a graphics system
US7061502B1 (en) * 2000-08-23 2006-06-13 Nintendo Co., Ltd. Method and apparatus for providing logical combination of N alpha operations within a graphics system
US6825851B1 (en) 2000-08-23 2004-11-30 Nintendo Co., Ltd. Method and apparatus for environment-mapped bump-mapping in a graphics system
US8692844B1 (en) * 2000-09-28 2014-04-08 Nvidia Corporation Method and system for efficient antialiased rendering
US6828980B1 (en) * 2000-10-02 2004-12-07 Nvidia Corporation System, method and computer program product for z-texture mapping
US6914618B2 (en) * 2000-11-02 2005-07-05 Sun Microsystems, Inc. Methods and systems for producing A 3-D rotational image from A 2-D image
US7079133B2 (en) * 2000-11-16 2006-07-18 S3 Graphics Co., Ltd. Superscalar 3D graphics engine
US6778181B1 (en) 2000-12-07 2004-08-17 Nvidia Corporation Graphics processing system having a virtual texturing array
JP3705739B2 (ja) * 2000-12-11 2005-10-12 株式会社ナムコ 情報記憶媒体及びゲーム装置
US6975320B1 (en) 2000-12-12 2005-12-13 Micron Technology, Inc. Method and apparatus for level-of-detail computations
US6664961B2 (en) * 2000-12-20 2003-12-16 Rutgers, The State University Of Nj Resample and composite engine for real-time volume rendering
US20030063095A1 (en) * 2000-12-29 2003-04-03 Sun Microsystems, Inc. Statistic logic for collecting a histogram of pixel exponent values
JP2002252770A (ja) * 2001-02-22 2002-09-06 Matsushita Graphic Communication Systems Inc 画像情報の分類方法,画像符号化方法および画像符号化装置
US6791559B2 (en) * 2001-02-28 2004-09-14 3Dlabs Inc., Ltd Parameter circular buffers
US6828975B2 (en) * 2001-03-01 2004-12-07 Microsoft Corporation Method and system for managing graphics objects in a graphics display system
FR2822274B1 (fr) * 2001-03-13 2003-11-21 Stephane Clement Francoi Rehel Procede d'affichage et de manipulation d'un objet en trois dimensions et applications correspondantes
EP1258837A1 (en) * 2001-05-14 2002-11-20 Thomson Licensing S.A. Method to generate mutual photometric effects
US6859209B2 (en) * 2001-05-18 2005-02-22 Sun Microsystems, Inc. Graphics data accumulation for improved multi-layer texture performance
US7009615B1 (en) 2001-11-30 2006-03-07 Nvidia Corporation Floating point buffer system and method for use during programmable fragment processing in a graphics pipeline
US7006101B1 (en) 2001-06-08 2006-02-28 Nvidia Corporation Graphics API with branching capabilities
US7162716B2 (en) 2001-06-08 2007-01-09 Nvidia Corporation Software emulator for optimizing application-programmable vertex processing
WO2002101497A2 (en) 2001-06-08 2002-12-19 Nvidia Corporation System, method and computer program product for programmable fragment processing in a graphics pipeline
US6697064B1 (en) 2001-06-08 2004-02-24 Nvidia Corporation System, method and computer program product for matrix tracking during vertex processing in a graphics pipeline
US7456838B1 (en) 2001-06-08 2008-11-25 Nvidia Corporation System and method for converting a vertex program to a binary format capable of being executed by a hardware graphics pipeline
GB2378108B (en) * 2001-07-24 2005-08-17 Imagination Tech Ltd Three dimensional graphics system
US6778189B1 (en) 2001-08-24 2004-08-17 Nvidia Corporation Two-sided stencil testing system and method
US6734853B2 (en) * 2001-08-28 2004-05-11 Intel Corporation Method of using view frustrum culling for scaleable collision detection
US7145577B2 (en) * 2001-08-31 2006-12-05 Micron Technology, Inc. System and method for multi-sampling primitives to reduce aliasing
US6704025B1 (en) 2001-08-31 2004-03-09 Nvidia Corporation System and method for dual-depth shadow-mapping
US6924820B2 (en) * 2001-09-25 2005-08-02 Sun Microsystems, Inc. Over-evaluating samples during rasterization for improved datapath utilization
AU2002335799A1 (en) * 2001-10-10 2003-04-22 Sony Computer Entertainment America Inc. System and method for environment mapping
US6999076B2 (en) * 2001-10-29 2006-02-14 Ati Technologies, Inc. System, method, and apparatus for early culling
JP3761085B2 (ja) * 2001-11-27 2006-03-29 株式会社ソニー・コンピュータエンタテインメント 画像処理装置及びその構成部品、レンダリング処理方法
KR100450836B1 (ko) * 2001-12-11 2004-10-01 삼성전자주식회사 이차원 영상의 입체화 장치 및 방법
US7426534B2 (en) * 2001-12-19 2008-09-16 International Business Machines Corporation Method and system for caching message fragments using an expansion attribute in a fragment link tag
US6816161B2 (en) * 2002-01-30 2004-11-09 Sun Microsystems, Inc. Vertex assembly buffer and primitive launch buffer
US6774895B1 (en) * 2002-02-01 2004-08-10 Nvidia Corporation System and method for depth clamping in a hardware graphics pipeline
AU2003238511A1 (en) * 2002-02-01 2003-09-02 Koninklijke Philips Electronics N.V. Stepless 3d texture mapping in computer graphics
US7310103B2 (en) * 2002-03-05 2007-12-18 Sun Microsystems, Inc. Pipelined 2D viewport clip circuit
US7535913B2 (en) * 2002-03-06 2009-05-19 Nvidia Corporation Gigabit ethernet adapter supporting the iSCSI and IPSEC protocols
US7159212B2 (en) * 2002-03-08 2007-01-02 Electronic Arts Inc. Systems and methods for implementing shader-driven compilation of rendering assets
US6975322B2 (en) * 2002-03-12 2005-12-13 Sun Microsystems, Inc. Dynamically adjusting a number of rendering passes in a graphics system
US7015909B1 (en) * 2002-03-19 2006-03-21 Aechelon Technology, Inc. Efficient use of user-defined shaders to implement graphics operations
US7009605B2 (en) * 2002-03-20 2006-03-07 Nvidia Corporation System, method and computer program product for generating a shader program
US8284844B2 (en) 2002-04-01 2012-10-09 Broadcom Corporation Video decoding system supporting multiple standards
US7376743B1 (en) * 2002-04-02 2008-05-20 Cisco Technology, Inc. Method and apparatus for load balancing in a virtual private network
US7009608B2 (en) * 2002-06-06 2006-03-07 Nvidia Corporation System and method of using multiple representations per object in computer graphics
AUPS300502A0 (en) * 2002-06-17 2002-07-11 Canon Kabushiki Kaisha Generating one or more linear blends
US6812927B1 (en) * 2002-06-18 2004-11-02 Nvidia Corporation System and method for avoiding depth clears using a stencil buffer
KR20030097507A (ko) * 2002-06-21 2003-12-31 삼성전자주식회사 평판 표시 장치의 색도 보정 장치 및 그 방법
US6977658B2 (en) * 2002-06-27 2005-12-20 Broadcom Corporation System for and method of performing an opacity calculation in a 3D graphics system
US6954215B2 (en) * 2002-06-28 2005-10-11 Microsoft Corporation System and method for employing non-alpha channel image data in an alpha-channel-aware environment
JP3845045B2 (ja) * 2002-07-23 2006-11-15 株式会社リコー 画像処理装置、画像処理方法、画像形成装置、印刷装置及びホストpc
FR2842977A1 (fr) 2002-07-24 2004-01-30 Total Immersion Procede et systeme permettant a un utilisateur de melanger en temps reel des images de synthese avec des images video
US7002599B2 (en) * 2002-07-26 2006-02-21 Sun Microsystems, Inc. Method and apparatus for hardware acceleration of clipping and graphical fill in display systems
US6857108B2 (en) * 2002-07-31 2005-02-15 Lsi Logic Corporation Interactive representation of structural dependencies in semiconductor design flows
US7257519B2 (en) * 2002-08-02 2007-08-14 Evans & Sutherland Computer Corporation System and method for weighted correction of an eyepoint position
US7176917B1 (en) 2002-08-09 2007-02-13 Avid Technology, Inc. Visual programming interface for a three-dimensional animation system for defining real time shaders using a real-time rendering engine application programming interface
US7508398B1 (en) 2002-08-27 2009-03-24 Nvidia Corporation Transparent antialiased memory access
US20040088682A1 (en) * 2002-11-05 2004-05-06 Thompson Ryan C. Method, program product, and apparatus for cache entry tracking, collision detection, and address reasignment in processor testcases
US7242400B2 (en) * 2002-11-13 2007-07-10 Ati Technologies Ulc Compression and decompression of data using plane equations
US7656416B2 (en) * 2002-11-27 2010-02-02 Ati Technologies, Inc. Apparatus for generating anti-aliased and stippled 3d lines, points and surfaces using multi-dimensional procedural texture coordinates
US7633506B1 (en) * 2002-11-27 2009-12-15 Ati Technologies Ulc Parallel pipeline graphics system
WO2004055697A1 (ja) * 2002-12-13 2004-07-01 Fujitsu Limited 処理方法、処理装置及びコンピュータプログラム
US7928997B2 (en) * 2003-02-06 2011-04-19 Nvidia Corporation Digital image compositing using a programmable graphics processor
US8749561B1 (en) * 2003-03-14 2014-06-10 Nvidia Corporation Method and system for coordinated data execution using a primary graphics processor and a secondary graphics processor
JP4590398B2 (ja) * 2003-04-03 2010-12-01 エヌエックスピー ビー ヴィ ランタイム構成可能仮想ビデオパイプライン
US7259765B2 (en) 2003-04-04 2007-08-21 S3 Graphics Co., Ltd. Head/data scheduling in 3D graphics
US7148888B2 (en) * 2003-04-04 2006-12-12 Via Technologies, Inc. Head/data request in 3D graphics
US7714858B2 (en) * 2003-04-18 2010-05-11 Hewlett-Packard Development Company, L.P. Distributed rendering of interactive soft shadows
US7218331B2 (en) * 2003-05-13 2007-05-15 Via Technologies, Inc. Bounding box in 3D graphics
US20050017969A1 (en) * 2003-05-27 2005-01-27 Pradeep Sen Computer graphics rendering using boundary information
US7681112B1 (en) 2003-05-30 2010-03-16 Adobe Systems Incorporated Embedded reuse meta information
US7852405B1 (en) * 2003-06-27 2010-12-14 Zoran Corporation Method and apparatus for high definition capture
US8275910B1 (en) * 2003-07-02 2012-09-25 Apple Inc. Source packet bridge
US7164420B2 (en) * 2003-07-24 2007-01-16 Autodesk, Inc. Ray tracing hierarchy
WO2005013066A2 (en) * 2003-07-25 2005-02-10 New York University Logic arrangement, data structure, system and method for miltilinear representation of multimodal data ensembles for synthesis, rotation and compression
US7139005B2 (en) * 2003-09-13 2006-11-21 Microsoft Corporation Optimized fixed-point mathematical library and graphics functions for a software-implemented graphics rendering system and method using a normalized homogenous coordinate system
US8872833B2 (en) 2003-09-15 2014-10-28 Nvidia Corporation Integrated circuit configuration system and method
US8732644B1 (en) 2003-09-15 2014-05-20 Nvidia Corporation Micro electro mechanical switch system and method for testing and configuring semiconductor functional circuits
US8775997B2 (en) 2003-09-15 2014-07-08 Nvidia Corporation System and method for testing and configuring semiconductor functional circuits
CN100483463C (zh) * 2003-09-17 2009-04-29 皇家飞利浦电子股份有限公司 用于在3-d图像显示屏上显示3-d图像的系统和方法
US7593010B2 (en) * 2003-09-18 2009-09-22 Microsoft Corporation Software-implemented transform and lighting module and pipeline for graphics rendering on embedded platforms using a fixed-point normalized homogenous coordinate system
JP2005100176A (ja) * 2003-09-25 2005-04-14 Sony Corp 画像処理装置およびその方法
JP4183082B2 (ja) * 2003-09-26 2008-11-19 シャープ株式会社 3次元画像描画装置および3次元画像描画方法
KR100546383B1 (ko) * 2003-09-29 2006-01-26 삼성전자주식회사 눈에 보이지 않는 프래그먼트를 처리하기 위한 3차원그래픽스 렌더링 엔진 및 그 방법
US8133115B2 (en) 2003-10-22 2012-03-13 Sony Computer Entertainment America Llc System and method for recording and displaying a graphical path in a video game
US8174531B1 (en) 2003-10-29 2012-05-08 Nvidia Corporation Programmable graphics processor for multithreaded execution of programs
US7139003B1 (en) * 2003-12-15 2006-11-21 Nvidia Corporation Methods of processing graphics data including reading and writing buffers
US7836276B2 (en) * 2005-12-02 2010-11-16 Nvidia Corporation System and method for processing thread groups in a SIMD architecture
US8860737B2 (en) * 2003-10-29 2014-10-14 Nvidia Corporation Programmable graphics processor for multithreaded execution of programs
US8823718B2 (en) * 2003-11-14 2014-09-02 Microsoft Corporation Systems and methods for downloading algorithmic elements to a coprocessor and corresponding techniques
KR20050047741A (ko) * 2003-11-18 2005-05-23 삼성전자주식회사 영상처리장치 및 그 방법
US7015914B1 (en) 2003-12-10 2006-03-21 Nvidia Corporation Multiple data buffers for processing graphics data
US7102645B2 (en) * 2003-12-15 2006-09-05 Seiko Epson Corporation Graphics display controller providing enhanced read/write efficiency for interfacing with a RAM-integrated graphics display device
US7053893B1 (en) * 2003-12-15 2006-05-30 Nvidia Corporation Position conflict detection and avoidance in a programmable graphics processor using tile coverage data
US7053904B1 (en) * 2003-12-15 2006-05-30 Nvidia Corporation Position conflict detection and avoidance in a programmable graphics processor
US7420568B1 (en) * 2003-12-17 2008-09-02 Nvidia Corporation System and method for packing data in different formats in a tiled graphics memory
US8711161B1 (en) 2003-12-18 2014-04-29 Nvidia Corporation Functional component compensation reconfiguration system and method
US7221368B1 (en) * 2003-12-18 2007-05-22 Nvidia Corporation Stippled lines using direct distance evaluation
US7450120B1 (en) 2003-12-19 2008-11-11 Nvidia Corporation Apparatus, system, and method for Z-culling
US8269769B1 (en) 2003-12-22 2012-09-18 Nvidia Corporation Occlusion prediction compression system and method
US8390619B1 (en) * 2003-12-22 2013-03-05 Nvidia Corporation Occlusion prediction graphics processing system and method
US8854364B1 (en) * 2003-12-22 2014-10-07 Nvidia Corporation Tight depth range occlusion prediction system and method
US7995056B1 (en) 2003-12-22 2011-08-09 Nvidia Corporation Culling data selection system and method
US7433364B2 (en) * 2003-12-24 2008-10-07 Intel Corporation Method for optimizing queuing performance
US8643659B1 (en) 2003-12-31 2014-02-04 3Dlabs Inc., Ltd. Shader with global and instruction caches
US9098943B1 (en) 2003-12-31 2015-08-04 Ziilabs Inc., Ltd. Multiple simultaneous bin sizes
US7281122B2 (en) * 2004-01-14 2007-10-09 Ati Technologies Inc. Method and apparatus for nested control flow of instructions using context information and instructions having extra bits
US20050195186A1 (en) * 2004-03-02 2005-09-08 Ati Technologies Inc. Method and apparatus for object based visibility culling
FI117655B (fi) * 2004-03-25 2006-12-29 Cadfaster Oy Menetelmä tietokoneavusteisen polygonimallin prosessointiin, laite ja tietokoneohjelma
US7609902B2 (en) * 2004-04-13 2009-10-27 Microsoft Corporation Implementation of discrete cosine transformation and its inverse on programmable graphics processor
US7847800B2 (en) * 2004-04-16 2010-12-07 Apple Inc. System for emulating graphics operations
US7248265B2 (en) * 2004-04-16 2007-07-24 Apple Inc. System and method for processing graphics operations with graphics processing unit
US7636489B2 (en) * 2004-04-16 2009-12-22 Apple Inc. Blur computation algorithm
US8704837B2 (en) * 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations
US7231632B2 (en) * 2004-04-16 2007-06-12 Apple Computer, Inc. System for reducing the number of programs necessary to render an image
US8134561B2 (en) * 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
KR100601952B1 (ko) * 2004-04-20 2006-07-14 삼성전자주식회사 3차원 그래픽 데이터의 재구성장치 및 방법
JP4914829B2 (ja) 2004-05-14 2012-04-11 エヌヴィディア コーポレイション 低電力プログラマブルプロセッサ
US8743142B1 (en) 2004-05-14 2014-06-03 Nvidia Corporation Unified data fetch graphics processing system and method
US8711155B2 (en) * 2004-05-14 2014-04-29 Nvidia Corporation Early kill removal graphics processing system and method
US8736620B2 (en) * 2004-05-14 2014-05-27 Nvidia Corporation Kill bit graphics processing system and method
US7091982B2 (en) * 2004-05-14 2006-08-15 Nvidia Corporation Low power programmable processor
US7389006B2 (en) * 2004-05-14 2008-06-17 Nvidia Corporation Auto software configurable register address space for low power programmable processor
US8432394B1 (en) 2004-05-14 2013-04-30 Nvidia Corporation Method and system for implementing clamped z value interpolation in a raster stage of a graphics pipeline
US20060007234A1 (en) * 2004-05-14 2006-01-12 Hutchins Edward A Coincident graphics pixel scoreboard tracking system and method
US7190366B2 (en) 2004-05-14 2007-03-13 Nvidia Corporation Method and system for a general instruction raster stage that generates programmable pixel packets
US8411105B1 (en) 2004-05-14 2013-04-02 Nvidia Corporation Method and system for computing pixel parameters
US7079156B1 (en) * 2004-05-14 2006-07-18 Nvidia Corporation Method and system for implementing multiple high precision and low precision interpolators for a graphics pipeline
US8416242B1 (en) 2004-05-14 2013-04-09 Nvidia Corporation Method and system for interpolating level-of-detail in graphics processors
US8736628B1 (en) 2004-05-14 2014-05-27 Nvidia Corporation Single thread graphics processing system and method
US8687010B1 (en) 2004-05-14 2014-04-01 Nvidia Corporation Arbitrary size texture palettes for use in graphics systems
US8860722B2 (en) * 2004-05-14 2014-10-14 Nvidia Corporation Early Z scoreboard tracking system and method
JP4451717B2 (ja) 2004-05-31 2010-04-14 株式会社ソニー・コンピュータエンタテインメント 情報処理装置および情報処理方法
US20050275733A1 (en) * 2004-06-10 2005-12-15 Philip Chao Method and apparatus of rendering a video image by polynomial evaluation
US7382377B1 (en) * 2004-06-17 2008-06-03 Nvidia Corporation Render to texture cull
WO2006000087A1 (en) 2004-06-23 2006-01-05 Quin Media Arts And Sciences Inc. Sculptural imaging with optical tiles
US7397964B2 (en) * 2004-06-24 2008-07-08 Apple Inc. Gaussian blur approximation suitable for GPU
US8068103B2 (en) * 2004-06-24 2011-11-29 Apple Inc. User-interface design
US8130237B2 (en) * 2004-06-24 2012-03-06 Apple Inc. Resolution independent user interface design
US7490295B2 (en) 2004-06-25 2009-02-10 Apple Inc. Layer for accessing user interface elements
US8302020B2 (en) 2004-06-25 2012-10-30 Apple Inc. Widget authoring and editing environment
US7546543B2 (en) 2004-06-25 2009-06-09 Apple Inc. Widget authoring and editing environment
US8239749B2 (en) 2004-06-25 2012-08-07 Apple Inc. Procedurally expressing graphic objects for web pages
US7652678B2 (en) * 2004-06-25 2010-01-26 Apple Inc. Partial display updates in a windowing system using a programmable graphics processing unit
US20050285866A1 (en) * 2004-06-25 2005-12-29 Apple Computer, Inc. Display-wide visual effects for a windowing system using a programmable graphics processing unit
US8566732B2 (en) 2004-06-25 2013-10-22 Apple Inc. Synchronization of widgets and dashboards
US7761800B2 (en) 2004-06-25 2010-07-20 Apple Inc. Unified interest layer for user interface
US8453065B2 (en) 2004-06-25 2013-05-28 Apple Inc. Preview and installation of user interface elements in a display environment
US7755629B2 (en) * 2004-06-30 2010-07-13 Canon Kabushiki Kaisha Method of rendering graphic objects
US7518608B2 (en) * 2004-07-30 2009-04-14 Sony Corporation Z-depth matting of particles in image rendering
US7256796B1 (en) * 2004-08-03 2007-08-14 Nvidia Corporation Per-fragment control for writing an output buffer
US7400325B1 (en) * 2004-08-06 2008-07-15 Nvidia Corporation Culling before setup in viewport and culling unit
US20060033736A1 (en) * 2004-08-10 2006-02-16 Wang Andy W Enhanced Color and Lighting Model for Computer Graphics Productions
US7564462B2 (en) * 2004-08-31 2009-07-21 Teranex Systems, Inc. Method and apparatus for reading and writing pixel-aligned subframes in a frame buffer
US8723231B1 (en) 2004-09-15 2014-05-13 Nvidia Corporation Semiconductor die micro electro-mechanical switch management system and method
US7286139B2 (en) * 2004-09-17 2007-10-23 Via Technologies, Inc. Partial guardband clipping
US8711156B1 (en) 2004-09-30 2014-04-29 Nvidia Corporation Method and system for remapping processing elements in a pipeline of a graphics processing unit
US20060071933A1 (en) * 2004-10-06 2006-04-06 Sony Computer Entertainment Inc. Application binary interface for multi-pass shaders
US20060082577A1 (en) * 2004-10-20 2006-04-20 Ugs Corp. System, method, and computer program product for dynamic shader generation
US7385604B1 (en) * 2004-11-04 2008-06-10 Nvidia Corporation Fragment scattering
JP4692956B2 (ja) * 2004-11-22 2011-06-01 株式会社ソニー・コンピュータエンタテインメント 描画処理装置および描画処理方法
US7227551B2 (en) * 2004-12-23 2007-06-05 Apple Inc. Manipulating text and graphic appearance
US7209139B1 (en) * 2005-01-07 2007-04-24 Electronic Arts Efficient rendering of similar objects in a three-dimensional graphics engine
US8140975B2 (en) 2005-01-07 2012-03-20 Apple Inc. Slide show navigation
JP4812073B2 (ja) * 2005-01-31 2011-11-09 キヤノン株式会社 画像撮像装置、画像撮像方法、プログラムおよび記録媒体
KR100612890B1 (ko) * 2005-02-17 2006-08-14 삼성전자주식회사 3차원 이미지의 다중 특수 효과 표현 방법 및 장치
US7242169B2 (en) * 2005-03-01 2007-07-10 Apple Inc. Method and apparatus for voltage compensation for parasitic impedance
US8089486B2 (en) * 2005-03-21 2012-01-03 Qualcomm Incorporated Tiled prefetched and cached depth buffer
WO2006101367A1 (en) * 2005-03-24 2006-09-28 Lg Electronics Inc. Method of executing scanning in broadband wireless access system
JP2006293553A (ja) * 2005-04-07 2006-10-26 Aisin Aw Co Ltd フォントデータの回転処理装置及び地図表示システム
US7479965B1 (en) * 2005-04-12 2009-01-20 Nvidia Corporation Optimized alpha blend for anti-aliased render
US9363481B2 (en) * 2005-04-22 2016-06-07 Microsoft Technology Licensing, Llc Protected media pipeline
US7463261B1 (en) * 2005-04-29 2008-12-09 Adobe Systems Incorporated Three-dimensional image compositing on a GPU utilizing multiple transformations
US7499051B1 (en) 2005-04-29 2009-03-03 Adobe Systems Incorporated GPU assisted 3D compositing
US7802028B2 (en) * 2005-05-02 2010-09-21 Broadcom Corporation Total dynamic sharing of a transaction queue
US7349066B2 (en) * 2005-05-05 2008-03-25 Asml Masktools B.V. Apparatus, method and computer program product for performing a model based optical proximity correction factoring neighbor influence
US8427496B1 (en) 2005-05-13 2013-04-23 Nvidia Corporation Method and system for implementing compression across a graphics bus interconnect
US8386628B1 (en) * 2005-05-23 2013-02-26 Glance Networks, Inc. Method and apparatus for reducing the amount of information that must be transmitted to slower viewers over a remote viewing session
US7894528B2 (en) * 2005-05-25 2011-02-22 Yissum Research Development Company Of The Hebrew University Of Jerusalem Fast and robust motion computations using direct methods
US8543931B2 (en) 2005-06-07 2013-09-24 Apple Inc. Preview including theme based installation of user interface elements in a display environment
US7636126B2 (en) 2005-06-22 2009-12-22 Sony Computer Entertainment Inc. Delay matching in audio/video systems
US9298311B2 (en) * 2005-06-23 2016-03-29 Apple Inc. Trackpad sensitivity compensation
US7432937B2 (en) * 2005-06-30 2008-10-07 Intel Corporation System and method for concave polygon rasterization
US7496416B2 (en) * 2005-08-01 2009-02-24 Luxology, Llc Input/output curve editor
US20070035553A1 (en) * 2005-08-12 2007-02-15 Microsoft Corporation General framework for aligning textures
US7436412B2 (en) * 2005-08-24 2008-10-14 Qualcomm Incorporated Graphics engine with efficient interpolation
US7551177B2 (en) 2005-08-31 2009-06-23 Ati Technologies, Inc. Methods and apparatus for retrieving and combining samples of graphics information
US8189908B2 (en) * 2005-09-02 2012-05-29 Adobe Systems, Inc. System and method for compressing video data and alpha channel data using a single stream
US8014615B2 (en) * 2005-09-02 2011-09-06 Adobe Systems Incorporated System and method for decompressing video data and alpha channel data using a single stream
US7433191B2 (en) * 2005-09-30 2008-10-07 Apple Inc. Thermal contact arrangement
US7441230B2 (en) * 2005-10-07 2008-10-21 Lucasfilm Entertainment Company Ltd. Method of utilizing product proxies with a dependency graph
US8144149B2 (en) * 2005-10-14 2012-03-27 Via Technologies, Inc. System and method for dynamically load balancing multiple shader stages in a shared pool of processing units
US8266232B2 (en) * 2005-10-15 2012-09-11 International Business Machines Corporation Hardware processing of commands within virtual client computing environment
US9104294B2 (en) 2005-10-27 2015-08-11 Apple Inc. Linked widgets
US7954064B2 (en) 2005-10-27 2011-05-31 Apple Inc. Multiple dashboards
US7752556B2 (en) 2005-10-27 2010-07-06 Apple Inc. Workflow widgets
US8543824B2 (en) 2005-10-27 2013-09-24 Apple Inc. Safe distribution and use of content
US7743336B2 (en) 2005-10-27 2010-06-22 Apple Inc. Widget security
US7414624B2 (en) * 2005-10-28 2008-08-19 Intel Corporation Apparatus and method for a frustum culling algorithm suitable for hardware implementation
US20070097139A1 (en) * 2005-11-02 2007-05-03 Chao-Chin Chen Method and apparatus of primitive filter in graphic process applications
GB0524804D0 (en) 2005-12-05 2006-01-11 Falanx Microsystems As Method of and apparatus for processing graphics
US7934255B1 (en) * 2005-11-08 2011-04-26 Nvidia Corporation Apparatus, system, and method for offloading packet classification
US8294731B2 (en) * 2005-11-15 2012-10-23 Advanced Micro Devices, Inc. Buffer management in vector graphics hardware
US7707514B2 (en) 2005-11-18 2010-04-27 Apple Inc. Management of user interface elements in a display environment
US8624909B2 (en) * 2005-11-21 2014-01-07 Vixs Systems Inc. Image processing system and method thereof
US7598711B2 (en) * 2005-11-23 2009-10-06 Apple Inc. Power source switchover apparatus and method
DE112005003766B4 (de) * 2005-11-30 2010-06-17 Fujitsu Microelectronics Ltd. Gerät für dreidimensionale Grafik, Verfahren für dreidimensionale Grafik, Programm für dreidimensionale Grafik und Aufzeichnungsmedium
US8803872B2 (en) * 2005-12-01 2014-08-12 Intel Corporation Computer graphics processor and method for rendering a three-dimensional image on a display screen
US7439988B1 (en) 2005-12-05 2008-10-21 Nvidia Corporation Apparatus, system, and method for clipping graphics primitives with respect to a clipping plane
US7616218B1 (en) 2005-12-05 2009-11-10 Nvidia Corporation Apparatus, system, and method for clipping graphics primitives
US7434032B1 (en) 2005-12-13 2008-10-07 Nvidia Corporation Tracking register usage during multithreaded processing using a scoreboard having separate memory regions and storing sequential register size indicators
US7593018B1 (en) * 2005-12-14 2009-09-22 Nvidia Corp. Method and apparatus for providing explicit weights for texture filtering
US7423642B2 (en) * 2005-12-14 2008-09-09 Winbond Electronics Corporation Efficient video frame capturing
US8698811B1 (en) 2005-12-15 2014-04-15 Nvidia Corporation Nested boustrophedonic patterns for rasterization
US8701091B1 (en) 2005-12-15 2014-04-15 Nvidia Corporation Method and system for providing a generic console interface for a graphics application
US9123173B2 (en) * 2005-12-15 2015-09-01 Nvidia Corporation Method for rasterizing non-rectangular tile groups in a raster stage of a graphics pipeline
US8390645B1 (en) 2005-12-19 2013-03-05 Nvidia Corporation Method and system for rendering connecting antialiased line segments
US7791617B2 (en) * 2005-12-19 2010-09-07 Nvidia Corporation Method and system for rendering polygons having abutting edges
US7714877B1 (en) 2005-12-19 2010-05-11 Nvidia Corporation Apparatus, system, and method for determining clipping distances
US9117309B1 (en) 2005-12-19 2015-08-25 Nvidia Corporation Method and system for rendering polygons with a bounding box in a graphics processor unit
US7420572B1 (en) * 2005-12-19 2008-09-02 Nvidia Corporation Apparatus, system, and method for clipping graphics primitives with accelerated context switching
US8300059B2 (en) * 2006-02-03 2012-10-30 Ati Technologies Ulc Method and apparatus for selecting a mip map level based on a min-axis value for texture mapping
JP4782583B2 (ja) * 2006-02-23 2011-09-28 株式会社バンダイナムコゲームス プログラム、情報記憶媒体及び画像生成システム
JP4734138B2 (ja) * 2006-02-23 2011-07-27 株式会社バンダイナムコゲームス プログラム、情報記憶媒体及び画像生成システム
JP4734137B2 (ja) * 2006-02-23 2011-07-27 株式会社バンダイナムコゲームス プログラム、情報記憶媒体及び画像生成システム
US8006236B1 (en) * 2006-02-24 2011-08-23 Nvidia Corporation System and method for compiling high-level primitive programs into primitive program micro-code
US8171461B1 (en) 2006-02-24 2012-05-01 Nvidia Coporation Primitive program compilation for flat attributes with provoking vertex independence
US7825933B1 (en) * 2006-02-24 2010-11-02 Nvidia Corporation Managing primitive program vertex attributes as per-attribute arrays
US7891012B1 (en) 2006-03-01 2011-02-15 Nvidia Corporation Method and computer-usable medium for determining the authorization status of software
US8452981B1 (en) 2006-03-01 2013-05-28 Nvidia Corporation Method for author verification and software authorization
TWI319166B (en) * 2006-03-06 2010-01-01 Via Tech Inc Method and related apparatus for graphic processing
JP2007287085A (ja) * 2006-04-20 2007-11-01 Fuji Xerox Co Ltd 画像処理装置及びプログラム
JP2007287084A (ja) * 2006-04-20 2007-11-01 Fuji Xerox Co Ltd 画像処理装置及びプログラム
EP2008248A2 (en) 2006-04-20 2008-12-31 Telefonaktiebolaget LM Ericsson (publ) Image processing
US8766995B2 (en) * 2006-04-26 2014-07-01 Qualcomm Incorporated Graphics system with configurable caches
US20080082567A1 (en) * 2006-05-01 2008-04-03 Bezanson Jeffrey W Apparatuses, Methods And Systems For Vector Operations And Storage In Matrix Models
US7880746B2 (en) 2006-05-04 2011-02-01 Sony Computer Entertainment Inc. Bandwidth management through lighting control of a user environment via a display device
US7965859B2 (en) 2006-05-04 2011-06-21 Sony Computer Entertainment Inc. Lighting control of a user environment via a display device
US20070268289A1 (en) * 2006-05-16 2007-11-22 Chun Yu Graphics system with dynamic reposition of depth engine
US7395180B2 (en) * 2006-05-17 2008-07-01 Lockheed Martin Corporation Efficient translation of data from a two-dimensional array to a wedge
US8884972B2 (en) 2006-05-25 2014-11-11 Qualcomm Incorporated Graphics processor with arithmetic and elementary function units
US8869147B2 (en) * 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
KR101136684B1 (ko) * 2006-06-09 2012-04-23 도요타지도샤가부시키가이샤 데이터 갱신 시스템, 네비게이션 장치, 서버 장치, 및 데이터 갱신 방법
US8644643B2 (en) 2006-06-14 2014-02-04 Qualcomm Incorporated Convolution filtering in a graphics processor
US7940262B2 (en) * 2006-06-15 2011-05-10 Right Hemisphere Limited Unification and part hiding in three dimensional geometric data
US20070291031A1 (en) * 2006-06-15 2007-12-20 Right Hemisphere Limited Three dimensional geometric data correction
US8766996B2 (en) * 2006-06-21 2014-07-01 Qualcomm Incorporated Unified virtual addressed register file
US8928676B2 (en) * 2006-06-23 2015-01-06 Nvidia Corporation Method for parallel fine rasterization in a raster stage of a graphics pipeline
JP2008009696A (ja) * 2006-06-29 2008-01-17 Fuji Xerox Co Ltd 画像処理装置及びプログラム
JP4795138B2 (ja) * 2006-06-29 2011-10-19 富士ゼロックス株式会社 画像処理装置及びプログラム
US8284204B2 (en) * 2006-06-30 2012-10-09 Nokia Corporation Apparatus, method and a computer program product for providing a unified graphics pipeline for stereoscopic rendering
US8477134B1 (en) 2006-06-30 2013-07-02 Nvidia Corporation Conservative triage of polygon status using low precision edge evaluation and high precision edge evaluation
US8560495B1 (en) * 2006-07-07 2013-10-15 Sybase, Inc. System and method for synchronizing message processing in a continuous processing system
JP4979287B2 (ja) * 2006-07-14 2012-07-18 富士ゼロックス株式会社 画像処理装置及びプログラム
US8633927B2 (en) * 2006-07-25 2014-01-21 Nvidia Corporation Re-render acceleration of frame with lighting change
US9070213B2 (en) * 2006-07-26 2015-06-30 Nvidia Corporation Tile based precision rasterization in a graphics pipeline
US8085264B1 (en) 2006-07-26 2011-12-27 Nvidia Corporation Tile output using multiple queue output buffering in a raster stage
US8436864B2 (en) * 2006-08-01 2013-05-07 Nvidia Corporation Method and user interface for enhanced graphical operation organization
US8436870B1 (en) 2006-08-01 2013-05-07 Nvidia Corporation User interface and method for graphical processing analysis
US7778800B2 (en) * 2006-08-01 2010-08-17 Nvidia Corporation Method and system for calculating performance parameters for a processor
US8963932B1 (en) 2006-08-01 2015-02-24 Nvidia Corporation Method and apparatus for visualizing component workloads in a unified shader GPU architecture
US8607151B2 (en) * 2006-08-01 2013-12-10 Nvidia Corporation Method and system for debugging a graphics pipeline subunit
US7952588B2 (en) * 2006-08-03 2011-05-31 Qualcomm Incorporated Graphics processing unit with extended vertex cache
US8869027B2 (en) 2006-08-04 2014-10-21 Apple Inc. Management and generation of dashboards
US8493388B2 (en) * 2006-08-09 2013-07-23 Siemens Medical Solutions Usa, Inc. Modular volume rendering using visual programming
KR20080014402A (ko) * 2006-08-11 2008-02-14 삼성전자주식회사 컴퓨터 그래픽스 데이터 처리방법과 데이터 처리장치
US7773092B1 (en) * 2006-08-24 2010-08-10 Nvidia Corporation Texture map coverage optimization
KR100745768B1 (ko) * 2006-08-29 2007-08-02 삼성전자주식회사 전력 소비를 감소시키기 위한 lod 값 계산 방법과이것을 이용한 3차원 렌더링 시스템
US7905610B1 (en) * 2006-08-29 2011-03-15 Nvidia Corporation Graphics processor system and associated method for projecting an image onto a three-dimensional object
US8237739B2 (en) * 2006-09-12 2012-08-07 Qualcomm Incorporated Method and device for performing user-defined clipping in object space
JP4995827B2 (ja) * 2006-09-13 2012-08-08 パナソニック株式会社 画像処理装置、画像処理用集積回路、画像処理システム、インプットアセンブラ装置、インプットアセンブル用集積回路
JP4079378B2 (ja) 2006-09-21 2008-04-23 株式会社コナミデジタルエンタテインメント 画像処理装置、画像処理装置の制御方法及びプログラム
US8537168B1 (en) 2006-11-02 2013-09-17 Nvidia Corporation Method and system for deferred coverage mask generation in a raster stage
US8237738B1 (en) 2006-11-02 2012-08-07 Nvidia Corporation Smooth rasterization of polygonal graphics primitives
US8427487B1 (en) 2006-11-02 2013-04-23 Nvidia Corporation Multiple tile output using interface compression in a raster stage
US8228328B1 (en) * 2006-11-03 2012-07-24 Nvidia Corporation Early Z testing for multiple render targets
US8482567B1 (en) 2006-11-03 2013-07-09 Nvidia Corporation Line rasterization techniques
US7701459B1 (en) * 2006-11-03 2010-04-20 Nvidia Corporation Primitive oriented assembly for parallel vertex/geometry processing
US8059124B2 (en) 2006-11-28 2011-11-15 Adobe Systems Incorporated Temporary non-tiled rendering of 3D objects
US8300050B2 (en) * 2006-11-28 2012-10-30 Adobe Systems Incorporated Temporary low resolution rendering of 3D objects
GB0710795D0 (en) * 2007-06-05 2007-07-18 Arm Norway As Method of and apparatus for processing graphics
US9965886B2 (en) 2006-12-04 2018-05-08 Arm Norway As Method of and apparatus for processing graphics
WO2008073455A1 (en) * 2006-12-11 2008-06-19 Koplar Interactive Systems International, L.L.C. Spatial data encoding and decoding
WO2008073449A2 (en) 2006-12-12 2008-06-19 Evans & Sutherland Computer Corporation System and method for aligning rgb light in a single modulator projector
US8736627B2 (en) * 2006-12-19 2014-05-27 Via Technologies, Inc. Systems and methods for providing a shared buffer in a multiple FIFO environment
US7580035B2 (en) * 2006-12-28 2009-08-25 Intel Corporation Real-time collision detection using clipping
US7982733B2 (en) * 2007-01-05 2011-07-19 Qualcomm Incorporated Rendering 3D video images on a stereo-enabled display
US8638328B2 (en) * 2007-01-05 2014-01-28 Landmark Graphics Corporation Systems and methods for visualizing multiple volumetric data sets in real time
ITMI20070038A1 (it) * 2007-01-12 2008-07-13 St Microelectronics Srl Dispositivo di renderizzazione per grafica a tre dimensioni con architettura di tipo sort-middle.
CN103310480B (zh) 2007-01-24 2016-12-28 英特尔公司 通过使用可置换的剔除程序提高图形性能的方法和装置
US7746355B1 (en) * 2007-01-24 2010-06-29 Vivante Corporation Method for distributed clipping outside of view volume
US8549500B2 (en) * 2007-02-14 2013-10-01 The Mathworks, Inc. Saving and loading graphical processing unit (GPU) arrays providing high computational capabilities in a computing environment
US20080218512A1 (en) * 2007-02-20 2008-09-11 Ofer Alon System and method for interactive masking and modifying of 3d objects
US7473258B2 (en) * 2007-03-08 2009-01-06 Cardica, Inc. Surgical stapler
US8471862B2 (en) * 2007-03-09 2013-06-25 Ati Technologies Ulc Offset tiles in vector graphics
US7694193B2 (en) * 2007-03-13 2010-04-06 Hewlett-Packard Development Company, L.P. Systems and methods for implementing a stride value for accessing memory
JP4446201B2 (ja) * 2007-03-30 2010-04-07 アイシン・エィ・ダブリュ株式会社 画像認識装置及び画像認識方法
US8155826B2 (en) * 2007-03-30 2012-04-10 Aisin Aw Co., Ltd. Vehicle behavior learning apparatuses, methods, and programs
JP5306317B2 (ja) * 2007-04-04 2013-10-02 テレフオンアクチーボラゲット エル エム エリクソン(パブル) ベクトルを使用する画像処理
US10605610B2 (en) * 2007-04-09 2020-03-31 Ian Cummings Apparatus and methods for reducing data transmission in wireless client-server navigation systems
JP4588736B2 (ja) * 2007-04-12 2010-12-01 富士フイルム株式会社 画像処理方法および装置並びにプログラム
US8633948B2 (en) 2007-04-16 2014-01-21 Sunfish Studio, Llc Single-pass and order-independent transparency in computer graphics using constant memory
GB2448717B (en) * 2007-04-25 2012-09-19 David Hostettler Wain Method and apparatus for the efficient animation of textures based on images and graphical components
US8203560B2 (en) * 2007-04-27 2012-06-19 Sony Corporation Method for predictively splitting procedurally generated particle data into screen-space boxes
US20080273113A1 (en) * 2007-05-02 2008-11-06 Windbond Electronics Corporation Integrated graphics and KVM system
US7876677B2 (en) * 2007-05-22 2011-01-25 Apple Inc. Transmission control protocol queue sorting
FR2917211A1 (fr) 2007-06-08 2008-12-12 St Microelectronics Sa Procede et dispositif de generation d'images graphiques
US8558832B1 (en) * 2007-06-19 2013-10-15 Nvida Corporation System, method, and computer program product for generating a plurality of two-dimensional images and depth maps for a scene at a point in time
KR101378372B1 (ko) * 2007-07-12 2014-03-27 삼성전자주식회사 디지털 이미지 처리장치, 그 제어방법 및 제어방법을실행시키기 위한 프로그램을 저장한 기록매체
US8954871B2 (en) 2007-07-18 2015-02-10 Apple Inc. User-centric widgets and dashboards
US7925100B2 (en) * 2007-07-31 2011-04-12 Microsoft Corporation Tiled packaging of vector image data
US7805579B2 (en) * 2007-07-31 2010-09-28 International Business Machines Corporation Methods and arrangements for multi-buffering data
US8667415B2 (en) 2007-08-06 2014-03-04 Apple Inc. Web widgets
US8441497B1 (en) 2007-08-07 2013-05-14 Nvidia Corporation Interpolation of vertex attributes in a graphics processor
US8296738B1 (en) 2007-08-13 2012-10-23 Nvidia Corporation Methods and systems for in-place shader debugging and performance tuning
US9035957B1 (en) 2007-08-15 2015-05-19 Nvidia Corporation Pipeline debug statistics system and method
US8521800B1 (en) 2007-08-15 2013-08-27 Nvidia Corporation Interconnected arithmetic logic units
US8599208B2 (en) * 2007-08-15 2013-12-03 Nvidia Corporation Shared readable and writeable global values in a graphics processor unit pipeline
US8736624B1 (en) 2007-08-15 2014-05-27 Nvidia Corporation Conditional execution flag in graphics applications
US9183607B1 (en) 2007-08-15 2015-11-10 Nvidia Corporation Scoreboard cache coherence in a graphics pipeline
US20090046105A1 (en) * 2007-08-15 2009-02-19 Bergland Tyson J Conditional execute bit in a graphics processor unit pipeline
US8314803B2 (en) * 2007-08-15 2012-11-20 Nvidia Corporation Buffering deserialized pixel data in a graphics processor unit pipeline
US8775777B2 (en) * 2007-08-15 2014-07-08 Nvidia Corporation Techniques for sourcing immediate values from a VLIW
US8249391B2 (en) * 2007-08-24 2012-08-21 Ancestry.com Operations, Inc. User interface method for skew correction
US8156467B2 (en) 2007-08-27 2012-04-10 Adobe Systems Incorporated Reusing components in a running application
KR100933366B1 (ko) * 2007-09-13 2009-12-22 한국전자통신연구원 블랙박스 기능을 가지는 라우터 장치와 그 장치를 포함하는네트워크 시스템
JP4501983B2 (ja) * 2007-09-28 2010-07-14 アイシン・エィ・ダブリュ株式会社 駐車支援システム、駐車支援方法、駐車支援プログラム
US8176466B2 (en) 2007-10-01 2012-05-08 Adobe Systems Incorporated System and method for generating an application fragment
US8724483B2 (en) 2007-10-22 2014-05-13 Nvidia Corporation Loopback configuration for bi-directional interfaces
KR101407639B1 (ko) * 2007-10-22 2014-06-16 삼성전자주식회사 3차원 그래픽 렌더링 장치 및 방법
US8638341B2 (en) * 2007-10-23 2014-01-28 Qualcomm Incorporated Antialiasing of two-dimensional vector images
US8760450B2 (en) * 2007-10-30 2014-06-24 Advanced Micro Devices, Inc. Real-time mesh simplification using the graphics processing unit
US7765500B2 (en) * 2007-11-08 2010-07-27 Nvidia Corporation Automated generation of theoretical performance analysis based upon workload and design configuration
US8063903B2 (en) * 2007-11-09 2011-11-22 Nvidia Corporation Edge evaluation techniques for graphics hardware
US8035641B1 (en) 2007-11-28 2011-10-11 Adobe Systems Incorporated Fast depth of field simulation
US9153211B1 (en) * 2007-12-03 2015-10-06 Nvidia Corporation Method and system for tracking accesses to virtual addresses in graphics contexts
US8026912B1 (en) * 2007-12-04 2011-09-27 Nvidia Corporation System and method for structuring an A-buffer
US8040349B1 (en) 2007-12-04 2011-10-18 Nvidia Corporation System and method for structuring an A-buffer
US7940280B2 (en) * 2007-12-06 2011-05-10 Seiko Epson Corporation System and method for color format conversion in a graphics environment
US8102393B1 (en) 2007-12-13 2012-01-24 Nvidia Corporation Cull streams for fine-grained rendering predication
US8179394B1 (en) 2007-12-13 2012-05-15 Nvidia Corporation Cull streams for fine-grained rendering predication
US9489767B1 (en) * 2007-12-13 2016-11-08 Nvidia Corporation Cull streams for fine-grained rendering predication
US8878849B2 (en) * 2007-12-14 2014-11-04 Nvidia Corporation Horizon split ambient occlusion
US9064333B2 (en) 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8780123B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
CN101216944B (zh) * 2008-01-07 2011-08-03 北大方正集团有限公司 在排版过程中实现渐变底纹的方法及装置
US20090184972A1 (en) * 2008-01-18 2009-07-23 Qualcomm Incorporated Multi-buffer support for off-screen surfaces in a graphics processing system
US9214007B2 (en) * 2008-01-25 2015-12-15 Via Technologies, Inc. Graphics processor having unified cache system
US20090189896A1 (en) * 2008-01-25 2009-07-30 Via Technologies, Inc. Graphics Processor having Unified Shader Unit
US20110149340A1 (en) * 2008-01-30 2011-06-23 Ramot At Tel-Aviv University Ltd. Method, system and computer program product for manipulating a graphic entity
GB0801812D0 (en) * 2008-01-31 2008-03-05 Arm Noway As Methods of and apparatus for processing computer graphics
US9619304B2 (en) 2008-02-05 2017-04-11 Adobe Systems Incorporated Automatic connections between application components
US8098251B2 (en) * 2008-02-22 2012-01-17 Qualcomm Incorporated System and method for instruction latency reduction in graphics processing
KR100866573B1 (ko) * 2008-02-22 2008-11-03 인하대학교 산학협력단 가시성 맵을 이용한 점-기반 렌더링 방법
KR100914171B1 (ko) 2008-02-28 2009-08-28 한국전자통신연구원 휴대 방송에서의 3차원 서비스를 위한 깊이 영상 기반렌더링 장치 및 방법
US7675513B2 (en) * 2008-03-14 2010-03-09 Evans & Sutherland Computer Corp. System and method for displaying stereo images
GB2458488C (en) * 2008-03-19 2018-09-12 Imagination Tech Ltd Untransformed display lists in a tile based rendering system
US7984317B2 (en) * 2008-03-24 2011-07-19 Apple Inc. Hardware-based power management of functional blocks
US8125494B2 (en) * 2008-04-03 2012-02-28 American Panel Corporation Method for mapping optical properties for a display device
US8448002B2 (en) * 2008-04-10 2013-05-21 Nvidia Corporation Clock-gated series-coupled data processing modules
US8681861B2 (en) 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US8358317B2 (en) 2008-05-23 2013-01-22 Evans & Sutherland Computer Corporation System and method for displaying a planar image on a curved surface
KR101427408B1 (ko) * 2008-05-30 2014-08-07 어드밴스드 마이크로 디바이시즈, 인코포레이티드 스케일링가능하고 통합된 컴퓨팅 시스템
GB0810205D0 (en) * 2008-06-04 2008-07-09 Advanced Risc Mach Ltd Graphics processing systems
US8702248B1 (en) 2008-06-11 2014-04-22 Evans & Sutherland Computer Corporation Projection method for reducing interpixel gaps on a viewing surface
US8656293B1 (en) 2008-07-29 2014-02-18 Adobe Systems Incorporated Configuring mobile devices
US8427497B1 (en) 2008-08-01 2013-04-23 Marvell International Ltd. Methods and apparatuses for processing cached image data
US8553041B1 (en) 2008-09-10 2013-10-08 Nvidia Corporation System and method for structuring an A-buffer to support multi-sample anti-aliasing
US8654135B1 (en) * 2008-09-10 2014-02-18 Nvidia Corporation A-Buffer compression for different compression formats
US8130223B1 (en) 2008-09-10 2012-03-06 Nvidia Corporation System and method for structuring an A-buffer to support multi-sample anti-aliasing
US8370759B2 (en) 2008-09-29 2013-02-05 Ancestry.com Operations Inc Visualizing, creating and editing blending modes methods and systems
US9336624B2 (en) * 2008-10-07 2016-05-10 Mitsubishi Electric Research Laboratories, Inc. Method and system for rendering 3D distance fields
US8077378B1 (en) 2008-11-12 2011-12-13 Evans & Sutherland Computer Corporation Calibration system and method for light modulation device
US8355022B2 (en) * 2008-11-25 2013-01-15 Sony Computer Entertainment America Llc Method and apparatus for aggregating light sources per-vertex in computer graphics
WO2010062790A1 (en) * 2008-11-25 2010-06-03 Sony Computer Entertainment America Inc. Computer graphics method for aggregating light sources per-vertex and interpolating color and direction as one entity
US20100128038A1 (en) * 2008-11-25 2010-05-27 Sony Computer Entertainment America Inc. Method and apparatus for interpolating color and direction as one entity in computer graphics
CA2745421A1 (en) * 2008-12-01 2010-06-10 Life Image Inc. Medical imaging viewer
KR101511273B1 (ko) * 2008-12-29 2015-04-10 삼성전자주식회사 멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법 및시스템
GB0900700D0 (en) 2009-01-15 2009-03-04 Advanced Risc Mach Ltd Methods of and apparatus for processing graphics
EP2384585A4 (en) * 2009-02-01 2017-03-15 LG Electronics Inc. Broadcast receiver and 3d video data processing method
US8384740B1 (en) 2009-02-24 2013-02-26 A9.Com, Inc. Method and system for virtually placing a tangible item on an appendage
US8854379B2 (en) * 2009-02-25 2014-10-07 Empire Technology Development Llc Routing across multicore networks using real world or modeled data
US8095560B2 (en) * 2009-02-26 2012-01-10 Yahoo! Inc. Edge attribute aggregation in a directed graph
US20100241638A1 (en) * 2009-03-18 2010-09-23 O'sullivan Patrick Joseph Sorting contacts
US8330767B2 (en) * 2009-03-24 2012-12-11 Advanced Micro Devices, Inc. Method and apparatus for angular invariant texture level of detail generation
CN101859330B (zh) * 2009-04-09 2012-11-21 辉达公司 验证集成电路效能模型的方法
KR100927128B1 (ko) * 2009-04-30 2009-11-18 주식회사 넥서스칩스 타일 더티 테이블을 이용한 3d 그래픽 처리 장치 및 처리 방법
JP5304443B2 (ja) * 2009-05-28 2013-10-02 富士通セミコンダクター株式会社 描画データ処理方法、図形描画システム、及び図形描画データ作成プログラム
US8294714B1 (en) * 2009-06-26 2012-10-23 Nvidia Corporation Accelerated rendering with temporally interleaved details
KR101649098B1 (ko) * 2009-06-30 2016-08-19 삼성전자주식회사 휴대용 단말기에서 센서를 이용한 렌더링 방법 및 장치
US7973705B2 (en) * 2009-07-17 2011-07-05 Garmin Switzerland Gmbh Marine bump map display
US9142057B2 (en) * 2009-09-03 2015-09-22 Advanced Micro Devices, Inc. Processing unit with a plurality of shader engines
US9300969B2 (en) 2009-09-09 2016-03-29 Apple Inc. Video storage
GB2473513B (en) * 2009-09-14 2012-02-01 Sony Comp Entertainment Europe A method and apparatus for determining processor performance
US20110063309A1 (en) * 2009-09-16 2011-03-17 Nvidia Corporation User interface for co-processing techniques on heterogeneous graphics processing units
US8692829B2 (en) * 2009-10-05 2014-04-08 Nvidia Corporation Calculation of plane equations after determination of Z-buffer visibility
US9438861B2 (en) * 2009-10-06 2016-09-06 Microsoft Technology Licensing, Llc Integrating continuous and sparse streaming data
US9058672B2 (en) * 2009-10-06 2015-06-16 Nvidia Corporation Using a pixel offset for evaluating a plane equation
CN102087752B (zh) * 2009-12-08 2013-11-20 鸿富锦精密工业(深圳)有限公司 光照环境模拟系统及方法
RU2581714C2 (ru) * 2009-12-08 2016-04-20 Конинклейке Филипс Электроникс Н.В. Планирование абляционного лечения и устройство
US9530189B2 (en) 2009-12-31 2016-12-27 Nvidia Corporation Alternate reduction ratios and threshold mechanisms for framebuffer compression
TWI482998B (zh) * 2010-01-11 2015-05-01 Hon Hai Prec Ind Co Ltd 光照環境類比系統及方法
JP5571977B2 (ja) * 2010-03-01 2014-08-13 キヤノン株式会社 画像処理装置
US9331869B2 (en) 2010-03-04 2016-05-03 Nvidia Corporation Input/output request packet handling techniques by a device specific kernel mode driver
US9058685B2 (en) * 2010-03-11 2015-06-16 Broadcom Corporation Method and system for controlling a 3D processor using a control list in memory
US8320622B2 (en) * 2010-03-29 2012-11-27 Sharp Laboratories Of America, Inc. Color gradient object tracking
US10786736B2 (en) 2010-05-11 2020-09-29 Sony Interactive Entertainment LLC Placement of user information in a game space
US20110285718A1 (en) 2010-05-21 2011-11-24 Kilgard Mark J Point containment for quadratic bèzier strokes
KR101016075B1 (ko) * 2010-06-04 2011-02-17 김시용 러버 교체형 와이퍼 블레이드
US8593466B2 (en) * 2010-06-08 2013-11-26 Intel Corporation Tile rendering for image processing
US9053562B1 (en) 2010-06-24 2015-06-09 Gregory S. Rabin Two dimensional to three dimensional moving image converter
US10109103B2 (en) 2010-06-30 2018-10-23 Barry L. Jenkins Method of determining occluded ingress and egress routes using nav-cell to nav-cell visibility pre-computation
US8493404B2 (en) 2010-08-24 2013-07-23 Qualcomm Incorporated Pixel rendering on display
KR101064178B1 (ko) * 2010-08-24 2011-09-14 한국과학기술원 버퍼 캐시 관리 시스템 및 방법
CN111833424A (zh) * 2010-09-13 2020-10-27 巴里·林恩·詹金斯 传输和控制包括渲染的几何、纹理和光照数据的流交互媒体
KR101719485B1 (ko) 2010-09-20 2017-03-27 삼성전자주식회사 그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법
US8811699B2 (en) * 2010-09-22 2014-08-19 Siemens Aktiengesellschaft Detection of landmarks and key-frames in cardiac perfusion MRI using a joint spatial-temporal context model
US9171350B2 (en) 2010-10-28 2015-10-27 Nvidia Corporation Adaptive resolution DGPU rendering to provide constant framerate with free IGPU scale up
US9395885B1 (en) 2010-12-10 2016-07-19 Wyse Technology L.L.C. Methods and systems for a remote desktop session utilizing HTTP header
US9245047B2 (en) 2010-12-10 2016-01-26 Wyse Technology L.L.C. Methods and systems for facilitating a remote desktop session utilizing a remote desktop client common interface
US9535560B1 (en) 2010-12-10 2017-01-03 Wyse Technology L.L.C. Methods and systems for facilitating a remote desktop session for a web browser and a remote desktop server
US9244912B1 (en) 2010-12-10 2016-01-26 Wyse Technology L.L.C. Methods and systems for facilitating a remote desktop redrawing session utilizing HTML
US9430036B1 (en) * 2010-12-10 2016-08-30 Wyse Technology L.L.C. Methods and systems for facilitating accessing and controlling a remote desktop of a remote machine in real time by a windows web browser utilizing HTTP
US8949726B2 (en) 2010-12-10 2015-02-03 Wyse Technology L.L.C. Methods and systems for conducting a remote desktop session via HTML that supports a 2D canvas and dynamic drawing
KR20120065589A (ko) * 2010-12-13 2012-06-21 삼성전자주식회사 저전력을 위한 타일 비닝 장치 및 방법
US9477597B2 (en) 2011-03-25 2016-10-25 Nvidia Corporation Techniques for different memory depths on different partitions
US8422770B2 (en) * 2011-03-30 2013-04-16 Mckesson Financial Holdings Method, apparatus and computer program product for displaying normalized medical images
US8701057B2 (en) 2011-04-11 2014-04-15 Nvidia Corporation Design, layout, and manufacturing techniques for multivariant integrated circuits
CN102739998B (zh) * 2011-05-11 2017-03-01 新奥特(北京)视频技术有限公司 一种三维空间中空间变换的实现方法
GB2491156B (en) * 2011-05-25 2019-08-07 Advanced Risc Mach Ltd Processing pipeline control
AU2011202508B2 (en) 2011-05-27 2013-05-16 Canon Kabushiki Kaisha Method, apparatus and system for rendering an object on a page
US9311433B2 (en) * 2011-05-27 2016-04-12 Airbus Operations S.L. Systems and methods for improving the execution of computational algorithms
US9342817B2 (en) 2011-07-07 2016-05-17 Sony Interactive Entertainment LLC Auto-creating groups for sharing photos
US9652560B1 (en) 2011-07-18 2017-05-16 Apple Inc. Non-blocking memory management unit
US9529712B2 (en) 2011-07-26 2016-12-27 Nvidia Corporation Techniques for balancing accesses to memory having different memory types
US9342322B2 (en) 2011-09-12 2016-05-17 Microsoft Technology Licensing, Llc System and method for layering using tile-based renderers
US9641826B1 (en) 2011-10-06 2017-05-02 Evans & Sutherland Computer Corporation System and method for displaying distant 3-D stereo on a dome surface
US20130106887A1 (en) * 2011-10-31 2013-05-02 Christopher Tremblay Texture generation using a transformation matrix
CN103108197A (zh) 2011-11-14 2013-05-15 辉达公司 一种用于3d视频无线显示的优先级压缩方法和系统
US9633458B2 (en) * 2012-01-23 2017-04-25 Nvidia Corporation Method and system for reducing a polygon bounding box
US9829715B2 (en) 2012-01-23 2017-11-28 Nvidia Corporation Eyewear device for transmitting signal and communication method thereof
US9087409B2 (en) 2012-03-01 2015-07-21 Qualcomm Incorporated Techniques for reducing memory access bandwidth in a graphics processing system based on destination alpha values
US20130235154A1 (en) * 2012-03-09 2013-09-12 Guy Salton-Morgenstern Method and apparatus to minimize computations in real time photo realistic rendering
US8959494B2 (en) * 2012-03-20 2015-02-17 Massively Parallel Technologies Inc. Parallelism from functional decomposition
US9411595B2 (en) 2012-05-31 2016-08-09 Nvidia Corporation Multi-threaded transactional memory coherence
US9148699B2 (en) * 2012-06-01 2015-09-29 Texas Instruments Incorporated Optimized algorithm for construction of composite video from a set of discrete video sources
US9251555B2 (en) 2012-06-08 2016-02-02 2236008 Ontario, Inc. Tiled viewport composition
JP2014006674A (ja) * 2012-06-22 2014-01-16 Canon Inc 画像処理装置及びその制御方法、プログラム
US20140010479A1 (en) * 2012-07-09 2014-01-09 Samsung Electro-Mechanics Co., Ltd. Bilinear interpolation circuit for image and method thereof
US9105250B2 (en) * 2012-08-03 2015-08-11 Nvidia Corporation Coverage compaction
US9323315B2 (en) 2012-08-15 2016-04-26 Nvidia Corporation Method and system for automatic clock-gating of a clock grid at a clock source
US8928929B2 (en) * 2012-08-29 2015-01-06 Eastman Kodak Company System for generating tag layouts
US8786889B2 (en) * 2012-08-29 2014-07-22 Eastman Kodak Company Method for computing scale for tag insertion
US9578224B2 (en) 2012-09-10 2017-02-21 Nvidia Corporation System and method for enhanced monoimaging
US8850371B2 (en) 2012-09-14 2014-09-30 Nvidia Corporation Enhanced clock gating in retimed modules
US9002125B2 (en) 2012-10-15 2015-04-07 Nvidia Corporation Z-plane compression with z-plane predictors
US8941676B2 (en) * 2012-10-26 2015-01-27 Nvidia Corporation On-chip anti-alias resolve in a cache tiling architecture
US9317948B2 (en) 2012-11-16 2016-04-19 Arm Limited Method of and apparatus for processing graphics
GB201223089D0 (en) 2012-12-20 2013-02-06 Imagination Tech Ltd Hidden culling in tile based computer generated graphics
US9082212B2 (en) * 2012-12-21 2015-07-14 Nvidia Corporation Programmable blending via multiple pixel shader dispatches
US9824009B2 (en) 2012-12-21 2017-11-21 Nvidia Corporation Information coherency maintenance systems and methods
US10102142B2 (en) 2012-12-26 2018-10-16 Nvidia Corporation Virtual address based memory reordering
US9251554B2 (en) * 2012-12-26 2016-02-02 Analog Devices, Inc. Block-based signal processing
US9317251B2 (en) 2012-12-31 2016-04-19 Nvidia Corporation Efficient correction of normalizer shift amount errors in fused multiply add operations
US9607407B2 (en) 2012-12-31 2017-03-28 Nvidia Corporation Variable-width differential memory compression
US9591309B2 (en) 2012-12-31 2017-03-07 Nvidia Corporation Progressive lossy memory compression
DE102013201377A1 (de) * 2013-01-29 2014-07-31 Bayerische Motoren Werke Aktiengesellschaft Verfahren und Vorrichtung zum Verarbeiten von 3d-Bilddaten
US20140225902A1 (en) * 2013-02-11 2014-08-14 Nvidia Corporation Image pyramid processor and method of multi-resolution image processing
KR101529942B1 (ko) * 2013-02-18 2015-06-18 서경대학교 산학협력단 병렬 처리 래스터라이저 및 병렬 처리를 이용한 래스터라이징 방법
GB2511817A (en) * 2013-03-14 2014-09-17 Imagination Tech Ltd Rendering in computer graphics systems
WO2014152800A1 (en) 2013-03-14 2014-09-25 Massively Parallel Technologies, Inc. Project planning and debugging from functional decomposition
US9992021B1 (en) 2013-03-14 2018-06-05 GoTenna, Inc. System and method for private and point-to-point communication between computing devices
US10169906B2 (en) 2013-03-29 2019-01-01 Advanced Micro Devices, Inc. Hybrid render with deferred primitive batch binning
US10957094B2 (en) 2013-03-29 2021-03-23 Advanced Micro Devices, Inc. Hybrid render with preferred primitive batch binning and sorting
GB2506706B (en) 2013-04-02 2014-09-03 Imagination Tech Ltd Tile-based graphics
US10008029B2 (en) 2013-05-31 2018-06-26 Nvidia Corporation Updating depth related graphics data
US10204391B2 (en) 2013-06-04 2019-02-12 Arm Limited Method of and apparatus for processing graphics
US9710894B2 (en) 2013-06-04 2017-07-18 Nvidia Corporation System and method for enhanced multi-sample anti-aliasing
KR20140142863A (ko) * 2013-06-05 2014-12-15 한국전자통신연구원 그래픽 편집기 제공 장치 및 그 방법
US9418400B2 (en) 2013-06-18 2016-08-16 Nvidia Corporation Method and system for rendering simulated depth-of-field visual effect
US9177413B2 (en) * 2013-06-26 2015-11-03 Nvidia Corporation Unique primitive identifier generation
US9607574B2 (en) 2013-08-09 2017-03-28 Apple Inc. Video data compression format
US9569385B2 (en) 2013-09-09 2017-02-14 Nvidia Corporation Memory transaction ordering
US9230362B2 (en) 2013-09-11 2016-01-05 Nvidia Corporation System, method, and computer program product for using compression with programmable sample locations
US9230363B2 (en) 2013-09-11 2016-01-05 Nvidia Corporation System, method, and computer program product for using compression with programmable sample locations
US9437040B2 (en) 2013-11-15 2016-09-06 Nvidia Corporation System, method, and computer program product for implementing anti-aliasing operations using a programmable sample pattern table
US10935788B2 (en) 2014-01-24 2021-03-02 Nvidia Corporation Hybrid virtual 3D rendering approach to stereovision
US9276610B2 (en) * 2014-01-27 2016-03-01 Tensorcom, Inc. Method and apparatus of a fully-pipelined layered LDPC decoder
US20150228106A1 (en) * 2014-02-13 2015-08-13 Vixs Systems Inc. Low latency video texture mapping via tight integration of codec engine with 3d graphics engine
US9710957B2 (en) * 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Graphics processing enhancement by tracking object and/or primitive identifiers
CN105100862B (zh) * 2014-04-18 2018-04-24 阿里巴巴集团控股有限公司 网格移动的显示处理方法及其系统
GB2526598B (en) * 2014-05-29 2018-11-28 Imagination Tech Ltd Allocation of primitives to primitive blocks
US9547918B2 (en) * 2014-05-30 2017-01-17 Intel Corporation Techniques for deferred decoupled shading
GB2524120B (en) * 2014-06-17 2016-03-02 Imagination Tech Ltd Assigning primitives to tiles in a graphics processing system
GB2524121B (en) * 2014-06-17 2016-03-02 Imagination Tech Ltd Assigning primitives to tiles in a graphics processing system
US9307249B2 (en) * 2014-06-20 2016-04-05 Freescale Semiconductor, Inc. Processing device and method of compressing images
US9721376B2 (en) * 2014-06-27 2017-08-01 Samsung Electronics Co., Ltd. Elimination of minimal use threads via quad merging
CN104217461B (zh) * 2014-07-10 2017-05-10 无锡梵天信息技术股份有限公司 一种基于深度图模拟实时凹凸效果的视差映射方法
US9832388B2 (en) 2014-08-04 2017-11-28 Nvidia Corporation Deinterleaving interleaved high dynamic range image by using YUV interpolation
US9569862B2 (en) * 2014-08-15 2017-02-14 Qualcomm Incorporated Bandwidth reduction using texture lookup by adaptive shading
US9665370B2 (en) * 2014-08-19 2017-05-30 Qualcomm Incorporated Skipping of data storage
US10019834B2 (en) 2014-09-26 2018-07-10 Microsoft Technology Licensing, Llc Real-time rendering of volumetric models with occlusive and emissive particles
KR102281180B1 (ko) 2014-11-21 2021-07-23 삼성전자주식회사 영상 처리 장치 및 방법
US9720769B2 (en) * 2014-12-03 2017-08-01 Sandisk Technologies Llc Storage parameters for a data storage device
US9916326B2 (en) 2015-01-27 2018-03-13 Splunk, Inc. Efficient point-in-polygon indexing technique for facilitating geofencing operations
US9836874B2 (en) * 2015-01-27 2017-12-05 Splunk Inc. Efficient polygon-clipping technique to reduce data transfer requirements for a viewport
US10026204B2 (en) 2015-01-27 2018-07-17 Splunk Inc. Efficient point-in-polygon indexing technique for processing queries over geographic data sets
US9607414B2 (en) 2015-01-27 2017-03-28 Splunk Inc. Three-dimensional point-in-polygon operation to facilitate displaying three-dimensional structures
US9530237B2 (en) * 2015-04-02 2016-12-27 Apple Inc. Interpolation circuitry and techniques for graphics processing
US10255651B2 (en) 2015-04-15 2019-04-09 Channel One Holdings Inc. Methods and systems for generating shaders to emulate a fixed-function graphics pipeline
US9922449B2 (en) 2015-06-01 2018-03-20 Intel Corporation Apparatus and method for dynamic polygon or primitive sorting for improved culling
US9959665B2 (en) 2015-07-21 2018-05-01 Qualcomm Incorporated Zero pixel culling for graphics processing
KR20170034727A (ko) 2015-09-21 2017-03-29 삼성전자주식회사 그림자 정보 저장 방법 및 장치, 3d 렌더링 방법 및 장치
US10269154B2 (en) * 2015-12-21 2019-04-23 Intel Corporation Rasterization based on partial spans
KR102521654B1 (ko) * 2016-01-25 2023-04-13 삼성전자주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템에서 타일-기반 렌더링의 그래픽스 파이프라인을 수행하는 방법
US9818051B2 (en) * 2016-01-29 2017-11-14 Ricoh Company, Ltd. Rotation and clipping mechanism
US9906981B2 (en) 2016-02-25 2018-02-27 Nvidia Corporation Method and system for dynamic regulation and control of Wi-Fi scans
CN107180441B (zh) * 2016-03-10 2019-04-09 腾讯科技(深圳)有限公司 生成眼睛图像的方法和装置
US11847040B2 (en) 2016-03-16 2023-12-19 Asg Technologies Group, Inc. Systems and methods for detecting data alteration from source to target
US10332290B2 (en) * 2016-03-21 2019-06-25 Adobe Inc. Fast, coverage-optimized, resolution-independent and anti-aliased graphics processing
KR101821124B1 (ko) 2016-04-05 2018-01-23 한화테크윈 주식회사 웹브라우저 상에서 미디어 스트림을 재생하는 방법 및 장치
US10412130B2 (en) 2016-04-04 2019-09-10 Hanwha Techwin Co., Ltd. Method and apparatus for playing media stream on web browser
US9798672B1 (en) 2016-04-14 2017-10-24 Macom Connectivity Solutions, Llc Data managment for cache memory
GB2553744B (en) 2016-04-29 2018-09-05 Advanced Risc Mach Ltd Graphics processing systems
EP3249612B1 (en) * 2016-04-29 2023-02-08 Imagination Technologies Limited Generation of a control stream for a tile
CN109643460B (zh) * 2016-08-29 2023-08-15 超威半导体公司 使用推迟图元批量合并和分类的混合渲染器
US10756785B2 (en) * 2016-09-29 2020-08-25 Nokia Technologies Oy Flexible reference signal design
US10417134B2 (en) * 2016-11-10 2019-09-17 Oracle International Corporation Cache memory architecture and policies for accelerating graph algorithms
US10282889B2 (en) * 2016-11-29 2019-05-07 Samsung Electronics Co., Ltd. Vertex attribute compression and decompression in hardware
KR20180070314A (ko) 2016-12-16 2018-06-26 삼성전자주식회사 그래픽스 처리 장치 및 그래픽스 처리 장치에서 그래픽스 파이프라인을 처리하는 방법
KR102637736B1 (ko) * 2017-01-04 2024-02-19 삼성전자주식회사 그래픽스 처리 방법 및 시스템
US10977858B2 (en) 2017-03-30 2021-04-13 Magic Leap, Inc. Centralized rendering
KR20240036150A (ko) 2017-03-30 2024-03-19 매직 립, 인코포레이티드 중앙화된 렌더링
US10157493B2 (en) * 2017-04-01 2018-12-18 Intel Corporation Adaptive multisampling based on vertex attributes
GB2562041B (en) * 2017-04-28 2020-11-25 Imagination Tech Ltd Multi-output decoder for texture decompression
US10521877B2 (en) 2017-05-23 2019-12-31 Samsung Electronics Co., Ltd Apparatus and method for speculative buffer reservations with cancellation mechanism
US10969740B2 (en) 2017-06-27 2021-04-06 Nvidia Corporation System and method for near-eye light field rendering for wide field of view interactive three-dimensional computer graphics
US10510181B2 (en) * 2017-06-27 2019-12-17 Samsung Electronics Co., Ltd. System and method for cache management using a cache status table
CN107463398B (zh) * 2017-07-21 2018-08-17 腾讯科技(深圳)有限公司 游戏渲染方法、装置、存储设备及终端
GB2569775B (en) * 2017-10-20 2020-02-26 Graphcore Ltd Synchronization in a multi-tile, multi-chip processing arrangement
GB2569271B (en) 2017-10-20 2020-05-13 Graphcore Ltd Synchronization with a host processor
GB2569844B (en) 2017-10-20 2021-01-06 Graphcore Ltd Sending data off-chip
US10600142B2 (en) * 2017-11-02 2020-03-24 Advanced Micro Devices, Inc. Compression and decompression of indices in a graphics pipeline
US11057500B2 (en) * 2017-11-20 2021-07-06 Asg Technologies Group, Inc. Publication of applications using server-side virtual screen change capture
US10699374B2 (en) 2017-12-05 2020-06-30 Microsoft Technology Licensing, Llc Lens contribution-based virtual reality display rendering
GB2569546B (en) * 2017-12-19 2020-10-14 Sony Interactive Entertainment Inc Determining pixel values using reference images
US10877740B2 (en) 2017-12-29 2020-12-29 Asg Technologies Group, Inc. Dynamically deploying a component in an application
US11611633B2 (en) 2017-12-29 2023-03-21 Asg Technologies Group, Inc. Systems and methods for platform-independent application publishing to a front-end interface
US10812611B2 (en) 2017-12-29 2020-10-20 Asg Technologies Group, Inc. Platform-independent application publishing to a personalized front-end interface by encapsulating published content into a container
GB2572617B (en) 2018-04-05 2021-06-16 Imagination Tech Ltd Blending hardware
US10672182B2 (en) * 2018-04-19 2020-06-02 Microsoft Technology Licensing, Llc Compact visibility state for GPUs compatible with hardware instancing
JP7119081B2 (ja) 2018-05-24 2022-08-16 株式会社Preferred Networks 投影データ生成装置、3次元モデル、投影データ生成方法、ニューラルネットワーク生成方法及びプログラム
GB2575294B8 (en) 2018-07-04 2022-07-20 Graphcore Ltd Host Proxy On Gateway
US10861230B2 (en) * 2018-08-01 2020-12-08 Nvidia Corporation System-generated stable barycentric coordinates and direct plane equation access
MX2021002931A (es) * 2018-09-13 2021-07-16 Fraunhofer Ges Forschung Intrapredicciones ponderadas lineales afines.
US11138747B1 (en) * 2018-11-02 2021-10-05 Facebook Technologies, Llc Interpolation optimizations for a display engine for post-rendering processing
GB2579412B (en) 2018-11-30 2020-12-23 Graphcore Ltd Gateway pull model
US10909659B2 (en) 2018-12-12 2021-02-02 Apical Limited Super-resolution image processing using a machine learning system
US11715262B2 (en) * 2018-12-17 2023-08-01 Advanced Micro Devices, Inc. Optimizing primitive shaders
KR102216749B1 (ko) * 2019-03-05 2021-02-17 네이버웹툰 유한회사 타겟 이미지의 채색 완성 방법, 장치 및 컴퓨터 프로그램
US10866280B2 (en) * 2019-04-01 2020-12-15 Texas Instruments Incorporated Scan chain self-testing of lockstep cores on reset
US11640649B2 (en) * 2019-06-19 2023-05-02 Samsung Electronics Co., Ltd. Methods and apparatus for efficient range calculation
US11488349B2 (en) 2019-06-28 2022-11-01 Ati Technologies Ulc Method and apparatus for alpha blending images from different color formats
US11762634B2 (en) 2019-06-28 2023-09-19 Asg Technologies Group, Inc. Systems and methods for seamlessly integrating multiple products by using a common visual modeler
US10981059B2 (en) * 2019-07-03 2021-04-20 Sony Interactive Entertainment LLC Asset aware computing architecture for graphics processing
EP4004766A4 (en) 2019-07-30 2023-09-20 Falkonry, Inc. SMOOTH AND RESOLUTION-FRIENDLY REPRESENTATION OF LARGE AMOUNTS OF TIME SERIES DATA
US11886397B2 (en) 2019-10-18 2024-01-30 Asg Technologies Group, Inc. Multi-faceted trust system
US11941137B2 (en) 2019-10-18 2024-03-26 Asg Technologies Group, Inc. Use of multi-faceted trust scores for decision making, action triggering, and data analysis and interpretation
US11055067B2 (en) 2019-10-18 2021-07-06 Asg Technologies Group, Inc. Unified digital automation platform
US11755760B2 (en) 2019-10-18 2023-09-12 Asg Technologies Group, Inc. Systems and methods for secure policies-based information governance
US11269660B2 (en) 2019-10-18 2022-03-08 Asg Technologies Group, Inc. Methods and systems for integrated development environment editor support with a single code base
US11216993B2 (en) * 2019-11-27 2022-01-04 Arm Limited Graphics processing systems
US11210847B2 (en) 2019-11-27 2021-12-28 Arm Limited Graphics processing systems
US11210821B2 (en) * 2019-11-27 2021-12-28 Arm Limited Graphics processing systems
US11170555B2 (en) 2019-11-27 2021-11-09 Arm Limited Graphics processing systems
US11514549B2 (en) * 2020-02-03 2022-11-29 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by generating information in one rendering phase for use in another rendering phase
US11508110B2 (en) 2020-02-03 2022-11-22 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by performing geometry analysis before rendering
US11113858B2 (en) * 2020-02-04 2021-09-07 Inventive Software, LLC System and method for deep compositing of images in web browsers
US11321259B2 (en) * 2020-02-14 2022-05-03 Sony Interactive Entertainment Inc. Network architecture providing high speed storage access through a PCI express fabric between a compute node and a storage server
US11132831B1 (en) 2020-03-02 2021-09-28 Qualcomm Incorporated Methods and apparatus for efficient multi-view rasterization
US11243882B2 (en) * 2020-04-15 2022-02-08 International Business Machines Corporation In-array linked list identifier pool scheme
US11250627B2 (en) * 2020-06-29 2022-02-15 Intel Corporation Tile sequencing mechanism
US11277658B1 (en) 2020-08-21 2022-03-15 Beam, Inc. Integrating overlaid digital content into displayed data via graphics processing circuitry
EP4229534A1 (en) 2020-10-13 2023-08-23 ASG Technologies Group, Inc. DBA ASG Technologies Geolocation-based policy rules
CN116670723A (zh) * 2020-10-22 2023-08-29 彩滋公司 用于定制产品的合成视图的高质量渲染的系统和方法
US11232628B1 (en) * 2020-11-10 2022-01-25 Weta Digital Limited Method for processing image data to provide for soft shadow effects using shadow depth information
US11481933B1 (en) 2021-04-08 2022-10-25 Mobeus Industries, Inc. Determining a change in position of displayed digital content in subsequent frames via graphics processing circuitry
US11483156B1 (en) 2021-04-30 2022-10-25 Mobeus Industries, Inc. Integrating digital content into displayed data on an application layer via processing circuitry of a server
US11601276B2 (en) 2021-04-30 2023-03-07 Mobeus Industries, Inc. Integrating and detecting visual data security token in displayed data via graphics processing circuitry using a frame buffer
US11475610B1 (en) 2021-04-30 2022-10-18 Mobeus Industries, Inc. Controlling interactivity of digital content overlaid onto displayed data via graphics processing circuitry using a frame buffer
US11682101B2 (en) 2021-04-30 2023-06-20 Mobeus Industries, Inc. Overlaying displayed digital content transmitted over a communication network via graphics processing circuitry using a frame buffer
US11586835B2 (en) 2021-04-30 2023-02-21 Mobeus Industries, Inc. Integrating overlaid textual digital content into displayed data via graphics processing circuitry using a frame buffer
US11477020B1 (en) 2021-04-30 2022-10-18 Mobeus Industries, Inc. Generating a secure random number by determining a change in parameters of digital content in subsequent frames via graphics processing circuitry
CN113256485B (zh) * 2021-05-21 2024-01-30 百果园技术(新加坡)有限公司 图像拉伸方法、装置、电子设备和存储介质
US20220410002A1 (en) * 2021-06-29 2022-12-29 Bidstack Group PLC Mesh processing for viewability testing
US11562153B1 (en) 2021-07-16 2023-01-24 Mobeus Industries, Inc. Systems and methods for recognizability of objects in a multi-layer display
US20230334728A1 (en) * 2022-04-15 2023-10-19 Meta Platforms Technologies, Llc Destination Update for Blending Modes in a Graphics Pipeline
US11882295B2 (en) 2022-04-15 2024-01-23 Meta Platforms Technologies, Llc Low-power high throughput hardware decoder with random block access
US20230334736A1 (en) * 2022-04-15 2023-10-19 Meta Platforms Technologies, Llc Rasterization Optimization for Analytic Anti-Aliasing
CN114529705B (zh) * 2022-04-22 2022-07-19 山东捷瑞数字科技股份有限公司 一种三维引擎编辑器的界面布局处理方法

Family Cites Families (132)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2353185A1 (fr) 1976-04-09 1977-12-23 Thomson Csf Dispositif correlateur rapide, et systeme de traitement des signaux d'un recepteur comportant un tel dispositif
FR2481489A1 (fr) 1980-04-25 1981-10-30 Thomson Csf Dispositif correlateur bidimensionnel
US4484346A (en) 1980-08-15 1984-11-20 Sternberg Stanley R Neighborhood transformation logic circuitry for an image analyzer system
US4559618A (en) 1982-09-13 1985-12-17 Data General Corp. Content-addressable memory module with associative clear
US4783829A (en) 1983-02-23 1988-11-08 Hitachi, Ltd. Pattern recognition apparatus
US4581760A (en) 1983-04-27 1986-04-08 Fingermatrix, Inc. Fingerprint verification method
US4670858A (en) 1983-06-07 1987-06-02 Tektronix, Inc. High storage capacity associative memory
US4594673A (en) 1983-06-28 1986-06-10 Gti Corporation Hidden surface processor
US4532606A (en) 1983-07-14 1985-07-30 Burroughs Corporation Content addressable memory cell with shift capability
US4564952A (en) 1983-12-08 1986-01-14 At&T Bell Laboratories Compensation of filter symbol interference by adaptive estimation of received symbol sequences
US4694404A (en) 1984-01-12 1987-09-15 Key Bank N.A. High-speed image generation of complex solid objects using octree encoding
US4794559A (en) 1984-07-05 1988-12-27 American Telephone And Telegraph Company, At&T Bell Laboratories Content addressable semiconductor memory arrays
US4622653A (en) 1984-10-29 1986-11-11 Texas Instruments Incorporated Block associative memory
US4669054A (en) 1985-05-03 1987-05-26 General Dynamics, Pomona Division Device and method for optically correlating a pair of images
SE445154B (sv) 1985-07-08 1986-06-02 Ibm Svenska Ab Metod for att avlegsna dolda linjer
US4695973A (en) 1985-10-22 1987-09-22 The United States Of America As Represented By The Secretary Of The Air Force Real-time programmable optical correlator
US4758982A (en) 1986-01-08 1988-07-19 Advanced Micro Devices, Inc. Quasi content addressable memory
US4890242A (en) 1986-06-05 1989-12-26 Xox Corporation Solid-modeling system using topology directed subdivision for determination of surface intersections
US5067162A (en) 1986-06-30 1991-11-19 Identix Incorporated Method and apparatus for verifying identity using image correlation
US4998286A (en) 1987-02-13 1991-03-05 Olympus Optical Co., Ltd. Correlation operational apparatus for multi-dimensional images
US4825391A (en) 1987-07-20 1989-04-25 General Electric Company Depth buffer priority processing for real time computer image generating systems
US5146592A (en) 1987-09-14 1992-09-08 Visual Information Technologies, Inc. High speed image processing computer with overlapping windows-div
US5129060A (en) 1987-09-14 1992-07-07 Visual Information Technologies, Inc. High speed image processing computer
US4841467A (en) 1987-10-05 1989-06-20 General Electric Company Architecture to implement floating point multiply/accumulate operations
GB2215623B (en) 1987-10-23 1991-07-31 Rotation Limited Apparatus for playing a game for one or more players and to games played with the apparatus
US4888712A (en) 1987-11-04 1989-12-19 Schlumberger Systems, Inc. Guardband clipping method and apparatus for 3-D graphics display system
US4945500A (en) 1987-11-04 1990-07-31 Schlumberger Technologies, Inc. Triangle processor for 3-D graphics display system
FR2625345A1 (fr) 1987-12-24 1989-06-30 Thomson Cgr Procede de visualisation en trois dimensions d'objets codes numeriquement sous forme arborescente et dispositif de mise en oeuvre
DE68918724T2 (de) 1988-02-17 1995-05-24 Nippon Denso Co Fingerabdruck-Prüfungsverfahren mit Verwendung mehrerer Korrelierungsentscheidungspegel und aufeinanderfolgenden Entscheidungsstufen.
US4888583A (en) 1988-03-14 1989-12-19 Ligocki Terry J Method and apparatus for rendering an image from data arranged in a constructive solid geometry format
GB2223384B (en) 1988-07-14 1992-05-06 Daikin Ind Ltd Method and apparatus for applying shadowing operation to figures to be drawn for displaying on crt-display
US5133052A (en) 1988-08-04 1992-07-21 Xerox Corporation Interactive graphical search and replace utility for computer-resident synthetic graphic image editors
US4996666A (en) 1988-08-12 1991-02-26 Duluk Jr Jerome F Content-addressable memory system capable of fully parallel magnitude comparisons
GB8828342D0 (en) 1988-12-05 1989-01-05 Rediffusion Simulation Ltd Image generator
US4970636A (en) 1989-01-23 1990-11-13 Honeywell Inc. Memory interface controller
FR2646046B1 (fr) 1989-04-18 1995-08-25 France Etat Procede et dispositif de compression de donnees d'image par transformation mathematique a cout reduit de mise en oeuvre, notamment pour la transmission a debit reduit de sequences d'images
JPH0776991B2 (ja) 1989-10-24 1995-08-16 インターナショナル・ビジネス・マシーンズ・コーポレーション Nurbsデータ変換方法及び装置
US5245700A (en) 1989-11-21 1993-09-14 International Business Machines Corporation Adjustment of z-buffer values for lines on the surface of a polygon
JPH03166601A (ja) 1989-11-27 1991-07-18 Hitachi Ltd 制御支援装置
US5129051A (en) 1990-03-16 1992-07-07 Hewlett-Packard Company Decomposition of arbitrary polygons into trapezoids
US5123085A (en) 1990-03-19 1992-06-16 Sun Microsystems, Inc. Method and apparatus for rendering anti-aliased polygons
US5128888A (en) 1990-04-02 1992-07-07 Advanced Micro Devices, Inc. Arithmetic unit having multiple accumulators
GB9009127D0 (en) 1990-04-24 1990-06-20 Rediffusion Simulation Ltd Image generator
US5369734A (en) 1990-05-18 1994-11-29 Kabushiki Kaisha Toshiba Method for processing and displaying hidden-line graphic images
DE69122557T2 (de) 1990-06-29 1997-04-24 Philips Electronics Nv Bilderzeugung
JPH0475183A (ja) 1990-07-17 1992-03-10 Mitsubishi Electric Corp 画像の相関度検出装置
US5054090A (en) 1990-07-20 1991-10-01 Knight Arnold W Fingerprint correlation system with parallel FIFO processor
US5050220A (en) 1990-07-24 1991-09-17 The United States Of America As Represented By The Secretary Of The Navy Optical fingerprint correlator
JPH07120435B2 (ja) 1990-12-06 1995-12-20 インターナショナル・ビジネス・マシーンズ・コーポレイション 高速zバッファの初期化および更新方法ならびにそのシステム
FR2670923A1 (fr) 1990-12-21 1992-06-26 Philips Lab Electronique Dispositif de correlation.
JPH07122908B2 (ja) 1991-03-12 1995-12-25 インターナショナル・ビジネス・マシーンズ・コーポレイション 3次元のソリッド物体を表す表示可能情報を生成する装置と方法
US5289567A (en) 1991-04-01 1994-02-22 Digital Equipment Corporation Computer apparatus and method for finite element identification in interactive modeling
US5293467A (en) 1991-04-03 1994-03-08 Buchner Gregory C Method for resolving priority between a calligraphically-displayed point feature and both raster-displayed faces and other calligraphically-displayed point features in a CIG system
US5315537A (en) 1991-04-08 1994-05-24 Blacker Teddy D Automated quadrilateral surface discretization method and apparatus usable to generate mesh in a finite element analysis system
US5347619A (en) 1991-04-30 1994-09-13 International Business Machines Corporation Nonconvex polygon identifier
US5263136A (en) 1991-04-30 1993-11-16 Optigraphics Corporation System for managing tiled images using multiple resolutions
US5299139A (en) 1991-06-21 1994-03-29 Cadence Design Systems, Inc. Short locator method
US5493644A (en) 1991-07-11 1996-02-20 Hewlett-Packard Company Polygon span interpolator with main memory Z buffer
US5295235A (en) 1992-02-14 1994-03-15 Steve Newman Polygon engine for updating computer graphic display employing compressed bit map data
US5319743A (en) 1992-04-02 1994-06-07 Digital Equipment Corporation Intelligent and compact bucketing method for region queries in two-dimensional space
US5669010A (en) 1992-05-18 1997-09-16 Silicon Engines Cascaded two-stage computational SIMD engine having multi-port memory and multiple arithmetic units
WO1993023816A1 (en) 1992-05-18 1993-11-25 Silicon Engines Inc. System and method for cross correlation with application to video motion vector estimation
US5621866A (en) 1992-07-24 1997-04-15 Fujitsu Limited Image processing apparatus having improved frame buffer with Z buffer and SAM port
US5455900A (en) 1992-10-20 1995-10-03 Ricoh Company, Ltd. Image processing apparatus
US5388206A (en) 1992-11-13 1995-02-07 The University Of North Carolina Architecture and apparatus for image generation
TW241196B (ko) 1993-01-15 1995-02-21 Du Pont
JP3240447B2 (ja) 1993-02-19 2001-12-17 株式会社リコー 画像処理装置
US5574835A (en) 1993-04-06 1996-11-12 Silicon Engines, Inc. Bounding box and projections detection of hidden polygons in three-dimensional spatial databases
US5509110A (en) 1993-04-26 1996-04-16 Loral Aerospace Corporation Method for tree-structured hierarchical occlusion in image generators
US6167143A (en) * 1993-05-03 2000-12-26 U.S. Philips Corporation Monitoring system
US5684939A (en) 1993-07-09 1997-11-04 Silicon Graphics, Inc. Antialiased imaging with improved pixel supersampling
US5579455A (en) 1993-07-30 1996-11-26 Apple Computer, Inc. Rendering of 3D scenes on a display using hierarchical z-buffer visibility
GB9316214D0 (en) * 1993-08-05 1993-09-22 Philips Electronics Uk Ltd Image processing
JPH07182537A (ja) 1993-12-21 1995-07-21 Toshiba Corp 図形描画装置および図形描画方法
US5699497A (en) 1994-02-17 1997-12-16 Evans & Sutherland Computer Corporation Rendering global macro texture, for producing a dynamic image, as on computer generated terrain, seen from a moving viewpoint
US5778245A (en) 1994-03-01 1998-07-07 Intel Corporation Method and apparatus for dynamic allocation of multiple buffers in a processor
US5623628A (en) 1994-03-02 1997-04-22 Intel Corporation Computer system and method for maintaining memory consistency in a pipelined, non-blocking caching bus request queue
US5546194A (en) * 1994-03-23 1996-08-13 Videofaxx, Inc. Method and apparatus for converting a video image format to a group III fax format
US5596686A (en) * 1994-04-21 1997-01-21 Silicon Engines, Inc. Method and apparatus for simultaneous parallel query graphics rendering Z-coordinate buffer
US5544306A (en) 1994-05-03 1996-08-06 Sun Microsystems, Inc. Flexible dram access in a frame buffer memory and system
JPH0855239A (ja) * 1994-07-21 1996-02-27 Internatl Business Mach Corp <Ibm> グラフィカル・オブジェクトの可視性を判定するための方法および装置
US5572634A (en) 1994-10-26 1996-11-05 Silicon Engines, Inc. Method and apparatus for spatial simulation acceleration
JPH08127167A (ja) * 1994-11-01 1996-05-21 Arutetsuku Kk ロール紙終端検知装置及び方法
US5594854A (en) 1995-03-24 1997-01-14 3Dlabs Inc. Ltd. Graphics subsystem with coarse subpixel correction
US5798770A (en) 1995-03-24 1998-08-25 3Dlabs Inc. Ltd. Graphics rendering system with reconfigurable pipeline sequence
US5710876A (en) 1995-05-25 1998-01-20 Silicon Graphics, Inc. Computer graphics system for rendering images using full spectral illumination data
JPH08329276A (ja) 1995-06-01 1996-12-13 Ricoh Co Ltd 3次元グラフィックス処理装置
AU6600496A (en) * 1995-07-26 1997-02-26 Raycer, Incorporated Method and apparatus for span sorting rendering system
US5841447A (en) 1995-08-02 1998-11-24 Evans & Sutherland Computer Corporation System and method for improving pixel update performance
US5949428A (en) 1995-08-04 1999-09-07 Microsoft Corporation Method and apparatus for resolving pixel data in a graphics rendering system
US5990904A (en) 1995-08-04 1999-11-23 Microsoft Corporation Method and system for merging pixel fragments in a graphics rendering system
JP4540753B2 (ja) * 1995-08-04 2010-09-08 マイクロソフト コーポレーション グラフィックオブジェクトを画像チャンクにレンダリングして、画像層を表示画像に組み合わせる方法及びシステム
US5977977A (en) 1995-08-04 1999-11-02 Microsoft Corporation Method and system for multi-pass rendering
US5864342A (en) 1995-08-04 1999-01-26 Microsoft Corporation Method and system for rendering graphical objects to image chunks
US5767859A (en) 1995-09-28 1998-06-16 Hewlett-Packard Company Method and apparatus for clipping non-planar polygons
US5854631A (en) * 1995-11-22 1998-12-29 Silicon Graphics, Inc. System and method for merging pixel fragments based on depth range values
JP2882465B2 (ja) * 1995-12-25 1999-04-12 日本電気株式会社 画像生成方法およびその装置
US5574836A (en) 1996-01-22 1996-11-12 Broemmelsiek; Raymond M. Interactive display apparatus and method with viewer position compensation
US5850225A (en) 1996-01-24 1998-12-15 Evans & Sutherland Computer Corp. Image mapping system and process using panel shear transforms
US6046746A (en) * 1996-07-01 2000-04-04 Sun Microsystems, Inc. Method and apparatus implementing high resolution rendition of Z-buffered primitives
US5751291A (en) * 1996-07-26 1998-05-12 Hewlett-Packard Company System and method for accelerated occlusion culling
US5767589A (en) 1996-09-03 1998-06-16 Maximum Products Inc. Lighting control circuit for vehicle brake light/tail light/indicator light assembly
US5860158A (en) 1996-11-15 1999-01-12 Samsung Electronics Company, Ltd. Cache control unit with a cache request transaction-oriented protocol
US6167486A (en) 1996-11-18 2000-12-26 Nec Electronics, Inc. Parallel access virtual channel memory system with cacheable channels
US5936629A (en) 1996-11-20 1999-08-10 International Business Machines Corporation Accelerated single source 3D lighting mechanism
US6111582A (en) * 1996-12-20 2000-08-29 Jenkins; Barry L. System and method of image generation and encoding using primitive reprojection
US6697063B1 (en) * 1997-01-03 2004-02-24 Nvidia U.S. Investment Company Rendering pipeline
US5852451A (en) 1997-01-09 1998-12-22 S3 Incorporation Pixel reordering for improved texture mapping
US5880736A (en) 1997-02-28 1999-03-09 Silicon Graphics, Inc. Method system and computer program product for shading
US5949424A (en) * 1997-02-28 1999-09-07 Silicon Graphics, Inc. Method, system, and computer program product for bump mapping in tangent space
US6259452B1 (en) 1997-04-14 2001-07-10 Massachusetts Institute Of Technology Image drawing system and method with real-time occlusion culling
US6084591A (en) * 1997-04-29 2000-07-04 Ati Technologies, Inc. Method and apparatus for deferred video rendering
US6002412A (en) 1997-05-30 1999-12-14 Hewlett-Packard Co. Increased performance of graphics memory using page sorting fifos
US5889997A (en) 1997-05-30 1999-03-30 Hewlett-Packard Company Assembler system and method for a geometry accelerator
US5920326A (en) 1997-05-30 1999-07-06 Hewlett Packard Company Caching and coherency control of multiple geometry accelerators in a computer graphics system
US6118452A (en) 1997-08-05 2000-09-12 Hewlett-Packard Company Fragment visibility pretest system and methodology for improved performance of a graphics system
US6002410A (en) 1997-08-25 1999-12-14 Chromatic Research, Inc. Reconfigurable texture cache
US6128000A (en) 1997-10-15 2000-10-03 Compaq Computer Corporation Full-scene antialiasing using improved supersampling techniques
US6204859B1 (en) 1997-10-15 2001-03-20 Digital Equipment Corporation Method and apparatus for compositing colors of images with memory constraints for storing pixel data
JPH11161819A (ja) * 1997-11-27 1999-06-18 Sega Enterp Ltd 画像処理装置、画像処理方法、及び画像処理プログラムを記録した記録媒体
US6201540B1 (en) * 1998-01-07 2001-03-13 Microsoft Corporation Graphical interface components for in-dash automotive accessories
US6259460B1 (en) 1998-03-26 2001-07-10 Silicon Graphics, Inc. Method for efficient handling of texture cache misses by recirculation
US6246415B1 (en) 1998-04-30 2001-06-12 Silicon Graphics, Inc. Method and apparatus for culling polygons
US6243744B1 (en) * 1998-05-26 2001-06-05 Compaq Computer Corporation Computer network cluster generation indicator
US6650327B1 (en) * 1998-06-16 2003-11-18 Silicon Graphics, Inc. Display system having floating point rasterization and floating point framebuffering
US6216004B1 (en) * 1998-06-23 2001-04-10 Qualcomm Incorporated Cellular communication system with common channel soft handoff and associated method
US6263493B1 (en) * 1998-07-08 2001-07-17 International Business Machines Corporation Method and system for controlling the generation of program statements
WO2000011607A1 (en) * 1998-08-20 2000-03-02 Apple Computer, Inc. Deferred shading graphics pipeline processor
US6771264B1 (en) * 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
US6577317B1 (en) * 1998-08-20 2003-06-10 Apple Computer, Inc. Apparatus and method for geometry operations in a 3D-graphics pipeline
US6275235B1 (en) * 1998-12-21 2001-08-14 Silicon Graphics, Inc. High precision texture wrapping method and device
US6228730B1 (en) * 1999-04-28 2001-05-08 United Microelectronics Corp. Method of fabricating field effect transistor

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100853912B1 (ko) * 2002-06-13 2008-08-25 아나로그 디바이시즈 인코포레이티드 초기 메모리에 저장된 화상 데이타를 처리하는 방법, 컴퓨터 판독가능 기록매체 및 장치
US7161603B2 (en) 2003-04-28 2007-01-09 Kabushiki Kaisha Toshiba Image rendering device and image rendering method
KR100887012B1 (ko) * 2004-09-13 2009-03-04 엔비디아 코포레이션 그래픽 처리 서브시스템 및 픽셀 단편에 대해 적어도하나의 값을 결정하기 위한 방법
KR100922780B1 (ko) * 2004-09-22 2009-10-21 콸콤 인코포레이티드 그래픽 프로세서를 위한 효율적인 인터페이스 및 어셈블러
KR100890702B1 (ko) * 2006-05-12 2009-03-27 엔비디아 코포레이션 그래픽 프로세서의 다중 디스플레이 헤드를 이용한안티앨리어싱
US8041903B2 (en) 2008-10-31 2011-10-18 Samsung Electronics Co., Ltd. Processor and method for controlling memory
KR101451966B1 (ko) * 2013-06-17 2014-10-22 (주)가비아 모바일용 영상 렌더링 제공 시스템 및 방법
KR20170095815A (ko) * 2014-12-11 2017-08-23 인텔 코포레이션 포지션 온리 파이프라인에서의 완화된 소팅

Also Published As

Publication number Publication date
JP3657519B2 (ja) 2005-06-08
AU5779799A (en) 2000-06-05
WO2000011613A3 (en) 2000-06-29
WO2000011605A3 (en) 2000-06-22
JP2002526842A (ja) 2002-08-20
US6597363B1 (en) 2003-07-22
WO2000011614A2 (en) 2000-03-02
WO2000030040A9 (en) 2001-10-18
US6614444B1 (en) 2003-09-02
AU5782599A (en) 2000-03-14
JP3657518B2 (ja) 2005-06-08
AU5687599A (en) 2000-03-14
US20040130552A1 (en) 2004-07-08
JP2003515798A (ja) 2003-05-07
US6771264B1 (en) 2004-08-03
WO2000011613A2 (en) 2000-03-02
EP1138023A4 (en) 2005-09-07
AU5687899A (en) 2000-04-17
WO2000011605B1 (en) 2001-04-12
KR100478767B1 (ko) 2005-03-24
WO2000019377A1 (en) 2000-04-06
WO2000011613A9 (en) 2000-08-03
WO2000011614B1 (en) 2000-07-27
WO2000030040A1 (en) 2000-05-25
WO2000011604A3 (en) 2000-06-02
AU5576599A (en) 2000-03-14
WO2000019377B1 (en) 2000-06-08
KR20010085426A (ko) 2001-09-07
AU5690499A (en) 2000-03-14
US6717576B1 (en) 2004-04-06
US7167181B2 (en) 2007-01-23
JP2004272928A (ja) 2004-09-30
WO2000011604B1 (en) 2000-07-20
EP1105844A1 (en) 2001-06-13
WO2000011605A2 (en) 2000-03-02
EP1138023A1 (en) 2001-10-04
JP4516350B2 (ja) 2010-08-04
WO2000011605A9 (en) 2001-06-21
KR100485241B1 (ko) 2005-04-27
WO2000011614A3 (en) 2000-06-15
WO2000011604A2 (en) 2000-03-02

Similar Documents

Publication Publication Date Title
KR100478767B1 (ko) 그래픽 렌더링 방법, 컴퓨터 그래픽 파이프라인용 상태 감시 장치 및 3차원 그래픽 렌더링용 계산처리 시스템
US6229553B1 (en) Deferred shading graphics pipeline processor
US5990904A (en) Method and system for merging pixel fragments in a graphics rendering system
US5949428A (en) Method and apparatus for resolving pixel data in a graphics rendering system
US6326964B1 (en) Method for sorting 3D object geometry among image chunks for rendering in a layered graphics rendering system
US5867166A (en) Method and system for generating images using Gsprites
US5870097A (en) Method and system for improving shadowing in a graphics rendering system
US10055883B2 (en) Frustum tests for sub-pixel shadows
EP1434171A2 (en) Method and system for texture mapping a source image to a destination image
US20030164823A1 (en) 3D graphics accelerator architecture

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130221

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20140220

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20150226

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20160218

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20170220

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20180219

Year of fee payment: 14

EXPY Expiration of term