KR20020031097A - 샘플 위치정보를 효율적으로 저장하는 수퍼-샘플되는샘플버퍼를 가지는 그래픽 시스템 - Google Patents

샘플 위치정보를 효율적으로 저장하는 수퍼-샘플되는샘플버퍼를 가지는 그래픽 시스템 Download PDF

Info

Publication number
KR20020031097A
KR20020031097A KR1020017009656A KR20017009656A KR20020031097A KR 20020031097 A KR20020031097 A KR 20020031097A KR 1020017009656 A KR1020017009656 A KR 1020017009656A KR 20017009656 A KR20017009656 A KR 20017009656A KR 20020031097 A KR20020031097 A KR 20020031097A
Authority
KR
South Korea
Prior art keywords
sample
pixel
memory
samples
buffer
Prior art date
Application number
KR1020017009656A
Other languages
English (en)
Inventor
미카엘 에프. 디링
Original Assignee
케네쓰 올센
선 마이크로시스템즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/251,453 external-priority patent/US6424343B1/en
Priority claimed from US09/413,106 external-priority patent/US6483504B1/en
Application filed by 케네쓰 올센, 선 마이크로시스템즈, 인코포레이티드 filed Critical 케네쓰 올센
Publication of KR20020031097A publication Critical patent/KR20020031097A/ko

Links

