KR20070061916A - 픽셀 중심 위치 변위 - Google Patents

픽셀 중심 위치 변위 Download PDF

Info

Publication number
KR20070061916A
KR20070061916A KR1020077010239A KR20077010239A KR20070061916A KR 20070061916 A KR20070061916 A KR 20070061916A KR 1020077010239 A KR1020077010239 A KR 1020077010239A KR 20077010239 A KR20077010239 A KR 20077010239A KR 20070061916 A KR20070061916 A KR 20070061916A
Authority
KR
South Korea
Prior art keywords
center
pixel
weight
fragment
gravity
Prior art date
Application number
KR1020077010239A
Other languages
English (en)
Other versions
KR100913459B1 (ko
Inventor
루이 엠. 바스토스
마이클 제이. 엠. 토크스비그
카림 엠. 압달라
Original Assignee
엔비디아 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엔비디아 코포레이션 filed Critical 엔비디아 코포레이션
Publication of KR20070061916A publication Critical patent/KR20070061916A/ko
Application granted granted Critical
Publication of KR100913459B1 publication Critical patent/KR100913459B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformation in the plane of the image
    • G06T3/40Scaling the whole image or part thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation

Abstract

픽셀의 일부분을 커버하는 프리미티브에 의해 커버되지 않는 픽셀 중심 위치는, 프리미티브와 픽셀의 교차에 의해 형성되는 프레그먼트 내에 위치하도록 변위된다. 픽셀 중심의 x,y 좌표들은, 픽셀 중심 위치를 변위시켜 프레그먼트 내에 위치하도록 조정됨으로써, 실제의 텍스처 맵 좌표들 또는 무게 중심 가중치들에 영향을 미친다. 대안적으로, 중심 서브-픽셀 샘플 위치는 픽셀에 대한 커버리지 데이터 및 다중 샘플 모드에 기초하여 결정된다. 중심 서브-픽셀 샘플 위치는 프레그먼트에 대한 픽셀 또는 서브-픽셀 파라미터들을 계산하는 데 사용된다.
픽셀, 프리미티브, 픽셀 중심 위치, 다중 샘플 모드, 커버리지 데이터, 텍스처 맵, 무게 중심 가중치, 서브-픽셀 파라미터

Description

픽셀 중심 위치 변위{PIXEL CENTER POSITION DISPLACEMENT}
본 발명의 하나 이상의 양태들은 일반적으로 컴퓨터 그래픽에 관한 것이고, 좀더 구체적으로는, 컴퓨터 그래픽 프로세싱 파이프라인에서 픽셀 중심 위치들을 조정하는 것에 관한 것이다.
통상적인 그래픽 프로세서들은, 서브-픽셀 샘플들을 사용하는 다중 샘플링(multisampling) 기술들을 사용하여 에일리어싱(aliasing)을 감소시키도록 개발된 시스템들 및 방법들에 의해 예시된다. 그러나, 통상적으로, 픽셀 중심 위치를 사용하여, 컬러, 깊이, 및 텍스처 맵 좌표들(texture map coordinates)과 같은 프레그먼트(fragment) 파라미터들을 계산한다. 도 1은, 종래 기술에서 공지된 바와 같이, 픽셀(100)의 일부분을 커버(cover)하는 프리미티브(Primitive)(102)를 예시한다. 픽셀 중심 위치(101)는 프리미티브(102)의 프레그먼트에 의해 커버되지 않는데, 여기서, 프레그먼트는 픽셀(100)을 커버하는 프리미티브(102)의 일부분이다. 서브-픽셀 샘플 위치(103)는 프레그먼트의 내에 있다.
하나 이상의 서브-픽셀 샘플들이 프레그먼트에 의해 커버되지만 픽셀 중심 위치는 프레그먼트에 의해 커버되지 않을 경우, 계산된 프레그먼트 파라미터들은 부정확할 수 있어, 프레그먼트를 포함하는 이미지에 비주얼 아티팩트들(visual artifacts)을 초래할 수도 있다. 구체적으로, 프리미티브를 벗어난 픽셀 중심 위치를 사용하여 픽셀을 위한 컬러를 계산하는 경우, 프리미티브 경계를 따라 컬러 불연속(color discontinuity)이 삽입될 수도 있다. 예를 들어, 부정확한 광 맵(light map)이 샘플링될 때, 픽셀은 밝아지거나 어두워질 수도 있다.
따라서, 픽셀 내의 하나 이상의 서브-픽셀 샘플들이 프레그먼트에 의해 커버될 때, 픽셀에 대한 픽셀 중심 위치가 프레그먼트 내에 위치하도록, 픽셀에 대한 픽셀 중심 위치를 변위시켜야 할 필요성이 존재한다.
본 발명은, 프레그먼트에 의해 커버되는 하나 이상의 서브-픽셀 위치들의 중심을 접근시키는 변위된 프레그먼트 중심(displaced fragment center)을 결정하기 위한 새로운 시스템들 및 방법들을 포함한다. 변위된 프레그먼트 중심을 사용하여 텍스처 맵 좌표들을 계산하면, 결과적으로, 좀더 높은 이미지 품질을 획득할 수 있는데, 그 이유는, 텍스처 샘플들이 프레그먼트 내에 위치하기 때문이다. 마찬가지로, 변위된 프레그먼트 중심을 사용하여 프레그먼트에 대한 컬러 성분들을 계산하면, 결과적으로, 좀더 높은 이미지 품질을 획득할 수 있는데, 그 이유는, 컬러들이 프레그먼트 내에서 계산되기 때문이다.
본 발명의 방법에 대한 다양한 실시예들은, 프레그먼트 내의 중심 서브-픽셀 샘플 위치를 결정하는 방법을 포함하며, 프레그먼트 내의 중심 서브-픽셀 샘플 위치를 결정하는 방법은, 프레그먼트 내의 하나 이상의 서브-픽셀 샘플 위치들을 표현하는, 픽셀을 위한 커버리지 데이터(coverage data)를 수신하는 단계, 커버리지 데이터 및 다중 샘플 모드를 사용하여 표(table)로부터 중심 정보를 판독하는 단계, 및 중심 정보에 기초하여 중심 서브-픽셀 샘플 위치를 결정하는 단계를 포함한다.
본 발명의 다양한 실시예들은 변위된 픽셀 중심을 계산하는 방법을 포함하며, 변위된 픽셀 중심을 계산하는 방법은, 제1 무게 중심 가중치(barycentric weight)가 음인지의 여부를 결정하는 단계, 제2 무게 중심 가중치가 음인지의 여부를 결정하는 단계, 제1 무게 중심 가중치 또는 제2 무게 중심 가중치가 음일 경우, 제1 무게 중심 가중치를 조정하여, 조정된 제1 무게 중심 가중치를 생성하는 단계, 제1 무게 중심 가중치 또는 제2 무게 중심 가중치가 음일 경우, 제2 무게 중심 가중치를 조정하여, 조정된 제2 무게 중심 가중치를 생성하는 단계, 제1 무게 중심 가중치 또는 제2 무게 중심 가중치가 음일 경우, 제3 무게 중심 가중치를 조정하여, 조정된 제3 무게 중심 가중치를 생성하는 단계, 및 조정된 제3 무게 중심 가중치, 조정된 제2 무게 중심 가중치, 및 조정된 제1 무게 중심 가중치를 조합하여, 변위된 픽셀 중심을 생성하는 단계를 포함한다.
본 발명의 다양한 실시예들은 저장 소자, 중심 제어 유닛, 및 파라미터 계산 유닛을 포함하는 중심 계산 유닛(centroid computaion unit)을 포함한다. 저장 소자는 중심 정보를 저장하도록 구성된다. 중심 제어 유닛은, 프레그먼트와 연관된 다중 샘플 모드 및 커버리지 데이터에 기초하여 중심 정보를 판독하도록 구성된다. 파라미터 계산 유닛은 중심 계산 유닛에 연결되고, 중심 정보에 기초하여 프레그먼트 파라미터를 계산하도록 구성된다.
본 발명의 다양한 실시예들은 컴퓨팅 시스템을 포함한다. 컴퓨팅 시스템은 호스트 프로세서, 호스트 메모리, 시스템 인터페이스, 및 그래픽 프로세서를 포함한다. 호스트 메모리는 호스트 프로세서를 위한 프로그램들을 저장한다. 시스템 인터페이스는 호스트 프로세서 및 그래픽 프로세서와 인터페이스하도록 구성된다. 그래픽 프로세서는 중심 계산 유닛을 포함한다.
첨부 도면(들)은 본 발명의 하나 이상의 양태들에 따른 예시적 실시예(들)를 나타내지만, 첨부 도면(들)이 본 발명을 도시된 실시예(들)로 제한하는 것으로 해석되어서는 안되며, 단지 설명 및 이해를 위한 것일 뿐이다.
도 1은 픽셀의 일부분을 커버하는 프리미티브의 종래 기술 일례를 예시한다.
도 2는, 호스트 컴퓨터 및 그래픽 서브시스템을 포함하는, 본 발명의 하나 이상의 양태들에 따른, 별개의 컴퓨터 시스템의 예시적 실시예의 블록도이다.
도 3A는, 본 발명의 하나 이상의 양태들에 따른, 프레그먼트 에지(edge)로의 픽셀 중심 위치의 변위를 예시한다.
도 3B는, 본 발명의 하나 이상의 양태들에 따른, 프레그먼트 파라미터 계산 유닛의 예시적 실시예의 블록도이다.
도 3C는, 본 발명의 하나 이상의 양태들에 따른, 픽셀 중심 위치를 변위시키는 방법의 실시예를 예시한다.
도 4A, 도 4B, 도 4C, 및 도 4D는, 본 발명의 하나 이상의 양태들에 따른, 픽셀들 내에서의 샘플들의 서브-픽셀 위치들을 예시한다.
도 5A는, 본 발명의 하나 이상의 양태들에 따른, 중심 계산 유닛을 포함하는 프레그먼트 셰이더(shader)의 예시적 실시예의 블록도이다.
도 5B는, 본 발명의 하나 이상의 양태들에 따른, 중심 서브-픽셀 샘플 위치를 결정하는 방법의 실시예를 예시한다.
도 5C는, 본 발명의 하나 이상의 양태들에 따른, 중심 서브-픽셀 샘플 위치를 결정하고 프레그먼트 파라미터들을 계산하는 방법의 실시예를 예시한다.
도 6A는, 본 발명의 하나 이상의 양태들에 따른, 다른 중심 계산 유닛을 포함하는 다른 프레그먼트 셰이더의 예시적 실시예의 블록도이다.
도 6B는, 본 발명의 하나 이상의 양태들에 따른, 중심 서브-픽셀 샘플 위치를 결정하는 다른 방법의 실시예를 예시한다.
도 6C는, 본 발명의 하나 이상의 양태들에 따른, 중심 서브-픽셀 위치를 결정하고 프레그먼트 파라미터들을 계산하는 방법의 실시예를 예시한다.
다음의 설명에서, 다수의 구체적인 세부 사항들은 본 발명에 대한 좀더 완전한 이해를 제공하기 위해 기술된다. 그러나, 당업자라면, 구체적인 이들 세부 사항들 중 하나 이상이 없이도, 본 발명이 실시될 수 있다는 것을 알 수 있을 것이다. 다른 경우들로서, 본 발명을 불명료하게 하는 것을 방지하기 위해, 주지의 사양들은 설명되지 않았다.
도 2는 일반적으로 200으로서 지시되며 호스트 컴퓨터(210) 및 그래픽 서브시스템(207)을 포함하는 컴퓨팅 시스템의 예시적 실시예의 블록도이다. 컴퓨팅 시 스템(200)은 데스크톱 컴퓨터, 서버, 랩톱 컴퓨터, 팜-사이즈 컴퓨터(palm-sized computer), 태블릿 컴퓨터, 게임 콘솔, PDA(personal digital assistant) 또는 셀룰러 전화기와 같은 휴대용 무선 단말기, 컴퓨터 기반 시뮬레이터 등일 수 있다. 호스트 컴퓨터(210)는, 호스트 메모리(212)와 직접 인터페이스하는 시스템 메모리 컨트롤러를 포함할 수 있거나 시스템 인터페이스(215)를 통해 호스트 메모리(212)와 통신할 수 있는 호스트 프로세서(214)를 포함한다. 시스템 인터페이스(215)는 I/O(입/출력) 인터페이스 또는 호스트 메모리(212)와 직접 인터페이스하는 시스템 메모리 컨트롤러를 포함하는 브리지 장치(bridge device)일 수 있다. 업계에 공지된 시스템 인터페이스(215)의 일례로는 Intel® Northbridge를 들 수 있다.
호스트 컴퓨터(210)는 시스템 인터페이스(215) 및 인터페이스(217)를 통해 그래픽 서브시스템(207)과 통신한다. 그래픽 서브시스템(207)은 로컬 메모리(240) 및 프로그램 가능한 그래픽 프로세서(205)를 포함한다. 프로그램 가능한 그래픽 프로세서(205)는 메모리를 사용하여 그래픽 데이터 및 프로그램 명령어들을 저장하는데, 여기서, 그래픽 데이터는 프로그램 가능한 그래픽 프로세서(205)내의 계산 유닛들로 입력되거나 그로부터 출력되는 임의의 데이터이다. 그래픽 메모리는 그래픽 데이터 또는 프로그램 가능한 그래픽 프로세서(205)에 의해 실행될 프로그램 명령어들을 저장하는 데 사용되는 임의의 메모리이다. 그래픽 메모리는 호스트 메모리(212), 프로그램 가능한 그래픽 프로세서(205)에 직접 연결된 로컬 메모리(local memory)(240), 프로그램 가능한 그래픽 프로세서(205) 내의 계산 유닛들에 연결된 저장 리소스들 등의 일부분들을 포함할 수 있다. 저장 리소스들은 레지 스터 파일들, 캐시들, FIFO(first in first out) 메모리들 등을 포함할 수 있다.
인터페이스(217) 이외에, 프로그램 가능한 그래픽 프로세서(205)는 그래픽 프로세싱 파이프라인(203), 메모리 컨트롤러(220), 및 출력 컨트롤러(280)를 포함한다. 인터페이스(217)에서 수신된 데이터 및 프로그램 명령어들은 그래픽 프로세싱 파이프라인(203) 내의 지오메트리 프로세서(geometry processor)(230)로 전달될 수 있거나, 메모리 컨트롤러(220)를 통해 로컬 메모리(240)에 기입될 수 있다. 로컬 메모리(240) 및 인터페이스(217)와 통신하는 것 이외에, 메모리 컨트롤러(220)는 또한 그래픽 프로세싱 파이프라인(203)의 판독 및 기입 인터페이스들과 출력 컨트롤러(280)의 판독 인터페이스를 통해, 그래픽 프로세싱 파이프라인(203) 및 출력 컨트롤러(280)와 통신한다.
그래픽 프로세싱 파이프라인(205) 내에서, 지오메트리 프로세서(230), 및 프로그램 가능한 그래픽 프레그먼트 프로세싱 파이프라인인 프레그먼트 프로세싱 파이프라인(260)은, 다양한 계산 기능들을 수행한다. 이 기능들 중 일부는 표 찾아보기(table lookup), 스칼라(scalar) 및 벡터(vector) 덧셈, 곱셈, 나눗셈, 좌표계 맵핑(coordinate-system mapping), 벡터 법선들의 계산, 테설레이션(tessellation), 미분들(derivatives)의 계산, 보간(interpolation) 등이다. 지오메트리 프로세서(230) 및 프레그먼트 프로세싱 파이프라인(260)은, 데이터 프로세싱 연산들이 그래픽 프로세싱 파이프라인(203)을 통한 다중 패스들(multiple passes)로 또는 프레그먼트 프로세싱 파이프라인(260)을 통한 내부의 다중 패스들로 수행되도록 선택적으로 구성된다. 프로그램 가능한 그래픽 프로세서(205), 그 래픽 프로세싱 파이프라인(203), 또는 프레그먼트 프로세싱 파이프라인(260)을 통한 각각의 패스는 래스터 연산 유닛(Raster Operations Unit)(265)에 의한 선택적 프로세싱으로 종결된다.
버텍스 프로그램들(vertex programs)은 지오메트리 프로세서(230) 및 래스터라이저(rasterizer)(250) 내에서의 실행을 위해 호스트 프로세서(214)에 의해 컴파일된 버텍스 프로그램 명령어들의 시퀀스들이다. 프레그먼트 프로그램들은 프레그먼트 프로세싱 파이프라인(260)내에서의 실행을 위해 호스트 프로세서(214)에 의해 컴파일된 프레그먼트 프로그램 명령어들의 시퀀스들이다. 지오메트리 프로세서(230)는, 인터페이스(217) 또는 메모리 컨트롤러(220)로부터, 프로그램 명령어들(버텍스 프로그램 명령어들 및 프레그먼트 프로그램 명령어들) 및 데이터의 스트림을 수신하고, 데이터를 사용하여 벡터 부동점 연산들(vector floating-point operations) 또는 다른 프로세싱 연산들을 수행한다. 프로그램 명령어들은 지오메트리 프로세서(230), 래스터라이저(250), 및 프레그먼트 프로세싱 파이프라인(260) 내의 서브유닛들을 설정한다. 프로그램 명령어들 및 데이터는 그래픽 메모리, 예를 들어, 호스트 메모리(212), 로컬 메모리(240), 또는 프로그램 가능한 그래픽 프로세서(205) 내의 저장 리소스들의 일부분들에 저장된다. 호스트 메모리(212)의 일부분이 프로그램 명령어들 및 데이터를 저장하는 데 사용될 때, 호스트 메모리(212)의 일부분은 프로그램 가능한 그래픽 프로세서(205)에 의한 액세스 성능을 증가시키기 위해 언캐시(uncash)될 수 있다. 대안적으로, 구성 정보는, 예를 들어, 프로그램 명령어들을 사용하여 지오메트리 프로세서(230), 래스터라이저(250), 및 프레그먼트 프로세싱 파이프라인(260) 내의 레지스터들에 데이터와 함께 인코딩되어 기입되거나 한다.
지오메트리 프로세서(230)에 의해 처리된 데이터 및 프로그램 명령어들은 지오메트리 프로세서(230)로부터 래스터라이저(250)로 전달된다. 래스터라이저(250)는 그래픽 프리미티브들을 처리하여, 커버리지 데이터를 포함하는, 픽셀 데이터 또는 프레그먼트 데이터와 같은, 서브-프리미티브 데이터를 생성하는 샘플링 유닛이다. 커버리지 데이터는, 픽셀 내의 어떤 서브-픽셀 샘플 위치들이 픽셀과 프리미티브의 교차에 의해 형성된 프레그먼트에 의해 "커버"되는지를 지시한다. 그래픽 프리미티브들은 점들, 선들, 삼각형들, 4변형들, 메시들(meshes), 평면들 등과 같은 지오메트리를 포함한다. 래스터라이저(250)는, 지오메트리 프로세서(230)에 의해 처리된 데이터에 대해 스캔 변환(scan conversion)을 수행하여, 그래픽 프리미티브들을 서브-프리미티브 데이터로 변환한다. 래스터라이저(250)는 다중 샘플 모드에 의해 특정되는 한 세트의 고정형 또는 프로그램형 서브-픽셀 샘플 위치들을 사용한다. 래스터라이저(250)는 프레그먼트 데이터 및 프레그먼트 프로그램 명령어들을 프레그먼트 프로세싱 파이프라인(260)으로 출력한다.
프레그먼트 프로그램들은, 계산들 및 계산 정확도(computation precision)를 특정하는 것에 의해 프레그먼트 데이터를 처리하도록 프레그먼트 프로세싱 파이프라인(260)을 구성한다. 프레그먼트 셰이더(255)는, 프레그먼트 데이터 프로세싱 연산들이 프레그먼트 셰이더(255)내에서의 다중 내부 패스들로 수행되도록, 프레그먼트 프로그램 명령어들에 의해 선택적으로 구성된다. 본 발명의 일부 실시예들에 서, 커버리지 데이터 및 다중 샘플 모드는, 여기에서 부연되는 바와 같이, 프레그먼트 셰이더(255)에 의해, 프레그먼트 내에 위치하고 있지 않은 픽셀 중심 위치를 변위시켜서, 변위된 픽셀 중심을 생성하는 데 사용된다. 프레그먼트 셰이더(255)는 변위된 픽셀 중심을 사용하여 하나 이상의 서브-픽셀 샘플 위치들에 대한 서브-픽셀 컬러 값들을 계산하고 처리한다. 본 발명의 다른 실시예들에서, 무게 중심 가중치들은, 여기에서 부연되는 바와 같이, 픽셀 중심 위치를 변위시키기 위해 조정되고, 조정된 무게 중심 가중치들은 프레그먼트 내의 하나 이상의 서브-픽셀 샘플 위치들에 대한 프레그먼트 파라미터들을 계산하는 데 사용된다. 프레그먼트 셰이더(255)는 프레그먼트 파라미터들, 예를 들어, 컬러 데이터, 깊이 데이터, 텍스처 맵 좌표들 등을 계산한다. 프레그먼트 파라미터들은 추가적으로 처리되어, 처리된 프레그먼트 데이터, 예를 들어, 컬러 및 깊이를 생성한다.
변위된 픽셀 중심을 사용하여 프레그먼트 파라미터들이 계산될 때, 각각의 프레그먼트 파라미터는 프레그먼트 내의 위치에서 계산되고, 프리미티브 에지를 따르는 컬러 불연속들과 같은 비주얼 아티팩트들의 발생은 감소된다. 프레그먼트 셰이더(255)는 처리된 프레그먼트 데이터 및 프레그먼트 프로그램 명령어들로부터 생성된 코드 워드들을 래스터 연산 유닛(265)으로 출력한다. 다중 샘플링을 수행하도록 구성될 때, 래스터 연산 유닛(265)은 프레그먼트 셰이더(255)로부터 수신된 프레그먼트 깊이 데이터 및 다중 샘플 모드에 의해 특정된 서브-픽셀 샘플 위치들을 사용하여 각각의 서브-픽셀 샘플 위치에 대한 서브-픽셀 깊이 값들을 계산한다. 다른 실시예에서, 서브-픽셀 깊이 값들은 프레그먼트 셰이더(255) 내에서 계산된 다.
일 실시예에서, 래스터 연산 유닛(265)은 각각의 서브-픽셀 샘플 위치에 대해 프레그먼트 셰이더(255)로부터 수신된, 컬러와 같은 프레그먼트 데이터를 복사(replicate)한다. 다른 실시예에서, 래스터 연산 유닛(265)은 프레그먼트 셰이더(255)로부터 각각의 서브-픽셀 샘플에 대한 서브-픽셀 데이터를 수신한다. 서브-픽셀 컬러 값들을 처리하면, 픽셀 내의 서브-픽셀 샘플 위치들 사이의 컬러 변화들(color variations)로부터 초래되는 컬러 공간 에일리어싱(color space aliasing)을 감소시킬 수 있으므로, 이미지 품질을 더욱 향상시킬 수 있다.
래스터 연산 유닛(265)은 메모리 컨트롤러(220)로의 판독 인터페이스 및 기입 인터페이스를 포함하는데, 래스터 연산 유닛(265)은 메모리 컨트롤러(220)를 통해 로컬 메모리(240) 또는 호스트 메모리(212)에 저장된 데이터에 액세스한다. 래스터 연산 유닛(265)은, 처리된 프레그먼트 데이터와 연관된 픽셀 위치(x,y 좌표들에 의해 특정된 이미지 위치)에서 로컬 메모리(240) 또는 호스트 메모리(212)에 저장된 서브-픽셀 프레그먼트 데이터 및 픽셀 데이터를 사용하여, 스텐실(stencil), z 테스트, 블렌딩(blending) 등과 같은, 근접 및 원거리 평면(near and far plane) 클리핑 및 래스터 연산들을 선택적으로 수행한다. 래스터 연산 유닛(265)으로부터의 출력 데이터는 출력 데이터와 연관된 픽셀 위치의 로컬 메모리(240) 또는 호스트 메모리(212)에 기입되고, 결과들, 예를 들어, 이미지 데이터는 그래픽 메모리에 저장된다.
처리가 완결될 때, 출력 컨트롤러(280)를 사용하여, 그래픽 서브시스템(207) 의 출력(285)이 제공된다. 대안적으로, 호스트 프로세서(214)가 메모리 컨트롤러(220), 인터페이스(217), 및 시스템 인터페이스(215)를 통해 로컬 메모리(240)에 저장된 이미지를 판독한다. 출력 컨트롤러(280)는, 데이터를 디스플레이 장치, 네트워크, 전자 제어 시스템, 다른 컴퓨팅 시스템(200)과 같은, 다른 컴퓨팅 시스템, 다른 그래픽 서브시스템(207)과 같은 다른 그래픽 서브시스템 등으로 전달하도록 연산 코드들(opcodes)에 의해 선택적으로 구성된다. 또한, 출력 컨트롤러(280)는, 각 픽셀내의 서브-픽셀 샘플들을 조합하는 이미지 데이터, 예를 들어, 다중-샘플링된 컬러 데이터를 하향 필터링(downfiltering)하여 디스플레이를 위한 필터링된 픽셀들을 생성하도록 연산 코드들에 의해 선택적으로 구성된다. 다른 실시예에서, 다중-샘플링된 컬러 데이터는, 지오메트리 데이터를 렌더링(rendering)하고 다중-샘플링된 컬러 데이터를 지오메트리상에 텍스처 맵으로서 맵핑하는 것에 의해 하향 필터링된다. 다른 실시예에서, 하향 필터링은 프레그먼트 셰이더(255) 내에서 텍스처 맵 필터링, 예를 들어, 트라이리니어(trilinear), 이방성(anisotropic) 등을 사용하여 실현된다.
도 3A는, 본 발명의 하나 이상의 양태들에 따른, 프레그먼트 에지로의 픽셀 중심 위치(301)의 변위를 예시한다. (에지를 따르는 위치들을 포함하는) 프리미티브(302) 내의 임의의 위치는, 무게 중심 가중치들 및 프리미티브(302)의 버텍스들(버텍스 310, 버텍스 311, 및 버텍스 312)을 사용하여 다음의 수학식 1과 같이 정의될 수 있다.
Figure 112007033552188-PCT00001
각각의 무게 중심 가중치(w0, w1, 및 w2)는 프리미티브(302) 내의 임의의 위치에 대해 0 이상 1 이하이고, 무게 중심 가중치들의 합은 1이다. 각각의 위치는 무게 중심 가중치들의 고유 세트와 연관된다. 픽셀(300) 내의 픽셀 중심 위치(301)와 같은, 프리미티브(302)의 외부의 위치에 대해서는, 적어도 하나의 무게 중심 가중치가 음(negative)이다. 픽셀 중심 위치(301)는, 도 3C와 관련하여 부연되는 바와 같이, 모든 무게 중심 가중치들이 양이 되도록, 음의 무게 중심 가중치 각각을 양의 무게 중심 각각으로 재분배하는 것에 의해, 변위된 픽셀 중심(displaced pixel center)(313)으로 변위될 수 있다. 예를 들어, 음의 무게 중심 가중치 w1가 w0 및 w2로 재분배될 때, 픽셀 중심 위치(301)는, 변위된 픽셀 중심(313)으로 라인(315)에 평행하게 이동한다.
도 3B는, 본 발명의 하나 이상의 양태들에 따른, 프레그먼트 셰이더(255) 내의 프레그먼트 파라미터 계산 유닛(350)의 예시적 실시예의 블록도이다. 프레그먼트 파라미터 계산 유닛(350)은 래스터라이저(250)로부터, 커버리지 데이터 및 무게 중심 가중치들을 포함하는, 프레그먼트 데이터 및 픽셀과 연관된 프레그먼트 프로그램 명령어들을 수신한다. 무게 중심 가중치 조정 유닛(360)은, 커버리지 데이터에 따라, 픽셀에 대한 픽셀 중심 위치가 프레그먼트 내인지를 결정하고, 조정된 무게 중심 가중치들을 생성한다. 픽셀 중심 위치가 프레그먼트 내에 있지 않을 경 우, 도 3C와 관련하여 설명되는 바와 같이, 변위된 픽셀 중심이 결정된다. 그렇지 않다면, 조정된 무게 중심 가중치들은 래스터라이저(250)로부터 수신된 무게 중심 가중치들과 동일하다.
서브-픽셀 계산 유닛(370)은, 무게 중심 가중치 조정 유닛(360)으로부터의 조정된 무게 중심 가중치들 및 무게 중심 제어 유닛(365)으로부터의 서브-픽셀 샘플 위치들을 수신한다. 서브-픽셀 샘플 위치들은 다중 샘플 모드에 의해 특정되며, 프로그램될 수 있거나 정적일 수 있다. 서브-픽셀 계산 유닛(370)은 조정된 무게 중심 가중치들 및 서브-픽셀 샘플 위치들을 사용하여 각각의 서브-픽셀 샘플 위치에 대한 하나 이상의 프레그먼트 파라미터들을 계산한다. 다른 실시예에서는, 하나 이상의 프레그먼트 파라미터들이 변위된 픽셀 중심에 대해서만 계산되고 각각의 서브-픽셀 샘플 위치에 대해 래스터 연산 유닛(265)에서 복사된다.
도 3C는, 본 발명의 하나 이상의 양태들에 따른, 픽셀 중심 위치(301)와 같은, 픽셀 중심 위치를 변위시키는 방법의 실시예를 예시한다. 단계 320에서, 무게 중심 가중치 조정 유닛(360)은, 픽셀 중심 위치에 대한 무게 중심 가중치들 중 하나 이상이 음인지를 결정하고, 그렇지 않다면, 단계 324에서, 무게 중심 가중치 조정 유닛(360)은 조정된 무게 중심 가중치들 각각을 래스터라이저(250)로부터 수신된 그것의 개개 무게 중심 가중치로 설정한다. 단계 320에서, 무게 중심 가중치 조정 유닛(360)이 픽셀 중심 위치에 대한 무게 중심 가중치들 중 하나 이상이 음이라고 결정하면, 단계 325에서, 무게 중심 가중치 조정 유닛(360)은, 2개의 무게 중심 가중치들이 음인지를 결정하고, 그렇다면, 단계 330에서, 무게 중심 가중치 조 정 유닛(360)은 음의 무게 중심 가중치들 각각을 0으로 조정하고 음이 아닌 무게 중심 가중치를 1로 조정한다.
단계 325에서, 무게 중심 가중치 조정 유닛(360)이 2개의 무게 중심 가중치는 음이 아니라고 결정하면, 즉, 하나의 무게 중심 가중치만이 음이고 2개의 무게 중심 가중치는 음이 아니라고 결정하면, 단계 327에서, 무게 중심 가중치 조정 유닛(360)은 음의 무게 중심 가중치를 반으로 나누어 1/2 가중치 분배(half weight distribution)를 생성한다. 단계 328에서, 무게 중심 가중치 조정 유닛(360)은, 1/2 가중치 분배의 절대값이 음이 아닌 무게 중심 가중치들 중 어느 하나보다 큰지를 결정하고, 그렇다면, 단계 334에서, 무게 중심 가중치 조정 유닛(360)은 음의 무게 중심 가중치 및 음이 아닌 무게 중심 가중치들 중 작은 쪽을 0으로 조정하고 음이 아닌 무게 중심 가중치들 중 큰 쪽을 1로 조정한다.
단계 328에서, 무게 중심 가중치 조정 유닛(360)이, 1/2 가중치 분배의 절대값이 음이 아닌 무게 중심 가중치들 중 어느 하나보다 크지 않다고 결정하면, 단계 332에서, 무게 중심 가중치 조정 유닛(360)은 음의 무게 중심 가중치를 0으로 조정한다. 무게 중심 가중치 조정 유닛(360)은 1/2 가중치 분배를 음이 아닌 무게 중심 가중치들 각각과 합산하여, 나머지 조정된 무게 중심 가중치들을 생성한다. 단계들(330, 332, 334, 및 324) 다음에, 무게 중심 가중치 조정 유닛(360)은 조정된 무게 중심 가중치들을 서브-픽셀 계산 유닛(370)으로 출력한다. 당업자들이라면, 도 3C의 방법 단계들을 수행하도록 구성된 임의의 시스템 또는 그들의 등가물들이 본 발명의 범위내에 해당된다는 것을 알 수 있을 것이다.
도 4A는, 본 발명의 하나 이상의 양태들에 따른, 픽셀들 내의 서브-픽셀 샘플 위치들을 예시한다. 픽셀(400)은 픽셀 중심 위치(415) 및 8개의 서브-픽셀 샘플 위치들(샘플 위치 401, 샘플 위치 402, 샘플 위치 403, 샘플 위치 404, 샘플 위치 405, 샘플 위치 406, 샘플 위치 407, 및 샘플 위치 408)을 포함한다. 픽셀 중심 위치(415) 역시 서브-픽셀 샘플 위치이므로, 9개의 서브-픽셀 샘플 위치들이 존재한다. 또한, 픽셀(400)은 4개의 중심 샘플 위치들(중심 샘플 위치 409, 중심 샘플 위치 410, 중심 샘플 위치 411, 및 중심 샘플 위치 412)을 포함한다. 픽셀 중심 위치(415)가, 프레그먼트(418)와 같은 프레그먼트에 의해 커버되지 않을 때, 중심 샘플 위치 또는 샘플 위치가, 변위된 픽셀 중심, 즉, 중심 서브-픽셀 샘플 위치로서 사용될 수도 있다. 중심 서브-픽셀 샘플 위치는 서브-픽셀 샘플 위치들 중 임의의 것에서 하나 이상의 프레그먼트 파라미터들을 계산하는 데 사용된다. 예를 들어, 프레그먼트 파라미터는, 도 5C와 관련하여 설명되는 바와 같이, 프레그먼트 내의 임의의 서브-샘플 위치에 대한 파라미터의 값을 정의하는 평면 방정식(plane equation)을 평가하는 것에 의해 계산될 수 있다.
본 발명의 일부 실시예들은 픽셀(400) 내의 임의 위치에 배치된 픽셀(400) 내의 추가적인 서브-픽셀 샘플 위치들을 포함한다. 본 발명의 다른 실시예들은 픽셀(400) 내에 좀더 적은 서브-픽셀 샘플 위치들을 포함한다. 또한, 서브-픽셀 샘플 위치들의 서브세트는 각각의 다중 샘플 모드에 의해 특정될 수 있다. 예를 들어, 제1 다중 샘플 모드는 픽셀 중심 위치(415)만을 사용한다. 픽셀(400) 내의 서브-픽셀 샘플 위치들은 도 4B, 도 4C, 및 도 4D의 3가지 다른 다중 샘플 모드들에 대해 도시된다. 도 4B에 도시된 제2 다중 샘플 모드는 샘플 위치(401) 및 샘플 위치(404)만을 사용한다. 도 4C에 도시된 제3 다중 샘플 모드는 샘플 위치(401), 샘플 위치(402), 샘플 위치(403), 및 샘플 위치(404)만을 사용한다. 도 4D에 도시된 제4 다중 샘플 모드는 샘플 위치(405), 샘플 위치(406), 샘플 위치(407), 및 샘플 위치(408)만을 사용한다. 본 발명의 다른 실시예들은 추가적인 다중 샘플 모드들을 포함할 수 있다.
도 5A는, 본 발명의 하나 이상의 양태들에 따른, 프레그먼트 셰이더(255)의 다른 실시예인 프레그먼트 셰이더(525) 내의 중심 계산 유닛(500)의 예시적 실시예의 블록도이다. 중심 계산 유닛(500)은 래스터라이저(250)로부터 픽셀에 대한 커버리지 데이터를 수신하고 중심 서브-픽셀 샘플 위치를 결정하는 데 사용되는 중심 정보를 생성한다. 중심 서브-픽셀 샘플 위치는 샘플 위치 또는 중심 샘플 위치일 수 있다. 다른 실시예에서, 중심 계산 유닛(500)은 래스터라이저(250) 내에 포함된다.
중심 계산 유닛(500) 내의 저장 소자(510)는 래스터라이저(250)로부터의 커버리지 데이터 및 중심 제어 유닛(505)으로부터의 다중 샘플 모드를 수신하고, 중심 정보, 예를 들어, 중심 서브-픽셀 샘플 위치 또는 픽셀 중심 오프셋(pixel center offset)을 출력한다. 다른 대안적인 실시예에서는, 저장 소자(510)가 중심 서브-픽셀 샘플 위치를 출력한다. 또 다른 대안 실시예에서, 저장 소자(510)는, 중심 서브-픽셀 샘플 위치를 계산하는 데 사용되는 픽셀 중심 오프셋을 출력한다. 저장 소자(510)는 하나 이상의 레지스터 파일, ROM(read only memory), RAM(random access memory) 등을 포함할 수 있다.
저장 소자(510)에 저장된 중심 정보는 정적이거나 프로그램(소프트웨어 드라이버에 의해 결정되고 로드)될 수 있다. 중심 제어 유닛(505)은 중심 정보를 저장 소자(510)로 로드하기 위해 기입 제어 신호를 생성한다. 저장 소자(510)에 기입하도록 구성될 때, 중심 제어 유닛(505)은 래스터라이저(250)로부터 중심 정보, 어드레스, 및 기입 명령어를 수신한다. 그렇지 않으면, 중심 제어 유닛(505)은 래스터라이저(250)로부터 프레그먼트 프로그램 명령어들 및 프레그먼트 데이터를 수신한다. 프레그먼트 데이터는 픽셀 위치 정보(x,y), 커버리지 데이터, 무게 중심 가중치들과 같은 프리미티브 데이터 등을 포함할 수 있다.
일부 실시예들에서는, 제1 다중 샘플 모드가 사용될 경우, 샘플 위치(415)가 프레그먼트에 의해 커버된다면, 샘플 위치(415)는 중심 서브-픽셀 샘플 위치로서 사용된다. 그렇지 않다면, 제1 다중 샘플 모드가 사용되고 샘플 위치(415)가 커버되지 않을 경우, 픽셀에 대해, 프레그먼트는 "킬링(killing)"되는데, 다시 말해, 프레그먼트 셰이더(525)에 의해 래스터 연산 유닛(265)으로 출력되지 않는다. 임의의 다중 샘플 모드를 위한 서브-픽셀 샘플 위치들 모두가 프레그먼트에 의해 커버되는 경우, 픽셀 중심 위치가 중심 서브-픽셀 샘플 위치이다. 또한, 1 보다 많은 서브-픽셀 샘플 위치를 특정하는 다중 샘플 모드가 사용되고 단일 서브-픽셀 샘플 위치가 프레그먼트에 의해 커버되는 경우, 단일 서브-픽셀 샘플 위치가 중심 서브-픽셀 샘플 위치이다. 표 1은, 도 4B에 도시된 제2 다중 샘플 모드를 위한, 커버리지 데이터를 사용하여 인덱싱된, 중심 서브-픽셀 샘플 위치들의 실시예를 포함 한다.
제2 다중 샘플 모드를 위한 중심 서브-픽셀 샘플 위치들
커버리지 데이터 중심 서브-픽셀 샘플 위치
샘플 위치 401 샘플 위치 401
샘플 위치 404 샘플 위치 404
샘플 위치들 401 및 404 샘플 위치 415
표 2는, 도 4C에 도시된 제3 다중 샘플 모드를 위한, 커버리지 데이터를 사용하여 인덱싱된, 중심 서브-픽셀 샘플 위치들의 실시예를 포함한다.
제3 다중 샘플 모드를 위한 중심 서브-픽셀 샘플 위치들
커버리지 데이터 중심 서브-픽셀 샘플 위치
샘플 위치 401 샘플 위치 401
샘플 위치 402 샘플 위치 402
샘플 위치 403 샘플 위치 403
샘플 위치 404 샘플 위치 404
샘플 위치들 401 및 402 중심 샘플 위치 410
샘플 위치들 403 및 401 중심 샘플 위치 409
샘플 위치들 402 및 404 중심 샘플 위치 412
샘플 위치들 403 및 404 중심 샘플 위치 411
4개 샘플 위치들 중 임의의 3개 샘플 위치 415
4개 샘플 위치들 모두 샘플 위치 415
표 3은, 도 4D에 도시된, 제4 다중 샘플 모드를 위한, 커버리지 데이터를 사용하여 인덱싱된, 중심 서브-픽셀 샘플 위치들의 실시예를 포함한다.
제4 다중 샘플 모드를 위한 중심 서브-픽셀 샘플 위치들
커버리지 데이터 중심 서브-픽셀 샘플 위치
샘플 위치 405 샘플 위치 405
샘플 위치 406 샘플 위치 406
샘플 위치 407 샘플 위치 407
샘플 위치 408 샘플 위치 408
샘플 위치들 405 및 406 중심 샘플 위치 410
샘플 위치들 405 및 407 중심 샘플 위치 409
샘플 위치들 406 및 408 중심 샘플 위치 412
샘플 위치들 407 및 408 중심 샘플 위치 411
4개 샘플 위치들 중 임의의 3개 샘플 위치 415
4개 샘플 위치들 모두 샘플 위치 415
당업자들이라면, 픽셀(400) 내의 상이한 위치들에 배치된 상이한 중심 샘플 위치들이 제1, 제2, 제3, 및 제4 다중 샘플 모드들을 위해 사용될 수 있다는 것과 다른 서브-픽셀 샘플 위치들이 추가적인 다중 샘플 모드들에 포함될 수 있다는 것을 알 수 있을 것이다. 다른 실시예들에서, 표 1, 표 2, 및 표 3은 중심 서브-픽셀 샘플 위치들 대신에 또는 중심 서브-픽셀 샘플 위치들 이외에 픽셀 중심 오프셋들을 포함한다. 예를 들어, 픽셀 중심 위치(415)가 (0,0)에 배치될 때, 샘플 위치(405)에 대응되는 픽셀 중심 오프셋은 (-1,-3)이다. 픽셀 중심 오프셋은, 중심 서브-픽셀 샘플 위치를 계산하기 위해, 픽셀 중심 위치와 조합될 수도 있다. 반대로, 중심 서브-픽셀 샘플 위치는, 픽셀 중심 오프셋을 계산하기 위해, 픽셀 중심 위치와 조합될 수도 있다.
저장 소자(510)는 중심 정보, 예를 들어, 픽셀 중심 오프셋 또는 중심 서브-픽셀 샘플 위치를 중심 제어 유닛(505)으로 출력한다. 중심 제어 유닛(505)은 중심 정보, 프레그먼트 데이터, 및 프레그먼트 프로그램 명령어들을 파라미터 보간 유닛(515)으로 출력한다. 또한, 중심 제어 유닛(505)은 다중 샘플 모드를 파라미터 보간 유닛(515)으로 출력한다. 파라미터 보간 유닛(515)은, 도 5C와 관련하여 설명되는 바와 같이, 각각의 프레그먼트에 대한 하나 이상의 파라미터들을 계산하고, 프레그먼트 파라미터들 및 프레그먼트 프로그램 명령어들을 텍스처 맵 유닛(515)으로 출력한다. 일 실시예에서, 파라미터 보간 유닛(515)은 중심 서브-픽셀 샘플 위치에 대한 컬러 파라미터들 및, 프레그먼트에 의해 커버되는, 다중 샘플 모드에 의해 특정된, 각각의 서브-픽셀 샘플 위치에 대한 텍스처 파라미터들을 계산한다. 다른 실시예에서, 파라미터 보간 유닛(515)은, 프레그먼트에 의해 커버되는, 다중 샘플 모드에 의해 특정된, 각각의 서브-픽셀 샘플 위치에 대한 컬러 파라미터들 및 텍스처 파라미터들을 계산한다.
프레그먼트 파라미터들 및 프레그먼트 프로그램 명령어들 이외에, 일부 실시예들에서, 파라미터 보간 유닛(515)은 중심 정보를 텍스처 맵 유닛(580)으로 출력한다. 그러한 실시예들에서, 중심 정보는 LOD(level of detail) 유닛(520)에 의해 텍스처 맵 LOD를 계산하는 데 사용되는데, 다시 말해, LOD는 균일한 (픽셀 중심 위치 기반의) 그리드(grid)가 아니라 변경된 (중심 서브-픽셀 샘플 위치 기반의) 그리드를 사용하여 계산된다. 구체적으로, 텍스처 파라미터 기울기들(gradients)은 픽셀 오프셋들 또는 중심 서브-픽셀 샘플 위치들을 사용하여 계산된 텍스처 파라미터들을 사용해서 결정된다. 다른 실시예들에서, 픽셀 중심 위치들에 기초하여 계산된 텍스처 맵 파라미터들은, 당업자들에게 공지된 기술들을 사용하여 텍스처 맵 LOD를 계산하는 데 사용된다.
텍스처 맵 유닛(580)은 중심 서브-픽셀 샘플 위치를 사용하여 계산된 프레그먼트 파라미터들과 LOD를 조합하여 텍스처 맵 좌표들 및 대응되는 어드레스들을 결정한다. 어드레스들은 판독 요청들과 함께 메모리 컨트롤러(220)로 출력되고, 메모리 컨트롤러(220)는 하나 이상의 텍스처 샘플들을 리턴한다. 텍스처 샘플들은 필터 모드에 따라 필터링되어, 프레그먼트에 대한 필터링된 텍스처 샘플을 생성한다. 대안적으로, 텍스처 샘플들은 필터링되어 프레그먼트 내의 각각의 서브-픽셀 샘플 위치에 대한 필터링된 텍스처 샘플을 생성한다. 조합기 유닛(585)은 필터링된 텍스처 샘플과, 컬러와 같은, 프레그먼트 파라미터들을 사용하여 생성된 다른 프레그먼트 데이터를 조합하고, 처리된 프레그먼트 데이터를 래스터 연산 유닛(265)으로 출력한다.
도 5B는, 본 발명의 하나 이상의 양태들에 따른, 중심 서브-픽셀 위치를 결정하는 방법의 실시예를 예시한다. 단계 550에서, 중심 계산 유닛(500)은 픽셀에 대한 커버리지 데이터를 수신한다. 단계 555에서, 중심 제어 유닛(505)은 커버리지 데이터 및 다중 샘플 모드를 사용하여 저장 소자(510)의 엔트리를 판독한다. 일부 실시예들에서, 저장 소자(510)는, 표 1, 표 2, 및 표 3과 같은, 다중 샘플 모드 각각을 위한 표를 포함한다. 다른 실시예들에서는, 단일 표가 수개의 다중 샘플 모드들을 위한 중심 정보를 포함한다.
단계 560에서, 중심 제어 유닛(505)은 중심 정보를 수신하고 중심 정보를 파라미터 보간 유닛(515)으로 출력한다. 파라미터 보간 유닛(515)은 중심 정보를 사용하여 픽셀 오프셋을 결정한다. 다른 실시예에서, 파라미터 보간 유닛(515)은 중심 정보를 사용하여 중심 서브-픽셀 샘플 위치를 결정한다.
도 5C는, 본 발명의 하나 이상의 양태들에 따른, 중심 서브-픽셀 위치를 결정하고 프레그먼트 파라미터들을 계산하는 방법의 실시예를 예시한다. 단계들(550, 555, 및 560)은 도 5B와 관련하여 앞서 설명된 바와 같이 진행한다. 단계 565에서, 파라미터 보간 유닛(515)은 픽셀 오프셋을 사용하여 하나 이상의 프레그먼트 파라미터들을 계산한다.
각각의 속성을 위해, 보간기(interpolator)는, 2x2 정사각형으로 정렬된 4개 픽셀들을 포함하는 쿼드(quad)의 중심에서의 값인 quad_center를 계산한다. 쿼드의 중심은 다음의 수학식 2를 사용하여 계산된다.
Figure 112007033552188-PCT00002
여기서, (x_quad_center,y_quad_center)는 쿼드 중심의 위치이고, ddx는 속성의 X 방향 미분이며, ddy는 속성의 Y 방향 미분이고, base는 샘플 (x_org, y_org)에서의 속성 값이다. 평면 방정식은 프레그먼트 속성 값들을 정의하고, (x_org, y_org)는 평면 방정식의 원점 위치이다. 본 발명의 일부 실시예들에서, quad_center, ddy, ddx, 및 base는 부동점 포맷(floating-point format)으로 표현되고, x_quad_center, y_quad_center, x_org, 및 y_org는 고정점 포맷(fixed-point format)으로 표현된다.
보간기는 quad_center를 사용하여, 다음의 수학식 3으로부터, 4개 픽셀의 값들(pixelN, N= 0,1,2,3)을 계산한다.
Figure 112007033552188-PCT00003
여기서, xcN 및 ycN은 부호 있는(signed) 3-비트 값들로서 표현되는 픽셀 오프셋 성분들이다. 구체적으로, xcN은 쿼드 중심으로부터 픽셀 N의 샘플 포인트에 이르는 X 방향의 거리이고, ycN은 쿼드 중심으로부터 픽셀 N의 샘플 포인트에 이르는 Y 방향의 거리이다. 본 발명의 다른 실시예에서, 픽셀 오프셋 성분들은 부호 없는(unsigned) 3-비트 값들로서 표현되고, 상이한 방정식들을 사용하여 쿼드 내의 4개 픽셀 각각을 계산한다.
단계 570에서, 파라미터 보간 유닛(515)은 하나 이상의 프레그먼트 파라미터들 및 중심 정보를 텍스처 맵 유닛(580)으로 출력하고, 텍스처 맵 유닛(580) 내의 LOD 유닛(520)은 프레그먼트를 위한 텍스처 맵 LOD를 계산한다. 당업자들이라면, 도 5B 및 도 5C의 방법 단계들을 수행하도록 구성된 임의 시스템 또는 그들의 등가물들이 본 발명의 범위내에 해당된다는 것을 알 수 있을 것이다.
도 6A는, 본 발명의 하나 이상의 양태들에 따른, 프레그먼트 셰이더(255)의 다른 대안적인 실시예인 프레그먼트 셰이더(625)의 블록도이다. 중심 계산 유닛(500)의 대안적인 실시예인 중심 계산 유닛(600)은 래스터라이저(250)로부터 픽셀에 대한 커버리지 데이터를 수신하고 중심 서브-픽셀 샘플 위치를 계산하는 데 사용되는 중심 정보를 생성한다. 중심 계산 유닛(600) 내의 저장 소자(610)는 중심 제어 유닛(605)으로부터 커버리지 데이터 및 다중 샘플 모드를 수신하고, 중심 인덱스를 포함하는 중심 정보를 출력한다. 저장 소자(610)는 하나 이상의 레지스터 파일, ROM, RAM 등을 포함할 수 있다.
일 실시예에서, 각각의 중심 인덱스는 4 비트이다. 따라서, 중심 인덱스는 픽셀 오프셋 또는 중심 서브-픽셀 샘플 위치보다 적은 비트들로 표현될 수 있다. 예를 들어, 픽셀 중심 오프셋을 표현하는 데 6 비트가 사용될 수 있고, 중심 서브-픽셀 샘플 위치를 표현하는 데 16 비트 이상이 사용될 수 있다. 중심 정보가 수개의 파이프라인 단계들을 거쳐서 전달되는 경우, 픽셀 오프셋 또는 중심 서브-픽셀 샘플 위치가 아니라 중심 인덱스를 전달하는 것이 좀더 효율적일 수 있다. 중심 인덱스는 사실상 중심 정보의 압축 형태이다. 중심 표(625)는, 여기에서 부연되는 바와 같이, 중심 인덱스를 압축 해제하여 중심 정보를 획득하는 데 사용된다.
저장 소자(610)에 저장된 중심 인덱스들은 정적이거나 프로그램(소프트웨어 드라이버에 의해 결정되고 로드)될 수 있다. 중심 제어 유닛(605)은 중심 인덱스들을 저장 소자(610)로 로드하기 위해 기입 제어 신호를 생성한다. 저장 소자(610)에 기입하도록 구성될 때, 중심 제어 유닛(605)은 래스터라이저(250)로부터 각각의 중심 인덱스, 어드레스, 및 기입 명령어를 수신한다. 그렇지 않으면, 중심 제어 유닛(605)은 래스터라이저(250)로부터 프레그먼트 프로그램 명령어들 및 프레그먼트 데이터를 수신한다.
제1 다중 샘플 모드가 사용되고 샘플 위치(415)가 프레그먼트에 의해 커버될 때, 중심 인덱스는 15이다. 그렇지 않고, 제1 다중 샘플 모드가 사용되고 샘플 위치(415)가 커버되지 않을 때, 중심 인덱스는 0이다. 중심 인덱스가 0으로 설정된, 즉, "킬링된" 프레그먼트에 대해서는 텍스처 샘플들이 메모리로부터 판독되지 않는다. 표 4는, 도 4B에 도시된, 제2 다중 샘플 모드를 위한, 커버리지 데이터를 사용하여 인덱싱된, 중심 인덱스들의 실시예를 포함한다.
제2 다중 샘플 모드를 위한 중심 인덱스들
커버리지 데이터 중심 인덱스
샘플 위치 없음 0
샘플 위치 401 1
샘플 위치 404 4
샘플 위치들 401 및 404 15
표 5는, 도 4C에 도시된 제3 다중 샘플 모드를 위한, 커버리지 데이터를 사용하여 인덱싱된, 중심 인덱스들의 실시예를 포함한다.
제3 다중 샘플 모드를 위한 중심 인덱스들
커버리지 데이터 중심 인덱스
샘플 위치 없음 0
샘플 위치 401 1
샘플 위치 402 2
샘플 위치 403 3
샘플 위치 404 4
샘플 위치들 401 및 402 10
샘플 위치들 403 및 402 9
샘플 위치들 402 및 404 12
샘플 위치들 403 및 404 11
4개 샘플 위치들 중 임의의 3개 15
4개 샘플 위치들 모두 15
표 6은, 도 4D에 도시된, 제4 다중 샘플 모드를 위한, 커버리지 데이터를 사용하여 인덱싱된, 중심 인덱스들의 실시예를 포함한다.
제4 다중 샘플 모드를 위한 중심 인덱스들
커버리지 데이터 중심 인덱스
샘플 위치 없음 0
샘플 위치 405 5
샘플 위치 406 6
샘플 위치 407 7
샘플 위치 408 8
샘플 위치들 405 및 406 10
샘플 위치들 405 및 407 9
샘플 위치들 406 및 408 12
샘플 위치들 407 및 408 11
4개 샘플 위치들 중 임의의 3개 15
4개 샘플 위치들 모두 15
저장 소자(610)는 중심 인덱스를 중심 제어 유닛(605)으로 출력한다. 중심 제어 유닛(605)은 중심 인덱스, 프레그먼트 데이터, 및 프레그먼트 프로그램 명령어들을 파라미터 보간 유닛(615)으로 출력한다. 프레그먼트 셰이더(670)와 같은 프레그먼트 셰이더는, 파라미터 보간 유닛(615) 및 텍스처 맵 유닛(680)과 같은, 프레그먼트 데이터를 처리하기 위한 병렬 서브유닛들을 포함할 수 있다. 중심 제어 유닛(605)은 중심 인덱스들, 프레그먼트 데이터, 및 프레그먼트 프로그램 명령어들을 2 이상의 파라미터 보간 유닛들(615)로 출력할 수 있다.
파라미터 보간 유닛(615)은, 도 6C와 관련하여 설명된 바와 같이, 각각의 프레그먼트에 대해 하나 이상의 파라미터들을 계산하고, 프레그먼트 파라미터들 및 프레그먼트 프로그램 명령어들을 텍스처 맵 유닛(680)으로 출력한다. 중심 표(625)는 하나 이상의 레지스터 파일, ROM, RAM 등을 포함할 수 있다. 중심 표(625)는 중심 인덱스를 사용하여 인덱싱된 픽셀 오프셋들 또는 중심 서브-픽셀 샘플 위치들을 저장한다. 표 7은 중심 표(625)의 실시예를 위한 중심 인덱스들에 의해 인덱싱된 픽셀 오프셋들을 포함한다.
인덱스들에 대응되는 픽셀 오프셋들
중심 인덱스 픽셀 오프셋
dx dy
0 0=kill 0=kill
1 -2 -2
2 2 -2
3 -2 2
4 2 2
5 -1 -3
6 3 -1
7 -3 1
8 1 3
9 -2 -1
10 1 -2
11 -1 2
12 2 1
13 미사용 미사용
14 미사용 미사용
15 0 0
중심 표(625)에 저장된 픽셀 오프셋들은 프레그먼트 파라미터들을 계산하는 데 사용된다. 일 실시예에서, 파라미터 보간 유닛(615)은 중심 서브-픽셀 샘플 위치에 대한 컬러 파라미터들 및, 프레그먼트에 의해 커버되는, 다중 샘플 모드에 의해 특정된, 각각의 서브-픽셀 샘플 위치에 대한 텍스처 파라미터들을 계산한다. 다른 실시예에서, 파라미터 보간 유닛(615)은, 프레그먼트에 의해 커버되는, 다중 샘플 모드에 의해 특정된, 각각의 서브-픽셀 샘플 위치에 대한 컬러 파라미터들 및 텍스처 파라미터들을 계산한다.
프레그먼트 파라미터들 및 프레그먼트 프로그램 명령어들 이외에, 일부 실시예들에서, 파라미터 보간 유닛(615)은 중심 정보를 텍스처 맵 유닛(680)으로 출력한다. 그러한 실시예들에서, 중심 정보는, 도 5A와 관련하여 앞서 설명된 바와 같이, LOD(level of detail) 유닛(620)에 의해 텍스처 맵 LOD를 계산하는 데 사용된다. LOD 유닛(620)의 다른 실시예에서, LOD 유닛(620)은 중심 인덱스를 수신하고, LOD 유닛(620) 내의 중심 표(625)와 같은 중심 표에 액세스하여 픽셀 오프셋 또는 중심 서브-픽셀 샘플 위치를 획득해서 텍스처 맵 LOD를 계산한다.
텍스처 맵 유닛(680)은, 도 5A와 관련하여 설명된 바와 같이, 중심 서브-픽셀 샘플 위치 및 텍스처 맵 LOD를 사용하여 계산된 프레그먼트 파라미터들을 사용해서 텍스처 맵 좌표들 및 대응되는 어드레스들을 결정한다. 조합기 유닛(685)은 필터링된 텍스처 샘플을, 컬러와 같은, 프레그먼트 파라미터들을 사용하여 생성된 임의의 다른 프레그먼트 데이터와 조합하고, 처리된 프레그먼트 데이터를 수집기 유닛(690)으로 출력한다. 수집기 유닛(690)은 각각의 텍스처 맵 유닛(680)으로부터 처리된 프레그먼트 데이터를 수집하고 처리된 프레그먼트 데이터를 래스터 연산 유닛(265)으로 출력한다.
도 6B는, 본 발명의 하나 이상의 양태들에 따른, 중심 서브-픽셀 위치를 결정하는 방법의 실시예를 예시한다. 단계 650에서, 중심 계산 유닛(600)은 픽셀에 대한 커버리지 데이터를 수신하는데, 구체적으로, 커버리지 데이터는 픽셀 내의 어떤 서브-픽셀 위치들이 픽셀과 교차하는 프레그먼트 내에 있는지를 지시한다. 단계 655에서, 중심 제어 유닛(505)은 커버리지 데이터 및 다중 샘플 모드를 사용하여 저장 소자(610)의 엔트리를 판독한다. 일부 실시예들에서, 저장 소자(610)는, 표 4, 표 5, 및 표 6과 같은, 각각의 다중 샘플 모드를 위한 표를 포함한다. 다른 실시예들에서는, 단일 표가 수개의 다중 샘플 모드들을 위한 중심 인덱스들을 포함한다.
단계 657에서, 중심 제어 유닛(605)은 중심 인덱스를 수신하고 중심 인덱스를 파라미터 보간 유닛(615)으로 출력한다. 파라미터 보간 유닛(615)은 중심 인덱스를 사용하여 중심 표(625)로부터 중심 정보, 예를 들어, 픽셀 오프셋 또는 중심 서브-픽셀 샘플 위치를 판독한다. 단계 660에서, 파라미터 보간 유닛(615)은 중심 정보를 사용하여 픽셀 오프셋을 결정한다. 다른 실시예에서, 파라미터 보간 유닛(615)은 중심 정보를 사용하여 중심 서브-픽셀 샘플 위치를 결정한다.
도 6C는, 본 발명의 하나 이상의 양태들에 따른, 중심 서브-픽셀 위치를 결정하고 프레그먼트 파라미터들을 계산하는 방법의 실시예를 예시한다. 단계들(650, 655, 657, 및 660)은, 도 6B와 관련하여 앞서 설명된 바와 같이 진행한다. 단계 665에서, 파라미터 보간 유닛(515)은 픽셀 오프셋을 사용하여 하나 이상의 프레그먼트 파라미터들을 계산한다. 프레그먼트 파라미터들은, 중심 서브-픽셀 샘플 위치를 포함하는 하나 이상의 서브-픽셀 샘플 위치들에서 계산될 수 있다.
단계 670에서, 파라미터 보간 유닛(615)은 프레그먼트 파라미터 및 중심 정보를 텍스처 맵 유닛(680)으로 출력하고 텍스처 맵 유닛(680) 내의 LOD 유닛(620)은 프레그먼트를 위한 텍스처 맵 LOD를 계산한다. 당업자들이라면, 도 6B 및 도 6C의 방법 단계들을 수행하도록 구성된 임의 시스템 또는 그들의 등가물들이 본 발명의 범위내에 해당된다는 것을 알 수 있을 것이다.
본 발명은 특정 실시예들을 참조하여 전술되었다. 그러나, 당업자들이라면, 첨부된 청구항들에서 기술된 발명의 광범위한 정신 및 범위를 벗어나지 않으면서, 그것에 대한 다양한 수정들 및 변경들이 이루어질 수 있다는 것을 알 수 있을 것이다. 예를 들어, 다른 실시예들에서는, 여기에서 기술된, 변위된 픽셀 중심을 계산하고 중심 서브-픽셀 샘플 위치를 결정하기 위한 기술들이 부분적으로 또는 전체적으로 셰이더 또는 다른 그래픽 프로그램으로 구현될 수도 있다. 따라서, 전술한 설명 및 도면들은 한정적인 의미가 아니라 예시적인 것으로 간주되어야 한다. 청구항에서 명시적으로 진술되지 않는다면, 방법 청구항들에서의 단계들의 열거가 단계들을 임의의 특정 순서로 수행한다는 것을 함축하지 않는다. 청구항들 내에서, 요소 레터링(element lettering)(예를 들어, "a)", "b)", "i)", "ii)" 등)은 단계들 또는 다른 연산들을 수행하기 위한 임의의 특정 순서를 지시하는 것은 아니며; 레터링은 그 요소들을 간단하게 언급하기 위해 포함된다.

Claims (24)

  1. 프레그먼트(fragment) 내의 중심 서브-픽셀 샘플 위치를 결정하는 방법으로서,
    프레그먼트 내의 하나 이상의 서브-픽셀 샘플 위치들을 표현하는, 픽셀에 대한 커버리지 데이터(coverage data)를 수신하는 단계;
    상기 커버리지 데이터 및 다중 샘플 모드를 사용하여 중심 정보를 결정하는 단계; 및
    상기 중심 정보에 기초하여 상기 중심 서브-픽셀 샘플 위치를 계산하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 중심 정보는 픽셀 중심 오프셋(pixel center offset)을 포함하는 방법.
  3. 제2항에 있어서,
    상기 계산하는 단계는, 상기 픽셀 중심 오프셋을 상기 픽셀의 픽셀 중심 위치에 적용하여 상기 중심 서브-픽셀 샘플 위치를 계산하는 단계를 포함하는 방법.
  4. 제1항에 있어서,
    상기 중심 정보는 중심 인덱스(centroid index)를 포함하는 방법.
  5. 제4항에 있어서,
    상기 계산하는 단계는,
    상기 중심 인덱스를 사용하여 다른 표로부터 픽셀 중심 오프셋을 판독하는 단계; 및
    상기 픽셀 중심 오프셋을 픽셀 중심 위치에 적용하여 프레그먼트 파라미터를 계산하는 단계를 포함하는 방법.
  6. 제4항에 있어서,
    상기 계산하는 단계는, 상기 중심 인덱스를 사용하여 다른 표로부터 상기 중심 서브-픽셀 샘플 위치를 판독하는 단계를 포함하는 방법.
  7. 제1항에 있어서,
    상기 중심 정보는 상기 중심 서브-픽셀 샘플 위치를 포함하는 방법.
  8. 제1항에 있어서,
    상기 중심 정보를 상기 표에 기입하는 단계를 더 포함하는 방법.
  9. 제1항에 있어서,
    상기 중심 서브-픽셀 샘플 위치를 사용하여 텍스처 좌표(texture coordinate)를 계산하는 단계를 더 포함하는 방법.
  10. 제1항에 있어서,
    상기 중심 정보를 사용하여 텍스처 맵 LOD(level of detail)를 계산하는 단계를 더 포함하는 방법.
  11. 제1항에 있어서,
    상기 결정하는 단계는 표로부터 상기 중심 정보를 판독하는 단계를 포함하는 방법.
  12. 변위된 픽셀 중심을 계산하는 방법으로서,
    제1 무게 중심 가중치(barycentric weight)의 부호가 음인지의 여부를 결정하는 단계;
    제2 무게 중심 가중치의 부호가 음인지의 여부를 결정하는 단계;
    상기 제1 무게 중심 가중치의 부호 및 상기 제2 무게 중심 가중치의 부호에 기초해서, 상기 제1 무게 중심 가중치, 상기 제2 무게 중심 가중치, 및 제3 무게 중심 가중치를 조정하여, 조정된 제1 무게 중심 가중치, 조정된 제2 무게 중심 가중치, 및 조정된 제3 무게 중심 가중치를 생성하는 단계; 및
    상기 조정된 제3 무게 중심 가중치, 상기 조정된 제2 무게 중심 가중치, 및 상기 조정된 제1 무게 중심 가중치를 조합하여, 상기 변위된 픽셀 중심을 생성하는 단계
    를 포함하는 방법.
  13. 제12항에 있어서,
    상기 제1 무게 중심 가중치도 상기 제2 무게 중심 가중치도 음이 아닐 때, 상기 조정된 제1 무게 중심 가중치는 상기 제1 무게 중심 가중치와 동일하고, 상기 조정된 제2 무게 중심 가중치는 상기 제2 무게 중심 가중치와 동일하며, 상기 조정된 제3 무게 중심 가중치는 상기 제3 무게 중심 가중치와 동일한 방법.
  14. 제12항에 있어서,
    상기 조정된 제1 무게 중심 가중치는 0이고, 상기 조정된 제2 무게 중심 가중치는 0이며, 상기 조정된 제3 무게 중심 가중치는 1인 방법.
  15. 제12항에 있어서,
    상기 제1 무게 중심 가중치는 음이고 상기 제2 무게 중심 가중치는 음이 아닐 때, 상기 제1 무게 중심 가중치를 2로 나누어 1/2 가중치 분배(half weight distribution)를 생성하는 단계; 및
    상기 조정된 제1 무게 중심 가중치를 0으로 설정하는 단계를 더 포함하는 방법.
  16. 제15항에 있어서,
    상기 1/2 가중치 분배의 절대값이 상기 제3 무게 중심 가중치 또는 상기 제2 무게 중심 가중치보다 크지 않다고 결정하는 단계;
    상기 1/2 가중치 분배를 상기 제3 무게 중심 가중치와 합산하여, 상기 조정된 제3 무게 중심 가중치를 생성하는 단계; 및
    상기 1/2 가중치 분배를 상기 제2 무게 중심 가중치와 합산하여, 상기 조정된 제2 무게 중심 가중치를 생성하는 단계를 더 포함하는 방법.
  17. 제12항에 있어서,
    상기 조정된 제1 무게 중심 가중치, 상기 조정된 제2 무게 중심 가중치, 및 상기 조정된 제3 무게 중심 가중치를 사용하여, 프레그먼트 파라미터를 계산하는 단계를 더 포함하는 방법.
  18. 중심 계산 유닛으로서,
    중심 정보를 저장하도록 구성된 저장 소자;
    다중 샘플 모드, 및 프레그먼트와 연관된 커버리지 데이터에 기초하여, 상기 중심 정보를 판독하도록 구성된 중심 제어 유닛; 및
    상기 중심 계산 유닛에 연결되고, 상기 중심 정보에 기초하여 프레그먼트 파라미터를 계산하도록 구성된 파라미터 계산 유닛
    을 포함하는 중심 계산 유닛.
  19. 제18항에 있어서,
    상기 파라미터 계산 유닛은, 상기 중심 정보에 기초하여 상기 프레그먼트에 대한 텍스처 맵 LOD(level of detail)를 계산하도록 구성된 텍스처 좌표 계산 유닛에 연결되는 중심 계산 유닛.
  20. 제18항에 있어서,
    상기 파라미터 계산 유닛은 추가적인 중심 정보를 저장하도록 구성된 중심 표(centroid table)를 포함하는 중심 계산 유닛.
  21. 제18항에 있어서,
    상기 프레그먼트 파라미터는 텍스처 맵 좌표(texture map coordinate)인 중심 계산 유닛.
  22. 제18항에 있어서,
    상기 중심 제어 유닛은 상기 중심 정보를 상기 저장 소자에 기입하도록 구성되는 중심 계산 유닛.
  23. 제18항에 있어서,
    상기 중심 계산 유닛은, 프레그먼트 데이터를 수신하여 처리된 프레그먼트 데이터를 생성하도록 구성된 프레그먼트 셰이더(shader) 내에 포함되는 중심 계산 유닛.
  24. 제18항에 있어서,
    상기 중심 계산 유닛은 상기 커버리지 데이터를 생성하도록 구성된 래스터라이저(rasterizer)에 연결되는 중심 계산 유닛.
KR1020077010239A 2004-10-07 2005-10-06 픽셀 중심 위치 변위 KR100913459B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/960,857 US7425966B2 (en) 2004-10-07 2004-10-07 Pixel center position displacement
US10/960,857 2004-10-07

Publications (2)

Publication Number Publication Date
KR20070061916A true KR20070061916A (ko) 2007-06-14
KR100913459B1 KR100913459B1 (ko) 2009-08-25

Family

ID=36144774

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077010239A KR100913459B1 (ko) 2004-10-07 2005-10-06 픽셀 중심 위치 변위

Country Status (4)

Country Link
US (2) US7425966B2 (ko)
KR (1) KR100913459B1 (ko)
TW (1) TWI284290B (ko)
WO (1) WO2006041953A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110136059A (ko) * 2010-06-14 2011-12-21 삼성전자주식회사 3차원 영상 시스템에서 광선 추적 방법 및 장치

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7495722B2 (en) 2003-12-15 2009-02-24 Genoa Color Technologies Ltd. Multi-color liquid crystal display
US7425966B2 (en) * 2004-10-07 2008-09-16 Nvidia Corporation Pixel center position displacement
US7385604B1 (en) * 2004-11-04 2008-06-10 Nvidia Corporation Fragment scattering
WO2007060672A2 (en) * 2005-11-28 2007-05-31 Genoa Color Technologies Ltd. Sub-pixel rendering of a multiprimary image
US7804499B1 (en) * 2006-08-28 2010-09-28 Nvidia Corporation Variable performance rasterization with constant effort
US8547395B1 (en) * 2006-12-20 2013-10-01 Nvidia Corporation Writing coverage information to a framebuffer in a computer graphics system
US7876332B1 (en) 2006-12-20 2011-01-25 Nvidia Corporation Shader that conditionally updates a framebuffer in a computer graphics system
US7817165B1 (en) 2006-12-20 2010-10-19 Nvidia Corporation Selecting real sample locations for ownership of virtual sample locations in a computer graphics system
US8004522B1 (en) 2007-08-07 2011-08-23 Nvidia Corporation Using coverage information in computer graphics
US8040357B1 (en) * 2007-08-15 2011-10-18 Nvidia Corporation Quotient remainder coverage system and method
US8325203B1 (en) 2007-08-15 2012-12-04 Nvidia Corporation Optimal caching for virtual coverage antialiasing
US9058672B2 (en) * 2009-10-06 2015-06-16 Nvidia Corporation Using a pixel offset for evaluating a plane equation
CN102043557B (zh) * 2009-10-09 2013-04-24 禾瑞亚科技股份有限公司 位置侦测的方法与装置
CN102043521B (zh) 2009-10-09 2012-12-12 禾瑞亚科技股份有限公司 平行扫描的差动触控侦测装置及方法
US8957895B2 (en) * 2011-09-08 2015-02-17 Landmark Graphics Corporation Systems and methods for rendering 2D grid data
US20130257885A1 (en) * 2012-03-28 2013-10-03 Intel Corporation Low Power Centroid Determination and Texture Footprint Optimization For Decoupled Sampling Based Rendering Pipelines
US10068311B2 (en) 2014-04-05 2018-09-04 Sony Interacive Entertainment LLC Varying effective resolution by screen location by changing active color sample count within multiple render targets
US9710881B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Varying effective resolution by screen location by altering rasterization parameters
US10783696B2 (en) 2014-04-05 2020-09-22 Sony Interactive Entertainment LLC Gradient adjustment for texture mapping to non-orthonormal grid
US11302054B2 (en) 2014-04-05 2022-04-12 Sony Interactive Entertainment Europe Limited Varying effective resolution by screen location by changing active color sample count within multiple render targets
US9836816B2 (en) 2014-04-05 2017-12-05 Sony Interactive Entertainment America Llc Varying effective resolution by screen location in graphics processing by approximating projection of vertices onto curved viewport
US9652882B2 (en) 2014-04-05 2017-05-16 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
US9495790B2 (en) * 2014-04-05 2016-11-15 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping to non-orthonormal grid
US9710957B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Graphics processing enhancement by tracking object and/or primitive identifiers
US9659402B2 (en) 2015-06-26 2017-05-23 Intel Corporation Filtering multi-sample surfaces
WO2021154229A1 (en) * 2020-01-29 2021-08-05 Hewlett-Packard Development Company, L.P. Graphical element surface displacements based on distance functions
US11790593B2 (en) * 2020-03-13 2023-10-17 Advanced Micro Devices, Inc. Ray-tracing multi-sample anti-aliasing

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0319165B1 (en) 1987-12-04 1995-10-18 EVANS & SUTHERLAND COMPUTER CORPORATION System for using barycentric coordinates as for polygon interpolation
US5877771A (en) * 1996-07-12 1999-03-02 Silicon Graphics, Inc. Method and apparatus for supersampling based on the local rate of change in texture
US6816167B1 (en) * 2000-01-10 2004-11-09 Intel Corporation Anisotropic filtering technique
US7064771B1 (en) * 1999-04-28 2006-06-20 Compaq Information Technologies Group, L.P. Method and apparatus for compositing colors of images using pixel fragments with Z and Z gradient parameters
US6791569B1 (en) * 1999-07-01 2004-09-14 Microsoft Corporation Antialiasing method using barycentric coordinates applied to lines
GB9921777D0 (en) 1999-09-16 1999-11-17 Koninkl Philips Electronics Nv Method and apparatus for handling translucency in 3d graphics
US6633297B2 (en) * 2000-08-18 2003-10-14 Hewlett-Packard Development Company, L.P. System and method for producing an antialiased image using a merge buffer
JP3827535B2 (ja) * 2001-03-22 2006-09-27 京セラ株式会社 配線基板モジュール
US7081903B2 (en) * 2001-12-12 2006-07-25 Hewlett-Packard Development Company, L.P. Efficient movement of fragment stamp
US6768491B2 (en) * 2001-12-21 2004-07-27 Ati Technologies Inc. Barycentric centroid sampling method and apparatus
US6914609B2 (en) * 2002-02-28 2005-07-05 Sun Microsystems, Inc. Multiple scan line sample filtering
US7050068B1 (en) * 2003-12-02 2006-05-23 Nvidia Corporation Generation of jittered sub-pixel samples using programmable sub-pixel offsets
US7425966B2 (en) * 2004-10-07 2008-09-16 Nvidia Corporation Pixel center position displacement

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110136059A (ko) * 2010-06-14 2011-12-21 삼성전자주식회사 3차원 영상 시스템에서 광선 추적 방법 및 장치

Also Published As

Publication number Publication date
TW200622936A (en) 2006-07-01
KR100913459B1 (ko) 2009-08-25
US7576751B2 (en) 2009-08-18
US20070008336A1 (en) 2007-01-11
TWI284290B (en) 2007-07-21
WO2006041953A2 (en) 2006-04-20
US7425966B2 (en) 2008-09-16
US20060077209A1 (en) 2006-04-13
WO2006041953A3 (en) 2006-12-28

Similar Documents

Publication Publication Date Title
KR100913459B1 (ko) 픽셀 중심 위치 변위
US7403208B1 (en) Generation of jittered sub-pixel samples using programmable sub-pixel offsets
US7570266B1 (en) Multiple data buffers for processing graphics data
US7408553B1 (en) Inside testing for paths
US7982745B1 (en) Trilinear optimization for texture filtering
US7684641B1 (en) Inside testing for paths using a derivative mask
US7339594B1 (en) Optimized anisotropic texture sampling
US7586496B1 (en) Shorter footprints for anisotropic texture filtering
US7932914B1 (en) Storing high dynamic range data in a low dynamic range format
US7916155B1 (en) Complementary anti-aliasing sample patterns
EP1519319A2 (en) Method and apparatus for antialiased blending in image rendering
US10121276B2 (en) Infinite resolution textures
US20040012563A1 (en) Systems and methods of multi-pass data processing
US7256792B1 (en) Method and apparatus for sampling non-power of two dimension texture maps
US7038678B2 (en) Dependent texture shadow antialiasing
US8068118B1 (en) System and method for modifying a number of texture samples for anisotropic texture filtering
US7420557B1 (en) Vertex processing when w=0
US7782334B1 (en) Pixel shader-based data array resizing
US7271810B1 (en) Spread-compensated anisotropic texture sampling
EP1519317A1 (en) Apparatus and method for antialiasing based on z buffer or normal vector information
US7466322B1 (en) Clipping graphics primitives to the w=0 plane
US7605820B1 (en) Creating texture data outside of a chart boundary
US7593018B1 (en) Method and apparatus for providing explicit weights for texture filtering
US7372468B1 (en) Anisotropic texture filtering with a modified number of texture samples
US7369136B1 (en) Computing anisotropic texture mapping parameters

Legal Events

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

Payment date: 20120727

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130723

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140722

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160801

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170811

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180801

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20190801

Year of fee payment: 11