KR20020036775A - 아티팩트 감소를 위해 선별적 여과 조절을 이용하여 출력픽셀을 생성하는 수퍼-샘플되는 샘플 버퍼를 가지는그래픽 시스템 - Google Patents

아티팩트 감소를 위해 선별적 여과 조절을 이용하여 출력픽셀을 생성하는 수퍼-샘플되는 샘플 버퍼를 가지는그래픽 시스템 Download PDF

Info

Publication number
KR20020036775A
KR20020036775A KR1020017009659A KR20017009659A KR20020036775A KR 20020036775 A KR20020036775 A KR 20020036775A KR 1020017009659 A KR1020017009659 A KR 1020017009659A KR 20017009659 A KR20017009659 A KR 20017009659A KR 20020036775 A KR20020036775 A KR 20020036775A
Authority
KR
South Korea
Prior art keywords
sample
pixel
samples
filter
stored
Prior art date
Application number
KR1020017009659A
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,104 external-priority patent/US6496186B1/en
Application filed by 케네쓰 올센, 선 마이크로시스템즈, 인코포레이티드 filed Critical 케네쓰 올센
Publication of KR20020036775A publication Critical patent/KR20020036775A/ko

Links

Landscapes

  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

디스플레이를 리프레쉬(refresh) 하기 위해 수퍼-샘플되는 샘플버퍼와 프로그래머블 샘플-픽셀 연산유닛을 활용하는 컴퓨터 그래픽 시스템에 있어서, 상기 그래픽 시스템은 여과를 조절하여 아티팩트(artifact)를 줄이거나 디스플레이 효과를 실행할 수 있다. 일례로, 상기 그래픽 시스템은 그래픽 프로세서, 수퍼-샘플되는 샘플버퍼, 샘플-픽셀 연산유닛을 가질 수 있다. 상기 그래픽 프로세서는 복수의 샘플을 렌더링하고 그것들을 상기 샘플버퍼에 저장한다. 상기 샘플-픽셀 연산유닛은 수퍼-샘플되는 샘플버퍼로부터 샘플을 읽고 그 샘플을 각각의 출력 픽셀로 여과(filter) 또는 콘벌브(convolve)하며, 그러면 출력 픽셀은 디스플레이를 리프레쉬하는데 제공된다. 상기 샘플-픽셀 연산유닛은 상기 저장 샘플의 여과를 선별적으로 조절하여 아티팩트를 줄일 수 있는데, 예컨대, 이웃 프레임의 저장 샘플의 여과를 선별적으로 조절하여 이웃 프레임 사이의 아티팩트를 줄일 수 있다. 상기 필터 조절은, 상기 그래픽 프로세서가 샘플을 샘플버퍼로 렌더링하는 속도와 동일한 속도에서 또는 상기 렌더링 속도와 다른(예컨대, 더 높은) 속도에서, 샘플-픽셀 연산유닛이 출력 픽셀을 생성하는 상황에 적용될 수 있다. 샘플-픽셀 연산유닛은 저장 샘플의 여과를 조절하여 예컨대, 특히 패닝(상하좌우이동;panning), 줌잉(확대축소;zooming), 회전(rotation), 화면이동(moving scenes) 등의 디스플레이 효과를 실행할 수 있다. 샘플-픽셀 연산유닛은 또한, 부분적-픽셀 경계에서의 저장 샘플의 여과를 선별적으로 조절할 수 있다.

Description

아티팩트 감소를 위해 선별적 여과 조절을 이용하여 출력 픽셀을 생성하는 수퍼-샘플되는 샘플 버퍼를 가지는 그래픽 시스템{GRAPHICS SYSTEM HAVING A SUPER-SAMPLED SAMPLE BUFFER WITH GENERATION OF OUTPUT PIXELS USING SELECTIVE ADJUSTMENT OF FILTERING FOR REDUCED ARTIFACTS}
컴퓨터 시스템은 컴퓨터 스크린 또는 디스플레이 장치에 시각적 출력을 하기 위하여 전형적으로 그래픽 시스템에 의존한다. 초기의 그래픽 시스템은 프로세서가 출력으로 만들어내는 것을 취하고 그것을 스크린에 나타내는 것만 책임졌다. 본질적으로, 그것들은 단순한 중계기 또는 인터페이스로서 작동했다. 그러나, 현대의 그래픽 시스템은 대단한 처리능력을 가진 그래픽 프로세서를 포함한다. 그것은 단순한 중계기라기보다는 보조프로세서로서 작동한다. 이러한 변화는 최근 디스플레이 장치로 보내어지는 데이터의 복잡성과 양의 증가에 기인한다. 예를 들어, 현대의 컴퓨터 디스플레이는 더 많은 픽셀과 더 훌륭한 색 깊이를 가지고 있으며 초기 모델보다 더 빠른 리프레쉬(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 이미지나 물체를 픽셀 형태로 프레임 버퍼로 렌더링(rendering)하고, 그리고 나서 디스플레이를 리프레쉬하기 위하여 스크린 리프레쉬 동안에 프레임 버퍼로부터 픽셀을 읽는다. 따라서, 프레임 버퍼는 디스플레이로 제공되는 출력 픽셀을 저장한다. 프레임 버퍼가 업데이트됨과 동시에 스크린을 리프레쉬함에 따라 발생될 수 있는 시각적 아티팩트(artifact)를 줄이기 위해, 대부분의 그래픽 시스템의 프레임 버퍼는 2중 버퍼로 되어 있다.
보다 현실적인 이미지를 얻기 위하여, 몇 개의 종래 기술의 그래픽 시스템은 픽셀당 두 개 이상의 샘플(sample)을 생성하는 것에 의해 진보되어 왔다. 여기서 이용되는 바와 같이, "샘플(sample)"이라는 용어는 물체 또는 이미지 상의 특정한 위치의 컬러, 색 깊이(z), 투명도 및 잠재적으로 다른 정보를 암시하는 계산된 컬러 정보(color information)를 말한다. 예를 들어, 하나의 샘플은 다음과 같은 성분값을 포함할 수 있다: 빨간색의 값, 녹색의 값, 파란색의 값, z 값, (예컨대, 샘플의 투명도를 나타내는) 알파값. 하나의 샘플은 또한, 예컨대, z-깊이 값, 흐릿함의 값, 강도의 값, 상대적 밝기 정보와 같은 다른 정보를 포함할 수도 있으며, 샘플이 컬러 정보라기 보다는 부분적 또는 완전한 제어 정보로 구성된 것이라는 지시(즉, "샘플 제어 정보")를 포함할 수 있다. 픽셀보다 더 많은 샘플을 계산함에 의해(즉, 수퍼-샘플링(super-sampling)), 디스플레이 장치상에서 표현될 수 있는 것보다 더욱 상세한 이미지가 계산될 수 있다. 예를 들어, 그래픽 시스템은 디스플레이 장치로 출력될 수 있는 각 픽셀을 위해 4개의 샘플을 계산할 수 있다. 그 샘플들이 계산된 후에, 그것들은 프레임 버퍼에 저장되는 픽셀을 형성하기 위해 합성되거나 여과되고, 디스플레이 장치로 이송된다. 이러한 방법으로 형성된 픽셀을 이용하면 더욱 현실적인 최종 이미지를 만들 수 있는데, 이는 이미지 내에서 지나치게 갑작스런 변화라도 여과 프로세스(filtering process)에 의해 부드럽게 될 수 있기 때문이다.
이 종래 기술의 수퍼-샘플링 시스템들은 전형적으로 디스플레이 상의 픽셀 위치의 수보다도 훨씬 많은 수의 샘플을 생성한다. 이 종래 기술의 시스템들은전형적으로 샘플을 계산하여 렌더 버퍼(render buffer)에 저장하는 렌더링 프로세서를 가지고 있다. 그러면, 필터링 하드웨어는 그 렌더 버퍼로부터 그 샘플들을 읽고, 그 샘플들을 여과하여 픽셀을 만들고, 그리고 나서 그 픽셀들을 전통적인 프레임 버퍼에 저장한다. 전통적인 프레임 버퍼는 전형적으로 2중-버퍼이며, 그중 한쪽이 필터링 하드웨어에 의해 업데이트되는 동안 다른 한쪽은 디스플레이 장치를 리프레쉬(refresh)하는데 이용된다. 일단 샘플이 여과되면, 그 결과인 픽셀은 디스플레이 장치를 리프레쉬하는데 사용되는 전통적인 프레임 버퍼에 저장된다. 그러나, 이 시스템들은 일반적으로 전통적인 프레임 버퍼에 의해 부과되는 한계와, 렌더 버퍼 및 여과로 인한 추가적인 잠복성(latency)에 의해 부과되는 한계를 겪어왔다. 그러므로, 전통적인 프레임 버퍼의 결점을 피하는 동시에 픽셀 수퍼-샘플링의 이점을 포함하는 진보된 그래픽 시스템이 요망된다.
"프로그래머블 실-시간 샘플 필터링을 가지는 그래픽 시스템(Graphics System With Programmable Real-Time Sample Filtering)"이라는 명칭의 미국 특허 출원 번호 09/251453에서는, 디스플레이를 리프레쉬하기 위해 수퍼-샘플되는 샘플버퍼(super-sampled sample buffer) 및 샘플-픽셀 계산유닛(sample-pixel calculation unit)를 활용하는 컴퓨터 그래픽 시스템을 나타낸다. 그래픽 프로세서는 복수의 샘플을 생성하고 그것들을 샘플버퍼에 저장한다. 그래픽 프로세서는 바람직하게는 디스플레이 상의 픽셀 위치들의 적어도 하나의 일부분을 위해 두 개 이상의 샘플을 생성하고 저장한다. 따라서, 그 샘플버퍼는 디스플레이 상의 픽셀 위치의 수보다 훨씬 많을 수 있는 샘플을 저장하는 수퍼-샘플되는 샘플버퍼(super-sampled sample buffer)이다. 샘플-픽셀 연산유닛(sample-pixel calculation unit)은 수퍼-샘플되는 샘플버퍼(super-sampled sample buffer)로부터 샘플들을 읽거나 그 샘플들을 각각의 출력 픽셀들로 여과하거나 콘벌브(convolve)하도록 구성되는데, 여기서 출력 픽셀들은 디스플레이를 리프레쉬 하기 위해 제공된다. 샘플-픽셀 연산유닛은 하나 또는 그 이상의 샘플을 선별하고 그것들을 출력 픽셀을 생성하기 위해 여과한다. 샘플-픽셀 연산유닛은 샘플을 얻고, 그 사이에 프레임 버퍼 없이 디스플레이에 직접 제공되는 픽셀을 생성하도록 작동할 수 있다.
이 진보된 그래픽 아키텍쳐를, 렌더링 속도가 픽셀 생성 속도와 다른 경우 등에 있어서, 패닝(상하좌우이동;panning), 줌잉(확대축소;zooming) 등은 물론 아티팩트의 감소와, 예컨대, 카메라의 첫째 결절점 주위에서의 위치 및 회전 변화와 같은 3D 이동은 물론 2D 패닝(panning) 및 줌잉(zooming)를 포함한 보다 진보된 디스플레이 능력을 제공하기 위하여 사용하는 것이 바람직할 것이다.
본 발명은 일반적으로 컴퓨터 그래픽 분야에 관한 것으로서, 더욱 상세하게는 고성능 그래픽 시스템에 관한 것이다.
본 발명의 다른 목적 및 앞에서 설명한 특징, 이점은 다음과 같은 첨부도면과 함께 다음의 상세한 설명을 참조함으로써 보다 완전하게 이해할 수 있을 것이다.
도 1은 그래픽 시스템의 일례를 포함하는 컴퓨터 시스템의 일례를 나타낸 도면;
도 1A는 적어도 하나의 서버 컴퓨터 및 하나 이상의 클라이언트 컴퓨터를 포함하는 컴퓨터 네트워크에서, 클라이언트 컴퓨터가 그래픽 시스템의 일례를 포함하는 것을 나타낸 도면;
도 2는 도 1의 컴퓨터 시스템의 단순화된 블록 다이어그램;
도 3은 도 1의 그래픽 시스템의 일례를 보다 상세히 나타낸 블록 다이어그램;
도 4는 종래의 픽셀 계산을 나타낸 도면;
도 5A는 수퍼-샘플링의 일례를 나타낸 도면;
도 5B는 샘플의 무작위 분배를 나타낸 도면;
도 6은 가변 해상도 수퍼-샘플되는 샘플버퍼(variable resolution super-sampled sample buffer)의 일례를 가지는 그래픽 시스템의 일례를 상세히 나타낸 도면;
도 7은 가변 해상도 수퍼-샘플되는 샘플버퍼(variable resolution super-sampled sample buffer)의 일례를 가지는 그래픽 시스템의 또 다른 일례를 상세히나타낸 도면;
도 8은 3가지의 서로 다른 샘플 위치도해의 실시예를 상세히 나타낸 도면;
도 9는 샘플 위치도해의 일례를 상세히 나타낸 도면;
도 10은 샘플 위치도해의 또 다른 일례를 상세히 나타낸 도면;
도 11은 병렬로 샘플을 픽셀로 전환하는 방법을 상세히 나타낸 도면;
도 11A는 도 11의 실시예를 보다 상세하게 나타낸 도면;
도 11B는 경계 조건을 다루는 방법의 일례를 상세히 나타낸 도면;
도 12는 샘플을 수퍼-샘플되는 샘플버퍼로 끌어들이는 방법의 일례를 나타낸 플로우챠트;
도 12A는 삼각 꼭지점을 부호화하는 일례를 나타낸 도면;
도 13은 샘플로부터 픽셀을 계산하는 방법의 일례를 나타낸 도면;
도 14는 예시적 샘플 세트를 위한 픽셀 콘볼루션의 일례를 상세히 나타낸 도면;
도 15는 한 프레임의 픽셀의 여과의 조절을 나타내는 플로우차트;
도 16A는 샘플을 위한 제1 여과 방법으로서, 콘볼루션 중심이 빈(bins)에 중심을 두고 있음을 나타내는 도면;
도 16B는 도 16A의 제1 여과 방법을 사용함으로써 샘플에 의해 만들어진 픽셀 이미지의 일부분을 나타낸 것으로서, 픽셀 이미지는 아티팩트(앨리어스 라인)를 포함하는 것을 나타내는 도면;
도 17A는 샘플을 위한 제2 여과 방법으로서, 콘볼루션 중심이 빈(bins)에 대하여 왼쪽으로 이동된 것을 나타내는 도면;
도 17B는 도 17A의 제2 여과 방법을 사용함으로써 샘플에 의해 만들어진 픽셀 이미지의 일부분을 나타낸 것으로서, 픽셀 이미지는 도 16B의 아티팩트를 포함하지 않는 것을 나타내는 도면;
도 18은 샘플의 제1 필터 방법을 나타낸 것으로서, 콘볼루션 중심이 빈(bins)에 중심을 두고 있음을 나타내는 도면;
도 19는 줌잉(zooming) 디스플레이 효과를 수행하기 위한 샘플의 제2 여과 방법을 나타낸 것으로서, 콘볼루션 중심이 보다 큰 거리로 간격을 두고 필터 반경이 증가된 것을 나타내는 도면;
도 20은 디스플레이 효과를 생성하는 것을 나타내는 플로우차트이다.
본 발명이 다양하게 수정되고 대체적 형태로 되는 것이 가능하겠지만, 그 특정된 실시예가 도면의 예에 의해 나타나며 이하에서 상세히 설명될 것이다. 그러나, 그에 대한 도면 및 상세한 설명은 본 발명을 설명된 특정된 형태에만 국한시키는 것이 아니며, 그와는 반대로, 첨부된 특허청구범위에 의해 정의된 본 발명의 기술적 사상 및 범위 내에 있는 모든 수정, 등가, 대체를 포함한다.
본 발명은 수퍼-샘플되는 샘플버퍼와, 디스플레이를 리프레쉬하기 위한 프로그래머블 샘플-픽셀 연산유닛을 활용하는 컴퓨터 그래픽 시스템으로서, 상기 그래픽 시스템은 샘플 여과를 조절하여 아티팩트(artifact)를 줄이거나 디스플레이 효과를 수행할 수 있다. 일례로, 그래픽 시스템은 그래픽 프로세서, 수퍼-샘플되는 샘플버퍼 및 샘플-픽셀 연산유닛을 가질 수 있다. 그래픽 프로세서는 복수의 샘플을 생성하고 그것들을 샘플버퍼에 저장한다. 그래픽 프로세서는 바람직하게는 디스플레이상의 픽셀 위치들의 적어도 일부분을 위한 두 개 이상의 샘플을 생성하고 저장한다. 따라서, 샘플버퍼는, 몇 가지 실시예에서, 디스플레이상의 픽셀 위치의 수보다 훨씬 많을 수도 있는 샘플들을 저장하는 수퍼-샘플되는 샘플버퍼이다. 다른 실시예로서, 샘플의 전체 수는 디스플레이 장치상의 픽셀 위치의 전체 수와 비슷하거나 같거나 심지어 적을 수도 있으나, 그 샘플들은 어떤 영역에서는 더 밀집하여 위치되고 다른 영역에서는 덜 밀집하여 위치될 수 있다.
샘플-픽셀 연산유닛은 수퍼-샘플되는 샘플버퍼로부터 샘플들을 읽고 그 샘플들을 각 출력 픽셀로 여과(filter) 또는 콘벌브(convolve)하도록 구성되어 있으며, 그 출력 픽셀은 디스플레이를 리프레쉬하기 위해 제공된다. 샘플-픽셀 연산유닛은 하나 이상의 샘플을 선택하고 그것들을 여과하여 출력 픽셀을 생성한다. 샘플-픽셀 연산유닛에 의해 선택되고/또는 여과되는 샘플의 수는 하나이거나, 바람직한 실시예로서는, 하나 이상인 점에 주목해야 한다.
샘플-픽셀 연산유닛은 수퍼-샘플되는 샘플버퍼로부터 샘플을 액세스하고, 여과작용을 수행하고, 그리고는, 바람직하게는 실시간으로, 그 결과로서의 출력 픽셀을 디스플레이에 제공할 수 있다. 그래픽 시스템은 종래의 프레임 버퍼없이 동작할 수 있다. 즉, 그래픽 시스템은 디스플레이상에서 리프레쉬되는 실제의 픽셀 값을 저장하는 종래의 프레임 버퍼를 이용하지 않을 수 있다. 어떤 디스플레이들은 내부적 프레임 버퍼를 가지고 있을 수도 있지만, 이들은 그래픽 시스템이 아니라 디스플레이 장치의 내부 부분으로 간주된다는 점에 주의하라. 그러므로, 샘플-픽셀 연산유닛은, 실시간 체제 또는 온 더 플라이(on-the-fly) 체제상에서, 각 스크린 리프레쉬를 위한 각 픽셀을 계산할 수 있다.
일례로, 샘플-픽셀 연산유닛은 저장된 샘플의 여과를 조절하여 아티팩트를 줄이도록 동작될 수 있으며, 예컨대, 이웃 프레임의 저장된 샘플의 여과를 선별적으로 조절하여 인근의 프레임 사이에서의 아티팩트를 줄이도록 작동될 수 있다. 예를 들어, 샘플-픽셀 연산유닛은, 첫번째 표시용 출력 픽셀을 생성하기 위하여, 제1 필터를 사용하여 제1 저장 샘플 세트를 선택하고 여과할 수 있고, 나중에 두 번째 표시용 출력 픽셀을 생성하기 위하여, 제1 필터와 다른 제2 필터를 사용하여 제2 저장 샘플 세트를 선택하고 여과할 수 있다. 일례로, 샘플-픽셀 연산유닛은, 카메라의 첫째 결절점의 주위에서, 아티팩트를 줄이기 위한, 위치 및 회전 변화와 같은 3D 이동 뿐만 아니라 2D 패닝(panning)과 줌잉(zooming)를 포함하는 패닝(panning), 줌잉(zooming) 등과 같은 다양한 스크린 효과나 디스플레이 효과의 시뮬레이션에 의해 이웃 프레임에 저장된 샘플의 여과를 선별적으로 조절할 수 있다.
샘플-픽셀 연산유닛은 바람직하게는, 저장 샘플의 여과 동안에 필터(예컨대, 콘볼루션 필터)가 적용되는 샘플버퍼내의 중심 장소들(중심)을 선별적으로 조절하여 아티팩트를 줄일 수 있다. 콘볼루션 필터가 적용되는 중심 장소은 생성되는 출력 픽셀의 중심에 대응한다. 샘플-픽셀 연산유닛은 중심 장소들에 대응하는 어드레스를 생성하기 위한 어드레스 생성 로직(address generator logic)을 포함하는데, 표시용 출력 픽셀을 생성하는데 있어서 콘볼루션 필터가 이 중심 장소들에 적용된다. 어드레스 생성 로직은 희망되는 중심에 대응하는 선택된 서브-픽셀 위치의 어드레스들을 생성하도록 프로그램될 수 있다. 바람직한 실시예로서, 어드레스 생성 유닛에 의해 생성되는 초기의 서브-픽셀 위치 어드레스는 프로그램될 수 있으며, 그 픽셀 스텝 사이즈는 일정하게 유지될 수 있다. 샘플-픽셀 연산유닛은, 필터가 하나 이상의 x 또는 y 방향으로 적용될 수 있는, 중심 장소들을 선별적으로 조절하도록 작동될 수 있으며, 서브-픽셀(sub-pixel) 거리 단위로 필터의 중심 장소들을 조절할 수 있다. 샘플-픽셀 연산유닛은 샘플들을 여과하는데 콘볼루션 필터나 다른 유형의 필터를 활용한다.
이 실시예에서, 샘플버퍼는 디스플레이의 가시영역보다 큰 영역에 대응하는 샘플들을 저장할 수 있으며, 디스플레이의 (종전의) 가시 영역의 밖에 있는 하나 이상의 샘플이, 조절되는 콘볼루션 중심에 대응하여 출력 픽셀을 생성하는데 이용될 수 있다. 그래픽 시스템은 또한, 비디오 타이밍을 선별적으로 조절하여 저장된 샘플들을 여과하는 동안 콘볼루션 필터의 중심 장소들의 조절을 보충하도록 동작될 수도 있다.
본 발명은, 그래픽 프로세서가 샘플들을 샘플버퍼로 렌더링하는 것과 같은 속도에서, 샘플-픽셀 연산유닛이 출력 픽셀을 생성하도록 적용될 수 있다. 예를 들어, 만약 현재의 저장 샘플 세트가 종전 프레임의 출력 픽셀을 생성하는데 이전에 이용되었던 이전의 저장 샘플 세트와 유사하거나 동일하다고 판단되면, 샘플-픽셀 연산유닛은 현재의 프레임의 현재의 저장 샘플 세트를 여과하는 것을 선별적으로 조절하여 아티팩트를 줄일 수 있다. 따라서, 만약 하나의 저장 샘플 세트가 선행하는 프레임의 첫째 출력 픽셀을 생성하는데 예전에 사용되었다면, 샘플-픽셀 연산유닛은, 후속의 프레임의 다른 픽셀을 생성하기 위한 유사한 (또는 동일한) 저장 샘플 세트의 여과를 선별적으로 조절하여 아티팩트를 줄일 수 있다. 따라서, 카메라의 결절점이 이웃하는 프레임 사이에 실질적으로 고정되도록 유지되는 상황에서, 본 발명은 이웃하는 프레임 사이에서 나타날 수 있는 아티팩트를 제거하기 위하여 카메라의 결절점을 효과적으로 섬세하게 변화시키도록 한다.
본 발명은 또한, 상기와 같은 그래픽 시스템에 있어서 상기 샘플-픽셀 연산유닛이 렌더링 속도와 다른(예컨대, 더 빠른) 속도로 작동될 수 있는 그래픽 시스템을 포함한다. 예를 들어, 샘플-픽셀 연산유닛은 그래픽 프로세서가 샘플들을 샘플버퍼로 렌더링하는 것과 다른 속도로 출력 픽셀을 생성할 수 있다. 예컨대, 그래픽 프로세서는 제1 속도로 복수의 샘플을 샘플버퍼로 렌더하도록 작동될 수 있고, 샘플-픽셀 연산유닛은 제2의 더 빠른 속도로 출력 픽셀을 생성하도록 작동될 수 있다. 이렇게 함으로써, 샘플-픽셀 연산유닛의 콘벌브 파이프라인(convolve pipeline)은 렌더링 속도와 독립적으로 온 더 플라이(on-the-fly)로 작동할 수 있다. 이 시스템에서, 샘플-픽셀 연산유닛은 상기와 같이 이웃하는 프레임 사이에서의 저장 샘플의 여과를 선별적으로 조절하여 아티팩트를 줄이도록 동작될 수 있다. 따라서, 제1 저장 샘플 세트가 종전 프레임의 출력 픽셀을 생성하는데에 종전에 이용되었다고 판단되면, 샘플-픽셀 연산유닛은 현재의 (또는 후속의) 프레임의 제1 저장 샘플 세트의 여과를 선별적으로 조절하여 아티팩트를 줄이도록 작동될 수 있다. 따라서, 샘플은 일단 생성되고, 그리고 나서 그래픽 프로세서가 새 샘플을 샘플버퍼로 렌더링할 때까지, 아티팩트를 제거하기 위하여 특별한 필터로 2번 이상콘벌브(convolve)된다.
다른 실시예에서, 샘플-픽셀 연산유닛은 저장 샘플의 여과를 조절하여 디스플레이 효과를 수행하도록 작동할 수 있다. 더욱 상세하게는, 샘플-픽셀 연산유닛은 이웃하는 프레임의 저장 샘플의 여과를 선별적으로 조절하여 이웃하는 프레임 사이의 디스플레이 효과를 수행하도록 동작될 수 있다. 디스플레이 효과는, 다른 것 중에서도 특히 카메라의 첫째 결절점의 주위에서 예컨대, 위치 및 회전 변화와 같은 3D 이동 뿐 아니라 2D 패닝(panning), 줌잉(zooming)을 포함하며, 패닝(상하좌우이동;panning), 줌잉(확대축소;zooming), 회전(rotation), 화면이동(moving scenes) 등을 포함할 수 있다.
이 실시예에 있어서, 샘플버퍼는 디스플레이의 가시영역보다 더 큰 영역에 대응하는 샘플들을 저장할 수 있으며, 디스플레이의 (종전의) 가시영역의 밖의 하나 이상의 샘플은 디스플레이 효과를 수행하기 위해 이용될 수 있다. 샘플-픽셀 연산유닛은 하나 이상의 픽셀 위치(중심), 필터의 반경 및 픽셀 사이의 피치(pitch)를 조절함으로써 여과를 조절할 수 있다. 샘플-픽셀 연산유닛은, 프레임의 저장 샘플의 여과를 조절하여 부분적-픽셀 경계(fractional-pixel boundary)에서의 디스플레이 효과를 수행하도록 할 수 있다. 예를 들어, 샘플-픽셀 연산유닛은 이웃하는 프레임의 저장 샘플의 여과를 조절하여, 부분적-픽셀 경계에서 이웃하는 프레임 사이의 패닝(panning) 또는 줌잉(zooming) 효과를 내도록 할 수 있다.
본 발명의 한가지 이점은 샘플이 콘벌브(convolve)보다 더 느린 속도에서 렌더링될 때의 보다 부드러운 패닝 또는 줌잉이다. 예를 들어, 카메라가 특정한 방향으로 패닝되거나 줌인 또는 줌아웃 되고 샘플들이 콘벌브 속도의 절반의 속도에서 렌더될 때의 상황을 가정한다. 이 경우에, 두 개의 콘벌브 작용이 동일한 데이터에 행하여 질 수 있으며, 그러면 다음의 수직/수평 장소으로의 이동이 다음의 렌더링된 프레임에서 일어난다. 본 발명에 따르면, 샘플-픽셀 연산유닛은 두 번째 콘볼루션 싸이클의 콘볼루션 중심을 조절하여 (예컨대, 오른쪽으로 10.5 픽셀 이동함), 그 팬(수직/수평이동)에 대응하는 새로운 데이터가 아직 렌더링되지 않았더라도 팬 동작효과를 낼 수 있다. 따라서, 디스플레이 효과가 희망되면, 또한 제1 세트의 저장 샘플이 종전 프레임에서 출력 픽셀을 생성하는데 예전에 사용되었다면, 샘플-픽셀 연산유닛은 후속의 프레임의 제1 저장 샘플 세트의 여과를 선별적으로 조절하여 후속 프레임에서의 디스플레이 효과를 수행하도록 작동될 수 있다.
컴퓨터 매체에 포함된 소프트웨어 프로그램 및 그래픽 서브시스템을 작동하는 방법이 또한 고려된다. 일례에서, 본 방법은 우선 복수의 샘플 위치를 계산하고, 그 다음에 각 샘플 픽셀 위치를 위한 샘플을 생성한다. 그리고 나서 샘플들은 (예컨대, 수퍼-샘플되는 샘플버퍼로) 저장된다. 샘플 위치들은 많은 위치 또는 공간 설계에 따라 특정화 될 수 있다. 그리고는, 저장 샘플은 선별되고 출력 픽셀을 형성하도록 여과될 수 있는데, 이는 디스플레이로 직접 실시간으로 제공되며, 바람직하게는 종래의 프레임 버퍼에의 저장 없이 이루어질 수 있다. 출력 픽셀을 생성함은, 저장 샘플의 여과를 선별적으로 조절함으로써 아티팩트를 줄이거나 디스플레이 효과를 생성하도록 하는 것을 포함한다. 출력 픽셀을 생성함은 또한, 렌더링 속도와 동일하거나 다른 속도에서 이루어질 수 있다.
컴퓨터 시스템 -- 도 1
이제 도 1을 참조하면, 3차원(3-D) 그래픽 시스템을 포함하는 컴퓨터 시스템(80)의 일례가 나타나 있다. 3-D 그래픽 시스템은 특히 컴퓨터 시스템, 네트워크 PC, 인터넷 장치, HDTV 시스템과 인터랙티브 텔레비젼 시스템을 포함한 텔레비전, 퍼스널 디지털 어시스턴트(PDAs), 그리고 2D 및/또는 3D 그래픽을 나타내는 다른 장치 등을 포함한 다양한 시스템 중 어느 하나에 포함될 수 있다.
나타낸 바와 같이, 컴퓨터 시스템(80)은 시스템 유닛(82)과, 시스템 유닛(82)에 결합된 비디오 모니터 또는 디스플레이 장치(84)를 포함한다. 디스플레이 장치(84)는 (예컨대, CRT, LCD, 가스-플라즈마 디스플레이, 디지털 거울 디스플레이(DMD) 또는 반사 실리콘 LCD 등과 같은) 다양한 유형의 디스플레이 모니터나 장치 중 어느 것이라도 될 수 있다. 키보드(86) 및/또는 마우스(88), 또는 다른 입력 장치(예컨대, 트랙볼, 디지타이저, 타블렛, 6-도의 자유 입력장치, 헤드 트랙커, 아이 트랙커, 데이터 장갑, 보디 센서 등)를 포함한 다양한 입력 장치가 컴퓨터 시스템에 연결될 수 있다. 디스플레이 장치(84)에 3-D 그래픽 물체를 표현하기 위해 컴퓨터 시스템(80)에 의해 어플리케이션 소프트웨어가 실행될 수 있다.
이하에서 더 설명하는 바와 같이, 컴퓨터 시스템(80)의 3-D 그래픽 시스템은, 디스플레이 장치(84)에 표현되는 이미지의 품질과 현실성을 향상시키기 위하여, 프로그램될 수 있는 샘플-픽셀 연산유닛과 함께 수퍼-샘플되는 샘플버퍼를 포함한다. 샘플-픽셀 연산유닛은 샘플버퍼내의 샘플에 응답하여 픽셀을 생성하기 위한 다른 하드웨어 또는 필터(filter)나 콘벌브 파이프라인(convolve pipeline)을 포함할 수 있다. 샘플-픽셀 연산유닛은 샘플버퍼로부터 샘플을 얻고 디스플레이로 직접 제공되는 픽셀을 생성하도록 작동할 수 있다. 샘플-픽셀 연산유닛은 "실-시간(real-time)" 또는 "온-더-플라이(on-the-fly)" 방식으로 작동할 수 있다.
여기서 사용되는 바와 같이, 용어 "여과하기(filter)" 및 "콘벌브(convolve)"는 서로 교환하여 사용될 수 있으며 (예컨대, 평균값을 구하는 것에 의해, 콘볼루션 함수를 적용하는 것에 의해, 덧셈을 하는 것에 의해, 여과함수를 적용하는 것에 의해, 샘플을 부가하여 조작하는 것에 의해, 무작위 함수를 적용하는 것 등에 의해) 수학적으로 하나 이상의 샘플을 조작하여 픽셀을 생성하는 것을 말한다.
여기서 사용되는 바와 같이, 용어 "실-시간(real-time)"은 디스플레이 장치의 리프레쉬 속도(refresh rate)에서 또는 그 근처에서 수행되는 기능을 말한다. "온-더-플라이(on-the-fly)"란 (연속 동작으로 보이도록 하기 위해 얼마나 자주 그림이 바뀌어야 하는지에 관한) 동작혼합 및 (연속적으로 보이도록 하기 위해 얼마나 자주 빛의 세기가 바뀌어야 하는지에 관한) 명멸혼합에 대한 인간의 시각체계의 지각 능력에서, 근처에서, 또는 그 이상의 지각능력을 의미한다. 이 개념들은 Russel L.De Valois and Karen K.De Valois 저(著) "Spatial Vision", Oxford University Press, 1988에 더 자세히 설명되어 있다.
본 발명에 따르면, 샘플-픽셀 연산유닛은 저장 샘플의 여과를 선별적으로 조절하여 아티팩트를 줄이거나 또는 디스플레이 효과를 생성하도록 한다. 출력 픽셀의 생성은, 연산되어 본 발명에 따른 샘플버퍼에 저장되는 샘플의 렌더링 속도와 같거나 다른 속도에서, 또한 이루어질 수 있다.
컴퓨터 네트워크 -- 도 1A
이제 도 1A를 참조하면, 적어도 하나의 서버 컴퓨터(502)와 하나 이상의 클라이언트 컴퓨터(506A-N)를 포함하는 컴퓨터 네트워크(500)가 나타나 있다. (도 1A에 나타낸 실시예에서는, 클라이언트 컴퓨터(506A-B)가 묘사되었다). 하나 이상의 클라이언트 시스템이 각각 위에서 설명한 바와 같은 하나 이상의 그래픽 시스템(112)을 가지는 컴퓨터 시스템(80)과 유사하게 구성될 수 있다. 서버(502)와 클라이언트(들)(506)는 근거리 통신망(LAN), 광대역 통신망(WAN), 또는 인터넷 연결 등과 같은 다양한 연결(504)을 통하여 이어질 수 있다. 일례에서, 서버(502)는 (압축되어 있을 수도 있는) 3-D 기하 데이터를 저장하고 클라이언트(506)에 전달할 수 있다. 클라이언트(506)는 압축된 3-D 기하 데이터를 수신하고, (필요하면) 압축을 풀고 기하 데이터를 렌더링한다. 그러면 렌더링된 이미지는 클라이언트의 디스플레이 장치상에 표현된다. 클라이언트는 기하 데이터를 렌더링하고 수퍼-샘플되는 샘플버퍼와 여기에서 설명된 실시간 필터 기술을 사용하여 이미지를 표현한다. 또 다른 실시예에서, 압축된 3-D 기하 데이터는 클라이언트 컴퓨터(506) 사이에서 전달될 수 있다.
컴퓨터 시스템 블록도 -- 도 2
이제 도 2를 참조하면, 도 1의 컴퓨터 시스템을 나타내는 간략화된 블록도를 보이고 있다. 도 2는 또한 컴퓨터(506A, 506B, 또는 502)를 나타낼 수도 있다. 본 발명의 이해를 위해 필요하지 않는 컴퓨터 시스템의 구성요소는 편의상 나타내지 않는다. 나타낸 바와 같이, 컴퓨터 시스템(80)은 고속 메모리 버스나 호스트버스(104)라고도 불리는 시스템 버스(104)에 연결된 중앙처리장치(CPU;102)를 포함한다. 시스템 메모리(106)는 또한 고속 버스(104)에 결합되어 있을 수도 있다.
호스트 프로세서(102)는 예컨대, 마이크로프로세서, 멀티-프로세서 및 CPU 등 다양한 유형의 하나 이상의 프로세서를 포함할 수 있다. 시스템 메모리(106)는 (예컨대, 정적램인 "SRAM", 동기 동적램인 "SDRAM", 램버스 동적램인 "RDRAM" 등의) 램을 포함한 다른 유형의 메모리 서브시스템의 조합을 포함할 수 있다. 시스템 버스 또는 호스트 버스(104)는 특수화된 서브시스템 버스 뿐만 아니라 (호스트 프로세서, CPU, 및 메모리 서브시스템 간의 통신을 위한) 하나 이상의 통신 버스 또는 호스트 컴퓨터 버스를 포함할 수도 있다.
본 발명에 따른 3-D 그래픽 시스템 또는 그래픽 시스템(112)은 고속 메모리 버스(104)와 결합되어 있다. 3-D 그래픽 시스템(112)은 예컨대, 크로스바 스위치 또는 다른 버스 접속 로직에 의해 버스(104)에 결합될 수 있다. 다양한 다른 주변 장치, 또는 다른 버스가 고속 메모리 버스(104)에 연결될 수 있다고 가정된다. 3-D 그래픽 시스템이 컴퓨터 시스템(80)에서 하나 이상의 버스에 결합될 수 있고/또는 다양한 유형의 버스에 결합될 수 있다는 점에 주목해야 한다. 더욱이, 3D 그래픽 시스템이 통신 포트에 결합될 수 있고 그에 따라 예컨대 인터넷이나 네트워크와 같은 외부 소스로부터 그래픽 데이터를 직접 수신할 수 있다. 도면에서 나타난 바와 같이, 디스플레이 장치(84)가 컴퓨터 시스템(80)에 포함되는 3-D 그래픽 시스템(112)에 연결된다.
호스트 CPU(102)는 호스트 버스(104)를 통해 프로그램된 입/출력(I/O) 프로토콜에 따라 그래픽 시스템(112)과 정보를 주고 받을 수 있다. 또한, 그래픽 시스템(112)은 직접 메모리 액세스(DMA) 프로토콜에 따라 또는 인텔리전트 버스 마스터링(intelligent bus mastering)을 통하여 메모리 서브시스템(106)을 액세스할 수 있다.
OpenGL 또는 Java 3D 등과 같은 애플리케이션 프로그래밍 인터페이스(API)에 적합한 그래픽 애플리캐이션 프로그램은, 호스트 CPU(102) 상에서 실행될 수 있고, 디스플레이 장치(84)에의 출력을 위한 다각형과 같은 기하 원형(geometric primitive;그래픽 데이터)을 정의하는 명령 및 데이터를 생성한다. 사용되는 특별한 그래픽 인터페이스에 의해 정의된 바와 같이, 이 원형(primitive)은 앞표면과 뒤표면을 위한 분리된 컬러 특성을 가질 수 있다. 호스트 프로세서(102)는 이 그래픽 데이터를 메모리 서브시스템(106)으로 전달할 수 있다. 그 다음에, 호스트 프로세서(102)는 그래픽 데이터를 호스트 버스(104)를 통해 그래픽 시스템(112)으로 전달하도록 동작할 수 있다. 또 다른 실시예에서, 그래픽 시스템(112)은 DMA 액세스 싸이클을 이용하여 호스트 버스(104) 상에서 기하 데이터 배열로 읽을 수 있다. 또 다른 실시예에서, 그래픽 시스템(112)은 인텔 회사에 의해 공표된 어드밴스트 그래픽 포트(AGP) 버전과 같은 다이렉트 포트(direct port)를 통하여 시스템 메모리(106)에 결합될 수 있다.
그래픽 시스템은 호스트 CPU(102) 및/또는 다른 시스템 메모리(106), 다른 메모리, 또는 인터넷 등의 네트워크와 같은 외부 소스로부터 또는 텔레비전과 같은 방송매체 또는 다양한 소스 중 어느 곳에서부터라도 그래픽 데이터를 수신받을 수있다.
다음에 설명되는 바대로, 그래픽 시스템(112)은 보다 효율적인 마이크로코드(microcode) 제어를 할 수 있도록 구성될 수 있으며, 이는 호스트 프로세서(102)에 의해 생성된 다각형에 대응하는 후속의 컬러값을 취급하는 성능을 향상시킨다. 그래픽 시스템(112)이 컴퓨터 시스템(80)의 일부로 묘사되는 한편, 그래픽 시스템(112)은 또한 독립 장치(예컨대, 자체 설치된 디스플레이)로서 구성될 수도 있다. 그래픽 시스템(112)은 단일 칩 장치로서 또는 시스템상의 칩이나 멀티-칩 모듈의 일부로서 구성될 수도 있다.
그래픽 시스템 -- 도 3
이제 도 3을 참조하면, 그래픽 시스템(112)의 일례를 상세히 나타낸 블록도를 보이고 있다. 도면에 나타낸 바와 같이, 그래픽 시스템(112)은 하나 이상의 그래픽 프로세서(90), 하나 이상의 수퍼-샘플되는 샘플버퍼(162), 그리고 하나 이상의 샘플-픽셀 연산유닛(170A-D)을 포함할 수 있다. 그래픽 시스템(112)은 또한 하나 이상의 디지털-아날로그 컨버터(DACs;178A-B)를 포함할 수도 있다. 그래픽 프로세서(90)는 (예컨대, 특수화된 그래픽 프로세서나 연산유닛, 멀티미디어 프로세서, DSP, 또는 일반 목적의 프로세서와 같은) 적합한 유형의 어떠한 고성능 프로세서라도 될 수 있다. 일례로, 그래픽 프로세서(90)는 하나 이상의 렌더링 유닛(150A-D)을 포함할 수 있다. 그러나, 도면에 나타낸 실시예에서는, 그래픽 프로세서(90)는 또한 하나 이상의 제어 유닛(140), 하나 이상의 데이터 메모리(152A-D), 그리고 하나 이상의 스케쥴 유닛(154)를 포함하고 있다. 샘플버퍼(162)는 또한 하나 이상의 샘플 메모리(160A-160N)를 포함할 수도 있다.
A. 제어 유닛
제어 유닛(140)은 그래픽 시스템(112)과 컴퓨터 시스템(80) 사이의 데이터 전송을 제어함으로써 그래픽 시스템(112)과 컴퓨터 시스템(80) 사이의 인터페이스로서 동작한다. 두 개 이상의 렌더링 유닛(150A-D)을 포함하는 그래픽 시스템(112)의 실시예에서, 제어 유닛(140)은 또한 컴퓨터 시스템(80)으로부터 수신 받은 데이터 흐름을 개별적 렌더링 유닛(150A-D)으로 보내지는 대응하는 수의 병렬 흐름으로 나눌 수도 있다. 그래픽 데이터는 압축된 형태로 컴퓨터 시스템(80)으로부터 수신 받을 수 있다. 그래픽 데이터는 컴퓨터 시스템(80)과 그래픽 시스템(112)간의 대역폭 요구를 유리하게 줄일 수 있다. 일례로, 제어 유닛(140)은 데이터 스트림을 분할하고 압축 형태로 렌더링 유닛(150A-D)으로 보내도록 구성될 수 있다.
그래픽 데이터는 하나 이상의 그래픽 원형(graphics primitives)을 포함할 수 있다. 여기서 이용되는 바와 같이, 그래픽 원형(graphics primitives)이라는 용어는 다각형(polygons), 파라미터적 표면(parametric surfaces), 스플라인(splines), NURBS(non-uniform rational B-splines;비-균일 적합 B-스플라인), 서브-디비젼 표면(sub-divisions surfaces), 프랙탈(fractals;차원 분열(次元分裂) 도형), 부피 원형(volume primitives), 입자 체계(particle systems)를 포함한다. 이 그래픽 원형은 James D.Foley 저 "Computer Graphics:Principles and Practice" et al.,published by Addison Wesley Publishing Co.,Inc., 1996 의 교과서에 상세히 설명되어 있다. 다각형(polygon)이 본 상세한 설명을 통해 간단하게 언급되어 있지만, 설명되는 실시예와 예제는 다른 유형의 그래픽 원형을 포함하는 그래픽 데이터와 함께 이용될 수 있다.
B. 렌더링 유닛(Rendering Unit)
여기서 (드로어 유닛(draw unit)으로도 호칭되는) 렌더링 유닛(150A-D)은 정확한 수행에 의존하여, 그래픽 명령과 제어 유닛(140)으로부터의 데이터를 수신한 후 많은 기능을 수행하도록 구성된다. 예를 들어, 렌더링 유닛(150A-D)은 그래픽 데이터 내에서 발생하는 다양한 그래픽 원형의 (데이터가 압축된 경우에는) 압축풀기(decompression), 변환(transformation), 클리핑(clipping), 라이팅(lighting), 텍스쳐링(texturing), 심도 신호(depth cueing), 투명 처리(transparency processing), 셋-업(set-up), 그리고 스크린 공간 렌더링(screen space rendering)을 수행하도록 구성될 수 있다. 이 각 특징은 이하에서 따로 설명된다.
수신되는 압축된 그래픽 데이터의 유형에 따라, 렌더링 유닛(150A-D)은 산술적 디코딩(arithmetic decoding), 런-길이 디코딩(run-length decoding), 허프만 디코딩(Huffman decoding), 그리고 (예컨대, LZ77, LZSS, LZ78, LZW와 같은) 사전 디코딩(dictionary decoding)을 수행하도록 구성될 수 있다. 또 다른 실시예에서, 렌더링 유닛(150A-D)는 기하 압축을 이용하여 압축된 그래픽 데이터를 디코드하도록 구성될 수 있다. 3D 그래픽 데이터의 기하 압축은 이미지 품질을 거의 그대로 유지하면서 데이터 크기를 크게 줄일 수 있다. 3D 기하도형을 압축하고 푸는 2가지 방법이 미국 특허 번호 5,793,371, 출원번호 08/511,294,(1994년 8월 4일 출원, 발명의 명칭 "Method And Apparatus For Geometric Compression Of Three-Dimensional Graphics Data," 대리인 등록번호 5181-05900) 및 미국 특허 출원번호 09/095,777(1998년 월 11일에 출원, 발명의 명칭 "Compression of Three-Dimensional Geometry Data Representing a Regularly Tiled Surface Portion of a Graphical Object," 대리인 등록번호 5181-06602)에 설명되어 있다. 압축풀기를 지원하는 그래픽 시스템(112)의 실시예에서, 각 렌더링 유닛(150)로부터 수신되는 그래픽 데이터는 하나 이상의 그래픽 "원형(primitives)"으로 압축이 풀리고, 그 후 렌더될 수 있다. 원형(primitive)이라는 용어는 물체의 형상(예컨대, 꼭지점, 선, 삼각형, 2차원이나 3차원의 다각형, 다면체, 또는 3차원상의 자유형태의 표면)을 정의하는 물체의 구성요소를 말한다. 렌더링 유닛(150)은 어떠한 적절한 유형의 고성능 프로세서(예컨대, 특수화된 그래픽 프로세서 또는 연산유닛, 멀티미디어 프로세서, DSPs, 또는 일반 목적의 프로세서)라도 될 수 있다.
변환(transformation)이란, 물체를 솜씨있게 조작하는 것을 말하며, 물체를 전환(즉, 물체를 다른 위치에 이동), 물체의 축척변화(즉, 늘리거나 줄이기), 그리고 (예컨대, 3차원 공간에서)물체를 회전시키기 등을 포함한다.
클리핑(clipping)이란, 표현되는 이미지의 한계를 정의하고(즉, 일반적으로 4각형인 클리핑 지역을 설정하기), 그 한계 밖으로 벗어나는 픽셀을 렌더링하거나표현하지 않는 것을 말한다.
라이팅(lighting)이란, 개별적인 물체가 어떤 컬러와 밝기를 가질 것인가를 결정하기 위해 표현되는 이미지 내의 물체의 조도를 계산하는 것을 말한다. 이용되는 세이딩 알고리즘(예컨대, 상수, 구란드(Gourand), 또는 퐁(Phong))에 따라서, 많은 다른 위치에서 라이팅 값이 구해질 수 있다. 예를 들어, 상수 세이딩이 이용되면(즉, 다각형의 각 픽셀이 같은 라이팅을 가지는 경우), 라이팅은 다각형 마다 한번 계산될 필요가 있다. 구란드(Gourand) 세이딩이 이용되면, 라이팅은 꼭지점 마다 한번 계산된다. 퐁(Phong) 세이딩은 라이팅을 픽셀 마다(per-pixel basis) 계산한다.
셋-업(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. 데이터 메모리(Data Memories)
각 렌더링 유닛(150A-D)은 지시(instruction) 및 데이터(data) 메모리(152A-D)와 결합될 수 있다. 일례로, 각 데이터 메모리(152A-D)는 렌더링 유닛(150A-D)을 위한 데이터와 명령들을 저장하도록 구성될 수 있다. 수행이 다양할 수 있는 반면, 일례로 각 데이터 메모리(152A-D)는 각 렌더링 유닛(150A-D)을 위해 총 16메가 바이트의 저장공간을 제공하는 2개의 8메가 바이트의 SDRAM을 포함할 수 있다. 또 다른 예로, RDRAM(램버스 DRAM)이 압축풀기 및 각 렌더링 유닛의 셋-업 동작을 지원하기 위해 이용될 수 있으며, 이때 SDRAM이 렌더링 유닛(150A-D)의 드로어 기능을 지원하는데 이용될 수 있다.
D. 스케쥴 유닛(Schedule Unit)
스케쥴 유닛(154)은 렌더링 유닛(150A-D)과 샘플링 메모리(160A-N)사이에 결합될 수 있다. 스케쥴 유닛(154)은 완성된 샘플을 나열하고 그것들을 샘플 메모리(160A-N)에 저장하도록 구성된다. 보다 큰 구성에서, 다중 스케쥴 유닛(154)은 병렬로 이용될 수 있다는 점에 주목하라. 일례로, 스케쥴 유닛(154)은 크로스바 스위치(crossbar switch)로서 수행될 수 있다.
E. 샘플 메모리(Sample Memories)
수퍼-샘플되는 샘플버퍼(162)는 샘플 메모리(160A-160N)를 포함하며, 이것들은 렌더링 유니트에 의해 생성된 복수의 샘플을 저장하도록 구성된다. 여기서 사용되는 바와 같이, "샘플버퍼"란 샘플을 저장하는 하나 이상의 메모리를 말한다. 앞에서 언급했던 바와 같이, 하나 이상의 샘플이 출력 픽셀(즉, 디스플레이 장치 상에 표현될 픽셀)을 형성하기 위해 여과된다. 저장되는 샘플의 수는 단일 프레임을 리프레쉬하기 위해 디스플레이 장치로 출력되는 픽셀의 전체 수보다 크거나, 같거나, 작을 수도 있다. 각 샘플은 하나 이상의 출력 픽셀에 대응할 수 있다. 여기서 이용되는 바와 같이, 샘플의 정보가 픽셀의 최종 출력치에 기여하면, 샘플은 출력 픽셀에 "대응"한다. 그러나, 어떤 샘플은 여과가 발생한 후에 그들의 대응하는 출력 픽셀에 전혀 기여하지 않을 수도 있다. 또한, 디스플레이 장치(84)의 가시영역 밖에 있는 어떤 샘플들도 렌더링되고 샘플버퍼에 저장될 수 있는데, 여기서 이 샘플들은 패닝(panning) 및 줌잉(zooming)과 같은 다양한 디스플레이 효과를 위해 이용될 수 있다.
달리 설명하면, 샘플버퍼는 디스플레이상의 스크린 공간 내의 위치에 대응하는 위치를 가지는 복수의 샘플을 저장하며, 즉, 샘플은 하나 이상의 출력 픽셀에 기여한다. 저장 샘플의 수는 픽셀 위치의 수보다 더 많을 수 있으며, 하나 이상의 샘플이 디스플레이 장치상에 표현되는 특정 출력 픽셀을 생성하기 위해 콘볼루션 (여과) 과정에 포함될 수 있다. 어떠한 샘플이라도 하나 이상의 출력 픽셀에 기여 할 수 있다.
샘플 메모리(160A-160N)는 다양한 사이즈로 수많은 다른 유형의 메모리(예컨대, SDRAMs, SRAMs, RDRAMs, 3DRAMs, 또는 차세대 3DRAMs) 중 어느 것이라도 포함할 수 있다. 일례로, 각 스케쥴 유닛(154)은 4개의 샘플 메모리 뱅크와 결합되고, 각 뱅크는 4개의 3DRAM-64 메모리를 포함한다. 동시에, 3DRAM-64 메모리는 픽셀당 다중 샘플을 저장하는 116-비트 딥 수퍼-샘플되는 샘플버퍼를 형성할 수 있다. 예를 들어, 일례로, 각 샘플 메모리(160A-160N)는 픽셀마다 16개의 샘플을 저장할 수 있다.
3DRAM-64 메모리는 원칩의 단일 버퍼 Z를 가지고 완전한 내부 이중 버퍼링(internal double buffering)을 지원하도록 구성된 특수화된 메모리다. 이중 버퍼 부분은 2개의 RGBX 버퍼를 포함하며, 여기서 X는 다른 정보(예컨대, 알파)를 저장하는데 이용되는 4번째 채널이다. 3DRAM-64 메모리는 또한, 윈도우 ID 정보를 받아들이고 어느 버퍼의 내용이 출력될 것인가를 선택하는 내부 2-1 또는 3-1 멀티플렉서를 제어하는 검색 테이블을 가지고 있다. 3DRAM-64 메모리는 미츠비시전기회사(Mitsubishi Electric Corporation)의 반도체 그룹에 의해 곧 이용가능하게 될 차세대 3DRAM 메모리이다. 일례로, 조합하여 사용되는 4개의 칩은 이중 버퍼가 달린 1280 X 1024 수퍼-샘플되는 샘플버퍼를 만드는데 충분하다. 메모리들이 내부적으로 이중-버퍼로 되어 있으므로, 이중-버퍼로 된 시스템에서 2개의 프레임 버퍼 각각을 위한 입력 핀(pins)은 (메모리 내부의 멀티플렉서를 사용하여) 시간에 의해 멀티플렉스된다. 출력 핀(pins)은 마찬가지로 시간에 의해 멀티플렉스 될 수 있다. 이렇게 하면 이중 버퍼의 이점을 제공하면서도 핀 카운트를 감소시킬 수 있다. 3DRAM-64 메모리는 더 나아가서 z 출력 핀을 가지지 않음으로써 핀 카운트를 감소시킨다. z 비교 및 메모리 버퍼 선택은 내부적으로 다루어지므로, 이는 (예컨대, 출력측에 선택 로직을 적게 사용하거나 또는 사용하지 않음으로써) 샘플버퍼(162)를 단순화할 수 있다. 3DRAM-64를 사용하면 또한 메모리 대역폭을 줄일 수 있는데, 왜냐하면 데이터를 읽어 내고, z 비교를 수행하고, 그리고 나서 데이터를 다시 써 넣는 종래기술의 공정 없이 정보가 메모리로 읽혀질 수 있기 때문이다. 그 대신에, 메모리가 상기에 설명된 단계를 내부적으로 수행하므로 데이터는 3DRAM-64로 간단히 써 넣어질 수 있다.
그러나, 그래픽 시스템(112)의 다른 실시예에서, 다른 메모리들(예컨대, SDRAMs, SRAMs, RDRAMs, 또는 현재 세대의 3DRAMs)이 샘플버퍼(162)를 형성하기 위해 사용될 수 있다.
그래픽 프로세서(90)는 특별한 샘플 위치도해(예컨대, 정규의 그리드, 교란된 정규 그리드 등)에 따라 복수의 샘플 위치를 생성하도록 구성될 수 있다. 다른방법으로는, 샘플 위치들(또는 샘플 위치를 형성하기 위해 정규의 그리드 위치에 더해지는 오프셋)은 샘플 위치 메모리(예컨대, RAM/ROM 테이블)로부터 읽혀질 수 있다. 렌더링될어야 할 다각형을 수신하면, 그래픽 프로세서(90)는 샘플 위치에 기초하여 어느 샘플이 다각형 내에 해당하는지 결정한다. 그래픽 프로세서(90)는 다각형 내에 해당하는 샘플을 렌더링하고 렌더링된 샘플을 샘플 메모리(160A-N)에 저장한다. 여기서 사용된 바와 같이, 용어 "렌더(render)"와 "드로어(draw)"는 서로 교환하여 사용될 수 있으며, 샘플에 대한 컬러값을 계산하는 것을 말한다는 점에 주의하라. 심도값(depth values), 알파값(alpha values) 및 샘플에 대한 다른 값이 또한 렌더링 또는 드로어 프로세스에서 계산될 수 있다.
F. 샘플-픽셀 연산유닛(Sample-to-pixel Calculation Units)
샘플-픽셀 연산유닛(170A-D)은 샘플 메모리(160A-N)와 DACs(178A-B) 사이에 결합될 수 있다. 샘플-픽셀 연산유닛(170A-D)은 샘플 메모리(160A-N)로부터 선택된 샘플을 읽고 샘플에 대해 콘볼루션(예컨대, 여과 및 평가 함수, 또는 저역통과필터)을 수행하여 DACs(178A-B)로 출력되는 출력 픽셀값을 생성하도록 구성된다. 샘플-픽셀 연산유닛(170A-D)은 희망되는 출력의 유형에 따라서, 다른 시간에 다른 필터 기능을 수행할 수 있도록 프로그램될 수 있다. 일례로, 샘플-픽셀 연산유닛(170A-D)은 5x5 수퍼-샘플 재건 대역-통과 필터를 수행하여, (샘플 메모리(160A-N)에 저장된) 수퍼-샘플되는 샘플버퍼의 데이터를 단일의 픽셀값으로 변환한다. 다른 실시예로서, 연산유닛(170A-D)은 출력 픽셀을 계산하기 위해 선택된 수의 샘플을 여과한다. 여과된 샘플은, 계산되는 픽셀의 중심에 가까운 위치를 가지는 샘플에 다소의 가중치를 주는 가변의 가중 인자(weighting factor)에 의해 곱해질 수 있다. 예컨대, 천막 필터(tent filter), 원형 및 타원형 필터, 미첼 필터(Mitchell filters), 대역 통과 필터, 싱크 함수 필터 등과 같은, 그 밖의 여과 함수가 또한, 단독적으로 또는 조합하여 사용될 수 있다.
샘플-픽셀 연산유닛(170A-D)은 또한 하나 이상의 다음의 특징으로 형성될 수도 있다: 모조 컬러 테이블을 사용하는 컬러 검색, 다이렉트 컬러, 인버스 감마 교정, 샘플의 픽셀로의 여과, 그리고 픽셀의 비선형 빛 공간으로의 전환. 다른 특징의 샘플-픽셀 연산유닛(170A-D)은 프로그래머블 비디오 타이밍 생성기, 프로그래머블 픽셀 클럭 합성기, 컬러 공간 변환기, 그리고 크로스바 함수. 일단 샘플-픽셀 연산유닛이 타이밍과 각 픽셀의 색을 조절하면, 픽셀은 DACs(178A-B)로 출력된다.
일례로, 샘플-픽셀 연산유닛은 저장 샘플의 여과를 조절하여 아티팩트를 줄이도록 작동될 수 있으며, 예컨대, 이웃하는 프레임에서의 저장 샘플의 여과를 선별적으로 조절하여 이웃하는 프레임 사이의 아티팩트를 줄이도록 작동될 수 있다. 여과는 필터가 적용되는 중심 장소을 조절함으로써, 예컨대, 종전의 프레임과 관련하여 픽셀이 생성되는 콘볼루션 중심의 장소을 조절함으로써 조절될 수 있다. 이러한 저장 샘플의 필터를 조절하는 것은 아티팩트를 줄이도록, 또는 보이는 아티팩트를 줄이도록 작동될 수 있으며, 예컨대, 단순히 아티팩트를 이미지 내에서 인간에게 보다 지각되기 힘든 위치에 분배할 수 있다.
일례로, 샘플-픽셀 연산유닛(170A-D)은 각각, 콘볼루션 필터가 적용되는 샘플버퍼내 중심 장소들(중심들)에 대응하는 어드레스를 생성하기 위한 어드레스 생성 로직을 포함하며, 여기서 콘볼루션 필터는 표시용 출력 픽셀을 생성하는데 있어서, 샘플버퍼내의 상기 중심들에 적용된다. 어드레스 생성 로직은, 희망되는 중심들에 대응하여 선별된 서브-픽셀 위치에 어드레스를 생성하도록 프로그램될 수 있다. 바람직한 실시예로서, 어드레스 생성 로직에 의해 생성되는 초기의 서브-픽셀 위치 어드레스는 프로그램될 수 있고, 픽셀 스텝 사이즈는 일정하게 유지될 수 있다.
본 발명은 그래픽 프로세서가 샘플을 샘플버퍼로 렌더링 하는 것과 같은 속도에서 샘플-픽셀 연산유닛이 출력 픽셀을 생성하도록 적용될 수 있으며, 또는 샘플-픽셀 연산유닛이 렌더링 속도와 다른(예컨대, 높은) 속도로 동작하도록 적용될 수 있다.
본 발명의 또 다른 실시예로서, 샘플-픽셀 연산유닛은 저장 샘플의 여과를 조절하여 패닝(panning), 줌잉(zooming), 회전(rotation), 또는 화면이동(moving scenes)과 같은 디스플레이 효과를 제공하도록 작동될 수 있다. 이렇게 저장 샘플의 여과를 선별적으로 조절하여 아티팩트를 줄이거나 디스플레이 효과를 생성하는 것은 아래에서 도 15 - 20과 관련하여 더 설명한다.
G. DACs
DACs(178A-B)는 그래픽 시스템(112)의 최종 출력 단계로서 동작한다. DACs(178A-B)는 크로스 유닛(174A-B)으로부터 수신된 디지털 픽셀 데이터를 아날로그 비디오 신호로 전환하며, 아날로그 비디오 신호는 디스플레이 장치로 보내진다. 일례로, DACs(178A-B)는 아날로그 비디오 신호 대신에 디지털 픽셀 데이터로 출력하기 위해 무시되거나 완전히 생략될 수도 있다는 점에 주목하라. 이것은 디스플레이 장치(84)가 디지털 기술(예컨대, LCD-형 디스플레이 또는 디지털 마이크로-미러 디스플레이)에 기초하였을 때 유용하다.
나타낸 바와 같이, 프로그래머블 클럭 유닛(182)은 (픽셀 클럭을 포함한) 하나 이상의 클럭 신호를 각각의 DAC(178A-B)에 제공하도록 동작한다. 픽셀 클럭의 각 상승 에지(rising edge)에서, DACs(178A-B)는 대응하는 아날로그 신호의 디스플레이로의 출력을 위해 DACs(178A-B)에 출력 픽셀값(들)을 래취(latch)한다.
샘플-픽셀 연산유닛이 위에서 언급한 바대로 종전의 프레임에 관련하여 프레임의 콘볼루션 중심을 수평적으로 또는 수직적으로 조절할 때, 샘플-픽셀 연산유닛은 또한 DACs(178A-B)로 제공되는 픽셀 클럭의 위상을 이동시키거나 조절하도록 작동한다. 종전 프레임에 관련하여 프레임에서의 콘볼루션 중심의 조절에 기인하는, 이미지의 눈에 띄는 "흔들림"을 방지하기 위해 이것이 필요하다. 일반적으로, 픽셀의 세분에 의한 콘볼루션 중심의 이동은 타이밍의 이동에 상당하는 양 만큼 직접적으로 상관한다. 비디오 타이밍을 조절하여 픽셀 여과에 있어서의 콘볼루션 중심 조절을 보충하는 것은 아래에서 더 설명한다.
디지털 픽셀이 디스플레이로의 출력인 그래픽 시스템에서, 그래픽 시스템은 프로그래머블 픽셀 클럭을 수신하는 출력 소자 또는 장치를 포함하며, 여기서 출력 소자는 디지털-아날로그 전환 회로를 포함하지 않는다.
수퍼-샘플링 -- 도 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
도 6은 그래픽 시스템(112)의 일례를 통하여, 데이터의 흐름을 위해 가능한 하나의 구성을 나타낸다. 도면에서 나타낸 바와 같이, 기하 데이터(350)는 그래픽 시스템(112)에 의해 수신되고 드로어 프로세스(352)을 행하기 위해 사용된다. 드로어 프로세스(352)는 하나 이상의 제어 유닛(140), 렌더링 유닛(150), 메모리(152)와 스케쥴 유닛(154)에 의해 수행된다. 기하 데이터(350)는 하나 이상의 다각형을 위한 데이터를 포함한다. 각 다각형은 복수의 꼭지점(예컨대, 삼각형의 경우에는 3개의 꼭지점)을 포함하는데, 그 중 어떤 것은 공유될 수 있다. x, y와 z 좌표와 같은 데이터, 컬러 데이터, 라이팅 데이터와 텍스쳐 맵 정보가 각 꼭지점을 위해 포함될 수 있다.
꼭지점 데이터에 더하여, (렌더링 유닛(150A-D)에 의해 행해질 수 있는) 드로어 프로세스(352)는 또한 샘플 위치 메모리(354)로부터 샘플 좌표를 수신한다. 일례에서, 위치 메모리(354)는 텍스쳐 및 렌더 메모리(152A-152D)의 일부로서 또는 분리된 메모리로서 인식될 수 있다. 샘플 위치 메모리(354)는, 드로어 프로세스(352)에서 계산되고 수퍼-샘플되는 샘플버퍼(162)에 저장되는 샘플을 위한 위치 정보를 저장하도록 구성된다. 일례로, 위치 메모리(354)는 전체 샘플 어드레스를 저장하도록 구성될 수 있다. 그러나, 이는 위치 메모리(354)의 사이즈를 증가시킴을 포함할 수 있다. 다른 측면으로는, 위치 메모리(354)는 샘플을 위한 x와 y 오프셋(offset)만을 저장하도록 구성될 수 있다. 오프셋만을 저장하면, 각 샘플의 전체 위치를 저장하는 것보다 더 적은 저장 공간을 사용할 수 있다. 오프셋은 빈(bin) 좌표에 관련될 수도 있고 또는 정규 그리드상의 위치에 관련될 수도 있다. 샘플 위치 메모리(354) 내에 저장된 샘플 위치 정보는 주어진 샘플 위치 연산유닛(도시되는 않았음)에 의해 읽혀질 수 있으며 그래픽 프로세서(90)를 위한 예시적인 샘플 위치를 계산하도록 처리될 수 있다. 샘플 위치 오프셋에 대한 더 상세한 정보는 다음에 포함되어 있다(도 9와 10의 설명을 보라).
또 다른 실시예로, 샘플 위치 메모리(354)는 난수의 테이블을 저장하도록 구성될 수 있다. 샘플 위치 메모리(354)는 또한 하나 이상의 다른 유형의 정규 그리드를 생성하기 위해 주어진 하드웨어를 포함할 수도 있다. 이 하드웨어는 프로그램될 수 있다. 저장된 난수는 하드웨어에 의해 생성된 정규 그리드 위치를 향해 오프셋으로서 더해질 것이다. 일례로, 샘플 위치 메모리는 난수 테이블을 액세스하도록 또는 펼치도록 많은 다른 방법으로 프로그램될 수 있다. 이렇게 하면, 샘플 위치 오프셋을 반복함으로 인한 시각적 아티팩트 없이, 보다 작은 테이블이 사용될 수 있다. 일례로, 난수는 반복될 수 있으며, 그렇게 함으로써 드로어 프로세스(352) 및 샘플-픽셀 계산 프로세스(360)에서, 각 오프셋을 반드시 저장할 필요 없이 동일한 샘플을 위한 동일한 오프셋을 활용할 수 있다.
도면에서 나타낸 바와 같이, 샘플 위치 메모리(354)는 정규 사각 그리드, 정규 육각 그리드, 교란된 정규 그리드, 또는 무작위 (확률적) 분배와 같은 수많은 다른 설계에 따라 생성된 샘플 오프셋을 저장하도록 구성될 수 있다. 그래픽 시스템(112)은 운영 체제, 장치 드라이버, 또는 어떤 유형의 샘플 위치도해가 이용될 것인지를 지시하는 기하 데이터(350)로부터의 지시를 받을 수 있다. 따라서, 샘플 위치 메모리(354)는 하나 이상의 다른 설계에 다른 위치 정보를 생성하도록 구성되거나 프로그램 될 수 있다. 다양한 샘플 위치도해에 관한 더욱 상세한 정보는 아래에서 더 설명될 것이다(도 8의 설명을 보라).
일례로, 샘플 위치 메모리(354)는, 빈(bin) 당 다른 전체적 샘플 카운트를 위한 확률적 샘플 포인트(또는 위치)를 담는 RAM/ROM을 포함할 수 있다. 여기서 사용되는 바와 같이, 용어 "빈(bin)"이란 스크린-공간내의 영역 또는 지역을 말하며, 그 지역에 있는 모든 수많은 샘플을 담는다(예컨대, 빈은 지역에서 1x1 픽셀, 지역에서 2x2 픽셀 등이 될 수 있다). 빈(bin)을 사용하면 샘플버퍼(162)내의 샘플의 저장 및 액세스를 단순화할 수 있다. 많은 다른 빈(bin) 사이즈가 이용될 수 있다(예컨대, 빈 당 하나의 샘플, 빈 당 4개의 샘플 등). 바람직한 실시예로서,각 빈(bin)은 디스플레이상의 특별한 위치에 대응하는 xy-포지션을 가진다. 빈은 바람직하게는 규칙적으로 간격을 둔다. 이 실시예에서, 빈의 xy-포지션은 샘플버퍼(162)내의 빈의 저장 위치로부터 결정된다. 빈의 위치는 디스플레이상의 특별한 위치에 대응한다. 일부 실시예에서 빈의 위치는 픽셀 중심에 대응할 수 있는 반면에, 다른 실시예에서는 빈의 위치는 픽셀 중심 사이에 위치된 점과 대응한다. 빈 내부의 각 샘플의 특별한 위치는 ROM/RAM 테이블 내에서 샘플의 오프셋(offset)을 검색함에 의해 결정될 수 있다(오프셋은 대응하는 빈 위치에 관련하여 저장될 수 있다). 그러나, 임플러먼테이션(implementation)에 따라서, 모든 빈 사이즈가 독특한 RAM/ROM 기입사항을 가지는 것은 아니다. 어떤 빈 사이즈는 단순히 보다 큰 빈 사이즈의 기입사항의 일부분(subset)을 읽는다. 일례로, 각 지원되는 사이즈는 적어도 4개의 다른 샘플 위치도해 변형을 가지며, 이는 반복하는 샘플 위치로 인한 최종 이미지 아티팩트를 줄일 수 있다.
일례로, 위치 메모리(354)는 수 쌍의 8-비트 수를 저장할 수 있으며, 각 쌍은 x-오프셋과 y-오프셋을 포함한다(예컨대, 타임 오프셋, z-오프셋 등 다른 가능한 오프셋도 또한 이용할 수 있다). 각 쌍은 빈 위치에 더해지면 스크린 공간에서 특별한 위치를 정의한다. 용어 "스크린 공간"이란 일반적으로 디스플레이 장치의 좌표 체계를 말한다. 읽는 시간을 향상시키기 위해, 메모리가 클럭 싸이클 당 하나 이상의 샘플 위치를 출력하도록 하기 위해, 메모리(354)는 넓은/병렬의 방식으로 구성될 수 있다.
일단 샘플 위치가 샘플 위치 메모리(354)로부터 읽혀지면, 드로어프로세스(352)는 현재 렌더되고 있는 다각형 내에 해당하는 샘플 위치를 선택한다. 그러면, 드로어 프로세스(352)는 이 각각의 샘플을 위해 (알파 또는 다른 깊이의 필드 정보 및/또는 블러 값(blur value)을 포함할 수 있는) z 및 컬러 정보를 계산하고 데이터를 샘플버퍼(162)에 저장한다. 일례로, 컬러와 같은 그밖의 샘플 구성요소를 이중 버퍼링하는 동안 샘플버퍼는 z값(및 알파값)을 싱글-버퍼만 할 수도 있다. 종래의 시스템과 달리, 그래픽 시스템(112)은 (비록 모든 샘플 구성요소가 이중 버퍼링되는 것은 아니더라도, 즉, 샘플이 이중 버퍼링되지 않는 구성요소들을 가질 수 있으며, 또는 모든 샘플이 이중-버퍼링되는 것은 아니다) 모든 샘플을 이중 버퍼링할 수도 있다. 일례로, 샘플들은 샘플버퍼(162)의 빈(bin)내에 저장된다. 어떤 실시예에서는, 빈의 사이즈는, 즉, 빈 내의 샘플의 양은, 프레임마다 변화할 수 있으며 단일의 프레임 내에서 디스플레이 장치(84)의 다른 영역마다 변화할 수도 있다. 예를 들어, 디스플레이 장치의 에지(edge)에 따라 존재하는 빈(bin)은 하나의 샘플만을 포함할 수도 있는 반면에, 디스플레이 장치(84)의 중심 부근의 픽셀에 대응하는 빈은 16개의 샘플을 포함할 수도 있다. 빈의 범위는 영역에 따라서 변화할 수도 있다는 점에 주목하라. 빈을 사용하는 것은 도 11과 관련하여 더욱 자세히 설명될 것이다.
드로어 프로세스(352)와 병행 및 독립적으로, 여과 프로세스(360)는 샘플버퍼(162)로부터 샘플을 읽고, 그것들을 여과하고, 그리고는 그 결과로서의 출력 픽셀을 디스플레이 장치(84)로 출력하도록 구성되어 있다. 샘플-픽셀 연산유닛(170)은 여과 프로세스(380)를 수행한다. 따라서, 출력 픽셀들의 적어도 하나의일부분(subset)을 위해, 여과 프로세스는 각 출력 픽셀을 생성하기 위한 복수의 샘플을 여과하도록 동작될 수 있다. 일례로, 여과 프로세스(360)는: (i)각 샘플로부터, 여과되는 출력 픽셀의 중심까지의 거리를 결정하고; (ii)샘플의 구성요소(예컨대, 컬러 및 알파)를 상기 거리의 특정한 (프로그램 가능한) 함수인 필터값과 곱하고; (iii)출력 픽셀에 기여하는 모든 중요한 샘플을 더하고, (iv)그 결과로서의 출력 픽셀을 정규화하도록 구성되어 있다. 여과 프로세스(360)는 아래에 보다 자세히 설명되어 있다(도 11, 12와 14에 관련한 설명을 보아라). 필터의 범위는 원형일 필요가 없다는 점에 주목하라(즉, 거리 대신에 x 및 y의 함수일 수도 있다). 그러나 그 범위가 원형이더라도 그 필터는 원형적으로 대칭일 필요는 없다. 필터의 "범위(extent)"란, 필터로 연산되는, 특정한 픽셀에 영향을 미칠 수 있는 샘플이 있는 영역을 말한다.
본 발명에 따르면, 샘플-픽셀 연산유닛은 저장 샘플의 여과를 선별적으로 조절하여 아티팩트를 줄이거나 아래에 더 설명되는 바와 같이 다양한 디스플레이 효과를 제공하도록 작동될 수 있다.
도 7을 보면, 그래픽 시스템(112)의 다른 실시예를 나타내는 도표를 나타내고 있다. 이 실시예에서, 2 이상의 샘플 위치 메모리(354A 및 354B)가 활용된다. 따라서, 샘플 위치 메모리(354A-B)는 반드시 이중-버퍼(double-buffer)로 되어 있어야 한다. 샘플 위치가 프레임마다 동일하게 유지되면, 샘플 위치는 싱글 버퍼로 될 수도 있다. 그러나, 샘플 위치가 프레임마다 변화할 수 있으면, 그래픽 시스템(112)은 샘플 위치를 이중-버퍼링하도록 유리하게 구성될 수 있다. 샘플 위치는 렌더링 측에서 이중 버퍼로 될 수 있고(즉, 메모리354A는 이중 버퍼로 될 수 있다), 그리고/또는 필터/콘벌브(filter/convolve) 측(예컨대, 메모리354B는 이중 버퍼로 될 수 있다)에서 이중 버퍼로 될 수 있다. 다른 조합도 또한 가능하다. 예를 들어, 메모리(354A)는 싱글-버퍼로 될 수 있는 반면, 메모리(354B)는 이중 버퍼로 될 수 있다. 이렇게 구성하면, 한쪽 메모리(354B)가 업데이트되어 사용되는 동안, 메모리(354B)의 다른 측은 (즉, 필터/콘벌브 프로세스(360)에 의해) 리프레쉬를 위해 사용될 수 있다. 이 구성에서, 각 프레임이 렌더됨에 따라 메모리(354A)로부터 이중-버퍼링 되는 메모리(354B)로 샘플 위치(또는 오프셋)를 이동시킴으로써, 그래픽 시스템(112)은 프레임 당 샘플 위치도해를 바꿀 수 있다. 따라서, (메모리(354A)로부터 읽혀진) 샘플을 연산하는데 사용되는 위치는 여과 프로세스(즉, 샘플-픽셀 변환 프로세스)동안 사용될 메모리(354B)로 복제된다. 일단 위치 정보가 메모리(354B)로 복제되면, 위치 메모리(354A)는 렌더될 두 번째 프레임을 위해 사용되는 새로운 샘플 위치 오프셋을 실을 수 있다. 이러한 방법으로, 샘플 위치 정보는 드로어/렌더 프로세스로부터 여과 프로세스까지 샘플을 따른다.
그러나 또 다른 실시예에서는, 수퍼-샘플되는 샘플버퍼(162)내의 샘플들에 대하여 오프셋에 태그(tag)를 저장할 수 있다. 이 태그는 각 특정한 샘플과 관련하여 오프셋/동요(offset/perturbation)를 검색하는데 사용될 수 있다.
샘플 위치도해(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)이 컬럼의 끝에 도달할 때, 샘플의 하나 이상의 행(row) 아래로 이동하며, 그리고 나서 다시 진행한다. 따라서, 콘볼루션 프로세스는 주사선 방식으로 진행하며, 하나의 컬럼의 표시용 출력 픽셀을 생성한다.
이제 도 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개 샘플까지 확률적으로 샘플링함으로써, 풀-스크린 앤티-앨리어싱을 수행하도록 구성될 수 있다.
아티팩트를 줄이기 위한 동적인 필터 조절
본 발명은 아티팩트의 감소를 위해, 출력 픽셀의 생성에 있어 샘플의 여과를 조절하는 진보된 시스템 및 방법을 포함한다.
수퍼-샘플되는 프레임 버퍼는 실제로 디스플레이되는 것보다 더 많은 정보, 즉, 주어진 프레임내의 출력 픽셀에 있어서 실제로 만들어지는 것보다 더 많은 정보를 담는다. 위에서 설명한 바와 같이, 수퍼-샘플되는 샘플버퍼는 디스플레이로 직접 제공될 수 있는 출력 픽셀을 생성하기 위하여 사용될 수 있는, 복수의 샘플을 저장한다. 샘플에 대한 응답으로 출력 픽셀을 생성하는 콘볼루션 프로세스는 전형적으로, 일부 계산된 샘플 정보를 사용하지 않거나 "폐기(throw out)"할 것이다. 이 여분의 정보는 빠진 에지를 감지하기 위해 또는 아티팩트를 제거하기 위해 렌더링되거나 계산된다. 그러나, 확률적 샘플링(stochastic sampleing) 또는 그리드 샘플링(grid-based sampling)과 같은 수퍼-샘플링만으로는 모든 아티팩트를 제거할 수는 없을 것이며, 예컨대, 상기에서 언급한 다양한 샘플 위치도해가 모든 앨리어싱과 아티팩트를 제거할 수는 없다. 예를 들어, 8x 수퍼 샘플링의 성능이 최종 출력 이미지로부터 모든 아티팩트와 앨리어싱이 제거됨을 보장하지는 않는다. 오히려, 예컨대, 확률적 샘플링은 앨리어싱을, 노이즈처럼 더 나타나지만 눈에는 덜 민감한 아티팩트로 교환한다. 따라서, 종래기술상의 픽셀에 기초한 프래임 버퍼보다는 좋은 반면에, 수퍼-샘플되는 샘플버퍼를 사용하는 그래픽 시스템은 부주의하게 몇 삼각형을 빠뜨리고/또는 몇 개의 아티팩트를 발생시킬 수 있다.
렌더링 속도가 리프레쉬 속도보다 적으면, 샘플버퍼의 샘플은 2번 이상 콘벌브(convolve)되고, 아티팩트가 발생할 수 있다. 여기서 사용되는 바와 같이, 용어 "렌더 속도(render rate)"란, 샘플이 샘플버퍼로 렌더되는 속도를 말한다. 용어 "리프레쉬 속도(refresh rate)"란, 샘플-픽셀 연산유닛이 샘플버퍼로부터 샘플을 선택 및 획득하고 디스플레이로(바람직하게는 그 사이에 샘플버퍼 없이 직접 디스플레이로) 제공되는 출력 픽셀을 생성하기 위해 그 샘플을 여과하는 속도를 말한다.
본 발명의 일례로, ("샘플-픽셀 연산유닛(170)"의 개개의) 하나 이상의 샘플-픽셀 연산유닛(170A-D)은 렌더링 작용 또는 렌더링 속도와 다른 속도에서, 그리고 바람직하게는 독립적으로, 콘볼루션을 수행하도록 동작될 수 있다. 따라서,샘플 데이터를 샘플버퍼로 계산하여 저장하는 속도는 리프레쉬 속도(refresh rate) 또는 콘벌브 속도(convolve rate)와 분리될 수 있다. 따라서, 샘플-픽셀 연산유닛(170)은 렌더링 속도와는 독립적으로 "온 더 플라이(on-the-fly)"로 동작할 수 있다. 렌더링 속도가 리프레쉬 속도보다 적을 때, 2개 이상의 연속적 프레임을 위해 일부 동일한 샘플 데이터가 콘벌브(convolve)되며, 아티팩트가 발생할 수도 있다. 아티팩트는 또한 렌더링 속도가 리프레쉬 속도와 동일할 때에도 발생할 수 있지만, 그러나, 예를 들어, 샘플버퍼의 현재의 샘플 데이터는 종전 프레임으로부터의 샘플 데이터와 유사할 수도 있다. 본 발명은 아티팩트의 감소를 위해 동적으로 필터를 조절하는 시스템 및 방법을 포함한다.
일례로, 샘플-픽셀 연산유닛(170)은 저장 샘플의 여과를 선별적으로 조절하여 아티팩트를 줄이도록 작동될 수 있으며, 예컨대, 이웃하는 프레임의 저장 샘플의 여과를 선별적으로 조절하여 이웃하는 프레임 사이의 아티팩트를 줄이도록 작동될 수 있다. 예를 들어, 샘플-픽셀 연산유닛(170)은 디스플레이의 첫째 출력 픽셀을 생성하기 위해, 제1 필터를 사용하여, 저장샘플의 제1 세트를 선택하고 여과할 수 있으며, 나중에 디스플레이의 두 번째 출력 픽셀을 생성하기 위해 제1 필터와 다른 제2 필터를 사용하여 저장 샘플의 제2 세트를 선택하고 여과할 수 있다. 이것은 아티팩트를 디스플레이상의 고정된 위치로부터 가변적 위치로 바꾸는 작용을 하며, 이렇게 함으로써 인간의 시각체계에 의해서는 보다 무시될 수 있게 된다.
예를 들어, 종전 프레임에서 0.01%의 픽셀이 아티팩트를 가지고, 동일한 샘플 데이터가 출력 픽셀을 생성하기 위해 현재 프레임에서 사용되고 있다고 가정한다. 현재의 프레임에서, 샘플-픽셀 연산유닛(170)은, 현재 프레임을 위해 출력 픽셀을 생성함에 있어, 샘플 데이터에 대해 필터가 적용되는 중심 장소을 샘플 데이터로 반 픽셀만큼 이동하도록 동작할 수 있다. 이것은 현재 프레임에서 다른 아티팩트가 생성되지 않게 하면서, 픽셀의 0.01%에 대한 아티팩트를 완전히 제거할 수 있다. 다른 측면에서는, 이는 현재 프레임 내의 픽셀의 0.01%에 대한 아티팩트를 완전히 제거하지만, 다른 픽셀에 대한 아티팩트를 야기할 수 있으며, 이것은 디스플레이에서 다른 위치에 나타날 것이다. 이 경우에, 인간의 시각 체계는 아티팩트를 평균할 것이며 보다 덜 지각되는 아티팩트를 만들 것이다. 따라서 본 발명은 출력 픽셀에 대한 임시적 디더링(dithering) 유형을 효과적으로 수행할 수 있으며, 이는 보다 덜 지각되는 아티팩트를 야기한다.
샘플-픽셀 연산유닛(170)은, 아티팩트의 감소를 위해, 이웃하는 프레임내의 저장 샘플의 여과를 패닝(panning)과 줌잉(zooming)과 같이 다양한 스크린 효과의 시뮬레이션에 의해 선별적으로 조절할 수 있다. 샘플-픽셀 연산유닛(170)은 또한, 희망하는 바대로, 다른 소정의 또는 확률적 방법을 사용하여 이웃하는 프레임의 저장 샘플의 여과를 선별적으로 조절할 수 있다. 예를 들어, 샘플-픽셀 연산유닛(170)은, 수평 방향 중 어느 한쪽으로 0부터 0.5 서브-픽셀 범위의 확률값에 의해, 이웃하는 프레임의 저장 샘플의 여과를 선별적으로 조절할 수 있다.
샘플-픽셀 연산유닛(170)은 위에서 설명한 바와 같이 샘플을 여과하는데 있어서 필터를 활용할 수 있으며, 샘플-픽셀 연산유닛(170)은 바람직하게는, 저장 샘플의 여과 동안에 필터가 적용되는 중심 장소을 선별적으로 조절하여 아티팩트를줄이인다. 달리 말하면, 샘플-픽셀 연산유닛(170)은 바람직하게는, 종전 프레임에서 사용된 중심 장소에 관련하여, 필터가 적용된 중심 장소을 선별적으로 조절한다. 콘볼루션 필터가 적용되는 중심 장소의 조절은 생성되는 출력 픽셀의 중심장소의 조절과 균등하다.
샘플-픽셀 연산유닛(170)은 콘볼루션 필터의 중심 장소에 대응하는 어드레스를 생성하기 위한 어드레스 생성 로직을 포함하며, 여기서 어드레스 생성 로직은 원하는 중심에 대응하는, 샘플버퍼내의 선별된 서브-픽셀 위치에서의, 어드레스를 생성하도록 프로그램될 수 있다. 바람직한 실시예로, 어드레스 생성 로직이 어드레스를 생성하기 시작하는 초기의 서브-픽셀 위치가 프로그램될 수 있다. 샘플-픽셀 연산유닛(170)은 콘볼루션 필터의 중심의 초기의 서브-픽셀 위치를 하나 이상의 x 또는 y 방향으로 선별적으로 조절할 수 있으며, 콘볼루션 필터의 중심을 종전 프레임에서 사용된 중심에 관련하여 서브-픽셀 거리만큼 조절할 수 있다. 어드레스 생성 로직은 또한, 프로그램될 수 있지만 일정하게 유지되는 것이 바람직한 픽셀 스텝 사이즈(pixel step size)를 포함할 수 있다. 픽셀 스텝 사이즈는 픽셀간의 피치(pitch)와 대응하며, 일반적으로 스크린 공간과 같이 종전 피치나 선택된 좌표계에 대한 픽셀간의 피치의 상대적 변화에 관련되어 있다.
필터 조절을 수행하기 위해, 그래픽 시스템내의 렌더링 유닛(150)은 즉각 볼 수 있는 영역 밖의 추가적 샘플을 렌더하도록 동작할 수 있고, 그래서 이들 샘플은 바람직한 조절을 위해 이용될 수 있다. 일례로, 샘플을 샘플버퍼로 렌더하기 전에, 그래픽 시스템은 이미 후속의 프레임의 모습을 산정해 놓고 있다(예컨대, 콘볼루션 중심의 희망하는 이동을 산정해 놓는다). 예를 들어, 희망되는 필터 조절이 콘볼루션 중심을 오른쪽으로 반 픽셀만큼 이동시키는 것을 포함하면, 추가적인 샘플이 샘플버퍼내에서, 종전 가시 영역의 적어도 반 픽셀만큼 오른쪽에 대응하는 위치에서 랜더링될 수 있어서, 이들 샘플은 디스플레이의 오른쪽 에지(edge)에서의 픽셀을 생성하는데 사용될 수 있다. 그렇지 않으면, 일부 샘플 데이터는 디스플레이의 오른쪽 에지에서의 출력 픽셀을 위해 이용될 수 없을 것이며, 바람직하지 않은 아티팩트가 디스플레이의 오른쪽 에지에서 나타날 수도 있다. 마찬가지 방법으로, 희망되는 필터 조절이 콘볼루션 중심을 반 픽셀만큼 왼쪽으로 이동하는 것을 포함하면, 샘플버퍼 내에서, 종전 가시 영역의 적어도 반 픽셀만큼 왼쪽에 대응하는 장소에 추가적인 샘플들이 렌더링 될 수 있으며, 따라서 이 샘플들은 디스플레이의 왼쪽 에지에서의 픽셀을 생성하는데 사용될 수 있다. 콘볼루션 중심의 상향 이동 또는 하강 이동이 희망되면, 시스템은 또한 추가적인 샘플들이 원하는 조절을 위해 이용될 수 있도록 하기 위해, 추가적인 샘플을 각각 즉각적인 가시영역의 위로 또는 아래로 이동시키도록 동작할 수 있다.
일례로, 샘플을 샘플버퍼로 렌더하기 전에, 그래픽 시스템은 이미 후속 프레임의 모습을 산정해두고(예컨대, 콘볼루션 중심에서의 희망되는 이동을 산정해둔다), 따라서 추가적인 샘플이 이 이동 산정에 따라서 샘플버퍼로 렌더링된다. 그와 달리, 추가적인 렌더링이 가격이나 지연을 거의 부가하지 않는다면, 렌더링 유닛(150)은 샘플버퍼의 모든 에지 주위의 추가적 샘플을 렌더링 할 수 있고, 따라서 그래픽 시스템은 다음 프레임으로 통하는 도중에 콘볼루션 중심의 희망되는 이동을결정할 수 있다.
샘플-픽셀 연산유닛(170)은 또한 필터의 유형, 사용되는 가중 인자(weighting factor), 필터의 반경, 또는 다른 필터의 파라미터와 같은 그 밖의 파라미터를 조절하여 연속적인 프레임간의 아티팩트를 제거하도록 시도할 수 있다. 필터의 반경이 아티팩트를 제거하기 위해 조절되는 경우에, 희미한 부분은 고해상도 부분을 "흐릿"하게 할 수 있고, 그렇게 함으로써 아티팩트를 제거할 수 있지만, 이는 지각되는 해상도를 희생해야 할 것이다.
비디오 타이밍의 조절
본 그래픽 시스템은 또한, 비디오 타이밍(video timing)을 선별적으로 조절하여, 저장 샘플의 여과 도중 콘볼루션 필터의 중심의 조절을 보충하도록 동작될 수 있다. 위에서 도 3의 DACs(178A-B)에 관해 언급한 바와 같이, 샘플-픽셀 연산유닛(170)이 프레임의 콘볼루션 중심을 앞서 설명한 바와 같이 종전 프레임에 관련하여 수평적으로 또는 수직적으로 조절할 때, 샘플-픽셀 연산유닛(170)은 또한 DACs(178A-B)에 제공되는 픽셀 클럭의 위상을 이동 또는 조절하도록 동작할 수 있다. 이것은, 프레임내 콘볼루션 중심의 종전 프레임에 관련한 조절에 기인한, 이미지의 현저한 "흔들림"을 방지하기 위해 필요하다. 일반적으로, 픽셀의 일부분만큼의 콘볼루션 중심의 이동은, 대응하는 타이밍(timing) 이동과 직접적으로 상관한다.
샘플-픽셀 연산유닛(170)은 프레임의 콘볼루션 중심을 수평적 또는 수직적으로 조절하도록 동작할 수 있다. 콘볼루션 중심들이 전체 스캔라인만큼 수직적으로 이동되면, 픽셀들은 전체 스캔라인만큼 지연될 수 있으며, 프레임의 출력에 있어서 하나의 스캔 라인의 스크롤이 생긴다. 수직적 이동이 콘볼루션 중심에 있어서 희망된다면, 이것은 바람직하게는 CRT(cathode ray tube) 디스플레이와 같은 아날로그 디스플레이에 대해서만 행해지며, 바람직하게는 한 라인의 절반 정도의 서브-라인(sub-line) 증가에 대해 행해진다.
조절된 픽셀 클럭은 하나 이상의 HSYNC 신호 및 VSYNC 신호를 조절하도록 작동할 수 있다. 일례로, 프로그래머블 클럭 유닛(182)은 적어도 하나의 멀티플렉서를 포함하며, 지연되고 진보된 버전의 하나 이상의 픽셀 클럭을 생성하기 위한 지연 소자를 포함한다. 이 다른 버전의 픽셀 클럭은 콘볼루션 중심 조절의 유형 및 양에 따라 선택된다. 프로그래머블 클럭 유닛(182)은 또한 비디오 타이밍을 제어하는 상태기기에 따라 동작할 수 있다.
어떤 디스플레이에서는, 수평의 시작 펄스를 조절하는 것과 같이, 디스플레이에 제공되는 하나 이상의 타이밍 신호를 단순히 바꾸는 것은 불충분할 수도 있는데, 이는 보다 높은 끝단의 표현이 상쇄될 수 있기 때문이다. 따라서 DACs로 제공되는 픽셀 클럭 또는 다른 출력 회로가 조절된다.
도 15 - 프레임내에서의 여과의 조절
도 15는 아티팩트를 줄이거나 또는 원하는 디스플레이 효과를 생성하기 위해, 현재 프레임에서 샘플의 여과를 조절하는 샘플-픽셀 연산유닛(170)의 동작을나타내는 순서도이다. 여기서 희망되는 조절이 발생할 장소에 추가적인 샘플이 샘플버퍼로, 종전에 렌더링되었을 것이라고 가정한다.
나타낸 바와 같이, 현재 프레임을 위한 출력 픽셀의 생성의 시작 전에, 단계402에서, 본 방법은 각 샘플-픽셀 연산유닛("콘볼루션 파이프라인"이라고도 한다)를 위한 제1 콘볼루션 중심의 시작 어드레스를 프로그램한다. 단일(single)의 콘볼루션 파이프라인이 사용되면, 본 방법은 디스플레이 장치에 표현되는 좌상(upper left)의 픽셀을 위해, 콘볼루션 중심의 시작 어드레스를 프로그램할 것이다. 다중(multiple) 콘볼루션 파이프라인이, 도 11에 나타낸 바와 같이, 병렬로 동작하는 경우, 본 방법은 각각의 콘볼루션 파이프라인을 위한 콘볼루션 중심, 예컨대, 각 콘볼루션 파이프라인을 위한 좌상의 시작 픽셀을 위한 콘볼루션 중심의 시작 어드레스를 프로그램할 것이다.
단계 404에서, 본 방법은 각 콘볼루션 파이프라인을 위한 픽셀 스텝값을 프로그램할 수 있다. 픽셀 스텝값은, 수직 Y방향의 스텝값 뿐 아니라 수평 X방향의 스텝값을 포함할 수 있다. 픽셀 스텝값은, 콘볼루션 중심와 이웃하는 픽셀을 위한 다음의 연속적 콘볼루션 중심간의 거리와 대응한다. 일례로, 각각의 출력 픽셀을 위한 콘볼루션 중심은 콘볼루션 중심의 시작 어드레스와 각각의 픽셀 스텝값에 의해 결정되며, 전체 프레임(또는 다중 프레임)에 대해 일정하게 유지될 수 있다.
일례로, 픽셀 스텝값은 일정하게 유지되며, 그러므로 프로그램될 필요가 없다. 일정한 픽셀 스텝값을 가정하면, 콘볼루션 중심의 시작 어드레스의 변화는 종전 프레임의 픽셀에 사용된 콘볼루션 중심에 대하여 각 픽셀의 콘볼루션 중심에 오프셋(offset)을 두도록 동작하며, 여기서 오프셋(offset)은 종전 프레임의 픽셀에 대하여 각 픽셀에 대해 동일하다. 따라서, 현재 프레임에서의 각 출력 픽셀을 위해 콘볼루션 중심을 일관적으로 조절하기 위하여, 본 방법은, 일반적으로 각 콘볼루션 파이프라인 즉 샘플-픽셀 연산유닛(170)을 위해, 바람직하게는 종전 프레임에 관련하여 콘볼루션 중심의 다른 시작 어드레스를 프로그램하며, 종전 프레임과 동일한 픽셀 스텝값을 유지한다. 언급했던 바와 같이, 이것은 종전 프레임으로부터 픽셀을 위해 사용된 콘볼루션 중심에 대하여 같은 양 만큼 현재 프레임의 각 픽셀을 위한 콘볼루션 중심의 오프셋을 두도록 동작한다.
또 다른 실시예로, 본 방법은 프레임 마다(per-frame basis) 또는 픽셀 마다(per-pixel basis)에서 픽셀 스텝 사이즈를 조절하도록 함에 의해, 종전 프레임에서 픽셀을 위해 사용되었던 콘볼루션 중심에 관련하여 각 픽셀을 위한 콘볼루션 중심의 가변 오프셋을 만든다. 예를 들어, 픽셀 스텝 사이즈는, -0.25 와 +0.25 서브-픽셀 범위의 확률적 조절 등에 의하여, 프레임내 각각의 픽셀의 적어도 일부분만큼, 픽셀 마다 선별적으로 조절될 수 있다. 이것은 더 나아가서 이미지의 특정한 부분의 아티팩트를 제거하도록 동작할 수 있다.
본 발명의 이 방법이 줌잉(zooming)과 같은 디스플레이 효과를 만들기 위해 사용되는 데 있어서, 픽셀 스텝값은 "줌인(zoom in)"이나 "줌아웃(zoom out)"을 수행하기 위해 종전 프레임에 관련하여 다른 값으로 프로그램될 수 있다. 예를 들어, 픽셀 스텝값은 이미지상에서 줌인되기 위해 더 작은 스텝값으로 프로그램될 수 있고, 이미지에서 줌아웃되기 위해 더 큰 스텝값으로 프로그램될 수 있다. 디스플레이 효과의 생성은 아래에서 더 설명된다.
단계(406)에서, 본 방법은 단계(402)에서 프로그램된 시작 어드레스에서 콘볼루션을 시작한다. 이것은 표시용 첫째 출력 픽셀을 생성하기 위해, 단계(402)의 시작 어드레스에 의해 특정된 콘볼루션 중심에서, 콘볼루션 필터를 샘플버퍼내의 샘플에 적용하는 것을 포함한다.
단계(408)에서, 본 방법은 단계(404)에서 프로그램된 스텝값을 사용하여 다음 콘볼루션 중심로 진행한다.
단계(410)에서, 본 방법은 단계(408)에서 결정된 다음 콘볼루션 중심에서, 샘플버퍼 내의 샘플에 대해 콘볼루션을 행한다. 이것은 다시 콘볼루션 필터를 콘볼루션 중심에 따라 샘플버퍼내 샘플에 적용함으로써 출력 픽셀을 생성하는 것을 포함한다.
나타낸 바와 같이, 단계(408)와 단계(410)는 각각의 콘볼루션 파이프라인을 위해 출력 픽셀의 각각에 대해 반복된다. 각각의 콘볼루션 파이프라인 또는 샘플-픽셀 연산유닛이 만약 하나 이상이라면, 이들에 의해 단계(406, 408 및 410)가, 바람직하게는 병렬로, 수행될 수 있다는 점에 주목해야 한다.
따라서, 단순히 하나 이상의 각각의 샘플-픽셀 연산유닛 또는 콘볼루션 파이프라인을 위한 콘볼루션 중심의 시작 어드레스를 바꿈에 의해, 본 방법은 종전 프레임에서 사용된 콘볼루션 중심에 관련하여 현재 프레임을 위한 각각의 출력 픽셀을 위한 콘볼루션 중심을 조절하도록 동작한다. 위에서 설명한 바와 같이, 이것은 샘플 데이터가 종전 프레임으로부터의 샘플 데이터와 동일 또는 유사한 경우 등에,이웃하는 프레임간의 아티팩트를 제거하기 위하여 행하여 질 수 있다. 이것은 또한 아래에서 설명하는 바와 같이 다양한 유형의 디스플레이 효과를 생성하기 위해서도 행하여 질 수 있다.
도 16과 17 - 콘볼루션 중심의 조절의 예
도 16A-16B,17A,17B는 본 발명의 동작의 일례를 나타낸다. 도 16A는 여과되는 콘볼루션 중심이 샘플버퍼내의 각각의 빈(bins) 둘레의 중심을 두고 있는 샘플버퍼로부터의 대표적인 샘플 세트를 나타낸다. 나타낸 바와 같이, 디스플레이 출력 픽셀을 생성하기 위하여, 이 콘볼루션 중심들을 사용하여 콘볼루션 필터가 각각의 샘플들에 적용되면, 에지(edge)는 도 16B에 나타난 바와 같이 앨리어스나 아티팩트와 함께 생성될 것이다.
도 17A는 도 16A의 콘볼루션 필터에 대하여 콘볼루션 중심이 이동된 동일한 샘플 데이터 세트를 나타낸다. 도 17A에 나타낸 바와 같이, 콘볼루션 중심이 대략 픽셀의 1/2 정도만큼 왼쪽으로 이동되어 있다. 이 새로운 콘볼루션 중심에 적용된 콘볼루션 필터는 일반적으로, 도 16A의 콘볼루션 중심을 사용하여 적용된 콘볼루션 중심에 관련하여 다른 샘플 세트를 활용할 것이다. 따라서, 일부 샘플이 도 16A 및 17A의 각 콘볼루션 필터 내에서 사용될 수 있더라도, 콘볼루션 중심의 이동으로 인해 도 17A에서 출력 픽셀의 생성을 위해 사용되는 적어도 일부 샘플은 도 16A에서 사용되는 것과 다른 결과가 발생한다.
도 17A에 나타난 바와 같이, 특별하거나 이동된 콘볼루션 중심을 가지는 콘볼루션 필터를 사용하여, 동일한 샘플 세트에 대한 응답으로 출력 픽셀이 생성될 때, 도 17B에 나타낸 바와 같이, 아티팩트는 더 이상 나타나지 않을 것이다. 그려진 이미지의 다른 부분에 다른 아티팩트가 나타날 수 있다는 점에 주의해야 한다. 그러나, 이는 2 이상의 연속적 프레임의 동일한 위치에서 아티팩트가 나타나는 상황보다는 전형적으로 눈에 보다 덜 띌 것이다.
본 발명은, 그래픽 프로세서가 샘플을 샘플버퍼로 렌더링하는 속도와 동일한 속도에서, 샘플-픽셀 연산유닛(170)이 출력 픽셀을 생성하는 경우에도 적용될 수 있다. 그래픽 프로세서가 샘플을 샘플버퍼로 렌더링하는 속도와 동일한 속도에서, 샘플-픽셀 연산유닛(170)이 출력 픽셀을 생성하면, 일반적으로 샘플버퍼는 디스플레이의 각 리프레쉬에 대한 새로운 샘플 데이터를 담는다.
이 실시예에서, 그래픽 시스템은 이웃하는 프레임의 샘플 데이터의 유사성에 관한 정보를 그래픽 소프트웨어 드라이버나 그래픽 어플리케이션으로부터 받을 수 있다. 만약 하나 이상의 그래픽 소프트웨어 드라이버, 그래픽 어플리케이션, 또는 샘플-픽셀 연산유닛이 이웃하는 프레임의 샘플 데이터가 충분히 유사하다고 판단하면, 샘플-픽셀 연산유닛은 샘플 데이터의 현재 프레임을 위한 여과를 조절하여 이웃하는 프레임간에 나타날 수 있는 아티팩트의 제거를 시도하도록 동작할 수 있다. 달리 말하면, 하나 이상의 그래픽 소프트웨어 드라이버, 그래픽 어플리케이션, 또는 샘플-픽셀 연산유닛이 현재 프레임의 샘플 데이터가 바로 직전 프레임의 샘플 데이터와 충분히 유사하다고 판단하면, 샘플-픽셀 연산유닛은 샘플 데이터의 현재 프레임을 위한 여과를 조절하여 이웃 프레임간에 나타날 수 있는 아티팩트의 제거를 시도하도록 동작할 수 있다.
여과 조절을 보장하기 위해, 샘플 데이터가 "충분히 유사한가"에 대한 판단은, 어플리케이션으로부터의 카메라의 결절점의 변화에 대한 정보를 포함할 수 있거나, 또는 그래픽 드라이버에 의해 사용되는 판단기준에 기초할 수 있다.
예를 들어, 종전 프레임의 출력 픽셀을 생성하는데 종전에 사용된 종전의 저장 샘플 세트와 현재의 저장 샘플 세트가 유사하거나 동일하다고 판단되면, 샘플-픽셀 연산유닛은 현재 프레임의 현재의 저장 샘플 세트의 여과를 선별적으로 조절하여 아티팩트를 줄일 수 있다. 달리 말하면, 하나의 저장 샘플 세트가 제1 프레임에서의 첫째 출력 픽셀을 생성하는데 종전에 사용되었다면, 샘플-픽셀 연산유닛은 후속 프레임에서 다른 픽셀을 생성하기 위한 유사한(또는 동일한) 저장 샘플 세트의 여과를 선별적으로 조절하여 아티팩트를 줄이도록 할 수 있다. 따라서, 카메라 결절점이 실질적으로 고정된 상황에서, 본 발명은 카메라의 결절점을 섬세하게 동작해서, 이웃하는 프레임간에 나타날 수 있는 아티팩트를 제거하도록 한다.
본 발명은 또한, 현재의 저장 샘플 세트가 종전의 저장 샘플 세트와 유사하거나 동일하다고 판단되는지에 관계없이, 샘플-픽셀 연산유닛이, 그래픽 프로세서가 샘플을 샘플버퍼로 렌더링하는 속도와 동일한 속도에서, 출력 픽셀을 생성하는 경우에도 적용될 수 있다. 예를 들어, 하나 이상의 그래픽 소프트웨어 드라이버, 그래픽 어플리케이션, 또는 샘플-픽셀 연산유닛은 샘플 데이터의 현재 프레임을 위한 여과를 조절하여, 이미지 내에서 보는 이에 대해 물체의 상대적인 가까움과 같은 다른 유형의 판단기준 또는 그밖의 판단기준에 기초하여 아티팩트의 제거를 시도하도록 작동할 수 있다.
본 발명은 또한, 위에서 설명한 그래픽 시스템을 포함함에 있어서, 샘플-픽셀 연산유닛(170)이 렌더링 속도와 다른(예컨대, 높은) 속도에서 동작할 수 있는 그래픽 시스템을 포함한다. 따라서, 샘플-픽셀 연산유닛은, 그래픽 프로세서가 샘플을 샘플버퍼로 렌더하는 속도와 다른 속도에서, 출력 픽셀을 생성할 수 있는데, 예컨대, 그래픽 프로세서는 제1 속도에서 복수의 샘플을 샘플버퍼로 렌더하도록 동작될 수 있고, 샘플-픽셀 연산유닛은 제2의 보다 빠른 속도에서 출력 픽셀을 생성하도록 동작될 수 있다. 예를 들어, 샘플-픽셀 연산유닛은 예컨대, 60Hz 내지 84Hz의 높은 리프레쉬 속도에서 동작하고 그 속도에서 "온 더 플라이"로 콘벌브(convolve)할 때, 렌더링 속도는 그 콘벌브 속도의 1/2 또는 1/4이 될 수 있다.
이렇게 하면, 하나 이상의 콘벌브 파이프라인 또는 샘플-픽셀 연산유닛(170)은 렌더링 속도에 대해 독립적인 온 더 플라이(on-the-fly)로 동작할 수 있다. 이 시스템에서, 샘플-픽셀 연산유닛(170)은, 위에서 설명한 바와 같이 이웃 프레임간의 저장 샘플의 여과를 선별적으로 조절하여 아티팩트를 줄이도록 동작될 수 있다. 달리 말하면, 제1 저장 샘플 세트가 제1 프레임에서 출력 픽셀을 생성하는데 종전에 사용되었다고 판단되면, 샘플-픽셀 연산유닛은 후속 프레임에서 상기 제1 저장 샘플 세트의 여과를 선별적으로 조절하여 아티팩트를 줄이도록 동작될 수 있다. 따라서, 샘플이 일단 생성되고, 그리고 나서, 그래픽 프로세서가 새로운 샘플을 샘플버퍼로 렌더링할 때까지, 아티팩트를 줄이기 위한 특별한 필터로 2번 이상 콘벌브될 수 있다.
이 실시예에서, 그래픽 시스템은 그래픽 소프트웨어 드라이버나 그래픽 어플리케이션으로부터, 동일한 샘플 데이터 세트가 이웃 프레임간에 사용되었는지 여부에 대한 정보를 수신할 수 있다. 그와 달리, 렌더링 유닛(들) 및/또는 샘플-픽셀 연산유닛(들)은, 한 프레임의 렌더된 샘플이 출력 픽셀을 생성하기 위해 재사용되고 있는지 여부, 즉 종전 프레임에서 출력 픽셀을 생성하기 위해 사용되는 한 프레임의 샘플이 또한 후속 프레임에서도 출력 픽셀을 생성하기 위해 사용되고 있는지 여부를 지시하는 하나 이상의 비트를 세팅하거나/지울 수 있다. 이 조건이 감지되면, 샘플-픽셀 연산유닛(170)은 현재 프레임의 샘플 데이터의 여과를 조절하여 이웃 프레임간에 나타날 수 있는 아티팩트의 제거를 시도하도록 지시받을 수 있다.
따라서, 하나 이상의 그래픽 소프트웨어 드라이버, 그래픽 어플리케이션, 또는 샘플-픽셀 연산유닛이, 이웃하는 프레임간에 출력 픽셀을 생성하기 위해 동일한 샘플 데이터 세트가 사용되고 있다고 판단되면, 샘플-픽셀 연산유닛(170)은 현재 프레임의 샘플 데이터의 여과를 조절하여 이웃 프레임간에 나타날 수 있는 아티팩트를 제거하도록 동작할 수 있다.
디스플레이 효과를 수행하기 위한 필터 조절
다른 실시예로, 샘플-픽셀 연산유닛(170)은 저장 샘플의 여과를 조절하여 디스플레이 효과를 수행하도록 동작할 수 있다. 보다 상세하게는, 샘플-픽셀 연산유닛(170)은 이웃 프레임의 저장 샘플의 여과를 선별적으로 조절하여 이웃 프레임간에 디스플레이 효과를 수행하도록 동작될 수 있다. 따라서 도 15에서 설명된 방법은 디스플레이 효과를 수행하는데 이용될 수 있다. 디스플레이 효과는 특히 패닝(상하좌우이동;panning), 줌잉(확대축소;zooming), 회전(rotation), 화면이동(moving scenes)을 포함할 수 있다.
디스플레이 효과를 적절히 수행하기 위해, 패닝,줌잉,회전,화면이동 또는 다른 동작 등의 희망되는 디스플레이 효과를 위한 샘플이 주어지도록, 렌더링 유닛(들)(150)은 적절한 샘플을 샘플버퍼로 렌더한다. 이것은 이 디스플레이 효과가 적절히 동작하도록 하기 위해, 현재 디스플레이 영역의 밖에 있기 때문에 즉시 나타날 수 없지만 후속 프레임에서 패닝이나 줌잉 효과에 사용될 샘플을 렌더링하는 것을 기본적으로 포함한다. 예를 들어, 오른쪽으로의 패닝을 희망한다면, 이 샘플이 후속 프레임상에서 패닝 효과를 수행하는데 사용될 수 있도록 현재 표현되는 이미지의 오른쪽에 위치하는 적절한 수의 샘플이 샘플버퍼로 렌더링될 수 있다.
따라서, 이 실시예에서, 샘플버퍼는 디스플레이의 가시 영역보다 더욱 큰 영역에 대응하는 샘플을 저장할 수 있으며, 디스플레이의 가시 영역 밖의 하나 이상의 샘플이 디스플레이 효과를 수행하기 위해 사용될 수 있다. "줌인(zoom in)"의 경우에는, 디스플레이의 가시 영역 밖의 추가적인 샘플은 필요 없을 것이다. "줌아웃(zoom outs)" 및 팬(pans)의 경우, 렌더링 유닛(들)은 이 디스플레이 효과를 예상하여, 바람직하게는 추가적인 샘플을 샘플버퍼에 렌더한다. 이것은 하나의 이미지를 초기에 필요한 것보다 다소 넓게 또는 길게 계산하거나 렌더링하는 것을 포함할 수 있을 것이다. 즉, 즉각적으로 표현될 수 있는 영역 밖의 샘플을 생성하는것을 포함하며, 여기서 샘플-픽셀 콘볼루션 유닛(170)은 이 샘플 데이터 세트에 대해 추가적인 샘플을 이용하여 두 번째 콘볼루션 싸이클 동안 디스플레이 효과를 수행하도록 동작할 수 있을 것이다.
일례로, 샘플을 샘플버퍼로 렌더링 하기 전에, 그래픽 시스템은 이미 후속 프레임의 모습(예컨대, 희망하는 디스플레이 효과)을 예측해 두며, 따라서 콘볼루션 중심의 희망하는 이동을 이미 예측해 둔다. 따라서, 렌더링 유닛(150)은 적절한 샘플이 샘플버퍼로 렌더될 수 있도록, 바람직하게는 희망되는 디스플레이 효과에 관한 우선권을 알고 있다. 이렇게 하면, 필요한 추가적 샘플만이 렌더될 수 있다. 또 다른 실시예에서, 렌더링 유닛(150)은, 샘플이 특히 왼쪽으로 패닝, 오른쪽으로 패닝, 위로 패닝, 아래로 패닝, 줌아웃, 회전과 같은 희망하는 효과를 수행하기 위해 필요함을 확인하기 위하여, 예컨대 왼쪽, 오른쪽, 위 및/또는 아래의 2 이상의 방향으로 현재 가시영역 밖의 수많은 샘플을 항상 렌더링하는 모드로 사전에 프로그램될 수 있다. 따라서, 추가적 렌더링이 비용이나 지연을 거의 부가하지 않으면, 렌더링 유닛은 샘플버퍼의 모든 에지 주위의 추가적 샘플을 렌더할 수 있으며, 따라서 그래픽 시스템은, 후속 프레임으로 통하는 도중에서, 희망되는 디스플레이 효과를 판단할 수 있고 희망되는 콘볼루션 중심의 이동을 판단할 수 있다.
샘플-픽셀 연산유닛은 하나 이상의 픽셀 위치(중심), 필터 반경, 픽셀간 피치를 조절함으로써 여과를 조절할 수 있다. 샘플-픽셀 연산유닛은 또한, 저장 샘플의 여과를 조절하여 부분적-픽셀 경계(fractional-pixel boundary)상에서 디스플레이 효과를 수행하도록 할 수 있다. 예를 들어, 샘플-픽셀 연산유닛은 이웃 프레임의 저장 샘플의 여과를 선별적으로 조절하여 부분적-픽셀 경계상에서 이웃 프레임사이의 패닝이나 줌잉효과를 내도록 할 수 있다. 디스플레이 효과가 부분적-픽셀 경계(fractional-pixel boundary)상에서 수행될 때, 이는 상기 디스플레이 효과는 정수값의 픽셀 이동에 구속되지 않으며, 예컨대, 오른쪽으로 0.25 픽셀만큼의 패닝, 0.5 픽셀 또는 10.25 픽셀 등 여러 전체 및 부분적 픽셀만큼 수행될 수도 있다는 것을 의미한다.
본 발명의 한가지 이점은, 샘플이 콘벌브보다 느린 속도에서 렌더링되는 경우 등에서의, 보다 부드러운 패닝 또는 줌잉이다. 예를 들어, 카메라가 특정한 한 방향으로 패닝하거나 줌인 또는 줌아웃되고, 샘플이 콘벌브 동작 속도의 절반에서 렌더링되고 있다고 가정한다. 이 경우, 종래기술에서는 두가지 콘벌브 동작이 동일한 샘플 데이터에 대해 행해질 수 있고, 후속의 팬 위치(pan position)로의 점프가 후속의 렌더링된 프레임에서 일어날 수 있다. 본 발명에 따르면, 비록 팬에 대응하는 새로운 샘플 데이터가 아직 샘플버퍼로 렌더링되지 않았더라도, 샘플-픽셀 연산유닛(170)은 샘플 데이터 세트에 대해 두 번째 콘볼루션 싸이클에서 콘볼루션 중심을 조절(예컨대, 콘볼루션 중심을 오른쪽으로 10.5 픽셀만큼 이동)하여 팬 동작효과를 낼 수 있다. 여기서, 샘플 데이터의 두 번째 콘볼루션 동안 수행되는 디스플레이 효과를 기대하여, 현재 가시영역의 오른쪽의 추가적인 샘플 데이터가 샘플버퍼내에 초기에 렌더링되는 것이 바람직하다. 예를 들어, 10.5 픽셀만큼 오른쪽으로 패닝하기 위한 샘플이 있음을 확인하기 위해, 렌더링 유닛은 적어도 추가적인 10.5 픽셀을 현재 가시영역의 오른쪽으로 렌더할 수 있다.
따라서, 어떤 디스플레이 효과가 희망되면, 그리고 제1 저장 샘플 세트가 사전에 제1 프레임에서 출력 픽셀을 생성하는데에 사용되었다면, 샘플-픽셀 연산유닛(170)은 후속 프레임에서의 첫째 저장 샘플 세트의 여과를 선별적으로 조절하여 후속 프레임에서 디스플레이 효과를 수행하도록 동작될 수 있다.
도 18 및 19 - 줌(Zoom)을 수행하기 위한 콘볼루션 중심 및 반경의 조절예
도 18 및 19는 본 발명의 필터 조절이 줌잉(zooming) 디스플레이 효과를 수행하기 위해 사용될 수 있는 예를 나타낸다. 도 18은 샘플버퍼로부터 대표적인 샘플부를 나타내며, 여기서 콘볼루션 중심은 각각의 빈(bins)에 중심을 두고 제1 반경을 가지고 있다. 도 19는 후속 프레임에 적용된 여과를 나타내며, 여기서 동일하거나 다른 샘플 데이터가 사용될 수 있으며, 여기서 콘볼루션 중심 및 반경은 "줌인(zoom in)"효과를 수행하기 위해 조절되어 있다. 도 19에 나타난 바와 같이, 콘볼루션 필터의 중심 및 콘볼루션 필터의 반경을 바꿈으로써, 다른 샘플 데이터를 샘플버퍼로 새로이 렌더링할 필요없이, 다른 디스플레이 효과가 생성될 수 있다. 달리 말하면, 특히 줌잉, 화면, 패닝 및 화면이동과 같은 특별한 디스플레이 효과를 만들기 위해, 특별한 유형의 필터링과 연관하여, 샘플버퍼내의 현존하는 샘플이 이용될 수 있다.
독립적으로 변화될 수 있는 필터 변수의 유형은 다른 것 중에서도 특히 픽셀간 피치, 픽셀의 위치, 예컨대, 콘볼루션 중심, 그리고 필터 반경 등을 포함한다. 본 발명의 시스템 및 방법은 부분적 픽셀(fractional pixel) 경계에 대해 이러한디스플레이 효과를 내는데 사용될 수 있다. 즉, 이 효과들은 정수값의 픽셀 이동에 국한되지 않으며 서브-픽셀(sub-pixel) 또는 부분적 픽셀(fractional pixel) 경계상에서도 수행될 수 있다.
이 실시예에서, 이미지가 실제로 이동함에 따라, 비디오 타이밍을 조절할 필요가 없다는 점에 주목해야 한다. 또 다른 실시예에서는, 본 방법은 비디오 타이밍을 조절하여, "줌인"된 이미지를 디스플레이의 특정한 위치에 위치시키는 것, 또는 콘볼루션 중심의 변화에 반작용하는 것과 반대로, 콘볼루션 중심의 변화를 보충하는 것 등을 할 수 있다.
필터를 조절하여 디스플레이 효과를 수행하는 이 방법은 두뇌추적 또는 시각추적 디스플레이와 연관하여 사용될 수 있다. 예를 들어, 두뇌추적이나 시각추적 디스플레이를 가진 관찰자가 그의 머리를 신속히 돌리면, 본 방법은 관찰자의 이동에 대응하여 패닝과 같은 희망되는 디스플레이 효과를 수행하기 위해 현재의 렌더링된 샘플 세트에 대해 수행될 수 있다. 이것은, 이 디스플레이 효과가 수행될 수 있는 한계에 관한 지식으로서의, 최소 클리핑 거리(clipping distance), 이동의 유형, 및 사용되는 디스플레이의 유형과 같은 정보를 포함한 지식을 가지기 위하여 애플리케이션 소프트웨어나 예컨대, Java 3D 그래픽 드라이버와 같은 그래픽 드라이버 등의 높은 레벨의 소프트웨어를 요구할 것이다. 따라서, 소프트웨어 드라이버나 다른 그래픽 소프트웨어는 어디에서 이 디스플레이 효과들이 수행될 수 있는지를 판단할 수 있다. 디스플레이 효과가 수행될 수 있으면, 본 방법은 한 프레임으로부터 다음 프레임으로의 이동을 분해하고, 본 발명을 이용하여 디스플레이 효과가 수행될 수 있는 중간 프레임을 위한 보간(補間)파라미터(interpolation parameter;콘볼루션 중심 이동, 필터 반경 등)를 생성한다. 이것은 희망되는 효과를 수행하기 위하여, 이동을 팬(pan) 및/또는 크기조정(scale)의 조합으로 분해하는 것을 포함한다. 예를 들어, Java 3D 그래픽 드라이버와 같은 그래픽 드라이버는 프레임간의 카메라 위치방위에 관한 지식을 가질 수 있으며 또한 그래픽 환경에 관한 지식을 가질 수 있다. 만약 카메라가 회전에 있어서만 다르고, 그 카메라가 한 프레임에서 한 위치에 있고 다음 프레임에서 정확히 동일한 위치에 있는 것을 그래픽 드라이버가 알게 되면, 그래픽 드라이버는 콘볼루션 중심나 필터 변수의 조절을 통하여, 팬(pan), 또는 팬 및 크기조정(scale)에 의하여 그래픽 시스템이 이에 비슷해지도록 지시할 수 있다.
한 디스플레이 효과를 수행하기 위한 팬(pan) 또는 회전(rotation)의 희망되는 각도는, 관련된 물체의 상대적 근접성에 의존한다. 일례에서, 소프트웨어는 가깝고 먼 물체에 따라서 이동(shift)의 정도를 계산할 수 있다. 물체가 무한 또는 일정한 거리에 있을 때, 계산되는 이동(shift)의 정도는 상대적으로 똑바르다. 디스플레이상에 존재하는 물체가 여러 거리의 혼합을 가지고 있으면, 그래픽 소프트웨어는 선택된 물체의 평균에 기초하거나 또는 관찰자의 수렴에 관한 시각 추적 정보에 기초하여 이동(shift)의 정도를 예측할 수 있다. 일례로, 간단한 구축 연습에서, 그래픽 드라이버는 대부분의 물체가 관찰자에게 상대적으로 가까우며 따라서 이 특징이 전체 연습동안 사용될 수 있음을 "알고 있거나" 또는 미리 프로그램될 수 있다. 그래픽 시스템 및/또는 소프트웨어는 또한 이 디스플레이 효과들이 수행될 수 있는지 여부를 판단하기 위하여 프레임 마다(per-frame basis)에서 거리 범위를 판단할 수 있다. 이 디스플레이 효과들이 너무 많은 왜곡(distortion)을 만드는 경우, 그래픽 드라이버 소프트웨어나 사용자는 이 특징을 사용하지 않도록 할 수 있다. 이 기술은, 카메라 이동증가의 크기조정(scale)에 관련하여, 큰 거리에서 초점을 가지는 이미지에 대해 가장 잘 작용할 수 있다는 점에 주의해야 한다. 더욱이, 이미지에 상대적으로 가까운 거리에 초점이 있는 이미지에 대해서는 몇가지 원근법의 문제가 발생할 수 있다는 점도 주의해야 한다.
도 20
도 20은 본 발명에 따른 디스플레이 효과를 생성하는 일례를 나타내는 흐름도이다. 나타낸 바와 같이, 단계(442)에서 본 방법은 표현되고 있는 이미지의 위치와 방위의 변화를 결정한다. 이 단계는 호스트 CPU상에서 실행되는 그래픽 드라이버 소프트웨어에 의하거나 또는 그래픽 시스템(112)에 의해 수행될 수 있다. 단계(444)에서 본 방법은, 단계(442)로부터 결정된 위치와 방위의 변화를 사용하여, 이미지의 특정된 포인트에 기초하여 팬(pan) 및/또는 크기조정(scale) 값을 결정한다. 단계(444)는 또한 호스트 CPU 또는 그래픽 시스템(112)에 의해 수행될 수 있다. 단계(442) 및 (444)에 대한 응답으로, 단계(446)에서 본 방법은 단계(444)로부터 결정된 팬 및 크기조정(scale) 값에 기초하여 콘볼루션 중심, 스텝 사이즈, 및/또는 필터 반경의 시작 어드레스를 생성한다. 단계(446)에서 본 방법은 또한 희망되는 팬, 크기조정, 회전 또는 필요한 다른 디스플레이 효과를 수행하는데 사용되는 다른 필터 변수값을 프로그램할 수도 있다.
비록 위의 실시예들이 상당히 자세히 설명되었지만, 다른 변형도 가능하다. 위의 설명이 완전히 이해되면, 본 기술분야에서 능숙한 자로서는 수많은 변경과 수정을 할 수 있음이 명백할 것이다. 다음의 특허청구의 범위는 그러한 모든 변경과 수정을 포함하는 것으로 해석되어야 한다. 여기서 사용된 표제는 조직화의 목적일 뿐이며, 여기서 제공되는 발명의 상세한 설명이나 첨부된 특허청구의 범위를 제한하고자 하는 것이 아님에 주의하라.
본 기술분야에서의 숙련자에 의해 본 명세서 및 첨부도면이 재고(再考)되어 이해되면, 여기에 설명된 본 시스템 및 방법은 그래픽 시스템과 서브시스템, 컴퓨터, 계산 장치, 셋-톱 박스, 게임 콘솔, 피디에이(PDA;personal digital assistants), 디지털 텔레비전, 비디오 프로세서, 그래픽 프로세서, 멀티미디어 시스템 및 프로세서, 가상 현실 시스템 및 그밖의 렌더링 시스템 및/또는 디스플레이 그래픽 데이터 등을 포함하며 이에 한정되지 않는 수많은 다른 분야에 적용될 수 있다.

Claims (38)

  1. 복수의 샘플을 렌더링(rendering)할 수 있는 그래픽 프로세서와;
    상기 샘플을 저장하기 위하여 상기 그래픽 프로세서에 결합된 샘플버퍼와;
    상기 샘플버퍼에 결합되어 있고, 디스플레이를 위한 출력 픽셀을 생성하기 위하여 저장 샘플을 선별하고 여과(filter)할 수 있는 샘플-픽셀 연산유닛을 포함하고;
    상기 샘플-픽셀 연산유닛은 저장샘플의 여과를 조절하여 아티팩트(artifact)를 감소시킬 수 있는 그래픽 시스템.
  2. 제1항에 있어서,
    상기 샘플-픽셀 연산유닛은 저장 샘플을 선별하고 여과할 수 있고, 프레임 버퍼의 개재 없이 디스플레이로 직접 제공되는 출력 픽셀을 생성할 수 있는 그래픽 시스템.
  3. 제1항에 있어서,
    상기 샘플-픽셀 연산유닛은 실시간(real time) 체제에서, 출력 픽셀을 형성하기 위하여 샘플을 선별하고 여과하도록 구성된 그래픽 시스템.
  4. 제1항에 있어서,
    상기 샘플-픽셀 연산유닛은 온 더 플라이(on-the-fly) 체제에서, 출력 픽셀을 형성하기 위하여 샘플을 선별하고 여과하도록 구성된 그래픽 시스템.
  5. 제1항에 있어서,
    상기 샘플-픽셀 연산유닛은, 상기 그래픽 프로세서가 상기 복수의 샘플을 샘플버퍼로 렌더링하는 속도와 다른 속도에서, 출력 픽셀을 생성할 수 있는 그래픽 시스템.
  6. 제1항에 있어서,
    상기 샘플-픽셀 연산유닛은, 상기 그래픽 프로세서가 상기 복수의 샘플을 상기 샘플버퍼로 렌더링하는 속도와 동일한 속도에서, 출력 픽셀을 생성할 수 있는 그래픽 시스템.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 샘플-픽셀 연산유닛은 이웃 프레임에서의 저장 샘플의 상기 여과를 선별적으로 조절하여 상기 이웃 프레임 사이의 아티팩트를 줄일 수 있는 그래픽 시스템.
  8. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 샘플-픽셀 연산유닛은 디스플레이를 위한 첫째 출력 픽셀을 생성하기위하여, 제1 필터를 사용하여, 제1 저장 샘플 세트를 선별하고 여과할 수 있고;
    상기 샘플-픽셀 연산유닛은 디스플레이를 위한 둘째 출력 픽셀을 생성하기 위하여, 상기 제1 필터와 다른 제2 필터를 사용하여, 제2 저장 샘플 세트를 선별하고 여과할 수 있는 그래픽 시스템.
  9. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 샘플-픽셀 연산유닛은 이웃 프레임에서의 저장 샘플의 상기 여과를 선별적으로 조절하여 상기 이웃 프레임 사이의 패닝(panning) 효과를 낼 수 있고, 그에 의해 상기 이웃 프레임 사이의 아티팩트를 줄이는 그래픽 시스템.
  10. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 샘플-픽셀 연산유닛은 이웃 프레임에서의 저장 샘플의 상기 여과를 선별적으로 조절하여 상기 이웃 프레임 사이의 줌잉(zooming) 효과를 낼 수 있고, 그에 의해 상기 이웃 프레임 사이의 아티팩트를 줄이는 그래픽 시스템.
  11. 제1항 내지 제6항 중 어느 한 항에 있어서,
    만약 현재의 저장 샘플 세트가 종전 프레임에서 출력 픽셀을 생성하는 데에 종전에 사용된 종전의 저장 샘플 세트와 유사하면, 상기 샘플-픽셀 연산유닛은 현재 프레임에서의 상기 현재의 저장 샘플 세트의 상기 여과를 선별적으로 조절하여 아티팩트를 줄일 수 있는 그래픽 시스템.
  12. 제1항 내지 제6항 중 어느 한 항에 있어서,
    만약 제1 저장 샘플 세트가 제1 프레임에서 첫째 출력 픽셀을 생성하는 데에 종전에 사용되었다면, 상기 샘플-픽셀 연산유닛은 후속 프레임에서 다른 픽셀을 생성하기 위한 상기 제1 저장 샘플 세트의 여과를 선별적으로 조절하여 아티팩트를 줄일 수 있는 그래픽 시스템.
  13. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 샘플-픽셀 연산유닛은,
    현재의 저장 샘플 세트가 종전 프레임에서 출력 픽셀을 생성하는 데에 종전에 사용되었는지를 판단하고;
    현재의 저장 샘플 세트가 종전 프레임에서 출력 픽셀을 생성하는 데에 종전에 사용되었다면, 현재 프레임에서의 상기 현재의 저장 샘플 세트의 상기 여과를 선별적으로 조절하여 아티팩트를 줄일 수 있는 그래픽 시스템.
  14. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 샘플-픽셀 연산유닛은 상기 샘플을 여과하는데 필터를 활용하고;
    상기 샘플-픽셀 연산유닛은 저장 샘플의 여과 동안 상기 필터가 적용되는 중심 장소를 선별적으로 조절하여 아티팩트를 줄일 수 있는 그래픽 시스템.
  15. 제14항에 있어서,
    상기 그래픽 시스템은 비디오 타이밍(video timing)을 선별적으로 조절하여 상기 중심 지점의 선별적 조절을 보충할 수 있는 그래픽 시스템.
  16. 제14항에 있어서,
    상기 샘플-픽셀 연산유닛은 하나 이상의 x 또는 y 방향으로 상기 중심 지점을 선별적으로 조절할 수 있는 그래픽 시스템.
  17. 제14항에 있어서,
    상기 샘플-픽셀 연산유닛은 상기 중심 지점을, 종전 프레임에서 사용된 중심 지점에 관련하여, 서브-픽셀 거리(sub-pixel distance)만큼 선별적으로 조절할 수 있는 그래픽 시스템.
  18. 제14항에 있어서,
    상기 그래픽 시스템은 디스플레이를 포함하고;
    상기 샘플버퍼는 상기 디스플레이의 가시 영역보다 더 큰 영역에 대응하는 저장 샘플을 저장하고;
    종전 프레임에서의 상기 디스플레이의 가시 영역 밖으로부터의 하나 이상의 샘플은 현재 프레임에서의 출력 픽셀을 생성하는 데에 사용되는 그래픽 시스템.
  19. 제14항에 있어서,
    상기 샘플-픽셀 연산유닛은 상기 중심 장소에 대응하여 상기 샘플버퍼내의 어드레스를 생성하기 위한 어드레스 생성 로직을 포함하고;
    상기 어드레스 생성 로직은 상기 샘플 버퍼내의 선별된 서브-픽셀 위치(sub-pixel position)에서의 어드레스를 생성하도록 프로그램될 수 있는 그래픽 시스템.
  20. 제14항에 있어서,
    상기 샘플-픽셀 연산유닛은 상기 샘플을 여과하는데 콘벌루션 필터를 활용하는 그래픽 시스템.
  21. 복수의 샘플을 샘플버퍼로 렌더링하는 단계와;
    샘플버퍼에 저장된 복수의 샘플에 대응하여 출력 픽셀을 생성하는 단계로서, 디스플레이를 위한 출력 픽셀을 생성하기 위해 저장 샘플을 선별하고 여과하는 것을 포함하는 단계를 포함하고;
    상기 출력 픽셀을 생성하는 단계는 저장 샘플의 여과를 조절하여 아티팩트를 줄이는 단계를 포함하는, 그래픽 시스템의 표시용 픽셀 생성 방법.
  22. 제21항에 있어서,
    상기 출력 픽셀을 생성하는 단계는 저장 샘플을 선별하고 여과하며 프레임 버퍼의 개재 없이 디스플레이로 직접 제공되는 출력 픽셀을 생성하는 것을 포함하는, 그래픽 시스템의 표시용 픽셀 생성 방법.
  23. 제21항에 있어서,
    상기 출력 픽셀을 생성하는 단계는 실시간(real time) 체제에서 출력 픽셀을 형성하기 위하여 샘플을 선별하고 여과하는 것을 포함하는, 그래픽 시스템의 표시용 픽셀 생성 방법.
  24. 제21항에 있어서,
    상기 출력 픽셀을 생성하는 단계는 온 더 플라이(on-the-fly) 체제에서 출력 픽셀을 형성하기 위해 샘플을 선별하고 여과하는 것을 포함하는, 그래픽 시스템의 표시용 픽셀 생성 방법.
  25. 제21항 내지 제24항 중 어느 한 항에 있어서,
    상기 출력 픽셀을 생성하는 단계는 이웃 프레임에서의 저장 샘플의 상기 여과를 선별적으로 조절하여 상기 이웃 프레임 사이의 아티팩트를 줄이는 것을 포함하는, 그래픽 시스템의 표시용 픽셀 생성 방법.
  26. 제21항 내지 제24항 중 어느 한 항에 있어서,
    상기 출력 픽셀을 생성하는 단계는,
    디스플레이를 위한 첫째 출력 픽셀을 생성하기 위해, 제1 필터를 사용하여,제1 저장 샘플 세트를 선별하고 여과하는 것과;
    디스플레이를 위한 둘째 출력 픽셀을 생성하기 위해, 상기 제1 필터와 다른 제2 필터를 사용하여, 제2 저장 샘플 세트를 선별하고 여과하는 것을 포함하는, 그래픽 시스템의 표시용 픽셀 생성 방법.
  27. 제21항 내지 제24항 중 어느 한 항에 있어서,
    상기 출력 픽셀을 생성하는 단계는 이웃 프레임에서의 저장 샘플의 상기 여과를 선별적으로 조절하여 상기 이웃 프레임 사이의 패닝(panning) 효과를 내고, 그에 의해 이웃 프레임 사이의 아티팩트를 줄이는 것을 포함하는, 그래픽 시스템의 표시용 픽셀 생성 방법.
  28. 제21항 내지 제24항 중 어느 한 항에 있어서,
    상기 출력 픽셀을 생성하는 단계는 이웃 프레임에서의 상기 저장 샘플의 상기 여과를 선별적으로 조절하여 상기 이웃 프레임 사이의 줌잉(zooming) 효과를 내고, 그에 의해 이웃 프레임 사이의 아티팩트를 줄이는 것을 포함하는, 그래픽 시스템의 표시용 픽셀 생성 방법.
  29. 제21항 내지 제24항 중 어느 한 항에 있어서,
    만약 현재의 저장 샘플 세트가 종전 프레임에서 출력 픽셀을 생성하는 데에 종전에 사용된 종전의 저장 샘플 세트와 유사하면, 상기 출력 픽셀을 생성하는 단계는 현재 프레임에서의 상기 현재 저장 샘플 세트의 상기 여과를 선별적으로 조절하여 아티팩트를 줄이는 것을 포함하는, 그래픽 시스템의 표시용 픽셀 생성 방법.
  30. 제21항 내지 제24항 중 어느 한 항에 있어서,
    만약 제1 저장 샘플 세트가 제1 프레임에서 첫째 출력 픽셀을 생성하는 데에 종전에 사용되었다면, 상기 출력 픽셀을 생성하는 단계는 후속 프레임에서 다른 픽셀을 생성하기 위한 상기 제1 저장 샘플 세트의 상기 여과를 선별적으로 조절하여 아티팩트를 줄이는 것을 포함하는, 그래픽 시스템의 표시용 픽셀 생성 방법.
  31. 제21항 내지 제24항 중 어느 한 항에 있어서,
    상기 출력 픽셀을 생성하는 단계는,
    현재의 저장 샘플 세트가 종전 프레임에서 출력 픽셀을 생성하는 데에 종전에 사용되었는지 판단하는 것과;
    현재의 저장 샘플 세트가 종전 프레임에서 출력 픽셀을 생성하는 데에 종전에 사용되었다면, 현재 프레임에서의 상기 현재의 저장 샘플 세트의 상기 여과를 선별적으로 조절하여 아티팩트를 줄이는 것을 포함하는, 그래픽 시스템의 표시용 픽셀 생성 방법.
  32. 제21항 내지 제24항 중 어느 한 항에 있어서,
    상기 출력 픽셀을 생성하는 단계는 상기 샘플을 여과하는 데에 필터를 활용하고;
    상기 출력 픽셀을 생성하는 단계는 저장 샘플의 여과 동안 상기 필터가 적용되는 중심 장소를 선별적으로 조절하여 아티팩트를 줄이는 것을 포함하는, 그래픽 시스템의 표시용 픽셀 생성 방법.
  33. 제21항 내지 제24항 중 어느 한 항에 있어서,
    상기 출력 픽셀을 생성하는 단계는 비디오 타이밍(video timing)을 선별적으로 조절하여 상기 중심 장소의 상기 선별적 조절을 보충하는 것을 포함하는, 그래픽 시스템의 표시용 픽셀 생성 방법.
  34. 제21항 내지 제24항 중 어느 한 항에 있어서,
    상기 출력 픽셀을 생성하는 단계는 상기 중심 장소를 하나 이상의 x 또는 y 방향으로 선별적으로 조절하는 것을 포함하는, 그래픽 시스템의 표시용 픽셀 생성 방법.
  35. 제34항에 있어서,
    상기 출력 픽셀을 생성하는 단계는 상기 중심 장소를, 종전 프레임에서 사용된 중심 장소에 관련하여, 서브-픽셀 거리만큼 선별적으로 조절하는 것을 포함하는, 그래픽 시스템의 표시용 픽셀 생성 방법.
  36. 제34항에 있어서,
    상기 그래픽 시스템은 디스플레이를 포함하고;
    상기 렌더링하는 단계는 샘플을 상기 디스플레이의 가시 영역보다 더 큰 영역에 대응하여 상기 샘플 버퍼로 렌더링하는 것을 포함하고;
    상기 출력 픽셀을 생성하는 단계는 현재 프레임에서의 출력 픽셀을 생성하기 위하여 종전 프레임에서의 상기 디스플레이의 가시 영역 밖으로부터의 하나 이상의 샘플을 사용하는 것을 포함하는, 그래픽 시스템의 표시용 픽셀 생성 방법.
  37. 제34항에 있어서,
    상기 출력 픽셀을 생성하는 단계는 선별된 서브-픽셀 위치(sub-pixel position)에서의 상기 중심 장소에 대응하여 상기 샘플버퍼에서의 어드레스를 생성하는 것을 포함하는, 그래픽 시스템의 표시용 픽셀 생성 방법.
  38. 제34항에 있어서,
    상기 출력 픽셀을 생성하는 단계는 상기 샘플을 여과하는 데에 콘벌루션 필터를 활용하는, 그래픽 시스템의 표시용 픽셀 생성 방법.
KR1020017009659A 1999-02-17 2000-02-17 아티팩트 감소를 위해 선별적 여과 조절을 이용하여 출력픽셀을 생성하는 수퍼-샘플되는 샘플 버퍼를 가지는그래픽 시스템 KR20020036775A (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/251,453 1999-02-17
US09/413,104 1999-10-06
US09/413,104 US6496186B1 (en) 1998-02-17 1999-10-06 Graphics system having a super-sampled sample buffer with generation of output pixels using selective adjustment of filtering for reduced artifacts
PCT/US2000/004149 WO2000049578A1 (en) 1999-02-17 2000-02-17 Graphics system having a super-sampled sample buffer with generation of output pixels using selective adjustment of filtering for reduced artifacts

Publications (1)

Publication Number Publication Date
KR20020036775A true KR20020036775A (ko) 2002-05-16

Family

ID=69375138

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017009659A KR20020036775A (ko) 1999-02-17 2000-02-17 아티팩트 감소를 위해 선별적 여과 조절을 이용하여 출력픽셀을 생성하는 수퍼-샘플되는 샘플 버퍼를 가지는그래픽 시스템

Country Status (1)

Country Link
KR (1) KR20020036775A (ko)

Similar Documents

Publication Publication Date Title
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
US7474308B2 (en) Graphics system having a variable density super-sampled sample buffer
EP1055201B1 (en) Graphics system with variable resolution super-sampling
US6781585B2 (en) Graphics system having a super-sampled sample buffer and having single sample per pixel support
US6650323B2 (en) Graphics system having a super-sampled sample buffer and having single sample per pixel support
US6417861B1 (en) Graphics system with programmable sample positions
US6956576B1 (en) Graphics system using sample masks for motion blur, depth of field, and transparency
US6801202B2 (en) Graphics system configured to parallel-process graphics data using multiple pipelines
JP2002537614A (ja) 並列のサンプル・ピクセル計算を実行するように構成されたグラフィックス・システム
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
KR20010113670A (ko) 다른 속도에서 샘플을 샘플버퍼로 렌더링하고 저장샘플에응답하여 픽셀을 생성하는 그래픽 시스템
KR20020031097A (ko) 샘플 위치정보를 효율적으로 저장하는 수퍼-샘플되는샘플버퍼를 가지는 그래픽 시스템
KR20010113671A (ko) 디스플레이 효과 수행을 위한 선별적 여과 조절을이용하여 출력 픽셀을 생성하는 수퍼-샘플되는 샘플버퍼를 가지는 그래픽 시스템
KR20010113669A (ko) 병렬적 샘플-픽셀 연산을 수행하도록 구성된 그래픽 시스템
KR20020036775A (ko) 아티팩트 감소를 위해 선별적 여과 조절을 이용하여 출력픽셀을 생성하는 수퍼-샘플되는 샘플 버퍼를 가지는그래픽 시스템

Legal Events

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