KR20170016301A - 그래픽 처리 - Google Patents

그래픽 처리 Download PDF

Info

Publication number
KR20170016301A
KR20170016301A KR1020160098271A KR20160098271A KR20170016301A KR 20170016301 A KR20170016301 A KR 20170016301A KR 1020160098271 A KR1020160098271 A KR 1020160098271A KR 20160098271 A KR20160098271 A KR 20160098271A KR 20170016301 A KR20170016301 A KR 20170016301A
Authority
KR
South Korea
Prior art keywords
sampling
center
sampling point
coordinate system
delta values
Prior art date
Application number
KR1020160098271A
Other languages
English (en)
Other versions
KR102598915B1 (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 KR20170016301A publication Critical patent/KR20170016301A/ko
Application granted granted Critical
Publication of KR102598915B1 publication Critical patent/KR102598915B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • 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
    • 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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/60Analysis of geometric attributes
    • G06T7/66Analysis of geometric attributes of image moments or centre of gravity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10024Color image

Abstract

그래픽 처리 시스템(3)은 프리미티브(60)를 샘플링하는데 사용되고 있는 쿼드 프래그먼트(65)의 복수의 프래그먼트들(61, 62, 63, 64)의 복수의 샘플링 포인트들에 대해 보간된 정점 셰이딩된 속성 데이터를 발생한다. 복수의 샘플링 포인트에 대한 보간된 정점 셰이딩된 속성 데이터는, 제 2 좌표계 xmy, xpy에 대해 정의된 프리미티브(60)에 대한 회전된 샘플링 포인트 델타 값들과 함께, 제 1 좌표계 x, y에 대해 정의된 쿼드 프래그먼트(65)에 대한 기준점을 사용하여 발생된다. 회전된 샘플링 포인트 델타 데이터는 보간된 정점 셰이딩된 속성 데이터가 복수의 샘플링 포인트들에 대해 더욱 효율적으로 발생될 수 있게 한다.

Description

그래픽 처리{GRAPHICS PROCESSING}
본 발명은, 그래픽 처리에 관한 것으로, 특히, 보간된 정점 속성 데이터를 발생하는 프래그먼트 셰이딩 스테이지를 구비한 그래픽 처리 시스템의 동작에 관한 것이다.
그래픽 처리는 일반적으로, 파이프라인 방식으로 행해지고, 한 개 이상의 파이프라인 스테이지들이 데이터에 대해 동작하여 표시되는 최종 이미지를 발생한다. 이와 같은 처리의 2가지 중요한 부부는, 표시할 이미지를 표현하는 프리미티브들(폴리곤들)의 정점에 대해 행해지는 변환 및 조명 등의 소위 정점 셰이딩 연산과, 표시할 이미지를 구성하는 개별 프래그먼트들을 셰이드하는(칼라 표시하는) 후속하는 프래그먼트(픽셀) 셰이딩 연산이다.
정점 셰이딩 연산은 일반적으로 그래픽 처리의 소위 "정점 셰이더" 스테이지에서 행해진다. 이것은 보통 입력 데이터 갑에 대해 정점 셰이더 프로그램들을 실행하여 그래픽 파이프라인의 나머지에 의해 처리되는 (예를 들면, 정점 데이터를 적절히 변형되거나 비춘 출력 데이터의 원하는 세트를 발생하는 프로그래머블 처리 유닛이다. 어떤 장면의 각각의 프리미티브(폴리곤)는 보통 정점들의 세트로 정의 및 표현되고, 각각의 정점은 이 정점에 대한 데이터 값들의 세트를 그것과 관련하여 갖는다. 정점 셰이딩 처리는, 예를 들면, 정점이 관련되는 프리미티브가 겪게 될 변형 또는 조명에 근거하여, 정점에 대한 초기 정의된 데이터 값들을 변형한다.
어떤 장면에 대한 입력 데이터 값들이 정점 "셰이딩"되면, 이 장면을 표시하는 프리미티브들이 래스터화되어 이 장면에 대해 처리할 복수의 "프래그먼트들"을 생성한다. 프래그먼트들은 (렌더링 등의) 그래픽 처리 연산이 행해지는 별개의 그래픽 엔티티이다. 각각의 프래그먼트는 장면의 샘플링 포인트 또는 샘플링 포인트들에 해당하고, 일단 샘플링되면, 샘플링 포인트(들)가 표시될 수 있도록, 그것과 관련되어 적, 녹, 청 칼라(RGB) 값, 투명도(알파) 값 및 깊이(z) 값들의 필요한 값을 갖는다. 또한, 다운스케일링 등의 후처리가 그래픽 처리가 동작하는 엔티티들(프래그먼트들)과 표시 픽셀 들 사이에 1 대 1 대응이 존재하지 않는다는 것을 의미하기 때문에, 불가피하게 주어진 프래그먼트가 최종 표시에 있어서 한 개의 픽셀(화소)과 정확히 대응하는 경우가 아니더라도, 프래그먼트들은 픽셀로도 부를 수 있다.
그래픽 프래그먼트들은, 일단 생성되면, 다수의 처리를 겪어 이들 그래픽 프래그먼트들을 셰이딩하여, 정점 데이터의 보간, 텍스트 적용, 블렌딩 등의 최종 출력 칼라 값 등을 발생한다. 예를 들어, 프래그먼트들이 표현하는 샘플링 포인트(들)를 표시하는데 필요한 출력 데이터 값들을 도출하는 이와 같은 처리는 "프래그먼트 셰이딩" 또는 "픽셀 셰이딩"으로 불리며, 처리 파이프라인의 (픽셀 셰이더로도 불리는) 프래그먼트 셰이더 스테이지에게 행해진다. 프래그먼트 셰이딩 처리는 프래그먼트에 대한 초기에 정의된 프래그먼트 데이터 값들을 처리하여 프래그먼트에 대한 출력 데이터(프래그먼트가 표현하는 샘플링 포인트(들)를 표시하는데 필요한 데이터)를 올바르게 도출한다. 프래그먼트 셰이더도 마찬가지로 프래그먼트들을 적절히 셰이딩(칼라 표시)하기 의해 한 개 이상의 프래그먼트 셰이더 프로그램들을 실행하는 프로그래머블 유닛이어도 된다. 프래그먼트들은 개별적으로 또는 그룹으로 함께 처리된다(예를 들어, 샘플링, 셰이딩 등이 된다). 예를 들어, 더 작거나 더 큰 그룹의 프래그먼트들이 사용될 때도 있지만, 2x2 프래그먼트들의 그룹들이 "쿼드(quad)"로서 함께 처리된다.
정점 및 프래그먼트 셰이딩 연산은 소위 "속성"에 대해 동작한다. 속성은, 셰이더 프로그램 내부의 입력 또는 출력 변수이며, 예를 들어, 칼라, 투명도, 텍스처 좌표 등을 표시한다. 정점 셰이더는 장면의 각각의 프리미티브(폴리곤)를 정의 및 표현하는데 사용되는 각각의 정점에 대해 속성들(칼라, 투명도, 텍스처 좌표 등)의 세트를 발생하게 된다. 이들 발생된 속성들은 일반적으로 정점 셰이딩된 속성 데이터로 불린다.
프래그먼트 셰이딩 처리의 일부로서, 프래그먼트 셰이더는 보통 정점 셰이딩된 속성 데이터를 보간하여 프래그먼트의 샘플링 포인트(들)에 대한 보간된 속성 데이터를 발생한다. 보간된 속성 데이터를 제공하는 이와 같은 처리는 일반적으로 변동 계산(varying calculation)으로 불리며, 예를 들어, 프래그먼트 셰이더의 변동 파이프라인에서 행해진다. 변동 파이프라인은 보통 프래그먼트에 대한(예를 들면, 프래그먼트의 샘플링 포인트(들)에 대한) 정점 셰이딩된 속성 데이터 및 x,y 좌표를 입력하여 보간된 속성 데이터를 출력하는 변동 보간기를 구비한다.
도 1은 정점 셰이딩된 속성 데이터의 보간에 대한 접근방법을 나타낸 것으로, 삼각형 프리미티브(5)가 4개의 프래그먼트들(6, 7, 8, 9)로 이루어진 "쿼드"(10)를 사용하여 샘플링되고 있으며 각각의 프래그먼트들(6, 7, 8, 9)은 중심의 샘플링 포인트를 갖는다. 이와 같은 예에서, 각각의 샘플링 포인트들에 대한 x,y 좌표들을 변동 보간기가 직접 사용하여 프리미티브에 대한 변동 평면 방정식을 평가함으로써 이들 샘플링 포인트들에 대한 보간된 속성 데이터(S0, S1, S2, S3)를 제공한다. 그러나, 이와 같은 방식으로 직접 각각의 세트의 x,y 좌표에 대해 병동 평면 방정식을 평가하는 것은 계산상으로 비용이 많이 들 수 잇다.
도 2는 프래그먼트들 중에서 한 개(6)의 샘플링 포인트들 중에서 한 개만의 x,y 좌표를 직접 사용하여 이 샘플링 포인트에 대한 보간된 속성 데이터 S0를 제공하는 또 다른 접근방식을 나타낸 것이다. 그후, 샘플링 포인트 델타 값들 Sx, Sy를 사용하여 예를 들어 다음과 같은 방법으로 나머지 프래그먼트들(7, 8, 9)의 나머지 샘플링 포인트들 각각에 대한 보간된 속성 데이터 S1, S2, S3를 제공한다.
Figure pat00001
이와 같은 방식으로 샘플링 포인트 델타 값들을 사용하는 것은, 이 샘플링 포인트의 x,y 좌표들을 사용하여 샘플링 포인트들 각각에 위치한 프리미티브에 대한 변동 평면 방정식 전체를 평가할 필요가 없기 때문에, 직접 샘플링 포인트들 각각에 대한 x,y 좌표를 사용하는 것보다 계산상으로 비용이 적게 들 수 있다. 그러나, 샘플링 포인트 델타 값들을 포함하는 가산 연산들의 수가 모든 샘플링 포인트들에 걸쳐 일관되지 않기 때문에, 이와 같은 접근방식은 여전히 비효율적일 수 있다. 특히, S1 및 S2를 발생하는데 한 개의 가산 연산만이 존재하지만, S3를 발생하는데 2개의 가산 연산이 존재한다. 이것은, 예를 들면, 일부의 연산 사이클 중에 가산 연산을 수행하는데 사용되는 일부의 가산기들이 휴지 상태로 유지되거나 피드백 루프를 포함시킬 필요가 있다는 것을 의미한다.
본 출원인은, 보간된 정점 속성 데이터를 발생하는 프래그먼트 셰이딩 스테이지를 포함하는 그래픽 프로세서의 연산에 개략의 여지가 남아 있다고 믿고 있다.
본 발명의 일면에 따르면, 프리미티브들에 대한 정점 셰이딩된 속성 데이터를 처리하여 샘플링 포인트들에 대한 보간된 속성 데이터를 발생하는 프래그먼트 셰이딩 스테이지를 구비한 그래픽 처리 시스템의 작동방법으로서,
프리미티브에 대한 샘플링 포인트 델타 값들을 발생하는 단계와,
프리미티브를 샘플링하는데 사용되고 잇는 복수의 샘플링 포인트들의 그룹 중에서 적어도 한 개의 샘플링 포인트에 대한 보간된 속성 데이터를 발생하는 단계를 포함하고,
적어도 한 개의 샘플링 포인트에 대한 보간된 속성 데이터는 샘플링 포인트 델타 값들 중에서 적어도 한 개와 함께 복수의 샘플링 포인트들의 그룹에 대한 기준점의 위치를 사용하여 발생되고,
복수의 샘플링 포인트들의 그룹에 대한 기준점의 위치가 제 1 좌표게에 대해 정의되고, 프리미티브에 대한 샘플링 포인트 델타 값들이 제 1 좌표게에 대해 회전하는 제 2 좌표계에 대해 정의되는, 그래픽 처리 시스템의 작동방법이 제공된다.
본 발명의 또 다른 일면에 따르면, 프리미티브들에 대한 정점 셰이딩된 속성 데이터를 처리하여 샘플링 포인트들에 대한 보간된 속성 데이터를 발생하도록 구성된 프래그먼트 셰이딩 스테이지를 구비한 그래픽 처리 시스템으로서, 상기 시스템은,
프리미티브에 대한 샘플링 포인트 델타 값들을 발생하고,
프리미티브를 샘플링하는데 사용되고 있는 복수의 샘플링 포인트들의 그룹 중에서 적어도 한 개의 샘플링 포인트에 대한 보간된 속성 데이터를 발생하도록 구성된 처리회로를 더 구비하고,
상기 처리회로는, 적어도 한 개의 샘플링 포인트 델타 값들과 함께 복수의 샘플링 포인트들의 그룹에 대한 기준점의 위치를 사용하여 적어도 한 개의 샘플링 포인트에 대한 보간된 속성 데이터를 발생하도록 구성되고,
복수의 샘플링 포인트들의 그룹에 대한 기준점의 위치가 제 1 좌표게에 대해 정의되고, 프리미티브에 대한 샘플링 포인트 델타 값들이 제 1 좌표게에 대해 회전하는 제 2 좌표계에 대해 정의되는, 그래픽 처리 시스템이 제공된다.
본 발명에서는, 복수의 샘플링 포인트들의 그룹 중에서 한 개의 샘플링 포인트에 대한 보간된 속성 데이터가 적어도 한 개의 샘플링 포인트 델타 값과 함께 복수의 샘플링 포인트들의 그룹에 대한 기준점의 위치를 사용하여 발생된다. 전술한 것과 같이, 샘플링 포인트 델타 값들을 사용하는 것은, 예를 들어, 샘플링 포인트들 각각의 위치를 직접 사용하여 보간된 속성 데이터를 발생하는 것보다 계산상으로 비용이 적게 들 수 있다. 더구나, 본 발명에서는, 샘플링 포인트 델타 값들이 기준점의 위치를 정의하는데 사용되는 제 1 좌표게에 대해 회전하는 제 2 좌표계에 대해 정의된다. 본 출원인은, Ordered 4x, Rotated 4x, Direct4D 8x 등과 같이, 특히 많은 수의 공통된 샘플링 포인트 패턴들에 대해, 샘플링 포인트 델타 값들을 사용하여 보간된 속성 데이터를 발생할 때 행할 필요가 있는 연산들의 수를 더욱 균일하게 분포시킬 수 있다는 것을 인식하였다. 따라서, 본 발명은 보간된 속성 데이터가 더욱 효율적으로 발생될 수 있도록 하는 그래픽 처리 시스템을 제공한다.
제 1 좌표계는 본 발명에서는 "x" 및 "y"로 부르는 제 1 쌍의 수직 축들을 포함한다. 제 1 좌표계의 좌표들은 출력 위치, 예를 들면 표시 화면 위치들과 관련된다. 따라서, 제 1 좌표계는 "화면 공간"으로 부를 수 있다. 계층화되거나 3차원 그래픽 처리에 대해, 제 1 좌표계는 이 쌍의 수직 축들과 수직한 또 다른 축을 포함한다. 이 또 다른 축은 본 발명에서는 "z" 또는 "깊이" 축으로 부른다.
제 2 좌표계는 본 발명에서는 "xmy" 및 "ymy" 축으로 부르는 제 2 쌍의 수직 축을 포함한다. 전술한 것과 같이, 제 2 좌표계는 제 1 좌표계에 대해 회전한다. 따라서, 제 2 좌표계는 "회전된 화면 공간"으로 부른다. 주지하는 것과 같이, 제 2 좌표계의 제 2 쌍의 수직 축들은 제 1 좌표계의 제 1 쌍의 수직 축들에 대해 회전하는 것이 바람직하다. 계층화되거나 3차원 그래픽 처리에서는, 제 2 좌표계는 제 2 쌍의 수직 축들에 수직한 또 다른 축을 더 포함해도 된다. 이 또 다른 축은 제 1 좌표계와 공유되고 마찬가지로 "z" 또는 "깊이" 축으로 불린다.
따라서, 제 2 좌표계는, 바람직하게는, 제 1 및/또는 제 2 쌍의 수직 축들로 정의된 평면 내에서, 및/또는 제 1 및/또는 제 2 좌표계의 원점을 중심으로, 및/또는 제 1 및/또는 제 2 쌍의 수직 축들(바람직하게는 다른 축에 대해서는 아니다)에 대해 수직한 또 다른 축을 중심으로 제 1 좌표계에 대해 회전한다. 바람직한 실시예에서, 예를 들어, 프리미티브를 샘플링하는데 사용되고 있는 복수의 샘플링 포인트들의 그룹의 특정한 샘플링 포인트 패턴에 의존하여, 다른 회전이 사용될 수도 있기는 하지만, 제 2 좌표계는 제 1 좌표계에 대해 45°만큼(또는 그것의 배수만큼) 회전한다.
복수의 샘플링 포인트들의 그룹에 대한 기준점은 원하는 적절한 위치에 배치되어도 된다. 그러나, 바람직한 실시예에서는, 제 1 좌표계의 한 개 이상의 축들을 따라 정수 위치(예를 들면, 정수(x 또는 y) 좌표, 정수의 프래그먼트들/픽셀들 등)에 배치된다. 이들 실시예는, 예를 들어, 기준점의 위치를 표시하는데 필요한 비트들의 수를 줄일 수 있다.
바람직한 실시예에서, 기준점은 샘플링 포인트들의 그룹의 복수의 샘플링 포인트들에 대해 중심에 배치된다. 바람직한 실시예에서, 복수의 샘플링 포인트들의 그룹의 샘플링 포인트들의 적어도 일부 또는 전체가 기준점으로부터 등거리에 있다. 기준점은, 바람직하게는, 기준점으로부터 복수의 샘플링 포인트들의 그룹의 샘플링 포인트들의 적어도 한 개, 일부 또는 전체까지의 직선이 제 2 좌표계의 축들 중에서 한 개와 평행하도록 배치된다. 기준점은 바람직하게는 복수의 샘플링 포인트들의 그룹의 샘플링 포인트들의 적어도 한 개, 일부 또는 전체가 제 2 좌표계의 한 개 이상의 축들을 따라 정수의 단위 스텝(step)들만큼 기준점으로부터 뻗을 수 잇도록 배치된다. 이들 실시예는, 예를 들어, 샘플링 포인트 델타 값들을 사용하여 보간된 속성 데이터를 발생할 때 행해질 필요가 있는 연산을 더욱 단순화할 수 있다.
프리미티브들에 대한 정점 셰이딩된 속성은, 예를 들면, 종래의 방법으로, 그래픽 처리 시스템의 정점 셰이딩 스테이지에 의해 발생된다. 따라서, 그래픽 처리 시스템은 입력 속성 데이터를 처리하여 프래그먼트 셰이딩 스테이지에 의해 사용되는 프리미티브들에 대한 정점 셰이딩된 속성 데이터를 발생하는 정점 셰이딩 스테이지를 구비한다. 정점 셰이딩된 속성 데이터는 정점 셰이더가 발생하거나 동작할 수 있는 임의의 원하는 적절한 이와 같은 속성 데이터이어도 된다. 이것은, 프리미티브에 대한, 정점 위치, 정점 칼라, 정점 투명도, 정점 텍스처 좌표 등의 속성들의 값들을 포함한다.
바람직한 실시예에서, 보간된 속성 데이터를 발생하는 단계는 프리미티브에 대한 추상 파라미터(abstract parameter) 공간에서 일어난다. 이 파라미터 공간은 바람직하게는 프리미티브에 대한 무게중심 파라미터 공간이다.
본 기술분야의 당업자에게 있어서 자명한 것과 같이, 프리미티브에 대한 무게중심 파라미터 공간 내부의 점에 대한 무게중심 좌표는 보통 i, j, k로 주어지며, 이때 i, j, k 각각은 이 점에 대한 각각의 정점 속성에 대한 가중치(또는 이 정점까지의 거리)를 표시한다. 따라서, k의 값을 i 및 j의 값을 사용하여 추론할 수 있다 따라서, 바람직한 실시예와 이하의 설명에서는, k의 값을 더 이상 고려하지 않는다.
프리미티브에 대한 무게중심 파라미터 공간 내부의 점에 대한 무게중심 좌표는 임의의 원하는 적절한 방법으로 계산할 수 있다. 그러나, 바람직한 실시예와 이하의 설명에서는, 이 프리미티브에 대한 무게중심 파라미터 공간 내부의 점에 대한 무게중심 좌표는 이 프리미티브에 대한 변동 평면 방정식에 대한 무게중심 좌표들(ia, ja; ib, jb; ic, jc)로부터 계산된다. 비회전된 제 1 좌표게에 있어서의 이들 변동 평면 방정식은 다음과 같은 형태를 가질 수 있다.
Figure pat00002
따라서, 프리미티브에 대한 무게중심 좌표들(ia, ja; ib, jb; ic, jc)이 존재한다. 무게중심 좌표들(ia, ja; ib, jb; ic, jc)은, 예를 들면 정점 셰이딩 스테이지로부터 출력된 정점 위치 데이터를 사용하여, 프리미티브(예를 들면, 삼각형) 설정 중에 발생된다. 이 프리미티브 설정은, 그래픽 처리 파이프라인에 있어서 래스터화 스테이지 앞에 놓이거나 이 래스터화 스테이지의 일부를 이루는 그래픽 처리 시스템의 프리미티브(예를 들면, 삼각형) 설정 스테이지에 의해 행해진다.
본 기술분야의 당업자에게 있어서 자명한 것과 같이, 전술한 무게중심 좌표는 원근 수정(perspective correction)되지 않는다. 따라서, 필요한 경우에는, 프리미티브에 대한 무게중심 파라미터 공간 내부의 점에 대해 원근 수정값(w)이 제공되어도 된다.
프리미티브에 대한 무게중심 파라미터 공간 내부의 점에 대한 원근 수정값(w)는 임의의 원하는 적절한 방식으로 계산될 수 있다. 그러나, 바람직한 실시예에서는, 프리미티브에 대한 무게중심 파라미터 공간 내부의 점에 대한 원근 수정값(w)는 프리미티브에 대한 변동 평면 방정식에 대한 원근 수정 계수들(wa; wb; wc)을부터 계산된다. 비회전된 제 1 좌표계에서의 이와 같은 변동 평면 방정식은 다음과 같은 형태를 취한다.
Figure pat00003
이때, 원근 수정된 무게중심 좌표는 다음과 같이 주어진다.
Figure pat00004
필요한 경우에는, 원근 수정값(w) 및/또는 원근 수정 계수들(wa; wb; wc)은 원근 수정을 적용할 때 무게중심 좌표들을 정규화하는 효과를 갖는 프리미티브에 대한 제약 인자를 포함해도 된다.
마찬가지로, 원근 수정 계수들(wa; wb; wc)은, 예를 들면 정점 셰이딩 스테이지로부터 출력된 정점 위치 데이터를 사용하여, 프리미티브 설정 중에 발생된다.
프리미티브에 대한 샘플링 포인트 델타 값들(Sxpy, Sxmy)은, 바람직하게는 제 2 좌표계의 축들(xmy, xpy) 중에서 한 개를 따른 단위 스텝에 대해, 프리미티브를 샘플링할 때 보간할 값(예를 들면, 칼라 값(RGB), 투명도 값(알파), 텍스처 좌표, 무게중심 좌표(i, j), 원근 수정값(w) 등)의 변화와 각각 관련된다.
전술한 것과 같이, 바람직한 실시예에서는, 보간된 속성 데이터를 발생하는 단계는 무게중심 파라미터 공간에서 일어난다. 이들 실시예에서, 샘플링 포인트 델타 값들은 제 2 좌표계에 대해 정의된 (회전된) 무게중심 계수들(iapb, japb; iamb, jamb)를 포함한다. 이하에서 더욱 상세히 설명하는 것과 같이, 샘플링 포인트 델타 값들은 제 2 좌표계에 대해 정의된 (회전된) 원근 수정 계수들(wapb, wamb)을 더 포함한다.
바람직하게는, 보간할 각각의 종류의 값에 대해, 바람직하게는 이 값의 보간이 일어날 때 따르게 되는 제 2 좌표계의 각각의 축(xmy, xpy)에 대해 적어도 한 개의 샘플링 포인트 델타 값이 존재한다. 예를 들면, 2개의 축(xmy, xpy)을 따라 보간할 2개의 무게중심 좌표(i, j)가 존재하는 경우에는, 적어도 4개의 샘플링 포인트 델타 값들(iapb, japb; iamb, jamb)이 발생된다. 마찬가지로, 2개의 축(xmy, xpy)을 따라 보간할 한 개의 원근 수정값9w)가 존재하는 경우에는, 적어도 2개의 또 다른 샘플링 포인트 델타 값들(wapb, wamb)이 발생된다.
샘플링 포인트 델타 값들은 임의의 원하는 적절한 방식으로 발생되어도 된다, 일부 실시예에서는, 샘플링 포인트 델타 값의 발생은 제 1 좌표계에 대해 정의된 (비회전된) 샘플링 포인트 델타 값들(Sx, Sy)을 발생하는 단계를 포함한다. 그후, 제 1 좌표게에 대해 정의된 (비회전된) 샘플링 포인트 델타 값들이 회전하여 제 2 좌표계에 대해 정의된 (회전된) 샘플링 포인트 델타 값들(Sxpy, Sxmy)을 발생한다.
제 2 좌표계에 대해 정의된 (회전된) 샘플링 포인트 델타 값들(Sxpy, Sxmy)을 발생하는 단계는, 제 1 좌표계에 대해 정의된 (비회전된) 샘플링 포인트 델타 값들(Sx; Sy)에 회전행렬을 적용하는 단계를 포함한다. 예를 들어, 샘플링 포인트 델타 값들(Sx; Sy)을 발생하는 단계는 다음과 같은 회전행렬를 적용하는 단계를 포함한다.
Figure pat00005
이때, θ는 (반시계 방향의) 회전 각도이다. 주지하는 것과 같이, 원하는 회전을 달성하기 위해 등가의 계산이 행해져도 된다.
제 2 좌표게에 대해 정의된 샘플링 포인트 델타 값들(Sxpy, Sxmy)을 발생하는 단계는 추가적인 스케일링(즉, (순수한) 회전의 결과로써 발생하는 고유의 스케일링 이외의 스케일링)을 적용하는 단계를 더 포함한다. 이와 같은 추가적인 스케일링은, 예를 들면, 샘플링 포인트 델타 값들의 더욱 간단한 발생을 허용한다. 예를 들어, 전술한 것과 같이, 바람직한 실시예에서는, 제 2 좌표계가 제 1 좌표계에 대해 45°만큼(그것의 배수만큼) 회전한다. 주지하는 것과 같이, 이들 바람직한 실시예에서는, 제 1 좌표계에 대해 정의된 (비회전된) 샘플링 포인트 델타 값들이 고유하게 회전의 결과로써 1/√2(즉, cos 45°또는 sin 45°)만큼 스케일링된다. 이들 바람직한 실시예에서는, 적용될 수 있는 추가적인 스케일링은 1/√2에 의한 추가적인 승산이다. 주지하는 것과 같이, 이것은 제 1 좌표계에 대해 정의된 (비회전된) 샘플링 포인트 델타 값들에 대해 전체 1/2(즉, 1/√2x1/√2)의 스케일링이 적용되게 한다. 따라서, 1/2로 샘플링 포인트 델타 값들을 승산하고, 이것은 비트 시프트를 사용하여 간단히 달성되기 때문에, 제 2 좌표계에 대해 정의된 (회전된) 샘플링 포인트 델타 값의 전체적인 발생이 단순화될 수 있다.
전술한 것과 같이, 바람직한 실시예에서는, 보간된 속성 데이터를 발생하는 단계는 무게중심 파라미터 공간에서 일어난다. 이들 실시예에서, 제 1 좌표계에 대해 정의된 (비회전된) 샘플링 포인트 델타 값들(Sx; Sy)은 제 1 좌표계에 대해 정의된 (비회전된) 무게중심 좌표들(ia, ja; ib, jb)을 포함한다. 마찬가지로, 제 2 좌표게에 대해 정의된 (회전된) 샘플링 포인트 델타 값들(Sxpy; Sxmy)은 제 2 좌표게에 대해 정의된 (회전된) 무게중심 좌표들(iapb, japb; iamb,jamb)을 포함한다.
이들 바람직한 실시예에서, 제 1 좌표계에 대해 정의된 (비회전된) 샘플링 포인트 델타 값들(ia, ja; ib, jb)로부터 제 2 좌표계에 대해 정의된 (회전된) 샘플링 포인트 델타 값들(iapb, japb; iamb,jamb)을 발생하는 것은 다음과 같이 행해진다.
Figure pat00006
주지하는 것과 같이, 전술한 방정식은 다음과 같은 회전행렬을 적용하는 것과 등가이다.
Figure pat00007
이때, 1/√2에 의한 승산에 의해 얻어지는 추가적인 스케일링과 함께, θ는 45°이다.
프리미티브에 대한 샘플링 포인트 델타 값들은 그래픽 처리 시스템의 임의의 원하는 적절한 스테이지에 의해 발생되어도 된다. 바람직한 실시예에서, 샘플링 포인트 델타 값들은, 예를 들어, 정점 셰이딩 스테이지로부터 출력된 정점 위치 데이터를 사용하여, 프리미티브 설정중에, 적어도 일부가 발생된다.
따라서, 그래픽 처리 시스템은, 예를 들면, 정점 셰이딩 스테이지로부터 출력된 정점 위치 데이터를 사용하여, 프래그먼트 셰이딩 스테이지에 의해 사용되는 프리미티브에 대한 (회전되거나, 및/또는 비회전된) 샘플링 포인트 델타 값들을 발생하는 프리미티브 설정 스테이지를 포함한다. 전술한 것과 같이, 프리미티브 설정 스테이지는 그래픽 처리 파이프라인 내부의 래스터화 스테이지 앞에 위치하거나 래스터화 스테이지의 일부를 구성한다. 그래픽 처리 시스템은, 프리미티브 설정 스테이지가 사용하는 정점 위치 데이터를 발생하는 정점 셰이딩 스테이지를 더 구비한다.
바람직한 실시예에서, 프리미티브 설정 스테이지는, 예를 들면, 전술한 방법으로, 제 1 좌표계에 대해 정의된 (비회전된) 샘플링 포인트 델타 값들을 발생한다. 그후, 프리미티브 설정 스테이지는, 예를 들면, 전술한 방법으로, 제 1 좌표게에 대해 정의된 (비회전된) 샘플링 포인트 델타 값들을 회전하여, 프리미티브에 대한 제 2 좌표계에 대해 정의된 (회전된) 샘플링 포인트 델타 값들을 발생한다.
다른 덜 바람직한 실시예에서, 프리미티브 설정 스테이지는, 예를 들면 전술한 방법으로, 제 1 좌표계에 대해 정의된 (비회전된) 샘플링 포인트 델타 값들을 발생한다. 그러나, 그후, 프래그먼트 셰이딩 스테이지는, 예를 들면 전술한 방법으로, 제 1 좌표계에 대해 정의된 (비회전된) 샘플링 포인트 델타 값들을 회전시켜, 프리미티브에 대한 제 2 좌표게에 대해 정의된 (회전된) 샘플링 포인트 델타 값들을 발생한다.
보간된 속성 데이터는 프래그먼트 셰이더가 발생하거나 동작하는 임의의 원하는 적절한 속성 데이터이어도 된다. 이것은, 예를 들면, 칼라 값(RGB), 투명도 값(알파), 텍스처 좌표 등의 속성 값들을 포함한다.
전술한 것과 같이, 본 발명에서는, 복수의 샘플링 포인트들의 그룹의 적어도 한 개의 샘플링 포인트에 대한 보간된 속성 데이터가 샘플링 포인트 델타 값들 중에서 적어도 한 개와 함께 복수의 샘플링 포인트들의 그룹에 대한 기준점의 위치를 사용하여 발생된다. 이것은 임의의 원하는 적절한 방식으로 행해진다.
그러나, 전술한 것과 같이, 바람직한 실시예에서는, 이것이 프리미티브에 대한 무게중심 파라미터 공간을 사용하여 행해진다. 이들 바람직한 실시예에서, 기준점의 위치의 사용은 기준점의 위치로부터 기준점에 대한 무게중심 좌표들(icentre, jcentre)을 결정하는 것을 포함한다. 이들 실시예에서, 기준점에 대한 무게중심 좌표들(icentre, jcentre)을 결정하는 것은 제 1 좌표게에 대해 정의된 기준점의 (비회전된) 위치 좌표들(xcentre, ycentre)을 회전시켜, 제 2 좌표계에 대해 정의된 기준점에 대한 (회전된) 위치 좌표들(xpycentre, xmycentre)을 발생하는 것을 포함한다.
제 2 좌표게에 대해 정의된 기준점에 대한 (회전된) 위치 좌표들(xpycentre, xmyentre)을 발생하는 것은, 제 1 좌표게에 대해 정의된 (비회전된) 회전 좌표들(xcentre, ycentre)에 대해 회전행렬을 적용하는 것을 포함한다. 예를 들면, 기준점에 대한 (회전된) 위치 좌표들(xpycentre, xmycentre)을 발생하는 것은 다음과 같은 회전행렬을 적용하는 것을 포함한다.
Figure pat00008
이때, θ는 (반시계 방향의) 회전 각도이다. 주지하는 것과 같이, 원하는 회전을 달성하기 위해 등가의 계산을 행해도 된다.
제 2 좌표계에 대해 정의된 기준점에 대한 (회전된) 위치 좌표들(xpycentre, xmyentre)을 발생하는 것은 추가적인 스케일링(즉, (순수한) 회전의 결과로써 발생하는 고유의 스케일링 이외의 스케일링)을 적용하는 것을 더 포함한다. 이와 같은 추가적인 스케일링은, 예를 들면, 위치 좌표들(xpycentre, xmycentre)의 더욱 간단한 발생을 허용한다.
예를 들면, 전술한 것과 같이, 바람직한 실시예에서는, 제 2 좌표계는 제 1 좌표계에 대해 45。(또는 그것의 배수)만큼 회전한다. 주지하는 것과 같이, 이들 바람직한 실시예에서는, 제 1 좌표계에 대해 정의된 (비회전된) 위치 좌표들(xcentre, ycentre)은 회전의 결과로써 1/√2(즉, cos 45° 또는 sin 45°)만큼 고유하게 스케일링된다. 이들 바람직한 실시예에서는, 적용될 수 있는 추가적인 스케일링은 1/√2에 의한 승산이다. 주지하는 것과 같이, 이것은 제 1 좌표계에 대해 정의된 (비회전된) 위치 좌표들(xcentre, ycentre)에 대해 전체적으로 스케일링이 적용되지 않게 한다(즉, 1/√2*√2=1). 따라서, 제 1 좌표계에 대해 정의된 (비회전된) 위치 좌표들(xcentre, ycentre)에 대해 승산을 행할 필요가 없기 때문에, 제 2 좌표계에 대해 정의된 (회전된) 위치 좌표들(xpycentre, xmycentre)의 발생을 단순화할 수 있다.
또한, 주지하는 것과 같이, 위치 좌표들을 회전할 때 적용된 추가적인 스케일링(예를 들면, √2)은 바람직하게는 샘플링 포인트 델타 값들을 회전할 때 적용된 추가적인 스케일링(예를 들면, 1/√2)에 의해 상쇄되어, 전체적으로 보간된 속성 데이터의 스케일링이 존재하지 않는다. 이것은 일반적으로 보간된 속성 데이터의 왜곡을 방지하는데 바람직하다. 전체적인 스케일링의 부재는, 위치 좌표들을 회전할 때 적용된 추가적인 스케일링을 샘플링 포인트 델타 값들을 회전할 때 적용된 추가적인 스케일링으로 교체함으로써 달성될 수도 있다. 예를 들면, 위치 좌표들을 회전할 때 적용된 추가적인 스케일링은 1/√2이고, 샘플링 포인트 델타 값들을 회전할 때 적용된 추가적인 스케일링은 √2이다.
그후, 제 2 좌표계에 대해 정의된 기준점에 대한 (회전된) 위치 좌표들(xpycentre, xmycentre)을 사용하여 기준점에 대한 무게중심 좌표들(icentre, jcentre)을 결정한다.
바람직한 실시예에서, 기준점에 대한 무게중심 좌표들(icentre, jcentre)은, 예를 들어 다음과 같은 변동 평면 방정식을 사용하여, 제 2 좌표계에 대해 정의된 (회전된) 샘플링 포인트 델타 값들(iapb, japb; iamb, jamb)과 함께, 제 2 좌표계에 대해 정의된 (회전된) 위치 좌표들(xpycentre, xmycentre)을 사용하여 결정된다.
Figure pat00009
바람직한 실시예에서, 다음과 같은 방법으로, 기준점에 대한 무게중심 좌표들(icentre, jcentre)에 대해 샘플링 포인트 델타 값들(iapb, japb; iamb, jamb) 중에서 적어도 한 개를 가산하거나 감산하여, 복수의 샘플링 포인트들의 그룹의 적어도 한 개의 샘플링 포인트에 대한 무게중심 좌표(i0, j0; i1, j1 ;i2, j2; i3, j3)를 발생한다.
Figure pat00010
주지하는 것과 같이, 전술한 무게중심 좌표들은 원근 수정되지 않는다. 따라서, 이하에서 더욱 상세히 설명하는 것과 같이, 전술한 무게중심 좌표들은 이 스테이지에서 필요한 경우에는 원근 수정되어도 된다. 또한, 이 스테이지에서, 예를 들면, 프리미티브에 대한 상수로 무게중심 좌표들을 나누거나, 또는 무게중심 좌표들에 원근 수정을 적용할 때, 무게중심 좌표들을 정규화하여도 된다.
따라서, 전술한 것과 같이, 바람직한 실시예에서는, 샘플링 포인트 델타 값들(iapb, japb; iamb, jamb)은, 바람직하게는 제 2 좌표계의 축들(xmy, xpy)을 따른 단위 스텝들에 대해, 프리미티브에 대한 무게중심 위치의 변화(예를 들면, 무게중심 좌표들(i, j)의 변화)와 관련된다.
따라서, 복수의 샘플링 포인트 델타 값들 중에서 적어도 한 개와 함께 복수의 샘플링 포인트들의 그룹에 대한 기준점의 위치를 사용하는 것은, 복수의 샘플링 포인트들의 그룹에 대한 기준점을 처리하여 기준점에 대한 무게중심 좌표들을 발생하는 단계와, 기준점에 대한 무게중심 좌표들과 샘플링 포인트 델타 값들 중에서 적어도 한 개를 결합하여 복수의 샘플링 포인트들의 그룹의 적어도 한 개의 샘플링 포인트에 대한 무게중심 좌표들을 발생하는 단계를 포함한다.
마찬가지로, 프래그먼트 셰이딩 스테이지는, 복수의 샘플링 포인트들의 그룹에 대한 기준점을 처리하여 기준점에 대한 무게중심 좌표들을 발생한 후, 기준점에 대한 무게중심 좌표들과 샘플링 포인트 델타 값들 중에서 적어도 한 개를 결합하여 복수의 샘플링 포인트들의 그룹의 적어도 한 개의 샘플링 포인트에 대한 무게중심 좌표들을 발생하도록 구성된 처리회로(예를 들면, 변동 보간기(의 무게중심 평가기))를 구비한다.
그후, 복수의 샘플링 포인트들의 그룹의 적어도 한 개의 샘플링 포인트(i0, j0; i1, j1 ;i2, j2; i3, j3)에 대한 무게중심 좌표들을 사용하여 적어도 한 개의 샘플링 포인트에 대한 보간된 속성 데이터(S9, S1, S2, S3)를 유도한다.
적어도 한 개의 샘플링 포인트에 대한 보간된 속성 데이터(S9, S1, S2, S3)를 유도하는 것은, 적어도 한 개의 샘플링 포인트에 대한 무게중심 좌표들(i0, j0; i1, j1 ;i2, j2; i3, j3)을 사용한 보간을 포함한다. 보간은, 다음과 같은 방법으로, 적어도 한 개의 샘플링 포인트에 대한 각각의 무게중심 좌표(i0, j0; i1, j1 ;i2, j2; i3, j3)를, 이 무게중심 좌표가 관련되는 정점에 대한 대응하는 정점 셰이딩된 속성값(Si, Sj, Sk, 예를 들면, 칼라 값, 투명도 값, 텍스처 좌표 등)으로 승산한 후, 승산의 결과를 합산하는 단계를 포함한다.
Figure pat00011
상기한 수식은 다음과 같이 일반화해도 된다.
Sn=[Sixin]+[Sjxjn]+[Skx(1-in-jn)], 이때 n은 샘플링 포인트 번호이다(예를 들면, 0, 1, 2, 3).
상기한 수식은 다음과 같이 고쳐 써도 된다.
Figure pat00012
또는
Figure pat00013
본 실시예에서, 적어도 한 개의 샘플링 포인트에 대한 보간된 속성 데이터를 도출할 때 전술한 형태의 보간 방정식이 사용된다. 이와 같은 구성은, 예를 들면, 사전에, 즉 적어도 한 개의 샘플링 포인트에 대한 보간된 속성 데이터를 도출하기 전에, 프리미티브의 정점들에 대한 "수정된" 정점 셰이딩된 속성값들(Si_new, Sj_new, Sk)이 이 프리미티브의 정점들에 대한 "수정되지 않은" 정점 셰이딩된 속성값들(Si, Sj, Sk)로부터 산출될 수 있도록 한다. 그후, 프리미티브의 정점들에 대한 수정된 정점 셰이딩된 속성값들(Si_new, Sj_new, Sk)은, 예를 들면, 다른 샘플링 포인트들에 대한 보간된 속성 데이터를 도출할 때 재사용할 수 있다. 이와 같은 구성은, 예를 들면, 복수의 샘플링 포인트에 대해 동일한 계산을 복수회 행할 필요를 없앰으로써, 보간된 속성 데이터를 도출할 때의 처리 부담을 줄일 수 있다.
따라서, 바람직한 실시예들에서는, 프리미티브의 정점들에 대한 수정된 정점 셰이딩된 속성값들(Si_new, Sj_new, Sk)은 이 프리미티브의 정점들에 대한 정점 셰이딩된 속성값들(Si, Sj, Sk)로부터 산출된다. 프리미티브의 정점들에 대한 수정된 정점 셰이딩된 속성값들(Si_new, Sj_new, Sk)은 바람직하게는 다음과 같이 이 프리미티브의 정점들에 대한 정점 셰이딩된 속성값들(Si, Sj, Sk)로부터 산출된다.
Figure pat00014
그후, 프리미티브의 정점들에 대한 수정된 정점 셰이딩된 속성값들(Si _new, Sj_new, Sk)은, 예를 들면, 적어도 한 개의 샘플링 포인트에 대한 보간된 속성 데이터를 유도할 때 사용할 준비가 되는, 속성 캐시에 기억된다.
따라서, 전술한 것과 같이, 샘플링 포인트 델타 값들 중에서 적어도 한 개와 함께 복수의 샘플링 포인트들의 그룹에 대한 기준점의 위치를 이용하는 것은, 복수의 샘플링 포인트들의 그룹의 적어도 한 개의 샘플링 포인트에 대한 무게중심 좌표들을 처리하여 복수의 샘플링 포인트들의 그룹의 적어도 한 개의 샘플링 포인트에 대한 보간된 속성 데이터를 발생하는 단계를 포함한다.
마찬가지로, 프래그먼트 셰이딩 스테이지는, 복수의 샘플링 포인트들의 그룹의 적어도 한 개의 샘플링 포인트에 대한 무게중심 좌표들을 처리하여, 복수의 샘플링 포인트들의 그룹의 적어도 한 개의 샘플링 포인트에 대한 보간된 속성 데이터를 발생하도록 구성된 처리회로(예를 들면, 병동 보간기(의 속성 평가기))를 구비한다.
덜 바람직한 실시예에서, 기준점에 대한 기준 보간된 속성 데이터(Scentre)를 도출하기 위해 기준점의 위치에 대한 무게중심 좌표들(icentre, jcentre)을 대신에 사용한다. 기준점에 대한 기준 보간된 속성 데이터(Scentre)를 도출하는 것은, 적어도 한 개의 샘플링 포인트에 대한 무게중심 좌표들(icentre, jcentre)을 사용하는 것을 포함한다. 보간은, 다음과 같은 방법으로, 기준점에 대한 각각의 무게중심 좌표(icentre, jcentre)를, 이 무게중심 좌표가 관련되는 정점에 대한 대응하는 정점 셰이딩된 속성값(Si, Sj, Sk, 예를 들면, 칼라 값, 투명도 값, 텍스처 좌표 등)으로 승산한 후, 승산의 결과를 합산하는 단계를 포함한다.
Figure pat00015
그후, 다음과 같은 방법으로, 샘플링 포인트 델타 값들(Sxpy; Sxmy)의 적어도 한 개를 기준 보간된 속성 표시 데이터에 대해 가산 또는 감산하여, 복수의 샘플링 포인트들의 그룹의 적어도 한 개의 샘플링 포인트에 대한 보간된 속성 데이터(S0, S1, S2, S3)를 발생한다.
Figure pat00016
Figure pat00017
이들 덜 바람직한 실시예에서는, 샘플링 포인트 델타 값들(Sxpy; Sxmy)이, 무게중심 위치의 변화가 아니라, 바람직하게는 제 2 좌표계의 축을 따른 단위 스텝들에 대해, 정점 셰이딩된 속성 데이터(예를 들면, 칼라, 투명도, 텍스처 좌표 등)의 변화와 관련된다.
따라서, 덜 바람직한 실시예에서, 샘플링 포인트 델타 값들 중에서 적어도 한 개와 함께 복수의 샘플링 포인트들의 그룹에 대한 기준점의 위치를 사용하는 것은, 복수의 샘플링 포인트들의 그룹에 대한 기준점을 처리하여 기준점에 대한 기준 보간된 속성 데이터를 발생한 후, 기준점에 대한 기준 보간된 속성 데이터와 샘플링 포인트 델타 값들 중에서 적어도 한 개를 결합하여 복수의 샘플링 포인트들의 그룹의 적어도 한 개의 샘플링 포인트에 대한 보간된 속성 데이터를 발생하는 단계를 포함한다.
마찬가지로, 덜 바람직한 실시예에서, 프래그먼트 셰이딩 스테이지는, 복수의 샘플링 포인트들의 그룹에 대한 기준점을 처리하여 기준점에 대한 기준 보간된 속성 데이터를 발생한 후, 기준점에 대한 기준 보간된 속성 데이터와 샘플링 포인트 델타 값들 중에서 적어도 한 개를 결합하여 복수의 샘플링 포인트들의 그룹의 적어도 한 개의 샘플링 포인트에 대한 보간된 속성 데이터를 발생하도록 구성된 처리회로(예를 들면, 변동 보간기(의 결합된 무게중심 및 속성 평가기))를 구비한다.
이때, 전술한 덜 바람직한 실시예들은 원근 수정된 결과를 생성하지 않는다는 점에 주목하기 바란다. 그러나, 전술한 덜 바람직한 실시예들은, 예를 들면, 2D 그래픽 및/또는 블리팅(blitting)에 여전히 유용하다.
바람직한 실시예에서, 적어도 한 개의 샘플링 포인트에 대한 보간된 속성 데이터의 발생은 원근 수정을 적용하는 단계를 더 포함한다.
전술한 것과 같이, 바람직한 실시예에서, 보간된 속성 데이터를 발생하는 단계는 무게중심 파라미터 공간에서 일어난다. 이들 바람직한 실시예에서, 원근 수정을 적용하는 단계는, 예를 들면, 적어도 한 개의 샘플링 포인트에 대한 무게중심 좌표들을 사용하여 보간된 속성 데이터를 도출하기 전에, 적어도 한 개의 샘플링 포인트에 대한 원근 수정값(w0; w1; w2; w3)을 사용하여 적어도 한 개의 샘플링 포인트에 대한 무게중심 좌표들에 대해 스케일링을 적용하는 단계를 포함한다.
적어도 한 개의 샘플링 포인트에 대한 원근 수정값(w0; w1; w2; w3)은, 예를 들면, 적어도 한 개의 또 다른 샘플링 포인트 델타 값과 함께 복수의 샘플링 포인트들의 그룹에 대한 기준점의 위치(xcentre, ycentre)를 사용하여, 적어도 한 개의 샘플링 포인트에 대한 무게중심 좌표들과 유사한 방식으로 발생되어도 된다. 이들 추가적인 샘플링 포인트 델타 값들은 상기한 (회전된) 원근 수정 계수들(wapb; wamb)이어도 된다.
원근 수정 계수들(wapb; wamb)은 제 2 좌표계에 대해 정의되고, 전술한 나머지 샘플링 포인트 델타 값들과 유사하게 발생된다. 예를 들면, 원근 수정 계수들(wapb; wamb)을 발생하는 단계는, 제 1 좌표계에 대해 정의된 (비회전된) 원근 수정 계수들(wa; wb)을 발생하는 단계를 포함한다. 그후, 예를 들면, 다음과 같은 방법으로, 제 1 좌표계에 대해 정의된 (비회전된) 원근 수정 계수들(wa; wb)을 회전하여, 제 2 좌표계에 대해 정의된 (회전된) 원근 수정 계수들(wapb; wamb)을 발생한다.
Figure pat00018
주지하는 것과 같이 상기한 방정식은 다음과 같은 회전행렬를 적용하는 것과 등가이다.
Figure pat00019
이때, 1/√2에 의한 승산에 의해 얻어지는 추가적인 스케일링과 함께, θ는 45°이다.
(비회전 및/또는 회전된) 원근 수정 계수들의 발생은, 마찬가지로, 예를 들면, 정점 셰이딩 스테이지로부터 출력된 정점 위치 데이터를 사용하여, 프리미티브 설정 중에, 적어도 일부 행해지거나, 또는 프래그먼트 셰이딩 스테이지에 의해 적어도 일부가 행해진다.
적어도 한 개의 원근 수정 계수(wapb; wamb)와 함께 복수의 샘플링 포인트들의 그룹에 대한 기준점의 위치(xcentre, ycentre)는 전술한 나른 샘플링 델타 값들과 함께 복수의 샘플링 포인트들의 그룹에 대한 기준점의 위치(xcentre, ycentre)를 사용하는 것과 유사하게 행해져도 된다. 예를 들어, 기준점의 위치(xcentre, ycentre)를 사용하는 것은 기준점에 대한 원근 수정값(wcentre)을 결정하는 단계를 포함한다.
이들 실시예에서, 기준점에 대한 원근 수정값(wcentre)을 결정하는 단계는, 예를 들면, 전술한 것과 같은 방법으로, 제 1 좌표계에 대해 정의된 기준점의 (비회전된) 위치(xcentre, ycentre)를 회전시켜, 제 2 좌표계에 대해 정의된 기준점에 대한 (회전된) 위치(xpycentre, xmycentre)를 발생하는 단계를 포함한다. 그후, 제 2 좌표계에 대해 정의된 기준점에 대한 (회전된) 위치(xpycentre, xmycentre)를 사용하여 기준점에 대한 원근 수정값(wcentre)을을 결정한다.
바람직한 실시예에서, 기준점에 대한 원근 수정값(wcentre)은, 예를 들면 다음과 같은 방법으로 평면 방정식을 사용하여, (회전된) 원근 수정 계수들(wapb; wamb)과 함께 (회전된) 위치 좌표들(xpycentre, xmycentre)을 사용하여 결정된다.
Figure pat00020
그후, 예를 들면, 다음과 같은 방법으로, (회전된) 원근 수정값들(wapb; wamb) 중에서 적어도 한 개를 기준점에 대한 원근 수정값(wcentre)에 대해 가산 또는 감산하여, 복수의 샘플링 포인트들의 그룹의 적어도 한 개의 샘플링 포인트에 대한 원근 수정값(w0; w1; w2; w3)을 발생한다.
Figure pat00021
그후, 적어도 한 개의 샘플링 포인트에 대한 무게중심 좌표들에 스케일링을 적용하는 단계는, 예를 들면 다음과 같은 방법으로, 적어도 한 개의 샘플링 포인트에 대한 원근 수정값(w0; w1; w2; w3)에 의해 적어도 한 개의 샘플링 포인트에 대한 무게중심 좌표를 나누는 단계를 포함한다.
Figure pat00022
상기한 수식은 다음과 같이 일반화할 수 있다.
[in, jn]=[in/wn, jn/wn], 이때 n은 샘플링 포인트 번호이다(예를 들면, 0, 1, 2, 3).
따라서, 원근 수정을 적용하는 단계는, 복수의 샘플링 포인트들의 그룹에 대한 기준점을 처리하여 기준점에 대한 원근 수정값을 발생한 후, 기준점에 대한 원근 수정값과 적어도 한 개의 원근 수정 계수를 결합하여 복수의 샘플링 포인트들의 그룹의 적어도 한 개의 샘플링 포인트에 대한 원근 수정값을 발생한 후, 복수의 샘플링 포인트들의 그룹의 적어도 한 개의 샘플링 포인트에 대한 원근 수정값을 사용하여 적어도 한 개의 샘플링 포인트에 대한 무게중심 좌표들을 스케일링하는 단계를 포함한다.
마찬가지로, 프래그먼트 셰이딩 스테이지는, 복수의 샘플링 포인트들의 그룹에 대한 기준점을 처리하여 기준점에 대한 원근 수정값을 발생한 후, 기준점에 대한 원근 수정값과 적어도 한 개의 원근 수정 계수를 결합하여 복수의 샘플링 포인트들의 그룹의 적어도 한 개의 샘플링 포인트에 대한 원근 수정값을 발생한 후, 복수의 샘플링 포인트들의 그룹의 적어도 한 개의 샘플링 포인트에 대한 원근 수정값을 사용하여 적어도 한 개의 샘플링 포인트에 대한 무게중심 좌표들을 스케일링하도록 구성된 처리회로(예를 들면, 변동 보간기의 (무게중심 평가기))를 구비한다.
복수의 샘플링 포인트들의 그룹은, 임의의 원하는 적절한 수의 샘플링 포인트들을 포함하거나 구성되어도 된다. 바람직한 실시예에서는, 복수의 샘플링 포인트들의 그룹이 2n개의 샘플링 포인트들을 포함하거나 구성되고, 이때 n은 정수이고, 예를 들면, 2, 3, 4 등이다. 복수의 샘플링 포인트들의 그룹은 임의의 원하는 적절한 패턴을 가져도 된다, 이 패턴은 바람직하게는 (예를 들면, 회전) 대칭이거나 및/또는 정렬되거나 회전되어도 된다. 바람직한 실시예예서는, 이 패턴이 Ordered 4x, Rotated 4x, Direct4D 8x 등이다.
복수의 샘플링 포인트들의 그룹은, (한개의) 프래그먼트의 샘플링 포인트들, 예를 들어, 수퍼 샘플링된 프래그먼트이거나, 또는, 복수의 프래그먼트들, 예를 들면, "쿼드" 프래그먼트의 샘플링 포인트들이어도 된다. 복수의 프래그먼트들 각각은 샘플링 포인트들의 그룹의 (한개의) 샘플링 포인트를 포함하거나, 또는 샘플링 포인트들의 그룹의 복수의 샘플링 포인트들을 각각 포함하며, 예를 들어, 복수의 프래그먼트들은 각각 수퍼 샘플링되어도 된다.
적어도 한 개의 샘플링 포인트에 대해 발생된 보간된 속성 데이터가 필요에 따라 사용되어도 된다. 예를 들면, 예를 들면, 표시하기 위해, 프리미티브를 렌더링하여 출력 데이터 값을 발생할 때 보간된 속성 데이터를 사용해도 된다. 따라서, 본 발명은, 바람직하게는, 적어도 한 개의 샘플링 포인트에 대해 발생된 보간된 속성 데이터를 사용하여 보간된 속성 데이터가 관련되는 프리미티브를 렌더링함으로써, 예를 들면, 표시를 위해, 출력 데이터 값들을 발생하는 단계를 더 포함한다.
이때, 프리미티브에 의해 커버된 복수의 샘플링 포인트들의 그룹의 복수의(예를 들면, 일부 또는 전체의) 샘플링 포인트들을 사용하여 프리미티브를 샘플링할 때, 실제적으로, 본 발명의 방법은 프리미티브를 샘플링하기 위해 필요한 복수의 샘플링 포인트들의 그룹의 복수의(예를 들면, 각각의 및/또는 모든) 샘플링 포인트들에 대해 행해짐으로써, 결국 프리미티브를 샘플링하는데 필요한 그룹의 각각의 샘플링 포인트에 대해 보간된 속성 데이터의 적절한 세트가 발생된다는 것을 알 수 있다.
또한, 프리미티브에 의해 커버된 복수의 샘플링 포인트들의 복수의 그룹들(예를 들면, 복수의 프래그먼트들 또는 복수의 프래그먼트들의 그룹들)을 사용하여 프리미티브가 보통 샘플링될 때, 실제적으로, 본 발명의 방법은, 프리미티브를 샘플링하기 위해 필요한 복수의 샘플링 포인트들의 복수의 그룹들에 대해 행해짐으로써, 결국 프리미티브를 샘플링하는데 필요한 복수의 샘플링 포인트들의 복수의 그룹들 각각의 샘플링 포인트들에 대해 보간된 속성 데이터의 적절한 세트가 발생된다는 것을 알 수 있다.
또한, 본 발명은, 프리미티브들에 의해 커버된 샘플링 포인트들에 대한 보간된 속성 데이터를 사용한 후, 보간된 속성 데이터를 사용하여 프리미티브들을 추가적으로 렌더링하는, 예를 들면, 표시를 위한, 출력 데이터 값들을 발생하기 위해 프리미티브들을 렌더링하는 방법 및 장치로 확장된다. 이 추가적인 렌더링 처리는, 예를 들면, 보간된 속성 데이터를 사용한 텍스처 샘플링, 블렌딩 등을 포함해도 된다.
이때, 그래픽 처리 파이프라인에 의해 렌더링할 출력이 보통 복수의 프리미티브들(타일 기반의 시스템에서는 타일들)로 이루어질 때, 실제적으로, 본 발명의 방법은 출력을 구성하는 각각의 프리미티브(타일)에 대해 반복함으로써, 결국 출력을 위해 필요한 출력의 각각의 샘플링 포인트에 대해 보간된 속성 데이터의 적절한 세트가 발생된다는 것을 알 수 있다.
본 발명이 속하는 기술분야의 당업자에게 있어서 자명한 것과 같이, 본 발명의 그래픽 처리 유닛은, 예를 들어, 바람직하게는, 예를 들어, 그래픽 처리 유닛에 의한 그래픽 처리를 요구하는 어플리케이션들을 실행하는 호스트 프로세서를 포함하는 전체 그래픽 처리 시스템의 일부이다. 호스트 프로세서는 적절한 명령들 및 데이터를 그래픽 처리 유닛에 전송하여 그것을 제어함으로써 그래픽 처리 연산을 행하고 호스트 프로세서 상에서 실행되는 어플리케이션에 의해 요구되는 그래픽 처리(렌더) 출력을 발생한다. 이것을 용이하게 하기 위해, 호스트 프로세서는, 그래픽 처리 유닛에 대한 드라이버와, 그래픽 처리 유닛의 프로그래머블 실행 유닛에 의해 실행할 셰이더 프로그램들을 컴파일하는 컴파일러 또는 컴파일러들을 실행해야 하고, 바람직하게는 실행한다.
또한, 그래픽 처리 유닛은, 본 발명에서 설명한 데이터, 및/또는 그래픽 처리 유닛에 의해 발생된 출력 데이터를 기억하고, 및/또는 본 발명에서 설명한 처리를 행하는 소프트웨어를 기억하는 한 개 이상의 메모리들 및/또는 메모리 소자들을 구비하고, 및/또는 이들 메모리들 및/또는 메모리 소자들과 통신한다. 그래픽 처리 유닛은, 호스트 마이크로 프로세서, 및/또는 그래픽 처리 유닛에 의해 발생된 데이터에 근거하여 이미지들을 표시하는 디스플레이와 통신하고 있다.
전술한 처리 스테이지들 이외에, 그래픽 처리 유닛 및 파이프라인은, 조기 깊이(또는 조기 깊이 및 스텐실) 테스터, 후기 깊이(또는 후기 깊이 및 스텐실) 테스터, 타일 또는 프레임 버퍼, 기록부(write out unit) 등과 같이 그래픽 처리 파이프라인이 포함하는 다른 적절한 원하는 처리 스테이지들을 포함해도 된다.
본 발명은, 표시용 프레임, 렌더-투(to)-텍스처 출력 등과 같이, 그래픽 처리 파이프라인을 사용하여 발생하는 모든 형태의 출력을 위해 사용될 수 있다. 그래픽 처리로부터의 출력, 예를 들어, 프래그먼트 셰이딩된 데이터 값들은 바람직하게는, 표시용 프레임 버퍼 등의 기억 및 이용을 위한 외부, 예를 들어, 메인 메모리로 보내진다.
본 발명은 모든 적절한 형태 또는 구성의 그래픽 프로세서에 적용가능하다. 본 발명은 특히 타일 기반의 그래픽 프로세서 및 그래픽 처리 시스템에 적용가능하다. 따라서, 바람직한 실시예에서는, 그래픽 처리 시스템 및 그래픽 처리 유닛이 각각 타일 기반의 시스템 및 유닛이다.
특히 바람직한 실시예에서는, 예를 들어 표시장치용의 프레임 버퍼에 기록되는 렌더링된 프래그먼트 데이터를 생성하여 출력하는 단일의 그래픽 처리 플랫폼에 대해 본 발명의 다양한 기능이 행해진다.
본 발명은, 적절히 구성된 마이크로프로세서 기반의 시스템 등의 임의의 적절한 시스템으로 구현될 수 있다. 바람직한 실시예에서, 본 발명은 컴퓨터 및/또는 마이크로 프로세서 기반의 시스템으로 구현된다.
본 발명의 다양한 기능은 임의의 원하는 적절한 방식으로 행해질 수 있다. 예를 들면, 본 발명의 기능은 필요에 따라 하드웨어 또는 소프트웨어로 구현될 수 있다. 따라서, 예를 들어, 달리 언급하지 않는 한, 본 발명의 다양한 기능 구성요소, 스테이지 및 "수단"은, 원하는 방식으로 동작하도록 프로그래밍될 수 있는 적절한 전용 하드웨어 구성요소 및/또는 프로그래머블 하드웨어 구성요소 등과 같이, 다양한 기능을 행하도록 동작가능한 적절한 프로세서 또는 프로세서들, 제어기 또는 제어기들, 기능 유닛, 회로, 처리 로직, 마이크로프로세서 배치 등을 구비한다.
또한, 본 발명의 기술분야의 당업자에게 있어서 자명한 것과 같이, 본 발명의 다양한 기능 등은 특정한 프로세서 상에서 복제되거나, 및/또는 병렬로 수행되어도 된다는 점에 주목하기 바란다. 따라서, 예를 들면, 프래그먼트 셰이딩 스테이지는 병렬로 동작하는 복수의 별개의 프래그먼트 스테이지를 구비한다. 마찬가지로, 다양한 처리 스테이지는, 필요에 따라 처리회로를 공유해도 된다.
전술한 특정한 기능을 행하는데 필요한 하드웨어 이외에, 데이터 처리 시스템 및 파이프라인은 데이터 처리 파이프라인이 포함하는 통상적인 기능 유닛들의 한 개 이상 또는 모두를 포함할 수 있다.
따라서, 정점 셰이더, 프래그먼트 셰이더 및 다른 그래픽 처리 스테이지들은, 필요에 따라 적절한 방식으로 구현될 수 있으며, 각각 원하는 적절한 정점 셰이딩, 또는 프래그먼트 셰이딩 등의 기능을 행할 수 있다. 마찬가지로, 다양한 데이터(정점 셰이딩된 속성 데이터, 무게중심 계수들, 무게중심 좌표들, 샘플링 포인트 델타 값들, 보간된 속성값 등)가 임의의 적절한 원하는 방식으로 정의 및 기억될 수 있다.
또한, 본 발명이 속한 기술분야의 당업자에게 자명한 것과 같이, 본 발명의 이들 국면 및 실시예는 필요에 따라 전술한 본 발명의 바람직한 옵션의 특징의 어느 한 개 이상 또는 전체를 포함할 수 있고 바람직하게는 포함한다.
본 발명에 따른 방법은, 소프트웨어, 예를 들면, 컴퓨터 프로그램을 적어도 일부 사용하여 구현되어도 된다. 따라서, 또 다른 일면에서 볼 때, 본 발명은 데이터 처리수단에 설치되었을 때 본 발명에서 설명한 방법을 행하도록 명시적으로 구성된 컴퓨터 소프트웨어를 제공하고, 컴퓨터 프로그램 구성요소는 프로그램 구성요소가 데이터 처리장치 상에서 실행될 때 전술한 본 발명의 방법을 행하는 소프트웨어 코드 부분들을 포함하고, 컴퓨터 프로그램은 이 프로그램이 데이터 처리 시스템 상에서 실행될 때 전술한 본 발명의 방법 또는 방법들의 모든 스텝들을 행하도록 구성된 코드수단을 포함한다. 데이터 프로세서는 마이크로프로세서 시스템, 프로그래머블 FPGA(field programmable gate array) 등이어도 된다.
또한, 본 발명은, 데이터 처리수단을 포함하는 그래픽 프로세서, 렌더러 또는 마이크로프로세서 시스템을 동작하도록 사용될 때, 상기 데이터 처리수단과 연계하여, 상기 프로세서, 렌더러 또는 시스템이 본 발명의 방법의 단계들을 행하도록 하는 소프트웨어를 포함하는 컴퓨터 소프트웨어 기록매체로 더 확장된다. 이와 같은 컴퓨터 소프트웨어 기록매체는, ROM 칩, CD ROM, RAM, 플래시 메모리 또는 디스크 등의 물리적인 기억매체일 수도 있으며, 또는 선로를 거친 전자 신호, 광학 신호, 위성을 등에 대한 무선 신호 등의 신호일 수도 있다.
더구나, 본 발명의 방법의 모든 단계들이 컴퓨터 소프트웨어에 의해 실행될 필요는 없다는 것이 명백하므로, 더 넓은 국면에서, 본 발명은, 본 발명에서 설명한 방법의 단계들 중에서 적어도 한 개를 행하는 컴퓨터 소프트웨어와 컴퓨터 소프트웨어 기록매체 상에 설치된 소프트웨어를 제공한다.
따라서, 본 발명은 컴퓨터 시스템에서 사용되는 컴퓨터 프로그램 제품으로서 적절히 구현되어도 된다. 이와 같은 구현은, 예를 들어 디스켓, CD-ROM, ROM, RAM, 플래시 메모리 또는 하드디스크 등의 컴퓨터 판독가능한 매체와 같은 유형의 비일시적인 매체 위에 고정된 일련의 컴퓨터 판독가능한 명령들을 포함해도 된다. 또한, 이와 같은 구현은, 모뎀이나 다른 인터페이스 장치를 거쳐, 광 또는 아날로그 통신 라인을 포함하는 유형의 매체를 거쳐, 또는 적외선 또는 다른 전송 기술을 포함하는 무선 기술을 사용하여 무형으로 컴퓨터 시스템에 송신가능한 일련의 컴퓨터 판독가능한 명령들을 포함할 수도 있다. 이들 일련의 컴퓨터 판독가능한 명령들은 본 발명에서 전술한 기능의 전체 또는 일부를 구현한다.
본 발명의 기술분야의 당업자에게 있어서, 이와 같은 컴퓨터 판독가능한 명령들이 다수의 컴퓨터 아키텍처 또는 운영체계와 사용되는 다수의 프로그래밍 언어로 기록될 수 있다는 것은 자명하다. 더구나, 이와 같은 명령은, 반도체, 자기 또는 광학을 포함하는 현재 및 미래의 메모리 기술을 사용하여, 또는 광, 적외선 또는 마이크로웨이브를 포함하는 현재 및 장래의 통신기술을 이용하여 전송되어 기억될 수도 있다. 이와 같은 컴퓨터 프로그램은, 예를 들어 수축 포장된 소프트웨어와 같이 첨부된 인쇄되거나 전자 문서와 함께 착탈가능한 매체로서 배포되거나, 예를 들어, 시스템 ROM이나 고정 디스크와 같이 컴퓨터 시스템에 미리 로드되거나, 예를 들어 인터넷이나 월드 와이드 웹 등의 네트워크를 거쳐 서버 또는 전자 게시판으로부터 배포될 수도 있다.
이하, 첨부도면을 참조하여 본 발명의 바람직한 실시예를 설명한다.
도 1은 복수의 샘플링 포인트에서 프리미티브를 샘플링하는 접근방식을 나타낸 것이다.
도 2는 샘플링 포인트 델타 값들을 사용하는 복수의 샘플링 포인트에서 프리미티브를 샘플링하는 또 다른 접근방식을 나타낸 것이다.
도 3은 본 발명의 방식으로 동작할 수 있는 컴퓨터 그래픽 처리 시스템의 일례를 나타낸 것이다.
도 4는 본 발명의 방식으로 동작할 수 있는 그래픽 처리 파이프라인을 개략적으로 나타낸 것이다.
도 5는 본 발명의 방식으로 동작할 수 있는 그래픽 처리 유닛을 개략적으로 나타낸 것이다.
도 6은 본 발명에 따른 보간된 속성 데이터를 발생하는 방법을 나타낸 것이다.
도 7은 본 발명의 방식으로 동작할 수 있는 변동 파이프라인 및 변동 보간기를 개략적으로 나타낸 것이다.
첨부도면에 있어서 필요한 경우에는 동일한 구성요소에 대해 동일한 참조번호를 사용한다.
이하, 본 발명의 다수의 바람직한 실시예를 표시용 컴퓨터 그래픽의 처리와 관련하여 설명한다.
도 3은 전형적인 컴퓨터 그래픽 처리 시스템을 나타낸 것이다. 호스트 프로세서(1) 상에서 실행되는 게임 등의 어플리케이션(2)은 그래픽 처리 유닛(GPU)(3)를 사용하여 구현되는 관련된 그래픽 처리 파이프라인에 의해 그래픽 처리 연산이 행해지도록 요구한다. 이것을 위해, 어플리케이션은, 호스트 프로세서(1) 상에서 실행되고 있는 그래픽 처리 파이프라인(3)에 대한 드라이버(4)에 의해 해석되어 그래픽 프로세서(3)에 적절한 명령들을 발생함으로써 어플리케이션(2)에 의해 필요한 그래픽 출력을 생성하는 API(Application Programming Interface) 호출을 발생한다. 이것을 용이하게 하기 위해, 호스트 컴퓨터(1) 상에서 실행되는 어플리케이션(2)으로부터의 명령에 응답하여 "명령들"의 세트가 그래픽 프로세서(3)에 주어져 그래픽 출력을 한다(예를 들어, 표시할 프레임을 생성한다).
도 4는 그래픽 처리 파이프라인(3)을 더욱 상세히 나타낸 것이다. 도 4에 도시된 그래픽 처리 파이프라인(3)은 타일 기반의 렌더러이며, 생성할 출력 프레임 등의 렌더 출력 데이터 어레이의 타일들을 생성한다. 타일 기반의 렌더링에서는, 중간 모드 렌더링에서와 같이 한번에 전체 렌더 출력, 예를 들면, 프레임이 효율적으로 처리되는 것 대신에, 렌더 출력, 예를 들어, 표시할 프레임이 보통 "타일"들로 불리는 복수의 더 작은 서브영역으로 분할된다. 각각의 타일(서브영역)은 별개로(일반적으로는 차례로) 렌더링되고, 그후 렌더링된 타일들(서브영역들)이 재결합되어 완전한 렌더 출력, 예를 들어 표시할 프레임을 제공한다. 이와 같은 구성에서는, 렌더 출력이 일반적으로 규칙적인 크기를 갖고 형상을 갖는 서브영역들(타일들)로 분할되지만((이것은 보통, 예를 들면 정사각형이나 직사각형이다), 이것은 필수적인 것은 아니다.
렌더 출력 데이터 어레이는, 보통 화면이나 프린터 등의 표시장치에 표시하도록 의도된 출력이지만, 예를 들어, ("렌더 투 텍스처" 출력으로도 알려진) 추후의 렌더링 패스(rendering pass)에서 사용하도록 의도된 중간 데이터를 포함해도 된다.
컴퓨터 그래픽 이미지를 표시하고자 할 때, 이것은 보통 먼저 일련의 프리미티브들(폴리곤들)로 정의되고, 그후 이들 프리미티브가 차례로 그래픽 렌더링을 위한 그래픽 프래그먼트들로 분할(래스터화)된다. 정규의 그래픽 렌더링 연산 중에, 렌더러는 프래그먼트들이 올바르게 표시될 수 있도록 각각의 프래그먼트와 관련된 (예를 들면), 칼라(적, 녹 및 청, RGB) 및 투명도(알파, a) 데이터를 변형한다. 프래그먼트들이 완전히 렌더러를 가로지르면, 그들의 관련된 데이터 값들이 메모리에 기억되어, 예를 들어, 표시를 위해 출력할 준비가 된다
도 4는 본 발명의 연산과 관련되는 그래픽 처리 파이프라인(3)의 주 구성요소들과 파이프라인 스테이지들을 나타낸 것이다. 본 발명의 당업자에게 자명한 것과 같이, 도 4에 도시하지 않은 그래픽 처리 파이프라인의 다른 구성요소들이 존재한다. 또한, 도 4는 단지 개략도이며, 예들 들면, 실제로는 도시된 기능 유닛 및 파이프라인 스테이지들은, 도 4에서는 별개의 스테이지로 개략적으로 도시하였지만, 상당한 하드웨어 회로를 공유한다. 또한, 도 4에 도시된 그래픽 처리 파이프라인의 스테이지들, 구성요소들 및 유닛들 각각은 필요에 따라 구현될 수 있으며, 따라서 필요한 동작 및 기능을 행하기 위한, 예를 들면, 적절한 회로 및/또는 처리 로직을 구비한다.
도 4에 도시된 것과 같이, 그래픽 처리 파이프라인(3)은, 정점 셰이더(20), 헐 셰이더(hull shader)(21), 테셀레이터(22), 도메인 셰이더(23), 기하 셰이더(24), 래스터화 스테이지(25), 조기 Z(깊이) 및 스텐실 테스트 스테이지(26), 프래그먼트 셰이딩 스테이지의 형태를 갖는 렌더러(27), 후기 Z(깊이) 및 스텐실 테스트 스테이지(28), 블렌딩 스테이지(29), 타일 버퍼(30)와, 다운샘플링 및 기록(다중샘플 분해(multisample resolve)) 스테이지(31)를 구비한다.
정점 셰이더(20)는, 예를 들어, 발생할 출력을 위해 정의된 정점들과 관련된 입력 데이터 값들을 받고, 이들 데이터 값들을 처리하여 그래픽 처리 파이프라인(3)의 후속 스테이지들에 의해 사용되는 대응하는 "정점 셰이딩된" 출력 데이터 값들의 세트를 발생한다. 정점 셰이딩은, 예를 들어, 렌더링된 이미지 내부의 조명 효과를 고려하여 입력 데이터를 수정한다.
헐 셰이더(21)는 패치 제어점들의 세트에 대해 연산을 행하여 패치 상수로 알려진 추가 데이터를 발생하고, 테셀레이션 스테이지(22)는 기하를 분할하여 헐의 고차 표현을 생성하고, 도메인 셰이더(23)는 (정점 셰이더와 유사하게) 테셀레이션 스테이지에 의해 출력된 정점들에 대해 연산을 행하고, 기하 셰이더(24)는 삼각형, 점 또는 점 등의 전체 프리미티브를 처리한다. 이들 스테이지는 정점 셰이더(21)와 함께, 그래픽 처리 파이프라인(3)에 주어진 명령들 및 정점 데이터에 응답하여, 변형 및 조명 연산과, 렌더링할 프리미티브를 설정하는 프리미티브 설정 등의 모든 필요한 프래그먼트 프론트엔트 연산을 효율적으로 행한다.
그래픽 처리 파이프라인(3)의 래스터화 스테이지(25)는 렌더 출력(즉, 표시할 화상)을 이루는 프리미티브들을 처리를 위한 개별적인 그래픽 프래그먼트들로 래스터화하도록 동작한다. 이것을 행하기 위해, 래스터화기(25)는 렌더링용 그래픽 프리미티브들을 수신하고, 프리미티브들을 샘플링 포인트들로 래스터화하고, 프리미티브들을 렌더링하기 위한 적절한 위치들을 갖는(적절한 샘플링 위치들을 표시하는) 그래픽 프래그먼트들을 발생한다.
그후, 래스터화기에 의해 발생된 프래그먼트들은 처리를 위해 파이프라인의 나머지로 앞으로 보내진다.
조기 Z/스텐실 스테이지(26)는 래스터화기(25)로부터 수신한 프래그먼트들에 대해 Z(깊이) 테스트를 행하여, 이 단계에서 프래그먼트들을 폐기(도태(cull))할 수 있는지를 확인한다. 이것을 행하기 위해, 래스터화기(25)로부터 발행되는 프래그먼트의(와 관련된) 깊이값들을 이미 렌더링된 프래그먼트들의 데이터 값들(이들 데이터 값들은 버퍼(30)의 일부인 깊이(Z) 버퍼에 기억되어 있다)과 비교하여, 새로운 프래그먼트들이 이미 렌더링된 프래그먼트들에 의해 가리는지(또는 아닌지) 판정한다. 이와 동시에, 조기 스텐실 테스트를 행한다.
그후, 프래그먼트 조기 Z 및 스텐실 테스트 스테이지(26)를 통과한 프래그먼트들은 프래그먼트 셰이딩 스테이지(27)로 보내진다. 프래그먼트 셰이딩 스테이지(27)는 조기 Z 및 스텐실 테스트를 통과한 프래그먼트들에 대해 적절한 프래그먼트 처리 연산을 행하여, 프래그먼트들을 처리하여 적절한 렌더링된 프래그먼트 데이터를 생성한다.
이와 같은 프래그먼트 처리는, 프래그먼트들에 대해 프래그먼트 셰이더 프로그램을 실행하는 것, 프래그먼트들에 대해 텍스처를 적용하는 것, 프래그먼트들에 대해 포깅(fogging) 또는 기타 연산을 적용하는 것 등을 행하여, 적절한 프래그먼트 데이터를 생성하는 것과 같은, 적절한 원하는 프래그먼트 셰이딩 처리를 포함한다. 본 실시예에서, 프래그먼트 셰이딩 스테이지(27)는 셰이더 파이프라인(프로그래머블 프래그먼트 셰이더)의 형태를 갖는다.
그후에, 특히, 셰이딩된 프래그먼트들에 대해 파이프라인 깊이 테스트의 한쪽을 행하여 렌더링된 프래그먼트가 최종 이미지에서 실제로 보이게 되는지 여부를 판정하는 "후기" 프래그먼트 Z 및 스텐실 테스트 스테이지(28)가 존재한다. 이 깊이 테스트는 버퍼(30) 내부의 Z 버퍼에 기억된 프래그먼트의 위치에 대한 Z 버퍼 값을 이용하여, 당업계에 알려진 것과 같이, 프래그먼트 셰이딩 스테이지(27)에서 발행되는 프래그먼트들의(와 관련된) 데이터 값들을 (깊이 버퍼에 기억된) 이미 렌더링된 프래그먼트들의 깊이값들과 비교함으로써, 새로운 프래그먼트들에 대한 프래그먼트 데이터가 이미 렌더링된 프래그먼트들의 프래그먼트 데이터를 교체해야 하는지 판정한다. 또한, 이와 같은 후기 프래그먼트 깊이 및 스텐실 테스트 스테이지(28)는 프래그먼트들에 대한 필요한 "후기" 알파 및/또는 스텐실 테스트도 행한다.
그후 후기 프래그먼트 테스트 스테이지(29)를 통과한 프래그먼트들은, 필요에 따라, 블렌더(29)에서 타일 버퍼(30)에 이미 기억된 프래그먼트들과의 필요한 블렌딩 연산을 겪는다. 디더(미도시) 등의 프래그먼트들에 필요한 나머지 다른 연산도 이 스테이지에서 행해진다.
마지막으로, (블렌드된) 출력 프래그먼트 데이터(값들)가 타일 버퍼(30)에 기록되고, 이 타일 버퍼로부터 이들 데이터가 프레임 버퍼로 출력되어 표시될 수 있다. 출력 프래그먼트에 대한 깊이값도 타일 버퍼(30) 내부의 Z 버퍼에 적절히 기록된다. (타일 버퍼는 칼라와 이 버퍼가 표시하는 각각의 샘플링 포인트에 대해(본질적으로는 처리되고 잇는 타일의 각각의 샘플링 포인트에 대해) 적절한 칼라를 기억하는 깊이 버퍼, 즉 Z 버퍼를 기억한다), 이들 버퍼는 전체 렌더 출력(예를 들면, 표시할 이미지)의 일부9타일)을 표시하는 프래그먼트 데이터의 어레이를 기억하고, 버퍼들 내부의 샘플링 값들의 각각의 세트는 전체 렌더 출력의 각각의 픽셀들에 대응한다(예를 들어, 각각의 2x2 세트의 샘플값은 4x 다중샘플링이 사용되고 있는 출력 픽셀에 대응한다).타일 버퍼는 그래픽 처리 파이프라인(칩) 위에 배치된(파이프라인에 대해 로컬인) RAM의 일부로서 주어진다.
타일 버퍼(30)로부터의 데이터는 다운샘플링(다중샘플 분해) 기록 유닛(31)에 입력되고, 여기에서 표시장치(미도시)의 프레임 버퍼 등의 외부 메모리 출력 버퍼에 출력된다(라이트백된다). 표시장치는, 예를 들어, 컴퓨터 모니터 또는 프린터 등의 픽셀들의 어레이를 포함하는 디스플레이를 구비한다.
다운샘플링 및 기록부(31)는 타일 버퍼(30) 내부에 기억된 프래그먼트 데이터를 출력 버퍼(디바이스)를 위한 적절한 해상도로(즉, 출력 디바이스의 픽셀들에 대응하는 픽셀 데이터의 어레이가 발생되도록) 다운샘플링하여, 출력 버퍼에 출력하기 위한 출력 데이터 값들(픽셀들)을 발생한다.
렌더 출력의 타일이 처리되고 그것의 데이터가 메인 메모리(예를 들면, 메인 메모리(미도시) 내부의 프레임 버퍼)로 출력되어 기억되면, 전체 렌더 출력(예를 들어, 표시할 프레임(이미지))을 발생하기 위해 충분한 타일들이 처리될 때까지 다음 타일이 처리된다. 그후, 다음의 렌더 출력(예를 들어, 프레임)에 대해 처리가 반복된다.
그래픽 처리 파이프라인(30)의 다른 구성도 물론 가능하다.
도 4에서 알 수 있는 것과 같이, 그래픽 처리 파이프라인(3)은 다수의 프로그래머블 처리 또는 "셰이더" 스테이지, 즉 정점 셰이더(20), 헐 셰이더(21), 도메인 셰이더(23), 기하 셰이더(24) 및 프래그먼트 셰이더(27)를 구비한다. 이들 프로그래머블 셰이더 스테이지들은 한 개 이상의 입력 변수들을 갖고 출력 변수들의 세트를 발생하고 어플리케이션에 의해 주어지는 각각의 셰이더 프로그램들을 실행한다. 이것을 위해, 어플리케이션은 GLSL, HLSL, OpenCL 등의 고급 셰이더 프로그래밍 언어를 사용하여 구현된 셰이더 프로그램들을 제공한다. 그후, 이들 셰이더 프로그램들은 셰이더 언어 컴파일러에 의해 타겟 그래픽 처리 파이프라인(3)에 대한 이진 코드로 번역된다. 이것은, 컴파일러 내부에서의 프로그램의 한 개 이상의 중간 표현의 생성을 포함해도 된다. 컴파일러는 예를 들면 드라이버(4)의 일부이어도 되고, 컴파일러가 실행하게 하는 특수한 API 호출이 존재한다. 따라서, 컴파일러 시행은 어플리케이션에 의해 발생된 API 호출에 대한 응답으로 드라이버에 의해 행해진 묘화 호출 준비의 일부인 것으로 볼 수 있다.
도 4는 그래픽 처리 유닛(3)의 연산 스테이지들을 개략적으로 나타낸 것이다. 도 5는 도 4에 도시되고 본 발명에 관련되는 그래픽 처리 파이프라인의 처리 연산들 및 스테이지들의 다양한 것들을 행하는데(따라서, 기능하는데) 사용되는 그래픽 처리 유닛(3)의 대응하는 기능 유닛들을 나타낸 것이다. 그래픽 처리 유닛(3) 내부에는 다른 기능 유닛들이 존재할 수 도 있지만, 도 5는 간략을 위해 본 발명의 방식으로의 동작에 더 적절한 기능 유닛들을 나타낸다.
도 5에 도시된 것과 같이, 그래픽 처리 유닛(3)은, 래스터화기(25), 스레드 스포너(thread spawner)(40), 프로그래머블 실행 유닛(41), 변동 보간기(42), 텍스처 매퍼(43) 및 블렌더(29)를 구비한다.
스레드 스포너(40)는 그것이 수신하는 프래그먼트들에 대해 프로그래머블 실행 유닛(41)에 의해 실행할 실행 스레드들을 스폰하도록 동작한다.
프로그래머블 실행 유닛(41)은 셰이더 프로그램들을 실행하여, 헐 셰이더, 정점 셰이더 및 프래그먼트 셰이더 등의 그래픽 처리 파이프라인의 셰이더 연산들을 행하도록 동작한다. 이것을 위해, 프로그래머블 실행 유닛은 스레드 스포너(40)로부터 실행 스레드들을 수신하고, 이들 실행 스레드들에 대해 관련된 셰이더 프로그램을 실행한다.
변동 보간기(42)는, 그래픽 프리미티브들에 걸쳐 정점 속성 데이터를 보간하도록 동작하고, 이 연산의 일부로서, 그래픽 텍스처들을 샘플링하는데 사용될 텍스처 좌표들을 생성하는 일이 많다.
텍스처 매퍼(43)는, 예를 들어 변동 보간기(42)에 의해 발생된 텍스처 좌표를 사용하여 그래픽 텍스처들을 샘플링하도록 동작하고, 그것으로부터 필터링된 텍스처 샘플 결과를 생성한다.
블렌더(29)는, 예를 들어 프로그래머블 실행 유닛에 의해 발생된 프래그먼트 셰이딩 결과들을 타일 버퍼에 이미 기억된 결과 등의 이전에 발생된 프래그먼트 셰이더 결과들과 블렌드하도록 동작한다.
이하, 일 실시예에서의 변동 보간기(42)의 동작을 도 6 및 도 7을 참조하여 상세히 설명한다.
도 6에 도시된 것과 같이, 본 실시예에서는, 삼각형 프리미티브(60)가 4개의 프래그먼트들(61, 62, 63, 64)로 이루어진 "쿼드"(65)를 사용하여 샘플링되고, 이때 각각의 프래그먼트들(61, 62, 63, 64)은 중심의 샘플링 포인트를 갖는다.
쿼드(65)에 대한 중심 기준점의 위치 xcenter, ycenter가 제 1 좌표계 x, y에 대해 정의된다. 이하에서 더욱 상세히 설명하는 것과 같이, 프리미티브(60)에 대해 제 2 좌표계 xmy, xpy에 대해 정의된 샘플링 포인트 델타 값들도 발생된다. 제 2 좌표계는 각도 θ만큼 제 1 좌표계에 대해 회전하며, 본 실시예에서는, θ가 45°이다.
도 7을 참조하여 더욱 상세히 설명하는 것과 같이, 변동 보간기(42)는, 제 2 좌표계에 대해 정의된 샘플링 포인트 델타 값들 중에서 적어도 한 개와 함께 제 1 좌표계에 대해 정의된 중심 기준점의 위치 xcenter, ycenter를 사용하여 4개의 프래그먼트(61, 62, 63, 64)의 샘플링 포인트들의 보간된 속성 데이터를 발생한다.
도 7은 본 발명에 관련되는 정점 셰이딩된 속성 데이터를 보간하는데 사용되는 변동 파이프라인(70)의 기능 유닛들을 개략적으로 나타낸 것이다. 변동 파이프라인(70) 내부에는 다른 기능 유닛이 있을 수 있지만, 간략을 위해 도 7은 본 발명의 방식으로 동작하는데 더 관련되는 기능 유닛들을 나타내고 있다.
도 7에 도시된 것과 같이, 도 5의 변동 보간기(42)는 변동 파이프라인(70)의 일부를 구성한다. 변동 파이프라인(70)은, 무게중심 계수 캐시(72)를 사용하여 무게중심 계수들을 기억하고, 무게중심 좌표 캐시(72)를 사용하여 무게중심 좌표들을 기억하고, 속성 캐시(73)를 사용하여 정점 셰이딩된 속성 데이터를 기억한다.
변동 파이프라인(70)은, 래스터화기(25)로부터 프리미티브에 대한 회전된 무게중심 계수들(iapb, japb; iamb, jamb) 및 회전된 원근 수정 계수들(wapb, wamb)을 수신하고 이것들을 무게중심 계수 캐시(71)에 기억한다. 본 실시예에서, 회전된 무게중심 계수들(iapb, japb; iamb, jamb) 및 회전된 원근 수정 계수들(wapb, wamb)은 샘플링 포인트 델타 값들(Sxpy, Sxmy)로 생각할 수 있다.
회전된 무게중심 계수들(iapb, japb; iamb, jamb) 및 원근 수정 계수들(wapb, wamb)은 프리미티브 설정중에 비회전된 무게중심 계수들(ia, ja; ib, jb) 및 원근 수정 계수들(wa; wb)로부터 발생된다. 비회전된 무게중심 계수들(ia, ja; ib, jb) 및 원근 수정 계수들(wa; wb)은, 종래의 방식으로 프리미티브 설정중에 발생된 후, 회전되어, 다음과 같이 회전된 무게중심 계수들(iapb, japb; iamb, jamb) 및 원근 수정 계수들(wapb, wamb)을 제공한다.
Figure pat00023
주지하는 것과 같이, 상기한 방정식은 다음과 같은 회전행렬을 적용하는 것과 동등하다.
Figure pat00024
이때, 1/√2에 의한 승산에 의해 얻어지는 추가적인 스케일링과 함께, θ는 45°이다. 이와 같은 추가적인 스케일링은, 각각의 회전된 무게중심 계수들(iapb, japb; iamb, jamb) 및 원근 수정 계수들(wapb, wamb)이 한번의 가산 또는 감산과 2로 나누기 위한 비트 시프트에 의해 산출될 수 있다는 것을 의미한다.
변동 파이프라인(70)은 래스터화기(25)로부터 프리미티브(60)에 대한 비회전된 무게중심 계수들(ic, jc)과 비회전된 원근 수정 계수(wc)를 더 수신하고, 이것들을 무게중심 계수 캐시(71)에 기억한다.
변동 파이프라인(70)은 정점 셰이더(20)로부터 정점 셰이딩된 속성 데이터를 더 수신한다. 정점 셰이딩된 속성 데이터는, 종래의 방법으로 정점 셰이더(20)에 의해 발생되고, 프리미티브(60)에 대한 정점 칼라들, 정점 투명도, 정점 텍스처 좌표들을 포함한다. 변동 파이프라인(70)은, 프리미티브(60)에 대한 정점 셰이딩된 속성 데이터를 속성 캐시(73)에 기억하기 전에, 정점 셰이딩된 속성 데이터를 변환 및/또는 준비한다.
변동 보간기(42)는 프로그래머블 실행 유닛(41)으로부터의 변동 요구 메시지(77)의 수신에 응답하여 동작한다. 변동 요구 메시지(77)는, 정점 셰이딩된 속성 데이터가 보간될 대상인 샘플링 포인트들을 표시하는 쿼드(65)에 대한 기준점의 위치 xcenter, ycenter를 포함한다.
본 실시예에서, 변동 보간기(42)는 무게중심 평가기(75)와 속성 평가기(76)를 구비한다.
무게중심 평가기(75)는, 변동 요구 메시지(77)를 수신한 후, 무게중심 계수 캐시(71)에 기억된 프리미티브(60)에 대한 무게중심 계수들(iapb, japb; iamb, jamb; ic, jc)과 원근 수정 계수들(wapb, wamb, wc)을 액세스한 후, 다음과 같은 방법으로 쿼드(65)의 샘플링 포인트들 각각에 대한 무게중심 계수들(i0, j0; i1, j1 ;i2, j2; i3, j3)을 생성한다.
먼저, 기준점의 위치 xcenter, ycenter를 이용하여 기준점의 무게중심 좌표들 (icentre, jcentre)을 결정한다. 이것은 제 1 좌표게에 대해 정의된 기준점의 위치 xcenter, ycenter를 회전시켜 제 2 좌표계에 대해 정의된 기준점에 대한 회전된 위치 xpycentre, xmycentre를 발생한다. 본 실시예에서, 이 회전은 다음과 같이 달성된다.
Figure pat00025
주지하는 것과 같이, 상기한 수식은, 1/√2에 의한 승산에 의해 얻어지는 추가적인 스케일링과 함께, 다음과 같은 회전행렬을 적용하는 것과 등가이다.
Figure pat00026
추가적인 스케일링은, 한번의 가산 또는 감산에 의해 각각의 회전된 좌표 xpycentre, xmycentre를 산출할 수 있다는 것을 의미한다. 또한, 스케일링은 전술한 것과 같이 무게중심 좌표들에 적용된 1/√2 스케일링을 상쇄하여, 보간된 속성 데이터의 전체적인 스케일링이 존재하지 않는다.
그후, 회전된 위치 좌표들 xpycentre, xmycentre, 무게중심 계수들(iapb, japb; iamb, jamb; ic, jc)과 원근 수정 계수들(wapb, wamb, wc)를 사용하여 다음과 같은 방법으로 평면 방정식을 사용하여 기준점에 대한 무게중심 좌표들(icentre, jcentre)과 원근 수정 계수값(wcentre)을 결정한다.
Figure pat00027
그후, 다음과 같이, 회전된 무게중심 계수들(iapb, japb; iamb, jamb)과 원근 수정값들(wapb, wamb)을 기준점에 대한 무게중심 계수들(icentre, jcentre)과 원근 수정값(wcentre)에 대해 각각 가산하거나 감산하여, 쿼드(65)의 샘플링 포인트들에 대한 무게중심 좌표들(i0, j0; i1, j1 ;i2, j2; i3, j3)과 원근 수정값들(w0; w1; w2; w3)을 발생한다.
Figure pat00028
Figure pat00029
필요한 경우에는, 다음과 같이, 쿼드(65)의 샘플링 포인트에 대한 원근 수정값들(w0; w1; w2; w3)을 사용하여 무게중심 좌표들(i0, j0; i1, j1 ;i2, j2; i3, j3)에 원근 수정이 적용된다.
Figure pat00030
본 실시예에서, 원근 수정의 적용은 무게중심 좌표들(i0, j0; i1, j1 ;i2, j2; i3, j3)을 정규화한다, 그후, 쿼드(65)의 샘플링 포인트들에 대한 (원근 수정된) 무게중심 좌표들(i0, j0; i1, j1 ;i2, j2; i3, j3)은 무게중심 평가기(75)에 의해 무게중심 좌표 캐시(72)로 출력된다.
그후, 변동 보간기(42)의 속성 평가기(76)가 무게중심 좌표 캐시(72)에 기억된 원근 수정된 무게중심 좌표들(i0, j0; i1, j1 ;i2, j2; i3, j3)과 속성 캐시(73)에 기억된 프리미티브(60)에 대한 정점 셰이딩된 속성 데이터를 액세스한다.
그후, 속성 평가기는 각각의 샘플링 포인트에 대한 무게중심 좌표들(i0, j0; i1, j1 ;i2, j2; i3, j3)을 사용한 보간에 의해 쿼드(65)의 샘플링 포인트들에 대한 보간된 속성 데이터(S0, S1, S2, S3)를 도출한다. 보간은 사실상 각각의 무게중심 좌표(i0, j0; i1, j1 ;i2, j2; i3, j3)를 이 무게중심 좌표가 관련되는 정점에 대한 대응하는 정점 셰이딩된 속성 데이터(Si, Sj, Sk, 예를 들면, 칼라 값, 투명도 값, 텍스처 좌표 등)로 승산한 후, 승산 결과들을 합산하는 단계를 포함한다. 본 실시예에서는, 다음과 같이 이것이 달성된다.
Figure pat00031
이때, Si _new=Si-Sk 및 Sj _new=Sj-Sk .
Si _new 및 Sj _new의 값은, 정점 셰이딩된 속성 데이터로부터 변동 파이프라인(70)에 의해 미리 결정되어, 샘플링 포인트들에 대한 보간된 속성 데이터(S0, S1, S2, S3)를 도출할 때 사용하기 위해 속성 캐기(73) 내부에 기억된다. 그후, 보간된 속성 데이터(S0, S1, S2, S3)는 변동 보간기(42)의 속성 평가기(76)에 의해 변동 결과 메시지(78)로 프로그래머블 실행 유닛(41)으로 출력된다.
그후, 보간된 속성 데이터(S0, S1, S2, S3)는, (예를 들어, 보간된 텍스처 좌표들의 형태로 보간된 속성 데이터를 사용하여 텍스처를 샘플링하는) 텍스처 매퍼(43) 또는 (예를 들면, 보간된 칼라의 형태를 갖는 보간된 속성 데이터를 사용하여 블렌딩 연산을 행하는) 블렌더(29) 등의 그래픽 처리 파이프라인의 후속 스테이지들에 의해 사용될 수 있다.
전술한 내용으로부터, 본 발명은, 적어도 그것의 바람직한 실시예에서, 보간된 속성 데이터가 복수의 샘플링 포인트들에 대해 더욱 효율적으로 발생될 수 있도록 하는 그래픽 처리 시스템을 제공한다는 것을 알 수 있다. 이것은, 적어도 바람직한 실시예에서는, 회전된 샘플링 포인트 델타 값들과 함께 샘플링 포인트들에 대한 기준 위치를 사용하여 샘플링 포인트들에 대한 보간된 속성 데이터를 발생함으로써 달성된다.

Claims (19)

  1. 프리미티브들에 대한 정점 셰이딩된 속성 데이터를 처리하여 샘플링 포인트들에 대한 보간된 속성 데이터를 발생하는 프래그먼트 셰이딩 스테이지를 구비한 그래픽 처리 시스템의 작동방법으로서,
    프리미티브에 대한 샘플링 포인트 델타 값들을 발생하는 단계와,
    프리미티브를 샘플링하는데 사용되고 있는 복수의 샘플링 포인트들의 그룹 중에서 적어도 한 개의 샘플링 포인트에 대한 보간된 속성 데이터를 발생하는 단계를 포함하고,
    적어도 한 개의 샘플링 포인트에 대한 보간된 속성 데이터는 샘플링 포인트 델타 값들 중에서 적어도 한 개와 함께 복수의 샘플링 포인트들의 그룹에 대한 기준점의 위치를 사용하여 발생되고,
    복수의 샘플링 포인트들의 그룹에 대한 기준점의 위치가 제 1 좌표게에 대해 정의되고, 프리미티브에 대한 샘플링 포인트 델타 값들이 제 1 좌표게에 대해 회전하는 제 2 좌표계에 대해 정의되는, 그래픽 처리 시스템의 작동방법.
  2. 제 1항에 있어서,
    제 2 좌표계는 제 1 좌표계에 대해 45°또는 그것의 배수만큼 회전한 그래픽 처리 시스템의 작동방법.
  3. 제 1항 또는 제 2항에 있어서,
    기준점은 복수의 샘플링 포인트들의 그룹의 샘플링 포인트들에 대해 중심에 배치되는 그래픽 처리 시스템의 작동방법.
  4. 제 1항 또는 제 2항에 있어서,
    샘플링 포인트 델타 값들을 발생하는 단계는,
    제 1 좌표계에 대해 정의된 샘플링 포인트 델타 값들을 발생하는 단계와,
    제 1 좌표계에 대해 정의된 샘플링 포인트 델타 값들을 회전하여 제 2 좌표계에 대해 정의된 샘플링 포인트 델타 값들을 발생하는 단계를 포함하는 그래픽 처리 시스템의 작동방법.
  5. 제 1항 또는 제 2항에 있어서,
    샘플링 포인트 델타 값들은 제 2 좌표계에 대해 정의된 무게중심 좌표들을 포함하는 그래픽 처리 시스템의 작동방법.
  6. 제 1항 또는 제 2항에 있어서,
    기준점의 위치의 사용은 기준점의 위치로부터 기준점에 대한 무게중심 좌표들을 결정하는 것을 포함하는 그래픽 처리 시스템의 작동방법.
  7. 제 6항에 있어서,
    샘플링 포인트 델타 값들 중에서 적어도 한 개를 기준점에 대한 무게중심 좌표들에 가산하거나 무게중심 좌표들로부터 감산하여 적어도 한 개의 샘플링 포인트에 대한 무게중심 좌표들을 발생하는 그래픽 처리 시스템의 작동방법.
  8. 제 7항에 있어서,
    적어도 한 개의 샘플링 포인트에 대한 무게중심 좌표들을 사용하여 적어도 한 개의 샘플링 포인트에 대한 보간된 속성 데이터를 도출하는 단계를 더 포함하는 그래픽 처리 시스템의 작동방법.
  9. 제 1항 또는 제 2항에 있어서,
    복수의 샘플링 포인트들의 그룹은 Ordered 4x, Rotated 4x 및 Direct4D 8x로 구성된 그룹으로부터 선택된 한 개의 패턴을 갖는 그래픽 처리 시스템의 작동방법.
  10. 프리미티브들에 대한 정점 셰이딩된 속성 데이터를 처리하여 샘플링 포인트들에 대한 보간된 속성 데이터를 발생하도록 구성된 프래그먼트 셰이딩 스테이지를 구비한 그래픽 처리 시스템으로서,
    프리미티브에 대한 샘플링 포인트 델타 값들을 발생하고,
    프리미티브를 샘플링하는데 사용되고 있는 복수의 샘플링 포인트들의 그룹 중에서 적어도 한 개의 샘플링 포인트에 대한 보간된 속성 데이터를 발생하도록 구성된 처리회로를 구비하고,
    상기 처리회로는, 적어도 한 개의 샘플링 포인트 델타 값들과 함께 복수의 샘플링 포인트들의 그룹에 대한 기준점의 위치를 사용하여 적어도 한 개의 샘플링 포인트에 대한 보간된 속성 데이터를 발생하도록 구성되고,
    복수의 샘플링 포인트들의 그룹에 대한 기준점의 위치가 제 1 좌표게에 대해 정의되고, 프리미티브에 대한 샘플링 포인트 델타 값들이 제 1 좌표게에 대해 회전하는 제 2 좌표계에 대해 정의되는, 그래픽 처리 시스템.
  11. 제 10항에 있어서,
    제 2 좌표계는 제 1 좌표계에 대해 45°또는 그것의 배수만큼 회전한 그래픽 처리 시스템.
  12. 제 10항 또는 제 11항에 있어서,
    기준점은 복수의 샘플링 포인트들의 그룹의 샘플링 포인트들에 대해 중심에 배치되는 그래픽 처리 시스템.
  13. 제 10항 또는 제 11항에 있어서,
    샘플링 포인트 델타 값들을 발생할 때, 상기 처리회로는,
    제 1 좌표계에 대해 정의된 샘플링 포인트 델타 값들을 발생하고,
    제 1 좌표계에 대해 정의된 샘플링 포인트 델타 값들을 회전하여 제 2 좌표계에 대해 정의된 샘플링 포인트 델타 값들을 발생하도록 구성된 그래픽 처리 시스템.
  14. 제 10항 또는 제 11항에 있어서,
    샘플링 포인트 델타 값들은 제 2 좌표계에 대해 정의된 무게중심 좌표들을 포함하는 그래픽 처리 시스템.
  15. 제 10항 또는 제 11항에 있어서,
    기준점의 위치를 사용할 때, 상기 처리회로는 기준점의 위치로부터 기준점에 대한 무게중심 좌표들을 결정하도록 구성된 그래픽 처리 시스템.
  16. 제 15항에 있어서,
    상기 처리회로는, 샘플링 포인트 델타 값들 중에서 적어도 한 개를 기준점에 대한 무게중심 좌표들에 가산하거나 샘플링 포인트 델타 값들 중에서 적어도 한 개를 무게중심 좌표들로부터 감산하여 적어도 한 개의 샘플링 포인트에 대한 무게중심 좌표들을 발생하도록 구성된 그래픽 처리 시스템.
  17. 제 16항에 있어서,
    상기 처리회로는, 적어도 한 개의 샘플링 포인트에 대한 무게중심 좌표들을 사용하여 적어도 한 개의 샘플링 포인트에 대한 보간된 속성 데이터를 도출하도록 구성된 그래픽 처리 시스템.
  18. 제 10항 또는 제 11항에 있어서,
    복수의 샘플링 포인트들의 그룹은 Ordered 4x, Rotated 4x 및 Direct4D 8x로 구성된 그룹으로부터 선택된 한 개의 패턴을 갖는 그래픽 처리 시스템.
  19. 프로세서 상에서 실행될 때, 청구항 1 또는 2에 기재된 방법을 행하는 컴퓨터 소프트웨어 코드를 기억한 컴퓨터 판독가능한 기록매체.
KR1020160098271A 2015-08-03 2016-08-02 그래픽 처리 KR102598915B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1513714.4A GB2540983B (en) 2015-08-03 2015-08-03 Graphics processing
GB1513714.4 2015-08-03

Publications (2)

Publication Number Publication Date
KR20170016301A true KR20170016301A (ko) 2017-02-13
KR102598915B1 KR102598915B1 (ko) 2023-11-06

Family

ID=54063122

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160098271A KR102598915B1 (ko) 2015-08-03 2016-08-02 그래픽 처리

Country Status (5)

Country Link
US (1) US10204440B2 (ko)
KR (1) KR102598915B1 (ko)
CN (1) CN106408635B (ko)
GB (1) GB2540983B (ko)
TW (1) TWI728986B (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10379611B2 (en) * 2016-09-16 2019-08-13 Intel Corporation Virtual reality/augmented reality apparatus and method
CN107808367B (zh) * 2017-11-29 2020-10-16 天津聚飞创新科技有限公司 鱼眼图像校正方法、装置、无人机及存储介质
KR20190140549A (ko) * 2018-06-11 2019-12-20 삼성디스플레이 주식회사 아민 화합물 및 이를 포함한 유기 발광 소자
US10424074B1 (en) 2018-07-03 2019-09-24 Nvidia Corporation Method and apparatus for obtaining sampled positions of texturing operations
US10861230B2 (en) * 2018-08-01 2020-12-08 Nvidia Corporation System-generated stable barycentric coordinates and direct plane equation access
US11080924B2 (en) * 2019-05-31 2021-08-03 Samsung Electronics Co., Ltd. Optimized computation of perspective interpolants
CN112509108B (zh) * 2020-12-03 2024-04-12 杭州群核信息技术有限公司 基于gpu的顶点环境光遮蔽的生成方法以及图像渲染方法
US20220246081A1 (en) * 2021-01-05 2022-08-04 Google Llc Hidden display interfaces and associated systems and methods
US20230064069A1 (en) * 2021-07-30 2023-03-02 Intel Corporation Converting barycentric planes to attribute planes

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040196285A1 (en) * 2003-04-02 2004-10-07 Rice Daniel S. Displacement mapping by using two passes through the same rasterizer
US20140028673A1 (en) * 2012-07-20 2014-01-30 James Gregson Methods and systems for generating polycubes and all-hexahedral meshes of an object
US20150070380A1 (en) * 2013-09-11 2015-03-12 Nvidia Corporation System, method, and computer program product for using compression with programmable sample locations

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI267799B (en) * 2003-09-19 2006-12-01 Ind Tech Res Inst Method for constructing a three dimensional (3D) model
JP5006731B2 (ja) * 2007-07-31 2012-08-22 キヤノン株式会社 画像形成装置及び画像補正方法
US7868887B1 (en) * 2007-10-18 2011-01-11 Adobe Systems Incorporated Rendering rational quadratic Bézier curves on a GPU
US8044971B2 (en) * 2008-01-31 2011-10-25 Arm Norway As Methods of and apparatus for processing computer graphics
CN101458822B (zh) * 2008-12-30 2010-08-25 暨南大学 一种3d模型的计算全息图快速生成方法
US9569878B2 (en) * 2011-12-07 2017-02-14 Intel Corporation Sample culling based on linearized 5D edge equations
US9633469B2 (en) * 2013-03-15 2017-04-25 Nvidia Corporation Conservative rasterization of primitives using an error term
JP6153366B2 (ja) * 2013-03-29 2017-06-28 株式会社バンダイナムコエンターテインメント 画像生成システム及びプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040196285A1 (en) * 2003-04-02 2004-10-07 Rice Daniel S. Displacement mapping by using two passes through the same rasterizer
US20140028673A1 (en) * 2012-07-20 2014-01-30 James Gregson Methods and systems for generating polycubes and all-hexahedral meshes of an object
US20150070380A1 (en) * 2013-09-11 2015-03-12 Nvidia Corporation System, method, and computer program product for using compression with programmable sample locations

Also Published As

Publication number Publication date
KR102598915B1 (ko) 2023-11-06
US20170039755A1 (en) 2017-02-09
TWI728986B (zh) 2021-06-01
US10204440B2 (en) 2019-02-12
GB2540983B (en) 2017-11-29
CN106408635B (zh) 2021-12-03
GB201513714D0 (en) 2015-09-16
GB2540983A (en) 2017-02-08
CN106408635A (zh) 2017-02-15
TW201706962A (zh) 2017-02-16

Similar Documents

Publication Publication Date Title
KR102598915B1 (ko) 그래픽 처리
KR102046616B1 (ko) 오브젝트 및/또는 프리미티브 식별자들을 추적하는 것에 의한 그래픽스 프로세싱 강화
JP6342513B2 (ja) 高解像度表示バッファの効果的な構築方法
US10957082B2 (en) Method of and apparatus for processing graphics
US10043306B2 (en) Using depth data in a graphics processing system
US9965876B2 (en) Method and apparatus for graphics processing of a graphics fragment
US8624894B2 (en) Apparatus and method of early pixel discarding in graphic processing unit
US9558585B2 (en) Hidden surface removal in graphics processing systems
US9536333B2 (en) Method and apparatus for improved processing of graphics primitives
US10282895B2 (en) Transparency parameter determination when rendering a scene for output in graphics processing systems
US10089776B2 (en) Graphics processing systems
GB2543766A (en) Graphics processing systems
KR20190109279A (ko) 그래픽 처리
US11908069B2 (en) Graphics processing
Wang et al. Geometry shadow maps

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant