KR20200137985A - 원근(투영) 보간 함수들의 최적화된 연산 - Google Patents

원근(투영) 보간 함수들의 최적화된 연산 Download PDF

Info

Publication number
KR20200137985A
KR20200137985A KR1020200053991A KR20200053991A KR20200137985A KR 20200137985 A KR20200137985 A KR 20200137985A KR 1020200053991 A KR1020200053991 A KR 1020200053991A KR 20200053991 A KR20200053991 A KR 20200053991A KR 20200137985 A KR20200137985 A KR 20200137985A
Authority
KR
South Korea
Prior art keywords
primitive
interpolation
linear
value
homogeneous coordinate
Prior art date
Application number
KR1020200053991A
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
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20200137985A publication Critical patent/KR20200137985A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • 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
    • G06T3/4007Interpolation-based scaling, e.g. bilinear interpolation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Abstract

그래픽 파이프 라인은 GPU 하드웨어가 선형-원근 보간을 수행하도록 프로그래밍 되거나 설정되어 있는 경우, 셰이더 프로그램에서 선형-원근 보간 기술이 지정된 경우 프리미티브의 각 꼭지점의 동차 좌표가 미리 결정된 임계값 1 이내인지 여부를 결정하고, 미리 결정된 임계값 1 이내에 있는 프리미티브의 각 꼭지점의 동차 좌표에 기반하여 선형 보간 기술을 사용하여 요소의 하나 이상의 속성을 결정함으로써, 보간 계산에 사용되는 역, 곱 또는 합 연산들의 횟수를 줄일 수 있다.

Description

원근(투영) 보간 함수들의 최적화된 연산{OPTIMIZED COMPUTATION OF PERSPECTIVE INTERPOLANTS}
본 발명은 그래픽 처리 장치들(GPUs)에 관한 것이다. 더 상세하게는 GPU 하드웨어가 선형-원근 보간을 수행하도록 프로그래밍 된 경우, 보간 연산들을 위하여 사용되는 역, 곱 및/또는 합 연산들의 횟수를 줄일 수 있는 시스템 및 방법에 관한 것이다.
픽셀/프래그먼트 셰이더(pixel/fragment shader) 프로그램들은 일반적으로 “속성”으로 알려진 복수의 입력 데이터 요소들을 처리한다. 단일 샘플에 대하여 실행되는 각 셰이더 프로그램 스레드(thread)는 더 적은 수의 서로 다른 속성들 또한 처리할 수 있으나, 대개 16개 이상의 서로 다른 속성들을 처리할 수 있다. 속성들은 보간 연산들에 의하여 처리될 수 있다. 일반적으로, 각 요소는 다른 요소들과 독립적일 수 있다.
대부분의 응용 프로그래밍 인터페이스(Application Programming Interface, API)들의 경우, 픽셀/프래그먼트 셰이더 데이터의 보간은 세가지 보간 모드(플랫 보간 모드, 선형 보간 모드 및 선형-원근 보간 모드)들 중 하나를 사용할 수 있다. 플랫 보간 모드가 사용되기 위하여, 주어진 프리미티브(primitive)의 모든 샘플들에 대한 모든 값들이 동일해야 한다. 선형 보간 모드가 사용되기 위하여, 주어진 프리미티브의 모든 샘플들에 대한 모든 값들이 마치 평면에 놓여 있는 것처럼 연산되어야 한다. 선형-원근 보간 모드가 사용되기 위하여, 주어진 프리미티브의 모든 샘플들에 대한 모든 값들이 평면 방식 및 “원근 뒤틀림(perspective warping)”으로 알려진 원근 보정에 의하여 연산되어야 한다. 연산 비용이 가장 많이 드는 보간 모드는 선형-원근 보간 모드이고, 원근 보정에 대한 연산들은 선형이 아니다.
그래픽 파이프라인에서, 이미지 내의 위치 정보는 4개의 좌표(X(이미지에서 가로 위치), Y(이미지에서 세로 위치), Z(이미지에서 눈으로부터의 깊이 또는 거리), W(동차좌표, homogeneous coordinate))들을 이용하여 표현될 수 있다. 동차좌표는 원근-보정 보간을 수행하는데 사용될 수 있다. 이미지에서 프리미티브의 각 꼭지점은 위치(X, Y, Z, W) 뿐만 아니라 꼭지점과 관련된 다른 속성들에 대한 0이상의 값들을 가진다.
일반적으로 사용되는 응용 프로그래밍 인터페이스는 응용 프로그래머에게 선형 보간 모드 옵션을 제공하지 않는다. 선형 보간을 제공하기 위하여, 프로그래머는 선형-원근 모드를 선택하고, 프리미티브의 모든 꼭지점들에 대한 W 좌표의 값들을 1.0으로 설정한다. 그렇게 하면 선형 보간이 제공될 수 있으나, 선형-원근 보간과 관련된 모든 연산 비용을 사용한다. 전체 선형-원근 보간의 최대 단일 비용은 1/W의 보간, 역 과정을 이용하여 1/W에서 W의 후속 연산에 뒤따르는 W와 선형 보간 결과의 곱일 수 있다.
전형적인 GPU는 보간 및 특히 역 연산들을 위하여 제공되는 제한된 영역을 가질 수 있다. 결과적으로, 보간을 위한 역, 곱하기 또는 나누기 연산들은 병목 현상을 야기할 수 있다.
본 발명의 목적은 GPU 하드웨어가 선형-원근 보간을 수행하도록 프로그래밍 된 경우, 보간 연산들을 위하여 사용되는 역, 곱 및/또는 합 연산들의 횟수를 줄일 수 있는 시스템 및 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 그래픽 파이프라인에서 렌더링되는 프리미티브의 요소의 적어도 하나의 속성을 보간하는 방법은 상기 프리미티브를 렌더링하기 위하여 지정된 선형-원근 보간 기술에 기반하여, 상기 요소의 동차좌표가 미리 결정된 임계값 1 이내에 있는지 여부를 판단하는 단계, 상기 미리 결정된 임계값 1 이내에 있는 상기 요소의 상기 동차좌표에 기반하여, 선형 보간 기술을 사용하여 상기 요소의 상기 적어도 하나의 속성을 보간하는 단계 및 상기 미리 결정된 임계값 1을 초과하는 상기 요소의 상기 동차좌표에 기반하여, 상기 선형-원근 보간 기술을 사용하여 상기 요소의 상기 적어도 하나의 속성을 보간하는 단계를 포함할 수 있다. 하나의 실시 예에서, 상기 요소의 상기 동차좌표가 상기 미리 결정된 임계값 1 이내에 있는지 여부를 판단하는 단계는, 상기 프리미티브의 각 꼭지점들의 동차좌표가 1과 같은지 여부를 판단하는 단계를 더 포함할 수 있다. 다른 실시 예에서, 상기 요소의 상기 적어도 하나의 속성은 상기 프리미티브의 꼭지점과 관련될 수 있다. 또 다른 실시 예에서, 상기 프리미티브는 삼각형 및 선 중 적어도 하나일 수 있다.
본 발명의 실시 예는 입력부, 비교기 및 보간기를 포함할 수 있는 그래픽 파이프라인 스테이지를 제공한다. 상기 입력부는 프리미티브의 적어도 하나의 속성을 수신할 수 있다. 상기 비교기는 상기 프리미티브를 렌더링 하기 위하여 지정된 선형-원근 보간 기술에 기반하여, 동차좌표의 값들이 미리 결정된 임계값 1 이내에 있는지 여부를 판단하기 위해 상기 프리미티브의 상기 적어도 하나의 속성의 상기 동차좌표의 값을 1과 비교할 수 있다. 상기 보간기는 상기 미리 결정된 임계값 1 이내에 있는 것으로 판단되는 상기 동차좌표의 값에 기반하여 선형 보간 기술을 사용하여 상기 프리미티브의 상기 적어도 하나의 속성을 보간하고, 상기 미리 결정된 임계값 1을 초과하는 것으로 판단되는 상기 동차좌표의 값에 기반하여 선형-원근 보간 기술을 사용하여 상기 프리미티브의 상기 적어도 하나의 속성을 보간할 수 있다. 하나의 실시 예에서, 상기 비교기는 상기 프리미티브를 렌더링하기 위하여 지정된 상기 선형-원근 보간 기술에 기반하여, 상기 프리미티브의 상기 동차좌표의 값이 1과 상이한 상수인지 여부를 추가로 판단할 수 있고, 상기 보간기는 상기 1과 상이한 상수로 판단된 값에 기반하여, 상기 선형 보간 기술을 사용하여 상기 프리미티브의 상기 적어도 하나의 속성을 추가로 보간하고, 상기 1과 상이한 상수를 제외한 상기 동차좌표의 값에 기반하여 상기 선형-원근 보간 기술을 사용하여 상기 프리미티브의 상기 적어도 하나의 속성을 보간할 수 있다. 다른 실시 예에서, 상기 비교기는 상기 프리미티브의 상기 적어도 하나의 속성에 대한 평면 방정식의 계수들이 일정한지 여부를 추가로 판단할 수 있고, 상기 보간기는 일정하지 않은 것으로 판단된 상기 평면 방정식의 상기 계수들에 기반하여 상기 프리미티브의 상기 적어도 하나의 속성을 추가로 보간하고, 일정한 것으로 판단된 상기 평면 방정식의 상기 계수들에 기반하여 상기 프리미티브의 상기 적어도 하나의 속성을 보간하는 것을 생략할 수 있다.
본 발명의 실시 예는 그래픽 파이프라인 스테이지 및 셰이더 유닛을 포함하는 그래픽 처리 장치(GPU)를 제공할 수 있다. 상기 그래픽 파이프라인 스테이지는 입력부, 비교기 및 보간기를 포함할 수 있다. 상기 입력부는 프리미티브의 적어도 하나의 속성을 수신할 수 있다. 상기 비교기는 상기 프리미티브를 렌더링하기 위하여 지정된 선형-원근 보간 기술에 기반하여, 상기 프리미티브의 동차좌표의 값이 1과 상이한 상수인지 여부를 판단할 수 있다. 상기 보간기는 상기 1과 상이한 상수로 판단되는 상기 동차좌표의 값에 기반하여 선형 보간 기술을 사용하여 상기 프리미티브의 상기 적어도 하나의 속성을 보간하고, 상기 1과 상이한 상수를 제외한 상기 동차좌표의 값에 기반하여 상기 선형-원근 보간 기술을 사용하여 상기 프리미티브의 상기 적어도 하나의 속성을 보간할 수 있다. 상기 셰이더는 상기 보간기의 출력을 수신하고, 상기 프리미티브를 렌더링할 수 있다. 하나의 실시 예에서, 상기 비교기는 프리미티브를 렌더링하기 위하여 지정된 선형-원근 보간 기술에 기반하여, 상기 동차좌표의 값이 상기 미리 결정된 임계값 1 이내에 있는지 여부를 판단하기 위해 상기 프리미티브의 상기 적어도 하나의 속성의 상기 동차좌표의 값을 1과 추가로 비교하고, 상기 보간기는 상기 미리 결정된 임계값 1 이내에 있는 것으로 판단되는 상기 동차좌표의 값에 기반하여 상기 선형 보간 기술을 사용하여 상기 프리미티브의 상기 적어도 하나의 속성을 추가로 보간하고, 상기 미리 결정된 임계값 1을 초과하는 것으로 판단되는 상기 동차좌표의 값에 기반하여 상기 선형-원근 보간 기술을 사용하여 상기 프리미티브의 상기 적어도 하나의 속성을 보간할 수 있다. 다른 실시 예에서, 상기 비교기는 상기 프리미티브의 상기 적어도 하나의 속성에 대한 평면 방정식의 계수들이 일정한지 여부를 추가로 판단하고, 상기 보간기는 일정하지 않은 것으로 판단된 상기 평면 방정식의 상기 계수들에 기반하여 상기 프리미티브의 상기 적어도 하나의 속성을 추가로 보간하고, 일정한 것으로 판단된 상기 평면 방정식의 상기 계수들에 기반하여 상기 프리미티브의 상기 적어도 하나의 속성을 보간하는 것을 생략할 수 있다.
본 발명에 따른 시스템 및 방법에 따르면, 셰이더 프로그램에서 선형-원근 보간 기술이 지정된 경우 프리미티브의 각 꼭지점의 동차 좌표가 미리 결정된 임계값 1 이내인지 여부를 결정하고, 미리 결정된 임계값 1 이내에 있는 프리미티브의 각 꼭지점의 동차 좌표에 기반하여 선형 보간 기술을 사용하여 요소의 하나 이상의 속성을 결정함으로써, 보간 계산에 사용되는 역, 곱 또는 합 연산들의 횟수를 줄일 수 있다.
다음 섹션(section)에서, 본 명세서에 개시된 본 발명의 양상이 도면에 도시된 예시적인 실시 예를 참조하여 설명될 것이다.
도 1a는 사람의 눈으로 볼 수 있는3D 공간에서의 예시적인 객체를 도시한다.
도 1b는 2D 스크린 상에 투영된 도 1a의 예시적인 객체를 도시한다.
도 2a는 관측자를 위한 뷰 프러스텀(미도시) 내에서 관측자로부터 멀어지도록 기울어진 예시적인 평면 객체의 사시도를 도시한다.
도 2b는 2D 스크린 상(미도시)에 투영된 도 2a의 예를 도시한다.
도 3은 본 발명에 따른 플랫 W 최적화를 수행할 수 있는 예시적인 GPU의 보간 파이프라인 부분의 블록도를 도시한다.
도 4는 본 발명에 따른 플랫 W 최적화를 수행하도록 구성되는 보간 유닛의 예시적인 실시 예의 블록도를 도시한다.
도 5는 본 발명에 따른 CCV 유닛에 대한 입력에서, 동종 계수 W가 1과 같거나 거의 동일한지 여부를 효율적으로 검출할 수 있는 예시적인 위치를 보여주는 블록도를 도시한다.
도 6은 본 발명에 따른 셋업 유닛 내에서, 동종 계수 W가 1과 같거나 거의 동일한지 여부를 효율적으로 검출할 수 있는 예시적인 위치를 보여주는 블록도를 도시한다.
도 7은 본 발명에 따라, 예시적으로 셰이더 프로그램에 선형-원근 보간 기술이 지정된 경우, 그래픽 파이프라인에서 렌더링되는 프리미티브와 관련된 요소의 하나 이상의 속성들을 보간하는 방법의 순서도를 도시한다.
도 8은 본 발명에 따라 사용될 수 있는, 동종 계수 W가 1과 같거나 거의 동일한지 여부에 대한 판단 프로세스 이후의 최적화의 예시적인 실시 예의 순서도를 도시한다.
도 9는 예를 들어, GPU 하드웨어가, 예를 들어, 선형-원근 보간을 수행하도록 프로그래밍 된 경우, 보간 연산들에 사용되는 역, 곱하기 또는 나누기 연산의 횟수를 줄일 수 있는 그래픽 파이프라인을 포함하는 전자 장치를 도시한다.
이하의 상세한 설명에서, 다양한 구체적인 세부 사항들은 본 발명의 철저한 이해를 제공하기 위하여 제시된다. 그러나, 본 발명의 사상은 이러한 구체적인 세부 사항들 없이도 통상의 기술자에 의하여 이해될 것이다, 다른 예에서, 알려진 방법들, 절차들, 구성들 및 회로들은 본문을 모호하게 하지 않기 위하여 상세히 설명되지 않는다.
상세한 설명에서 “하나의 실시 예” 또는 “일 실시 예”를 참조하는 것은 실시 예와 연관된 특정한 특징, 구조 또는 특성이 본문의 적어도 하나의 실시 예에 포함될 수 있음을 의미한다. 즉, 본문의 다양한 위치에서 사용되는 “하나의 실시 예에서” 또는 “일 실시 예에서” 또는 “하나의 실시 예에 따라” 또는 유사한 의미를 갖는 다른 표현들은 동일한 실시 예를 참조하는 것을 요구하지 않는다. 더욱이, 특정한 특징들, 구조들 또는 특성들은 적절한 방식으로 하나 또는 그 이상의 실시 예들에서 조합될 수 있다. 이와 관련하여, 본 명세서에서 사용된 바와 같이 “예시적인”이라는 단어는 “예, 사례 또는 예시로서 제공하는”을 의미한다. 본 명세서에서 “예시적인”것으로 설명된 임의의 실시 예는 다른 실시 예보다 반드시 바람직하거나 유리한 것으로 해석되지 않아야 한다. 게다가, 특정한 특징들, 구조들 또는 특성들은 적절한 방식으로 하나 또는 그 이상의 실시 예들에서 조합될 수 있다. 또는, 본문에서 언급된 내용에 따라, 단수 용어는 복수의 형태를 포함하고, 복수 용어는 단수 형태를 포함할 수 있다. 유사하게, 하이픈으로 연결된 용어들(예를 들어, “two-dimensional”, “pre-determined”, “pixel-specific”등)은 하이픈이 없는 용어들(“two dimensional”, “predetermined”, “pixel specific”등)로 상호 변경(interchangeably)되어 사용될 수 있다. 대문자로 기재된 용어들(“Counter Clock”, “Row Select”, “PIXOUT”등)은 대문자가 아닌 용어들(“counter clock”, “row select”, “pixout”등)로 상호 변경되어 사용될 수 있다. 이러한 상호 변경은 서로 모순되는 것으로 고려되지 않는다.
구성 도면들을 포함하는 다양한 도면들은 오직 설명의 목적을 위하여 본문에서 언급되고, 도시되며, 정량화되지 않는다. 유사하게, 다양한 파형들 및 타이밍도들은 단순히 설명의 목적을 위하여 도시된다. 예를 들어, 일부 구성 요소의 치수는 명확성을 위하여 다른 구성 요소에 비해 과장될 수 있다. 또한, 적절한 것으로 간주되는 경우, 대응하는 및/또는 유사한 요소들을 나타내기 위하여 도면들에서 참조 번호가 반복되었다.
본 발명의 개념의 발명의 설명에 사용된 용어들은 일부 실시 예들을 기술하기 위한 목적으로만 사용되는 것이며, 본 발명의 장치와 방법으로 한정하는 의도로 사용되지 않는다. 문맥상 명백히 다르게 지시하지 않는 한 단수 형태는 본 발명의 개념의 설명 및 부가된 청구항에 사용될 때, 복수의 형태를 포함하는 의도로 사용된 것으로 이해되어야 한다. 또한, “포함하는” 및/또는 “포함하며”의 용어가 본 명세서에 사용되는 경우, 기술된 특징, 숫자, 단계, 동작, 구성, 및/또는 부품들의 존재를 명기하는 것이며, 이들의 하나 또는 그 이상의 다른 특징, 숫자, 단계, 동작, 구성, 및/또는 그룹의 존재 또는 부가를 배제하지 않는 것으로 이해되어야 한다.
“제 1”, “제 2”와 같은 용어들은 앞서 설명된 구성에 대한 라벨로써 사용되고, 별도의 정의가 없는 한 특정한 순서(예를 들어, 공간적, 시간적, 논리적 등)를 의도하는 것은 아니다. 더욱이, 동일한 참조 번호들은 동일하거나 유사한 기능을 갖는 부분들, 구성들, 블록들, 회로들, 유닛들, 또는 모듈들을 지칭하기 위하여 둘 이상의 도면들에 걸쳐서 사용될 수 있다. 그러나, 이러한 사용은 단순히 설명의 간결성 및 편의를 위한 것이며, 이러한 구성들 및 유닛들의 구성 또는 구조적인 세부 사항들은 모든 실시 예들 또는 공통적으로 참조되는 부분들/모듈들에서 동일한 것으로 의도되지 않으며, 단순히 본 발명의 일부 실시예를 구현하기 위한 것이다.
다르게 정의되지 않는 한, 본 명세서에서 사용되는 모든 용어들(기술적 그리고 과학적 용어들을 포함하는)은 본 발명이 속한 기술 분야에서 통상의 기술자에 의해 일반적으로 이해되는 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의된 이러한 용어들은 본 명세서에서 그들의 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의되지 않는 한 이상화되거나 지나치게 형식적으로 해석되지 않아야 한다.
본 명세서에서 사용되는 “모듈”이라는 용어는 모듈과 관련하여 본 명세서에 기술된 기능을 제공하도록 구성된 소프트웨어, 펌웨어 및/또는 하드웨어의 조합을 지칭한다. 소프트웨어는 소프트웨어 패키지, 코드 및/또는 명령어 세트 또는 명령어들로서 구현될 수 있으며, 본 명세서에 기술된 임의의 구현에서 사용된 “하드웨어”라는 용어는 예로서 단일의 또는 임의의 조합으로의 하드 와이어드 회로, 프로그래머블 회로, 상태 머신 회로 및/또는 프로그래머블 회로에 의하여 실행되는 명령어들을 저장하는 펌웨어를 포함할 수 있다. 모듈들은 예로서 집합적 또는 개별적으로 보다 큰 시스템의 일부를 형성하는 회로, 집적 회로(IC), 시스템 온-칩(SoC) 등 구현될 수 있으나, 이에 한정되지 않는다. 본 명세서에 개시된 다양한 구성들 및/또는 기능 블록들은 소프트웨어, 펌웨어 및/또는 다양한 구성들 및/또는 기능 블록들과 관련하여 본 명세서에 기술된 기능을 제공하는 하드웨어를 포함하는 모듈들로서 구현될 수 있다.
본 명세서에 개시된 발명은 GPU 하드웨어가 선형-원근(투영) 보간(linear-perspective interpolation)을 수행하도록 프로그래밍 된 경우, 보간 연산들을 위해 사용되는 역(reciprocal), 곱(multiply) 및/또는 합(add) 연산들의 횟수를 줄일 수 있는 플랫 W 최적화(flat W optimization)를 제공한다. API를 통해 선형-원근 보간이 지정된 경우 선형 보간이 사용될 수 있는 조건이 감지될 수 있고, 연산들은 선형 연산들이 사용되도록 수정될 수 있다. 본 명세서에서 개시된 최적화가 사용될 수 있는지 여부를 결정하는 방법은 프리미티브의 꼭지점들의 W값들이 모두 1.0인지 여부를 확인하는 것이다. 본 명세서에서 개시된 최적화가 사용될 수 있는지 여부를 결정하는 또 다른 방법은 W에 대응하는 프리미티브의 꼭지점들로부터 연산되는 W 평면 방정식 계수들 또는 무게 중심 인자들이 1.0인지 여부를 확인하는 것이다. 본 명세서에 개시된 최적화의 적용은 GPU내의 공간을 절약할 수 있고/있거나 그래픽 파이프라인의 성능을 향상시킬 수 있다. 또한, 에너지가 절약될 수 있고, PPA(Power, Performance, and Area)가 더욱 최적화될 수 있다.
본 명세서에 개시된 발명은 그래픽 파이프라인의 몇몇 위치들 중 하나에 구현될 수 있다. 하나의 예시적인 실시 예에서, 최적화는 실제로 대부분의 보간 연산들을 수행하는 마지막 보간 단계에서 구현될 수 있다.
데이터를 보간하기 위하여 주로 두 가지 알고리즘(평면 방정식 보간 알고리즘 및 무게 중심 보간 알고리즘)이 사용된다. 두 알고리즘들은 일반적으로 비슷한 연산들을 포함하고, 동일한 결과들을 생성한다. 이하 설명은 평면 방정식 보간에 중점을 두지만, 같은 원리가 무게 중심 보간에 적용된다. 사람의 눈으로부터 관측될 수 있는 3차원(3D) 공간에서 도 1a의 예시적인 객체(100)를 고려한다. 이러한 관측은 도 1a에 도시된 바와 같이 뷰 프러스텀(101)으로 알려져 있다. 예를 들어, 객체(100)가 3D 공간에서 관측자로부터 멀어지도록(또는 관측자 쪽으로) 기울어진 경우, 시점(eye view point)에서 객체(100)의 형상은 객체의 위치에서의 이미지 데이터와 같이 변형된다. 도 1b에서 도시된 바와 같이 객체(100)가 2차원(2D) 스크린(102) 상에 투영되는 경우, 객체(100)를 나타내는 데이터는 원근 뒤틀림이라고 불리는 3D 틸팅(tilting)을 고려한 방식으로 연산되어야 한다. 데이터는 원근 보정된 방식으로 연산될 수 있다.
도 2a는 관측자에 대한 뷰 프리스텀(미도시) 내에서 관측자로부터 멀어지게 기울어진 평면 객체(200)의 투시도를 도시한다. 예를 들어, 객체(200)와 관측자의 시점(eye point)이 수직인 경우, 도 2b에 도시된 바와 같이 평면 객체(200)에 대한 표면(201)에서의 데이터는 그것의 표면에 걸쳐서 선형(평면) 보간될 수 있다.
본 명세서에서 개시된 발명에 따르면, 선형 보간(linear interpolation)은 선형 및 선형-원근 보간 양쪽 모두를 위한 보간 연산들에 사용될 수 있다. 먼저 선형 보간이 설명된 다음, 선형-원근 보간을 수행하기 위하여 선형 보간에 대한 수정이 이루어진다.
[수학식1]은 선형 보간에서 사용될 수 있는 평면 방정식을 나타낸다. 속성
Figure pat00001
(
Figure pat00002
)의 값은 [수학식1]의 3개의 평면 방정식 계수들로부터 연산될 수 있다.
Figure pat00003
[수학식1]에서 계수
Figure pat00004
Figure pat00005
차원에서 속성
Figure pat00006
에 대한 기울기(경사(도), gradient)이다. 계수
Figure pat00007
Figure pat00008
차원에서 속성
Figure pat00009
에 대한 기울기이고, 계수
Figure pat00010
는 (x, y) = (0, 0)에서 속성
Figure pat00011
의 값이다.
(0, 0)에서 계수
Figure pat00012
의 값이 무한대, “숫자가 아닌(NaN)”IEEE 부동 소수점 또는 보간 하드웨어의 동적 범위를 벗어나는 것과 같이 적합한 숫자가 아닌 경우, [수학식1]은 옳은 결과들이 제공되도록 수정될 수 있다. 시드(seed) 위치는 일반적으로 꼭지점 중 하나와 같이 프리미티브 내부에 있도록 선택된다. [수학식1]은 [수학식2]와 같이 수정될 수 있다. 수정된 [수학식2]에서 계수
Figure pat00013
는 시드 위치에서 속성의 값이다.
Figure pat00014
[수학식2]에서
Figure pat00015
는 시드 위치의
Figure pat00016
좌표이고,
Figure pat00017
는 시드 위치의
Figure pat00018
좌표이다.
계수들은 프리미티브 꼭지점 위치들 및 보간된 속성 값들로부터 연산될 수 있다. 예를 들어, 삼각형(대부분의 GPU에서 렌더링되는 가장 기본적인 프리미티브)에는 세 개의 꼭지점들이 사용된다. 평면 방정식 계수들
Figure pat00019
(및 무게 중심 등가물들)의 연산은 잘 알려져 있으며, 여기에서 자세히 설명하지 않는다.
선형-원근 보간 알고리즘은 평면 방정식 계수들
Figure pat00020
을 연산하는데 사용되는 속성 값들을 수정하고 평면 방정식들이 평가된 후 수정을 적용함으로써, [수학식1] 및 [수학식2]의 선형 보간을 변경할 수 있다. 예를 들어, 선형 보간 식들 [수학식1] 및 [수학식2]을 수정하기 위하여 이하 프로세스, 또는 단계들이 사용될 수 있다.
첫번째 단계로, 각 꼭지점에서
Figure pat00021
좌표로 꼭지점 속성 값들을 나눔으로써, 꼭지점 속성 값들은 평면 방정식 계수들의 연산 전에 수정될 수 있고, 이를 사전 보간 보정 연산(pre-interpolation correction computation)이라고 한다. 두번째 단계로,
Figure pat00022
는 선형으로 보간될 수 있고(
Figure pat00023
은 평면), 각 보간 위치
Figure pat00024
에서 역 연산이 수행될 수 있다. 세번째 단계로, 샘플 포인트에서
Figure pat00025
를 곱하는 사후-보간 보정 연산(post-interpolation correction computation)에 의하여, 각 샘플 포인트에서 보간의 결과는 수정될 수 있다.
Figure pat00026
의 역(즉,
Figure pat00027
)은 두번째 단계 동안 각 꼭지점에서 연산될 수 있다. 원근 보정으로 보간되는 꼭지점들에서 속성 값들에
Figure pat00028
를 곱하면 꼭지점들에서
Figure pat00029
값들을 도출할 수 있고, 평면 방정식들은 원래의 꼭지점
Figure pat00030
값들이 아닌
Figure pat00031
값들로부터 연산된다. 따라서,
Figure pat00032
는 사실상 선형 보간을 사용하여 보간될 수 있다.
Figure pat00033
는 평면이 아닐 수 있고, 사실상 상술한 바와 같이 평면인
Figure pat00034
을 선형 보간함으로써 연산된다.
Figure pat00035
는 전형적으로 꼭지점들에서 깊이 값(
Figure pat00036
값들)들로부터 연산될 수 있다.
래스터화(rasterization)는 렌더링되고 있는(즉, 생성되고 있는) 이미지에서 샘플 위치들을 생성한다. 샘플 위치들은 프리미티브 꼭지점들의 위치들에 기반한 프리미티브의 경계 내에 있다. 프리미티브의 레스터화 동안, 프리미티브의 꼭지점들의 개수보다 더 많은 샘플 위치들이 생성될 수 있다. 또한, 각 샘플 위치에 대응하는 속성들은 보간된다. 예를 들어, 세 개의 꼭지점들을 가지는 삼각형으로 정의될 수 있는 프리미티브는 프리미티브로부터 생성된 10, 50, 1000 또는 그 이상의 샘플 위치들(일반적으로 픽셀들로 불리는)을 커버할 수 있다.
상술된 선형-원근 보간들을 수행하기 위한 선형 보간을 수정하는 첫번째 단계는(즉, [수학식1] 및 [수학식2]를 수정하는), 그 이익이 선형 보간을 수정하는 두번째 단계에서 최적화에 의하여 제공되는 이익의 약 5%에 불과하더라도, 선택적으로 최적화될 수 있다. 이익들의 차이는 두번째 단계와 관련하여 발생하는 레스터화에 의한 확장에 기반할 수 있다. 그러므로, 선형 보간을 수정하는 첫번째 단계를 최적화하는 비용/이익은 제한적일 수 있고, 첫번째 단계동안 최적화의 적용은 두번째 단계동안 최적화의 적용에 영향을 미치지 않을 수 있다. 첫번째 단계의 최적화가 선택적인 것으로 간주될 수 있는 또 다른 이유는 첫번째 단계에서 평면 방정식 계수들을 연산하기 전에 속성들에
Figure pat00037
을 미리 곱하고
Figure pat00038
이라면
Figure pat00039
이기 때문이다. 속성들에 1.0을 미리 곱하면 평면 방정식 계수들은 변경되지 않는다. 그럼에도 불구하고, 첫번째 단계는 최적화될 수 있으며, 이 경우 최적화는 각 프리미티브의 각 꼭지점마다 한 번씩 수행될 수 있다. 수정의 두번째 단계의 최적화는 최대의 이익들을 제공할 수 있다. 수정의 두번째 단계에서 최적화는 각 프리미티브에 대하여 반복적으로 수행될 수 있다.
본 명세서에 개시된 발명에 따른 최적화를 허용하는 조건의 탐지 및 최적화의 구현은 그래픽 파이프라인의 다른 위치에서 수행될 수 있고, 하드웨어, 소프트웨어 또는 하드웨어 및 소프트웨어의 조합으로 구현될 수 있다. 예를 들어, 탐지 및 구현은 CCV(Clip-Cull-Viewport) 스테이지 또는 유닛, 또는 프리미티브 셋업(SU) 스테이지 또는 유닛과 같은 그래픽 파이프라인에서 비교적 초기 단계에 수행될 수 있다. 조건 탐지 및 구현은 또한 마지막 보간 및 사후-보정 연산(post-correction computation)들이 수행되는 보간 파이프라인 스테이지 또는 유닛에서 수행될 수 있다. 본 명세서에 개시된 최적화를 이용하는 것의 잠재적인 이익 대부분은 보간 파이프라인 단계에 있을 수 있다.
평면 방정식 계수들(또는 무게 중심 인자들)을 연산하는 설정 연산들 전(즉, 그래픽 파이프라인에서 비교적 초기)에 최적화 조건이 감지되면, 꼭지점들의
Figure pat00040
값들은 프리미티브의 꼭지점들의
Figure pat00041
값들이 정확히 1.0인지 여부를 결정하기 위하여 테스트될 수 있다. 대안적으로, 프리미티브의 꼭지점들의
Figure pat00042
값은 1.0 + 0.001과 같은 미리 결정된 임계값 1 이내에 있는 것으로 결정될 수 있다. 프리미티브의 모든 꼭지점들의
Figure pat00043
값이 1과 같다면(또는 미리 결정된 임계값 1 이내에 있는 경우), 선형-원근 보간 연산들은 요구되지 않으며 본 명세서에 개시된 최적화가 적용될 수 있다.
평면 방정식 계수들이 연산된 후(즉, 그래픽 파이프라인에서 비교적 나중)에 최적화 조건이 감지되면, 평면 방정식 계수들(또는 무게 중심 인자들)은 속성의
Figure pat00044
값이 정확히 1.0인지 여부를 결정하기 위하여 테스트될 수 있다. 즉, 평면 방정식의 계수들
Figure pat00045
Figure pat00046
는 0.0(또는 미리 결정된 임계값 이내)으로 결정될 수 있고, 계수
Figure pat00047
는 그것이 정확히 1.0(또는 미리 결정된 임계값 이내)인지 여부를 결정하기 위하여 테스트될 수 있다. 일 실시 예에서, 계수들
Figure pat00048
Figure pat00049
에 대한 미리 결정된 임계값은 +0.001일 수 있고, 계수
Figure pat00050
에 대한 미리 결정된 임계값은 +0.001일 수 있다.
그래픽 파이프라인 아키텍처에서 다중 스테이지는 본 명세서에 개시된 최적화로부터 이익을 얻을 수 있다. 예를 들어, CCV 유닛은 줄어든 선형-원근 보간 연산 작업과 함께 대응하는 전력 감소로부터 이익을 얻을 수 있다. 셋업(SU) 유닛은 줄어든 연산 작업 및 대응하는 전력 감소로부터 이익을 얻을 수 있다. 보간(IPA) 유닛은 연산 작업을 줄일 수 있다(전력 감소, 성능 향상).
도 3은 본 명세서에 개시된 발명에 따라 플랫 W 최적화를 구현할 수 있는 GPU(300)의 보간 파이프라인 부분의 블록도를 도시한다. 도 3에 도시된 GPU(300)의 예시적인 실시 예의 부분은 PE 쿼드(Processing Element QUAD, 301) 및 하드웨어 보간기 유닛(Hardware Interpolator(HWInterp) Unit, 310)을 포함할 수 있다. PE 쿼드(301)는 하나 이상의 PE들(Processing Elements, 302a, 302b, 302c, 302d), 하나 이상의 LSU들(Load-Store Units, 303a, 303b) 및 하나 이상의 WSQ들(WARP Sequencers, 304)을 포함할 수 있다. 하드웨어 보간기 유닛(310)은 SPC(Shader Processing Controller, 311), 하나 이상의 RASTZ 유닛들(Raster and Z Units, 312), 하나 이상의 보간 유닛들(Interpolation(IPA) Units, 313a, 313b) 및 하나 이상의 보간 셋업 유닛들(Interpolation Setup(ISetup) Units, 314)을 포함할 수 있다. SPC(311)는 하나 이상의 PSC들(Pixel Shader Constructors, 315) 및 하나 이상의 WS들(WARP Schedulers, 316)을 포함할 수 있다. 도 3에 도시된 보간 파이프라인의 부분을 형성하는 다양한 요소들은 모듈인 것으로 이해될 수 있으며, 모듈들은 요소 또는 모듈과 관련하여 본 명세서에서 기술된 기능을 제공하도록 구성된 소프트웨어, 펌웨어 및/또는 하드웨어의 임의의 조합일 수 있다.
일반적으로, 보간 동작을 위한 제어 흐름은 다음과 같다. 하나의 실시 예에서, RASTZ 유닛(312)은 픽셀들의 쿼드들(quads of pixels)을 X, Y 좌표들, 픽셀 또는 샘플 마스크들, 프리미티브 ID들, 프리미티브 및 드로우 엔드(draw end) 정보와 같은 정보와 함께 SPC(311)의 PSC(315)로 전송한다. 하나의 실시 예에서, PSC(315)는 예로서, 8개의 쿼드들을 포함하는 PS(Pixel Shader) 워프(warp)를 구성하고, WS(316)로의 요청을 생성할 수 있다. WS(316)는 워프 ID를 할당하고, PS 워프에 대한 다른 제어 정보를 제공할 수 있으며, 할당을 PSC(315)로 다시 전달한다. 또한, WS(316)는 PE 쿼드(301)의 WSQ(304)에 실행을 위한 워프를 준비하도록 통지할 수 있다. PSC(315)는 픽셀 쿼드에 대한 워프 ID, X, Y 좌표들, 마스크들 및 프리미티브 정보를 예로서, 제 1 보간 유닛(313a) 또는 제 2 보간 유닛(313b)로 전달할 수 있다. 제 1 보간 유닛(313a)(또는 제 2 보간 유닛(313b))은 예로서, 상태 레지스터(403, 도 4 참조)의 속성 마스크 및 보간 모드들에 기반하여 보간을 시작한다. 제 1 보간 유닛(313a)는 보간을 수행한다.
하나의 실시 예에서, 제 1 보간 유닛(313a)은 보간 결과들을 LSU(303(303a or 303b))를 통하여 PE 쿼드(301)의 PE(302(302a, 302b, 302c or 302d))에 있는 벡터 레지스터 파일(Vector Register File)로 전송할 수 있다. LSU(303)는 벡터 레지스터 파일에 워프에 대한 마지막 속성 데이터를 쓴 후, WSQ(304)가 워프의 상태를 업데이트 할 수 있도록 WSQ(304)에 통지하고, 셰이더 실행을 위한 워프가 준비되도록 한다. 하나의 실시 예에서, 보간 유닛(313)은 보간 유닛(313)이 프리미티브에 대한 보간을 완료하면, 프리미티브 완료 신호를 PSC(315)에 전달한다. PSC(315)가 제 1 보간 유닛(313a) 및 제 2 보간 유닛(313b) 중 하나 또는 둘 다로부터 프리미티브에 대한 프리미티브 완료 신호들을 수신하면, PSC(315)는 최종 프리미티브 완료 신호를 보간 셋업 유닛(314)으로 반환한다. 또한, 보간 셋업 유닛(314)는 속성 평면 방정식들 및 삼각형 시드 위치들을 하나의 보간 유닛 내 공유 블록 보간기 및 역 유닛(Shared Block interpolator and Reciprocal unit, SBR)에 제공하는 평면 방정식 테이블(Plane Equation Table, 이하 PET)(317)를 포함할 수 있다. 평면 방정식들은 보간 셋업 유닛(314)에 의하여 생성될 수 있고, PET(317)에 저장될 수 있다. 평면 방정식들은 프리미티브와 관련된 모든 보간이 완료된 후에 사용할 수 있도록 해제될 수 있다.
도 4는 본 명세서에 개시된 발명에 따라 플랫 W 최적화를 구현하도록 구성될 수 있는 보간 유닛(313)의 예시적인 실시 예의 블록도를 도시한다. 하나의 실시 예에서, 보간 유닛(313)은 PSC(315), 보간 셋업 유닛(314), GPSN 및 GPSW를 위한 인터페이스들을 포함할 수 있으며, 인터페이스들은 예를 들어, 셰이더 프로그램에 의한 보간을 위한 요청들 및 데이터 제어를 위해 각각 연결된 버스들이다. 하나의 실시 예에서, 보간 유닛(313)은 하나 이상의 블록 보간기들(401a, 401b), 하나 이상의 쿼드 픽셀 보간기들(402a, 402b), 상태 레지스터(403), 요청 버퍼(404), 스케쥴러(405), 위치 속성 관리 모듈(속성 관리기)(406), W 버퍼(407), 원근 보정 멀티플라이어(Perspective Correction Multiplier, PCM)(408), 공유 블록 및 역 유닛(RCP 프론트엔드)(409) 및 출력 버퍼(410)를 포함할 수 있다. 보간 유닛(313)을 형성하는 모듈들의 다른 개수도 가능하다. 도 4에 도시된 보간 유닛(313)의 예시적인 실시 예를 형성하는 다양한 구성들은 모듈들인 것으로 이해될 수 있으며, 모듈들은 요소 또는 모듈과 관련하여 본 명세서에서 기술된 기능을 제공하도록 구성된 소프트웨어, 펌웨어 및/또는 하드웨어의 임의의 조합일 수 있다.
하나의 실시 예에서, 요청 버퍼(404)는 PE(302, 도 3 참조)로부터의 보간 정밀도, 원근 분할 인에이블 플래그, 보간 위치, 시작 속성 슬롯 넘버 및 구성 요소 마스크, 유효 레인 마스크, 프로그래머플 픽셀 오프셋 및 샘플 인덱스 및 셰이더 워프의 각 픽셀에 대한 동기화 플래그들 요청과 관련된 정보를 포함할 수 있는 요청들을 저장할 수 있다. 보간은 두 개의 단계들(8x8 블록 보간 및 픽셀 보간)로 분할될 수 있다. 동일한 8x8 블록들의 픽셀들에 있어서, 블록 보간기(401)가 역 연산들에 사용될 수 있도록 허용하여 블록 결과들이 재사용 될 수 있다. 블록 보간기(401)는 입력 픽셀 쿼드들이 위치하는 8x8 블록의 속성 평면 방정식들, 삼각형 시드 위치들 및 X, Y 좌표들을 수신하고, 블록 보간을 수행할 수 있다. 블록 보간의 결과는 쿼드 픽셀 보간기(402)로 전달될 수 있고, 쿼드 픽셀 보간을 위한 기초로써 사용될 수 있다. 또한, 블록 보간기(401)는 원근 보정에 사용된 W 값의 역 연산을 수행할 수 있다.
하나의 실시 예에서, 보간 유닛(313)은 픽셀 셰이더 입력들의 픽셀 스크린 좌표의 병합뿐 아니라 모든 픽셀 또는 서브 샘플에서 가변 속성 보간을 처리할 수 있다. 가변 속성 보간은 두 개의 단계들로 수행될 수 있고, 첫번째 단계는 하나 이상의 블록 보간기(401)를 사용하는 8x8 픽셀 블록의 중심에서의 블록 레벨 기본 보간일 수 있고, 두 번째 단계는 하나 이상의 쿼드 픽셀 보간기(402) 중 하나 이상을 사용하는8x8 픽셀 블록 내의 픽셀 레벨 보간일 수 있다. 예로서, 보간 유닛(313)은 2x2 픽셀 쿼드의 XY 스크린 좌표들을 수신하자마자, 출력 버퍼(410)에 이용 가능한 공간이 있으면, 보간 유닛(313)은 픽셀 블록의 처리를 시작할 수 있다.
만약 8x8 픽셀 블록에서 프리미티브가 하나 이상의 2x2 쿼드를 포함하면, 보간 유닛(313)은 어떤 불필요한 평면 방정식 판독을 피하는 것뿐만 아니라 결과를 재연산하는 것 없이 기존의 8x8 보간 결과를 재사용하기 위한 최적화를 수행할 수 있으며, 이는 자원 소비(예를 들어, 처리 전력, 물리 하드웨어 영역 등)를 줄일 수 있다. 위치 속성 관리 모듈(406)은 PSC(315)에 대한 픽셀 쿼드 정보를 수신할 수 있고, 쿼드 위치들, 픽셀 및 샘플 마스크들, 및 프리미티브 ID들을 워프 데이터 구조들에 패킹할 수 있다. 위치 속성 관리 모듈(406)은 보간 셋업 유닛(314)의 PET(317)로부터 속성 평면 방정식들 및 삼각형 시드 위치들을 추가로 요청할 수 있고, 보간을 수행하기 위하여 블록 보간기 유닛(401)으로 정보를 전달할 수 있다.
쿼드 픽셀 보간기(402)는 속성 평면 방정식들, 8x8블록 보간 결과들 및 8x8블록 내의 픽셀들의 X, Y 오프셋들에 기반하여 쿼드 픽셀 보간을 수행할 수 있다. 하나의 실시 예에서, W버퍼(407)는 블록 보간기(401)로부터 보간된 W 역수들 뿐만 아니라 쿼드 픽셀 보간기(402)로부터 보간된 W값들을 저장할 수 있고, 역 연산을 위하여 보간된 W값들을 블록 보간기(401)로 그리고 최종 곱셈을 위하여 W역수들을 원근 보정 멀티플라이어(408)로 전송할 수 있다.
스케쥴러(405)는 워프 단위로 보간 요청들을 스케쥴링 할 수 있고, 또한 블록, 픽셀 보간 및 W 역 연산에 대한 블록 보간기(401) 및 쿼드 픽셀 보간기(402)의 요청들을 시퀀싱 할 수 있다. 원근 보정 멀티플라이어(408)은 선택된 보간 위치에서 모든 보간된 속성 값을 가지는 W 역수들의 곱셈을 수행할 수 있다. 출력 버퍼(410)는 원근 보정 이후의 보간 결과들의 최종 출력들을 수집할 수 있다. 출력 버퍼(410)는 보간 파이프라인의 레이턴시(latency)를 보상할 수 있고, 인터커넥트 버스들로의 출력 트래픽을 원활하게 하는데 도움이 될 수 있다.
도 4 내지 도 6은 본 발명에 따라 동종 계수 W가 1.0과 동일한지 또는 거의 동일한지 여부를 효율적으로 검출하는 것이 개시된 예시적인 그래픽 파이프라인들의 예시적인 위치들을 도시한다. W가 1.0과 동일한지 거의 동일한지 여부를 결정하는 것은 개념적으로 개별 꼭지점들을 테스트하는 것 또는 개별 프리미티브들의 꼭지점들을 테스트하는 것으로써 생각될 수 있다. W가 1.0과 동일한지 거의 동일한지 여부를 결정하는 것은 예시적으로 하나 이상의 비교기들에 의하여 하드웨어에서, 소프트웨어에서, 펌웨어에서 또는 하드웨어, 소프트웨어 및/또는 펌웨어의 조합에서 수행될 수 있다. 게다가, W가 1.0과 동일한지 또는 거의 동일한지 여부에 대한 판단 결과들은 이후 단계에서 사용되기 위하여 그래픽 파이프라인 아래쪽으로 전달될 수 있다.
W가 1.0과 동일하거나 거의 동일한지에 대한 개별 꼭지점들을 테스트할 때, 그래픽 파이프라인에서의 효율적인 위치들은 CCV유닛으로의 입력 및/또는 보간 셋업 유닛(314)로의 입력에 있을 수 있다. 개별 프리미티브들의 꼭지점들을 테스트할 때, 그래픽 파이프라인에서의 효율적인 위치는 그래픽 파이프라인의 보간 유닛(313)에서 위치 속성 관리 모듈(406)의 입력에 있을 수 있다. 그렇지 않으면, 개별 꼭지점들 및 개별 프리미티브들의 꼭지점들을 테스트 하는 것을 사용하여 본 명세서에 개시된 최적화를 적용하기 위한 조건에 대한 검출이 구현될 수 있다. 본 명세서에 개시된 최적화에 의하여 제공되는 연산의 비용 절감은 CCV 유닛부터 보간 셋업 유닛(314)까지, 그리고 보간 유닛(313)에서 다시 증가할 수 있다.
프리미티브별(primitive-by-primitive)에 기초한 W가 1.0과 동일한지 또는 거의 동일한지에 대한 결정은 도 4에 도시된 예시적인 보간 유닛(313)의 위치 속성 관리 모듈(406)로의 입력(411로 표시된)에 위치될 수 있다. 또한, 오프셋 C가 1과 같거나 거의 같은 동안 X 및 Y 경사도들이 0과 같거나 거의 같은지 여부가 결정될 수 있다. 보간 유닛(313) 내에서 W가 1.0과 동일한지 또는 거의 동일한지에 대한 결정은 각 픽셀 또는 샘플 위치에서의 선형 보간
Figure pat00051
Figure pat00052
로써 W를 연산하는 것에 대하여 픽셀 당 또는 샘플 당 기준으로 동작들이 생략되는 것을 허용할 수 있다. 또한, 출력 속성 보정도 생략될 수 있다(즉,
Figure pat00053
). 결정 및 동작들의 생략은 모든 타일 렌더링 패스(tile rendering pass)들에 적용될 수 있다.
도 5는 본 발명에 따라 동종 계수 W가 1.0과 동일한지 또는 거의 동일한지 여부를 효율적으로 검출하는 CCV 유닛(500)에 대한 입력의 예시적인 위치를 보여주는 블록도를 도시한다. CCV 유닛(500)은 꼭지점 파이프라인 모듈(501), 커맨드 프로세서 모듈(502), 프리미티브 프로세서 모듈(503), 클리퍼(clipper) 모듈(504) 및 출력 컨트롤 모듈(505)을 포함할 수 있다. CCV 유닛(500)을 형성하는 각각의 모듈들의 구성 요소들은 CCV 유닛(500)과 관련하여 본 명세서에 기술된 기능을 제공하기 위하여 구성된 소프트웨어, 펌웨어 및/또는 하드웨어의 임의의 조합으로써 구현될 수 있다. CCV 유닛(500)은 도 5에 나타나지 않은 추가적인 구성 요소들, 모듈들, 및/또는 기능적인 블록들을 포함할 수 있는 것으로 이해되어야 한다.
꼭지점 파이프라인 모듈(501)은 입력 데이터를 수신할 수 있고, 커맨드 프로세서 모듈(502)은 스트림 출력 유닛(Stream-Out unit, SO unit)(506)으로부터 명령들을 수신할 수 있다. 꼭지점 파이프라인 모듈(501)의 출력은 프리미티브 프로세서 모듈(503)의 입력일 수 있다. 커맨드 프로세서 모듈(502)은 스트림 출력 유닛(506)으로부터 수신된 명령들에 기반하여 꼭지점 파이프라인 모듈(501) 및 프리미티브 프로세서 모듈(503)을 제어할 수 있다. 또한, 프리미티브 프로세서 모듈(503)은 클리퍼 모듈(504)에 의하여 제어될 수 있다. 프리미티브 프로세서 모듈(503)의 출력은 출력 컨트롤 모듈(505)로의 입력일 수 있다. 출력 컨트롤 모듈(505)은 프로세스된 프리미티브들을 보간 셋업 유닛(314) 및 비닝 유닛(Binning unit, BIN unit)(507)으로 출력할 수 있다.
개별적인 꼭지점들에 대한 W가 1.0과 동일한지 또는 거의 동일한지에 대한 결정은 CCV 유닛(500)으로의 입력에 위치될 수 있다. 보다 구체적으로, W가 1.0과 동일한지 또는 거의 동일한지에 대한 결정은 표시된 바와 같이(508) 꼭지점 파이프라인 모듈(501)로의 입력에 위치될 수 있다. W가 1.0과 동일한지 또는 거의 동일한지에 대한 결정은 예시적으로 하나 이상의 비교기들에 의하여 하드웨어에서, 소프트웨어에서, 펌웨어에서 또는 하드웨어, 소프트웨어 및/또는 펌웨어의 조합에서 수행될 수 있다.
CCV 유닛(500)의 입력에서 W가 1.0과 동일한지 또는 거의 동일한지에 대한 결정은 W가 1.0과 동일하거나 거의 같은 각 꼭지점에 대한 속성들을 연산하기 위하여 동작들이 생략되는 것을 허용할 수 있다. 또한,
Figure pat00054
,
Figure pat00055
Figure pat00056
와 같은 표준화된 장치 좌표(Normalized Device Coordinates, NDC) 위치 연산들을 포함하는 동작들도 생략될 수 있다. 결정 및 동작들의 생략은 비닝 및 모든 타일 렌더링 패스들을 포함하는 모든 프로세싱 패스들에 적용될 수 있다.
도 6은 본 발명에 따라 동종 계수 W가 1.0과 동일한지 또는 거의 동일한지 여부를 효율적으로 검출하는 보간 셋업 유닛(314) 내의 예시적인 위치들을 보여주는 블록도를 도시한다. 보간 셋업 유닛(314)은 CCV 위치 입력 인터페이스 모듈(601), CCV 속성 입력 인터페이스 모듈(602), 위치 입력 및 버퍼링 모듈(603), 래스터화 설정 모듈(604), 속성 입력 및 큐 모듈(605), 평면 방정식 셋업 모듈(606), 래스터 출력 인터페이스 모듈(607) 및 PET(317, 도 3 참조)를 포함할 수 있다. 보간 셋업 유닛(314)를 형성하는 각각의 모듈들의 구성 요소들은 보간 셋업 유닛(314)과 관련하여 본 명세서에 기술된 기능을 제공하기 위하여 구성된 소프트웨어, 펌웨어 및/또는 하드웨어의 임의의 조합으로써 구현될 수 있다. 보간 셋업 유닛(314)은 도 6에 나타나지 않은 추가적인 구성 요소들, 모듈들, 및/또는 기능적인 블록들을 포함할 수 있는 것으로 이해되어야 한다.
개별적인 꼭지점들에 대한 W가 1.0과 동일한지 또는 거의 동일한지에 대한 결정은 위치 입력 인터페이스 모듈(603)로의 입력(608로 표시된) 및/또는 속성 입력 및 큐 모듈(605)로의 입력(609로 표시된)에 위치될 수 있다. W가 1.0과 동일한지 또는 거의 동일한지에 대한 결정은 예시적으로 하나 이상의 비교기들에 의하여 하드웨어에서, 소프트웨어에서, 펌웨어에서 또는 하드웨어, 소프트웨어 및/또는 펌웨어의 조합에서 수행될 수 있다. 보간 셋업 유닛(314) 내에서 W가 1.0과 동일한지 또는 거의 동일한지에 대한 결정은 W가 1.0과 동일하거나 거의 같은 각 꼭지점에 대한 속성들을 연산하기 위하여 동작들이 생략되는 것을 허용할 수 있다. 특히, 생략되는 것이 허용되는 동작들은 클리핑되지 않은 프리미티브들 또는 평면 방정식 셋업 모듈(606)에서 클리핑된 프리미티브들에 대한 속성 입력 큐 모듈(605)에서의
Figure pat00057
즉, 꼭지점 속성에
Figure pat00058
을 사전에 곱하는 원근(투영)을 포함할 수 있다. 평면 방정식은
Figure pat00059
를 위하여 PET(317)에 생성되고 저장될 필요가 없다. 결정 및 동작들의 생략은 모든 타일 렌더링 패스들에 적용될 수 있다.
도 7은 본 발명에 따른 예로서 셰이더 프로그램에 선형-원근 보간 기술이 지정된 경우, 그래픽 파이프라인에서 렌더링되는 프리미티브와 관련된 요소의 하나 이상의 속성들을 보간하는 방법(700)의 순서도를 도시한다. 선형-원근 보간 기술은 셰이더 프로그램 이외의 방식으로 렌더링되는 프리미티브와 관련된 요소의 속성들을 보간하기 위하여 지정될 수 있다는 것이 이해되어야 한다. 프로세스는 701 단계에서 시작하고, 가능하게는 도 8의 810 단계로부터 도래할 수 있다. 702 단계에서, 프리미티브의 요소의 속성들을 보간하기 위하여 선형-원근 보간 기술이 지정되었는지 여부가 결정된다. 선형-원근 보간 기술이 지정되었다면, 절차는703 단계로 계속되고, 그렇지 않으면 절차는 속성에 대하여 지정된대로 보간이 수행되는 704 단계로 계속된다. 절차는 그래픽 파이프라인에서 렌더링되는 프리미티브와 관련된 요소의 하나 이상의 속성들을 보간하는 방법(700)이 끝나는 707 단계까지 계속된다.
703 단계에서, 프리미티브 상태가 W=1로 설정되어 있는지 여부가 결정된다. 프리미티브 상태가 W=1이면, 절차는 선형 보간 기술을 사용하여 프리미티브와 연관된 요소에 대한 하나 이상의 속성들이 결정되는 705 단계로 계속된다. 예로서, 절차는 셰이더 프로그램이 계속 실행되는 707 단계로 계속된다. 만약 703 단계에서, 프리미티브 상태가 W=1로 설정되어 있지 않으면, 절차는 선형-원근 보간 기술을 사용하여 프리미티브와 연관된 요소에 대한 하나 이상의 속성들이 결정되는 706 단계로 계속된다. 절차는 셰이더 프로그램이 계속 실행되는 707 단계로 계속된다.
도 8은 본 발명에 따라 사용될 수 있는 동종 계수 W가 1.0과 동일한지 또는 거의 동일한지에 대한 결정 절차 이후의 최적화의 예시적인 실시 예의 순서도(800)를 도시한다. 절차는 801에서 시작된다. 802 단계에서, 평면 방정식은 보간 셋업 유닛(314, 도 3 참조)으로부터 수신될 수 있다. 프리미티브에 대한
Figure pat00060
또는 프리미티브의 속성들에 대한 평면 방정식이 수신될 수 있다. 보간 유닛(313, 도 4 참조)을 통한 연산 데이터 경로는
Figure pat00061
보간들 및 규칙적인 속성 보간들을 위하여 공유된다. 803 단계에서, 평면 방정식이
Figure pat00062
에 대한 것인지 여부가 결정된다. 만약 평면 방정식이
Figure pat00063
에 대한 것이면, 절차는 프리미티브 상태가
Figure pat00064
인지 여부(또는 1과 거의 동일한지 여부)가 결정되는 804 단계로 계속된다. 만약
Figure pat00065
이라면, 절차는 프리미티브 상태를
Figure pat00066
로 설정하는 805 단계로 계속된다. 절차는
Figure pat00067
에 대한 보간이 완료되는 809 단계로 계속된다.
만약 804 단계에서, 프리미티브 상태
Figure pat00068
가 1과 동일하지 않은(또는 1과 거의 같지 않은)것으로 결정되면, 절차는 프리미티브 상태
Figure pat00069
가 클리어되는 806 단계로 계속된다. 절차는 보간 유닛 파이프라인으로
Figure pat00070
가 제출되는 807 단계로 계속된다. 808 단계에서, W 값들을 연산하기 위하여 역 동작들이 수행된다. 절차는
Figure pat00071
의 보간이 완료되는 809 단계로 계속된다.
만약 803 단계에서 평면 방정식이
Figure pat00072
에 대한 것이 아닌 것으로 결정되면, 절차는 렌더링되는 프리미티브와 연관된 하나 이상의 요소들이 보간되는 810 단계(도 7)로 계속된다. 절차는 보간 동작이 완료되는 809 단계로 계속된다.
만약 W가 플랫하고 1.0이 아닌 경우, 원근 뒤틀림이 없기 때문에 W에 의한 사전 곱셈 또는 사후 곱셈이 필요하지 않다. 그러나, 만약 보간 셋업 유닛(314)에서 플랫
Figure pat00073
에 의하여 사전 곱셈이 적용되는 경우, 보간이 이루어지는 동안 사후 곱셈이 여전히 필요하다. 만약 W가 플랫하면, 사전 곱셈 및 사후 곱셈은 제거될 수 있지만, 양 곱셈들은 함께 제거되거나 또는 둘 중 어느 것도 제거될 수 없다.
Figure pat00074
인 때에만 곱셈들 중 하나가 제거될 수 있다. 즉,
Figure pat00075
인 경우에만 사전 곱셈 또는 사후 곱셈이 제거될 수 있다.
또 다른 실시 예에서, 본 명세서에 개시된 플랫 최적화가 사용될 수 있도록 검출될 수 있는 추가적인 조건은 속성들에 대한 평면 방정식의 계수들이 상수인지 여부를 검출하는 것을 포함한다(즉,
Figure pat00076
). 상수들로 결정된 속성들에 대하여는 보간이 필요하지 않으며, 상수 속성들에 대하여는 평면 방정식들을 생성할 필요가 없다. 이것은
Figure pat00077
에서
Figure pat00078
전파로 변환한다. 즉,
Figure pat00079
값들은 PET(317, 도 3 참조)로부터 보간 파이프라인을 통하여 속성 값들로써 전파될 수 있다. 또 다른 실시 예에서, 본 명세서에 개시된 플랫 W 최적화는 프리미티브의 모든 꼭지점들이 같지만 1.0과는 동일하지 않은 경우 사용될 수 있다.
도 9는 예시적으로 GPU(960)가 선형-원근 보간을 수행하도록 프로그래밍 된 경우, 보간 연산들에 역, 곱 또는 합 연산들이 사용될 때 그 횟수를 줄일 수 있는 그래픽 파이프라인을 포함하는 GPU(960)을 포함하는 전자 시스템(900)을 도시한다. 전자 시스템(900)은 컴퓨팅 장치, 개인 휴대 정보 단말기(PDA), 노트북, 모바일 컴퓨터, 웹 태블릿, 무선 전화, 휴대 전화, 스마트폰, 디지털 음악 플레이어, 또는 유선 또는 무선 전자 장치에 사용될 수 있으나, 이에 국한되지는 않는다. 전자 시스템(900)은 버스(950)를 통하여 서로 연결된 컨트롤러(910), 키패드, 키보드, 디스플레이, 터치 스크린 디스플레이, 카메라, 및/또는 이미지 센서와 같은(이에 국한되지는 않는다) 입출력 장치(920), 메모리 장치(930) 및 인터페이스(940)를 포함할 수 있다. 컨트롤러(910)는 예로서, 하나 이상의 마이크로프로세서, 하나 이상의 디지털 신호 프로세스, 하나 이상의 마이크로 컨트롤러 등을 포함할 수 있다. 메모리 장치(930)는 컨트롤러(910)에 의하여 사용되는 명령 코드 또는 사용자 데이터를 저장하도록 구성될 수 있다. 전자 시스템(900) 및 GPU(960)의 다양한 시스템 구성요소들은 GPU(960)가 선형-원근 보간을 수행하도록 프로그래밍 된 경우, 보간 연산들에 역, 곱 또는 나누기 연산들이 사용될 때 그 횟수를 줄일 수 있는 그래픽 파이프라인을 포함할 수 있다. 인터페이스(940)는 RF 신호를 사용하여 무선 통신 네트워크로 데이터를 송신하거나 무선 통신 네트워크로부터 데이터를 수신하도록 구성된 무선 인터페이스를 포함하도록 구성될 수 있다. 예로서, 무선 인터페이스(940)는 안테나, 무선 송수신기 등을 포함할 수 있다. 또한, 전자 시스템(900)은 CDMA(Code Division Multiple Access), GSM(Global System for Mobile Communications), NADC(North American Digital Communications), ETDMA(Extended Time Division Multiple Access), WCDMA(Wideband CDMA), CDMA2000, Wi-Fi, Muni Wi-Fi(Municipal Wi-Fi), 블루투스, DECT(Digital Enhanced Cordless Telecommunications), 무선 USB(Wireless Universal Seral Bus), Flash OFDM(Fast low-latency access with seamless handoff Orthogonal Frequency Division Multiplexing), IEEE 802.20, GPRS(General Packet Radio Service), iBurst, WiBro(Wireless Broadband), WiMAX, WiMAX-Advanced, UMTS TDD(Universal Mobile Telecommunication Service-Time Division Duplex), HSPA(High Speed Packet Access), EVDO(Evolution Data Optimized), LTE-Advanced(Long Term Evolution-Advanced), MMDS(Multichannel Multipoint Distribution Service) 등의 통신 시스템의 통신 인터페이스 프로토콜에 사용될 수 있으나, 이에 국한되지 않는다.
본 명세서에 기술된 실시 예들 및 동작들은 본 명세서에 개시된 구조 및 그들의 구조적 등가물들 또는 그들 중 하나 이상의 조합물들을 포함하는 디지털 전자회로, 또는 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어에서 구현될 수 있다. 본 명세서에 기술된 실시 예들은 데이터 처리 장치에 의하여 실행되거나 데이터 처리 장치의 동작을 제어하기 위하여 컴퓨터 저장 매체에 인코딩 된 하나 이상의 컴퓨터 프로그램 즉, 하나 이상의 컴퓨터 프로그램 명령 모듈로써 구현될 수 있다. 대안적으로 또는 추가적으로, 프로그램 명령들은 예시적으로 기계 생성 전기, 광학 또는 전자기 신호와 같이 데이터 처리 장치에 의한 실행을 위하여 적절한 수신기 장치로 전송하기 위한 정보를 인코딩 하기 위하여 인위적으로 생성된 전파 신호에 인코딩 될 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 저장 장치, 컴퓨터 판독 가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 어레이 또는 장치, 또는 이들의 조합일 수 있거나 이들에 포함될 수 있다. 또한, 컴퓨터 저장 매체는 전파된 신호가 아니더라도 인위적으로 생성된 전파 신호로 인코딩된 컴퓨터 프로그램 명령들의 소스 또는 목적지 일 수 있다. 또한, 컴퓨터 저장 매체는 하나 이상의 개별 물리적 구성 요소들 또는 매체(예를 들어, 복수의 CD들, 디스크들, 또는 기타 저장 장치들)이거나 이들에 포함될 수 있다.
본 명세서에 기술된 동작들은 하나 이상의 컴퓨터 판독 가능 저장 장치들에 저장되거나 다른 소스들로부터 수신된 데이터에 대한 데이터 처리 장치에 의하여 수행되는 동작들로써 구현될 수 있다.
“데이터 처리 장치”라는 용어는 예시적으로 프로그래머블 프로세서, 컴퓨터, SoC(System on a Chip), 또는 전술한 복수의 것들, 또는 전술한 것들의 조합들을 포함하는 데이터 처리를 위한 모든 종류의 장치, 기구 및 기계를 포함할 수 있다. 장치는 특수 목적의 논리 회로, 예를 들어 필드 프로그래머블 게이트 어레이(Field Programmable Gate Array, FPGA) 또는 어플리케이션 특정 집적 회로(Application Specific Integrated Circuit, ASIC)을 포함할 수 있다. 또한, 장치는 하드웨어 이외에 예시적으로 프로세서 펌웨어, 프로토콜 스택, 데이터 베이스 관리 시스템, 운영 체제, 크로스 플랫폼 런타임 환경, 가상 머신 또는 이들의 조합을 구성하는 코드와 같이 컴퓨터 프로그램을 위한 실행 환경을 생성하는 코드를 포함할 수 있다. 장치 및 실행 환경은 웹 서비스, 분산 컴퓨팅 및 그리드 컴퓨팅 인프라 구조들과 같은 다양한 컴퓨팅 모델 인프라 구조들을 실현할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 어플리케이션, 스크립트, 또는 코드로 알려진)은 컴파일 되거나 해석된 언어들, 선언적 또는 절차적 언어들을 포함하는 모든 형태의 프로그래밍 언어로 작성될 수 있고, 독립형 프로그램 또는 컴퓨터 환경에서 사용하기에 적합한 모듈, 구성 요소, 서브루틴, 객체 또는 컴퓨팅 환경에서 사용하기에 적합한 기타 장치를 포함하는 어떤 형태로 배포될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 대응할 수 있으나, 반드시 그러한 것은 아니다. 프로그램은 다른 프로그램이나 데이터를 포함하는 파일의 일부(예를 들어, 마크 업 언어 문서에 저장된 하나 이상의 스크립트)에, 해당 프로그램 전용의 단일 파일에, 또는 복수의 통합된 파일들(예를 들어, 하나 이상의 모듈, 서브 프로그램들, 또는 코드의 부분들을 저장하는 파일)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 하나의 사이트에 있거나 여러 사이트에 분산되어 있되, 통신 네트워크로 상호 연결된 복수의 컴퓨터들에서 실행되도록 배포될 수 있다.
본 명세서에 기술된 프로세스들 및 논리 순서도들은 입력 데이터에 대하여 동작하고 출력을 생성하여 동작을 수행하기 위한 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래머블 프로세서들에 의하여 수행될 수 있다. 또한, 프로세스들 및 논리 순서도들은 필드 프로그래머블 게이트 어레이(Field Programmable Gate Array, FPGA) 또는 어플리케이션 특정 집적 회로(Application Specific Integrated Circuit, ASIC)와 같은 특수 목적 로직 회로로써 수행될 수 있고, 장치 또한 구현될 수 있다.
예로서, 컴퓨터 프로그램의 실행에 적합한 프로세서는 범용 마이크로 프로세서 및 특수 마이크로 프로세서, 및 임의의 종류의 디지털 컴퓨터의 하나 이상의 프로세서들을 포함한다. 일반적으로 프로세서는 ROM(Read Only Memory) 또는 RAM(Random Access Memory) 또는 둘 다로부터 명령들 및 데이터를 수신할 수 있다. 컴퓨터의 필수 요소들은 명령에 따라 동작을 수행하기 위한 프로세서 및 명령 및 데이터를 저장하기 위한 하나 이상의 메모리 장치들이다. 또한, 일반적으로 컴퓨터는 예로서, 마그네틱, 자기 광 디스크 또는 광 디스크와 같은 데이터를 저장하기 위한 하나 이상의 대용량 저장 장치로부터 데이터를 수신하거나 이들에 데이터를 전송하도록 연결될 것이다. 그러나 컴퓨터에는 이러한 장치들이 필요하지 않다. 또한, 예로서, 컴퓨터는 휴대 전화, PDA, 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS 수신기, 또는 휴대용 저장 장치(예를 들어, USB 플래시 드라이브) 등과 같은 다른 장치에 내장될 수 있다. 컴퓨터 프로그램 명령 및 데이터를 저장하기에 적합한 장치는 예로서, EPROM, EEPROM, 및 플래시 메모리 장치들과 같은 반도체 메모리 장치; 내부 하드 디스크 또는 이동식 디스크와 같은 자기 디스크; 광 자기 디스크; 및 CD-ROM 및 DVD ROM 디스크를 포함하는 모든 형태의 비휘발성 메모리, 미디어 및 메모리 장치들을 포함한다. 프로세서 및 메모리는 특수 목적 논리 회로에 의하여 보충되거나 그에 통합될 수 있다.
사용자와의 상호 작용을 제공하기 위하여, 본 명세서에 기술된 실시 예들은 예시적으로 CRT(Cathode Ray Tube) 또는 LCD(Liquid Crystal Display)와 같은 디스플레이 장치를 구비하고, 예시적으로 사용자가 컴퓨터에 입력을 제공할 수 있는 마우스 또는 트랙볼과 같은 사용자에게 정보를 표시하기 위한 키보드 및 포인팅 장치를 구비한 컴퓨터에서 구현될 수 있다. 사용자와의 상호 작용을 제공하기 위하여 다른 종류의 장치가 사용될 수도 있다; 예를 들어, 사용자에게 제공되는 피드백은 예시적으로, 시각적 피드백, 청각적 피드백 또는 촉각적 피드백과 같은 임의의 형태의 감각 피드백 일 수 있으며; 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다.
본 명세서에 기술된 실시 예들은 예로서 데이터 서버와 같은 백 엔드 구성 요소를 포함하는 컴퓨팅 시스템, 또는 예로서 어플리케이션 서버와 같은 미들 웨어 구성 요소를 포함하는 컴퓨팅 시스템, 또는 예로서 사용자가 본 발명에 따른 구현과 상호 작용할 수 있는 그래픽 사용자 인터페이스 또는 웹 브라우저를 갖는 사용자 컴퓨터와 같은 프론트 엔드 구성 요소를 포함하는 컴퓨팅 시스템, 또는 하나 이상의 백 엔드, 미들 웨어, 또는 프론트 엔드 구성 요소들의 임의의 조합으로 구현될 수 있다. 시스템의 구성 요소들은 임의의 형태 또는 예로서, 통신 네트워크와 같은 디지털 데이터 통신의 매체에 의하여 상호 연결될 수 있다. 통신 네트워크들의 예시들은 근거리 통신망(Local Area Network, LAN), 광역 통신망(Wide Area Network, WAN), 인터-네트워크(예를 들어, 인터넷), 및 피어-투-피어 네트워크(예를 들어, 애드 혹 피어-투-피어 네트워크)를 포함할 수 있다.
연산 시스템은 사용자 및 서버를 포함할 수 있다. 사용자와 서버는 일반적으로 서로 멀리 떨어져 있으며, 일반적으로 통신 네트워크를 통해 상호 작용한다. 사용자와 서버의 관계는 각 컴퓨터에서 실행되고 서로 사용자 서버 관계를 갖는 컴퓨터 프로그램으로 인하여 발생한다.
본 명세서는 다수의 특정한 세부 구현 정보가 포함되어 있으나, 이들은 발명의 범위 또는 청구될 수 있는 것에 대한 제한으로 해석되어서는 안되고, 특정 발명들의 특정 실시 예들의 특정한 특징의 설명으로 해석되어야 한다. 별도의 실시 예들과 관련하여, 본 명세서에서 설명된 특정 특징들은 단일 실시 예에서 조합으로 구현될 수 있다. 반대로, 단일 실시 예와 관련하여 설명된 다양한 특징들 또한 다수의 실시 예에서 개별적 또는 임의의 적절한 서브 조합으로 구현될 수 있다. 더욱이, 특징들이 특정 조합으로 작용하는 것으로 설명되고 초기에 그와 같이 청구되더라도, 청구된 조합으로부터의 하나 이상의 특징들은 일부 경우에 조합으로부터 제외될 수 있고, 청구된 조합은 서브 조합 또는 서브 조합의 변형에 관한 것일 수 있다.
유사하게, 동작들은 특정 순서로 도면에 도시되어 있으나, 이는 동작들이 도시된 특정 순서로 또는 순차적으로 수행되거나 바람직한 결과를 달성하기 위하여 도시된 모든 동작이 수행되는 것을 요구하는 것으로 이해되지 않는다. 특정 상황에서, 멀티태스킹 및 병렬 처리가 유리할 수 있다. 더욱이, 상술한 실시 예들에서 다양한 시스템 구성 요소들의 분리는 모든 실시 예에서 이러한 분리를 요구하는 것으로 이해되어서는 안되며, 상술한 프로그램 구성 요소 및 시스템은 일반적으로 단일 소프트웨어 제품에 함께 통합되거나 다수의 소프트웨어 제품으로 패키지 될 수 있는 것으로 이해될 수 있다.
그러므로, 본 발명에 대한 특정 실시 예가 설명되었다. 다른 실시 예들은 후술할 청구범위들의 범위 내에 있다. 일부의 경우에 청구 범위들에 언급된 동작들은 다른 순서로 수행될 수 있고, 여전히 바람직한 결과를 달성할 수 있다. 또한, 첨부된 도면에 도시된 프로세스는 바람직한 결과를 달성하기 위하여 도시된 특정 순서 또는 순차적 순서는 필수적으로 요구되지 않는다. 특정 구현들에서, 멀티 태스킹 및 병렬 프로세싱이 유리할 수 있다.
통상의 기술자에 의하여 본 명세서에 기술된 혁신적인 개념은 광범위한 응용에 걸쳐 수정 및 변경될 수 있는 것으로 인식될 것이다. 따라서, 본 발명의 범위는 상술한 특정 예시적인 교시 중 어느 하나로 제한되지 않아야하며, 대신 다음의 청구범위들에 의하여 정의될 수 있다.
300 : GPU
301 : PE 쿼드(Processing Element QUAD)
302a, 302b, 302c, 302d : PE(Processing Element)
303a, 303b : LSU(Load-Store Unit)
304 : WSQ(WARP Sequencers)
310 : 하드웨어 보간기 유닛
311 : SPC(Shader Processing Controller)
312 : RASTZ 유닛(Raster and Z Units)
313a, 313b : 보간 유닛(Interpolation Unit)
314 : 보간 셋업 유닛(Interpolation Setup Unit)
315 : PSC(Pixel Shader Constructor)
316 : WS(Warp Scheduler)