Landscapes

  • Image Generation (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

컴퓨터 그래픽 시스템(112)은 샘플을 샘플버퍼로 렌더링하는 그래픽 프로세서(352)와, 디스플레이 장치를 리프레쉬하기 위해 샘플버퍼에서 샘플을 필터링하는 픽셀-연산유닛(360)을 이용한다. 샘플은 다양한 샘플 위치도해를 이용하여 계산될 수 있는 위치정보와 연관된다. 픽셀-연산유닛은, 적어도 특정 출력픽셀에 특정 샘플이 어느 정도 기여하는가를 렌더링 및 결정하기 위해 위치정보를 사용한다. 위치정보는 하나 이상의 오프셋 값(예컨대, x 및 y 오프셋)을 포함할 수 있고, 미리 규정된 위치(즉, 미리 결정된 픽셀 중심좌표 또는 빈(bin) 좌표)와 관련되어 지정될 수 있다. 샘플버퍼는 빈 순서도해에 따라 샘플을 저장할 수 있고, 픽셀-연산유닛은 샘플에 대한 위치정보를 결정하기 위해 검색 테이블(354)에 색인을 넣는데 빈 안의 샘플 장소를 사용할 수 있다.

Description

샘플 위치정보를 효율적으로 저장하는 수퍼-샘플되는 샘플버퍼를 가지는 그래픽 시스템{GRAPHICS SYSTEM HAVING A SUPER-SAMPLED SAMPLE BUFFER WITH EFFICIENT STORAGE OF SAMPLE POSITION INFORMATION}
컴퓨터 시스템은 컴퓨터 스크린 또는 디스플레이 장치에 시각적 출력을 하기 위하여 전형적으로 그래픽 시스템에 의존한다. 초기의 그래픽 시스템은 프로세서가 출력으로 만들어내는 것을 취하고 그것을 스크린에 나타내는 것에만 책임이 있었다. 본질적으로, 그것들은 단순한 중계기 또는 인터페이스로서 작동했다. 그러나, 현대의 그래픽 시스템은 대단한 처리 능력을 가진 그래픽 프로세서를 포함한다. 그것은 단순한 중계기라기보다는 보조프로세서로서 작동한다. 이러한 변화는 최근 디스플레이 장치로 보내어지는 데이터의 복잡성과 양의 증가에 기인한다. 예를 들어, 현대의 컴퓨터 디스플레이는 더 많은 픽셀과 더 훌륭한 색 깊이를 가지고 있으며 초기 모델보다 더 빠른 리프레쉬(refresh) 속도로 더욱 복잡한 화상을 표현할 수 있다. 마찬가지로, 표현되는 이미지는 더욱 복잡하며 앤티-앨리어스(anti-aliasing) 및 택스쳐 매핑(texture mapping)과 같은 진보된 기술을 포함할 수 있다.
그 결과, 그래픽 시스템에서의 상당한 처리 능력이 없으면, CPU는 그래픽 계산을 수행하는데 엄청난 시간을 소비하게 될 것이다. 이는 컴퓨터 시스템으로부터 프로그램 실행과 관련한 다른 작업을 실행하는 데 필요한 처리 능력을 빼앗아 전체적인 시스템 성능을 크게 감소시킨다. 그러나, 강력한 그래픽 시스템에 있어서는, CPU가 스크린 상에 박스를 그리도록 지시 받으면, CPU는 각 픽셀의 위치 및 컬러를 계산하지 않아도 된다. 그 대신에, 그 CPU는 "이 좌표에 박스를 그려라"고 비디오 카드에 요청을 할 수 있다. 그러면, 그래픽 시스템이 박스를 그려서, 프로세서가 자유로이 다른 작업을 수행할 수 있도록 한다.
일반적으로, 컴퓨터 내의 그래픽 시스템(단순히 그래픽 시스템으로도 호칭됨)은 성능 레벨을 증폭시키는 자체 프로세서를 포함하는 형태의 비디오 어댑터이다. 이러한 프로세서들은 그래픽 변환을 계산하기 위해 특수화되어 있으므로, 컴퓨터 시스템에서 사용되는 일반적인 목적의 CPU보다도 양호한 결과를 성취하는 경향이 있다. 더욱이, 그것들은 그래픽 시스템이 그래픽 계산을 다루는 동안 CPU가 자유로이 다른 명령들을 수행할 수 있도록 해준다. 그래픽 애플리케이션의 인기와 특히 멀티미디어 애플리케이션은 고성능 그래픽 시스템을 공통된 특성의 컴퓨터 시스템으로 만들어 왔다. 대부분의 컴퓨터 제조자는 이제그들의 시스템에 고성능 그래픽 시스템을 포함시킨다.
그래픽 시스템은 제한된 기능만을 전형적으로 수행하기 때문에, 그것들은 주문대로 맞추어질 수 있고 따라서 컴퓨터의 일반적 목적의 중앙 프로세서보다 그래픽에 있어서 훨씬 효율적일 수 있다. 초기의 그래픽 시스템이 2차원(2D) 그래픽을 수행하는데 국한되었던 반면에, 그들의 기능성은 3차원(3D) 와이어-프레임 그래픽, 3D 입체를 지원할 정도로 증가하였고, 이제는 진보된 세이딩(shading), 포깅(fogging), 알파-혼합(alpha-blending), 그리고 거울같은 하이라이트(specular highlighting) 등의 특별 효과 및 텍스쳐(texture)를 가진 3차원(3D) 그래픽을 위한 지원을 포함한다.
3D 그래픽 시스템의 처리능력은 가파른 속도로 진보해 왔다. 몇 년 전에, 간단한 물체의 세이딩처리된 이미지는 초당 수 프레임으로만 렌더링(rendering)할 수 있었던 반면에, 오늘날의 시스템은 60Hz 또는 그 이상의 주파수에서 복잡한 물체를 렌더링하는 것을 지원한다. 이러한 속도의 증가에 있어서, 그리 멀지 않은 미래에, 그래픽 시스템은 문언적으로, 단일의 인간의 시각 시스템이 인식할 수 있는 것 보다 더욱 많은 픽셀을 만들 수 있을 것이다. 이러한 특별한 능력은 다중-뷰어 환경에서 이용될 수 있는 반면에, 보다 일반적인 기초적인 싱글-뷰어 환경에서 낭비될 수도 있다. 따라서, 인간의 해상도 조직의 다양한 성질과 조화할 능력(즉, 필요한 품질 또는 가장 인지 잘되는 품질을 가지는 능력)이 있는 그래픽 시스템이 요망된다.
픽셀의 수가 그래픽 시스템 성능을 결정하는 중요한 요소이지만, 그만큼 중요한 다른 요소로 이미지의 품질이 있다. 예를 들어, 이미지의 가장자리가 너무 날카롭거나 들쭉날쭉("앨리어스(aliased)하다"라고도 한다)하면 높은 픽셀 밀도의 이미지라도 여전히 비현실적으로 보일 수 있다. 이러한 문제를 극복하는 잘 알려진 기술로는 앤티-앨리어싱(anti-aliasing)이 있다. 앤티-앨리어싱은 그래픽 요소의 경계를 따라 픽셀에 세이딩(shading)을 줌에 의해 물체의 가장자리를 부드럽게 하는 것을 포함한다. 보다 상세하게는, 앤티-앨리어싱은 고주파수 성분이 시각적 아티팩트(artifacts)를 교란하기 전에, 이미지로부터 고주파수 성분을 제거하는 것을 수반한다. 예를 들어, 앤티-앨리어싱은 특정 픽셀이 중간값을 가지도록 하여 (예컨대, 어두운 배경과 겹쳐진 밝은 물체의 그림자의 둘레에서) 이미지내의 높은 콘트라스트(contrast)의 가장자리(edge)를 부드럽거나 매끄럽게 할 수 있다.
컴퓨터 이미지의 현실성을 증가시키는데 사용되는 또 다른 시각효과로는 알파 혼합(alpha blending)이 있다. 알파 혼합은 물체의 투명도를 조절하는 기술로서, 물이나 유리 같은 투명한 표면의 현실적인 렌더링이 가능하도록 한다. 현실성을 더욱 증가시키기 위해 사용되는 또 다른 효과로는 포깅(fogging)이 있다. 포깅은 물체가 보는 사람으로부터 멀어져 가는 것처럼 흐릿하게 한다. 단순한 포깅(fogging)은 알파 혼합의 하나의 특별한 경우로서, 거리에 따라 알파도(degree of alpha)가 변화하여 물체가 관찰자로부터 멀어져 감에 따라 안개속으로 사라지게 보이도록 한다. 이 단순한 포깅은 "뎁쓰 큐잉(depth cueing)" 또는 분위기 희석(atmospheric attenuation)으로도 불리우며, 즉 물체의 콘트라스트(contrast)를 낮추어 물체가 후퇴함에 따라 눈에 덜 띄게 보이도록 하는 것이다. 더욱 복잡한 유형의 포깅은, 투명 레벨과 관찰자로부터의 거리간의 더욱 복잡한 관계를 제공하기 위해, 간단한 선형 함수를 넘어선다. 본 기술분야의 소프트웨어 시스템의 현재 상태는, 밑에 깔려있는 안개에 향상된 현실성을 제공하기 위한 분위기의 모델을활용함으로써 더욱 진보하고 있다.
위에서 열거된 기술이 컴퓨터 그래픽 이미지의 모습을 극적으로 향상시키는 반면에, 그것들은 또한 어떤 한계를 가지고 있다. 특히, 그것들은 자체적인 수차(abberation)를 나타낼 수 있고, 디스플레이 장치에서 표현되는 픽셀 밀도에 의해 전형적으로 제한된다.
그 결과, 렌더링되는 픽셀의 수 뿐 아니라 렌더링되는 이미지의 품질을 향상시키기 위하여, 향상된 성능 레벨을 활용할 수 있는 그래픽 시스템이 요망된다. 더욱이, 안티-앨리어싱(anti-aliasing)과 같이 그래픽 효과를 증진시키는 처리 능력을 향상시킬 수 있는 그래픽 시스템이 바람직하다.
종래 기술의 그래픽 시스템은 일반적으로 이 목적들에 미달되어 왔다. 종래 기술의 그래픽 시스템은 디스플레이상의 픽셀/비디오를 리프레쉬(refresh)하기 위한 종래의 프레임 버퍼를 사용한다. 프레임 버퍼는 디스플레이상에서 각각의 행과 열에 정확히 일치하는 행과 열의 픽셀을 저장한다. 종래 기술의 그래픽 시스템은 2D 및/또는 3D 이미지나 물체를 픽셀 형태로 프레임 버퍼로 렌더(render)하고, 그리고 나서 디스플레이를 리프레쉬하기 위하여 스크린 리프레쉬 동안에 프레임 버퍼로부터 픽셀을 읽는다. 따라서, 프레임 버퍼는 디스플레이로 제공되는 출력 픽셀을 저장한다. 프레임 버퍼가 업데이트됨과 동시에 스크린을 리프레쉬함에 따라 발생될 수 있는 시각적 아티팩트(artifact)를 줄이기 위해, 대부분의 그래픽 시스템의 프레임 버퍼는 2중 버퍼로 되어 있다.
보다 현실적인 이미지를 얻기 위하여, 몇 개의 종래 기술의 그래픽 시스템은픽셀당 두 개 이상의 샘플(sample)을 생성하는 것에 의해 진보되어 왔다. 여기서 이용되는 바와 같이, "샘플(sample)"이라는 용어는 물체 또는 이미지 상의 특정한 위치의 컬러, 색 깊이(z), 투명도 및 잠재적으로 다른 정보 중 하나 이상을 암시하는 계산된 컬러 정보(color information)를 말한다. 예를 들어, 하나의 샘플은 다음과 같은 성분값을 포함할 수 있다: 빨간색의 값, 녹색의 값, 파란색의 값, z 값, (예컨대, 샘플의 투명도를 나타내는) 알파값. 하나의 샘플은 또한, 예컨대, z-깊이 값, 흐릿함의 값, 강도의 값, 상대적 밝기 정보와 같은 다른 정보를 포함할 수도 있으며, 샘플이 컬러 정보라기 보다는 부분적 또는 완전한 제어 정보로 구성된 것이라는 지시(즉, "샘플 제어 정보")를 포함할 수 있다. 픽셀보다 더 많은 샘플을 계산함에 의해(즉, 수퍼-샘플링(super-sampling)), 디스플레이 장치상에서 표현될 수 있는 것보다 더욱 상세한 이미지가 계산될 수 있다. 예를 들어, 그래픽 시스템은 디스플레이 장치로 출력될 수 있는 각 픽셀을 위해 4개의 샘플을 계산할 수 있다. 그 샘플들이 계산된 후에, 그것들은 프레임 버퍼에 저장되는 픽셀을 형성하기 위해 합성되거나 여과되고, 디스플레이 장치로 이송된다. 이러한 방법으로 형성된 픽셀을 이용하면 더욱 현실적인 최종 이미지를 만들 수 있는데, 이는 이미지 내에서 지나치게 갑작스런 변화라도 여과 프로세스(filtering process)에 의해 부드럽게 될 수 있기 때문이다.
이 종래 기술의 수퍼-샘플링 시스템들은 전형적으로 디스플레이 상의 픽셀 위치의 수보다도 훨씬 많은 수의 샘플을 생성한다. 이 종래 기술의 시스템들은 전형적으로 샘플을 계산하여 렌더 버퍼(render buffer)에 저장하는 렌더링 프로세서를 가지고 있다. 그러면, 필터링 하드웨어는 그 렌더 버퍼로부터 그 샘플들을 읽고, 그 샘플들을 여과하여 픽셀을 만들고, 그리고 나서 그 픽셀들을 전통적인 프레임 버퍼에 저장한다. 전통적인 프레임 버퍼는 전형적으로 2중-버퍼이며, 그중 한쪽이 필터링 하드웨어에 의해 업데이트되는 동안 다른 한쪽은 디스플레이 장치를 리프레쉬(refresh)하는데 이용된다. 일단 샘플이 여과되면, 그 결과인 픽셀은 디스플레이 장치를 리프레쉬하는데 사용되는 전통적인 프레임 버퍼에 저장된다. 그러나, 이 시스템들은 일반적으로 전통적인 프레임 버퍼에 의해 부과되는 한계와, 렌더 버퍼 및 여과로 인한 추가적인 잠복성(latency)에 의해 부과되는 한계를 겪어왔다. 그러므로, 전통적인 프레임 버퍼의 결점을 피하는 동시에 픽셀 수퍼-샘플링의 이점을 포함하는 진보된 그래픽 시스템이 요망된다.
수퍼-샘플되는 샘플버퍼와 샘플-픽셀 연산유닛을 가진 시스템에 있어서, 샘플은 계산되어 샘플버퍼에 위치하게 또는 놓여지도록 저장된다. 각각의 샘플을 위해 저장된 샘플 위치정보는, 샘플버퍼에서 각 샘플의 위치 또는 장소를 나타낸다. 이러한 샘플 위치정보는 샘플이 샘플버퍼에 렌더링될 때 생성되고, 필터링을 위한 샘플 선택시 샘플-픽셀 연산유닛에 의해 사용된다. 다수의 샘플이 샘플버퍼에 저장되기 때문에, 샘플의 위치정보를 샘플버퍼에 더 효과적으로 저장하기 위한 향상된 기술이 요망된다.
본 발명은 일반적으로 컴퓨터 그래픽 분야에 관한 것으로서, 특히 고성능 그래픽 시스템에 관한 것이다.
본 발명의 상기 및 그 이외의 목적, 특징 및 이점은 첨부된 도면과 결합되는 다음의 상세한 설명을 참조하여 충분히 이해될 수 있을 것이다;
도 1은 그래픽 시스템의 일 실시예를 포함하는 컴퓨터 시스템의 일 실시예를 나타내는 도면;
도 1A는 적어도 하나의 서버 컴퓨터와 하나 이상의 클라이언트 컴퓨터를 포함하고, 클라이언트 컴퓨터는 그래픽 시스템의 일 실시예를 포함하는 컴퓨터 네트워크를 나타내는 도면;
도 2는 도 1의 컴퓨터 시스템의 간단한 블록도;
도 3은 도 1의 그래픽 시스템의 일 실시예의 상세를 나타내는 블록도;
도 4는 종래의 픽셀 연산을 나타내는 도면;
도 5A는 수퍼-샘플링의 일 실시예를 나타내는 도면;
도 5B는 샘플의 랜덤 분포를 나타내는 도면;
도 6A는 수퍼-샘플되는 샘플버퍼와 단일 샘플 위치 메모리를 가지는 그래픽시스템의 일 실시예을 나타내는 도면;
도 6B는 수퍼-샘플되는 샘플버퍼와 이중 버퍼된 샘플 위치 메모리를 가지는 그래픽 시스템의 다른 실시예을 나타내는 도면;
도 7A는 수퍼-샘플되는 샘플버퍼를 가지고, 샘플 위치정보가 샘플버퍼에 저장되는 그래픽 시스템의 일 실시예을 나타내는 도면;
도 7B는 수퍼-샘플되는 샘플버퍼를 가지고, 기준 오프셋이 별도의 단일 위치 메모리에 저장되는, 샘플 버퍼에 샘플 위치정보 태그가 저장되는 그래픽 시스템의 다른 실시예을 나타내는 도면;
도 8은 샘플 위치도해의 3가지 상이한 실시예의 상세를 나타내는 도면;
도 9는 샘플 위치도해의 일 실시예의 상세를 나타내는 도면;
도 10은 샘플 위치도해의 또 다른 실시예의 상세를 나타낸 도면;
도 11은 샘플을 픽셀로 병렬로 변환하는 방법의 상세를 나타내는 도면;
도 11A는 도 11에서 실시예의 상세를 나타내는 도면;
도 11B는 경계 조건을 처리하기 위한 방법의 일 실시예의 상세를 나타내는 도면;
도 12는 샘플을 수퍼-샘플되는 샘플버퍼로 드로잉(drawing)하기 위한 방법의 일 실시예를 나타내는 플로우차트;
도 12A는 삼각형 꼭지점을 코딩(coding)하기 위한 일 실시예를 나타내는 도면;
도 13은 샘플로부터 픽셀을 계산하기 위한 방법의 일 실시예를 나타내는 도면;
도 14는 샘플의 예제세트에 대한 픽셀 콘볼루션(convolution)의 일 실시예의 상세를 나타내는 도면이다.
본 발명은 여러가지 수정 및 선택적인 형태가 가능하고, 그것에 관한 구체적인 실시예가 도면에서 예로서 도시되어 있으며, 여기서 상세히 설명될 것이다. 그러나, 도면 및 상세한 설명에 개시된 특정 형태에 본 발명이 한정되는 것은 아니고, 반대로 본 발명은 첨부된 청구항에 의해 규정된 것처럼, 본 발명의 정신과 범위를 이탈하지 않는 모든 수정, 등가 및 대안을 포함한다.
본 발명은 디스플레이 장치를 리프레쉬하기 위해 수퍼-샘플되는 샘플버퍼와프로그램될 수 있는 샘플-픽셀 연산유닛을 이용하는 컴퓨터 그래픽 시스템을 포함하고, 그래픽 시스템은 샘플의 위치정보를 샘플버퍼에 향상되게 저장한다. 일 실시예에 있어서, 그래픽 시스템은 그래픽 프로세서, 수퍼-샘플되는 샘플버퍼 및 샘플-픽셀 연산유닛을 가질수 있다.
그래픽 프로세서는, 복수의 샘플을 생성하여 샘플버퍼에 저장한다. 그래픽 프로세서는 디스플레이 장치상에서 픽셀 배치의 최소 서브세트(subset)에 대해 하나 이상의 샘플을 바람직하게 생성하여 저장한다. 그러므로, 샘플버퍼는 일부 실시예에 있어서, 디스플레이 장치상에서 픽셀보다 더 많은 갯수의 샘플을 저장하는 수퍼 샘플버퍼이다. 다른 실시예에 있어서, 샘플의 총 갯수는 디스플레이 장치상에서 픽셀 위치의 총 갯수와 근접, 동등 또는 더 적을 수 있지만, 샘플은 어떤 영역에서 보다 더 밀집되어 위치되고, 다른 영역에서 보다 덜 밀집되어 위치될 수 있다.
샘플-픽셀 연산유닛은 수퍼-샘플되는 샘플버퍼에서 샘플을 읽어들여, 샘플을 각 출력픽셀로 필터링 또는 컨벌브하도록 구성될 수 있고, 그 때 출력픽셀은 디스플레이 장치를 리프레쉬하기 위해 제공된다. 샘플-픽셀 연산유닛은 출력픽셀을 생성하기 위해 하나 이상의 샘플을 선택하여 필터링한다. 샘플-픽셀 연산유닛에 의해 선택, 및/또는 필터링되는 샘플의 갯수는 일반적으로 하나 이상인 것에 주의하라.
샘플-픽셀 연산유닛은, 수퍼-샘플되는 샘플버퍼에서 샘플을 액세스하고, 필터링 동작을 실행하여 생성된 출력픽셀을, 바람직하게 실시간(real time)으로 직접 디스플레이 장치에 제공할 수 있다. 그래픽 시스템은 종래의 프레임 버퍼없이 동작될 수 있다. 즉, 그래픽 시스템은 디스플레이 장치상에서 리프레쉬되는 실제픽셀값을 저장하는 종래의 프레임 버퍼를 이용하지 않을 수 있다. 그러므로, 샘플-픽셀 연산유닛은 실시간(real-time) 기준 또는 온 더 플라이(on-the-fly) 기준으로 각각의 스크린 리프레쉬를 위해 각각의 픽셀을 계산할 수 있다.
그래픽 프로세서는, 샘플버퍼의 계산된 위치 또는 장소로 샘플을 샘플버퍼에 렌더링한다. 샘플 위치는 그리드 기준 또는 확률적인 위치생성과 같은 다양한 샘플 위치도해를 이용하여 계산될 수 있다. 그래픽 프로세서는, 샘플을 샘플버퍼로 렌더링하는 동안 위치를 계산하고, 이들 계산된 위치를 이용하기 위해 동작될 수 있고, 또한 각각의 샘플에 대한 계산된 위치정보를 저장할 수도 있다. 선택적으로, 그래픽 프로세서는 미리 계산된 위치정보를 사용할 수 있다. 위치정보는 샘플버퍼에서 각 샘플의 위치 또는 장소를 나타낸다. 위치정보는 프레임 기준(per frame basis)마다 또는 빈 기준(per bin basis)마다 프로그램 가능하다. 샘플-픽셀 연산유닛은 출력픽셀을 생성하는 동안 여과를 위한 샘플을 선택하기 위해 위치정보를 사용한다.
일 실시예에 있어서, 각각의 샘플에 대한, 위치정보는 x 오프셋 및 y 오프셋과 같은 하나 이상의 오프셋 값을 포함하며, 오프셋 값은 샘플버퍼에서 미리 규정된 위치에 관련되어 있다. 하나 이상의 오프셋 값은, 미리 결정된 픽셀 중심좌표 또는 미리 결정된 빈 좌표와 같이 샘플버퍼에서 미리 규정된 그리드에 관련된 오프셋일 수 있다. 예컨대, 샘플은 빈(bin)내의 샘플버퍼에 저장될 수 있고, 각각의 빈은 각 빈내에서 샘플이 놓여진 샘플버퍼에서의 지역을 규정하고, 하나 이상의 오프셋 값은 빈과 관련된 오프셋 값을 포함한다. 그러므로, 샘플-픽셀 연산유닛은 샘플과 연관된 하나 이상의 오프셋 값과 샘플의 빈의 위치를 이용하여 각 빈내의 각 샘플의 위치를 결정할 수 있다.
위치정보는 샘플과 함께 샘플버퍼에 저장되거나 또는 그래픽 프로세서에 결합된 별도의 샘플위치 메모리에 저장될 수 있다. 일 실시예에 있어서, 샘플은 빈내의 샘플버퍼에 저장되고, 샘플은 빈 순서(bin ordering)에 따라 샘플버퍼에 저장되며, 빈 순서는 각 빈에서 샘플의 위치를 나타낸다. 즉, 샘플은 빈에서 각각의 상태적인 위치에 대응하는 순서로 샘플버퍼 메모리에 저장된다. 그러므로, 샘플버퍼 메모리에서 샘플의 빈 순서가 샘플의 위치 또는 오프셋을 의미하므로, 샘플 위치정보의 별도 저장이 불필요해질 수 있다. 빈 순서에 따라 각각의 샘플에 대한 오프셋과 같은, 위치정보를 저장하는 검색 테이블 메모리가 포함될 수 있다. 샘플-픽셀 연산유닛은, 샘플의 위치정보를 결정하기 위해 검색 테이블 메모리에 색인을 넣는 데에 있어, 빈에서 샘플의 빈 순서를 사용할 수 있다.
일 실시예에 있어서, 검색 테이블 메모리는 샘플버퍼에 저장된 샘플보다 적은 갯수의 오프셋 값을 저장한다. 예컨대, 검색 테이블 메모리는 샘플버퍼의 하나의 빈에만 대응하는 수많은 오프셋 값을 저장할 수 있고, 이들 오프셋 값은 샘플버퍼의 각각의 빈에서 재사용된다. 또한, 샘플-픽셀 연산유닛은 각각의 빈에서 샘플에 대해 상이한 오프셋 값을 얻기 위해 어드레스에서 비트를 조작할 수 있다.
그래픽 시스템은, 이중 버퍼로 된 샘플 위치 메모리, 즉, 각각의 샘플에 대한 위치정보를 저장하는데 각각 사용되는 제1 메모리 및 제2 메모리를 포함한다. 그래픽 프로세서는 샘플을 샘플버퍼로 렌더링하는 동안 위치정보를 액세스 및/또는저장하기 위해 제1 메모리를 사용하고, 동시에 샘플-픽셀 연산유닛은 출력픽셀을 생성하는 동안 제2 메모리를 사용할 수 있다. 그러므로, 제1 메모리는 현재 프레임에 대한 현재의 위치정보를 제2 메모리로 전송할 수 있다. 샘플-픽셀 연산유닛이 샘플의 현재 위치를 결정하기 위해 제2 메모리를 사용할 때, 동시에 그래픽 프로세서는 후속 프레임에 대한 위치정보를 제1 메모리에 저장한다. 그러므로, 샘플 위치 메모리는 본질적으로 이와 같은 방식으로 이중 버퍼링 된다.
컴퓨터 시스템-도 1
지금, 도 1에는, 3차원(3D) 그래픽 시스템을 포함하는 컴퓨터 시스템(80)의 일 실시예가 도시되어 있다. 3D 그래픽 시스템은 컴퓨터 시스템, 네트워크 PC, 인터넷 응용, HDTV 및 양방향 TV 시스템을 포함하는 TV, 개인 휴대단말기(PDA: personal digital assistants) 및 그 중에서도 2D 또는 3D 그래픽을 표시하는 다른 장치를 포함하는 다양한 시스템의 어느 것에도 포함될 수 있다.
도시된 바와 같이, 컴퓨터 시스템(80)은 시스템 유닛(82)과 시스템 유닛(82)에 연결된 비디오 모니터 또는 디스플레이 장치(84)를 포함한다. 디스플레이 장치(84)는 다양한 종류의 표시 모니터 또는 장치(예컨대, CRT, LCD 또는 가스 플라즈마 디스플레이 장치) 중의 어느 것일 수 있다. 키보드(86) 및/또는 마우스(88) 또는 다른 입력장치(즉, 트랙 볼, 디지타이저, 타블렛, 6도 자유(six-degree of freedom) 입력장치, 헤드 트래커(head tracker), 아이 트래커(eye tracker), 데이터 장갑(data glove), 바디 센서(body sensor) 등)을 포함하는 다양한 입력장치가 컴퓨터 시스템에 연결될 수 있다. 응용 소프트웨어는, 3D 그래픽 객체를 디스플레이 장치(84)상에 표시하기 위해 컴퓨터 시스템(80)에 의해 실행될 수 있다.
이하에 더 설명되는 바와 같이, 컴퓨터 시스템(80)에서의 3D 그래픽 시스템은, 디스플레이 장치(84)상에 표시되는 이미지의 품질 및 사실성을 향상하기 위해 프로그램 가능한 샘플-픽셀 연산유닛을 가지는 수퍼-샘플되는 샘플버퍼를 포함한다. 샘플-픽셀 연산유닛은 샘플버퍼의 샘플에 대응하는 픽셀을 생성하기 위해 필터 또는 컨벌브 파이프라인 또는 다른 하드웨어를 포함할 수 있다. 샘플-픽셀 연산유닛은 샘플버퍼에서 샘플을 얻고, 직접 디스플레이 장치상에 제공되는 픽셀을 생성하도록 동작될 수 있다. 샘플-픽셀 연산유닛은 "실시간(real time)" 또는 "온 더 플라이(on-the-fly)"방식으로 동작될 수 있다.
여기서 사용되는 용어 "필터(filter)" 및 "컨벌브(convolve)"는 교환 가능하게 사용되고, 픽셀을 생성하기 위해 하나 이상의 샘플을 수학적으로 처리하는 것을 말한다(예컨대, 평균화, 콘볼루션 기능 적용, 합산화, 필터링 기능 적용, 샘플의 가중화 및 그 처리, 랜덤 추출기능 등).
여기서 사용된 용어 "실시간(real time)"은 디스플레이 장치의 리프레쉬 속도 또는 그 근방에서 실행되는 기능을 말한다. "온 더 플라이(on-the-fly)"란 동작혼합(연속적인 동작으로 착각하게 하기 위해 화면이 얼마나 자주 변화되는가) 및 명멸 혼합(연속적으로 착각하게 하기 위해 광 강도가 얼마나 자주 변화되는가)을 위해 인간의 시각시스템의 인식능력, 근방 또는 그 이상을 의미한다. 이들 개념은 "Spatial Vision" by Russel L.De Valois and Karen K. De Valois, Oxford University Press, 1988의 책에 더 상세히 설명되어 있다.
그래픽 시스템은 계산된 위치에서 샘플을 샘플버퍼로 렌더링하기 위해 동작한다. 그래픽 시스템은 각각의 샘플에 대한 위치정보를 생성하여 저장하거나 또는 미리 계산된 위치정보를 이용할 수 있다. 본 발명의 일 실시예에 의하면, 각각의 샘플에 대한, 위치정보는 x 오프셋 및 y 오프셋과 같은 하나 이상의 오프셋 값을 포함하고, 오프셋 값은 샘플버퍼에서 미리 규정된 장소와 관련되어 있다. 하나 이상의 오프셋 값은 샘플버퍼에서 미리 결정된 픽셀 중심좌표 또는 빈 좌표와 같이 샘플버퍼에서 미리 규정된 그리드와 관련되어 있는 오프셋 일 수 있다.
컴퓨터 네트워크-도 1A
도 1에는, 적어도 하나의 서버 컴퓨터(502)와 하나 이상의 클라이언트 컴퓨터(506A-N)를 포함하는 컴퓨터 네트워크(500)가 도시되어 있다.(도 1A에 도시된 실시예에 있어서, 클라이언트 컴퓨터(506A-B)가 묘사되어 있다). 상술한 바와 같이, 각각 하나 이상의 그래픽 시스템(112)를 가지는 하나 이상의 클라이언트 시스템은 컴퓨터 시스템(80)과 유사하게 구성될 수 있다. 서버(502) 및 클라이언트(506)는 근거리 네트워크(LAN), 원거리 네트워크(WAN) 또는 인터넷 접속 등과 같은 다양한접속(504)을 통해 연결될 수 있다. 일 실시예에 있어서, 서버(502)는 3D 기하 데이터(압축된)를 하나 이상의 클라이언트(506)에 저장 및 전송할 수 있다. 클라이언트(506)는 압축된 3D 기하 데이터를 받고, 압축 해제하여(필요하다면), 기하 데이터를 렌더링한다. 그 때, 렌더링된 이미지는 클라이언트의 디스플레이 장치상에 표시된다. 클라이언트는 여기서 설명된 수퍼-샘플되는 샘플버퍼와 실시간 필터링 설명을 이용하여 기하 데이터를 렌더링하고, 이미지를 표시한다. 다른 실시예에 있어서, 압축된 3D 기하 데이터는 클라이언트 컴퓨터(506) 사이에서 전송될 수 있다.
컴퓨터 시스템 블록도-도 2
도 2에는, 도 1의 컴퓨터 시스템을 나타내는 간단한 블록도가 도시되어 있다. 또한, 도 2는 컴퓨터(506A, 506B 또는 502)도 나타낼 수 있다. 본 발명을 이해하는데 불필요한 컴퓨터 시스템의 요소는 편의상 도시되지 않았다. 도시된 바와 같이, 컴퓨터 시스템(80)은 고속 메모리 버스 또는 호스트 버스(104)로도 불리는 시스템 버스(104)에 연결된 중앙처리장치(CPU)(102)를 포함한다.
호스트 프로세서(102)는 종류가 다른 하나 이상의 프로세서, 즉 마이크로프로세서, 멀티프로세서 및 CPU를 포함할 수 있다. 시스템 메모리(106)는 랜덤 액세스 메모리(즉, 그 중에서도 스태틱 랜덤 액세스 메모리 또는 "SRAMs", 싱크로너스 다이나믹 랜덤 액세스 메모리 또는 "SDRAMs", 램버스 다이나믹 랜덤 액세스 메모리 또는 "RDRAMs")와 대용량 저장장치를 포함하는 메모리 서브시스템의 다른 종류의어떤 조합도 포함한다. 시스템 버스 또는 호스트 버스(104)는 하나 이상의 통신 또는 호스트 컴퓨터 버스(호스트 프로세서, CPUs 및 메모리 서브시스템 사이의 통신용)와 전용 서브시스템 버스를 포함할 수 있다.
본 발명에 의한 3D 그래픽 시스템 또는 그래픽 시스템(112)은, 고속 메모리 버스(104)에 연결된다. 3D 그래픽 시스템(112)은, 예컨대 크로스바 스위치 또는 다른 버스 접속논리에 의해 버스(104)에 연결될 수 있다. 다양한 다른 주변장치 또는 다른 버스가 고속 메모리 버스(104)에 접속될 수 있는 것으로 가정한다. 3D 그래픽 시스템은 컴퓨터 시스템(80)에서 하나 이상의 버스에 연결되거나 및/ 또는 다양한 종류의 버스에 연결될 수 있는 것에 주의한다. 또한, 3D 그래픽 시스템이 통신포트에 연결될 수 있고, 그것에 의해 외부 공급원, 즉 인터넷 또는 네트워크로부터 그래픽 데이터를 직접 받는다. 도면에 도시된 바와 같이, 디스플레이 장치(84)는 컴퓨터 시스템(80)에 포함되는 3D 그래픽 시스템(112)에 접속된다.
호스트 CPU(102)는 호스트 버스(104)에 걸쳐 프로그램된 입출력(I/O) 프로토콜에 따라 그래픽 시스템(112)에 대해 정보를 전송할 수 있다. 선택적으로, 그래픽 시스템(112)은 직접 메모리 액세스(DMA) 프로토콜에 따라 또는 지능형 버스 마스터링(mastering)을 통해 메모리 서브시스템(106)을 액세스 할 수 있다.
오픈 GL(Open GL) 또는 JAVA 3D와 같은 응용 프로그래밍 인터페이스(API)에 따르는 그래픽 응용 프로그램은 호스트 CPU(102)상에서 실행할 수 있고, 디스플레이 장치(84)상에 출력하는 다각형(polygon)과 같은 기하학적인 원형(primitive)(그래픽 데이터)를 규정하는 명령 및 데이터를 생성할 수 있다. 사용되는 특정 그래픽인터페이스로 규정된 바와 같이, 이들 원형은 정면 및 이면에 대한 별도의 컬러 속성을 가질 수 있다. 호스트 프로세서(102)는 이들 그래픽 데이터를 메모리 서브시스템(106)으로 전송할 수 있다. 이후, 호스트 프로세서(102)는 호스트 버스(104)를 거쳐 그래픽 데이터를 그래픽 시스템(112)으로 전송하도록 동작될 수 있다. 다른 실시예에 있어서, 그래픽 시스템(112)은 DMA 액세스 싸이클을 이용하여 호스트 버스(104)에 걸쳐 기하 데이터 어레이를 읽을 수 있다. 또 다른 실시예에 있어서, 그래픽 시스템(112)은 인텔에 의해 보급된 어드밴스드 그래픽 포트(AGP)와 같은 직접 포트를 통해 시스템 메모리(106)에 연결될 수 있다.
그래픽 시스템은 호스트 CPU(102) 및/또는 시스템 메모리(016), 다른 메모리를 포함하는 다양한 공급원의 어느 것 또는 네트워크, 즉 인터넷과 같은 외부 공급원, 또는 방송매체, 즉 TV, 또는 다른 공급원으로부터 그래픽 데이터를 받을 수 있다.
이하에 설명되는 바와 같이, 그래픽 시스템(112)은 마이크로코드 제어를 보다 효율적으로 할 수 있도록 구성될 수 있고, 호스트 프로세서(102)에 의해 생성된 다각형에 대응하는 입력 컬러 값을 처리하기 위해 성능이 향상되는 것으로 끝난다. 그래픽 시스템(112)이 컴퓨터 시스템(80)의 일부로서 묘사되었지만, 또 그래픽 시스템(112)은 (내장된 디스플레이 장치를 갖는) 스탠드 얼론 장치 또는 PDA, TV 또는 표시능력을 가지는 다른 모든 장치의 일부로도 구성될 수 있다. 또한, 그래픽 시스템(112)은 단일 칩 장치로서 또는 시스템 온 칩 또는 멀티 칩 모듈의 일부로도 구성될 수 있다.
그래픽 시스템-도 3
도 3은 그래픽 시스템(112)의 일 실시예의 상세를 나타내는 블록도이다. 도면에 도시된 바와 같이, 그래픽 시스템(112)은 하나 이상의 그래픽 프로세서(90), 하나 이상의 수퍼-샘플되는 샘플버퍼(162) 및 하나 이상의 샘플-픽셀 연산유닛(170A-D)을 포함한다. 또한, 그래픽 시스템(112)은 하나 이상의 디지털-아날로그 변환장치(DAC)(178A-B)도 포함한다. 그래픽 프로세서(90)는 어떤 적합한 종류의 고성능 프로세서(즉, 전용 그래픽 프로세서 또는 연산유닛, 멀티미디어 프로세서, DSP, 또는 범용 프로세서)일 수 있다. 일 실시예에 있어서, 그래픽 프로세서(0)는 하나 이상의 렌더링 유닛(150A-D)을 포함할 수 있다. 그러나, 도시된 실시예에 있어서, 그래픽 프로세서(90)는 하나 이상의 제어유닛(140), 하나 이상의 데이터 메모리(152a-D) 및 하나 이상의 스케쥴 유닛(154)도 포함한다. 샘플버퍼(162)는, 도면에 도시된 바와 같이 하나 이상의 샘플 메모리(160A-160N)를 포함할 수 있다.
A. 제어유닛
제어유닛(140)은, 그래픽 시스템(112)과 컴퓨터 시스템(80)과의 사이에서 데이터 전송을 제어함으로써 그래픽 시스템(112)과 컴퓨터 시스템(80) 사이의 인터페이스로서 동작한다. 2개 이상의 렌더링 유닛(150A-D)을 포함하는 그래픽 시스템(112)의 일 실시예에 있어서, 또 제어유닛(140)은 컴퓨터 시스템(80)에서 받은 데이터의 스트림을, 각 렌더링 유닛(150A-D)으로 보내지는 대응하는 갯수의 병렬 스트림으로 분할한다. 그래픽 데이터는, 압축된 형태로 컴퓨터 시스템(80)에서 받을 수 있다. 이것은 컴퓨터 시스템(80)과 그래픽 시스템(112) 사이의 대역폭 요건을 유리하게 축소할 수 있다. 일 실시예에 있어서, 제어유닛(140)은 데이터 스트림을 렌더링 유닛(150A-D)에 압축된 형태로 뿌리고, 보내도록 구성될 수 있다.
그래픽 데이터는 하나 이상의 그래픽 원형을 포함할 수 있다. 여기서 사용되는 바와 같이, 용어 그래픽 원형은 다각형, 패러메트릭 표면, 스플라인(spline), NURBS(non-uniform rational B-spline), 서브 디비젼 표면, 프랙탈(fractal), 볼륨 원형 및 파티클 시스템을 포함한다. 이들 그래픽 원형은 제목 "Computer Graphics: Principles and Practice" by James D. Foley, et al., published by Addison-Wesley Publishing Co., Inc, 1996의 2권의 책에 상세히 설명되어 있다. 간단하게 하기 위해, 상세한 설명 전체를 통해 다각형이 언급되었지만, 또한 설명된 실시예 및 예는 다른 종류의 그래픽 원형을 포함하는 그래픽 데이터와 함께 사용될 수 있는 것에 주의한다.
B. 렌더링 유닛
렌더링 유닛(150A-D)(또, 드로어 유닛이라고도 한다)은 제어유닛(140)에서 그래픽 명령 및 데이터를 받고, 정확한 실행에 따라 다수의 기능을 수행하도록 구성된다. 예컨대, 렌더링 유닛(150A-D)은 압축 해제(데이터가 압축된 경우), 변형, 클리핑(clipping), 라이팅(lighting), 텍스처링(texturing), 깊이 지시(depthcueing), 투명 프로세스, 셋업(set-up) 및 그래픽 데이터내에서 발생하는 다양한 그래픽 원형의 스크린 스페이스 렌더링을 수행하도록 구성될 수 있다. 이들 특징 모두 이하에서 개별적으로 설명된다.
받은 압축 그래픽 데이터의 종류에 따라, 렌더링 유닛(150A-D)은 산술 디코딩, 런 랭스(run-length) 디코딩, 허프만(Huffman) 디코딩 및 딕셔너리(dictionary) 디코딩(즉, LZ77, LZSS, LZ78 및 LZW)을 수행하기 위해 구성될 수 있다. 다른 실시예에 있어서, 렌더링 유닛(150A-D)은 기하학적인 압축을 이용하여 압축된 그래픽 데이터를 디코드(decode)하기 위해 구성될 수 있다. 3D 그래픽 데이터의 기하학적인 압축은 최상의 이미지 품질을 유지하면서 데이터 크기를 상당히 줄일 수 있다. 3D 기하학적인 배열을 압축 및 압축 해제하는 2개의 방법이 미국특허 제5,793,371호, 출원번호 08/511,294(1995년 8월 4일 제출, 제목 "Method and Apparatus For Geometric Compression Of Three-Dimensional Graphics Data" Attorney Docket No.5181-05900) 및 미국특허 출원번호 09/095,777(1998년 6월 11일 제출, 제목 "Compression Of Three-Dimensional Geometry Data Representing a Regularly Tiled Surface Portion of Graphical Object" Attorney Docket No.5181-06602)에 설명되어 있다. 압축 해제를 지원하는 그래픽 시스템(112)의 실시예에 있어서, 각각의 렌더링 유닛(150)으로 받은 그래픽 데이터는 렌더링될 수 있는 하나 이상의 그래픽 "원형(primitives)"으로 압축 해제된다. 용어 원형은 그 형태(즉, 2 또는 3차원에서의 포인트, 라인, 삼각형, 다각형, 3차원에서의 다면체 또는 자유로운 형상의 표면)를 규정하는 객체의 성분을 말한다. 렌더링 유닛(150)은 적합한 종류의 모든 고성능 프로세서(즉, 전용 그래픽 프로세서 또는 연산유닛, 멀티미디어 프로세서, DSP 또는 범용 프로세서)일 수 있다.
변형(Transformation)이란 객체를 처리하는 것을 말하며, 객체를 옮기고(즉, 객체를 다른 위치로 이동시키고), 증감하며(즉, 스트레칭(stretching) 또는 수축(shrinking)) 및 회전시키는(즉, 3차원 공간 또는 "3-space") 것을 포함한다.
클리핑(Clipping)이란 표시되는 이미지의 경계선을 규정하는 것(즉, 클리핑 지역, 대개 직사각형을 설정한다)을 말하며, 이때 이들 경계선 밖으로 나가는 픽셀은 렌더링 또는 표시하지 않는다.
라이팅(Lighting)이란 각각의 객체가 어떤 컬러 및 또는 밝기를 가지는가를 결정하기 위해 표시되는 이미지내에서 객체의 조도를 계산하는 것을 말한다. 사용된 쉐이딩(shading) 알고리즘(즉, 콘스탄트(constant), 고란드(Gourand) 또는 퐁(Phong))에 따라 라이팅(lighting)은 다수의 상이한 장소에서 평가될 수 있다. 예컨대, 일정한 쉐이딩(즉, 다각형의 각 픽셀이 동일한 라이팅을 가진다)이 사용되면, 그 때 라이팅은 다각형마다 1회 계산되는 것이 필요하다. 고란드(Gourand) 쉐이딩이 사용되면, 그 때 라이팅은 꼭지점마다 1회 계산된다. 퐁(Phong) 쉐이딩은 단위 픽셀에 기초하여 라이팅을 계산한다.
셋-업(set-up)이란, 원형(primitive)을 3차원 뷰포트(viewport)로 매핑(mapping)하는 것을 말한다. 이것은 그들의 원초적 "세계-좌표" 시스템으로부터 물체를 "전환(translating) 및 변환(transforming)하여 뷰포트의 좌표로 설정하는 것을 포함한다.
스크린 공간 렌더링(screen space rendering)이란, 표현될 각 픽셀을 생성하는데 이용되는 데이터를 실제로 연산하기 위해 행해지는 연산을 말한다. 종래 기술의 시스템에서는, 각 픽셀이 계산되고 프레임 버퍼에 저장된다. 그러면, 프레임 버퍼의 내용은 디스플레이 장치로 출력되어 최종 이미지를 생성한다. 그러나, 도면에 나타낸 그래픽 시스템(112)의 실시예에는, 렌더링 유닛(150A-D)은 실제의 픽셀 데이터 대신에 "샘플(samples)"을 계산한다. 이렇게 함으로써, 렌더링 유닛(150A-D)은 수퍼-샘플(super-sample)을 할 수 있거나 픽셀당 하나 이상의 샘플을 계산할 수 있다. 수퍼-샘플링(super-sampling)은 아래에서 보다 자세히 설명될 것이다. 렌더링 유닛(150A-D)은 또한 패닝과 줌잉과 같은 다양한 효과를 위해 디스플레이(84)의 가시영역보다 더 많은 샘플 영역을 생성할 수도 있다. 렌더링 유닛(150A-B)은 예컨대, 분리된 셋-업/압축풀기 유닛 및 라이팅 유닛과 같은 수많은 보다 작은 기능적 유닛을 포함할 수 있다.
수퍼-샘플링에 관한 더욱 자세한 내용은 다음의 책에서 거론된다: "Principles of Digital Image Synthesis" by Andrew Glassner, 1995, Morgan Kaufman Publishing(Volume 1); 및 "Renderman Companion:" by Steve Upstill, 1990, Addison Wesley Publishing.
C. 데이터 메모리
각각의 렌더링 유닛(150A-D)은 명령 및 데이터 메모리(152a-D)에 연결될 수 있다. 일 실시예에 있어서, 각각의 데이터 메모리(152a-D)는 렌더링 유닛(150A-D)에 대한 데이터 및 명령을 저장하도록 구성될 수 있다. 수단은 변경될 수 있지만, 일 실시예에 있어서 각각의 데이터 메모리(152a-D)는 각각의 렌더링 유닛(150A-D)에 총 16M 바이트를 저장하기 위해 제공되는 2개의 8M 바이트의 SDRAM을 포함할 수 있다. RDRAM(Rambus DRAM)은 각 렌더링 유닛의 압축 해제및 셋업 동작을 지원하기 위해 사용될 수 있고, SDRAM은 렌더링 유닛(150A-D)의 드로어(draw) 기능을 지원하기 위해 사용될 수 있다.
D. 스케줄 유닛
스케줄 유닛(154)은, 렌더링 유닛(150A-D)과 샘플 메모리(160A-N) 사이에서 연결될 수 있다. 스케줄 유닛(154)은 완료된 샘플을 정리하여 샘플 메모리(160A-N)에 저장하도록 구성될 수 있다. 보다 큰 구성에서, 다중 스케줄 유닛(154)은 병행해서 사용될 수 있다는 점에 주의한다. 일 실시예에 있어서, 스케줄 유닛(154)은 크로스바 스위치로서 실현될 수 있다.
E. 샘플 메모리
수퍼-샘플되는 샘플버퍼(162)는, 렌더링 유닛에 의해 생성된 복수의 샘플을 저장하기 위해 구성된 샘플 메모리(160A-160N)를 포함한다. 여기서 사용되는 것과 같이, 용어 "샘플버퍼(sample buffer)"는 샘플을 저장하는 하나 이상의 메모리를 말한다. 앞에서 언급한 바와 같이, 샘플이 디스플레이 장치상에서 스크린 공간의 장소에 대응하는 샘플버퍼의 위치에서 샘플버퍼(162)로 렌더링된다. 이 위치는 특히 그리드 기준 위치생성, 확률적인 위치생성 또는 교란된 그리드 위치생성과 같은 다양한 방법을 이용하여 계산될 수 있다. 이 위치는 프레임 기준마다, 빈 기준마다 또는 동일한 샘플 기준마다 계산되거나 또는 프로그램적으로 결정될 수 있다. 일 실시예에 있어서, 샘플 위치정보는 샘플과 함께 샘플버퍼에 저장된다.
하나 이상의 샘플이 각각의 출력픽셀(즉, 디스플레이 장치상에 표시되는 픽셀)를 형성하기 위해 필터링 된다. 저장되는 샘플의 갯수는 단일 프레임을 리프레쉬하기 위해 디스플레이 장치로 출력하는 전체 픽셀의 갯수보다 크거나, 같거나 또는 적을 수 있다. 각각의 샘플은 하나 이상의 출력픽셀에 대응할 수 있다. 여기서 사용된 것과 같이, 샘플은 샘플 정보가 픽셀의 최종 출력 값에 기여할 때 출력픽셀에 "대응(correspond)"한다. 그러나, 일부 샘플은 필터링 처리 후 대응하는 출력픽셀을 0으로 하는 점에 주의한다. 또한, 일부 샘플은 하나 이상의 프레임을 위해 디스플레이 장치(84)의 가시영역 밖에 있는 샘플버퍼로 렌더링되어 저장될 수 있고, 이들 샘플은 패닝 및 줌잉과 같은 다양한 표시효과를 위해 후속 프레임에서 사용될 수 있다.
다른 방식으로 말하면, 샘플버퍼는 디스플레이 장치상에서 스크린 공간의 장소에 대응하는 위치를 갖는 복수의 샘플을 저장한다, 즉 샘플은 디스플레이 장치상에서 하나 이상의 출력픽셀에 기여한다. 저장되는 샘플의 갯수는 픽셀 장소의 갯수보다 더 많아질 수 있고, 하나 이상의 샘플은 디스플레이 장치상에 표시되는 특정 출력픽셀을 생성하기 위해 콘볼루션(필터링) 프로세스에 결합될 수 있다. 주어진 모든 샘플은 하나 이상의 출력픽셀에 기여할 수 있다.
샘플 메모리(160A-160N)는 다양한 크기의 다수의 다른 종류의 메모리(즉, SDRAM, SRAM, RDRAM, 3DRAM 또는 차세대 3DRAM)의 어느 것을 포함할 수 있다. 일 실시예에 있어서, 각각의 스케줄 유닛(154)은 샘플 메모리의 4개 뱅크에 연결되고, 각각의 뱅크는 4개의 3DRAM-64 메모리를 포함한다. 동시에, 3DRAM-64 메모리는 다중 샘플을 픽셀마다 저장하는 116비트 디프(deep) 수퍼-샘플되는 샘플버퍼를 형성할 수 있다. 예컨대, 일 실시예에 있어서, 각각의 샘플 메모리(160A-160N)는 16개까지의 샘플을 픽셀마다 저장할 수 있다.
3DRAM-64 메모리는, 하나의 칩상에서 단일 버퍼된 Z에 의해 완전한 내부 이중 버퍼링을 지원하도록 구성된 전용 메모리이다. 이중 버퍼된 부분은 2개의 RGBX 버퍼를 포함하고, X는 다른 정보(즉, 알파(alpha))를 저항하는데 사용될 수 있는 4개의 채널이다. 또한, 3DRAM-64 메모리는 윈도우 ID 정보를 받아 들이는 검색 테이블도 가지고, 출력되는 버퍼의 컨텐츠를 선택하는 내부 2-1 또는 3-1 멀티플렉서를 제어한다. 3DRAM-64 메모리는 미쯔비시 전기의 반도체 그룹에서 지금 곧 이용될 수 있는 차세대 3DRAM이다. 일 실시예에 있어서, 조합에 사용된 4개의 칩은 이중 버퍼된 1280×1024 수퍼-샘플되는 샘플버퍼를 생성하는데 충분하다. 메모리가 내부적으로 이중 버퍼되기 때문에, 이중 버퍼된 시스템에서 2개 프레임 버퍼의 각각의 입력 핀은 시간 멀티플렉스 된다(메모리내의 멀티플렉서를 이용하여). 마찬가지로, 출력 핀도 멀티플렉스 될 수 있다. 이것에 의해, 이중 버퍼링의 이점을 제공하면서 핀의 갯수를 줄인다. 3DRAM-64 메모리는 z 출력 핀을 갖지 않는 것에 의해 핀의 갯수를 더 감소시킨다. z 비교 및 메모리 버퍼 선택은 내부적으로 처리되기 때문에, 이것에 의해 샘플버퍼를 간단하게 할 수 있다(즉, 출력측에서 더 적은 선택논리를 이용하거나 또는 전혀 선택논리를 이용하지 않는다). 또한, 종래 데이터의 읽어들임, z 비교의 실행 및 데이터 재기록의 프로세스없이 메모리에 정보가 기록될 수 있기 때문에, 3DRAM-64 메모리의 사용은 메모리 대역 폭도 줄인다. 그 대신에, 상술한 스텝을 내부적으로 실행하는 메모리에 의해, 데이터는 단순히 3DRAM-64 메모리에 기록될 수 있다.
그러나, 그래픽 시스템(112)의 다른 실시예에 있어서, 다른 메모리(즉, SDRAM, SRAM, RDRAM 또는 현세대 3DRAM)가 샘플버퍼(162)를 형성하기 위해 사용될 수 있다.
그래픽 프로세서(90)는, 특정 샘플 위치도해(즉, 정규 그리드, 교란된 그리드, 확률 등)에 따라 복수의 샘플 위치를 생성하도록 구성될 수 있다. 각각의 샘플에 대한 샘플 위치정보는 샘플-픽셀 연산유닛에 의해 나중에 사용하기 위해 저장될 수 있다. 예컨대, 그래픽 프로세서(90)는 샘플 위치정보를 샘플과 함께 샘플버퍼에 저장하거나 또는 샘플 위치정보를 별도의 샘플 위치 메모리에 저장할 수 있다. 그와 달리, 샘플 위치정보(즉, 샘플 위치를 형성하기 위해 정규 그리드 위치에 추가된 오프셋)은 상기 도해중 하나를 이용하여 미리 결정되거나 또는 미리 계산되어 샘플 위치 메모리(즉, RAM/ROM 테이블)에서 단순히 읽어들일 수 있다. 샘플 위치정보는 그래픽 프로세서, 호스트 CPU 또는 다른 논리에 의해 미리 계산될 수 있다.
샘플 위치정보는 샘플버퍼 좌표시스템에 관련된 좌표 값, 예컨대 디스플레이 스크린 공간에 관련된 좌표 값을 포함할 수 있다. 또한, 샘플 위치정보는 오프셋값을 포함할 수 있고, 미리 규정된 그리드, 미리 규정된 빈, 또는 픽셀 중심좌표와 같은 오프셋 값은 샘플버퍼에서 미리 규정된 장소에 관련되어 있다.
렌더링되는 다각형을 받음에 따라, 그래픽 프로세서(90)는 샘플 위치정보에 기초한 다각형내에 샘플이 존재하는 것을 결정한다. 그래픽 프로세서(90)는 다각형내에 있는 샘플을 렌더링하여 샘플 메모리(160A-N)에 저장한다. 여기서 사용된 용어 렌더(render)와 드로어(draw)는 서로 교환할 수 있고, 샘플에 대한 계산된 값을 말하며, 하나 이상의 컬러 값, 깊이 값, 알파 값(alpha value), 블러 값(blur value) 및 다른 단위 샘플 값(per-sample value)을 포함한다.
F. 샘플-픽셀 연산유닛
샘플-픽셀 연산유닛(170A-D)(때때로, 집합적으로 샘플-픽셀 연산유닛(170)이라 한다)은 샘플 메모리(160A-N) 및 DAC(178A-B) 사이에서 연결될 수 있다. 샘플-픽셀 연산유닛(170A-D)은 샘플 메모리(160A-N)에서 선택된 샘플을 읽어들이도록 구성되고, 샘플은 샘플의 위치정보에 기초하여 선택된 후 DAC(178A-B)로 출력되는 출력픽셀 값을 생성하기 위해 샘플상에서 콘볼루션(예컨대, 필터링 및 가중 기능 또는 저역통과 필터)을 실행한다. 샘플-픽셀 연산유닛(170A-D)은 소망의 출력 종류에 따라 상이한 시간에서 상이한 필터 기능을 실행할 수 있도록 프로그램 가능하다. 일 실시예에 있어서, 샘플-픽셀 연산유닛(170A-D)은 수퍼-샘플되는 샘플버퍼 데이터(샘플 메모리(160A-N)에 저장된)를 단일 픽셀 값으로 변환하기 위해 5×5 수퍼- 샘플 재건 대역통과필터를 실행할 수 있다. 다른 실시예에 있어서, 연산유닛(170A-D)은 출력픽셀을 계산하기 위해 선택된 갯수의 샘플을 필터링한다. 필터링된 샘플에는 계산된 픽셀의 중심에 근접한 위치를 가지는 샘플을 다소 가중하는 가변 가중계수가 곱해질 수 있다. 또한, 다른 필터링 기능은 단독 또는 조합으로 사용, 즉 텐트(tent) 필터, 원형 및 타원 필터, 미첼(Mitchell)필터, 대역통과 필터, 싱크(sync)기능 필터로 사용될 수 있다.
샘플-픽셀 연산유닛(170A-D)은 또한 하나 이상의 다음의 특징으로 형성될 수도 있다: 모조 컬러 테이블을 사용하는 컬러 검색(順覽), 다이렉트 컬러, 인버스 감마 교정, 샘플의 픽셀로의 여과, 그리고 픽셀의 비선형 빛 공간으로의 전환. 다른 특징의 샘플-픽셀 연산유닛(170A-D)은 프로그래머블 비디오 타이밍 생성기, 프로그래머블 픽셀 클럭 합성기, 컬러 공간 변환기, 그리고 크로스바 함수. 일단 샘플-픽셀 연산유닛이 타이밍과 각 픽셀의 색을 조절하면, 픽셀은 DACs(178A-B)로 출력된다
G. DACs
DAC(178A-B)는 그래픽 시스템(112)의 최종 출력스테이지로서 동작한다. DAC(178A-B)는 크로스 유닛(174A-B)에서 받은 디지털 픽셀 데이터를 디스플레이 장치상에 전송되는 아날로그 비디오 신호로 변환한다. 일실시예에 있어서, DAC(178A-B)는 아날로그 비디오 신호 대신에 디지털 픽셀을 출력하기 위해 바이패스되거나 또는 완전히 생략될 수 있다. 이것은 디스플레이 장치(84)가 디지털 설명(즉, LCD형 디스플레이 장치 또는 디지털 마이크로 미러 디스플레이 장치)에 기초를 두는경우 유용하다.
수퍼 샘플링 - 도 4-5
도 4는 종래기술의, 수퍼-샘플되지 않은 픽셀값 계산의 예를 나타낸다. 각 픽셀은 정확히 하나의 계산된 데이터 포인트를 가지며, 하나의 데이터 포인트는 픽셀의 중심에 위치한다. 예를 들어, 오직 하나의 데이터 포인트(예컨대, 샘플(74))가 픽셀(70)의 값에 기여한다.
도 5A를 보면, 수퍼-샘플링의 일례가 나타나 있다. 이 실시예에서, 많은 샘플이 계산된다. 샘플의 수는 픽셀의 수에 관련되어 있을 수도 있거나 또는 픽셀의 수에 완전히 독립적일 수도 있다. 이 예에서, 정규 그리드 내에서 9개의 픽셀에 대해 18개의 샘플이 있다. 도면에 나타나 있는 모든 샘플에 대하여, (예컨대, 각 픽셀의 중심에 가장 가까운 샘플을 제외한 모든 샘플을 버림으로써) 단순한 1대1 상관이 이루어질 수도 있다. 그러나, 더욱 흥미로운 경우로는, 최종 픽셀값을 결정하기 위해 다중 샘플에 여과 기능을 행하는 것이다. 또한, 위에 기술한 바대로, 하나의 샘플이 복수의 출력 픽셀을 생성하기 위해 사용할 수 있다(즉, 서브-샘플링).
원형 필터(72)가 도면에 나타나 있다. 이 예에서, 2개의 샘플(74A-B) 모두 픽셀(70)의 최종값에 기여한다. 이 여과 과정은 표현되는 이미지의 가파른 에지(edge)를 부드럽게 함으로써(즉, 안티-앨리어싱(anti-aliasing)을 행함), 표현되는 이미지의 현실성을 유리하게 증진시킬 수 있다. 필터(72)는 출력 픽셀(70)의최종값을 형성하기 위해 단순히 샘플(74A-B)을 평균하거나, 또는 (픽셀(70)의 중심에서) 샘플(74B)의 기여를 증가시키고 샘플(74A)(즉, 픽셀(70)의 중심로부터 멀리 떨어져 있는 샘플)의 기여를 감소시킬 수 있다. 원형 필터(72)는 계산되는 각 출력 픽셀을 위해 재위치되므로, 필터(72)의 중심은 계산되는 픽셀의 중심 위치와 일치한다. 다른 필터들 및 필터 위치도해가 또한 가능하며 숙고될 수 있다.
이제 도 5B를 보면, 수퍼-샘플링의 또 다른 실시예가 나타나 있다. 그러나, 이 실시예에서 샘플들은 무작위로 위치되어 있다. 더욱 상세하게는, 다른 샘플 위치가 선택되고 그래픽 프로세서(90) (및 렌더 유닛(150A-D))로 제공되며, 그래픽 프로세서(90)는 이 다른 위치들에서의 샘플을 형성하기 위해 컬러 정보를 계산한다. 따라서 필터(72)에 해당하는 샘플의 수는 픽셀마다 다양하다.
수퍼-샘플되는 샘플버퍼와 실시간 콘볼루션 -- 도 6-13
도 6A, 6B, 7A 및 도 7B는 그래픽 시스템(112)의 일 실시예를 통한 데이터의 흐름에 대한 가능한 구성을 도시한다. 도면에 도시되는 바와 같이, 기하 데이터(350)는 그래픽 시스템(112)에서 받아 드로어(draw) 또는 렌더(render) 프로세스(352)를 실행하기 위해 사용된다. 드로어 프로세스(352)는 하나 이상의 제어유닛(140), 렌더링 유닛(150), 메모리(152) 및 스케쥴 유닛(154)에 의해 실행된다. 기하 데이터(350)는 하나 이상의 다각형에 대한 데이터를 포함한다. 각각의 다각형은 복수의 꼭지점(예컨대, 삼각형의 경우 3개의 꼭지점)을 포함하고, 일부는 공유될 수 있다. x, y 및 z 좌표와 같은 데이터, 컬러 데이터, 라이팅(lighting) 데이터 및 텍스쳐 맵 정보가 각각의 꼭지점을 위해 포함될 수 있다.
또한, 드로어 프로세스(352)는 샘플의 렌더링을 위한 샘플 좌표 또는 샘플 위치정보를 생성하거나 또는 샘플 위치 메모리(354)에서 미리 계산된 샘플 위치정보를 받는다. 여기서 사용되는 바와 같이, 용어 "샘플 위치정보" 또는 단순히 "위치정보"는 샘플버퍼(162)로 렌더링된 샘플의 위치 또는 장소를 지시 또는 지정하는 것을 말하며, 샘플버퍼(162)에서의 위치 또는 장소는 일반적으로 디스플레이 장치의 스크린 공간에서의 위치 또는 장소와 관련되거나 또는 대응하고 있다. 일반적으로, 용어"위치" 및 "위치정보"는 교환 가능하게 사용된다. 용어 "샘플 위치정보" 또는 단순히 "위치정보"는 상대적인 위치 및/또는 상대적인 시간정보를 포함할 수 있다. 예컨대, 위치정보는 x, y 값 및 부 프레임 시간 오프셋을 지시하는 시간 값도 포함할 수 있다. 부 프레임 시간 오프셋은, 샘플 정보가 생성 또는 렌더링 되었을 때 상대적인 카메라 시간을 지시할 수 있다.
상술한 바와 같이, 샘플 위치는 특별한 샘플 위치도해에 따라 생성될 수 있다. 일례로서, 샘플 위치도해는 특히 정규 그리드(즉, 정사각형 그리드 또는 정육각형 그리드), 교란된 정규 그리드 또는 확률적인 위치생성을 포함한다. 그래픽 시스템(112)은 운영 시스템, 디바이스 드라이버 또는 사용된 샘플 위치도해의 종류를 나타내는 기하 데이터(350)로부터 지시를 받는다. 그러므로, 그래픽 시스템(112)(즉, 그래픽 프로세서(90))는 하나 이상의 상이한 도해에 따라 위치정보를 생성하도록 구성 가능하거나 또는 프로그램 가능하다. 여러 샘플 위치도해상에서의 더 상세한 정보는 이하에 더 설명된다(도 8의 설명 참조).
드로어 프로세스(352)를 실행하는 그래픽 프로세서(90)는, 렌더링하는 동안 샘플 위치정보를 이용한다. 그래픽 프로세서(90)는 렌더링하는 동안 복수의 샘플 위치(위치정보)를 생성하기 위해 구성될 수 있고, 또한 샘플 위치는 호스트 CPU상에서 실행되는 그래픽 드라이버 또는 다른 논리에 의해 생성될 수 있다. 또한, 샘플 위치는 나중에 렌더링동안 사용하기 위해 미리 계산되어 샘플 위치 메모리(354)에 저장될 수 있는데, 위치정보는 그래픽 프로세서(90), 호스트 CPU 또는 다른 논리 중 하나에 의해 미리 계산된다. 그러므로, 드로어 프로세스(352) 또는 다른 하드웨어 또는 소프트웨어는, 렌더링 프로세스 동안 실시간으로 복수의 샘플 위치를 생성한 후 위치정보를 샘플 위치 메모리(354)에 저장하거나, 또는 샘플 위치는 나중에 사용하기 위해 렌더링하는 동안 미리 계산되어 샘플 위치 메모리(354)에 저장될 수 있다.
도 6A 및 도 6B에 도시된 바와 같이, 샘플 위치정보는 별도의 샘플 위치 메모리(354)에 저장될 수 있다. 예를 들어, 샘플 위치정보(즉, 샘플 위치를 형성하기 위해 정규 그리드 위치에 추가된 오프셋)는 상기 도해중 하나를 이용하여 미리 결정되거나 또는 미리 계산되고, 렌더링하는 동안 샘플 위치 메모리(354)(즉, RAM/ROM 테이블)에서 읽어들인다. 샘플 위치는 그래픽 프로세서(90), 호스트 CPU 또는 상술한 다른 논리에 의해 미리 계산될 수 있다. 그와 달리, 그래픽 프로세서(90)는 렌더링하는 동안 샘플 위치정보를 생성하여 샘플 위치 메모리(354)에 저장할 수도 있다.
일 실시예에 있어서, 위치 메모리(354)는 렌더링 유닛(150A-D)내에 포함된다. 다른 실시예에 있어서, 위치 메모리(354)는 텍스처 및 렌더 메모리(152A-152D)의 일부 또는 별도의 메모리로 실현될 수 있다. 샘플 위치 메모리(354)는 드로어 프로세스(352)에서 계산된 후 수퍼-샘플되는 샘플버퍼(162)에 저장되는 샘플에 대한 위치정보를 저장하기 위해 구성된다.
샘플 위치 메모리(354)는 단일 메모리(도 6A) 또는 2개의 메모리(도 6B), 예컨대, 이중 버퍼로 된 구성을 포함할 수 있다. 이중 버퍼된 샘플 위치 메모리(354A, 354B)는 프레임 기준(per frame basis)마다 또는 빈 기준(per bin basis)마다 또는 샘플 기준(per sample basis)마다 등에서 샘플 위치정보의 프로그램 가능성을 허용한다. 도 6B의 이중 버퍼된 실시예는 이하에서 더 논의된다.
또한, 도 7A에 도시된 바와 같이, 샘플 위치정보는 샘플과 함께 샘플버퍼(162)에 저장될 수 있다. 예컨대, 그래픽 프로세서(90)는 렌더링하는 동안 샘플 위치정보를 생성하여, 샘플과 함께 샘플버퍼(162)에 저장할 수 있다. 샘플버퍼(162)가 이미 이중 버퍼로 되어 있으므로, 샘플버퍼(162)에서 샘플 위치정보의 저장은 효과적으로 샘플 위치정보를 이중으로 버퍼링한다. 도 7B는 검색 테이블(LUT) 태그 또는 색인(indices)이 샘플과 함께 샘플버퍼(162)에 저장되고, 이들 태그 참조 오프셋은 별도의 샘플 위치 메모리(354)에 저장되는 실시예를 나타낸다. 도7A 및 7b의 실시예는 이하에서 더 논의된다.
일 실시예에 있어서, 샘플 위치정보는 전체 샘플 위치인 "어드레스" 또는 좌표를 포함할 수 있다. 그러나, 이것은 위치 메모리(354)(도 6A, 6B 및 7B)의 크기를 증가시키는 것을 포함하거나 또는 샘플버퍼(도 7A)의 크기를 증가시키는 것을포함할 수 있다. 그와 달리, 샘플 위치정보는 각각의 샘플에 대해 하나 이상의 오프셋만을 포함할 수도 있다. 오프셋만을 저장하는 것은 각 샘플의 전체 위치를 저장하는 것보다 적은 저장공간을 사용할 수 있다. 하나 이상의 오프셋 값은 특히 x 및 y 오프셋 또는 각도 및 거리 오프셋(극좌표)을 포함할 수 있다.
하나 이상의 오프셋 값은, 미리 규정된 정규 그리드와 관련된 오프셋 값을 포함할 수 있고, 예컨대, 미리 결정된 빈 좌표 또는 미리 결정된 픽셀 중심좌표와 관련될 수 있다. 예를 들어, 하나 이상의 오프셋 값은 샘플이 빈의 하부 좌측 코너와 같은 곳에 놓여진 빈과 관련될 수 있다. 오프셋은 상술한 다양한 샘플 위치도해 중 어느 것에 기초할 수 있다.
샘플의 샘플 위치는 샘플의 하나 이상의 오프셋 값을 기준좌표, 즉 특히 정규 그리드, 미리 결정된 빈 좌표 또는 미리 결정된 픽셀 중심좌표와 결합함으로써 결정될 수 있다. 샘플 위치 메모리(354) 또는 샘플버퍼(162)에 저장된 오프셋 값은 그래픽 프로세서(90) 및/또는 픽셀 연산유닛(170)의 각각에 의해 읽혀지고, 샘플을 에 대한 샘플 위치를 계산하도록 처리될 수 있다. 그와 달리, 샘플 위치 메모리(354)에 저장된 오프셋 값은 전용 샘플 위치 연산유닛(미도시)에 의해 읽혀지고, 그래픽 프로세서(90) 및/또는 픽셀 연산유닛(170)에 의해 예제샘플 위치를 계산하도록 처리될 수도 있다. 샘플 위치 오프셋에 관한 더 상세한 정보는 이하에 포함된다(도 9 및 도 10 참조).
상술한 바와 같이, 그래픽 시스템은 각각의 샘플에 대한 오프셋 값을 저장하는 샘플-픽셀 연산유닛(170)에 연결된 샘플 위치 메모리(354)를 포함할 수 있다.도 6A, 도 6B 및 도 7B에 도시된 바와 같이, 샘플-픽셀 연산유닛(170)은 샘플의 오프셋 값을 결정하기 위해 메모리(354)를 액세스하도록 동작될 수 있다. 메모리(354)는 검색 테이블 메모리일 수 있고, 샘플-픽셀 연산유닛(170)은 샘플의 오프셋 값을 결정하기 위해 메모리(354)에 색인을 넣도록 동작될 수 있다.
메모리(354)는 어드레스를 이용하여 어드레스 할 수 있다. 일 실시예에 있어서, 메모리(354)는 샘플버퍼(162)에 저장된 샘플보다 적은 갯수의 오프셋 값을 저장한다. 이 실시예에 있어서, 샘플-픽셀 연산유닛(170)은 샘플버퍼(162)에서 상이한 빈에 대한 오프셋 값을 재사용 할 수 있다. 그러나, 이것은 인접하는 빈(또는 모든 빈)에서 사용되고 있는 동일한 오프셋 때문에 아티팩트를 생산할 수 있다. 다른 실시예에 있어서, 샘플-픽셀 연산유닛(170)은 샘플에 대한 상이한 오프셋을 얻기 위해 어드레스에서 비트를 조작한다. 이 비트 조작은 비트 추가, 비트 조합, 비트 해싱(hashing), 비트계수 추가, 다양한 해싱함수 이용, 검색 테이블과의 결합 가능성, 또는 다른 비트 조작을 포함할 수 있다. 다른 방식으로 말하면, 샘플 위치 메모리는 다수의 상이한 방식으로 샘플 위치 메모리 테이블(354)에 액세스 또는 "언포울드(unfold)"하도록 프로그램 가능하다. 이것에 의해, 보다 적은 메모리 테이블(354)이 샘플 위치 오프셋을 반복함으로써 생성되는 시각적인 아티팩트(artifact)를 감소시키는데 사용될 수 있다.
일 예로서, 샘플 위치 메모리(354)는 난수의 테이블을 저장하도록 구성될 수 있다. 또한, 샘플 위치 메모리(354)는 하나 이상 상이한 종류의 정규 그리드를 생성하기 위해 전용 하드웨어를 포함할 수 있다. 이 하드웨어는 프로그램 가능하다.저장된 난수는 하드웨어에 의해 생성된 정규 그리드 위치에 오프셋으로서 추가될 수 있다.
일 실시예에 있어서, 상술한 바와 같이 샘플 위치 메모리는 다수의 상이한 방식으로 난수 테이블을 액세스 또는 "언포울드(unfold)"하기 위해 프로그램 가능하고, 그러므로 시각적인 아티팩트를 감소시키는데 더 적은 테이블이 사용될 수 있다. 일 실시예에 있어서, 난수는 반복할 수 있고 또는 반복적으로 생성될 수 있으며, 그것에 의해 드로어 프로세스(352) 및 샘플-픽셀 연산 프로세스(360)가 각각의 오프셋을 저장할 필요 없이 동일한 샘플에 대한 동일한 오프셋을 이용할 수 있다.
샘플은 빈에 따라 샘플버퍼(162)에 저장될 수 있고, 각각의 빈은 각 빈에서 샘플이 놓여진 샘플버퍼(162)에서의 지역을 규정한다. 여기서 사용된 바와 같이, 용어 "빈(bin)"은 스크린 공간에서의 지역 또는 영역을 말하고, 한편 그 영역(즉, 빈은 영역에서 1×1 픽셀, 영역에서 2×2 픽셀 등)에 있는 많은 샘플을 포함한다. 용어 "스크린 공간"은 일반적으로 디스플레이 장치의 좌표시스템을 말한다. 빈의 사용은 샘플버퍼(162)에서 샘플의 저장 및 액세스를 간단하게 할 수 있다. 다수의 상이한 빈의 크기가 사용될 수 있다(즉, 빈마다 하나 샘플, 빈마다 4개 샘플 등). 바람직한 실시예에 있어서, 각각의 빈은 디스플레이 장치상의 특정 장소에 대응하는 xy-위치를 가진다. 빈은 바람직하게는 규칙적으로 간격을 두고 있다. 이 실시예에서, 빈의 xy-위치는 샘플버퍼(162)내의 빈의 저장장소로 결정된다. 빈의 위치는 디스플레이 장치상의 특정 위치에 대응한다. 일부 실시예에서는 빈의 위치가 픽셀 중심에 대응하지만, 다른 실시예에서는 빈의 위치가 픽셀 중심의 사이에 놓여진 포인트에 대응한다.
하나 이상의 오프셋 값은 빈에 관련된 오프셋 값을 포함할 수 있다. 그러므로, 각 빈내의 각각의 샘플 위치는 샘플과 연관된 하나 이상의 오프셋 값 및 샘플의 빈의 위치를 이용하여 결정될 수 있다. 일례로서, 위치 메모리(354)는 몇 쌍의 8-비트 수를 저장할 수 있으며, 각각의 쌍은 x 오프셋 및 y 오프셋을 포함한다(다른 오프셋, 예컨대 시간 오프셋, z-오프셋 등도 가능하다). 빈의 위치에 추가될 때, 각각의 쌍은 스크린 공간에서 특정 위치를 규정한다. 읽어들이는(read) 시간을 향상하기 위해, 메모리가 클럭 싸이클마다 하나 이상의 샘플 장소위소를 출력하도록, 메모리(354)는 와이드(wide)/병렬 방식으로 구성될 수 있다.
일 실시예에 있어서, 샘플은 빈의 순서에 따라 샘플버퍼(162)에 저장되고, 각 빈에 대한 빈의 순서는 각 빈에서 샘플의 위치를 지시한다. 그러므로, 각 샘플에 대한 샘플-픽셀 연산유닛(170)은 빈내의 각 샘플의 빈의 순서에 적어도 부분적으로 기초한 각 샘플의 위치를 생성하도록 동작될 수 있다. 예컨대, 오프셋 값은 샘플의 빈의 순서에 따라 메모리(354)에 저장될 수 있고, 샘플-픽셀 연산유닛(170)은 샘플의 오프셋 값을 결정하기 위해 메모리(354)에 색인을 넣는데 빈에서 샘플의 빈의 순서를 사용하도록 동작될 수 있다. 샘플 위치 메모리(354)는 샘플버퍼에서의 샘플의 총 갯수보다 적은 갯수의 오프셋 값을 저장할 수 있다. 예컨대, 샘플 위치 메모리(354)는 샘플버퍼(162)의 하나 빈에만 대응하는 수많은 오프셋을 저장할 수 있다. 이 경우, 샘플-픽셀 연산유닛(170)은 샘플버퍼(162)의 각각의 빈에 대한 이들 오프셋 값을 재사용하도록 동작될 수 있다. 샘플-픽셀 연산유닛(170)은 상술한바와 같이 빈에서 샘플에 대한 상이한 오프셋 값을 얻기 위해 샘플 위치 메모리 어드레스에서 비트를 조작하도록 동작될 수 있다.
일 실시예에 있어서, 샘플 위치 메모리(354)는, 빈마다의 상이한 총 샘플 카운트를 위한 확률적인 샘플 포인트(또는 장소)를 포함하는 RAM/ROM을 포함할 수 있다. 다수의 상이한 빈의 크기가 사용될 수 있다(즉, 빈마다 하나 샘플, 빈마다 4개 샘플 등). 빈내에서 각각의 샘플의 특정 위치는 ROM/RAM 테이블에서 샘플의 오프셋을 검색함으로써 결정될 수 있다(오프셋은 대응하는 빈의 위치에 관련되어 저장될 수 있다). 그러나, 임플러먼테이션(implementation)에 따라, 모든 빈의 크기가 단일 RAM/ROM 기입사항을 가지는 것은 아니다. 일부 빈의 크기는 보다 큰 빈의 크기의 기입사항의 서브셋(subset)을 간단히 읽어들일 수 있다. 일 실시예에 있어서, 각각 지원되는 크기는 적어도 4개의 상이한 샘플 위치도해 변형을 가지며, 반복하는 샘플 위치 때문에 최종 이미지 아티팩트를 감소시킬수 있다.
샘플 위치가 샘플 위치 메모리(354)로부터 한번 읽혀지면, 드로어 프로세스(352)는 현재 렌더링되고 있는 다각형 내에 있는 샘플 위치를 선택한다. 그 후, 드로어 프로세스(352)는 이들 샘플의 각각에 대한 z 및 컬러 정보(알파 또는 다른 깊이의 필드 정보값을 포함할 수 있다)를 계산하여, 샘플버퍼(162)에 데이터를 저장한다. 일 실시예에 있어서, 컬러와 같은 다른 샘플 성분을 이중 버퍼링하는 동안 샘플버퍼는 z값(및 알파값)을 단지 싱글-버퍼할 수 있다. 종래 설명의 시스템과 달리, 그래픽 시스템(112)은 모든 샘플을 이중 버퍼할 수 있다(비록 모든 샘플 성분이 이중 버퍼되지 않고, 즉, 샘플이 이중 버퍼되지 않는 성분을 갖거나또는 모든 샘플이 이중 버퍼링되지 않을 수 있다). 일 실시예에 있어서, 샘플들은 빈(bin)내의 샘플버퍼(162)에 저장된다. 일부 실시예에 있어서, 빈의 크기, 즉, 빈내의 샘플의 양은 프레임마다 변경될 수 있고, 또 단일 프레임내에서 디스플레이 장치(84)의 다른 지역과 대향하면서 변경될 수 있다. 예컨대, 디스플레이 장치의 에지(edge)에 따라 존재하는 빈은 하나의 샘플만을 포함할 수 있지만, 디스플레이 장치(84)의 중심 근방의 픽셀에 대응하는 빈은 16개의 샘플을 포함할 수 있다. 빈의 영역은 지역마다 변경될 수 있는 점에 주의한다. 빈의 사용은 도 11과 관련되어 이하에 더 상세히 설명될 것이다.
드로어(draw) 프로세스(352)와 병행하여 그리고 바람직하게는 독립적으로, 여과(filter) 프로세스(360)는 샘플버퍼(162)에서 샘플을 읽어들이고, 여과(즉, filter)한 후, 그 결과로서의 출력픽셀을 디스플레이 장치(84)로 출력하도록 구성되어 있다. 샘플-픽셀 연산유닛(170)은 여과 프로세스(380)를 실행한다. 그러므로, 출력픽셀의 최소 서브셋(subset)에 대해, 필터 프로세스는 각 출력픽셀을 생산하기 위해 복수의 샘플을 필터링하도록 동작될 수 있다. 일 실시예에 있어서, 필터 프로세스(360)는: (i) 각각의 샘플로부터 여과되고 있는 출력픽셀의 중심까지의 거리를 결정하고; (ii) 샘플의 성분(즉, 컬러 및 알파)에 상기 거리의 특정(프로그램 가능한) 함수인 필터 값을 곱하며; (iii) 출력픽셀에 기여하는 모든 가중 샘플을 합산하고, (iv) 그 결과 생성되는 출력픽셀을 정규화하도록 구성되어 있다. 필터 프로세스(360)는 이하에 더 상세히 설명된다(첨부된 도 11, 도 12 및 도 14 설명 참조). 필터의 범위는 원형일 필요가 없지만(즉, 거리 대신 x 및 y의 함수일 수 있다), 그 범위가 있더라도 필터가 원형적으로 대칭(circularly symmetrical)일 필요는 없다는 점에 주의한다. 필터의 "범위(extent)"는 필터에 의해 계산되는 특정 픽셀에 영향을 미칠 수 있는 샘플내의 영역이다.
도 6B-이중 버퍼된 샘플위치 메모리
도 6B는 그래픽 시스템(112)의 선택적인 실시예로서, 2개 이상의 샘플 위치 메모리(354A, 354B)가 이용되는 것을 도시한다. 도 6B에 도시된 바와 같이, 그래픽 시스템은 제1 위치 메모리(354A)와 제2 위치 메모리(354B)를 포함한다. 제1 위치 메모리(354A)는 그래픽 프로세서(90)에 결합되어 각각의 샘플에 대한 위치정보를 저장한다. 그래픽 프로세서(90)는 샘플을 샘플버퍼(162)로 렌더링하는 제1 메모리(354A)를 사용한다. 상술한 바와 같이, 그래픽 프로세서(90)는 또한 샘플 위치정보를 생성하여 메모리(354A)에 저장하도록 동작될 수 있다. 제2 위치 메모리(354B)는 샘플-픽셀 연산유닛(170)에 결합되고 또한 각각의 샘플에 대한 위치정보도 저장한다. 샘플-픽셀 연산유닛(170)은 샘플의 위치정보를 결정하기 위해 제2 메모리(354B)를 액세스하도록 동작될 수 있다. 샘플-픽셀 연산유닛(170)은 여과를 위한 샘플 선택을 돕기 위해 제2 메모리(354B)에서 얻어진 위치정보를 사용한다.
도시된 바와 같이, 제1 위치 메모리(354A)는 샘플 위치정보를 제2 샘플 위치메모리(354B)에 제공하도록 구성될 수 있고, 그러므로 이중 버퍼로 된 구성을 효과적으로 제공한다. 예컨대, 제1 메모리(354A)는 현재 프레임에 대한 현재 위치정보를 제2 메모리(354B)로 전송하도록 동작될 수 있다. 샘플-픽셀 연산유닛(170)은 샘플의 현재 위치정보를 결정하기 위해 제2 메모리(354B)를 사용하도록 동작될 수 있다. 한편, 그래픽 프로세서는 후속 프레임을 위한 후속 위치정보를 제1 메모리(354A)에 저장함과 동시에, 샘플-픽셀 연산유닛(170)이 현재 프레임에 대한 샘플의 현재 위치정보를 결정하기 위해 제2 메모리(354B)를 이용하도록 동작될 수 있다.
그러므로, 샘플 위치 메모리(354A-B)는 본질적으로 이중 버퍼로 되어있다. 샘플 위치가 프레임마다 동일하게 유지되면, 샘플위치는 단일 버퍼로 될 수 있다. 그러나, 샘플 위치가 프레임마다 변경되면, 그래픽 시스템(112)은 샘플위치를 이중 버퍼하도록 유리하게 구성될 수 있다. 샘플 위치는 렌더링 측(즉, 메모리(354A))에서 하나의 버퍼와 필터/콘벌브측(즉, 메모리(354B))에서 하나의 버퍼로 이중 버퍼될 수 있다. 또한, 샘플 위치는 렌더링 측(즉, 메모리(354A)가 이중 버퍼될 수 있다) 및/또는 필터/콘벌브(filter/convolve) 측(즉, 메모리(354B))가 이중 버퍼될 수 있다)에서 이중 버퍼될 수 있다. 또한, 다른 조합도 가능하다. 예컨대, 메모리(354A)는 단일-버퍼될 수 있고, 메모리(354B)는 이중 버퍼된다. 이러한 구성은, 메모리(354A)의 한 측이 (여과/콘벌브 프로세스(360)에 의해)리프레싱을 위해 사용되는 동안, 메모리(354B)측이 갱신될 수 있도록 한다.
이 구성에 있어서, 그래픽 시스템(112)은 각각의 프레임이 렌더링되는 것처럼 메모리(354A)에서의 샘플위치(또는 오프셋)를 이중 버퍼된 메모리(354B)로 이동시킴으로써 프레임 기준(per frame basis)마다 샘플 위치도해를 변경할 수 있다.그러므로, 샘플(메모리(354A)에서 읽혀진)을 연산하기 위해 사용된 위치는 필터링 프로세스(즉, 샘플-픽셀 변환 프로세스)동안 사용하기 위해 메모리(354B)로 복사된다. 위치정보가 메모리(354B)로 한번 복사되면, 위치 메모리(354A)에는 렌더링되는 제2 프레임을 위해 사용되는 새로운 샘플 위치 오프셋이 적재될 수 있다. 이와같은 방식으로, 샘플 위치 정보는 드로어/렌더 프로세스에서 필터 프로세스까지 샘플을 뒤따른다.
도 7A는 샘플 위치정보가, 상술한 바와 같이, 샘플과 함께 샘플버퍼(162)에 저장될 수 있는 실시예를 도시한다. 예컨대, 그래픽 프로세서(90)는 렌더링하는 동안 샘플 위치정보를 생성하여, 샘플과 함께 샘플버퍼(162)에 저장할 수 있다. 샘플버퍼(162)는 이미 이중 버퍼로 되어 있으므로, 샘플버퍼(162)에서 샘플 위치정보의 저장은 샘플 위치정보를 효과적으로 이중 버퍼된다. 도 7A의 실시예에 있어서, 그래픽 프로세서(90)는 샘플과 함께 오프셋 값을 수퍼-샘플되는 샘플버퍼(162)에 저장한다. 이 경우, 별도의 샘플위치 메모리(354)는 불필요하다.
도 7B는 그래픽 프로세서(90)가 샘플과 함께 오프셋에 대한 태그를 수퍼-샘플되는 샘플버퍼(162)에 저장하는 실시예를 도시한다. 이들 태그는, 오프셋/교란 또는 전체 위치좌표와 같은 각각의 특정 샘플과 연관된 위치정보를 검색하기 위해 사용될 수 있고, 위치정보는 별도의 메모리(354)에 저장될 수 있다. 바꾸어 말하면, 이들 태그는 샘플위치 메모리(354)에 저장된 검색 테이블에 색인을 넣기 위해 사용될 수 있다. 그러므로, 이 실시예는 샘플과 함께 검색 테이블 태그 또는 인덱스를 샘플버퍼(162)에 저장하고, 이들 태그는 샘플에 대한 고유 오프셋을 얻기 위해 검색 테이블(354)에 색인을 넣도록 액세스되어 사용된다. 그러므로, 도 7B에 도시된 바와 같이, 이러한 수행은 위치정보(예컨대, 오프셋)를 저장하기 위해 샘플위치 메모리(354)를 사용할 것이다.
샘플 위치도해(Sample Positioning Schemes)
도 8은 많은 다른 샘플 위치도해를 나타낸다. 정규 그리드 위치도해(190)에서, 각 샘플은 규칙적으로-간격을 둔 그리드의 교차점에 위치된다. 그러나, 여기서 사용되는 바와 같이, "정규 그리드(regular grid)" (또는 미리-정의된 그리드)는 정사각형 그리드에 국한되지 않는다. 직사각형 그리드, 육각형 그리드, 삼각형 그리드, 대수(對數)적 그리드와 펜로즈 타일링(Penrose tiling)과 같은 세미-정규 격자를 포함하며, 그에 국한되지 않는, 다른 유형의 그리드도 역시 여기서 사용되는 용어로서 "정규"로 간주된다.
교란된 정규 그리드 위치도해(192)는 정규 그리드의 종전의 정의에 기초한다. 그러나, 교란된 정규 그리드 설계(192)의 샘플은 그것들의 대응하는 그리드 교차로부터 오프셋을 가지고 벗어날 수 있다. 일례로, 샘플은 무작위의 (예컨대, 0도부터 360도까지) 각도와 무작위의 거리, 또는 무작위의 x와 y 오프셋에 의해 벗어날 수 있으며, 이는 소정의 범위로 국한되거나 또는 국한되지 않을 수 있다. 예컨대, 적은 수의 시드(seed)에 기초하거나, 테이블로부터 검색(順覽)되는 하드웨어에 의하거나 또는 의사 난수(擬似亂數)의 함수를 사용하는 많은 방법으로 오프셋이 생성될 수 있다. 또, 교란된 정규 그리드 설계(192)는 모든 유형의 정규 그리드(예컨대, 정사각형이나 육각형)에 기초할 수 있다. 교란된 직사각형이나 육각형 그리드가, 이 그리드 유형의 기하도형적 특성 때문에, 특히 바람직할 수도 있다.
확률적 샘플 위치도해(194)는 샘플을 위치하는 제3의 잠재적 설계 유형을 나타낸다. 확률적 샘플 위치는 샘플을 한 영역(예컨대, 디스플레이 장치나 특정한 윈도우 상의 표현 영역)의 전체에 대해 무작위로 분배하는 것을 포함한다. 샘플의 무작위 위치는, 예컨대, 의사 난수(擬似亂數)를 생성하는 내부 클럭과 같은 난수발생기를 사용함으로써, 수많은 다른 방법에 의해 이루어질 수 있다. 난수 또는 위치는 또한 미리 계산되어 메모리에 저장될 수도 있다.
어떤 거리에 따라 서로 회피하는 샘플위치를 생성하기 위해 설계된 다양한 통계적인 위치도해에 기초하는 다양한 다른 위치도해가 사용될 수 있다.
상술한 위치생성 도해는, 미리 계산된 또는 렌더링하는 동안 온 더 플라이로 생성되는 위치 또는 그 조합을 사용할 수 있다.
이제 도 9를 보면, 교란된 정규 그리드 설계(192)의 일례가 나타나 있다. 이 실시예에서, 샘플은 정규 정사각형 그리드로부터 x- 및 y- 오프셋만큼 무작위로 오프셋을 가지고 있다. 확대된 영역이 나타내는 바와 같이, 샘플(198)은 대응하는 그리드 교차점(196)으로부터의 수평 변위를 특징짓는 x- 오프셋(134)을 가지고 있다. 마찬가지로, 샘플(198)은 또한, 대응하는 그리드 교차점(196)으로부터 그 수직 변위를 특징짓는 y-오프셋(136)을 가지고 있다. 무작위 오프셋은 또한 각도와 거리로 특징지어질 수 있다. 각도와 거리를 활용했던 앞에서 설명한 실시예에 있어서, x-오프셋(134) 및 y-오프셋(136)은 특정한 최소 및/또는 최대의 값 또는 값의 범위로 국한될 수 있다.
이제 도 10을 보면, 교란된 정규 그리드 설계(192)의 또 다른 실시예가 나타나 있다. 이 실시예에서, 샘플들은 "빈(bins)"(138A-D)으로 그룹되어진다. 이 실시예에서, 각 빈은 9개의(예컨대, 3x3의) 샘플을 포함한다. 다른 실시예로, 다른 빈 사이즈가 사용될 수도 있다(예컨대, 2x2 샘플 또는 4x4샘플을 저장하는 빈). 나타낸 실시예에서, 각 샘플의 위치는 빈의 위치에 관련한 오프셋으로서 결정된다. 빈의 위치는, 예컨대, 도면에서 나타낸 바와 같이 왼쪽 아래 구석부분과 같이 그리드에 관련하여 알맞은 위치로서 지정될 수 있다. 예를 들어, 샘플(198)의 위치는 x-오프셋(124)과 y-오프셋(126)을 빈(138D)의 구석(132D)의 x 및 y 좌표에 더함으로써 결정된다. 위에서 설명한 바와 같이, 이렇게 하면 일부 실시예에서 사용되는 샘플 위치 메모리의 사이즈를 줄일 수 있다.
도 11 - 샘플을 픽셀로 변환하기
이제도 11을 보면, 샘플버퍼(162)에 저장된 샘플을 픽셀로 신속히 변환하는 한가지 가능한 방법을 나타내고 있다. 이 실시예에서, 샘플버퍼(162)의 내용은 (예컨대, 컬럼 1-4와 같이) 컬럼으로 조직된다. 샘플버퍼(162)내 각 컬럼은 빈의 2차원적 배열을 포함할 수 있다. 컬럼들은 (예컨대, 하나 이상의 빈에 의해) 수평적으로 오버랩될 수 있으며, 각 컬럼은 콘볼루션 프로세스를 위한 특별한 샘플-픽셀 연산유닛(170A-D)에 할당될 수 있다. 오버랩의 양은 사용되는 필터의 범위에 의존할 수 있다. 도면에서 나타난 예는 두 개의 빈의 오버랩(정사각형(188)과 같은 각 정사각형은 하나 이상의 샘플을 포함하는 단일의 빈을 나타낸다)을 나타낸다. 유리하게, 이렇게 구성하면 샘플-픽셀 연산유닛(170A-D)은, 독립적으로 그리고 병렬로 작업할 수 있도록 할 수 있으며, 각각의 샘플-픽셀 연산유닛(170A-D)은 그 컬럼을 받고 변환한다. 컬럼을 오버랩하면, 한 픽셀의 범위보다 더 큰 연산자에 대한, 컬럼 경계에서 나타나는 시각적 띠 또는 다른 아티팩트가 제거된다.
이제 도 11A를 보면, 수퍼-샘플되는 샘플버퍼로부터의 샘플을 읽는 방법의 일례를 보다 상세하게 나타내고 있다. 도면에서 나타내는 바와 같이, 콘볼루션 필터 커널(kernel;400)이 출력 픽셀을 생성하기 위해 컬럼(414)을 가로질러 간다(화살표(406)를 보라). 하나 이상의 샘플-픽셀 연산유닛(170)은 콘볼루션 필터 커널(400)을 수행할 수 있다. 빈 캐시(bin cache;408)는 출력 픽셀에 잠재적으로 기여할 수 있는 샘플에 대한 신속한 액세스를 제공하기 위해 사용될 수 있다. 콘볼루션 프로세스가 진행함에 따라, 빈은 수퍼-샘플되는 샘플버퍼로부터 읽히고 빈 캐시(408)에 저장된다. 일례로, 더 이상 필요없는 빈(410)은 새로운 빈(412)에 의해 캐시에 덮어씌워진다. 각 픽셀이 생성됨에 따라, 콘볼루션 필터 커널(400)이 이동한다. 커널(400)은 컬럼 내에서 순차적 방식으로 화살표(406)로 지시된 방향으로 진행하는 것으로 구상화될 수 있다. 커널(400)이 컬럼의 끝에 도달할 때, 샘플의 하나 이상의 행 아래로 이동하며, 그리고 나서 다시 진행한다. 따라서, 콘볼루션 프로세스는 주사선 방식으로 진행하며, 표시용 하나의 컬럼의 출력 픽셀을 생성한다.
이제 도 11B를 보면, 잠재적 경계 조건을 나타내는 다이어그램을 도시하고있다. 일례로, 샘플 윈도우(420)의 외부에 해당하는 빈은 사용자(user)에 의해 특정된 소정의 배경색을 가지는 샘플들로 바뀔 수 있다. 또 다른 실시예로, 윈도우 밖에 해당하는 빈은 가중 인자(weighting factor)를 0으로 셋팅함(그리고는 정규화 계수를 동적으로 연산함)에 의해서, 이용되지 않는다. 또 다른 실시예로, 윈도우의 내부 에지(edge)에 있는 빈은 윈도우 외부의 그 빈을 교체하기 위해 복제될 수 있다. 이는 외부 빈(430)이 빈(432) 내부의 거울에 의해 교체됨에 의해 지시된다.
도 12 - 샘플 픽셀을 수퍼-샘플되는 샘플버퍼로 렌더링하기.
도 12는 샘플 픽셀을 드로어(draw)하고 수퍼-샘플되는 샘플버퍼로 렌더링하는 방법의 일례에 대한 흐름도이다. 도 12의 어떤 단계는 동시에 또는 다른 순서로 발생할 수 있다. 이 실시예에서, 그래픽 시스템은 호스트 CPU(102)나 메인 메모리(106)로부터 직접 그래픽 명령과 그래픽 데이터를 수신한다(단계200). 다음에, 그 명령과 데이터는 하나 이상의 렌더링 유닛(150A-D)으로 발송된다(단계 202). 만약 그래픽 데이터가 압축된 것이면(단계 204), 렌더링 유닛(150A-D)은 데이터를 사용가능한 포맷, 예컨대 삼각형으로 압축을 푼다(단계 206). 다음에, 삼각형은 예컨대, 스크린 공간으로 변환되고, 라이팅되고, 전환되는 등의 과정을 거친다(단계 208A). 만약 그래픽 시스템이 가변 해상도 수퍼 샘플링을 수행하면, 삼각형은 샘플 밀도 영역 경계(단계 208B)와 비교된다. 가변-해상도 수퍼-샘플되는 샘플버퍼 임플러먼테이션에서, 디스플레이 장치의 다른 영역은 수많은 인자(예컨대, 눈이나 머리 추적에 의해 판단되는 스크린상의 관심(attention)의 중심)에 기초하여 할당된 다른 샘플 밀도일 수 있다. 샘플 밀도 영역은 아래에서 더욱 상세히 설명된다(아래의 가변 해상도 샘플버퍼라는 제목의항목을 보라). 삼각형이 영역 경계(단계 210)를 가로지르면, 삼각형은 영역 경계를 따라 2개의 보다 작은 다각형으로 나뉘어 질 수 있다(단계 212). 이는 각각 새로이 형성된 삼각형이 단일의 샘플 밀도를 가지도록 해 준다. 일례로, 그래픽 시스템은 단순히 전체 삼각형을 두 번(즉, 각 영역마다 한 번) 사용하고 나서, 삼각형을 효과적으로 자르기 위해 방형경계선(方形境界線;bounding box)을 사용할 수 있다.
다음으로, (예컨대, 정규 그리드, 교란된 정규 그리드, 또는 확률적) 샘플 위치도해 중 하나가 샘플 위치 메모리(184)로부터 선택된다(단계 214). 샘플 위치도해는 샘플 위치 메모리(184)로 미리 프로그램되어 있는 것이 일반적이지만, 또한 "온 더 플라이(on the fly)"로 선택될 수도 있다. 이 샘플 위치도해와 삼각형을 담고 있는 영역의 샘플 밀도에 기초하여, 렌더링 유닛(150A-D)은 어느 빈이 삼각형의 영역 내에 배치된 샘플을 담을 것인가를 결정한다(단계 216). 그러면, 이들 빈(bins) 내의 샘플을 위한 오프셋은 샘플 위치 메모리(184)로부터 읽혀진다(단계 218). 그러면, 각 샘플의 위치는 오프셋을 이용하여 계산되며, 샘플이 삼각형 내부에 있는지를 판단하기 위해 삼각형의 꼭지점들과 비교된다(단계 220). 단계 220은 아래에서 더욱 자세히 논의된다.
삼각형 내부에 있는 것으로 판단된 각 샘플에 대하여, 렌더링 유닛은 샘플의 컬러, 알파 및 다른 특성을 계산하는 것에 의해 샘플을 드로어(draw)한다. 이는 삼각형의 꼭지점들과 관련한 텍스쳐 맵 정보와 컬러에 기초한,보간법(補間法;interplation)과 라이팅 연산을 포함할 수 있다. 일단 샘플이 렌더링되면, 스케쥴 유닛(154)으로 전송되는데, 그러면 스케쥴 유닛(154)은 샘플을 샘플버퍼(162)에 저장한다(단계 224).
위에서 설명된 방법의 실시예는 설명의 목적으로만 이용되는 것이며, 제한하고자 하는 것이 아니다. 예를 들어, 몇가지 실시예에서, 도면에서 직렬적으로 발생하는 것으로 나타난 단계들은 병렬적으로 수행될 수도 있다. 더욱이, 그래픽 시스템의 어떤 실시예에서, 몇 가지 단계들(예컨대, 기하도형적 압축을 수행하지 않는 실시예에서 단계(204-206), 또는 가변 해상도 수퍼-샘플되는 샘플버퍼를 수행하지 않는 실시예에서 단계(201-212))은 축소되거나 삭제될 수도 있다.
어느 샘플이 렌더링되고 있는 다각형 내부에 존재하는가를 결정하기
어느 샘플이 렌더링되고 있는 다각형 내부에 존재하는가를 비교하는 것은 수많은 다른 방법으로 행해질 수 있다. 일례로, 우선, 삼각형을 정의하는 3개의 꼭지점간 델타(delta)가 결정된다. 예를 들어, 이 델타는 첫 번째 꼭지점부터 두 번째 꼭지점(v2-v1)=d12, 두 번째 꼭지점부터 세 번째 꼭지점(v3-v2)=d23, 그리고 3번째 꼭지점으로부터 다시 첫 번째 꼭지점(v1-v3)=d31의 순서로 취해진다. 이 델타들은 벡터를 형성하고, 각 벡터는 (예컨대, 델타 X 계수 및 델타 Y 계수의 두 개의 부호 비트를 사용함으로써) 좌표 평면의 4개의 사분면 중 하나에 속하는 것으로 분류될 수 있다. 벡터가 X-메이저 벡터인지 또는 Y-메이저 벡터인지를 결정하는 제3의 조건이 부가될 수 있다. 이것은 abs(delta_x)값이 abs(delta_y)값보다 큰지여부를 계산하는 것에 의해 결정될 수 있다.
이 3비트의 정보를 사용함으로써, 벡터는 각각 좌표 평면의 8개의 다른 영역 중 하나에 속하는 것으로 분류될 수 있다. 이 영역을 정의하기 위해 3비트가 사용되면, (2만큼 왼쪽으로 이동한) X-부호 비트, (1만큼 왼쪽으로 이동한) Y-부호 비트, 그리고 X-메이저 비트가 도 12A에 나타낸 바와 같이 8개 영역을 생성하기 위해 사용될 수 있다.
다음으로, 삼각형의 내부 부분을 정의하기 위해 3개의 에지(edge) 방정식이 이용될 수 있다. 이 에지 방정식(또는 반-평면 방정식)들은 기울기-인터셉트(slope-intercept) 형식을 사용함으로써 정의될 수 있다. 필요한 수의 범위를 줄이기 위해, (기울기 값의 절대값이 0부터 1의 범위 내에 있도록) 두 X-메이저 및 Y-메이저 방정식 형식이 사용될 수 있다. 따라서, 2개의 에지 방정식은 다음과 같다:
X-메이저: y-mㆍx-b < 0, 포인트가 선의 아래에 있을 경우
Y-메이저: x-mㆍy-b < 0, 포인트가 선의 왼쪽에 있을 경우
방정식의 포인트가 선 아래에 있을 경우 X-메이저 방정식이 음수 대 양수 값을 만드는 반면에, 방정식의 포인트가 선의 왼쪽에 있을 경우 Y-메이저 방정식이 음수 대 양수 값을 만든다. 선의 어느 쪽이 "억셉트(accept)"인지 알고 있으므로, 에지 방정식 결과의 부호 비트(또는 그 반대의 부호 비트)는 샘플이 "억셉트(accept)"측상에 있는지 아닌지 결정하는데 사용될 수 있다. 이것은 여기서 "억셉트 비트(accept bit)"로 호칭된다. 따라서, 만약:
X-메이저: (y-mㆍx-b<0)<xor>accept
Y-메이저: (x-mㆍy-b<0)<xor>accept
이면 선의 억셉트 측 상에 샘플이 있다.
억셉트 비트는 다음의 테이블에 따라서 계산될 수 있는데, 여기서 cw는 삼각형이 시계방향(cw=1) 또는 반시계방향(cw=0)인지 가리킨다.
1:억셉트=!cw
0:억셉트=cw
4:억셉트=cw
5:억셉트=cw
7:억셉트=cw
6:억셉트=!cw
2:억셉트=!cw
3:억셉트=!cw
이러한 표현 규칙을 깨는 것도 또한 행해질 수 있다(예컨대, 좌표축이 양의 8분공간에 속하는 것으로 정의될 수 있다). 마찬가지로, X-메이저는 기울기 상에서 균형을 이루는 모든 포인트를 가지는 것으로 정의될 수 있다.
다른 실시예로서, 에지의 억셉트 측은 에지 방정식을 삼각형의 셋째 꼭지점(에지를 형성하는 2개의 꼭지점 중 어느 것도 아닌 꼭지점)에 적용하는 것으로써 결정될 수 있다. 이 방법은 큰 추가적인 비용을 초래할 수 있으며, 위에서 설명된 기술에 의해서는 이용될 수 없다.
삼각형의 "지향성(faced-ness)"을 결정하기 위하여(즉, 삼각형이 시계방향 또는 반-시계방향인지 결정하기 위하여), 삼각형의 두 에지의 델타-방향(delta-direction)이 검사되고 두 에지의 기울기가 비교될 수 있다. 예를 들어, 에지(12)가 1의 델타-방향을 가지고 두 번째 에지(에지(23))가 0, 4, 또는 5의 델타-방향을 가진다고 가정하면, 삼각형은 반시계방향이다. 그러나, 만약 에지(23)가 3, 2, 또는 6의 델타-방향을 가지면, 삼각형은 시계방향이다. 만약 에지(23)가 1의 델타-방향을 가지면(즉, 에지(12)와 같이), 두 에지의 기울기를 비교하면 균형이 깨진다(양자 모두 x-메이저이다). 에지(12)가 보다 큰 기울기를 가지면, 삼각형은 반시계방향이다. 에지(23)가 (에지(12)와 정 반대인) 7의 델타-방향을 가지면, 삼각형이 시계방향인지 또는 반시계방향인지의 견지에서 기울기는 반대 결과와 비교된다.
적절한 지향성을 판단하는 모든 경우에서, 에지(12) 및 에지(23) 델타-방향(delta-direction)의 모든 조합에 동일한 분석이 철저하게 적용될 수 있다. 균형을 이루는 경우에서 기울기가 동일하면, 삼각형은 변질된다(즉, 내부 공간이 없게됨). 그것은 명백하게 검사될 수 있고 가려낼 수 있으며, 또는, 수에 관해 적절히 주의를 기울이면, 아무 픽셀도 렌더링하지 않으므로 묵과될 수 있을 것이다. 삼각형이 뷰 평면(view plane)을 쪼개는 것은 한가지 특별한 경우이지만, 그것은 (예컨대, 전면과 후면 클리핑이 수행될 때) 파이프라인(pipeline)에서 먼저감지될 수 있을 것이다.
대부분의 경우에서, 삼각형의 한쪽만이 렌더링된다는 점에 주목하라. 따라서, 삼각형의 지향성이 결정된 후, 그 면이 거절될 것이라면, 삼각형은 가려내어 질 수 있다(즉, 픽셀의 생성없이 더 이상의 처리 없음을 가정할 수 있다). 이 지향성 결정은 이미 계산된 인자를 넘어서 (즉, 에지(12) 기울기와 에지(23) 기울기와의) 하나의 추가적인 비교를 이용만 하는 점에 주목하라. 많은 종래의 접근방법은 (이전의 셋-업 계산 단계를 통하여) 보다 복잡한 계산을 활용할 수 있게 한다.
도 13 - 수퍼-샘플되는 샘플버퍼내의 샘플을 선택하고 여과함으로써 출력 픽셀을 생성하기
도 13은 출력 픽셀을 생성하기 위하여, 수퍼-샘플되는 샘플버퍼에 저장되어 있는 샘플을 선택하고 여과하는 방법의 일례에 대한 흐름도이다. 우선, 한 스트림의 빈(bins)이 수퍼-샘플되는 처리버퍼로부터 읽힌다(단계 250). 이들은, 샘플-픽셀 연산유닛(170)이 콘볼루션 프로세서 동안 쉽게 억세스할 수 있게 하기 위해 하나 이상의 캐시에 저장될 수 있다(단계 252). 다음으로, 어떤 빈(bins)이, 여과 프로세스에 의해 현재 생성되고 있는, 출력 픽셀에 기여하는 샘플을 담고 있는지 판단하기 위해 검사받는다(254). 그러면, 출력 픽셀에 기여할 수 있는 빈(bin) 안에 있는 각 샘플은, 그 샘플이 실제로 공헌을 하는지 판단하기 위해 개별적으로 검사받는다(단계 256-258). 이러한 판단은, 그 샘플과 생성되는 출력 픽셀의 중심사이의 거리에 기초하여 할 수 있다.
일례로, 샘플-픽셀 연산유닛(170)은 이 거리(즉, 샘플 위치에서의 필터의 범위)를 계산한 후 그것을 사용하여 필터 범위에 따라 필터 가중치를 저장하고 있는 테이블에 색인을 달도록 구성될 수 있다(단계 260). 그러나, 또 다른 실시예로, (전형적으로 제곱근 함수를 포함하는) 픽셀의 중심로부터 샘플까지의 거리를 결정하기 위한 잠재적으로 고비용의 계산은, 필터 중량 테이블(table of filter weights)의 인덱스와 일치하는 거리를 사용함으로써 피할 수 있다. 다른 방법으로는, x 및 y의 함수는 거리 계산에 의존하는 함수 대신에 사용할 수 있다. 일례로, 이것은 거리의 부동소수점 포맷(예컨대, 4 또는 5 비트의 가수(假數)와 3 비트의 지수)을 활용함으로써 이루어 질 수 있으며, 그에 의해 값의 증가된 범위를 보상하면서도 많은 정확성이 유지될 수 있다. 일례로, 테이블은 ROM에서 실행될 수 있다. 그러나, RAM 테이블 또한 사용될 수 있다.
유리하게는, RAM 테이블을 사용하면, 몇가지 실시예에서, 그래픽 시스템이 프레임 당 기준(per-frame basis)에서 필터 계수를 변화시킬 수 있다. 예를 들어, 필터 계수는 디스플레이의 알려진 결핍을 보상하거나 또는 사용자의 개인적 기호를 위해 변화될 수 있다. 그래픽 시스템은 또한, 프레임 내의 스크린 영역에 관한 필터 계수 또는 출력 픽셀 당 기준(per-output pixel basis)에서의 필터 계수를 변화시킬 수 있다. 또 다른 실시예로, 특수화된 하드웨어(예컨대, 곱셈기와 덧셈기)를 사용하여 각 샘플을 위한 희망하는 필터 중량을 실제로 계산할 수 있다. 콘볼루션 필터의 한계 밖의 샘플을 위한 필터 중량(filter weight)은 0의 필터 중량으로 단순히 곱해질 수 있으며(단계 62), 또는 그것들은 연산에서 완전히 제거될 수도 있다.
샘플을 위한 필터 중량이 결정되면, 샘플은 필터 중량으로 곱해질 수 있다(단계 264). 그러면 가중된 샘플은 최종 출력 픽셀의 컬러값을 결정하기 위하여 현재 총계에 더해질 수 있다(266). 필터 중량은 또한 현재 총 픽셀 필터 중량에 더해질 수 있으며(단계 268), 이것은 여과된 픽셀을 정규화하는데 사용된다. 정규화는 콘볼루션 프로세스에 의해 만들어진 게인(gain)을 보상함에 의해 여과된 픽셀(예컨대, 다른 픽셀보다 더 많은 샘플을 가진 픽셀)이 너무 밝거나 또는 너무 어둡게 나타나는 것을 유익하게 방지한다. 모든 기여하는 샘플이 가중되고 더해진 후에, 전체 픽셀 필터 중량은 여과에 의하여 게인(gain)을 나누기 위해 사용될 수 있다(단계 270). 마지막으로, 정규화된 출력 픽셀은 감마 수정(gamma correction), 디지털-아날로그 변환(필요한 경우), 및 최종적인 디스플레이(단계 274)를 위해 출력될 수 있다.
도 14 - 출력 픽셀 콘볼루션의 예
도 14는 출력 픽셀 콘볼루션의 단순화된 예를 나타내고 있다. 도면에서 나타내는 바와 같이, 4개의 빈(bin;288A-D)은 출력 픽셀에 기여할 수 있는 샘플을 담고 있다. 이 예에서, 출력 픽셀의 중심, 즉, 각 출력 픽셀을 생성하기 위해 필터가 적용되는 중심 장소는 빈(bin)의 경계(288A-288D)에 위치한다. 각 빈(bin)은 16개의 샘플을 포함하고, 출력 픽셀을 생성하기 위해 2 네개의 bin(2 x 2)의 배열이 여과된다. 원형 필터가 사용된다고 가정하면, 픽셀 중심로부터의 각 샘플의 거리는 어느 필터 값이 그 샘플에 적용될 것인가를 결정한다. 예를 들어, 샘플(296)이 상대적으로 픽셀 중심에 가깝고, 그래서 8의 필터 값을 가지는 필터영역 내에 해당한다. 마찬가지로, 샘플(294)과 샘플(292)은 4와 2의 필터값을 가지는 필터영역 내에 해당한다. 그러나 샘플(290)은 최대 필터 범위 밖에 있으며, 그래서 0의 필터값을 가진다. 그러므로 샘플(290)은 출력 픽셀의 값에 기여하지 않을 것이다. 이 유형의 필터는 픽셀 중심에 가장 가까이 위치하는 샘플이 가장 많이 기여하는 반면, 픽셀 중심에서 멀리 떨어져 있는 픽셀은 최종 출력 픽셀값에 보다 덜 기여할 것이다. 이 유형의 여과는 이미지의 갑작스런 변화(예컨대, 검은선으로부터 밝은 배경에 이르기까지)를 부드럽게 함에 의해 앤티-앨리어싱을 자동적으로 수행한다. 앤티-앨리어싱을 위한 다른 특히 유용한 유형의 필터로는 윈도우 싱크 필터(windowed sinc filter)가 있다. 유리하게는, 윈도우 싱크 필터는 혼합되거나 "불분명"하게 된 이미지의 일부를 다시 날카롭게 하는 음의 돌출부를 가지고 있다. 음의 돌출부는 계산되는 픽셀로부터 샘플을 빼도록 하는 필터 영역이다. 콘트라스트에서 음의 돌출부의 어느 한 쪽에 있는 샘플들이 계산되는 픽셀에 더해진다.
샘플(290-296)의 예제값이 박스(300-308)에 나타나 있다. 이 예에서, 각 샘플은 그 샘플의 위치 데이터에 더하여 적색, 녹색, 청색, 알파값을 포함한다. 블록(310)은, 비정규화된 출력 픽셀에 대해, 각 픽셀 구성요소값을 연산하는 것을 나타낸다. 블록(310)이 나타내는 바와 같이, 잠재적으로 바람직하지 않은 게인(gain)이 최종 픽셀 값에 들어간다(즉, 2000의 적색 구성요소값을 가지는 출력픽셀은 그 샘플의 적색 구성요소값의 어느 것 보다도 훨씬 높다), 앞서 언급한 바와 같이, 필터값이 정규화값(308)을 얻기 위해 더해질 수 있다. 정규화값(308)은 출력 픽셀로부터 불필요한 게인(gain)을 나누는데 이용된다. 블록(312)은 이 과정 및 최종 정규화된 예제픽셀값을 나타내고 있다.
여기서 사용된 값들은 설명의 목적을 위해 선택된 것일 뿐이며, 그에 제한하고자 하는 의도가 아니라는 점에 주의해야 한다. 예를 들어, 필터는 각각 다른 필터값을 가지고 수많은 영역을 가질 수 있다. 일례로, 어떤 영역은 음의 필터값을 가질 수 있다. 활용되는 필터는, 픽셀 중심로부터의 샘플의 거리에 기초한 각 샘플을 위해 값이 구해지는 연속함수일 수 있다. 또한, 부동소수점값이 정확도의 증가를 위해 이용될 수도 있다는 점에 주목하라. 다양한 필터, 예컨대, 원기둥(cylinder), 원뿔(cone), 가우션(gaussian), 카트멀-롬(Katmull-Rom), 윈도우 싱크(windowed sinc), 미첼 필터(Mitchell filter), 박스(box), 텐트(tent)가 활용될 수 있다.
풀-스크린 앤티-앨리어싱(Full-Screen Anti-aliasing)
현재 수많은 3D 그래픽 시스템이 라인(line)과 도트(dot)에 대해 실-시간(real time) 앤티-앨리어싱만을 제공하고 있다. 어떤 시스템은 다각형의 에지(edge)를 "흐릿(fuzzed)"하게 할 수 있지만, 이 기술은 전형적으로 모든 다각형이 깊이(depth)에 있어서 예비적으로 소트(sort)되어 있어야만 최적으로 동작한다. 이는 (다각형의 깊이를 예비-소트하지 않는) 대부분의 애플리케이션을 위한, 일반-목적의 3D 렌더링 하드웨어의 목적에 역행한다. 일례로, 그래픽 시스템(112)은 4x4-콘볼루션 필터로 여과된, 출력 픽셀 당 16개 샘플까지 확률적으로 샘플링함으로써, 풀-스크린 앤티-앨리어싱을 수행하도록 구성될 수 있다.
비록 위의 실시예들이 상당히 자세히 설명되었지만, 다른 버전도 가능하다. 위의 설명이 완전히 이해되면 본 설명분야에서 능숙한 자에게는 수많은 변경과 수정을 할 수 있음이 명백할 것이다. 다음의 특허청구의 범위는 그러한 모든 변경과 수정을 포함하는 것으로 해석되도록 의도되는 것이다. 여기서 사용된 표제는 조직화의 목적일 뿐이며, 여기서 제공되는 발명의 상세한 설명이나 첨부된 특허청구의 범위를 제한하고자 하는 것이 아닌 점에 주의한다.
본 설명분야에서의 숙련자에 의해 본 명세서 및 첨부도면이 재고(再考)되어 이해되면, 여기에 설명된 본 시스템 및 방법은 그래픽 시스템과 서브시스템, 컴퓨터, 계산 장치, 셋-톱 박스, 게임 콘솔, 피디에이(PDA;personal digital assistants), 디지털 텔레비전, 비디오 프로세서, 그래픽 프로세서, 멀티미디어 시스템 및 프로세서, 가상 현실 시스템 및 그밖의 렌더링 시스템 및/또는 디스플레이 그래픽 데이터 등을 포함하며 이에 한정되지 않는 수많은 다른 분야에 적용될 수 있다.

Claims (34)

  1. 하나 이상의 샘플을 렌더링하도록 구성된 프로세서(352)와;
    상기 샘플을 저장하기 위해 상기 프로세서에 결합된 샘플버퍼로서, 각 샘플이 하나 이상의 오프셋 값을 포함하는 위치정보에 각각 대응하는 샘플버퍼(162)와;
    상기 샘플버퍼에 결합되어, 표시용 출력픽셀을 생성하기 위해 위치정보에 기초하여 샘플버퍼로부터의 샘플을 여과할 수 있는 샘플-픽셀 연산유닛(360)을 포함하는 그래픽 시스템.
  2. 제1항에 있어서,
    상기 하나 이상의 오프셋 값은, 하나 이상의 미리 규정된 스크린 공간장소 또는 미리 규정된 그리드(grid)에 관련되어 있는 것을 특징으로 하는 그래픽 시스템.
  3. 제1항 또는 제2항에 있어서,
    상기 위치정보는 정규 그리드, 확률적인 패턴 또는 교란된 정규 그리드에 대응하는 것을 특징으로 하는 그래픽 시스템.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 프로세서는, 하나 이상의 오프셋 값과 미리 결정된 빈(bin) 좌표 또는미리 결정된 픽셀 중심좌표를 합성함으로써 계산된 샘플 위치에 따라 샘플을 렌더링할 수 있는 것을 특징으로 하는 그래픽 시스템.
  5. 제1항 내지 제4항중 어느 한 항에 있어서,
    상기 샘플-픽셀 연산유닛에 연결되어, 각각의 샘플에 대한 오프셋 값을 저장하는 이중 버퍼로 된 메모리(354)를 더 포함하고, 상기 샘플-픽셀 연산유닛은 상기 샘플의 오프셋 값을 결정하기 위해 상기 메모리에 액세스하도록 동작될 수 있는 것을 특징으로 하는 그래픽 시스템.
  6. 제5항에 있어서,
    상기 메모리는 샘플 버퍼에 저장된 복수의 샘플보다 적은 갯수의 복수의 오프셋 값을 저장하고, 상기 샘플-픽셀 연산유닛은 상이한 샘플에 대해 상이한 오프셋 값을 얻기 위해 복수의 상이한 인덱싱 방법을 이용하여 메모리를 액세스할 수 있는 것을 특징으로 하는 그래픽 시스템.
  7. 제1항 내지 제4항중 어느 한 항에 있어서,
    상기 프로세서가 상기 샘플을 상기 샘플버퍼로 렌더링할 때 사용하고, 각각의 샘플에 대한 위치정보를 저장하는 상기 프로세서에 연결된 제1 메모리와;
    각각의 샘플을 위한 위치정보를 저장하는 샘플-픽셀 연산유닛에 결합된 제2 메모리로서, 상기 샘플-픽셀 연산유닛이 샘플의 위치정보를 결정하기 위해 액세스하도록 상기 제2 메모리에 액세스 할 수 있는, 제2 메모리를 포함하는 것을 특징으로 하는 그래픽 시스템.
  8. 제7항에 있어서,
    상기 제1 메모리는 현재 프레임에 대한 현재 위치정보를 상기 제2 메모리로 전달하도록 동작될 수 있고,
    상기 샘플-픽셀 연산유닛은 상기 샘플의 현재 위치정보를 결정하기 위해 상기 제2 메모리를 사용하도록 동작될 수 있으며,
    상기 프로세서는 후속 프레임에 대한 후속 위치정보를 상기 제1 메모리에 저장하도록 동작될 수 있는 것을 특징으로 하는 그래픽 시스템.
  9. 제1항 내지 제8항중 어느 한 항에 있어서,
    상기 샘플은 빈(bins)에 따라 샘플버퍼에 저장되고,
    각각의 빈은 각 빈에서 샘플이 놓여지는 샘플버퍼의 영역을 규정하며,
    하나 이상의 오프셋 값은 스크린 공간에서 대응하는 빈의 위치와 관련되어 있는 것을 특징으로 하는 그래픽 시스템.
  10. 제1항 내지 제9항중 어느 한 항에 있어서,
    상기 프로세서는 상이한 프레임에서 샘플에 대한 상이한 위치정보를 생성하기 위해 구성되어 있는 것을 특징으로 하는 그래픽 시스템.
  11. 복수의 샘플을 렌더링하도록 동작될 수 있고, 또 각각의 샘플에 대한 위치정보도 생성하도록 동작될 수 있는 프로세서(352)와;
    상기 샘플을 저장하기 위해 상기 프로세서에 연결되어, 상기 샘플과 함께 상기 위치정보도 저장하는 샘플버퍼(162)와;
    상기 샘플버퍼에 연결되어, 표시용 출력픽셀을 생성하기 위해 샘플을 여과하도록 동작될 수 있는 샘플-픽셀 연산유닛(360)을 포함하는 그래픽 시스템.
  12. 제11항에 있어서,
    각각의 샘플에 대한 위치정보는, 하나 이상의 오프셋 값을 포함하고, 오프셋 값은 샘플버퍼에서 미리 규정된 위치정보에 관련되어 있는 것을 특징으로 하는 그래픽 시스템.
  13. 제11항 또는 제12항에 있어서,
    각각의 샘플에 대한, 하나 이상의 오프셋 값은 x 오프셋 및 y 오프셋을 포함하는 것을 특징으로 하는 그래픽 시스템.
  14. 제11항, 제12항 또는 제13항에 있어서,
    상기 샘플은 빈에 따라 샘플버퍼에 저장되고,
    각각의 빈은 각 빈에서 샘플이 놓여진 샘플버퍼의 영역을 규정하며,
    각각의 샘플에 대한 위치정보는 하나 이상의 오프셋 값을 포함하고, 하나 이상의 오프셋 값은 빈에 관련된 오프셋을 포함하며,
    각 빈내의 각 샘플에 대한 위치는 샘플과 연관된 하나 이상의 오프셋 및 샘플 빈의 위치를 이용하여 결정되는 것을 특징으로 하는 그래픽 시스템.
  15. 제11항 내지 제14항중 어느 한 항에 있어서,
    상기 위치정보는 프로그램 가능하고, 상기 프로세서는 샘플버퍼의 프로그램 가능한 위치에서 복수의 샘플을 렌더링하도록 동작될 수 있는 것을 특징으로 하는 그래픽 시스템.
  16. 제11항 내지 제15항중 어느 한 항에 있어서,
    상기 위치는 프레임 기준(per frame basis)마다 또는 빈 기준(per bin basis)마다 프로그램 가능한 것을 특징으로 하는 그래픽 시스템.
  17. 그래픽 시스템의 표시용 픽셀 생성방법에 있어서,
    각 복수의 샘플을 위한 위치정보를 생성하는 단계로서, 각 샘플을 위하여 상기 위치 정보는 하나 이상의 오프셋 값을 포함하고, 상기 오프셋 값은 샘플버퍼내의 미리 정의된 위치에 관련된, 위치정보 생성단계와;
    상기 위치정보를 이용하여 복수의 샘플을 렌더링하는 단계와;
    상기 샘플을 샘플버퍼에 저장하는 단계와;
    상기 위치정보를 이용하여 샘플을 선택하는 단계 및 표시용 출력픽셀을 생성하기 위해 선택된 샘플을 여과하는 단계를 포함하고, 샘플버퍼에 저장된 복수의 샘플에 따라 출력픽셀을 생성하는 단계를 포함하는 것을 특징으로 하는 그래픽 시스템의 표시용 픽셀 생성방법.
  18. 제17항에 있어서,
    상기 렌더링 단계는 샘플의 위치를 생성하기 위해 하나 이상의 오프셋 값을 이용하는 단계를 포함하고,
    상기 렌더링 단계는 샘플에 대한 샘플정보를 계산하기 위해 상기 위치를 이용하는 단계를 포함하며,
    상기 출력픽셀 생성단계는 샘플의 위치를 생성하기 위해 상기 하나 이상의 오프셋 값을 이용하는 단계를 포함하고,
    상기 출력픽셀 생성단계는 여과를 위한 샘플의 선택시 상기 위치를 이용하는 것을 특징으로 하는 그래픽 시스템의 표시용 픽셀 생성방법.
  19. 제17항 또는 제18항에 있어서,
    각각의 샘플에 대한 하나 이상의 오프셋 값은 x 오프셋 및 y 오프셋을 포함하는 것을 특징으로 하는 그래픽 시스템의 표시용 픽셀 생성방법.
  20. 제17항, 제18항 또는 제19항 중 어느 한 항에 있어서,
    상기 하나 이상의 오프셋 값은 미리 결정된 그리드와 관련되어 있는 것을 특징으로 하는 그래픽 시스템의 표시용 출력픽셀 생성방법.
  21. 제17항 내지 제20항 중 어느 한 항에 있어서,
    상기 하나 이상의 오프셋 값은 샘플의 위치를 생성하는데 사용될 수 있고, 상기 위치는 상기 하나 이상의 오프셋 값과 미리 결정된 빈 좌표 또는 미리 결정된 픽셀 중심좌표를 합성함으로써 계산되는 것을 특징으로 하는 그래픽 시스템의 표시용 출력픽셀 생성방법.
  22. 제21항에 있어서,
    상기 위치정보를 메모리에 저장하는 단계를 더 포함하고,
    상기 메모리는 샘플버퍼에 저장된 샘플보다 더 적은 기입사항을 가지는 검색 테이블 메모리이며, 상기 출력픽셀 생성단계는 샘플의 오프셋 값을 결정하기 위해 검색 테이블 메모리에 색인을 넣는 단계를 포함하는 것을 특징으로 하는 그래픽 시스템의 표시용 픽셀 생성방법.
  23. 제21항 또는 제22항에 있어서,
    상기 메모리는 어드레스를 이용하여 어드레스 될 수 있고,
    상기 오프셋 값 저장 단계는 상기 샘플버퍼에 저장된 샘플의 수보다 적은 갯수의 오프셋 값을 저장하는 단계를 포함하고,
    상기 출력픽셀 생성 단계는 상기 빈에 있는 샘플에 대한 상이한 오프셋 값을 얻기 위해 어드레스에서의 비트(bits)를 조작하는 것을 포함하는 것을 특징으로 하는 그래픽 시스템의 표시용 픽셀 생성방법.
  24. 제17항에 있어서,
    상기 오프셋 값을 제1 메모리에 저장하는 단계을 더 포함하고,
    상기 렌더링 단계는 특정 원형(primitive)에 대해 어느 샘플을 렌더링할 것인지 결정하기 위해 제1 메모리로부터 상기 오프셋 값을 액세스하는 단계를 포함하는 것을 특징으로 하는 그래픽 시스템의 표시용 픽셀 생성방법.
  25. 제24항에 있어서,
    상기 오프셋 값을 제2 메모리에 저장하는 스텝을 더 포함하고,
    상기 출력픽셀 생성 단계는 특정 출력픽셀에 대한 샘플의 기여를 결정하기 위해 제2 메모리로부터 상기 오프셋 값을 액세스하는 단계를 포함하는 것을 특징으로 하는 그래픽 시스템의 표시용 픽셀 생성방법.
  26. 제17항 내지 제25항 중 어느 한 항에 있어서,
    상기 저장 단계는 빈에 따라 상기 샘플을 상기 샘플버퍼에 저장하는 단계를 포함하고, 상기 오프셋 값은 대응하는 빈의 위치에 관련되어 있는 것을 특징으로 하는 그래픽 시스템의 표시용 픽셀 생성방법.
  27. 제17항 내지 제26항 중 어느 한 항에 있어서,
    상기 출력픽셀 생성 단계는,
    상기 출력픽셀을 형성하기 위해 선별된 저장 샘플을 여과하는 단계와,
    프레임 버퍼의 개재 없이 상기 출력픽셀을 디스플레이 장치에 제공하는 단계를 포함하는 것을 특징으로 하는 그래픽 시스템의 표시용 픽셀 생성방법.
  28. 복수의 샘플을 렌더링할 수 있는 프로세서(352)와;
    상기 샘플을 저장하기 위해 상기 프로세서에 결합된 샘플버퍼(162)를 포함하고;
    상기 프로세서는 빈(bins)에 따라 샘플을 상기 샘플버퍼에 저장할 수 있고;
    상기 샘플은 빈의 순서에 따라 샘플버퍼에 저장되고, 상기 빈의 순서는 각 빈에서 샘플의 위치를 지시하고;
    상기 샘플버퍼에 결합되고, 상기 샘플의 위치에 따라 샘플을 선별하고, 표시용 출력픽셀을 생성하기 위해 선별된 샘플을 여과하도록 동작될 수 있는 샘플-픽셀 연산유닛(360)을 포함하는 그래픽 시스템.
  29. 제28항에 있어서,
    각 샘플에 대해서, 픽셀-연산유닛은 각 빈 안의 각 샘플의 빈의 순서에 적어도 부분적으로 기초하여 각 샘플의 위치를 생성할 수 있는 것을 특징으로 하는 그래픽 시스템.
  30. 제28항에 있어서,
    상기 빈의 순서에 따라 각각의 샘플에 대한 위치정보를 저장하는 픽셀-연산유닛에 연결된 메모리를 더 포함하고;
    상기 픽셀-연산유닛은 상기 샘플의 위치정보를 결정하기 위해 메모리에 색인을 넣는데 있어서 빈에서의 샘플의 빈 순서(bin ordering)를 사용하도록 동작될 수 있고;
    상기 픽셀-연산유닛은 샘플을 선별하기 위해 위치정보를 이용하는 것을 특징으로 하는 그래픽 시스템.
  31. 제28항에 있어서,
    각각의 샘플에 대하여, 상기 위치정보는 하나 이상의 오프셋 값을 포함하고, 상기 오프셋 값은 샘플버퍼 또는 빈에서 미리 정의된 위치에 관련되어 있는 것을 특징으로 하는 그래픽 시스템.
  32. 제28항에 있어서,
    상기 메모리는 상기 샘플버퍼의 하나의 빈에 대응하는 복수의 오프셋 값을 저장하고;
    상기 픽셀-연산유닛은 상기 샘플버퍼의 각각의 빈에 대한 상기 오프셋 값을재사용할 수 있는 것을 특징으로 하는 그래픽 시스템.
  33. 제1항 내지 제10항 및 제28항 내지 제32항 중 어느 한 항에 있어서,
    상기 픽셀-연산유닛은 저장된 샘플을 선별 및 여과하고, 프레임 버퍼의 개재없이 직접 디스플레이 장치에 제공되는 출력픽셀을 생성하도록 동작될 수 있는 것을 특징으로 하는 그래픽 시스템.
  34. 제1항 내지 제10항 및 제28항 내지 제33항 중 어느 한 항에 있어서,
    상기 픽셀-연산유닛은 실시간(real time) 기준 또는 온 더 플라이(on-the-fly) 기준에서 출력픽셀을 형성하기 위해 샘플을 필터링하도록 구성되는 것을 특징으로 하는 그래픽 시스템.
KR1020017009656A 1999-02-17 2000-02-17 샘플 위치정보를 효율적으로 저장하는 수퍼-샘플되는샘플버퍼를 가지는 그래픽 시스템 KR20020031097A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US09/251,453 US6424343B1 (en) 1998-02-17 1999-02-17 Graphics system with programmable real-time sample filtering
US09/413,106 1999-10-06
US09/251,453 1999-10-06
US09/413,106 US6483504B1 (en) 1998-02-17 1999-10-06 Graphics system having a super sampled-sample buffer with efficient storage of sample position information
PCT/US2000/004147 WO2000049576A1 (en) 1999-02-17 2000-02-17 Graphics system having a super-sampled sample buffer with efficient storage of sample position information

Publications (1)

Publication Number Publication Date
KR20020031097A true KR20020031097A (ko) 2002-04-26

Family

ID=69375133

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017009656A KR20020031097A (ko) 1999-02-17 2000-02-17 샘플 위치정보를 효율적으로 저장하는 수퍼-샘플되는샘플버퍼를 가지는 그래픽 시스템

Country Status (1)

Country Link
KR (1) KR20020031097A (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100896155B1 (ko) * 2004-09-23 2009-05-11 퀄컴 인코포레이티드 내장형 디바이스의 플렉시블 안티에일리어싱
KR101065037B1 (ko) * 2008-12-24 2011-09-15 코오롱건설주식회사 섬유 보강재를 포함하는 라텍스 개질 콘크리트 조성물
KR101222360B1 (ko) * 2004-11-19 2013-01-15 텔레폰악티에볼라겟엘엠에릭슨(펍) 픽셀 샘플링용 방법 및 장치
CN112214174A (zh) * 2020-10-21 2021-01-12 合肥速显微电子科技有限公司 一种面向移动设备的基于闪存的高速缓存解压系统及方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100896155B1 (ko) * 2004-09-23 2009-05-11 퀄컴 인코포레이티드 내장형 디바이스의 플렉시블 안티에일리어싱
KR101222360B1 (ko) * 2004-11-19 2013-01-15 텔레폰악티에볼라겟엘엠에릭슨(펍) 픽셀 샘플링용 방법 및 장치
KR101065037B1 (ko) * 2008-12-24 2011-09-15 코오롱건설주식회사 섬유 보강재를 포함하는 라텍스 개질 콘크리트 조성물
CN112214174A (zh) * 2020-10-21 2021-01-12 合肥速显微电子科技有限公司 一种面向移动设备的基于闪存的高速缓存解压系统及方法

Similar Documents

Publication Publication Date Title
EP1055201B1 (en) Graphics system with variable resolution super-sampling
US7474308B2 (en) Graphics system having a variable density super-sampled sample buffer
US6417861B1 (en) Graphics system with programmable sample positions
EP1161743B1 (en) A graphics system configured to perform parallel sample to pixel calculation
US6801202B2 (en) Graphics system configured to parallel-process graphics data using multiple pipelines
EP1155386B1 (en) Graphics system which renders samples into a sample buffer and generates pixels in response to stored samples at different rates
EP1161745B1 (en) Graphics system having a super-sampled sample buffer with generation of output pixels using selective adjustment of filtering for reduced artifacts
EP1161744B1 (en) Graphics system having a super-sampled sample buffer with generation of output pixels using selective adjustment of filtering for implementation of display effects
EP1155385B1 (en) Graphics system having a super-sampled sample buffer with efficient storage of sample position information
EP1207497A2 (en) Graphics system with variable resolution super-sampling
KR20020031097A (ko) 샘플 위치정보를 효율적으로 저장하는 수퍼-샘플되는샘플버퍼를 가지는 그래픽 시스템
EP1290643A2 (en) Graphics system using a blur filter
KR20010113669A (ko) 병렬적 샘플-픽셀 연산을 수행하도록 구성된 그래픽 시스템
KR20010113670A (ko) 다른 속도에서 샘플을 샘플버퍼로 렌더링하고 저장샘플에응답하여 픽셀을 생성하는 그래픽 시스템
KR20010113671A (ko) 디스플레이 효과 수행을 위한 선별적 여과 조절을이용하여 출력 픽셀을 생성하는 수퍼-샘플되는 샘플버퍼를 가지는 그래픽 시스템
KR20020036775A (ko) 아티팩트 감소를 위해 선별적 여과 조절을 이용하여 출력픽셀을 생성하는 수퍼-샘플되는 샘플 버퍼를 가지는그래픽 시스템

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination