KR20160148618A - 그래픽 처리 시 다각형의 가속된 단일 면 절단 - Google Patents

그래픽 처리 시 다각형의 가속된 단일 면 절단 Download PDF

Info

Publication number
KR20160148618A
KR20160148618A KR1020167032521A KR20167032521A KR20160148618A KR 20160148618 A KR20160148618 A KR 20160148618A KR 1020167032521 A KR1020167032521 A KR 1020167032521A KR 20167032521 A KR20167032521 A KR 20167032521A KR 20160148618 A KR20160148618 A KR 20160148618A
Authority
KR
South Korea
Prior art keywords
polygon
intersection
graphics
distance
module
Prior art date
Application number
KR1020167032521A
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 KR20160148618A publication Critical patent/KR20160148618A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves
    • 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/10Geometric effects
    • G06T15/30Clipping
    • 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

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)

Abstract

방법 및 하드웨어는 단일의 면 절단을 위해 특화된 파이프라인을 이용하여 단일의 평면 절단 동작을 처리할 수 있다. 제 2 파이프라인은 복수의 절단면 사례에서 절단을 다루기 위해 제공될 수 있다. 단일 면 절단에 하드웨어 및 방법을 최적화함으로써, 다각형 처리량이 강화될 수 있다.

Description

그래픽 처리 시 다각형의 가속된 단일 면 절단{ACCELERATED SINGLE PLANE CLIPPING OF POLYGONS IN GRAPHICS PROCESSING}
관련 출원의 상호 참조
본 출원은 2014년 6월 27일자로 출원된 미국 가출원 제14/316,895호의 우선권을 주장한다.
그래픽 처리, 보다 구체적으로 3차원(three-dimensional, 3D) 렌더링은 종종 때로는 프리미티브라고 불리는 삼각형과 같은 다각형의 측면에서 완성된다. 게임과 연관된 디바이스와 같은 각종 디바이스에서 그래픽 성능 요구가 증가함에 따라, 그와 같은 프리미티브가 처리될 수 있는 속도는 여러 상황에서, 예를 들면, 그래픽 처리 유닛(graphics processing unit, GPU)에서 통합된 초소형 그래픽 코어에서 제한 인자일 수 있다.
삼각형과 같은 프리미티브의 처리 속도를 높이는 한 가지 기술은 프리미티브가 처리되어야 할 때만 프리미티브를 처리하는 것이다. 만일 삼각형이 - 종종 여섯 면의 "시각 절두체(viewing frustum)"에 의해 정의된 - 특정 상황에서 완전히 시야를 벗어나 있으면, 삼각형은 아무 추가 처리 없이 넘어갈 수 있다. 그러나 삼각형이 관심의 경계에 겹치면, 삼각형은 시각 절두체를 형성하는 면들 중 하나 이상의 면에 의해 절단될 수 있고, 이때 시각 절두체의 외부에 놓인 삼각형의 부분은 "절단(clipping)"이라고 알려진 접근방법에서 추가 처리가 제외된다.
실시예의 여러 장점은 다음의 명세서 및 첨부의 청구범위를 읽고 다음의 도면을 참조함으로써 본 기술에서 통상의 지식을 가진 자에게 자명해질 것이다.
도 1은 삼각형의 예를 포함하는 시각 절두체의 예이다.
도 2는 무게중심 좌표를 갖는 삼각형의 예이다.
도 3은 복수의 절단면에 의해 절단된 삼각형의 예이다.
도 4는 단일의 절단면으로 절단한 도 3의 삼각형의 예이다.
도 5는 실시예에 따라서 절단된 삼각형의 한 변과 연관된 특정 변수의 예를 예시한다.
도 6(a)는 삼각형의 정점이 외부에 놓이고 베이스가 내부에 놓인, 단일의 절단면에 의해 절단된 삼각형이 예이다.
도 6(b)는 삼각형의 정점이 내부에 놓이고 베이스가 외부에 놓인, 단일의 절단면에 의해 절단된 삼각형이 예이다.
도 7은 실시예에 따른 절단 동작을 다루는 방법 예의 플로우차트이다.
도 8은 실시예에 따른 절단 동작을 처리하는 하드웨어의 예이다.
도 9는 실시예에 따른 시스템의 예의 블록도이다.
도 1은 정점(12)의 관점에서 고려한 시각 절두체(10)를 예시한다. 시각 절두체(10)는 가까운 표면(13), 멀리 있는 표면(14), 최상 표면(15), 바닥 표면(16), 우측 표면(17), 및 좌측 표면(18)을 갖는다. 시각 절두체(10)와 함께 예시적인 삼각형(19, 20 및 21)이 또한 도시된다. 3D 그래픽 파이프라인에서 절단은 시각 절두체의 외부에 놓인 장면 부분을 버리기 위해 수행될 수 있다. 시각 절두체의 완전 외부에 놓인 삼각형에 대해 그래픽 동작을 수행하는 것은 낭비일 수 있으므로, 그와 같은 개체(예를 들면, 삼각형(19))는 "단순 불포함됨(trivially rejected)" 즉, 추가 처리에 포함되지 않는다고 말한다. 한편, 완전히 시각 볼륨(view volume) 내부에 포함되어 있는 삼각형(20)과 같은 객체는 처리되며, 이와 같은 개체는 추가 처리를 위해 파이프라인으로 보내질 수 있고, 아니면 달리 말해서 단순 포함(trivially accepted, TA)될 수 있다. 여기서 관심사항은 개체의 부분이 시각 절두체 내부에 놓이고 다른 부분이 시각 절두체의 외부에 놓이도록 하는, 시각 절두체의 표면과 교차되는 시각 절두체 내부에서 정점을 갖는 삼각형(21)과 같은 개체이다. 도 1에서 삼각형(21)의 경우, 절두체(10)의 우측 표면(17)은 삼각형(21)을 내부의 다각형 부분(22-23-24-25) (이 자체는 삼각형(22-23-24 및 24-25-22)으로 더 나누어질 수 있음) 및 바깥 또는 외부 부분(24-25-26)으로 나누는 절단면으로 작용한다. 그와 같은 삼각형은 절단되어, 절단면에서 새로운 정점을 가진 새로운 삼각형을 생성할 수 있다. 여기서 제시된 바와 같이 우측 표면(17)의 관점에서 절단을 예시하는 것은 명확하게 예시하기 위한 것이다. 다른 표면(13, 14, 15, 16, 및 18) 중 임의의 표면은 단독으로 또는 (우측 표면(17)을 포함해서) 서로 조합하여 주어진 삼각형에서 절단면으로 작용할 수 있다.
절단 동작은 사이클 시간 벤치마크 및 지연, 처리량, 그리고 전력 사용량과 같은 컴퓨터 사용량의 다른 벤치마크의 면에서 많은 비용이 들 수 있으며, 그래픽 서브시스템의 성능을 상당히 저하시킬 수 있다.
무려 여섯 개나 되는 시각 절두체의 절단면이 일반적인 다각형을 잘라낼 수 있지만, 실 세계 응용에서 절단면의 분포는 매우 불균일하며, 실제로 단일의 절단면의 경우 심하게 왜곡되는 것으로 확인되었다. 절단이 일어나는 대부분의 사례에서, 단일의 절단면만이 연루된다.
비록 그래픽에서 다른 종류의 다각형이 사용될 수 있지만, 다른 종류의 다각형은 일반적으로 삼각형 프리미티브 형태로 축소될 수 있고, 그래서 다음의 예는 삼각형의 측면에서 제시된다. 그러나 사각형, 오각형, 육각형 등과 같은 다른 다각형을 가지고 사용할 수 있다.
도 2는 정점(A, B 및 C)을 갖는 예시적인 삼각형(30)을 도시하며, 이들 정점은 컬러 값(예를 들어, 적, 녹, 및 청 휘도), 투명도, 텍스처, 및 위치와 같은 각종 속성을 가질 수 있다. 본 명세서에서 기술된 실시예에서, 이러한 값은 무게중심 좌표 형태로 표현될 수 있다. 삼각형(30)의 경우, 각 정점은 앞에서 언급한 바와 같이 컬러 값, 텍스처, 휘도, 또는 임의의 다른 관심의 속성을 나타낼 수 있는 속성(b0, b1 및 b2)을 갖는다. 그와 같은 속성은 더 적거나 더 많을 수 있지만, 다음의 예에서는 설명 목적을 위해 세 개의 속성(b0, b1 및 b2)이 서술된다.
도 3은 외부 부분(39)과 내부 부분(41)을 생성하는, 세 개의 절단면(36, 37 및 38)에 의해 절단된 이후의 삼각형을 도시한다. 삼각형을 임의의 개수의 평면으로 절단하면 제외된 외부 부분(39)과 내부 부분(41) 사이의 경계를 형성하는 정점 다각형(여기서는 B-G-H-I-J-C)이 생길 것이라는 것을 주목하자. 앞에서 언급된 바와 같이, 외부 또는 바깥 구역은 이 구역이 시각 절두체 외부에 놓여 있다는 점에서 제외되며, 그래서 추가 처리될 필요가 없고(즉, "절단"되지 않음), 반면에 포함된 내부 부분(41)은 일반적으로 추가 그래픽 처리가 필요할 수 있다. 다각형(B-G-H-I-J-C)은 삼각형(B-G-H, B-H-I, B-I-J, 및 B-J-C)으로 나누어질 수 있거나, 프로세스가 시작하는 다각형에 대해 네 개의 사각형으로 나누어질 수 있다. 시초에 무게중심 좌표를 가진 딱 세 개의 정점이 있었고 이들 정점을 알고 있는 경우, 이제는 여섯 개가 있고, 그 중 네 개가 계산되어야 한다는 것(점(B 및 C)의 무게중심 좌표는 변동 없음)을 또한 주목하자. 이것은 계산적으로 시간 소모적인 작업일 수 있다.
도 4는 삼각형(30)이 단일의 절단면(43)에 의해 잘린 더 단순한 사례를 도시한다. 이 사례에서, 구역(45)은 제외되며 구역(47)은 포함된다. 구역들 사이의 경계는 포함된 내부 다각형(B-D-E-C)을 정의하는 절단면(43)의 선이다. 이러한 다각형은 두 개의 삼각형(B-D-E 및 B-E-C) (또는 B-D-C 및 D-E-C)으로 나누어질 수 있다. 이러한 단일의 절단면 사례에서, 시스템은 단일의 절단면(43)이 삼각형을 잘라내는 점들 즉, 도면에서 점(D 및 E)의 무게중심 좌표의 값을 찾을 수 있다.
그러나 많은 절단면의 경우, 절단면이 삼각형을 잘라낸 삼각형의 각 에지마다, 교차점이 있으며, 그 점의 무게중심 값이 계산될 수 있다. 이것은 절단면까지의 거리가 에지를 따르는 선형 방식으로 변하므로, 에지의 두 정점의 절단 거리를 이용하여 수행될 수 있다. 그와 같은 접근방법은 절단면(50)에 의해 잘린 예시적인 에지(A-B)를 도시하는 도 5의 관점에서 예시된다. 예시된 예에서, 정점(A)은 시각 절두체 외부에 위치한 외부 점이며, 정점(B)은 시각 절두체 내부에 위치한 내부 점이다. 다음과 같은 분석은 시퀀스에서 각각을 채택함으로써 이 분석이 단일의 절단면에 적용될 뿐만 아니라 임의로 다수의 절단면에도 적용될 수 있다는 점에서 일반적이다.
먼저, 복수의 변수가 정의된다. 즉,
Dout: 정점(A)로부터 절단면(50)까지의 거리.
Din: 정점(B)로부터 절단면(50)까지의 거리.
D: 절단면(50)에 의해 잘린 (A-B)를 따라서 있는 점.
alpha:
또한, 본 예에서, (A-B)를 따른 거리는 계산 편의상 1로 정규화된다.
Dist = Din * alpha + Dout * (1 - alpha)
도 5에서, Dist는 (A-B)를 따라 놓인 임의의 점(E)으로부터 절단면(50)까지의 거리로서 도시된다. Dist = 0 (이것은 그래프적으로 점(E)을 점(D)으로 이동하는 것에 해당함)라고 설정하고 alpha에 대해 풀면, 절단면에서 alpha의 값이 생성된다. 즉, alpha = - Dout/(Din-Dout) 또는 alpha = Dout/(Dout-Din). (Din 및 Dout은 부호를 지닌 크기와 연관된 거리일 수 있다는 것을 주목하자. 그래서 만일 Din이 양(positive)이면, Dout는 음(negative)일 수 있으며, Din은 Dout와 동일하지 않을 것이고, 그래서 0으로 나누는 것이 배제된다).
beta가 1 - alpha와 같다고 정의하면, 수학식은 a*x + b*y 형태로 환원된다. 즉, beta = 1 - alpha = 1 - (Dout/(Dout-Din) = ((Dout - Din) - Dout)/(Dout-Din) beta = - Din/(Dout-Din)
일단 alpha와 beta가 절단된 에지로부터 계산되면, 나머지 면의 거리 및 무게중심 항은 절단면과 에지의 교차 점에서 생기는 새로운 정점에 대해 보간된다.
Figure pct00001
최종 무게중심 좌표는 모든 새로운 정점에 대해 계산되며, 절단 동작의 마지막에서, 새로운 위치 및 속성은 다음과 같이 계산된다:
Figure pct00002
여기서, V(A), V(B), 및 V(C)는 각기 정점(A, B, 및 C)에서 원(original) 정점의 속성값을 나타내며, P(D)는 새로운 정점(D)에서 속성(예를 들면, 컬러, 텍스처)을 나타내며, b0(D), b1(D) 및 b2(D)는 새로운 정점(D)에서 계산된 무게중심 값이다.
단일 면 절단의 경우, 단일 면으로 절단할 때 두 개의 가능한 출력이 있다는 사실을 활용할 수 있다. 도 6(a) 및 도 6(b)는 이러한 두 개의 토폴로지를 예시한다. 각 토폴로지는 삼각형을 잘라내는 단일의 절단면(52)을 보여준다. 도 6(a)의 토폴로지에서, 삼각형은 외부에 그의 정점(B)을 가지며 도 6(b)의 토폴로지에서, 정점(B)은 절단면(52)의 내부 쪽에 위치되어 있다.
단지 하나의 절단면만이 있는 사례에서, 절단하고 초기의 무게중심 값을 계산하기 위해 전술한 수학식 1 내지 수식 6을 이용할 수 있으며 새로운 무게중심 좌표는 alpha와 beta의 간단한 조합이다.
본 예에서, 도 2의 삼각형의 정점 위치가 주어지면 초기의 무게중심 값이 사용될 수 있고, 다음과 같이 산출될 수 있다:
Figure pct00003
단일의 절단면 사례에 대해, 초기의 무게중심 값을 수학식 (3), (4) 및 (5)로 대체함으로써, 새로운 점(D)의 무게중심 좌표는 이제 다음과 같이 평가될 수 있다. 즉,
Figure pct00004
점(E)의 무게중심 값은 마찬가지로 평가될 수 있다.
단일 면 절단 동작을 위한 계산은 다면을 절단하는 계산보다 계산적으로 더 적게 연루된다는 것이 분명하다. 그래서 그 동작은 상대적으로 더 적은 수의 프로세서 및 메모리 자원을 이용하여 수행될 수 있다.
이제 도 7을 참조하면, 단일 면 절단 동작과 다면 절단 동작을 모두 처리하는 방법의 일 예의 플로우차트가 도시된다. 방법은 예를 들면, 주문형 집적 회로(application specific integrated circuit, ASIC), 상보형 금속 산화물 반도체(complementary metal oxide semiconductor, CMOS) 또는 트랜지스터-트랜지스터 로직(transistor-transistor logic, TTL) 기술 또는 이들의 임의의 조합과 같은 회로 기술을 이용하는 고정된 기능성 로직 하드웨어로 구현될 수 있다.
예시된 블록(62)에서, 주어진 입력 삼각형의 정점이 절단 동작을 수행할 절단면과 함께 입력된다. 예시된 조건 블록(64)은 절단면의 개수를 검사한다. 만일 단일의 절단면이 있으면, 제어는 플로우차트의 좌측 절반 쪽으로 이동하는 반면, 하나보다 많은 절단면이 있으면, 제어는 플로우차트의 우측 절반 쪽으로 이동한다. 일차로 플로우차트의 좌측 절반에 의해 제기된 단일의 절단면이 고려된다.
예시된 블록(66)에서, 삼각형의 정점이 초기화되어 목록으로 작성되며, 무게중심 항도 마찬가지로 초기화된다(즉, 0 또는 1로 초기화된다). 그 다음, 예시된 블록(68) (예를 들면, "로딩(LOAD)" 블록)에서, 하나의 절단면으로부터 생긴 정점의 거리가 계산되어 저장된다. 블록(70)에서, 내부-외부, 외부-내부 거리 비율, 즉, 앞에서 논의된 바와 같이 alpha와 beta가 (예를 들면, 수학식 7, 8 및 9에 따라서) 계산된다. 그 다음, 예시된 블록(72)에서, 입력 토폴로지에 따라서 적절한 4-정점 또는 3-정점의 출력 토폴로지가 선택된다. 예시된 블록(74)에서, 이러한 토폴로지의 모든 정점에 대해, 새로 절단된 위치에서의 무게중심 값이 (수학식 7, 8 및 9에 대해 논의된 것처럼) 계산되며, 블록(104)에서 절단 동작으로 말미암아 생긴 새로운 정점에 대해 관심의 변수 값이 (예를 들어, 앞의 수학식 6을 적용함으로써) 구해질 수 있다.
다음으로 다수의 절단면이 있는 사례가 고려된다. 앞에서 언급한 바와 같이, 절단이 수행되어야 하는 대다수의 사례에서는 단지 하나의 절단면이 있지만, 그럼에도 불구하고 다수의 절단면이 고려되어야 하는 사례가 있을 것이며 이러한 사례의 방법의 실시예는 플로우차트의 우측 절반 쪽에서 제시된다. 예시된 블록(80)에서, 삼각형의 정점이 초기화되어 목록으로 작성되며, 무게중심 항도 마찬가지로 초기화된다. 그 다음, 예시된 블록(82)인 로딩 블록에서, 고려 중인 특정 절단면으로부터 생긴 정점의 거리가 계산되어 저장된다. 블록(84)에서, 모든 절단면이 전술한 단계와 관련하여 고려되었는지가 결정될 수 있으며, 고려되지 않았다면, 제어는 이전 단계의 블록으로 되돌아가서 다시 한번 수행하고, 고려 중인 특정 절단면으로부터 생긴 정점의 거리가 계산되어 저장된다. 만일 방법의 이러한 과정이 모든 절단면에 대해 완료되었다면, 블록(86)에서, 특정 면에 대해 절단하는 단계를 시작한다.
예시된 블록(88)에서, 주어진 삼각형의 모든 정점이 시각 절두체의 외부에 놓여 있는지가 결정되며, 정점이 외부에 있으면, 삼각형은 없어지며(즉, 단순 제외되며) 제어는 블록(104)으로 넘어간다. 정점이 모두 외부에 있는 것이 아니면, 블록(90)에서 방법은 모든 정점이 시각 절두체의 내부(즉, 안쪽)에 있는지를 결정한다. 내부에 있으면, 이 삼각형에 대해 아무런 실제 절단이 수행되지 않으며, 제어는 블록(86)으로 넘어가서 고려할 다음 면을 선택한다. 만일 모든 정점이 시각 절두체 내부에 있는 것이 아니면, 블록(92)에서, 내부-외부, 외부-내부 거리 비율, 즉, 앞에서 논의된 바와 같이 alpha와 beta가 계산되며, 블록(94)에서 방법은 절단면에 의해 잘린 삼각형의 에지를 따라서 있는 점들의 새로운 정점 무게중심, 거리 및 다른 좌표를 보간한다.
블록(96)에서는 모든 면이 절단되었는지가 결정될 수 있으며, 모두 절단되지 않았으면, 제어는 다시 예시된 블록(94)으로 넘어간다. 만일 모두 고려되었다면, 블록(98)에서 새로운 정점에 대한 플래그가 업데이트되고 계산될 수 있다. 플래그는 절단된 면에 대해 정점의 토폴로지(즉, 내부 대 외부)를 표시하는데 사용될 수 있다. 예시된 블록(100)에서, 방법은 모든 면이 고려되었는지를 결정하며, 모든 면이 고려되지 않았다면, 제어는 다시 블록(86)으로 돌아간다. 한편, 모든 절단면이 고려되었다면, 블록(102)에서, 새로 생성된 모든 정점에 대해 새로운 정점 위치, 값 및 무게중심 항이 계산될 수 있으며, 계산된 위치, 값 및 항은 예시된 블록(104)에서 이용 가능해진다.
도 8은 방법의 실시예가 실시될 수 있는 구현 하드웨어(120)의 예를 도시한다. 넓은 의미에서, 예시된 실시예는 대체로 도 7에서 제시된 플로우차트의 두 쪽에 대응하는 두 개의 파이프라인을 제공하는데, 이때 파이프라인(160)은 도 7의 왼쪽 절반 쪽에 대응하며 파이프라인(130)은 대체로 도 7의 오른쪽 절반 쪽에 대응한다. 기하학적 처리를 가속화하는 구현 하드웨어(120)를 이용하면, 특히 본 명세서에서 설명된 단일 면 절단 기술과 함께 사용될 때, 기하학적 서브시스템의 성능을 개선할 수 있다.
삼각형(122)은 디코더(124)에 도달할 수 있으며, 디코더는 이 삼각형이 단일 면 절단을 받을지 또는 다면에 의한 절단을 받을지에 대해 디코더(124)에 알려주는 단일 절단 제어 신호(126)에 의해 관리된다. 도면의 반대편에서, 이와 동일한 제어 신호(126)는 멀티플렉서(125)에 의해 출력을 설정하는데 사용될 수 있다.
먼저 다수의 절단면이 있다고 결정되는 사례가 고려된다. 이와 같은 구현예에서는 선형 동작의 간단한 A*X + B*Y 유형을 구현할 수 있는 (더 많거나 더 적을 수 있는) 복수의 ALU(144, 146, 및 148)와, 분할기 블록(150)과, 입력, 출력, 및 절단 동작 동안 생성된 임시 정점을 저장할 수 있는 레지스터 파일(152)이 있다. 이러한 구현예는 이러한 자원 전체에 대해 여러 절단 동작을 스케줄하는 제어 블록(132)을 또한 포함한다. 이러한 제어 블록(132)은 각 모듈 즉, INIT 모듈(134), LOAD 모듈(135), CALC 모듈(136), CLIP 모듈(140) 및 OUT 모듈(142) 전체를 다섯 단계에 걸쳐 동작시킬 수 있다. INIT 단계에서, 정점은 레지스터 파일 내로 로딩되며 정점 리스트 및 무게중심 값은 정점에 할당된다. 예시된 LOAD 단계에서, ALU 자원은 선택된 면으로부터 정점의 거리를 계산하는데 사용되며, 이러한 프로세스는 활성화된 모든 절단면에 대해 반복된다. 그 다음 계산된 거리는 어느 면이 절단되어야 하는지를 알기 위해 검사될 수 있다. CALC 단계에서, 선택된 절단면에 대해, 예시된 하드웨어는 ALU 자원 및 분할기 블록을 이용하여 내부-외부 및 외부-내부 거리 비율(예를 들면, 수학식 1 및 2에 따라 alpha, beta)을 계산한다.
예시된 CLIP는 수학식 3, 4 및 5에서 준비된 것으로서 절단된 새로운 위치에서 무게중심 값을 평가한다. 이후, 아직 또 다른 면이 절단되어야 하는지가 결정될 수 있다.
선행의 프로세스는 절단될 면이 남아 있지 않을 때까지 반복적으로 반복될 수 있다. OUT 단계에서, 모든 새로운 정점의 무게중심 값은 레지스터 파일로부터 읽혀질 수 있으며, ALU 자원은 수학식 6을 평가함으로써 관심의 새로운 위치 및 다른 값(예를 들면, 컬러, 텍스처 등)을 계산하는데 다시 사용된다. 이러한 새로운 평가는 새로이 생성된 모든 정점에 대해 수행될 수 있다. 다수 절단면 동작이 진행되지만, ALU 및 다른 자원의 대부분은 전술한 단계에서 관여될 수 있으며, 그래서 파이프라인(130)에서 단지 하나의 삼각형만이 그의 최종 출력이 발생될 때까지 처리를 위해 스케줄될 것이다.
앞에서 언급한 바와 같이, 대부분의 사례에서는 단일의 절단면만 있을 것이고, 이 경우 단일의 절단면 동작에 최적화된 별도의 파이프라인(160)이 이용된다. 다수 절단면 사례를 위한 파이프라인(130)과 대조적으로, 예시된 파이프라인(160)은 해당 파이프라인에서 복수의 개체를 처리할 수 있다. 단일 면 절단 동작의 사례에서, 각 ALU 자원은 하나의 단계로 묶일 수 있으며 그 ALU는 파이프라인에서 다수의 삼각형의 처리를 가능하게 하는 그 동작을 위해서만 사용될 수 있다. 예시된 실시예에서, 다섯 개의 삼각형이 파이프라인(160)에서 처리될 수 있다. 이러한 접근방법은 일반적으로 각 ALU가 여러 레인별로 더 많은 계산에 연루되는 다중 동작에 공유되는 다면 절단의 사례(파이프라인(130))와 대조적이다. 그 사례에서, 실제로 계산 요구는 한번에 하나의 삼각형만이 처리될 수 있도록 한다.
SinglePlane_TNIT 모듈(162)에서, 정점이 로딩되며 무게중심 값은 정점에 할당된다. SinglePlane_LOAD 모듈(164)에서, 하나의 ALU 자원(144)은 절단되는 단일 면으로부터 정점의 거리를 계산하는데 이용되며, 그래서 이 자원은 다수의 절단면으로부터 거리를 평가할 필요가 없다. SinglePlane_CALC 모듈(166)에서, 선택된 절단면에 대해, 다른 ALU 자원(146)이 분할기 블록(150)과 함께 사용되어 내부-외부 및 외부-내부 거리 비율(즉, 앞에서 수학식 1 및 2에 대해 논의된 바와 같이 alpha 및 beta)을 계산하는데 사용된다. SinglePlane_CLIP 모듈(168)에서, 전술한 수학식 7, 8 및 9에서 보여준 바와 같이 alpha 및 beta 값을 할당함으로써 새로운 무게중심 값이 평가된다. 입력 토폴로지는 하나 또는 두 개의 새로운 정점이 생성될 필요가 있는지를 결정할 수 있다. 예시된 SinglePlane_OUT 모듈(170)에서, 다른 ALU 자원(도시되지 않음)은 수학식 6에서 제시된 바와 같이 계산을 수행함으로써 최종 위치 또는 다른 원하는 값(예를 들면, 컬러, 텍스처 등)을 평가하는데 사용된다.
하기 테이블은 단일 및 복수의 면 사례의 "반드시 절단" 절단 동작의 처리량의 예를 도시한다.
Figure pct00005
여기서,
S = 초기 셋업과 최종 출력 및 다른 모든 북 키핑 동작에서 소비된 고정 사이클 수;
N = 절단되는 면의 수;
M = 각 면의 절단 시 소비된 사이클;
SP_M: 단일 면 절단 동작의 최악 사례 단계 지연.
SP_M 지연은 실질적으로 M보다 낮을 것이며 ALU 지연에 실제로 가까울 것이라는 것이 주목된다.
실질적인 수행 이득은 본 명세서에서 개시된 실시예의 구현을 통해 성취될 수 있다. 대부분의 작업 부하에 대해, 본 명세서에서 개시된 것과 같은 단일 면 구현은 양호한 수행 이득을 산출할 수 있다. 더욱이, ALU의 절반을 제거하여도 거의 수행에 영향을 미지치 않을 수 있는데, 이것은 소수의 트랜지스터 또는 게이트가 설계에서 사용될 수 있다는 점에서 면적 이득이 있을 수 있다는 것을 의미하며, 그래서 전체적인 칩 면적과 비용 면에서 절감된다. 그러므로 본 명세서에서 기술된 바와 같은 단일 면 하드웨어 절단을 위한 별도의 파이프라인을 구현할 때의 수행 이득 및 면적 이득의 두 가지가 있을 수 있다.
도 9는 실시예에 따른 데이터 프로세싱 시스템(200)의 블록도이다. 데이터 프로세싱 시스템(200)은 하나 이상의 프로세서(202) 및 하나 이상의 그래픽 프로세서(208)를 포함하며, 단일 프로세서 데스크톱 시스템, 멀티프로세서 워크스테이션 시스템, 또는 복수의 프로세서(202) 또는 프로세서 코어(207)를 갖는 서버 시스템일 수 있다. 본 명세서에서 개시된 실시예는 하나 이상의 그래픽 프로세서(208)의 일부일 수 있다. 일 실시예에서, 데이터 프로세싱 시스템(200)은 이동 디바이스, 휴대용 디바이스 및 임베디드 디바이스에서 사용하기 위한 시스템 온 칩 집적 회로(system on a chip integrated circuit, SOC)이다.
데이터 프로세싱 시스템(200)의 실시예는 서버 기반의 게임 플랫폼, 게임 및 미디어 콘솔을 포함하는 게임 콘솔, 이동 게임 콘솔, 휴대용 게임 콘솔, 또는 온라인 게임 콘솔을 포함할 수 있거나, 이들 내에 포함될 수 있다. 일 실시예에서, 데이터 프로세싱 시스템(200)은 이동 전화, 스마트 폰, 태블릿 컴퓨팅 디바이스, 또는 이동 인터넷 디바이스이다. 데이터 프로세싱 시스템(200)은 또한 스마트 시계 착용가능 디바이스, 스마트 안경류 디바이스, 증강 현실 디바이스, 또는 가상현실 디바이스와 같은 착용 디바이스를 포함하거나, 이들과 연결되거나, 또는 이들 내에 통합될 수 있다. 일 실시예에서, 데이터 프로세싱 시스템(200)은 하나 이상의 프로세서(202) 및 하나 이상의 그래픽 프로세서(208)에 의해 생성된 그래픽 인터페이스를 갖는 텔레비전 또는 셋톱 박스 디바이스이다.
하나 이상의 프로세서(202)는 각기 실행될 때 시스템 및 사용자 소프트웨어에 필요한 동작을 수행하는 명령어를 처리하는 하나 이상의 프로세서 코어(207)를 포함한다. 일 실시예에서, 하나 이상의 프로세서 코어(207)는 각기 특정 명령어 집합(209)를 처리하도록 구성된다. 명령어 집합(209)은 복잡 명령어 집합 컴퓨팅(complex instruction set computing, CISC), 축소 명령어 집합 컴퓨팅(reduced instruction set computing, RISC), 또는 VLIW(very long instruction word, VLIW)를 통한 컴퓨팅을 가능하게 할 수 있다. 다중 프로세서 코어(207)는 다른 명령어 집합의 에뮬레이션을 가능하게 하는 명령어를 포함할 수 있는 상이한 명령어 집합(209)을 각기 처리할 수 있다. 프로세서 코어(207)는 또한 디지털 신호 프로세서(digital signal processor, DSP)과 같은 다른 프로세싱 디바이스를 포함할 수 있다.
일 실시예에서, 프로세서(202)는 캐시 메모리(204)를 포함한다. 아키텍처에 따라, 프로세서(202)는 단일의 내부 캐시 또는 다중 레벨의 내부 캐시를 가질 수 있다. 일 실시예에서, 캐시 메모리는 프로세서(202)의 다양한 컴포넌트 사이에서 공유된다. 일 실시예에서, 프로세서(202)는 또한 공지된 캐시 일관성 기술을 이용하여 프로세서 코어(207) 사이에서 공유될 수 있는 외부 캐시(예를 들면, 레벨 3(L3) 캐시 또는 최종 레벨 캐시(last level cache, LLC))를 사용한다. 레지스터 파일(206)은 상이한 종류의 데이터를 저장하는 상이한 종류의 레지스터(예를 들면, 정수 레지스터, 부동소수점 레지스터, 상태 레지스터, 및 명령어 포인터 레지스터)를 포함할 수 있는 프로세서(202) 내에 부수적으로 포함된다. 일부 레지스터는 범용 레지스터일 수 있지만, 다른 레지스터는 프로세서(202)의 설계에 특정할 수 있다.
프로세서(202)는 프로세서(202)와 시스템(200) 내 다른 컴포넌트 사이에서 데이터 신호를 전송하는 프로세서 버스(210)에 연결된다. 시스템(200)은 메모리 컨트롤러 허브(216) 및 입력 출력(I/O) 컨트롤러 허브(230)를 포함하는 예시적인 '허브' 시스템 아키텍처를 이용한다. 메모리 컨트롤러 허브(216)는 메모리 디바이스와 시스템(200)의 다른 컴포넌트 사이의 통신을 가능하게 하는데 반해, I/O 컨트롤러 허브(ICH)(230)는 로컬 I/O 버스를 통해 I/O 디바이스와의 연결을 제공한다.
메모리 디바이스(220)는 다이나믹 랜덤 액세스 메모리(dynamic random access memory, DRAM) 디바이스, 스태틱 랜덤 액세스 메모리(static random access memory, SRAM) 디바이스, 플래시 메모리 디바이스, 또는 프로세스 메모리로서 기능하기에 적합한 성능을 갖는 일부 다른 메모리 디바이스일 수 있다. 메모리(220)는 프로세서(202)가 프로세스를 실행할 때 사용하기 위한 데이터(222) 및 명령어(221)를 저장할 수 있다. 메모리 컨트롤러 허브(216)는 또한 옵션의 외부 그래픽 프로세서(212)와 연결될 수 있으며, 외부 그래픽 프로세서는 그래픽 및 미디어 동작을 수행하기 위해 프로세서(202) 내 하나 이상의 그래픽 프로세서(108)와 통신할 수 있다.
ICH(230)는 주변기기가 고속 I/O 버스를 통해 메모리(220) 및 프로세서(202)에 연결할 수 있게 한다. I/O 주변기기는 오디오 컨트롤러(246), 펌웨어 인터페이스(228), 무선 송수신기(226)(예를 들면, Wi-Fi, 블루투스), 데이터 저장 디바이스(224)(예를 들면, 하드 디스크 드라이브, 플래시 메모리 등), 및 레거시(예를 들면, 퍼스널 시스템 2(Personal System 2, PS/2) 디바이스)를 시스템에 연결하는 레거시 I/O 컨트롤러를 포함한다. 하나 이상의 범용 직렬 버스(Universal Serial Bus, USB) 컨트롤러(242)는 키보드 및 마우스(244) 조합과 같은 입력 디바이스를 연결한다. 네트워크 컨트롤러(234)는 또한 ICH(230)에도 연결될 수 있다. 일 실시예에서, 고성능 네트워크 컨트롤러(도시되지 않음)는 프로세서 버스(210)에 연결된다.
본 명세서에서 기술된 그래픽 및/또는 비디오 프로세싱 기술은 다양한 하드웨어 아키텍처에서 구현될 수 있다. 예를 들면, 그래픽 및/또는 비디오 기능성은 칩셋 내에서 통합될 수 있다. 대안으로, 별개의 그래픽 및/또는 비디오 프로세서가 사용될 수 있다. 또 다른 실시예에 따르면, 그래픽 및/또는 비디오 기능은 멀티-코어 프로세서를 포함하는 범용 프로세서에 의해 구현될 수 있다. 다른 실시예에서, 기능은 소비자 전자 디바이스에서 구현될 수 있다.
추가 주석 & 예:
예 1은 적어도 하나의 그래픽 다각형을 처리하는 방법을 포함할 수 있으며, 이 방법은, 다각형이 절단될 절단면의 수를 결정하는 단계와, 단일의 절단면만 있으면, 다각형을 단일 면 절단에 전용되는 파이프라인에 맡기는 단계를 포함한다.
예 2는 예 1의 방법을 포함할 수 있으며, 다각형의 정점의 좌표를 로딩하는 단계와, 무게중심 값을 정점에 할당하는 단계를 더 포함한다.
예 3은 예 2의 방법을 포함할 수 있으며, 단일의 절단면의 각각의 정점과의 거리를 계산하는 단계를 더 포함한다.
예 4는 예 3의 방법을 포함할 수 있으며, 거리 비율 alpha 및 beta를 계산하는 단계를 더 포함하며, 여기서 alpha = Dout/(Din - Dout)이고, Dout는 하나의 정점으로부터 절단면까지의 거리이며 Din은 인접 정점으로부터 절단면까지의 거리이며, beta = 1 - alpha이다.
예 5는 예 4의 방법을 포함할 수 있으며, 인접한 정점 사이의 거리를 정규화하는 단계를 더 포함한다.
예 6은 예 1-5의 방법을 포함할 수 있으며, 새로운 무게중심 값을 결정된 절단면과 다각형의 교차지점에 놓인 점에 할당하는 단계를 더 포함한다.
예 7은 예 1-5의 방법을 포함할 수 있으며, 새로운 값을 결정된 절단면과 다각형의 교차지점에 놓인 점에 할당하는 단계를 더 포함한다.
에 8은 예 1-5의 방법을 포함할 수 있으며, 여기서 다각형은 삼각형이다.
예 9는 예 1의 방법을 포함할 수 있으며, 하나보다 많은 절단면이 있으면, 다각형을 다면의 절단에 전용되는 파이프라인에 맡기는 단계를 더 포함한다.
예 10은 적어도 하나의 그래픽 다각형을 처리하는 장치를 포함할 수 있으며, 이 장치는, 다각형이 절단될 절단면의 수를 결정하는 모듈과, 단일 면 절단에 전용되는 파이프라인을 포함한다.
예 11은 예 10의 장치를 포함할 수 있으며, 다각형의 정점의 좌표를 로딩하고, 무게중심 값을 정점의 좌표에 할당하는 모듈을 더 포함한다.
예 12는 예 11의 장치를 포함할 수 있으며, 단일의 절단면의 각각의 정점과의 거리를 계산하는 모듈을 더 포함한다.
예 13은 예 10-12의 장치를 포함할 수 있으며, 거리 비율 alpha 및 beta를 계산하는 모듈을 더 포함하며, 여기서 alpha = Dout/(Din - Dout)이고, Dout는 하나의 정점으로부터 절단면까지의 거리이며 Din은 인접 정점으로부터 절단면까지의 거리이며, beta = 1 - alpha이다.
예 14는 예 10-12의 장치를 포함할 수 있으며, 인접한 정점 사이의 거리를 정규화하는 모듈을 더 포함한다.
예 15는 예 13의 장치를 포함할 수 있으며, 새로운 무게중심 값을 결정된 절단면과 다각형의 교차지점에 놓인 점에 할당하는 모듈을 더 포함한다.
예 16은 예 13의 장치를 포함할 수 있으며, 새로운 값을 결정된 절단면과 다각형의 교차지점에 놓인 점에 할당하는 모듈을 더 포함한다.
예 17은 예 11의 장치를 포함할 수 있으며, 여기서 다각형은 삼각형이다.
예 18은 예 11의 장치를 포함할 수 있으며, 하나보다 많은 절단면이 있는 사례를 다루는 제 2 파이프라인을 더 포함한다.
예 19는 예 18의 장치를 포함할 수 있으며, 모듈들은 두 파이프라인에 모두 이용 가능하다.
예 20은 적어도 하나의 그래픽 다각형을 처리하는 시스템을 포함할 수 있으며, 이 시스템은, 그래픽 프로세싱 유닛과, 다각형이 절단될 절단면의 수를 결정하는 모듈과, 단일 면 절단에 전용되는 제 1 파이프라인과, 다면의 절단에 전용된 제 2 파이프라인을 포함한다.
예 21은 예 20의 시스템을 포함할 수 있으며, 제 1 파이프라인과 연관되어, 다각형의 정점의 좌표를 로딩하고, 무게중심 값을 정점에 할당하는 모듈을 더 포함한다.
예 22는 예 21의 시스템을 포함할 수 있으며, 제 1 파이프라인과 연관되어 단일의 절단면의 각각의 정점과의 거리를 계산하는 모듈을 더 포함한다.
예 23은 예 22의 시스템을 포함할 수 있으며, 제 1 파이프라인과 연관되어 거리 비율 alpha 및 beta를 계산하는 모듈을 더 포함하며, 여기서 alpha = Dout/(Din - Dout)이고, Dout는 하나의 정점으로부터 절단면까지의 거리이며 Din은 인접 정점으로부터 절단면까지의 거리이며, beta = 1 - alpha이다.
예 24는 예 21-23의 시스템을 포함할 수 있으며, 제 1 파이프라인과 연관되어 새로운 무게중심 값을 결정된 절단면과 다각형의 교차지점에 놓인 점에 할당하는 모듈을 더 포함한다.
예 25는 예 24의 시스템을 포함할 수 있으며, 제 1 파이프라인과 연관되어 새로운 값을 결정된 절단면과 다각형의 교차지점에 놓인 점에 할당하는 모듈을 더 포함한다.
예 26은 적어도 하나의 그래픽 다각형을 처리하는 장치를 포함할 수 있으며, 이 장치는, 다각형이 절단될 절단면의 수를 결정하는 수단과, 단일 면 절단에 전용되는 파이프라인을 포함한다.
예 27은 예 26의 장치를 포함할 수 있으며, 다각형의 정점의 좌표를 로딩하고, 무게중심 값을 정점의 좌표에 할당하는 수단을 더 포함한다.
예 28은 예 27의 장치를 포함할 수 있으며, 단일의 절단면의 각각의 정점과의 거리를 계산하는 수단을 더 포함한다.
예 29는 예 26-28의 장치를 포함할 수 있으며, 거리 비율 alpha 및 beta를 계산하는 수단을 더 포함하며, 여기서 alpha = Dout/(Din - Dout)이고, Dout는 하나의 정점으로부터 절단면까지의 거리이며 Din은 인접 정점으로부터 절단면까지의 거리이며, beta = 1 - alpha이다.
예 30은 예 26-28의 장치를 포함할 수 있으며, 새로운 무게중심 값을 결정된 절단면과 다각형의 교차지점에 놓인 점에 할당하는 모듈을 더 포함한다.
예 31은 예 26-28의 장치를 포함할 수 있으며, 새로운 값을 결정된 절단면과 다각형의 교차지점에 놓인 점에 할당하는 모듈을 더 포함한다.
예 32는 예 30의 장치를 포함할 수 있으며, 여기서 값은 컬러 값, 텍스처, 또는 휘도 중 하나 이상을 반영한다.
예 33은 예 26의 장치를 포함할 수 있으며, 여기서 다각형은 삼각형이다.
예 34는 예 26-28의 장치를 포함할 수 있으며, 하나보다 많은 절단면이 있는 사례를 다루는 제 2 파이프라인을 더 포함한다.
예 35는 그래픽 랜더링 시 다각형을 절단하는 장치를 포함할 수 있으며, 이 장치는, 단일 면 절단의 사례에 사용될 제 1 파이프라인과, 하나보다 많은 절단면의 사례에 사용될 제 2 파이프라인을 포함하며, 단일의 절단면으로 절단되는 다각형은 제 1 파이프라인으로 전달되며 다른 모든 다각형은 제 2 파이프라인으로 전달된다.
예 36은 예 35의 장치를 포함할 수 있으며, 여기서 두 개의 파이프 라인은 산술 논리 유닛을 공유한다.
다양한 실시예 또는 실시예의 요소는 하드웨어 요소, 소프트웨어 요소, 또는 이 둘의 조합을 이용하여 구현될 수 있다. 하드웨어 요소의 예는 프로세서, 마이크로프로세서, 회로, 프로세서 회로, 회로 요소(예를 들면, 트랜지스터, 저항, 캐패시터, 및 인덕터 등), 집적 회로, 주문형 집적 회로(application specific integrated circuit, ASIC), 프로그래머블 로직 디바이스(programmable logic device, PLD), 디지털 신호 프로세서(digital signal processor, DSP), 필드 프로그래머블 게이트 어레이(field programmable gate array, FPGA), 로직 게이트, 레지스터, 반도체 디바이스, 칩, 마이크로칩, 및 칩셋 등을 포함할 수 있다. 소프트웨어 요소의 예는 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 머신 프로그램, 오퍼레이팅 시스템 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 함수, 방법, 절차, 소프트웨어 인터페이스, 애플리케이션 프로그램 인터페이스(application program interface, API), 명령어 집합, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심볼, 또는 이들의 임의의 조합을 포함할 수 있다. 실시예가 하드웨어 요소 및/또는 소프트웨어 요소를 이용하여 구현되는지를 판단하는 것은 원하는 계산 속도, 전력 레벨, 내열성, 프로세싱 사이클 예산, 입력 데이터 속도, 출력 데이터 속도, 메모리 자원, 데이터 버스 속도 및 다른 디자인이나 성능 제약과 같은 임의의 개수의 인자에 따라서 변할 수 있다.
실시예는 모든 종류의 반도체 집적 회로(integrated circuit, "IC") 칩과 함께 사용하기에 적용 가능하다. 이러한 IC 칩의 예는 이것으로 제한되는 것은 아니지만, 프로세서, 컨트롤러, 칩셋 컴포넌트, 프로그래머블 로직 어레이(programmable logic array, PLA), 메모리 칩, 및 네트워크 칩 등을 포함한다. 또한, 도면 중 일부에서, 신호 도체 선들은 선으로 표현된다. 일부는 더 많은 구성 신호 경로를 표시하기 위해 다르게 표시될 수 있고, 복수의 구성 신호 경로를 표시하기 위해 번호 꼬리표를 가질 수 있으며, 그리고/또는 기본적인 정보 흐름 방향을 표시하기 위해 한 곳 이상의 끝부분에 화살표를 붙일 수 있다. 그러나 이것은 제한하는 방식으로 해석되지 않아야 한다. 오히려, 그렇게 추가되는 세부사항은 회로의 더 쉬운 이해를 도모하기 위해 하나 이상의 예시적인 실시예와 관련하여 사용될 수 있다. 임의로 표현된 신호선들은 부가적인 정보를 갖고 있든 그렇지 않든 간에 여러 방향으로 진행할 수 있는 하나 이상의 신호를 실제로 포함할 수 있으며 임의의 적절한 종류의 신호 방식, 예를 들면, 차동 쌍으로 구현된 디지털 또는 아날로그 라인, 광섬유 라인, 및/또는 싱글-엔디드 라인(single-ended line)으로 구현될 수 있다.
예시적인 크기/모델/값/범위는 비록 실시예가 그와 똑 같이 제한되지 않을지라도, 그렇게 제시되었을 수 있다. 제조 기술(예를 들면, 포토리소그래피)는 시간이 지남에 따라 발달하므로, 더 작은 크기의 디바이스가 제조될 수도 있다고 예상된다. 게다가, IC 칩과의 널리 공지된 전력/접지 접속부 및 다른 컴포넌트는 예시와 설명의 간략성을 기하기 위해, 그리고 실시예의 특정 양태를 방해하지 않기 위해 도면에 도시될 수도 또는 도시되지 않을 수도 있다. 또한, 실시예를 모호하게 하는 것을 피하기 위해, 그리고 또한 그러한 블록도 구성의 구현과 관련한 특이성은 전적으로 그 실시예가 구현되는 플랫폼에 좌우된다는 사실로 보아서도, 즉, 그러한 특이성이 당연히 본 기술에서 통상의 지식을 가진 자의 범위 내에 있어야 한다는 사실로 보아서도, 구성은 블록도 형태로 도시될 수 있다. 특정한 세부사항이 예시적인 실시예를 기술하기 위해 언급되는 경우, 본 기술에서 통상의 지식을 가진 자에게는 실시예가 이러한 특정 세부사항 없이 또는 특정 세부사항을 변경하여 실시될 수 있다는 것이 자명해야 한다. 그러므로 상세한 설명은 제한하는 대신 예시적인 것으로 간주될 것이다.
달리 특별하게 언급하지 않는 한, "프로세싱", "컴퓨팅", "계산", 또는 "결정" 등과 같은 용어는 컴퓨터 시스템의 레지스터 및/또는 메모리 내의 물리적인 양(예를 들면 전자적)으로서 표현된 데이터를 컴퓨팅 시스템의 메모리, 레지스터 또는 다른 그러한 정보 저장소, 전송 또는 디스플레이 디바이스 내의 물리적인 양으로서 유사하게 표현되는 다른 데이터로 조작 및/또는 변환하는 컴퓨터 또는 컴퓨터 시스템, 또는 유사한 전자 컴퓨팅 장치의 행위 및/또는 프로세서를 말한다는 것을 인식할 수 있다. 실시예는 이러한 맥락으로 제한되지 않는다.
본 명세서에서 "연결된"이라는 용어는 해당 컴포넌트 사이의 직접 또는 간접적인 임의의 종류의 관계를 말하는데 사용될 수 있으며, 전기적, 기계적, 유동적, 광학적, 전자기적, 전자기계적 또는 기타의 접속부에 적용할 수 있다. 또한, "제1", "제2" 등의 용어는 본 명세서에서 설명을 용이하게 하기 위해서만 사용되며, 달리 지적하지 않는 한 특별한 시간적 또는 연대적인 중요성을 담고 있지 않을 수 있다.
본 기술에서 통상의 지식을 가진 자라면 전술한 설명으로부터 실시예의 광범위한 기술은 각종 형태로 구현될 수 있다는 것을 인식할 것이다. 그러므로 실시예가 그의 특정한 예와 관련하여 기술되었지만, 도면, 명세서, 및 하기 청구범위의 학습을 통한 숙련된 종사자에게는 다른 변경이 자명해질 것이기 때문에 실시예의 진정한 범주는 그렇게 제한되지 않아야 한다.

Claims (25)

  1. 적어도 하나의 그래픽 다각형을 처리하는 시스템으로서,
    그래픽 프로세싱 유닛과,
    다각형이 절단될 절단면(clipping plane)의 수를 결정하는 모듈과,
    단일 면 절단에 전용되는 제 1 파이프라인과,
    다면 절단에 전용되는 제 2 파이프라인을 포함하는
    그래픽 다각형 처리 시스템.
  2. 제 1 항에 있어서,
    상기 제 1 파이프라인과 연관된 모듈을 더 포함하되,
    상기 모듈은,
    상기 다각형의 정점의 좌표를 로딩하고,
    상기 정점의 좌표에 무게중심 값(barycentric value)을 할당하는
    그래픽 다각형 처리 시스템.
  3. 제 2 항에 있어서,
    상기 제 1 파이프라인과 연관되어 상기 단일의 절단면의 각각의 상기 정점과의 거리를 계산하는 모듈을 더 포함하는
    그래픽 다각형 처리 시스템.
  4. 제 3 항에 있어서,
    상기 제 1 파이프라인과 연관되어 거리 비율 alpha 및 beta를 계산하는 모듈을 더 포함하며,
    alpha = Dout/(Din - Dout)이고,
    Dout는 하나의 정점으로부터 상기 절단면까지의 거리이고 Din은 인접 정점으로부터 상기 절단면까지의 거리이며,
    beta = 1 - alpha인
    그래픽 다각형 처리 시스템.
  5. 제 1 항 내지 제 4 항에 있어서,
    상기 제 1 파이프라인과 연관되어 상기 결정된 절단면과 상기 다각형의 교차지점에 놓인 점에 새로운 무게중심 값을 할당하는 모듈을 더 포함하는
    그래픽 다각형 처리 시스템.
  6. 제 5 항에 있어서,
    상기 제 1 파이프라인과 연관되어 상기 결정된 절단면과 상기 다각형의 교차지점에 놓인 점에 새로운 값을 할당하는 모듈을 더 포함하는
    그래픽 다각형 처리 시스템.
  7. 적어도 하나의 그래픽 다각형을 처리하는 방법으로서,
    다각형이 절단될 절단면의 수를 결정하는 단계와,
    단일의 절단면만 있으면, 상기 다각형을 단일 면 절단에 전용되는 파이프라인에 맡기는 단계를 포함하는
    그래픽 다각형 처리 방법.
  8. 제 7 항에 있어서,
    상기 다각형의 정점의 좌표를 로딩하는 단계와,
    상기 정점의 좌표에 무게중심 값을 할당하는 단계를 더 포함하는
    그래픽 다각형 처리 방법.
  9. 제 8 항에 있어서,
    상기 단일의 절단면의 각각의 상기 정점과의 거리를 계산하는 단계를 더 포함하는
    그래픽 다각형 처리 방법.
  10. 제 9 항에 있어서,
    거리 비율 alpha 및 beta를 계산하는 단계를 더 포함하되,
    alpha = Dout/(Din - Dout)이고,
    Dout는 하나의 정점으로부터 상기 절단면까지의 거리이고 Din은 인접 정점으로부터 상기 절단면까지의 거리이며,
    beta = 1 - alpha인
    그래픽 다각형 처리 방법.
  11. 제 10 항에 있어서,
    인접한 정점 사이의 거리를 정규화하는 단계를 더 포함하는
    그래픽 다각형 처리 방법.
  12. 제 7 항 내지 제 11 항에 있어서,
    상기 결정된 절단면과 상기 다각형의 교차지점에 놓인 점에 새로운 무게중심 값을 할당하는 단계를 더 포함하는
    그래픽 다각형 처리 방법.
  13. 제 7 항 내지 제 11 항에 있어서,
    상기 결정된 절단면과 상기 다각형의 교차지점에 놓인 점에 새로운 값을 할당하는 단계를 더 포함하는
    그래픽 다각형 처리 방법.
  14. 제 7 항 내지 제 11 항에 있어서,
    상기 다각형은 삼각형인
    그래픽 다각형 처리 방법.
  15. 제 7 항에 있어서,
    하나보다 많은 절단면이 있으면, 상기 다각형을 다면 절단에 전용되는 제 2 파이프라인에 맡기는 단계를 더 포함하는
    그래픽 다각형 처리 방법.
  16. 적어도 하나의 그래픽 다각형을 처리하는 장치로서,
    다각형이 절단될 절단면의 수를 결정하는 모듈과,
    단일 면 절단에 전용되는 파이프라인을 포함하는
    그래픽 다각형 처리 장치.
  17. 제 16 항에 있어서,
    상기 다각형의 정점의 좌표를 로딩하고,
    상기 정점의 좌표에 무게중심 값을 할당하는 모듈을 더 포함하는
    그래픽 다각형 처리 장치.
  18. 제 17 항에 있어서,
    상기 단일의 절단면의 각각의 상기 정점과의 거리를 계산하는 모듈을 더 포함하는
    그래픽 다각형 처리 장치.
  19. 제 16 항 내지 제 18 항에 있어서,
    거리 비율 alpha 및 beta를 계산하는 모듈을 더 포함하며,
    alpha = Dout/(Din - Dout)이고,
    Dout는 하나의 정점으로부터 상기 절단면까지의 거리이고 Din은 인접 정점으로부터 상기 절단면까지의 거리이며,
    beta = 1 - alpha인
    그래픽 다각형 처리 장치.
  20. 제 16 항 내지 제 18 항에 있어서,
    인접한 정점 사이의 거리를 정규화하는 모듈을 더 포함하는
    그래픽 다각형 처리 장치.
  21. 제 19 항에 있어서,
    상기 결정된 절단면과 상기 다각형의 교차지점에 놓인 점에 새로운 무게중심 값을 할당하는 모듈을 더 포함하는
    그래픽 다각형 처리 장치.
  22. 제 21 항에 있어서,
    상기 결정된 절단면과 상기 다각형의 교차지점에 놓인 점에 새로운 값을 할당하는 모듈을 더 포함하는
    그래픽 다각형 처리 장치.
  23. 제 17 항에 있어서,
    상기 다각형은 삼각형인
    그래픽 다각형 처리 장치.
  24. 제 17 항에 있어서,
    하나보다 많은 절단면이 있는 경우를 처리하는 제 2 파이프라인을 더 포함하는
    그래픽 다각형 처리 장치.
  25. 제 24 항에 있어서,
    상기 모듈들은 상기 파이프라인 둘 다에 이용가능한
    그래픽 다각형 처리 장치.
KR1020167032521A 2014-06-27 2015-06-18 그래픽 처리 시 다각형의 가속된 단일 면 절단 KR20160148618A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/316,895 US20150379664A1 (en) 2014-06-27 2014-06-27 Accelerated single plane clipping of polygons in graphics processing
US14/316,895 2014-06-27
PCT/US2015/036319 WO2015200076A1 (en) 2014-06-27 2015-06-18 Accelerated single plane clipping of polygons in graphics processing

Publications (1)

Publication Number Publication Date
KR20160148618A true KR20160148618A (ko) 2016-12-26

Family

ID=54931075

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167032521A KR20160148618A (ko) 2014-06-27 2015-06-18 그래픽 처리 시 다각형의 가속된 단일 면 절단

Country Status (8)

Country Link
US (1) US20150379664A1 (ko)
EP (1) EP3161801A4 (ko)
JP (1) JP6441963B2 (ko)
KR (1) KR20160148618A (ko)
CN (1) CN106575452A (ko)
RU (1) RU2656683C1 (ko)
SG (1) SG11201609371WA (ko)
WO (1) WO2015200076A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10235811B2 (en) 2016-12-29 2019-03-19 Intel Corporation Replicating primitives across multiple viewports
US10522113B2 (en) * 2017-12-29 2019-12-31 Intel Corporation Light field displays having synergistic data formatting, re-projection, foveation, tile binning and image warping technology
US10628910B2 (en) 2018-09-24 2020-04-21 Intel Corporation Vertex shader with primitive replication
US20210103852A1 (en) * 2019-10-02 2021-04-08 Qualcomm Incorporated Resource based workload allocation for machine learning workloads

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6507348B1 (en) * 2000-02-02 2003-01-14 Ati International, Srl Method and apparatus for clipping an object element in accordance with a clip volume
GB2372188B (en) * 2001-02-08 2005-07-13 Imagination Tech Ltd Volume clipping in computer 3-D Graphics
US7324116B2 (en) * 2002-06-20 2008-01-29 Microsoft Corporation Systems and methods for providing controllable texture sampling
US20050116948A1 (en) * 2003-12-01 2005-06-02 Lg Electronics Inc. Line clipping method and method for displaying three-dimensional image using the same
US7292242B1 (en) * 2004-08-11 2007-11-06 Nvida Corporation Clipping with addition of vertices to existing primitives
US7439988B1 (en) * 2005-12-05 2008-10-21 Nvidia Corporation Apparatus, system, and method for clipping graphics primitives with respect to a clipping plane
US7705845B1 (en) * 2006-06-01 2010-04-27 Nvidia Corporation Clipping graphics primitives with deferred derivation of vertex attributes
US8237739B2 (en) * 2006-09-12 2012-08-07 Qualcomm Incorporated Method and device for performing user-defined clipping in object space
US8212840B2 (en) * 2006-10-23 2012-07-03 Qualcomm Incorporated 3-D clipping in a graphics processing unit
CN102184572B (zh) * 2011-05-19 2017-07-21 威盛电子股份有限公司 三维图形裁剪方法、呈现方法及其图形处理装置

Also Published As

Publication number Publication date
EP3161801A1 (en) 2017-05-03
RU2656683C1 (ru) 2018-06-06
JP2017522632A (ja) 2017-08-10
SG11201609371WA (en) 2016-12-29
US20150379664A1 (en) 2015-12-31
WO2015200076A1 (en) 2015-12-30
EP3161801A4 (en) 2018-01-17
JP6441963B2 (ja) 2018-12-19
CN106575452A (zh) 2017-04-19

Similar Documents

Publication Publication Date Title
US10733691B2 (en) Fragment shaders perform vertex shader computations
US20200372602A1 (en) Scheme for compressing vertex shader output parameters
CN110084875B (zh) 使用计算着色器作为顶点着色器的前端
EP2831848B1 (en) Method for estimating the opacity level in a scene and corresponding device
US9224235B2 (en) System, method, and computer program product for compression of a bounding volume hierarchy
US8441497B1 (en) Interpolation of vertex attributes in a graphics processor
US10553024B2 (en) Tile-based rendering method and apparatus
EP3588289B1 (en) Tile assignment to processing cores within a graphics processing unit
US10019802B2 (en) Graphics processing unit
CN106530379B (zh) 用于执行路径描边的方法和设备
KR20160148618A (ko) 그래픽 처리 시 다각형의 가속된 단일 면 절단
JP2018532190A (ja) 後期深度試験と保守的深度試験との間の動的切替え
CN103052969B (zh) 抗失真图像生成装置及抗失真图像生成方法
KR102477265B1 (ko) 그래픽스 프로세싱 장치 및 그래픽스 파이프라인의 텍스쳐링을 위한 LOD(level of detail)를 결정하는 방법
KR20180039479A (ko) 그래픽 처리 장치 및 방법
KR20180037838A (ko) 텍스쳐를 처리하는 방법 및 장치
EP3929879A1 (en) Hierarchical acceleration structures for use in ray tracing systems
JP6132902B1 (ja) コンピュータグラフィック装置
CN115965702A (zh) 一种矢量图形渲染方法、装置及电子设备

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E90F Notification of reason for final refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
E90F Notification of reason for final refusal