Claims (20)

  1. 그래픽 파이프라인에서 렌더링되는 프리미티브의 요소의 하나 이상의 속성들을 보간하는 방법에 있어서:
    상기 프리미티브를 렌더링하기 위하여 지정된 선형-원근 보간 기술에 기반하여, 상기 요소의 동차좌표가 미리 결정된 임계값 1 이내에 있는지를 판단하는 단계;
    상기 미리 결정된 임계값 1 이내에 있는 상기 요소의 상기 동차좌표에 기반하여, 선형 보간 기술을 사용하여 상기 요소의 상기 하나 이상의 속성들을 보간하는 단계; 및
    상기 미리 결정된 임계값 1을 벗어나는 상기 요소의 상기 동차좌표에 기반하여, 상기 선형-원근 보간 기술을 사용하여 상기 요소의 상기 하나 이상의 속성들을 보간하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 요소의 상기 하나 이상의 속성들은 상기 프리미티브의 꼭지점과 관련되는 방법.
  3. 제 1 항에 있어서,
    상기 요소의 상기 동차좌표가 상기 미리 결정된 임계값 1 이내에 있는지 여부를 판단하는 단계는, 상기 프리미티브의 각 꼭지점들의 동차좌표가 1과 같은지 여부를 판단하는 단계를 더 포함하는 방법.
  4. 제 1 항에 있어서,
    상기 프리미티브는 삼각형 및 선 중 적어도 하나를 포함하는 방법.
  5. 제 1 항에 있어서,
    상기 요소의 상기 동차좌표가 상기 미리 결정된 임계값 1 이내에 있는지 여부를 판단하는 단계는, 그래픽 파이프 라인 스테이지의 입력 및 출력 중 적어도 하나에서 상기 요소의 동차좌표가 상기 미리 결정된 임계값 1 이내에 있는지 여부를 판단하는 단계를 더 포함하는 방법.
  6. 제 5 항에 있어서,
    상기 그래픽 파이프라인 스테이지는 CCV(Clip-Cull-Viewport) 유닛, 셋업 유닛 및 보간 유닛 중 적어도 하나를 포함하는 방법.
  7. 제 1 항에 있어서,
    상기 프리미티브를 렌더링하기 위하여 지정된 상기 선형-원근 보간 기술에 기반하여, 상기 프리미티브의 동차좌표의 값이 1과 상이한 상수인지 여부를 판단하는 단계;
    상기 1과 상이한 상수로 판단된 상기 동차좌표의 값에 기반하여, 상기 선형 보간 기술을 사용하여 상기 프리미티브의 상기 하나 이상의 속성들을 보간하는 단계; 및
    상기 1과 상이한 상수를 제외한 상기 동차좌표의 값에 기반하여, 상기 선형-원근 보간 기술을 사용하여 상기 프리미티브의 상기 하나 이상의 속성들을 보간하는 단계를 더 포함하는 방법.
  8. 제 1 항에 있어서,
    상기 프리미티브의 상기 하나 이상의 속성에 대한 평면 방정식의 계수들이 일정한지 여부를 판단하는 단계;
    일정하지 않은 것으로 판단된 상기 평면 방정식의 상기 계수들에 기반하여 상기 프리미티브의 상기 하나 이상의 속성들을 보간하는 단계; 및
    일정한 것으로 판단된 상기 평면 방정식의 상기 계수들에 기반하여 상기 프리미티브의 상기 하나 이상의 속성들을 보간하는 것을 생략하는 단계를 더 포함하는 방법.
  9. 프리미티브의 하나 이상의 속성들을 수신하는 입력부;
    상기 프리미티브를 렌더링하기 위하여 지정된 선형-원근 보간 기술에 기반하여, 동차좌표의 값들이 미리 결정된 임계값 1 이내에 있는지 여부를 판단하기 위해 상기 프리미티브의 상기 하나 이상의 속성들의 상기 동차좌표의 상기 값을 1과 비교하는 비교기; 및
    상기 미리 결정된 임계값 1 이내에 있는 것으로 판단되는 상기 동차좌표의 상기 값에 기반하여 선형 보간 기술을 사용하여 상기 프리미티브의 상기 하나 이상의 속성들을 보간하고, 그리고 상기 미리 결정된 임계값 1을 벗어나는 것으로 판단되는 상기 동차좌표의 상기 값에 기반하여 상기 선형-원근 보간 기술을 사용하여 상기 프리미티브의 상기 하나 이상의 속성들을 보간하는 보간기를 포함하는 그래픽 파이프라인 스테이지.
  10. 제 9 항에 있어서,
    하나의 프리미티브의 상기 하나 이상의 속성들은 상기 프리미티브의 꼭지점과 관련되는 그래픽 파이프라인 스테이지.
  11. 제 9 항에 있어서,
    상기 하나 이상의 속성들은 상기 프리미티브의 꼭지점과 관련되고,
    상기 프리미티브는 삼각형 및 선 중 적어도 하나를 포함하는 그래픽 파이프라인 스테이지.
  12. 제 9 항에 있어서,
    상기 비교기는 상기 프리미티브를 렌더링하기 위하여 지정된 상기 선형-원근 보간 기술에 기반하여, 상기 프리미티브의 상기 동차좌표의 값이 1과 상이한 상수인지 여부를 추가로 판단하고,
    상기 보간기는 상기 1과 상이한 상수로 판단된 값에 기반하여, 상기 선형 보간 기술을 사용하여 상기 프리미티브의 상기 하나 이상의 속성들을 추가로 보간하고, 상기 1과 상이한 상수를 제외한 상기 동차좌표의 값에 기반하여 상기 선형-원근 보간 기술을 사용하여 상기 프리미티브의 상기 하나 이상의 속성들을 보간하는 그래픽 파이프라인 스테이지.
  13. 제 9 항에 있어서,
    상기 비교기는 상기 프리미티브의 상기 하나 이상의 속성들에 대한 평면 방정식의 계수들이 일정한지 여부를 추가로 판단하고,
    상기 보간기는 일정하지 않은 것으로 판단된 상기 평면 방정식의 상기 계수들에 기반하여 상기 프리미티브의 상기 하나 이상의 속성들을 추가로 보간하고, 일정한 것으로 판단된 상기 평면 방정식의 상기 계수들에 기반하여 상기 프리미티브의 상기 하나 이상의 속성들을 보간하는 것을 생략하는 그래픽 파이프라인 스테이지.
  14. 제 9 항에 있어서,
    CCV(Clip-Cull-Viewport) 유닛, 셋업 유닛 및 보간 유닛 중 적어도 하나를 포함하는 그래픽 파이프라인 스테이지.
  15. 그래픽 파이프라인 스테이지(graphics pipeline stage); 및
    셰이더(shader)를 포함하되,
    상기 그래픽 파이프라인 스테이지는:
    프리미티브의 하나 이상의 속성들을 수신하는 입력부;
    상기 프리미티브를 렌더링하기 위하여 지정된 선형-원근 보간 기술에 기반하여, 상기 프리미티브의 동차좌표의 값이 1과 상이한 상수인지 여부를 판단하는 비교기; 및
    상기 1과 상이한 상수로 판단되는 상기 동차좌표의 상기 값에 기반하여 선형 보간 기술을 사용하여 상기 프리미티브의 상기 하나 이상의 속성들을 보간하고, 상기 1과 상이한 상수를 제외한 상기 동차좌표의 상기 값에 기반하여 상기 선형-원근 보간 기술을 사용하여 상기 프리미티브의 상기 하나 이상의 속성들을 보간하는 보간기를 포함하되,
    상기 셰이더는 상기 보간기의 출력을 수신하고, 상기 프리미티브를 렌더링하는 그래픽 처리 장치.
  16. 제 15 항에 있어서,
    상기 비교기는 프리미티브를 렌더링하기 위하여 지정된 선형-원근 보간 기술에 기반하여, 상기 동차좌표의 값이 상기 미리 결정된 임계값 1 이내에 있는지 여부를 판단하기 위해 상기 프리미티브의 상기 하나 이상의 속성들의 상기 동차좌표의 값을 1과 추가로 비교하고,
    상기 보간기는 상기 미리 결정된 임계값 1 이내에 있는 것으로 판단되는 상기 동차좌표의 값에 기반하여 상기 선형 보간 기술을 사용하여 상기 프리미티브의 상기 하나 이상의 속성들을 추가로 보간하고, 상기 미리 결정된 임계값 1을 초과하는 것으로 판단되는 상기 동차좌표의 값에 기반하여 상기 선형-원근 보간 기술을 사용하여 상기 프리미티브의 상기 하나 이상의 속성들을 보간하는 그래픽 처리 장치.
  17. 제 15 항에 있어서,
    상기 프리미티브는 삼각형 및 선 중 적어도 하나를 포함하는 그래픽 처리 장치.
  18. 제 15 항에 있어서,
    하나의 요소의 상기 하나 이상의 속성들은 상기 프리미티브의 꼭지점과 관련되는 그래픽 처리 장치.
  19. 제 15 항에 있어서,
    상기 비교기는 상기 프리미티브의 상기 하나 이상의 속성들에 대한 평면 방정식의 계수들이 일정한지 여부를 추가로 판단하고,
    상기 보간기는 일정하지 않은 것으로 판단된 상기 평면 방정식의 상기 계수들에 기반하여 상기 프리미티브의 상기 하나 이상의 속성들을 추가로 보간하고, 일정한 것으로 판단된 상기 평면 방정식의 상기 계수들에 기반하여 상기 프리미티브의 상기 하나 이상의 속성들을 보간하는 것을 생략하는 그래픽 처리 장치.
  20. 제 15 항에 있어서,
    상기 그래픽 파이프라인 스테이지는 CCV(Clip-Cull-Viewport) 유닛, 셋업 유닛 및 보간 유닛 중 적어도 하나를 포함하는 그래픽 처리 장치.
KR1020200053991A 2019-05-31 2020-05-06 원근(투영) 보간 함수들의 최적화된 연산 KR20200137985A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962855872P 2019-05-31 2019-05-31
US62/855,872 2019-05-31
US16/559,616 US11080924B2 (en) 2019-05-31 2019-09-03 Optimized computation of perspective interpolants
US16/559,616 2019-09-03

Publications (1)

Publication Number Publication Date
KR20200137985A true KR20200137985A (ko) 2020-12-09

Family

ID=73550301

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200053991A KR20200137985A (ko) 2019-05-31 2020-05-06 원근(투영) 보간 함수들의 최적화된 연산

Country Status (3)

Country Link
US (1) US11080924B2 (ko)
KR (1) KR20200137985A (ko)
TW (1) TWI800727B (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220301096A1 (en) * 2021-03-18 2022-09-22 Samsung Electronics Co., Ltd. Method and apparatus for isolating 3d draw calls for selective upscaling
US20230064069A1 (en) * 2021-07-30 2023-03-02 Intel Corporation Converting barycentric planes to attribute planes

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5798762A (en) * 1995-05-10 1998-08-25 Cagent Technologies, Inc. Controlling a real-time rendering engine using a list-based control mechanism
US6664960B2 (en) * 2001-05-10 2003-12-16 Ati Technologies Inc. Apparatus for processing non-planar video graphics primitives and associated method of operation
US20030063087A1 (en) * 2001-09-28 2003-04-03 Doyle Peter L. Variable-formatable width buffer and method of use
US7098924B2 (en) * 2002-10-19 2006-08-29 Via Technologies, Inc. Method and programmable device for triangle interpolation in homogeneous space
US20050231533A1 (en) * 2004-04-20 2005-10-20 Lin Chen Apparatus and method for performing divide by w operations in a graphics system
US8432394B1 (en) 2004-05-14 2013-04-30 Nvidia Corporation Method and system for implementing clamped z value interpolation in a raster stage of a graphics pipeline
US7420557B1 (en) * 2005-08-25 2008-09-02 Nvidia Corporation Vertex processing when w=0
US8134570B1 (en) * 2006-09-18 2012-03-13 Nvidia Corporation System and method for graphics attribute packing for pixel shader usage
US8203564B2 (en) 2007-02-16 2012-06-19 Qualcomm Incorporated Efficient 2-D and 3-D graphics processing
US20150325032A1 (en) 2014-05-09 2015-11-12 Samsung Electronics Company, Ltd. Hybrid mode graphics processing interpolator
GB2540983B (en) * 2015-08-03 2017-11-29 Advanced Risc Mach Ltd Graphics processing
US10489877B2 (en) * 2017-04-24 2019-11-26 Intel Corporation Compute optimization mechanism

Also Published As

Publication number Publication date
US11080924B2 (en) 2021-08-03
TW202101368A (zh) 2021-01-01
US20200380766A1 (en) 2020-12-03
TWI800727B (zh) 2023-05-01

Similar Documents

Publication Publication Date Title
US11748840B2 (en) Method for efficient re-rendering objects to vary viewports and under varying rendering and rasterization parameters
JP6495377B2 (ja) 選択的ラスタライゼーション
JP4938850B2 (ja) 拡張型頂点キャッシュを備えたグラフィック処理装置
CN107346559B (zh) 解耦的着色流水线
US10332307B2 (en) Apparatus and method performing rendering on viewpoint disparity image
KR101952983B1 (ko) 콘텐트의 타일-기반 렌더링을 위한 방법 및 콘텐트를 렌더링하기 위한 시스템
JP2018537755A (ja) 中心窩ジオメトリテッセレーション
KR102048885B1 (ko) 그래픽 프로세싱 유닛, 이를 포함하는 그래픽 프로세싱 시스템, 및 이를 이용한 렌더링 방법
KR20140023386A (ko) 그래픽 프로세싱 유닛들에서의 렌더링 모드 선택
EP2820562B1 (en) Using cost estimation to improve performance of tile rendering for image processing
KR20200137985A (ko) 원근(투영) 보간 함수들의 최적화된 연산
KR101700174B1 (ko) 감소된 비트카운트의 다각형 래스터화
WO2013005366A1 (ja) アンチエイリアス画像生成装置およびアンチエイリアス画像生成方法
US9830740B2 (en) Graphic processing unit, system and anti-aliasing method to perform rendering based on image information
US20140152650A1 (en) Method and apparatus for tile-based rendering
CN112017103A (zh) 插值方法、图形管线和图形处理器
US20150356768A1 (en) Mechanism for facilitating improved copying of graphics data on computing devices
US11741626B2 (en) Surface projection determination of a multidimensional object in a viewport space
GB2531936A (en) Graphic processing unit, a graphic processing system including the same, and an anti-aliasing method using the same
CN117636408A (zh) 视频处理方法及设备
KR20200145665A (ko) 최적화된 픽셀 셰이더 속성 관리
CN112822418A (zh) 视频处理方法和装置、存储介质和电子设备
US20140285501A1 (en) Method and apparatus for controlling fragment in graphic rendering

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right