KR102278147B1 - 그래픽 프리미티브의 클립핑 - Google Patents

그래픽 프리미티브의 클립핑 Download PDF

Info

Publication number
KR102278147B1
KR102278147B1 KR1020140169472A KR20140169472A KR102278147B1 KR 102278147 B1 KR102278147 B1 KR 102278147B1 KR 1020140169472 A KR1020140169472 A KR 1020140169472A KR 20140169472 A KR20140169472 A KR 20140169472A KR 102278147 B1 KR102278147 B1 KR 102278147B1
Authority
KR
South Korea
Prior art keywords
primitive
clipping
primitives
boundary
target
Prior art date
Application number
KR1020140169472A
Other languages
English (en)
Other versions
KR20150068289A (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 KR20150068289A publication Critical patent/KR20150068289A/ko
Application granted granted Critical
Publication of KR102278147B1 publication Critical patent/KR102278147B1/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/30Clipping
    • 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
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • 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
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/12Bounding box
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing

Landscapes

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

Abstract

클립핑 경계(65)에 대하여 그래픽 프리미티브(60)의 클립핑을 수행하는 기술이 개시된다. 클립핑 단계(10)는, 타일에 대한 프리미티브 리스트가 프리미티브 메모리(38)로부터 판독된 후에, 렌더링될 그래픽 프리미티브의 각 타일에 대하여 개별적으로 수행될 수 있다. 클립핑은 크기가 프리미티브 임계값을 초과하는 더 큰 프리미티브에 대하여만 수행될 수 있다. 클립핑 경계(65)에 대한 프리미티브(60)의 클립핑은 클립핑 경계를 넘어 연장할 수 있는 단일의 클립핑된 프리미티브만이 생성되도록 부정확하게 수행될 수 있다. 클립핑에 의해 생성된 클립핑된 프리미티브는 프리미티브 설정 작업의 깊이 함수 계산에 대하여 사용되고 에지 결정에 대하여는 사용되지 않을 수 있다.

Description

그래픽 프리미티브의 클립핑{CLIPPING OF GRAPHICS PRIMITIVES}
본 기술은 그래픽 처리 분야에 관한 것이다. 특히, 이는 그래픽 프리미티브(primitive)를 처리하는 방법 및 장치에 관한 것이다.
3D 그래픽을 처리할 때, 디스플레이될 장면은 3D 그래픽 처리 작업이 더욱 용이하게 수행되게 하도록 일반적으로 "프리미티브(primitive)"라 불리는 다수의 기본 컴포넌트로 분할된다. 프리미티브는 삼각형과 같이 간단한 다각형 형태를 가진다. 각각의 프리미티브는 일반적으로 프리미티브를 구성하는 꼭짓점에 의해 정의되고, 각각의 꼭짓점은 특히 꼭짓점 위치에서의 프리미티브를 나타내는 데이터 값, 예를 들어, 꼭짓점의 X 및 Y 위치, 깊이(Z) 값, 색상 및 투명도 값 등과 관련될 것이다.
그래픽 처리 시스템 내에서, 프리미티브의 기하학적 에지를 나타내는 에지 함수와 프리미티브 내에서 임의의 특정 포인트에서의 깊이 값을 결정하는데 사용되는 깊이 함수와 같은 그 프리미티브를 위한 복수의 함수를 결정하기 위하여 주어진 프리미티브의 각각의 꼭짓점에 대하여 정의된 데이터를 사용하는 프리미티브 설정 스테이지가 수행된다. 또한, 프리미티브 설정 스테이지는 색상 값과 같은 속성이 프리미티브에 걸쳐 가변하는 방식을 나타내는 보간(imterpolation) 함수와 같은 다른 함수를 결정할 수 있다.
프리미티브 설정 스테이지에 이어, 그래픽 프리미티브는 래스터화(rasterization) 스테이지를 거칠 수 있고, 래스터화 작업은 그 그래픽 프리미티브를 나타내는데 사용되는 복수의 그래픽 프래그먼트(fragment)를 결정하기 위하여 수행되며, 래스터화 작업은 이러한 그래픽 프래그먼트의 각각의 X 및 Y 위치를 결정한다. 그 다음, 래스터화에 이어 그래픽 프래그먼트는 그래픽 프래그먼트가 디스플레이 스크린 상의 디스플레이를 위한 출력을 생성하기 위하여 채색 작업, 쉐이딩(shading) 작업 등을 받는 랜더링(rendering) 스테이지를 거친다.
각각의 그래픽 프래그먼트(데이터 요소)는 최종 디스플레이에서의 단일 픽셀(화소)에 대응할 수 있거나, 또는, 예를 들어 다운 스케일링과 같은 특정 형태의 후처리가 최종 이미지를 디스플레이하기 전에 혼합된 이미지에 수행되는 것과 같이, 프래그먼트와 디스플레이 화소 사이의 일대일 대응이 없는 경우일 수 있다.
3D 그래픽 처리에서, 렌더링은 실제로는 디스플레이를 위하여 프리미티브가 내부에서 렌더링될 필요가 있는 3차원 부피를 나타내는 뷰어(viewer)의 위치 전방에 있는 박스인 이른바 "시각 절두체(view frustum)" 내에 개념적으로 발생한다. 시각 절두체는, 시각 절두체의 에지를 나타내는 뷰포트(viewport)를 정의하는 상, 하, 좌, 우 에지 평면과 시각 절두체의 전면 및 후면을 나타내는 가까운 깊이 평면과 먼 깊이 평면(객체가 보일 수 있는 가장 가까운 거리와 가장 먼 거리를 나타냄)을 갖는 것으로 실질적으로 정의된다. 뷰포트는 일반적으로 디스플레이 스크린의 크기에 대응한다.
실제로 보일, 즉 시각 절두체 내에 있는 장면의 부분만을 렌더링하는 것이 일반적으로 바람직하며, 이를 달성하기 위한 하나의 알려진 기술은 전술한 프리미티브 설정, 래스터화 및 랜더링 처리를 수행하기 전에 시각 절두체 에지 및 깊이 평면들에 대하여 프리미티브를 "클립(clip)"하는 것이다. 이것은 종종 클립핑 처리 이후에 시각 절두체 내에 남아 있는 프리미티브 부분을 나타내기 위하여 새로운 프리미티브가 기하학적으로 생성될 필요가 있다. 그러나, 이러한 클립핑 처리는 매우 복잡하고 느리며, 구현하기 어렵다. 전문이 본 명세서에 의해 참조로서 편입되는 공통으로 소유된 미국 특허 제8,115,783호에서 설명된 바와 같이, 필요한 클립핑의 양을 시도하고 감소시키기 위한 하나의 알려진 기술은 "가드 밴드 클립핑(guard band clipping)"이라 한다. 가드 밴드 클립핑에서, 클립핑 목적을 위하여 프리미티브가 시험되는 에지 평면이 시각 절두체를 넘어(그 외부로) 연장된다. 일부 가드 밴드 배치에서 가드 밴드가 정의된 개수의 픽셀 또는 프래그먼트과 같은 유한값으로 설정되지만, 다른 대체 배치에서, 클립핑 영역 에지 평면은 "무한대(infinity)"로 실질적으로 설정되어, 이에 의해 유한 가드 밴드를 이용한다. 따라서, 이러한 접근 방식은 기하학적 처리 스테이지에서 클립핑이 방지될 수 있게 하며, 대신에 시각 절두체 외부의 프래그먼트가 디스플레이되지 않는 것을 보장하기 위하여 프래그먼트를 처리할 때와 같이 나중에 추가 단계가 취해질 수 있다.
그러나, 클립핑을 방지하는 것이 클립핑 처리 자체와 관련된 문제를 제거하지만, 클립핑 없는(clipless) 렌더링은 자신 고유의 문제점들을 추가한다. 클립핑 없이는, 프리미티브가 시각 절두체 또는 가드 밴드 외부로 매우 멀리 연장할 수 있다. 일부 경우에, 프리미티브는 무한대로 돌출할 수 있다. 이러한 매우 큰 프리미티브는, 클립핑되지 않는다면, 이어지는 계산에서 수치 정밀도 또는 안정성 문제를 야기할 수 있다. 따라서, 클립핑을 수행하는 것과 관련된 많은 문제점들이 있다. 본 기술은 클립핑이 더욱 효율적이게 하는 것을 추구한다.
제1 양태는, 디스플레이될 프레임에 대한 그래픽 프리미티브를 처리하는 방법에 있어서,
각각의 프리미티브를 디스플레이될 프레임을 형성하는 복수의 타일의 적어도 하나에 할당하는 단계;
각 타일에 대하여, 대응하는 타일에 할당된 프리미티브의 꼭짓점에 대한 꼭짓점 데이터를 식별하는 프리미티브 리스트를 프리미티브 메모리 내에 저장하는 단계; 및
각각의 타일에 대하여 개별적으로 타일 처리를 수행하는 단계
를 포함하고,
타일 처리는,
(i) 프리미티브 메모리로부터 타일에 대한 프리미티브 리스트를 판독하는 단계;
(ii) 상기 프리미티브 리스트가 클립핑 조건을 만족하는 목표 프리미티브를 식별하면, 상기 프리미티브 리스트에서 식별되지 않은 클립핑된 프리미티브에 대한 적어도 하나의 추가 꼭짓점에 대해 추가 꼭짓점 데이터를 생성하도록 상기 클립핑 경계에 대하여 상기 목표 프리미티브를 클립핑하기 위한 클립핑 작업을 수행하는 단계로서, 상기 클립핑된 프리미티브는 상기 목표 프리미티브보다 더 작은 양만큼 클립핑 경계를 넘어 연장하고, 상기 클립핑 작업은 상기 타일에 대한 상기 프리미티브 리스트가 상기 프리미티브 메모리로부터 판독된 후, 상기 프리미티브 리스트가 상기 클립핑 조건을 만족하는 목표 프리미티브를 식별하는 각 타일에 대하여 개별적으로 수행되는, 클립핑 작업 수행 단계;
(iii) 프리미티브 리스트에서 식별된 꼭짓점 데이터 및 클립핑 작업에 의해 생성된 추가 꼭짓점 데이터를 이용하여 적어도 하나의 추가 그래픽 처리 작업을 수행하는 단계; 및
(iv) 타일에 대하여 적어도 하나의 추가 그래픽 처리 작업에 의해 생성된 디스플레이 데이터를 출력하는 단계
를 포함하는, 그래픽 프리미티브를 처리하는 방법을 포함한다.
타일 기반의 처리 시스템은 디스플레이될 프레임을 다수의 타일로 분할하고, 각각의 타일을 개별적으로 처리하여 대응하는 타일 내에서 디스플레이될 그래픽을 나타내는 디스플레이 데이터를 생성한다. 모든 타일이 처리되었을 때, 전체로서의 프레임이 디스플레이될 수 있다. 타일 기반의 기술에서, 클립핑 경계에 대한 프리미티브의 클립핑은 일반적으로 각 타일에 할당된 프리미티브가 프리미티브 메모리 내에 저장되기 전에 수행된다. 그러나, 클립핑은 추가 꼭짓점 데이터를 갖는 추가의 클립핑된 프리미티브가 생성되는 결과를 초래할 수 있다. 따라서, 클립핑 작업은 프리미티브 메모리로부터 판독될 필요가 있는 데이터의 양을 증가시킬 수 있다. 동일한 프리미티브가 여러 타일에 나타날 수 있기 때문에, 프리미티브 메모리에서 클립핑된 프리미티브와 관련된 임의의 추가 데이터는 여러 번 판독될 필요가 있을 수 있고, 따라서 프리미티브 메모리 전에 클립핑을 수행하는 것은 프리미티브 메모리와 각각의 타일의 처리를 수행하기 위한 처리 시스템의 다른 부분 사이를 통과하는 버스 트래픽(bus traffic)의 양을 상당히 증가시킬 수 있어, 이는 성능을 제한할 수 있다.
이러한 문제점을 해결하기 위하여, 대신에 프리미티브가 클립핑 경계를 넘어 연장하는 정도를 감소시키기 위한 클립핑 작업은 주어진 타일에 대한 프리미티브 리스트가 프리미티브 메모리로부터 판독된 후에 타일별(tile-by-tile) 기반으로 수행될 수 있다. 그 다음, 클립핑 작업에 의해 생성된 임의의 클립핑된 프리미티브는 프리미티브 메모리에 저장되는 임의의 추가 꼭짓점 데이터 없이 그 타일을 위한 추가 그래픽 처리 작업에 사용될 수 있어, 큰 프리미티브 메모리 버스 대역폭에 대한 필요성을 방지한다. 따라서, 종래 기술에서보다 더 늦은 스테이지에서 클립핑을 수행하는 것은 전술한 문제점의 일부를 해결할 수 있다.
캐시 메모리가 클립핑 작업에 의해 생성된 추가 꼭짓점 데이터를 저장하기 위해 제공될 수 있다. 캐시 메모리는 프리미티브 메모리보다 더 낮은 액세스 대기 시간(latency)을 가지며, 따라서 프리미티브 메모리보다 더욱 효율적으로 액세스될 수 있다. 이것은 동일한 클립핑된 프리미티브가 복수에 타일에 대하여 요구될 수 있기 때문에 유용하다. 하나의 타일을 처리할 때 추가 꼭짓점 데이터가 클립핑된 프리미티브에 대하여 생성된 경우에, 다른 타일이 동일한 데이터를 필요로 한다면, 추가 꼭짓점 데이터는 사용을 위해 캐시 내에 저장될 수 있어, 추가 꼭짓점 데이터를 다시 생성할 필요가 없다.
프리미티브 리스트 내의 각각의 프리미티브에 대하여, 꼭짓점 데이터는 프리미티브의 각각의 꼭짓점의 다양한 속성을 정의할 수 있다. 예를 들어, 속성은 각각의 꼭짓점의 x, y 위치를 나타내는 꼭짓점 좌표와, 색상, 깊이 또는 불투명도와 같은 꼭짓점의 다른 속성을 포함할 수 있다. 유사하게, 추가 꼭짓점 데이터는 클립핑된 프리미티브의 추가 꼭짓점의 대응하는 속성을 식별할 수 있다. 일부 실시예에서, 추가 꼭짓점 데이터는 절대 데이터 값을 이용하여 이러한 속성들을 식별할 수 있다. 그러나 다른 실시예에서, 클립핑된 프리미티브의 추가 꼭짓점 데이터가, 클립핑된 프리미티브가 유도된 목표 프리미티브의 원래 꼭짓점 데이터로부터 추가 꼭짓점 데이터를 결정하기 위한 가중치에 의해 표현되는 것이 더욱 효율적일 수 있다. 예를 들어, 추가 꼭짓점 데이터의 여러 상이한 속성은 동일한 가중치를 이용하여 원래 꼭짓점 데이터의 대응하는 속성에 관련될 수 있고, 따라서, 가중치를 사용하는 것은 클립핑된 프리미티브의 꼭짓점을 정의하는데 필요한 데이터의 양을 감소시키는데 도움을 줄 수 있다. 일부 예에서, 가중치는 선형 방식으로 원래 꼭짓점 데이터와 결합될 수 있지만, 다른 실시예에서, 가중치는 추가 꼭짓점 데이터를 생성하기 위하여 원래 꼭짓점 데이터의 비선형 변동을 정의할 수 있다.
클립핑을 위한 클립핑 경계는 시각 절두체(view frustrum)의 경계(예를 들어, 디스플레이 스크린의 에지에 대응)에 대응할 수 있다. 이 대신에, 클립핑 경계는 시각 절두체의 경계 외부에 있을 수 있다(예를 들어, 클립핑 경계가 시각 절두체 외부의 가드 밴드에 대응하는 경우).
목표 프리미티브가 클립핑되는지 결정하는 클립핑 조건은 다양한 형태를 가질 수 있다. 일부 경우에, 클립핑 경계를 넘어 연장하는 임의의 목표 프리미티브가 클립핑될 수 있다. 다른 경우에, 목표 프리미티브의 크기가 주어진 임계값보다 더 큰지 여부와 같은 다른 기준이 있을 수 있다(이 조건은 본 기술의 제4 내지 제6 양태를 참조하여 더욱 상세히 설명될 것이다). 따라서, 클립핑 경계를 횡단하는 모든 프리미티브가 클립핑되는 것은 필수적이지 않다.
적어도 하나의 추가 그래픽 처리 작업은, 예를 들어, 프리미티브 설정 작업 또는 래스터화(rasterization) 작업을 포함할 수 있다.
클립핑 경계에 대하여 목표 프리미티브를 클립핑하기 위한 클립핑 작업은 다양한 형태를 취할 수 있다. 일례에서, 목표 프리미티브는 클립핑된 프리미티브가 클립핑 경계 내부에 있는 목표 프리미티브의 영역에 대응하도록 클립핑 경계에 정확하게 클립핑될 수 있다("정확한 클립핑(exact clipping)"). 다른 예에서, 클립핑된 프리미티브는, 클립핑 경계 내에 있는 목표 프리미티브의 영역에 정확하게 대응하지 않도록 "부정확한 클립핑(inexact clipping)"이 수행될 수 있고, 클립핑 경계 외부에 놓이는 부분을 포함할 수 있다(아래의 본 기술의 제7 내지 제9 양태에 대한 논의 참조). 또한, 클립핑 작업이, 클립핑된 프리미티브가 이어지는 그래픽 처리(예를 들어, 깊이 함수 결정)의 일부 부분에 대하여 사용되고, 그래픽 처리의 다른 부분이 원래 목표 프리미티브를 사용하는 "의사 클립핑(pseudo clipping)"을 포함하는 것이 가능하다(아래에서 논의되는 제10 내지 제12 양태 참조). 추가 꼭짓점 데이터는 클립핑이 발생된 것처럼 새로운 프리미티브를 생성/에뮬레이트하는데 사용될 수 있다.
제2 양태는, 디스플레이될 프레임에 대한 그래픽 프리미티브를 처리하는 장치에 있어서,
각각의 프리미티브를 디스플레이될 프레임을 형성하는 복수의 타일의 적어도 하나에 할당하도록 구성된 할당 회로;
각 타일에 대하여, 대응하는 타일에 할당된 프리미티브의 꼭짓점에 대한 꼭짓점 데이터를 식별하는 프리미티브 리스트를 프리미티브 메모리 내에 저장하도록 구성된 프리미티브 메모리; 및
각각의 타일에 대하여 개별적으로 타일 처리를 수행하도록 구성된 타일 처리 파이프라인
을 포함하고,
타일 처리는,
(i) 프리미티브 메모리로부터 타일에 대한 프리미티브 리스트를 판독하는 것;
(ii) 상기 프리미티브 리스트가 클립핑 조건을 만족하는 목표 프리미티브를 식별하면, 상기 프리미티브 리스트에서 식별되지 않은 클립핑된 프리미티브에 대한 적어도 하나의 추가 꼭짓점에 대해 추가 꼭짓점 데이터를 생성하도록 상기 클립핑 경계에 대하여 상기 목표 프리미티브를 클립핑하기 위한 클립핑 작업을 수행하고, 상기 클립핑된 프리미티브는 상기 목표 프리미티브보다 더 작은 양만큼 클립핑 경계를 넘어 연장하고, 상기 클립핑 작업은 상기 타일에 대한 상기 프리미티브 리스트가 상기 프리미티브 메모리로부터 판독된 후, 상기 프리미티브 리스트가 상기 클립핑 조건을 만족하는 목표 프리미티브를 식별하는 각 타일에 대하여 개별적으로 수행되는 것;
(iii) 프리미티브 리스트에서 식별된 꼭짓점 데이터 및 클립핑 작업에 의해 생성된 추가 꼭짓점 데이터를 이용하여 적어도 하나의 추가 그래픽 처리 작업을 수행하는 것; 및
(iv) 타일에 대하여 적어도 하나의 추가 그래픽 처리 작업에 의해 생성된 디스플레이 데이터를 출력하는 것
을 포함하는, 그래픽 프리미티브를 처리하는 장치를 포함한다.
제3 양태는, 디스플레이될 프레임에 대한 그래픽 프리미티브를 처리하는 장치에 있어서,
각각의 프리미티브를 디스플레이될 프레임을 형성하는 복수의 타일의 적어도 하나에 할당하는 할당 수단;
각 타일에 대하여, 대응하는 타일에 할당된 프리미티브의 꼭짓점에 대한 꼭짓점 데이터를 식별하는 리미티브 리스트를 프리미티브 메모리 내에 저장하는 프리미티브 메모리 수단; 및
각각의 타일에 대하여 개별적으로 타일 처리를 수행하는 처리 수단
을 포함하고,
타일 처리는,
(i) 프리미티브 메모리로부터 타일에 대한 프리미티브 리스트를 판독하는 것;
(ii) 상기 프리미티브 리스트가 클립핑 조건을 만족하는 목표 프리미티브를 식별하면, 상기 프리미티브 리스트에서 식별되지 않은 클립핑된 프리미티브에 대한 적어도 하나의 추가 꼭짓점에 대해 추가 꼭짓점 데이터를 생성하도록 상기 클립핑 경계에 대하여 상기 목표 프리미티브를 클립핑하기 위한 클립핑 작업을 수행하고, 상기 클립핑된 프리미티브는 상기 목표 프리미티브보다 더 작은 양만큼 클립핑 경계를 넘어 연장하고, 상기 클립핑 작업은 상기 타일에 대한 상기 프리미티브 리스트가 상기 프리미티브 메모리로부터 판독된 후, 상기 프리미티브 리스트가 상기 클립핑 조건을 만족하는 목표 프리미티브를 식별하는 각 타일에 대하여 개별적으로 수행되는 것;
(iii) 프리미티브 리스트에서 식별된 꼭짓점 데이터 및 클립핑 작업에 의해 생성된 추가 꼭짓점 데이터를 이용하여 적어도 하나의 추가 그래픽 처리 작업을 수행하는 것; 및
(iv) 타일에 대하여 적어도 하나의 추가 그래픽 처리 작업에 의해 생성된 디스플레이 데이터를 출력하는 것
을 포함하는, 그래픽 프리미티브를 처리하는 장치를 포함한다.
제4 양태는, 디스플레이를 위하여 부동 소수점 포맷으로 표현되는 꼭짓점 좌표를 갖는 그래픽 프리미티브를 처리하는 방법에 있어서,
처리될 목표 프리미티브에 대한 꼭짓점 좌표에 기초하여 목표 프리미티브의 크기를 나타내는 프리미티브 크기 파라미터를 결정하는 단계;
프리미티브 크기 파라미터가 미리 정해진 임계값을 초과하는 경우에, 목표 프리미티브보다 더 작은 양만큼 클립핑 경계를 넘어 연장하는 적어도 하나의 클립핑된 프리미티브를 생성하도록 클립핑 경계에 대하여 목표 프리미티브에 클립핑 작업을 수행하고, 적어도 하나의 클립핑된 프리미티브를 이용하여 적어도 하나의 그래픽 처리 작업을 수행하는 단계; 및
프리미티브 크기 파라미터가 미리 정해진 임계값을 초과하지 않는 경우에, 목표 프리미티브에 대한 클립핑 작업을 생략하고, 목표 프리미티브를 이용하여 적어도 하나의 그래픽 처리 작업을 수행하는 단계
를 포함하고,
상기 미리 정해진 임계값이 상기 클립핑 경계 외부에 놓이는 임계값 경계에 대응함으로써, 상기 임계값 경계를 횡단하는 프리미티브가 상기 클립핑 경계에 대하여 클립핑되고 상기 임계값 경계 내에 전체적으로 놓이는 프리미티브가 클립핑되지 않은 상태를 유지하는, 그래픽 프리미티브를 처리하는 방법을 포함한다.
전술한 바와 같이, 클립핑을 수행하는 것은 구현하기에 복잡하고, 느리고, 어려울 수 있고, 따라서 일부 "클립리스(clipless)" 시스템은 클립핑을 모두 방지한다. 그러나, 클립리스 렌더링 자체는, 프리미티브에 대한 꼭짓점 좌표 및 이에 따른 일반적인 프리미티브 내부의 위치가 통상적으로 부동 소수점 포맷으로 표현되기 때문에, 문제점을 초래한다. 이것은 프리미티브가 매우 크게 될 때, 부동 소수점 포맷이 프리미티브의 전체 범위에 걸친 위치 좌표의 정밀하게 변동하는 값을 나타내기에 충분한 정밀도를 더 이상 가지지 않는다는 것을 의미한다. 이것은 예를 들어 텍스처링(texturing) 작업과 같은 이어지는 작업이 위치 좌표를 나타내기 위해 사용 가능한 부동 소수점 정밀도의 부족 때문에 분해능(resoluiton)을 상실하는 문제점을 야기할 수 있다.
그러나, 본 기술은 부동 소수점 정밀도의 손실에 의해 야기되는 문제점이 단지 매우 큰 프리미티브에 대하여만 발생한다는 것을 인식한다. 더 작은 프리미티브는, 좌표의 더 정밀한 변동을 나타내기 위한 충분한 비트 공간을 여전히 남기면서도 더 작은 프리미티브의 한계의 위치를 나타내는데 필요한 수치 범위가 부동 소수점 포맷 내에 피팅될 수 있기 때문에, 부동 소수점 정밀도 또는 안정성 문제를 야기하지 않는다. 목표 프리미티브의 크기를 나타내는 프리미티브 크기 파라미터를 결정함으로써, 그리고 프리미티브 크기 파라미터가 미리 정해진 임계값을 초과하는지 여부에 기초하여 클립핑 작업을 수행할지 결정함으로써, 클립핑 작업이 더 큰 프리미티브에 대하여 여전히 수행될 수 있으면서, 클립핑 처리와 관련된 처리 복잡성과 간접 비용은 부동 소수점 에러의 위험 없이 원래 목표 프리미티브가 이어지는 그래픽 처리에 대하여 사용될 수 있는 많은 더 작은 프리미티브에 대하여 방지될 수 있다. 이것은 필요한 클립핑의 양을 상당히 감소시키고, 따라서 전반적인 처리량을 개선한다.
클립핑 작업을 수행할지 결정하기 위한 프리미티브 크기 파라미터로서 사용될 수 있는 다수의 파라미터가 있다. 간단한 접근 방식은 프리미티브 크기 파라미터로서 목표 프리미티브에 대한 꼭짓점 좌표 중 하나의 크기(특히, 꼭짓점 좌표의 크기 중에서 최대 크기)를 사용하는 것이다. 이 대신에, 꼭짓점 좌표의 더욱 복잡한 함수가 프리미티브 크기 파라미터로서 사용될 수 있다.
임계값을 초과하지 않는 프리미티브 크기를 갖는 임의의 프리미티브가 부동 소수점 정밀도의 손실에 의해 발생되는 에러 없이 이어지는 그래픽 처리 작업에 의해 처리될 수 있도록 하는 값을 갖게 미리 정해진 임계값이 선택될 수 있다. 임계값에 대한 특정 값은 어느 부동 소수점 표현이 그래픽 처리에 의해 사용되는지에 따를 것이다. 예를 들어, 단일 정밀도 부동 소수점 값에 대하여 클립핑되지 않은 프리미티브는, 꼭짓점 좌표에 대한 좌표계의 임의의 축을 따라 32k(215) 픽셀보다 많지 않은 픽셀 만큼 연장되는 경우에, 부동 소수점 정밀도의 손실을 야기하지 않을 수 있다는 것이 밝혀졌다. 따라서, 215 픽셀보다 더 긴 프리미티브가 임계값을 초과하는 크기를 갖는 것으로 고려되도록 임계값을 설정함으로써, 클립핑은 부동 소수점 정밀도의 손실의 위험이 있는 더 큰 삼각형에 제한될 수 있다. 또한, 더욱 편리할 수 있기 때문에, 216 픽셀 임계값이 사용될 수 있다 - 216 픽셀은 지원하는 최대 필요 분해능(resolution)일 수 있고, 따라서, 고정 소수점 로직에 하나의 추가 비트를 더하는 것이 스크린의 절반의 특수한 경우에 대한 것보다도 더 용이할 수 있다. 실제 내용 및 벤치마크의 조사는 실제로 99% 이상의 프리미티브가 이 임계값보다 더 작고, 따라서 클립핑 경계를 횡단하더라도 클립핑을 필요로 하지 않는다는 것을 발견하였다. 따라서, 나머지 1%의 프리미티브에 대한 클립핑 작업이 실질적인 처리량을 필요로 하더라도, 이는 그래픽 처리 파이프라인의 전반적인 처리량에 상당한 영향을 미치지 않는다.
크기 인디케이터(indicator)가 클립핑되어야하거나 되지 않아야하는 삼각형의 크기를 나타낼 수 있지만, 큰 크기 인디케이터를 갖는 삼각형의 에지는 클립핑되지 않도록 더 작은 크기 인디케이터를 갖는 더 작은 프리미티브와 공유되는 경우 클립핑되지 않을 수 있다. 이것은 공유된 에지가 그 에지를 공유하는 모든 프리미티브에 대하여 동일하게 클립핑되는 것을 보장한다.
제1 내지 제3 양태에 대하여, 클립핑 경계는 시각 절두체의 경계에 대응하거나, 가드 밴드의 경계와 같은 시각 절두체의 외부에 있는 다른 경계일 수 있다. 프리미티브 크기를 결정하기 위한 미리 정해진 임계값은 클립핑 경계 외부에 놓이는 임계값 경계에 대응하도록 설정될 수 있어, 임계값 경계를 넘어 연장하는 프리미티브가 클립핑되고 임계값 경계 내에 전체적으로 놓이는 프리미티브가 클립핑되지 않은 상태를 유지하는 동안, 임계값 경계를 횡단하는 임의의 프리미티브는 크기 임계값에 대응하는 임계값 경계 대신에 클립핑 경계에 대하여 클립핑될 수 있다.
제1 내지 제3 양태에 대하여, 클립핑 작업은 전술한 바와 같이 정확한 클립핑, 부정확한 클립핑 또는 의사 클립핑을 포함할 수 있다. 다시 말하면, 임의의 생성된 클립핑된 프리미티브는 원래 목표 프리미티브의 꼭짓점 데이터로부터 클립핑된 프리미티브의 꼭짓점 데이터(예를 들어, 꼭짓점 좌표 또는 색상이나 깊이와 같은 다른 속성)를 결정하기 위한 가중치를 이용하여 표현될 수 있다. 그 다음, 프리미티브 설정 작업 또는 래스터화 작업과 같은 임의의 이어지는 그래픽 처리 작업은 클립핑된 프리미티브에 대한 대응하는 값을 결정하기 위하여 목표 프리미티브의 꼭짓점 데이터에 가중치를 적용할 수 있다.
제5 양태는, 디스플레이를 위하여 그래픽 프리미티브를 처리하는 장치에 있어서,
프리미티브는 부동 소수점 포맷으로 표현되는 꼭짓점 좌표를 갖고,
장치는,
(i) 처리될 목표 프리미티브에 대한 꼭짓점 좌표에 기초하여 목표 프리미티브의 크기를 나타내는 프리미티브 크기 파라미터를 결정하고;
(ii) 프리미티브 크기 파라미터가 미리 정해진 임계값을 초과하는 경우에, 목표 프리미티브보다 더 작은 양만큼 클립핑 경계를 넘어 연장하는 적어도 하나의 클립핑된 프리미티브를 생성하도록 클립핑 경계에 대하여 목표 프리미티브에 클립핑 작업을 수행하고, 적어도 하나의 클립핑된 프리미티브를 이용하여 적어도 하나의 그래픽 처리 작업을 수행하고; 그리고,
(iii) 프리미티브 크기 파라미터가 미리 정해진 임계값을 초과하지 않는 경우에, 목표 프리미티브에 대한 클립핑 작업을 생략하고, 목표 프리미티브를 이용하여 적어도 하나의 그래픽 처리 작업을 수행
하도록 구성된 처리 회로를 포함하고,
상기 미리 정해진 임계값이 상기 클립핑 경계 외부에 놓이는 임계값 경계에 대응함으로써, 상기 임계값 경계를 횡단하는 프리미티브가 상기 클립핑 경계에 대하여 클립핑되고 상기 임계값 경계 내에 전체적으로 놓이는 프리미티브가 클립핑되지 않은 상태를 유지하는, 그래픽 프리미티브를 처리하는 장치를 포함한다.
제6 양태는, 디스플레이를 위하여 그래픽 프리미티브를 처리하는 장치에 있어서,
프리미티브는 부동 소수점 포맷으로 표현되는 꼭짓점 좌표를 갖고,
장치는,
(i) 처리될 목표 프리미티브에 대한 꼭짓점 좌표에 기초하여 목표 프리미티브의 크기를 나타내는 프리미티브 크기 파라미터를 결정하고;
(ii) 프리미티브 크기 파라미터가 미리 정해진 임계값을 초과하는 경우에, 목표 프리미티브보다 더 작은 양만큼 클립핑 경계를 넘어 연장하는 적어도 하나의 클립핑된 프리미티브를 생성하도록 클립핑 경계에 대하여 목표 프리미티브에 클립핑 작업을 수행하고, 적어도 하나의 클립핑된 프리미티브를 이용하여 적어도 하나의 그래픽 처리 작업을 수행하고; 그리고,
(iii) 프리미티브 크기 파라미터가 미리 정해진 임계값을 초과하지 않는 경우에, 목표 프리미티브에 대한 클립핑 작업을 생략하고, 목표 프리미티브를 이용하여 적어도 하나의 그래픽 처리 작업을 수행
하기 위한 처리 수단을 포함하고,
상기 미리 정해진 임계값이 상기 클립핑 경계 외부에 놓이는 임계값 경계에 대응함으로써, 상기 임계값 경계를 횡단하는 프리미티브가 상기 클립핑 경계에 대하여 클립핑되고 상기 임계값 경계 내에 전체적으로 놓이는 프리미티브가 클립핑되지 않은 상태를 유지하는, 그래픽 프리미티브를 처리하는 장치를 포함한다.
제4 내지 제6 양태의 특징은 제1 내지 제3 양태의 특징과 결합될 수 있어, 주어진 타일에 대한 프리미티브 리스트를 판독한 후에 프리미티브 리스트 내의 목표 프리미티브가 미리 정해진 임계값을 초과하는 크기 파라미터를 가지는지 판단하고, 초과하는 경우에 목표 프리미티브에 클립핑이 수행되고 임계값을 초과하지 않는 크기를 갖는 프리미티브 리스트 내의 목표 프리미티브는 클립핑되지 않는, 타일 기반의 처리 시스템을 제공한다.
이 대신에, 제4, 제5 및 제6 양태는 제1, 제2 및 제3 양태와 무관하게 사용될 수 있다. 예를 들어, 타일 기반 시스템 대신에 즉시 모드 렌더러(immediate mode renderer)에서 또는 프리미티브가 특정 타일에 할당되기 전에 클립핑 작업을 수행하는 시스템에서 클립핑을 위한 크기 임계값을 제공하는 것이 가능하여, 클립핑된 프리미티브는 프리미티브 메모리 내에 저장된 프리미티브 리스트 내에서 식별된다.
제7 양태는, 디스플레이를 위하여 부동 소수점 포맷으로 표현되는 꼭짓점 좌표를 갖는 그래픽 프리미티브를 처리하는 방법에 있어서,
목표 프리미티브보다 더 작은 양만큼 클립핑 경계를 넘어 연장하는 목표 프리미티브에 대응하는 단일의 클립핑된 프리미티브를 생성하도록 클립핑 경계에 대하여 목표 프리미티브에 클립핑 작업을 수행하는 단계; 및
클립핑된 프리미티브를 이용하여 적어도 하나의 그래픽 처리 작업을 수행하는 단계
를 포함하고,
클립핑 경계 내에 놓이는 목표 프리미티브의 내부 부분이 단지 하나의 프리미티브를 이용하여 표현될 수 없는 경우에, 클립핑 작업은 목표 프리미티브의 내부 부분에 대응하는 내부 영역과 클립핑 경계를 넘어 놓이는 외부 영역을 포함하는 단일의 클립핑된 프리미티브를 생성하는, 그래픽 프리미티브를 처리하는 방법을 제공한다.
통상적으로, 프리미티브가 클립핑 경계에 대하여 클립핑되면, 클립핑 경계 내에 놓이는 프리미티브의 내부 부분에 정학하게 대응하는 하나 이상의 클립핑된 프리미티브가 생성된다. 그러나, 이는 필요한 프리미티브의 개수를 증가시킬 수 있다. 목표 프리미티브의 내부 부분이 단지 하나의 프리미티브를 이용하여 표현될 수 없다면, 복수의 프리미티브가 생성될 수 있고, 생성된 각각의 추가 프리미티브는 추가 꼭짓점 및 관련되는 꼭짓점 데이터를 가질 것이다. 이는 상당한 양의 스토리지를 필요로 할 수 있다.
본 기술은 프리미티브가 클립핑 경계에 대하여 정확하게 클립핑되는 것이 필수적이지 않다는 것을 인식한다. 클립핑된 프리미티브의 일부 부분이 클립핑 경계를 넘어 연장되는 것을 허용함으로써, 목표 프리미티브에 대응하는 단일의 클립핑된 프리미티브를 생성하는 것이 종종 가능하며, 따라서 복수의 프리미티브를 생성할 필요성을 방지한다. 따라서, 클립핑 작업에 의해 생성되는 추가 꼭짓점 데이터의 양이 감소될 수 있어, 처리 및 메모리 사용을 더욱 효율적이게 한다.
클립핑 작업은 생성된 단일의 클립핑된 프리미티브가 클립핑 경계 외부에 있는 제2 경계 내에 완전히 놓이는 것을 보장할 수 있다. 제2 경계는, 제2 경계 내부에 놓이는 임의의 프리미티브가 부동 소수점 정밀도의 손실에 의해 발생되는 에러 없이 이어지는 그래픽 처리에 의해 처리될 수 있게 하는 것일 수 있다. 예를 들어, 제2 경계는 제4 내지 제6 양태에 대하여 전술한 32K 픽셀 경계에 대응할 수 있다. 클립핑된 프리미티브가 제2 경계 내에 대하여 클립핑되는 한, 이어지는 처리는 정확한 결과를 생성할 것이고, 이는 클립핑이 어떻게 수행되는지와 관하여 더 큰 자유도를 허용하여, 클립핑을 덜 비용이 들게 하도록 단일의 클립핑된 프리미티브가 생성될 수 있다.
다시 말하면, 클립핑 작업에 의해 생성된 클립핑된 프리미티브에 대한 임의의 추가 꼭짓점 데이터는 목표 프리미티브의 원래 꼭짓점 데이터로부터 추가 꼭짓점 데이터를 결정하기 위하여 가중치를 이용하여 표현될 수 있다. 제2 경계 내에 여전히 놓이거나 일부 다른 기준을 만족하면서, 단일의 클립핑된 프리미티브가 목표 프리미티브로부터 생성될 수 있는 2 이상의 방법이 있을 수 있다. 클립핑된 프리미티브로서 선택될 수 있는 여러 후보 프리미티브가 있다면, 클립핑 작업은 클립핑된 프리미티브에 대한 가중치를 다루는 것과 관련된 메모리 간접 비용 또는 처리 간접 비용을 감소시키도록 단일의 클립핑된 프리미티브를 선택할 수 있다. 따라서, 특정의 클립핑된 프리미티브가 클립핑된 프리미티브에 대한 추가 꼭짓점 데이터를 나타내는 가중치를 다루는데 필요한 처리 또는 필요한 스토리지 양을 감소시키는데 도움을 줄 수 있다면, 이 프리미티브는 다른 프리미티브에 대하여 우선적으로 선택될 수 있다.
제7 양태는 즉시 모드 렌더링 시스템에 사용될 수 있다. 그러나, 타일 기반의 렌더링 시스템에서 동일한 프리미티브가 상이한 타일에 대하여 여러 번 처리될 필요가 있을 수 있기 때문에, 제7 양태는 타일 기반의 렌더링 시스템에 특히 유용할 수 있다. 추가 프리미티브의 개수를 감소시킴으로써, 타일 기반의 처리는 더욱 효율적으로 될 수 있다.
제8 양태는, 디스플레이를 위하여 그래픽 프리미티브를 처리하는 장치에 있어서,
프리미티브는 부동 소수점 포맷으로 표현되는 꼭짓점 좌표를 갖고,
장치는,
(i) 목표 프리미티브보다 더 작은 양만큼 클립핑 경계를 넘어 연장하는 목표 프리미티브에 대응하는 단일의 클립핑된 프리미티브를 생성하도록 클립핑 경계에 대하여 목표 프리미티브에 클립핑 작업을 수행하고; 그리고,
(ii) 클립핑된 프리미티브를 이용하여 적어도 하나의 그래픽 처리 작업을 수행
하도록 구성된 처리 회로를 포함하고,
클립핑 경계 내에 놓이는 목표 프리미티브의 내부 부분이 단지 하나의 프리미티브를 이용하여 표현될 수 없는 경우에, 클립핑 작업은 목표 프리미티브의 내부 부분에 대응하는 내부 영역과 클립핑 경계를 넘어 놓이는 외부 영역을 포함하는 단일의 클립핑된 프리미티브를 생성하는, 그래픽 프리미티브를 처리하는 장치를 제공한다.
제9 양태는, 디스플레이를 위하여 그래픽 프리미티브를 처리하는 장치에 있어서,
프리미티브는 부동 소수점 포맷으로 표현되는 꼭짓점 좌표를 갖고,
장치는,
(i) 목표 프리미티브보다 더 작은 양만큼 클립핑 경계를 넘어 연장하는 목표 프리미티브에 대응하는 단일의 클립핑된 프리미티브를 생성하도록 클립핑 경계에 대하여 목표 프리미티브에 클립핑 작업을 수행하고; 그리고,
(ii) 클립핑된 프리미티브를 이용하여 적어도 하나의 그래픽 처리 작업을 수행
하는 처리 수단을 포함하고,
클립핑 경계 내에 놓이는 목표 프리미티브의 내부 부분이 단지 하나의 프리미티브를 이용하여 표현될 수 없는 경우에, 클립핑 작업은 목표 프리미티브의 내부 부분에 대응하는 내부 영역과 클립핑 경계를 넘어 놓이는 외부 영역을 포함하는 단일의 클립핑된 프리미티브를 생성하는, 그래픽 프리미티브를 처리하는 장치를 제공한다.
제7 내지 제9 양태는 원한다면 제1 내지 제3 양태와 결합될 수 있어, 프리미티브 메모리로부터 주어진 타일에 대한 프리미티브 리스트를 판독하는 것에 이어지는 스테이지에서 타일 기반의 혼합 시스템에서 클립핑이 수행될 때 클립핑 작업이 제7 내지 제9 양태에 대하여 논의된 바와 같이 부정확한 클립핑일 수 있다. 유사하게, 제7 내지 제9 양태는 제4 내지 제6 양태와 결합될 수 있어, 클립핑 작업을 수행할지에 대한 결정이 프리미티브 크기에 기초하여 이루어지는 시스템을 제공하고, 클립핑 작업이 필요한 경우에, 제7 내지 제9 양태에서와 같이 클립핑 경계에 대하여 부정확한 클립핑과 함께 수행된다.
제10 양태는, 디스플레이를 위하여 부동 소수점 포맷으로 표현되는 꼭짓점 좌표를 갖는 그래픽 프리미티브를 처리하는 방법에 있어서,
어느 위치가 목표 프리미티브의 에지의 내부 또는 외부에 있는지 판단하기 위한 에지 결정과 목표 프리미티브 내의 깊이 값을 결정하기 위한 깊이 함수를 결정하기 위한 깊이 함수 결정을 포함하는 프리미티브 설정 작업을 수행하는 단계; 및
목표 프리미티브, 에지 결정 및 깊이 함수를 이용하여 추가 그래픽 처리 작업을 수행하는 단계
를 포함하고,
목표 프리미티브가 클립핑 조건을 만족하면, 깊이 함수 결정은 목표 프리미티브보다 더 작은 양만큼 클립핑 경계를 넘어 연장하는 클립핑된 프리미티브를 이용하여 수행되고, 에지 결정은 클립핑 없이 목표 프리미티브를 이용하여 수행되는, 그래픽 프리미티브를 처리하는 방법을 제공한다.
그래픽 프리미티브의 처리는 일반적으로 프리미티브의 다양한 특성을 결정하는 프리미티브 설정 작업을 포함한다. 프리미티브 설정은 종종 어느 위치가 주어진 프리미티브의 에지의 내부 또는 외부에 있는지 결정하기 위한 에지 결정을 포함할 수 있다. 일부 예에서, 에지 결정은 프리미티브의 에지를 수학적으로 표현하기 위한 에지 함수를 결정할 수 있고, 이는 나중에 어느 위치가 프리미티브 에지의 내부 또는 외부에 놓이는지 결정하는데 사용될 수 있다. 다른 경우에, 에지 결정은 프리미티브의 꼭짓점 좌표를 연결하는 벡터와 좌표 중 하나를 관심 대상인 포인트에 연결하는 벡터의 외적을 수행할 수 있고, 외적의 부호는 관심 대상인 포인트가 프리미티브의 내부에 놓이는지 또는 외부에 놓이는지를 나타낼 수 있다. 또한, 프리미티브 설정 작업은 프리미티브 내의 주어진 포인트에서 깊이 값을 결정하기 위하여 깊이 함수를 결정하는 깊이 함수 결정을 포함할 수 있다.
본 기술은 전술한 부동 소수점 정밀도 문제가 에지 결정 동안이 아니라 깊이 함수 결정 동안 일반적으로 발생한다는 것을 인식한다. 따라서, 처리를 간소화하기 위하여, 목표 프리미티브가 클립핑 조건을 만족하기 때문에 클립핑이 필요한 경우, 에지 결정이 클립핑 없이 원래 목표 프리미티브에 여전히 기초할 수 있는 반면, 깊이 함수는 클립핑 작업에 의해 생성된 클립핑된 프리미티브를 이용하여 결정될 수 있다. 그 다음, 추가 그래픽 처리 작업은 (클립핑되지 않은) 원래 목표 프리미티브, 포인트가 프리미티브의 내부에 놓이는지 또는 외부에 놓이는지를 나타내는 결정된 에지 함수 또는 다른 데이터 및 깊이 함수를 사용할 수 있다. 이것은 에지 결정의 복잡성을 감소시킨다. 또한, 프리미티브의 많은 다른 특성은 원래 목표 프리미티브에 기초하여 결정될 수 있고, 따라서, 이러한 프리미티브 설정 함수를 계산하기 위하여 추가 프리미티브를 생성하는 것이 필요하지 않다. 깊이 함수에 대하여, 임시의 클립핑된 프리미티브가 생성될 수 있지만, 이는 처리의 다른 부분에 대하여는 필요하지 않다. 따라서, 이 기술은 부동 소수점 벡터 좌표의 사용과 관련된 수치 문제점이 그래픽 처리의 다른 부분에 영향을 미치는 클립핑(예를 들어, 추가 프리미티브 또는 추가 꼭짓점)과 관련된 증가된 복잡성 없이 깊이 함수에 대하여 해결될 수 있게 한다.
정확한 클립핑이 수행되지만, 제7 내지 제9 양태에서 논의된 바와 같이, 단일의 클립핑된 프리미티브만이 필요하도록 부정확한 클립핑을 수행하는 것이 더욱 효율적일 수 있다. 클립핑된 프리미티브가 깊이 함수 계산에 대하여만 사용되고 그래픽 처리의 다른 부분에 대하여 사용되지 않는 경우에, 클립핑된 프리미티브를 선택하는 것이 가능하다면, 이어지는 그래픽 처리의 결과에 악영향을 미치지 않으면서 클립핑 경계 내에 놓이는 목표 프리미티브의 내부 부분보다 더 작은 면적을 가진다. 이것은 클립핑된 프리미티브를 선택하는데 있어서 더 큰 자유를 제공할 수 있고, 이는 클립핑 비용을 감소시키는데 유용할 수 있다.
제11 양태는, 디스플레이를 위하여 부동 소수점 포맷으로 표현되는 꼭짓점 좌표를 갖는 그래픽 프리미티브를 처리하는 장치에 있어서,
어느 위치가 목표 프리미티브의 에지의 내부 또는 외부에 있는지 판단하기 위한 에지 결정과 목표 프리미티브 내의 깊이 값을 결정하기 위한 깊이 함수를 결정하기 위한 깊이 함수 결정을 포함하는 프리미티브 설정 작업을 수행하도록 구성된 프리미티브 설정 회로; 및
목표 프리미티브, 에지 결정 및 깊이 함수를 이용하여 추가 그래픽 처리 작업을 수행하도록 구성된 처리 회로
를 포함하고,
목표 프리미티브가 클립핑 조건을 만족하면, 프리미티브 설정 회로는 목표 프리미티브보다 더 작은 양만큼 클립핑 경계를 넘어 연장하는 클립핑된 프리미티브를 이용하여 깊이 함수 결정를 수행하고, 클립핑 없이 목표 프리미티브를 이용하여 에지 결정을 수행하도록 구성되는, 그래픽 프리미티브를 처리하는 장치를 제공한다.
제12 양태는, 디스플레이를 위하여 부동 소수점 포맷으로 표현되는 꼭짓점 좌표를 갖는 그래픽 프리미티브를 처리하는 장치에 있어서,
어느 위치가 목표 프리미티브의 에지의 내부 또는 외부에 있는지 판단하기 위한 에지 결정과 목표 프리미티브 내의 깊이 값을 결정하기 위한 깊이 함수를 결정하기 위한 깊이 함수 결정을 포함하는 프리미티브 설정 작업을 수행하는 프리미티브 설정 수단; 및
목표 프리미티브, 에지 결정 및 깊이 함수를 이용하여 추가 그래픽 처리 작업을 수행하는 처리 수단
을 포함하고,
목표 프리미티브가 클립핑 조건을 만족하면, 프리미티브 설정 수단은 목표 프리미티브보다 더 작은 양만큼 클립핑 경계를 넘어 연장하는 클립핑된 프리미티브를 이용하여 깊이 함수 결정를 수행하고, 클립핑 없이 목표 프리미티브를 이용하여 에지 결정을 수행하도록 구성되는, 그래픽 프리미티브를 처리하는 장치를 제공한다.
제10 내지 제12 양태는 임의의 전술한 양태와 결합될 수 있다.
일부 예에서, 방법은 컴퓨터 판독가능한 저장 매체에 저장된 컴퓨터 프로그램을 이용하여 구현될 수 있다. 컴퓨터에 의해 실행될 때, 컴퓨터 프로그램은 그래픽 프리미티브를 처리하는 방법을 수행하도록 컴퓨터를 제어할 수 있다.
본 기술의 다른 양태, 특징 및 이점은 다음과 같은 첨부된 도면을 참조하여 예시적인 실시예에 대한 이어지는 설명으로부터 명백하게 될 것이다:
도 1은 디스플레이를 위한 그래픽 프리미티브의 처리를 도시하는 흐름도이다;
도 2a 및 2b는 그래픽 처리를 수행하기 위한 그래픽 처리 장치의 일부를 개략적으로 도시한다;
도 3은 클립핑이 수행될 수 있는 시각 절두체 및 시각 절두체 외부의 가드 밴드(guard band)의 일례를 도시한다;
도 4는 클립핑 경계에 대하여 프리미티브를 클립핑하기 위한 클립핑 작업의 일례를 도시한다;
도 5는 클립핑 경계에 대하여 정확하게 프리미티브를 클립핑하는 일례를 도시한다;
도 6은 클립핑 경계 외부에 일부를 갖는 클립핑된 프리미티브를 생성하기 위한 부정확한 클립핑의 일례를 도시한다;
도 7은 깊이 함수 계산의 목적을 위한 프리미티브의 "의사 클립핑(pseudo clipping)"의 일례를 도시하며, 다른 함수에 대하여 원래의 클립핑되지 않은 프리미티브를 사용한다; 그리고,
도 8은 본 기술을 수행하는데 사용될 수 있는 컴퓨터 시스템의 일례를 도시한다.
도 1은 일례에 따른 그래픽 처리 파이프라인에 의해 수행되는 단계들을 도시하는 흐름도이다. 도 2a 및 2b는 그래픽 처리 파이프라인의 일부의 예를 도시한다. 단계 2에서, 기하 구조 입력(geometry input)이 수신된다. 기하 구조 입력은 프레임에서 디스플레이될 다수의 그래픽 프리미티브를 식별한다. 각각의 프리미티브는 삼각형 또는 4변형과 같은 간단한 다각형에 대응한다. 각각의 프리미티브에 대하여, 기하 구조 입력은 프리미티브의 꼭짓점과, 예를 들어 꼭짓점의 x 및 y 좌표, 깊이(Z) 값, 색상, 쉐이딩 또는 투명도 값과 같은 각 꼭짓점 위치에서의 다양한 속성을 나타내는 일부 꼭짓점 데이터를 식별한다. 단계 4에서, 꼭짓점 쉐이딩이 이러한 프리미티브(또는 더욱 특별하게는 프리미티브를 정의하는 꼭짓점)에 다양한 변환을 적용하기 위하여 수행되어, 본 발명이 속하는 기술분야에서 알려진 바와 같이, 꼭짓점의 수정된 특성을 생성한다. 꼭짓점 쉐이딩 단계는 변환/명암(lighting) 작업이라고도 할 수 있다.
단계 6에서, 프리미티브 및 관련된 꼭짓점 데이터는, 각각의 프리미티브가 디스플레이될 프레임을 구성하는 적어도 하나의 타일(tile)에 할당되는 타일링(tiling) 단계를 받는다. 각 프리미티브의 꼭짓점 위치에 기초하여, 각각의 프리미티브가 특정 타일을 중접할 가능성이 있는지 여부 및 그러한 경우 프리미티브가 타일에 할당되는지에 대한 예측이 이루어질 수 있다. 복수의 타일을 횡단하는 것으로 예측되면, 일부 프리미티브가 2 이상의 타일에 할당될 수 있다. 그 다음, 각각의 타일에 대응하는 프리미티브를 정의하는 프리미티브 리스트는 프리미티브 메모리에 저장된다. 프리미티브 리스트는 각각의 프리미티브에 대하여 꼭짓점 데이터를 식별하는 임의의 데이터 구조를 포함할 수 있다(예를 들어, 프리미어 리스트는 반드시 리스트 데이터 구조로서 구현될 필요는 없다).
그 다음, 각각의 타일을 위한 프리미티브 리스트는 대응하는 타일을 위해 출력 데이터를 생성하기 위하여 개별적으로 처리된다. 일부 예에서, 단일 타일은 한 번에 처리될 수 있다. 다른 예에서, 그래픽 처리 파이프라인은 여러 타일이 한 번에 처리될 수 있도록 복수의 병렬 처리 경로를 가질 수 있지만, 그럼에도 불구하고, 각각의 타일은 다른 타일로부터 여전히 분리되어 처리된다. 따라서, 단계 8에서, 처리될 다음 타일에 대한 프리미티브 리스트는 프리미티브 메모리로부터 판독된다.
단계 10에서, 클립핑 처리가 처리되고 있는 현재 타일에 대하여 수행된다. 도 3에 도시된 바와 같이, 프리미티브가 디스플레이를 위하여 렌더링될 필요가 있을 수 있는 3차원 부피를 나타내는 시각 절두체(view frustum)(11)가 정의될 수 있다. 절두체(11)는 그래픽이 렌더링되는 디스플레이 스크린의 크기에 일반적으로 대응하는 뷰포트(viewport)를 정의하는 상, 하, 좌, 우 에지 평면과, 디스플레이될 때 프리미티브가 나타날 수 있는 뷰어로부터 가장 가까운 거리 및 가장 먼 거리를 나타내는 시각 절두체(11)의 전방 및 후방에 대응하는 가까운 깊이 평면과 먼 깊이 평면에 의해 경계가 지어진다. 시각 절두체 외부에 놓이는 프리미티브가 궁극적으로 디스플레이되지 않을 것이기 때문에, 필요한 처리량을 감소시키기 위하여 프리미티브를 시각 절두체(12)에 대하여 클립핑하는 것이 가능하다. OpenGL 및 DirectX와 같은 일부 표준은 이러한 클립핑이 수행되는 것을 필요로 한다. 그러나, 클립핑 처리는, 클립핑이 추가 프리미티브가 생성되는 것을 필요로 할 수 있기 때문에, 구현하기에 느리고 어려울 수 있다. 따라서, 일부 시스템이 도 3에 도시된 바와 같이 시각 절두체(11) 외부에 가드 밴드(guard band)(13)를 제공함으로써 클립핑 양을 감소시키도록 선택될 수 있다. 프리미티브를 가드 시각 절두체(11) 대신에 가드 밴드(13)에 대하여 클립핑함으로써, 클립핑 양이 감소될 수 있다.
따라서, 클립핑 경계에 대한 프리미티브의 클립핑이 단계 10에서 수행될 수 있고, 클립핑 경계는 시각 절두체(11) 또는 가드 밴드(13) 또는 다른 경계에 대응할 수 있다. 아래에서 논의되는 바와 같이, 이러한 클립핑이 수행될 수 있는 많은 방법이 있다. 도 1의 예에서, 클립핑 작업(10)은 타일에 대한 프리미티브 리스트가 단계 8에서 프리미티브 메모리로부터 판독된 후에 각각의 타일에 대하여 개별적으로 수행된다. 이것은 타일링 단계(6) 전에 클립핑 단계(10)가 수행되는 시스템에 대한 경우일 수 있는 바와 같이 클립핑 동안 생성된 임의의 추가 꼭지점 데이터가 프리미티브 메모리로부터 판독될 필요가 없다는 것을 의미한다. 따라서, 단계 8 이후에 클립핑 처리(10)를 수행하는 것은 필요한 프리미티브 메모리 대역폭의 양을 감소시키는데 도움을 준다.
단계 12에서, 프리미티브 설정 작업이 프리미티브 리스트 내의 프리미티브 및 클립핑 작업(10) 동안 생성된 임의의 추가 꼭짓점 데이터에 기초하여 수행된다. 프리미티브 설정 작업은 각각의 프리미티브의 많은 특성을 결정하기 위하여 처리되고 있는 현재 타일의 각각의 프리미티브에 대하여 정의된 꼭짓점 데이터를 사용한다. 이러한 특성은 프리미티브의 에지의 위치를 결정하기 위한 에지 결정, 프리미티브에 걸친 깊이 값의 변동을 결정하기 위한 깊이 함수 결정 및 프리미티브에 걸친 속성(색상, 쉐이딩 또는 투명도/불투명도 값과 같은)의 변동을 나타내는 보간(inerpolation) 함수를 포함할 수 있다. 프리미티브 설정 작업을 수행하기 위한 기술은 본 발명이 속하는 기술분야에 알려져 있다. 이 기술은 예비 단계로서의 클립핑 단계(10)를 프리미티브 설정 작업(12)에 포함하도록 변형될 수 있다. 따라서, 클립핑 단계(10)에서 생성된 임의의 추가 프리미티브도 프리미티브 설정 작업(12)을 받는다. 예를 들어, 클립핑 단계(10)는 프리미티브 리스트 내에서 대응하는 프리미티브의 원래 꼭짓점 데이터로부터 클립핑된 프리미티브에 대한 꼭짓점 데이터를 어떻게 결정할지 결정하는 가중치를 이용하여 표현될 수 있는 클립핑된 프리미티브를 위한 추가 꼭짓점을 생성할 수 있다. 프리미티브 설정 단계(12)는 가중치가 부여된 속성값을 이용하여 프리미티브에 대한 다양한 함수의 결정을 수행하기 전에 프리미티브 리스트로부터 꼭짓점 데이터에 가중치를 적용할 수 있다. 꼭짓점 값에 가중치를 적용하는 이 기술은 보간 함수에서 일부 꼭짓점 속성을 실제로 보간하는 것과 유사하고, 따라서 가중치 계산을 위하여 보간을 수행하는 처리 유닛을 재사용하는 것이 가능하다.
프리미티브 설정이 현재 타일에 대하여 완료된 후, 래스터화 작업이 단계 14에서 수행되어, 각각의 프리미티브를 다수의 그래픽 프래그먼트(fragment)로 변환한다. 임의의 공지된 래스터화 기술이 사용될 수 있다. 각각의 그래픽 프래그먼트는, 예를 들어, 디스플레이된 픽셀 또는 작은 픽셀 그룹에 대응할 수 있다. 각각의 프래그먼트는 프래그먼트 위치를 특정하는 x, y 좌표와 관련될 수 있다.
단계 16에서, 이른(early) 깊이 시험 단계가 수행된다. 깊이 시험은, 단계 12에서 프리미티브 설정 작업 동안 계산된 깊이 함수를 이용하여, 래스터화 작업에 의해 각각의 그래픽 프래그먼트 출력에 대한 깊이 값을 결정하는데 사용되는 작업이다. 타일의 각각의 x, y 위치에 대하여, 뷰어에 가장 가까운 프래그먼트를 추적하기 위하여 Z 버퍼 값이 유지될 수 있다. 깊이 시험 단계(16)는 Z 버퍼 값을 참조하여 각각의 프래그먼트가 디스플레이될 것인지 또는 뷰어에 더 가깝게 놓이는 다른 프래그먼트에 의해 가려질 것인지를 결정한다. 프래그먼트가 Z 버퍼 값에 의해 현재 표시되는 프래그먼트보다 더 가깝다면, Z 버퍼 값은 더 가까운 프래그먼트를 나타내기 위하여 업데이트된다. 일반적으로, 깊이 함수는 프래그먼트가 이전 프래그먼트보다 더 가까우면 통과하도록 설정되지만, 깊이 함수는 임의의 비교 함수를 가질 수 있고, 따라서 매우 일반적인 것은 아니지만, 이는 반대가 될 수 있다.
단계 18에서, 프래그먼트 쉐이딩 작업이 각각의 프래그먼트의 다양한 특성을 결정하기 위하여 수행된다. 예를 들어, 프래그먼트 쉐이딩은 채색 작업, 쉐이딩 작업, 투명 작업 및 이른 깊이 시험 단계(16)에 의해 디스플레이되는 것으로 결정된 각각의 프래그먼트의 모습을 결정하기 위한 다른 작업을 포함할 수 있다. 하나 이상의 쉐이더(shader) 프로그램이 각각의 그래픽 프래그먼트에 대하여 필요한 작업을 수행하기 위하여 작동될 수 있다. 프래그먼트 쉐이딩 단계로부터의 프래그먼트 출력은 단계 16에서의 이른 깊이 시험과 유사한 늦은(late) 깊이 시험 단계(20)를 받는다. 예를 들어, 단계 18에서의 프래그먼트 쉐이딩 작업은 일부 프래그먼트가 부분적으로 투명하다고 판단하였을 수 있으며, 따라서 그 프래그먼트의 특성을 이전에 그려진 프래그먼트의 특성과 혼합하는 것이 필요할 수 있다. 따라서, 늦은 깊이 시험 단계(20)는 어느 프래그먼트가 뷰어에게 다음으로 가장 가까운지 결정할 수 있다. 단계 22에서, 가장 가까운 프래그먼트의 특성을 그 프래그먼트 뒤의 하나 이상의 프래그먼트와 혼합하기 위하여 혼합 작업이 수행된다.
단계 24에서, 처리된 프래그먼트는 프레임 버프의 대응하는 타일에 출력된다. 프레임 버퍼는 디스플레이에 출력될 디스플레이 데이터를 저장한다. 프레임 버퍼는 각각의 타일에 대응하는 저장 영역을 가진다. 타일의 처리가 단계 8 내지 33에 이어 완료될 때마다, 그 타일을 위한 출력 데이터는 프레임 버퍼의 대응하는 영역 내에 배치된다. 단계 26에서, 현재 프레임에 대한 모든 타일이 처리되었는지 결정된다. "아니오"라면, 방법은 다른 타일을 처리하기 위하여 단계 8로 복귀한다. 마지막 타일이 처리되었을 때, 방법은 프레임 버퍼의 내용이 디스플레이로 출력되는 단계 28로 진행한다.
도 2a 및 2b는 도 1의 방법을 수행하기 위한 그래픽 처리 파이프라인(30)의 일부를 도시한다. 예를 들어, 파이프라인(30)은 그래픽 처리 유닛(graphics processing unit; GPU)의 일부일 수 있다. 도 2a는 전체 프레임에 대하여 공통으로 수행되는 단계 2 내지 6을 수행하기 위한 그래픽 처리 파이프라인(30)의 일부를 도시한다. 기하 구조 버퍼(32)는 각각의 프리미티브에 대한 꼭짓점 데이터를 정의하는 기하 구조 데이터를 저장한다. 기하 구조 데이터는 꼭짓점 쉐이딩 단계(4)를 수행하기 위하여 꼭짓점 쉐이더 파이프라인(34)에 입력된다. 꼭짓점 쉐이더 파이프라인(34)은 프리미티브에 대한 꼭짓점 데이터를 변환하고, 예를 들어, 위치 변환 또는 꼭짓점 명암 변환을 구현한다. 타일러 유닛(36)은, 그 다음, 프리미티브의 꼭짓점 데이터를 대응하는 타일로 비닝(bin)하고, 각 타일에 대하여, 타일에 대응하는 프리미티브의 꼭짓점 데이터를 식별하는 프리미티브 리스트를 생성한다. 각각의 타일에 대한 프리미티브 리스트는 프리미티브 메모리(38)에 저장된다. 프리미티브의 각각의 꼭짓점에 대한 꼭짓점 데이터는 x, y 좌표, 깊이 값, 꼭짓점 위치에서의 색상 또는 투명도 속성, 및 꼭짓점의 다른 특성을 포함할 수 있다.
도 2b는 각각의 타일에 대하여 개별적으로 타일 처리를 수행하기 위한 그래픽 처리 파이프라인(30)의 일부를 도시한다. 프리미티브 메모리(38)로부터 현재 타일에 대한 프리미티브 리스트를 판독하는 프리미티브 설정 유닛(40)이 제공된다. 프리미티브 설정 유닛(40)은 프리미티브 설정 작업(12)뿐만 아니라 단계 10의 x, y 클립핑 작업을 수행하는 수정된 프리미티브 설정 유닛이다. 이것은 프리미티브 리스트가 프리미티브 메모리(38)에 저장되기 전에 뷰포트 또는 가드 밴드에 관하여 x, y 클립핑이 수행되는 이전 시스템과 다르다. 프리미티브 설정 유닛(40)에 의해 수행되는 클립핑 작업은 원래 프리미티브 리스트에 있지 않은 하나 이상의 클립핑된 프리미티브의 추가 꼭짓점을 정의하는 추가 꼭짓점 데이터를 생성할 수 있다. 추가 꼭짓점 데이터는 프리미티브 리스트로부터의 원래 꼭짓점 데이터와 함께 프리미티브 설정 작업(12)을 받는다. 프리미티브 설정 유닛(40)은 클립핑 작업(10)에서 생성된 추가 꼭짓점 데이터를 캐시(cache)(44)에 저장할 수 있다. 다른 타일이 동일한 추가 꼭짓점 데이터를 필요로 한다면, 추가 꼭짓점 데이터가 프리미티브 리스트로부터 다시 생성되는 경우보다 캐시(44)로부터 더욱 빠르게 액세스될 수 있다.
프리미티브 설정 유닛(40)이 클립핑 및 설정 작업을 완료할 때, 프리미티브에 대한 꼭짓점 데이터는 래스터화 작업(14)을 수행하는 래스터화기(42)로 통과된다. 래스터화기(42)의 출력은 이른 깊이 시험 단계(16)를 수행하는 Z 스텐실 유닛(44)으로 통과된다. 프래그먼트 쉐이더 파이프라인(46)은 Z 스텐실 유닛(44)의 출력에 프래그먼트 쉐이딩 작업(18)을 수행하고, 쉐이딩된 프래그먼트는 그 다음 Z 스텐실 유닛(44)으로 다시 전달되어 늦은 깊이 시험 단계(20)를 수행한다. 그 다음, 늦은 깊이 시험의 출력은 임의의 필요한 혼합 작업(22)을 수행하는 혼합기 유닛(47)으로 제공된다. 그 다음, 혼합된 출력은 프레임 버퍼(48)의 대응하는 타일로 기록된다. 모든 타일이 완료되면, 현재 프레임에 대한 프레임 버퍼(48)의 내용은 디스플레이로 출력된다. 그래픽 처리 파이프라인(30)의 다양한 유닛을 제어하기 위한 제어 회로(50)가 제공된다.
도 1의 단계 10에서의 클립핑 작업은 다른 방식으로 수행될 수 있다. 시각 절두체(11)의 가까운 깊이 평면과 먼 깊이 평면에 대한 프리미티브의 깊이 클립핑은 임의의 공지된 종래 기술을 이용하여 수행될 수 있다. 다음의 설명은 시각 절두체(11)의 상, 하, 좌, 우 평면과 가드 밴드(13)와 같은 다른 클립핑 경계에 의해 형성된 뷰포트에 대하여 x, y 클립핑을 수행하는 다양한 예를 설명할 것이다.
클립핑의 예가 도 5에 도시된다. 도 5의 상부 왼쪽에서, 뷰포트의 에지(클립핑 경계)(65)를 넘어 연장되는 프리미티브(60)가 도시된다. 뷰포트의 외부에 놓이는 프리미티브(60)의 부분들은 궁극적으로 디스플레이되지 않을 것이다. 래스터화, 깊이 시험, 프래그먼트 쉐이딩 및 혼합 단계에 의해 생성되고 처리될 필요가 있는 프래그먼트의 개수를 감소시키기 위하여, 뷰포트(65) 내에 있었던 원래 프리미티브(60)의 부분에 정확하게 대응하는 클립핑된 프리미티브(68)로 프리미티브(60)를 교체함으로써 프리미티브(60)는 뷰포트(65)에 대하여 정확하게 클립핑될 수 있다(도 5의 상부 오른쪽 참조). 본 예에서, 뷰포트(65) 내에 놓이는 부분은 단일 프리미티브(이 예에서는 삼각형)로 표현될 수 없고, 따라서, 뷰포트(65) 내에 있었던 원래 프리미티브(60)의 부분과 일치하도록 여러 클립핑된 프리미티브(68)가 필요하다. 이것은 각각이 꼭짓점 위치, 깊이 또는 색상 등을 나타내는 대응하는 꼭짓점 데이터을 갖는 다수의 추가 꼭짓점(60)이 새로운 클립핑된 프리미티브(68)를 나타내는데 요구된다는 것을 의미한다. 클립핑이 많은 프리미티브에 대하여 필요할 수 있기 때문에, 클립핑은 상당한 양의 새로운 꼭짓점 데이터의 생성을 야기할 수 있다.
도 5의 하부에 도시된 바와 같이, 추가 꼭짓점 정보의 양은 원래 프리미티브(60)의 원래 꼭짓점(72)의 대응하는 특성으로부터 새로운 꼭짓점(70)의 특성을 결정하는 가중치를 이용하여 각각의 새로운 꼭짓점을 나타냄으로써 어느 정도 감소될 수 있다. 삼각형 프리미티브에 대하여, 삼각형의 에지 중 하나에 대하여 직각으로 연장하고 삼각형의 반대쪽 꼭짓점을 통과하는 i, j, k 축에 대하여 가중치를 정의하는 무게 중심 좌표계(barycentric coordinate system)가 사용될 수 있다(도 5의 상부 왼쪽에 그려진 i, j, k 축 참조). 각각의 축에 대하여, 가중치는 삼각형의 에지에서의 0의 값에서 삼각형의 반대측 코너에서의 1의 값으로 늘어난다. 따라서, 도 5의 하부에 도시된 바와 같이, 삼각형의 꼭짓점 A, B, C의 가중치는 A = (1,0,0), B = (0, 1, 0) 및 C = (0, 0, 1)의 (i, j, k) 좌표를 이용하여 표현된다.
그 다음, 추가 꼭짓점(70)(D, E, F)에 대한 꼭짓점 데이터는 원래 꼭짓점(72)(A, B, C)의 대응하는 꼭짓점 데이터에 대하여 가중치를 이용하여 표현될 수 있다. 본 예에서, 추가 꼭짓점 D는, 꼭짓점 D의 x, y 좌표가 0.4*A + 0*B + 0.6*C(여기에서, A, B 및 C는 대응하는 꼭짓점 A, B 및 C의 좌표를 나타낸다)로서 결정될 수 있는 것을 나타내는 (0.4, 0, 0.6)의 가중치를 이용하여 표현된다. 추가 꼭짓점 E, F의 위치는 유사한 방식으로 꼭짓점 A, B, C의 위치로부터 유도될 수 있다. 또한, 꼭짓점 좌표 이외의 속성은 가중치와 원래 꼭짓점의 대응하는 속성을 이용하여 유사한 방식으로 생성될 수 있다. 일부 속성 세트는 원래 꼭짓점의 대응하는 속성으로부터 각각의 속성을 유도하는데 사용될 수 있는 공통 가중치 세트를 공유할 수 있다. 다른 속성은 원래 꼭짓점(72)의 대응하는 속성으로부터 추가 꼭짓점(70)의 속성을 결정하기 위하여 정의된 자신의 특수 가중치를 가질 수 있다. 또한, 원래 꼭짓점 데이터의 선형 조합을 이용하여 원래 꼭짓점 데이터로부터 추가 꼭짓점 데이터를 결정하는 예가 전술되었지만, 다른 예에서 관계는 비선형일 수 있다.
추가 꼭짓점 데이터를 나타내기 위하여 이러한 방식으로 가중치를 이용하는 것은 클립핑에서 생성되는 추가 데이터의 양을 어느 정도 감소시킬 수 있다. 그럼에도 불구하고, 상당한 양의 생성된 새로운 정보가 여전히 있을 것이다. 프리미티브 리스트가 프리미티브 메모리(38)에 저장되기 전 대신에, 각 타일에 대하여 개별적으로 프리미티브 설정 유닛(40)에서 클립핑을 수행함으로써, 프리미티브 메모리(38)에서의 데이터의 양이 상당히 감소될 수 있다.
그럼에도 불구하고, 가능한 경우 클립핑을 방지하는 것이 유용하다. 출원인은 더 작은 프리미티브보다 더 큰 프리미티브에 대하여 클립핑을 수행하는 것이 종종 더 중요하다는 것을 관찰하였다. 이것은 통상적으로 각 꼭짓점에 대한 꼭짓점 데이터 및 좌표가 부동 소수점 포맷으로 표현되기 때문이다. 부동 소수점 숫자 표현은 숫자의 중요한 자릿수를 나타내는 시그니피컨드(significand)와 시그니피컨드 내의 기수점(radix point)(예를 들어, 바이너리 포인트)의 위치를 나타내는 지수(exponent)이다. 이것은 고정 소수점 표현으로 가능할 수 있는 것보다 더 넓은 범위의 수치가 유한 개수의 비트 내에서 표현될 수 있게 한다. 그러나, 이러한 추가 숫자 범위는 정밀도의 일부 손실을 희생하면서 획득된다. 매우 큰 범위의 값이 표현되는데 필요하다면, 이러한 정밀한 입도로 연속하는 값들 사이에 증분을 표현하는 것이 더 이상 가능하지 않다.
시각 절두체(12)를 교차하지만 시각 절두체(12)로부터 멀리 연장하는 일부 매우 큰 프리미티브에 대하여, 꼭짓점 위치를 나타내는 부동 소수점 숫자는 매우 크게 될 수 있지만, 시각 절두체(12) 내에 놓이는 프리미티브의 부분에 대하여 더 적은 값을 나타내는 것이 역시 필요하다. 표현될 필요가 있는 좌표의 범위가 충분히 넓다면, 일부 정밀도가 손실될 수 있고, 따라서, 프리미티브 내의 위치가 식별될 수 있는 분해능(resolution)이 감소될 수 있다. 이것은 문제점을 야기할 수 있다. 예를 들어, 프래그먼트의 텍스처링(texturing)을 수행할 때, 텍스처 패턴이 상당히 높은 분해능으로 정의될 수 있지만, 더 큰 프리미티브에 대하여, 텍스처 패턴이 적용될 수 있는 프리미티브 내의 위치는 더 낮은 분해능으로만 표현될 수 있다. 이 경우에, 텍스처를 랜더링할 때 분해능의 일부 명백한 손실이 있을 수 있다. 따라서, 더 작은 프리미티브에 대하여는 발생하지 않는 다양한 수치 정밀도 및 안정성 문제가 더 큰 프리미티브에 대하여 발생할 수 있다.
따라서, 단계 10의 클립핑 처리는 도 4의 예에서와 같이 수행될 수 있다. 단계 100에서, 프리미티브 크기 파라미터가 목표 프리미티브에 대하여 결정될 수 있다. 프리미티브 크기 파라미터는 프리미티브의 전반적인 크기의 표시를 제공하는 프리미티브의 꼭짓점의 x, y 좌표에 기초하여 결정되는 임의의 파라미터일 수 있다. 예를 들어, 프리미티브 크기 파라미터는 간단히 프리미티브에 대한 꼭짓점의 x, y 좌표 중 가장 큰 것일 수 있다. 이 대신에 더욱 복잡한 크기 표시가 결정될 수 있다.
단계 100에서, 프리미티브에 대한 프리미티브 크기 파라미터가 미리 정해진 임계값보다 더 큰지 여부가 결정된다. 프리미티브 크기 파라미터가 임계값보다 크지 않다면, 단계 102에서 프리미티브를 위한 클립핑이 건너 뛰어지거나 생략되고, 그 다음, 단계 104에서 추가 그래픽 처리는 원래 프리미티브에 대한 꼭짓점 데이터를 이용한다. 한편, 단계 100에서 프리미티브 크기 파라미터가 임계값보다 크다면, 단계 106에서 클립핑 경계에 대한 프리미티브의 클립핑이 수행되어, 하나 이상의 클립핑된 프리미티브에 대한 추가 꼭짓점 데이터를 생성하고, 단계 108에서 추가 그래픽 처리는 원래 프리미티브 대신에 클립핑된 프리미티브(들)을 이용한다. 단계 104, 108에서의 추가 그래픽 처리는 예를 들어 프리미티브 설정, 래스터화, 깊이 시험, 프래그먼트 쉐이딩 및 혼합 단계(12 내지 22)를 포함할 수 있다.
따라서, 클립핑 작업은 더 작은 프리미티브가 아닌 더 큰 프리미티브에 대하여만 수행될 수 있다. 단계 100을 위하여 임계값을 적절한 값으로 설정함으로써, 안정성 및 정밀도 문제가 부동 소수점 처리에서 발생하는 더 큰 프리미티브에 대하여만 클립핑이 수행되는 것을 보장할 수 있다. 실제로, 단일 정밀도 부동 소수점 표현에 대하여, 임의의 축을 따라 32K(215) 픽셀 미만으로 연장하는 프리미티브는 일반적으로 부동 소수점 정밀도 손실을 야기하지 않으며, 따라서 좌표계의 축을 따라 32K 픽셀 미만으로 연장하는 프리미티브가 클립핑되지 않은 채로 남겨지도록 임계값을 설정함으로써, 수행될 필요가 있는 클립핑의 양을 감소시키면서, 이러한 수치 문제는 방지될 수 있다. 실제 벤치마크에서, 프리미티브의 99% 이상은 이러한 32K 임계값보다 더 작아, 이들이 클립핑 경계를 횡단하더라고 클립핑될 필요가 없다는 것이 밝혀졌다. 프리미티브의 나머지 1%가 클립핑될 수 있고, 이것이 상당한 양의 처리 또는 추가 꼭짓점 데이터를 필요로 하더라도, 이는 그래픽 처리 시스템의 전반적인 성능에 영향을 상당하게는 미치지 않는다.
일부 실시예에서, 프리미티브가 임계값보다 더 큰 크기를 갖더라도, 단계 106은 크기가 임계 크기보다 더 작은 다른 프리미티브와 공유하지 않는 프리미티브의 에지만을 클립핑할 수 있다. 이것은 공유된 에지가 그 에지를 공유하는 모든 프리미티브에 대하여 동일하게 클립핑되는 것을 보장한다.
도 5는 프리미티브(60)가 클립핑 경계(65)에 대하여 정확하게 클립핑되는 기술을 도시한다. 그러나, 이것은 본질적이지 않으며, 다른 예에서 다른 방식으로 프리미티브를 클립핑하는 것이 가능하다. 도 6은 클립핑 경계(65)에 대한 부정확한 클립핑의 일례를 도시한다. 원래 클립핑(60)은 도 6의 (A) 부분에 도시된다. 비교를 위하여, 도 6의 (B) 부분은 도 5와 유사한 방식으로 복수의 클립핑된 프리미티브(68)를 생성하기 위하여 클립핑 경계(65)에 대한 정확한 클립핑을 도시한다. 그러나, 클립핑 경계(65)에 대하여 프리미티브를 정확하게 클립핑하는 것은 2 이상의 새로운 프리미티브(68)이 생성되는 것을 필요로 할 수 있어, 처리될 꼭짓점 데이터의 양을 증가시킨다.
추가 데이터의 양을 감소시키기 위하여, 이 대신에 단일의 클립핑된 프리미티브(110)만이 생성되도록, 클립핑은 도 6의 (C) 또는 (D)부분에 도시된 바와 같이 수행될 수 있다. 클립핑 경계(65) 내에 놓이는 원래 프리미티브(60)의 부분이 단지 하나의 프리미티브를 이용하여 표현될 수 없다면, 대신에 클립핑 경계(65) 외부의 부분을 포함하는 단일 프리미티브(110)가 생성된다. 부정확한 클립핑을 허용함으로써, 복수의 클립핑된 프리미티브(65)를 생성할 필요가 없으며, 대신에 더 적은 추가 꼭짓점 데이터를 필요로 하는 단일의 클립핑된 프리미티브(110)가 생성될 수 있다. 전술한 바와 같이, 클립핑을 생략하는 것은 프리미티브가 부동 소수점 처리로 수치 정밀도 및 안정성 문제를 야기하기에 충분히 큰 경우에만 문제이다. 따라서, 수치 정밀도 문제가 발생하기 시작하는 영역의 에지를 마킹하는 제2 경계(120)가 정의될 수 있다(예를 들어, 경계(120)는 도 4에서 전술한 32K 화소 임계값에 대응할 수 있다). 원래 프리미티브(60)가 제2 경계(120) 내에 완전히 놓이도록 클립핑되는 한, 프리미티브가 클립핑 경계(65)에 대하여 정확하게 클립핑되지 않더라도, 클립핑은 부동 소수점 정밀도의 손실을 방지하기에는 충분히 양호할 것이다.
도 6의 (C) 및 (D) 부분에 도시된 바와 같이, 클립핑 요건을 만족시킬 수 있는 여러 상이한 클립핑된 프리미티브(110)가 있을 수 있다. 도 6에 도시된 실시예에서, 클립핑된 프리미티브(110)가 다음의 요건을 만족하는 것이 유용할 수 있다: (a) 클립핑된 프리미티브(110)가 적어도 클립핑 경계(65) 내에 놓이는 원래 프리미티브(60)의 부분을 덮는다; 클립핑된 프리미티브가 단일 프리미티브(110)이어야 한다; 그리고 (c) 전체 클립핑된 프리미티브(110)는 제2 경계(120) 내에 놓여야 한다. 도 6의 (C) 및 (D)에 도시된 2개의 후보와 같은 이러한 조건을 만족할 수 있는 복수의 후보 클립핑된 프리미티브가 있는 경우, 프리미티브 설정 유닛(40)은 새로운 클립핑된 프리미티브(110)의 꼭짓점에 대한 꼭짓점 데이터를 결정하기 위한 가중치를 처리하는 것과 관련된 메모리 또는 처리 간접 비용을 감소시키도록 클립핑된 프리미티브(110)를 선택할 수 있다. 예를 들어, 후보 중 하나는 더 싼 가중치를 가질 수 있거나 다른 후보보다 더 간단한 처리를 필요로 하는 가중치에 의해 표현될 수 있다. 그러한 경우에, 처리하는데 가장 작은 간접 비용을 필요로 하는 후보가 선택될 수 있다.
따라서, 도 1의 클립핑 작업(10) 또는 도 4의 클립핑 단계(106)는 도 5에 도시된 바와 같이 클립핑 경계(65)에 대하여 정확하게 클립핑하거나 또는 도 6에 도시된 바와 같이 단일의 클립핑된 프리미티브를 생성하도록 부정확하게 클립핑할 수 있다.
클립핑을 수행하는 간접 비용을 감소시키기 위한 다른 방식이 도 7에 도시된다. 발명자는 큰 프리미티브에 대한 부동 소수점 정밀도 손실과 관련된 문제가 단계 12에서의 프리미티브 설정 작업의 깊이 함수 계산에 대해 주로 발생하는 경향이 있다는 것을 관찰하였다. 프리미티브의 에지 결정이나 무게 중심 특성의 결정과 같은 프리미티브 설정 작업의 다른 부분은 수치적으로 안정되고 따라서 이러한 작업은 프리미티브가 클립핑되지 않은 채로 남겨지더라도 에러를 발생하는 경향이 없다. 에지 결정을 위하여, 임의의 불안정이 큰 삼각형에 대하여 발생하고, 에러는 클립핑에 의해 도입되었을 수 있는 임의의 에러에 비하여 결코 더 크지 않으며, 따라서, 에러는 허용 가능한 경계 내에 있다. 또한, 무게 중심은 수치 불안정에 의해 영향을 받을 수 있지만, 이것이 실제로 복수의 에지 방정식이기 때문에, 이는 단지 수치적으로 불안정한 크기이고 오프셋이 아니며, i + j + k = 1의 특성을 갖기 때문에 i + k + k의 합의 최종 나눗셈은 크기에서의 에러가 상쇄되는 것을 보장하여, 나머지 에러는 무시할 만하다. 따라서, 수치 문제는 에지 결정 및 무게 중심 특성의 결정에 대하여 상대적으로 중요하지 않다. 그러나, 깊이 방정식에 대하여, 삼각형의 면적을 계산하는 것이 필요하다. 삼각형의 면적은 길고 좁은 삼각형에 대하여, 특히 2개의 각도가 0도에 가깝고 나머지 하나가 180도에 가까울 때, 수치적으로 불안정하다. 따라서, 삼각형에 대한 az, bz 및 cz 계수를 정확하게 계산하는 것은 어려울 수 있다. 또한, 깊이 평면이 z = az*x + bz*y + cz으로서 계산되기 때문에, az와 bz가 여러 차수의 크기 차이를 가진다면 동일한 종류의 삼각형은 cz와 az*x 또는 bz*y 사이에 불안정성을 야기할 수 있다. 클립핑은 삼각형의 각도를 증가시키고, 이와 같이 면적 계산 및 임의의 종속적인 계산에서의 불안정성을 감소시킨다.
대부분의 수치 문제가 깊이 함수 계산과 함께 발생함에 따라, 임시 클립핑이 수행될 수 있고, 클립핑된 프리미티브가 깊이 함수 계산에 대하여만 사용될 수 있다. 깊이 함수가 계산되기만 하면, 클립핑된 프리미티브에 대한 추가 꼭짓점 데이터능 더이상 필요하지 않기 폐기될 수 있다. 에지 결정과 같은 프리미티브 설정 작업과 후속 그래픽 처리의 다른 부분은 원래 프리미티브(60)에 기초할 수 있다. 이것은 도 1에서의 그래픽 처리의 대다수는 원래 프리미티브의 원래 꼭짓점 데이터를 사용할 수 있고 임의의 클립핑된 프리미티브의 임의의 추가 꼭짓점 데이터를 고려할 피요가 없어, 처리될 필요가 있는 데이터의 양을 감소시킨다. 이 기술은 "의사 클립핑(pseudo clipping)"이라 할 수 있다. 이 기술의 이점은 원래 프리미티브(60)에 비하여 프리미티브에 대하여 에지 라인 방정식 및 무게 중심의 결정에 대한 변경이 없다는 것이다.
도 7에 도시된 바와 같이, 의사 클립핑된 프리미티브(130)가 깊이 함수에 대하여 사용된다면, 의사 클립핑된 프리미티브(130)가 클립핑 경계(65) 내에 놓이는 원래 프리미티브(60)의 내부 부분의 모든 것을 커버하는 것이 필요하지 않다. 원래 프리미티브(60)의 내부 영역보다 더 작은 면적을 커버하도록 의사 클립핑된 프리미티브(130)를 생성하는 것이 가능하다(도 7의 오른쪽 부분의 더 어두운 회색 부분에 도시된 바와 같이). 더 작은 의사 클립핑된 프리미티브(130)를 생성하는 것은 때때로 깊이 함수 계산에 사용될 추가 꼭짓점 데이터에 대한 더 싼 가중치를 생성하는데 유용할 수 있다. 의사 클립핑된 프리미티브(130)가 경계 내의 모든 영역을 커버하지 않는다면, 이 프리미티브(130)를 이용하여 결정된 깊이 함수는 클립핑 경계(65) 내의 영역의 코너(135)를 커버하지 않을 것이다. 뷰포트의 하부 오른쪽 코너에서 깊이 값의 이어지는 평가가 깊이 함수가 계산된 프리미티브(130) 외부의 위치를 이용할 것이더라도, 처리는 여전히 정확한 결과를 생성하는 것이 밝혀졌다.
도 4 내지 7에 도시된 상이한 클립핑 기술이 타일 기반의 랜더러(renderer)와 연계하여 논의되지만, 다른 실시예에서, 이러한 기술은 즉시 모드 렌더러(immediate mode renderer)와 같은 다른 형태의 렌더러에서 사용될 수 있다. 유사하게, 이러한 클립핑 기술이 각 타일에 대하여 개별적으로 도 1의 단계 10에서 수행되지만, 다른 실시예에서, 이러한 클립핑 기술은 타일링 단계(6) 전에 수행되는 클립핑 단계에서 사용될 수 있어, 클립핑에서 생성된 임의의 추가 꼭짓점 데이터가 프리미티브 메모리 내에 저장될 수 있다. 일반적으로, 도 4의 기술은 클립핑이 수행되는 프리미티브의 개수를 감소시키는데 사용될 수 있다. 클립핑이 수행될 때, 도 6의 기술은 추가의 클립핑된 프리미티브의 개수 및 이에 따른 클립핑된 동안 생성된 추가 꼭짓점 데이터의 양을 감소시킬 수 있고, 도 7의 기술은 더 적은 처리가 전체로서 필요하도록 추가 꼭짓점 데이터를 필요로 하는 이어지는 그래픽 처리 작업의 회수를 감소시키는데 사용될 수 있다.
도 2a 및 2b가 본 기술을 수행하기 위한 그래픽 처리 파이프라인 구조를 도시하지만, 다른 예에서, 처리 작업은 그래픽 프리미티브의 처리를 수행하기 위하여 소프트웨어에 의해 프로그래밍되는 범용 컴퓨터를 이용하여 수행될 수 있다. 도 8은 전술한 기술을 구현하는데 사용될 수 있는 범용 컴퓨터(200)의 일례를 개략적으로 도시한다. 범용 컴퓨터(200)는 모두 공통 버스(222)를 통해 연결되는 중앙 처리 유닛(202), 랜덤 액세스 메모리(204), 리드 온리 메모리(206), 네트워크 인터페이스 카드(208), 하드 디스크 드라이브(210), 디스플레이 드라이버(212) 및 모니터(206), 그리고 키보드(218)와 마우스(220)를 갖는 사용자 입출력 회로(216)를 포함한다. 동작 시, 중앙 처리 유닛(202)은 랜덤 액세스 메모리(204), 리드 온리 메모리(206) 및 하드 디스크 드라이브(210) 중 하나 이상에 저장될 수 있거나 네트워크 인터페이스 카드(208)를 통해 동적으로 다운로드될 수 있는 컴퓨터 프로그램 명령어를 실행할 수 있다. 수행되는 처리의 결과는 디스플레이 드라이버(212)와 모니터(214)를 통해 사용자에게 디스플레이될 수 있다. 범용 컴퓨터(200)의 동작을 제어하기 위한 사용자 입력은 키보드(218) 또는 마우스(220)로부터 사용자 입출력 회로(216)를 통해 수신될 수 있다. 컴퓨터 프로그램이 다양한 상이한 컴퓨터 언어로 기록될 수 있다는 것이 이해될 것이다. 컴퓨터 프로그램은 기록 매체에 저장되어 배포되거나 범용 컴퓨터(200)에 동적으로 다운로드될 수 있다. 적합한 컴퓨터 프로그램의 제어 하에서 동작할 때, 범용 컴퓨터(200)는 전술한 기술을 수행할 수 있고, 전술한 기술을 수행하기 위한 장치를 형성하도록 고려될 수 있다. 범용 컴퓨터(200)의 구조는 상당히 변동될 수 있으며 도 8은 단지 하나의 예이다. 예를 들어, 도 8에 표시된 바와 같은 데스크탑 컴퓨터 대신에, 기술은 스마트폰 또는 태블릿 컴퓨터와 같은 모바일 장치에 구현될 수 있다. 도 2a 및 2b에 도시된 다양한 버퍼(32, 38, 48)는 RAM(204) 내의 저장 영역으로서 구현될 수 있고, 도 2a 및 2b의 처리 유닛(34, 36, 40, 42, 44, 46, 47, 48, 50)은 예를 들어 CPU(202)에 의해 실행되는 소프트웨어 알고리즘을 이용하여 구현될 수 있다.
다음의 숫자가 매겨진 항목은 다른 비한정적인 예의 배치를 설정한다.
1. 디스플레이를 위하여 부동 소수점 포맷으로 표현되는 꼭짓점 좌표를 갖는 그래픽 프리미티브를 처리하는 방법에 있어서,
목표 프리미티브보다 더 작은 양만큼 상기 클립핑 경계를 넘어 연장하는 상기 목표 프리미티브에 대응하는 단일의 클립핑된 프리미티브를 생성하도록 클립핑 경계에 대하여 상기 목표 프리미티브에 클립핑 작업을 수행하는 단계; 및
상기 클립핑된 프리미티브를 이용하여 적어도 하나의 그래픽 처리 작업을 수행하는 단계
를 포함하고,
상기 클립핑 경계 내에 놓이는 상기 목표 프리미티브의 내부 부분이 단지 하나의 프리미티브를 이용하여 표현될 수 없는 경우에, 상기 클립핑 작업은 상기 목표 프리미티브의 상기 내부 부분에 대응하는 내부 영역과 상기 클립핑 경계를 넘어 놓이는 외부 영역을 포함하는 상기 단일의 클립핑된 프리미티브를 생성하는, 그래픽 프리미티브를 처리하는 방법.
2. 항목 1에 있어서, 상기 클립핑 작업은 제2 경계 내에 놓이는 상기 단일의 클립핑된 프리미티브를 생성하고, 상기 제2 경계는 상기 클립핑 경계 외부에 있는, 그래픽 프리미티브를 처리하는 방법.
3. 항목 2에 있어서, 상기 제2 경계 내에 놓이는 프리미티브는 부동 소수점 정밀도의 손실에 의해 발생되는 에러 없이 상기 적어도 하나의 그래픽 처리 작업에 의해 처리되는, 그래픽 프리미티브를 처리하는 방법.
4. 항목 1 내지 3 중 임의의 항목에 있어서, 상기 클립핑된 작업은 상기 목표 프리미티브의 꼭짓점 데이터로부터 상기 단일의 클립핑된 프리미티브의 추가 꼭짓점 데이터를 결정하기 위한 가중치를 생성하는, 그래픽 프리미티브를 처리하는 방법.
5. 항목 4에 있어서, 상기 클립핑 작업은 상기 단일의 클립핑된 프리미티브에 대한 상기 가중치를 다루는 것과 관련된 메모리 간접 비용 또는 처리 간접 비용을 감소시키기 위하여 복수의 후보 클립핑된 프리미티브로부터 상기 단일의 클립핑된 프리미티브를 선택하는, 그래픽 프리미티브를 처리하는 방법.
6. 디스플레이를 위하여 그래픽 프리미티브를 처리하는 장치에 있어서,
상기 프리미티브는 부동 소수점 포맷으로 표현되는 꼭짓점 좌표를 갖고,
상기 장치는,
(i) 목표 프리미티브보다 더 작은 양만큼 상기 클립핑 경계를 넘어 연장하는 상기 목표 프리미티브에 대응하는 단일의 클립핑된 프리미티브를 생성하도록 클립핑 경계에 대하여 상기 목표 프리미티브에 클립핑 작업을 수행하고; 그리고,
(ii) 상기 클립핑된 프리미티브를 이용하여 적어도 하나의 그래픽 처리 작업을 수행
하도록 구성된 처리 회로를 포함하고,
상기 클립핑 경계 내에 놓이는 상기 목표 프리미티브의 내부 부분이 단지 하나의 프리미티브를 이용하여 표현될 수 없는 경우에, 상기 클립핑 작업은 상기 목표 프리미티브의 상기 내부 부분에 대응하는 내부 영역과 상기 클립핑 경계를 넘어 놓이는 외부 영역을 포함하는 상기 단일의 클립핑된 프리미티브를 생성하는, 그래픽 프리미티브를 처리하는 장치.
7. 디스플레이를 위하여 그래픽 프리미티브를 처리하는 장치에 있어서,
상기 프리미티브는 부동 소수점 포맷으로 표현되는 꼭짓점 좌표를 갖고,
상기 장치는,
(i) 목표 프리미티브보다 더 작은 양만큼 상기 클립핑 경계를 넘어 연장하는 상기 목표 프리미티브에 대응하는 단일의 클립핑된 프리미티브를 생성하도록 클립핑 경계에 대하여 상기 목표 프리미티브에 클립핑 작업을 수행하고; 그리고,
(ii) 상기 클립핑된 프리미티브를 이용하여 적어도 하나의 그래픽 처리 작업을 수행
하는 처리 수단을 포함하고,
상기 클립핑 경계 내에 놓이는 상기 목표 프리미티브의 내부 부분이 단지 하나의 프리미티브를 이용하여 표현될 수 없는 경우에, 상기 클립핑 작업은 상기 목표 프리미티브의 상기 내부 부분에 대응하는 내부 영역과 상기 클립핑 경계를 넘어 놓이는 외부 영역을 포함하는 상기 단일의 클립핑된 프리미티브를 생성하는, 그래픽 프리미티브를 처리하는 장치.
8. 디스플레이를 위하여 부동 소수점 포맷으로 표현되는 꼭짓점 좌표를 갖는 그래픽 프리미티브를 처리하는 방법에 있어서,
어느 위치가 목표 프리미티브의 에지의 내부 또는 외부에 있는지 판단하기 위한 에지 결정과 상기 목표 프리미티브 내의 깊이 값을 결정하기 위한 깊이 함수를 결정하기 위한 깊이 함수 결정을 포함하는 프리미티브 설정 작업을 수행하는 단계; 및
상기 목표 프리미티브, 상기 에지 결정 및 상기 깊이 함수를 이용하여 추가 그래픽 처리 작업을 수행하는 단계
를 포함하고,
상기 목표 프리미티브가 클립핑 조건을 만족하면, 상기 깊이 함수 결정은 상기 목표 프리미티브보다 더 작은 양만큼 클립핑 경계를 넘어 연장하는 클립핑된 프리미티브를 이용하여 수행되고, 상기 에지 결정은 클립핑 없이 상기 목표 프리미티브를 이용하여 수행되는, 그래픽 프리미티브를 처리하는 방법.
9. 항목 8에 있어서, 상기 클립핑된 프리미티브는, 상기 목표 프리미티브의 내부 부분이 단지 하나의 프리미티브를 이용하여 표현될 수 없는 경우에, 상기 클립핑 경계 내에 놓이는 상기 목표 프리미티브의 내부 부분에 정확하게 대응하지 않는 단일의 클립핑된 프리미티브를 포함하는, 그래픽 프리미티브를 처리하는 방법.
10. 항목 9에 있어서, 적어도 하나의 목표 프리미티브에 대하여, 상기 클립핑된 프리미티브는 상기 목표 프리미티브의 내부 영역보다 더 작은 면적을 갖는, 그래픽 프리미티브를 처리하는 방법.
11. 디스플레이를 위하여 부동 소수점 포맷으로 표현되는 꼭짓점 좌표를 갖는 그래픽 프리미티브를 처리하는 장치에 있어서,
어느 위치가 목표 프리미티브의 에지의 내부 또는 외부에 있는지 판단하기 위한 에지 결정과 상기 목표 프리미티브 내의 깊이 값을 결정하기 위한 깊이 함수를 결정하기 위한 깊이 함수 결정을 포함하는 프리미티브 설정 작업을 수행하도록 구성된 프리미티브 설정 회로; 및
상기 목표 프리미티브, 상기 에지 결정 및 상기 깊이 함수를 이용하여 추가 그래픽 처리 작업을 수행하도록 구성된 처리 회로
를 포함하고,
상기 목표 프리미티브가 클립핑 조건을 만족하면, 상기 깊이 함수 결정은 상기 목표 프리미티브보다 더 작은 양만큼 클립핑 경계를 넘어 연장하는 클립핑된 프리미티브를 이용하여 수행되고, 상기 에지 결정은 클립핑 없이 상기 목표 프리미티브를 이용하여 수행되는, 그래픽 프리미티브를 처리하는 장치.
12. 디스플레이를 위하여 부동 소수점 포맷으로 표현되는 꼭짓점 좌표를 갖는 그래픽 프리미티브를 처리하는 장치에 있어서,
어느 위치가 목표 프리미티브의 에지의 내부 또는 외부에 있는지 판단하기 위한 에지 결정과 상기 목표 프리미티브 내의 깊이 값을 결정하기 위한 깊이 함수를 결정하기 위한 깊이 함수 결정을 포함하는 프리미티브 설정 작업을 수행하는 프리미티브 설정 수단; 및
상기 목표 프리미티브, 상기 에지 결정 및 상기 깊이 함수를 이용하여 추가 그래픽 처리 작업을 수행하는 처리 수단
을 포함하고,
상기 목표 프리미티브가 클립핑 조건을 만족하면, 상기 깊이 함수 결정은 상기 목표 프리미티브보다 더 작은 양만큼 클립핑 경계를 넘어 연장하는 클립핑된 프리미티브를 이용하여 수행되고, 상기 에지 결정은 클립핑 없이 상기 목표 프리미티브를 이용하여 수행되는, 그래픽 프리미티브를 처리하는 장치.
13. 디스플레이될 프레임에 대한 그래픽 프리미티브를 처리하는 방법에 있어서,
각각의 프리미티브를 디스플레이될 상기 프레임을 형성하는 복수의 타일의 적어도 하나에 할당하는 단계;
각 타일에 대하여, 대응하는 타일에 할당된 상기 프리미티브의 꼭짓점에 대한 꼭짓점 데이터를 식별하는 프리미티브 리스트를 프리미티브 메모리 내에 저장하는 단계; 및
각각의 타일에 대하여 개별적으로 타일 처리를 수행하는 단계
를 포함하고,
상기 타일 처리는,
(i) 상기 프리미티브 메모리로부터 상기 타일에 대한 상기 프리미티브 리스트를 판독하는 단계;
(ii) 상기 프리미티브 리스트가 클립핑 조건을 만족하는 목표 프리미티브를 식별하면, 상기 프리미티브 리스트에서 식별되지 않은 클립핑된 프리미티브에 대한 적어도 하나의 추가 꼭짓점에 대해 추가 꼭짓점 데이터를 생성하도록 상기 클립핑 경계에 대하여 상기 목표 프리미티브를 클립핑하기 위한 클립핑 작업을 수행하는 단계로서, 상기 클립핑된 프리미티브는 상기 목표 프리미티브보다 더 작은 양만큼 클립핑 경계를 넘어 연장하는, 클립핑 작업 수행 단계;
(iii) 상기 프리미티브 리스트에서 식별된 꼭짓점 데이터 및 상기 클립핑 작업에 의해 생성된 추가 꼭짓점 데이터를 이용하여 적어도 하나의 추가 그래픽 처리 작업을 수행하는 단계; 및
(iv) 상기 타일에 대하여 상기 적어도 하나의 추가 그래픽 처리 작업에 의해 생성된 디스플레이 데이터를 출력하는 단계
를 포함하는, 그래픽 프리미티브를 처리하는 방법.
14. 디스플레이를 위하여 부동 소수점 포맷으로 표현되는 꼭짓점 좌표를 갖는 그래픽 프리미티브를 처리하는 방법에 있어서,
처리될 목표 프리미티브에 대한 꼭짓점 좌표에 기초하여 상기 목표 프리미티브의 크기를 나타내는 프리미티브 크기 파라미터를 결정하는 단계;
상기 프리미티브 크기 파라미터가 미리 정해진 임계값을 초과하는 경우에, 상기 목표 프리미티브보다 더 작은 양만큼 클립핑 경계를 넘어 연장하는 적어도 하나의 클립핑된 프리미티브를 생성하도록 상기 클립핑 경계에 대하여 상기 목표 프리미티브에 클립핑 작업을 수행하고, 상기 적어도 하나의 클립핑된 프리미티브를 이용하여 적어도 하나의 그래픽 처리 작업을 수행하는 단계; 및
상기 프리미티브 크기 파라미터가 상기 미리 정해진 임계값을 초과하지 않는 경우에, 상기 목표 프리미티브에 대한 상기 클립핑 작업을 생략하고, 상기 목표 프리미티브를 이용하여 상기 적어도 하나의 그래픽 처리 작업을 수행하는 단계
를 포함하는, 그래픽 프리미티브를 처리하는 방법.
15. 컴퓨터에 의해 실행될 때, 항목 1 내지 5, 8 내지 10, 13 및 14 중 임의의 항목의 방법을 수행하도록 상기 컴퓨터를 제어하는 컴퓨터 프로그램을 저장하는 컴퓨터 판독 가능한 저장 매체.
예시적인 실시예들이 첨부된 도면을 이용하여 여기에서 상세히 설명되었지만, 본 발명은 이러한 정확한 실시예에 한정되지 않으며 다양한 변경 및 수정이 첨부된 특허청구범위의 보호 범위 및 기술적 사상을 벗어나지 않으면서 본 발명에 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 이루어질 수 있다는 것이 이해되어야 한다.

Claims (21)

  1. 디스플레이될 프레임에 대한 그래픽 프리미티브를 처리하는 방법에 있어서,
    각각의 프리미티브를 디스플레이될 상기 프레임을 형성하는 복수의 타일의 적어도 하나에 할당하는 단계;
    각 타일에 대하여, 대응하는 타일에 할당된 상기 프리미티브의 꼭짓점에 대한 꼭짓점 데이터를 식별하는 프리미티브 리스트를 프리미티브 메모리 내에 저장하는 단계; 및
    각각의 타일에 대하여 개별적으로 타일 처리를 수행하는 단계를 포함하고,
    상기 타일 처리는,
    (i) 상기 프리미티브 메모리로부터 상기 타일에 대한 상기 프리미티브 리스트를 판독하는 단계;
    (ii) 상기 프리미티브 리스트가 클립핑 조건을 만족하는 목표 프리미티브를 식별하면, 상기 프리미티브 리스트에서 식별되지 않은 클립핑된 프리미티브에 대한 적어도 하나의 추가 꼭짓점에 대해 추가 꼭짓점 데이터를 생성하도록 상기 클립핑 경계에 대하여 상기 목표 프리미티브를 클립핑하기 위한 클립핑 작업을 수행하는 단계로서, 상기 클립핑된 프리미티브는 상기 목표 프리미티브보다 더 작은 양만큼 클립핑 경계를 넘어 연장하고, 상기 클립핑 작업은 상기 타일에 대한 상기 프리미티브 리스트가 상기 프리미티브 메모리로부터 판독된 후, 상기 프리미티브 리스트가 상기 클립핑 조건을 만족하는 목표 프리미티브를 식별하는 각 타일에 대하여 개별적으로 수행되는, 클립핑 작업 수행 단계;
    (iii) 상기 프리미티브 리스트에서 식별된 꼭짓점 데이터 및 상기 클립핑 작업에 의해 생성된 추가 꼭짓점 데이터를 이용하여 적어도 하나의 추가 그래픽 처리 작업을 수행하는 단계; 및
    (iv) 상기 타일에 대하여 상기 적어도 하나의 추가 그래픽 처리 작업에 의해 생성된 디스플레이 데이터를 출력하는 단계를 포함하는, 그래픽 프리미티브를 처리하는 방법.
  2. 제1항에 있어서,
    상기 클립핑 작업에 의해 생성된 상기 추가 꼭짓점 데이터는 상기 프리미티브 메모리보다 더 낮은 대기 시간(latency)을 갖는 캐시 메모리에 저장되는, 그래픽 프리미티브를 처리하는 방법.
  3. 제1항에 있어서,
    상기 추가 꼭짓점 데이터는 상기 목표 프리미티브의 상기 꼭짓점 데이터로부터 상기 추가 꼭짓점 데이터를 결정하기 위한 가중치로 표현되는, 그래픽 프리미티브를 처리하는 방법.
  4. 제1항에 있어서,
    상기 클립핑 경계는 시각 절두체(view frustum)의 경계에 대응하는, 그래픽 프리미티브를 처리하는 방법.
  5. 제1항에 있어서,
    상기 클립핑 경계는 시각 절두체의 경계 외부에 있는, 그래픽 프리미티브를 처리하는 방법.
  6. 제1항에 있어서,
    상기 클립핑 조건은 상기 목표 프리미티브가 상기 클립핑 경계를 넘어 연장하는 경우에 만족되는, 그래픽 프리미티브를 처리하는 방법.
  7. 제1항에 있어서,
    상기 클립핑 조건은 상기 목표 프리미티브가 상기 클립핑 경계를 넘어 연장하고 상기 목표 프리미티브의 크기를 나타내는 프리미티브 크기 파라미터가 미리 정해진 임계값을 초과하는 경우에 만족되는, 그래픽 프리미티브를 처리하는 방법.
  8. 제1항에 있어서,
    상기 적어도 하나의 추가 그래픽 처리 작업은,
    어느 위치가 상기 프리미티브의 에지 내부 또는 외부에 있는지 판단하기 위한 에지 결정과 상기 프리미티브 내의 깊이 값을 결정하기 위한 깊이 함수를 결정하기 위한 깊이 함수 결정 중 적어도 하나를 포함하는 프리미티브 설정 작업; 및
    상기 프리미티브를 나타내는데 사용되는 복수의 그래픽 프래그먼트에 대한 위치 데이터를 결정하기 위한 래스터화(rasterization) 작업
    중 적어도 하나를 포함하는, 그래픽 프리미티브를 처리하는 방법.
  9. 디스플레이될 프레임에 대한 그래픽 프리미티브를 처리하는 장치에 있어서,
    각각의 프리미티브를 디스플레이될 상기 프레임을 형성하는 복수의 타일의 적어도 하나에 할당하도록 구성된 할당 회로;
    각 타일에 대하여, 대응하는 타일에 할당된 상기 프리미티브의 꼭짓점에 대한 꼭짓점 데이터를 식별하는 프리미티브 리스트를 저장하도록 구성된 프리미티브 메모리; 및
    각각의 타일에 대하여 개별적으로 타일 처리를 수행하도록 구성된 타일 처리 파이프라인을 포함하고,
    상기 타일 처리는,
    (i) 상기 프리미티브 메모리로부터 상기 타일에 대한 상기 프리미티브 리스트를 판독하는 것;
    (ii) 상기 프리미티브 리스트가 클립핑 조건을 만족하는 목표 프리미티브를 식별하면, 상기 프리미티브 리스트에서 식별되지 않은 클립핑된 프리미티브에 대한 적어도 하나의 추가 꼭짓점에 대해 추가 꼭짓점 데이터를 생성하도록 상기 클립핑 경계에 대하여 상기 목표 프리미티브를 클립핑하기 위한 클립핑 작업을 수행하고, 상기 클립핑된 프리미티브는 상기 목표 프리미티브보다 더 작은 양만큼 클립핑 경계를 넘어 연장하고, 상기 클립핑 작업은 상기 타일에 대한 상기 프리미티브 리스트가 상기 프리미티브 메모리로부터 판독된 후, 상기 프리미티브 리스트가 상기 클립핑 조건을 만족하는 목표 프리미티브를 식별하는 각 타일에 대하여 개별적으로 수행되는 것;
    (iii) 상기 프리미티브 리스트에서 식별된 꼭짓점 데이터 및 상기 클립핑 작업에 의해 생성된 추가 꼭짓점 데이터를 이용하여 적어도 하나의 추가 그래픽 처리 작업을 수행하는 것; 및
    (iv) 상기 타일에 대하여 상기 적어도 하나의 추가 그래픽 처리 작업에 의해 생성된 디스플레이 데이터를 출력하는 것을 포함하는, 그래픽 프리미티브를 처리하는 장치.
  10. 디스플레이될 프레임에 대한 그래픽 프리미티브를 처리하는 장치에 있어서,
    각각의 프리미티브를 디스플레이될 상기 프레임을 형성하는 복수의 타일의 적어도 하나에 할당하는 할당 수단;
    각 타일에 대하여, 대응하는 타일에 할당된 상기 프리미티브의 꼭짓점에 대한 꼭짓점 데이터를 식별하는 프리미티브 리스트를 저장하는 프리미티브 메모리 수단; 및
    각각의 타일에 대하여 개별적으로 타일 처리를 수행하는 처리 수단을 포함하고,
    상기 타일 처리는,
    (i) 상기 프리미티브 메모리 수단으로부터 상기 타일에 대한 상기 프리미티브 리스트를 판독하는 것;
    (ii) 상기 프리미티브 리스트가 클립핑 조건을 만족하는 목표 프리미티브를 식별하면, 상기 프리미티브 리스트에서 식별되지 않은 클립핑된 프리미티브에 대한 적어도 하나의 추가 꼭짓점에 대해 추가 꼭짓점 데이터를 생성하도록 상기 클립핑 경계에 대하여 상기 목표 프리미티브를 클립핑하기 위한 클립핑 작업을 수행하고, 상기 클립핑된 프리미티브는 상기 목표 프리미티브보다 더 작은 양만큼 클립핑 경계를 넘어 연장하고, 상기 클립핑 작업은 상기 타일에 대한 상기 프리미티브 리스트가 상기 프리미티브 메모리로부터 판독된 후, 상기 프리미티브 리스트가 상기 클립핑 조건을 만족하는 목표 프리미티브를 식별하는 각 타일에 대하여 개별적으로 수행되는 것;
    (iii) 상기 프리미티브 리스트에서 식별된 꼭짓점 데이터 및 상기 클립핑 작업에 의해 생성된 추가 꼭짓점 데이터를 이용하여 적어도 하나의 추가 그래픽 처리 작업을 수행하는 것; 및
    (iv) 상기 타일에 대하여 상기 적어도 하나의 추가 그래픽 처리 작업에 의해 생성된 디스플레이 데이터를 출력하는 것을 포함하는, 그래픽 프리미티브를 처리하는 장치.
  11. 디스플레이를 위하여 부동 소수점 포맷으로 표현되는 꼭짓점 좌표를 갖는 그래픽 프리미티브를 처리하는 방법에 있어서,
    처리될 목표 프리미티브에 대한 꼭짓점 좌표에 기초하여 상기 목표 프리미티브의 크기를 나타내는 프리미티브 크기 파라미터를 결정하는 단계;
    상기 프리미티브 크기 파라미터가 미리 정해진 임계값을 초과하는 경우에, 상기 목표 프리미티브보다 더 작은 양만큼 클립핑 경계를 넘어 연장하는 적어도 하나의 클립핑된 프리미티브를 생성하도록 상기 클립핑 경계에 대하여 상기 목표 프리미티브에 클립핑 작업을 수행하고, 상기 적어도 하나의 클립핑된 프리미티브를 이용하여 적어도 하나의 그래픽 처리 작업을 수행하는 단계; 및
    상기 프리미티브 크기 파라미터가 상기 미리 정해진 임계값을 초과하지 않는 경우에, 상기 목표 프리미티브에 대한 상기 클립핑 작업을 생략하고, 상기 목표 프리미티브를 이용하여 상기 적어도 하나의 그래픽 처리 작업을 수행하는 단계를 포함하고,
    상기 미리 정해진 임계값이 상기 클립핑 경계 외부에 놓이는 임계값 경계에 대응함으로써, 상기 임계값 경계를 횡단하는 프리미티브가 상기 클립핑 경계에 대하여 클립핑되고 상기 임계값 경계 내에 전체적으로 놓이는 프리미티브가 클립핑되지 않은 상태를 유지하는, 그래픽 프리미티브를 처리하는 방법.
  12. 제11항에 있어서,
    상기 프리미티브 크기 파라미터는 상기 목표 프리미티브에 대한 상기 꼭짓점 좌표 중 하나의 크기를 포함하는, 그래픽 프리미티브를 처리하는 방법.
  13. 제11항에 있어서,
    상기 프리미티브 크기 파라미터가 상기 미리 정해진 임계값을 초과하지 않는 프리미티브가 부동 소수점 정밀도의 손실에 의해 발생되는 에러 없이 상기 적어도 하나의 그래픽 처리 작업에 의해 처리되도록, 상기 미리 정해진 임계값이 값을 갖는, 그래픽 프리미티브를 처리하는 방법.
  14. 제11항에 있어서,
    상기 클립핑 경계는 시각 절두체의 경계에 대응하는, 그래픽 프리미티브를 처리하는 방법.
  15. 제11항에 있어서,
    상기 클립핑 경계는 시각 절두체의 경계 외부에 있는, 그래픽 프리미티브를 처리하는 방법.
  16. 제11항에 있어서,
    상기 클립핑 작업은 상기 적어도 하나의 클립핑된 프리미티브를 생성하도록 상기 클립핑 경계에 대하여 상기 목표 프리미티브를 정확하게 클립핑하는, 그래픽 프리미티브를 처리하는 방법.
  17. 제11항에 있어서,
    상기 클립핑 작업은 상기 목표 프리미티브에 대응하는 단일의 클립핑된 프리미티브를 생성하고,
    상기 클립핑 경계 내에 놓이는 상기 목표 프리미티브의 부분이 단지 하나의 프리미티브를 이용하여 표현될 수 없는 경우, 상기 클립핑 작업은 상기 클립핑 경계를 넘어 연장하는 상기 단일의 클립핑된 프리미티브의 부분을 갖는 상기 단일의 클립핑된 프리미티브를 생성하는, 그래픽 프리미티브를 처리하는 방법.
  18. 제11항에 있어서,
    상기 클립핑 작업은 상기 목표 프리미티브의 상기 꼭짓점 데이터로부터 상기 적어도 하나의 클립핑된 프리미티브의 추가 꼭짓점 데이터를 결정하기 위한 가중치를 생성하는, 그래픽 프리미티브를 처리하는 방법.
  19. 제11항에 있어서,
    상기 적어도 하나의 추가 그래픽 처리 작업은,
    어느 위치가 상기 프리미티브의 에지 내부 또는 외부에 있는지 판단하기 위한 에지 결정과 상기 프리미티브 내의 깊이 값을 결정하기 위한 깊이 함수를 결정하기 위한 깊이 함수 결정 중 적어도 하나를 포함하는 프리미티브 설정 작업; 및
    상기 프리미티브를 나타내는데 사용되는 복수의 그래픽 프래그먼트에 대한 위치 데이터를 계산하기 위한 래스터화 작업중 적어도 하나를 포함하는, 그래픽 프리미티브를 처리하는 방법.
  20. 디스플레이를 위하여 그래픽 프리미티브를 처리하는 장치에 있어서,
    상기 프리미티브는 부동 소수점 포맷으로 표현되는 꼭짓점 좌표를 갖고,
    상기 장치는,
    (i) 처리될 목표 프리미티브에 대한 꼭짓점 좌표에 기초하여 상기 목표 프리미티브의 크기를 나타내는 프리미티브 크기 파라미터를 결정하고;
    (ii) 상기 프리미티브 크기 파라미터가 미리 정해진 임계값을 초과하는 경우에, 상기 목표 프리미티브보다 더 작은 양만큼 클립핑 경계를 넘어 연장하는 적어도 하나의 클립핑된 프리미티브를 생성하도록 상기 클립핑 경계에 대하여 상기 목표 프리미티브에 클립핑 작업을 수행하고, 상기 적어도 하나의 클립핑된 프리미티브를 이용하여 적어도 하나의 그래픽 처리 작업을 수행하고; 그리고,
    (iii) 상기 프리미티브 크기 파라미터가 상기 미리 정해진 임계값을 초과하지 않는 경우에, 상기 목표 프리미티브에 대한 상기 클립핑 작업을 생략하고, 상기 목표 프리미티브를 이용하여 상기 적어도 하나의 그래픽 처리 작업을 수행하도록 구성된 처리 회로를 포함하고,
    상기 미리 정해진 임계값이 상기 클립핑 경계 외부에 놓이는 임계값 경계에 대응함으로써, 상기 임계값 경계를 횡단하는 프리미티브가 상기 클립핑 경계에 대하여 클립핑되고 상기 임계값 경계 내에 전체적으로 놓이는 프리미티브가 클립핑되지 않은 상태를 유지하는, 그래픽 프리미티브를 처리하는 장치.
  21. 디스플레이를 위하여 그래픽 프리미티브를 처리하는 장치에 있어서,
    상기 프리미티브는 부동 소수점 포맷으로 표현되는 꼭짓점 좌표를 갖고,
    상기 장치는,
    (i) 처리될 목표 프리미티브에 대한 꼭짓점 좌표에 기초하여 상기 목표 프리미티브의 크기를 나타내는 프리미티브 크기 파라미터를 결정하고;
    (ii) 상기 프리미티브 크기 파라미터가 미리 정해진 임계값을 초과하는 경우에, 상기 목표 프리미티브보다 더 작은 양만큼 클립핑 경계를 넘어 연장하는 적어도 하나의 클립핑된 프리미티브를 생성하도록 상기 클립핑 경계에 대하여 상기 목표 프리미티브에 클립핑 작업을 수행하고, 상기 적어도 하나의 클립핑된 프리미티브를 이용하여 적어도 하나의 그래픽 처리 작업을 수행하고; 그리고,
    (iii) 상기 프리미티브 크기 파라미터가 상기 미리 정해진 임계값을 초과하지 않는 경우에, 상기 목표 프리미티브에 대한 상기 클립핑 작업을 생략하고, 상기 목표 프리미티브를 이용하여 상기 적어도 하나의 그래픽 처리 작업을 수행하기 위한 처리 수단을 포함하고,
    상기 미리 정해진 임계값이 상기 클립핑 경계 외부에 놓이는 임계값 경계에 대응함으로써, 상기 임계값 경계를 횡단하는 프리미티브가 상기 클립핑 경계에 대하여 클립핑되고 상기 임계값 경계 내에 전체적으로 놓이는 프리미티브가 클립핑되지 않은 상태를 유지하는, 그래픽 프리미티브를 처리하는 장치.
KR1020140169472A 2013-12-11 2014-12-01 그래픽 프리미티브의 클립핑 KR102278147B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1321898.7A GB2521171B (en) 2013-12-11 2013-12-11 Clipping of graphics primitives
GB1321898.7 2013-12-11

Publications (2)

Publication Number Publication Date
KR20150068289A KR20150068289A (ko) 2015-06-19
KR102278147B1 true KR102278147B1 (ko) 2021-07-19

Family

ID=50000542

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140169472A KR102278147B1 (ko) 2013-12-11 2014-12-01 그래픽 프리미티브의 클립핑

Country Status (4)

Country Link
US (1) US9530241B2 (ko)
KR (1) KR102278147B1 (ko)
CN (1) CN104933749B (ko)
GB (1) GB2521171B (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11170460B2 (en) * 2014-12-05 2021-11-09 Intel Corporation Dedicated hardware unit to offload blending of values from memory
US9686448B2 (en) 2015-06-22 2017-06-20 Apple Inc. Adaptive black-level restoration
US11087644B2 (en) 2015-08-19 2021-08-10 E Ink Corporation Displays intended for use in architectural applications
JP2018532216A (ja) 2015-09-07 2018-11-01 ソニー インタラクティブ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー 画像正則化及びリターゲティングシステム
RU2637901C2 (ru) * 2015-11-06 2017-12-07 Общество С Ограниченной Ответственностью "Яндекс" Способ и вычислительное устройство сохранения данных для отрисовки графических объектов
ES2812176T3 (es) 2016-05-24 2021-03-16 E Ink Corp Método para representar imágenes en color
CN107622497B (zh) * 2017-09-29 2020-03-27 Oppo广东移动通信有限公司 图像裁剪方法、装置、计算机可读存储介质和计算机设备
US11341383B2 (en) * 2019-08-18 2022-05-24 Kyocera Document Solutions Inc. Methods and apparatus to detect effective tiling area and fill tiles efficiently
GB2621119A (en) * 2022-07-29 2024-02-07 Advanced Risc Mach Ltd Graphics processing

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040263534A1 (en) 2003-06-30 2004-12-30 Bimal Poddar Clipping and scissoring technique
US20060061596A1 (en) * 2004-09-17 2006-03-23 Yang Jiao Partial guardband clipping
GB2500284A (en) * 2012-09-12 2013-09-18 Imagination Tech Ltd Object list tile based computer graphics using modified primitives

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5990904A (en) * 1995-08-04 1999-11-23 Microsoft Corporation Method and system for merging pixel fragments in a graphics rendering system
US6169554B1 (en) * 1997-06-30 2001-01-02 Sun Microsystems, Inc. Clip testing unit for a three-dimensional graphics accelerator
US7215344B2 (en) * 1998-01-15 2007-05-08 3Dlabs, Inc. Ltd Triangle clipping for 3D graphics
AU5688199A (en) * 1998-08-20 2000-03-14 Raycer, Inc. System, apparatus and method for spatially sorting image data in a three-dimensional graphics pipeline
US6967644B1 (en) * 1998-10-01 2005-11-22 Canon Kabushiki Kaisha Coordinate input apparatus and control method thereof, and computer readable memory
US6359630B1 (en) * 1999-06-14 2002-03-19 Sun Microsystems, Inc. Graphics system using clip bits to decide acceptance, rejection, clipping
US6686924B1 (en) * 2000-02-02 2004-02-03 Ati International, Srl Method and apparatus for parallel processing of geometric aspects of video graphics data
US6967664B1 (en) * 2000-04-20 2005-11-22 Ati International Srl Method and apparatus for primitive processing in a graphics system
US7167171B2 (en) * 2004-06-29 2007-01-23 Intel Corporation Methods and apparatuses for a polygon binning process for rendering
TWI319166B (en) * 2006-03-06 2010-01-01 Via Tech Inc Method and related apparatus for graphic processing
US8212840B2 (en) * 2006-10-23 2012-07-03 Qualcomm Incorporated 3-D clipping in a graphics processing unit
GB0801812D0 (en) * 2008-01-31 2008-03-05 Arm Noway As Methods of and apparatus for processing computer graphics
US8115783B2 (en) * 2008-01-31 2012-02-14 Arm Norway As Methods of and apparatus for processing computer graphics
US8933943B2 (en) * 2008-04-30 2015-01-13 Intel Corporation Technique for performing load balancing for parallel rendering
US8436854B2 (en) * 2009-05-29 2013-05-07 Qualcomm Incorporated Graphics processing unit with deferred vertex shading
US8505001B2 (en) * 2009-12-17 2013-08-06 Broadcom Corporation Method and system for utilizing data flow graphs to compile shaders
KR101699847B1 (ko) * 2010-12-21 2017-01-25 삼성전자주식회사 3차원 그래픽 렌더링을 위한 클리핑 장치 및 방법
US8988441B2 (en) * 2011-02-10 2015-03-24 Edward A. Hutchins Reconfigurable 3D graphics processor
GB2497762B (en) * 2011-12-20 2018-05-23 Advanced Risc Mach Ltd Intermediate value storage within a graphics processing apparatus
US9483861B2 (en) * 2013-03-15 2016-11-01 Qualcomm Incorporated Tile-based rendering
US10176621B2 (en) * 2013-06-10 2019-01-08 Sony Interactive Entertainment Inc. Using compute shaders as front end for vertex shaders

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040263534A1 (en) 2003-06-30 2004-12-30 Bimal Poddar Clipping and scissoring technique
US20060061596A1 (en) * 2004-09-17 2006-03-23 Yang Jiao Partial guardband clipping
GB2500284A (en) * 2012-09-12 2013-09-18 Imagination Tech Ltd Object list tile based computer graphics using modified primitives

Also Published As

Publication number Publication date
CN104933749B (zh) 2020-03-27
GB2521171A (en) 2015-06-17
GB2521171B (en) 2020-02-05
GB201321898D0 (en) 2014-01-22
KR20150068289A (ko) 2015-06-19
CN104933749A (zh) 2015-09-23
US9530241B2 (en) 2016-12-27
US20150161814A1 (en) 2015-06-11

Similar Documents

Publication Publication Date Title
KR102278147B1 (ko) 그래픽 프리미티브의 클립핑
KR102101626B1 (ko) 스크린 위치에 따라 달라지는 분해능을 가진 다수의 렌더 타겟을 위한 텍스처 매핑을 위한 그라디언트 조정
JP6333405B2 (ja) 曲面ビューポート上に頂点の投影を近似することによる、グラフィックス処理における画面位置に基づく有効解像度の変化
US20230088494A1 (en) Tessellating patches of surface data in tile based computer graphics rendering
US10032308B2 (en) Culling objects from a 3-D graphics pipeline using hierarchical Z buffers
US8928668B2 (en) Method and apparatus for rendering a stroked curve for display in a graphics processing system
US8115783B2 (en) Methods of and apparatus for processing computer graphics
US8743135B2 (en) Graphics processing systems
WO2008013605A1 (en) Real-time gpu rendering of piecewise algebraic surfaces
GB2463992A (en) Stroked curve rendering system
JP5512217B2 (ja) グラフィックス処理システム
US9401046B2 (en) Micropolygon splatting
US20140071124A1 (en) Image processing apparatus
KR20180071767A (ko) 큐브 맵을 텍스쳐링하기 위한 LOD(level of detail)를 결정하는 방법 및 장치
KR20170031479A (ko) 경로 스트로크를 수행하는 방법 및 장치
KR102477265B1 (ko) 그래픽스 프로세싱 장치 및 그래픽스 파이프라인의 텍스쳐링을 위한 LOD(level of detail)를 결정하는 방법
JP2009301284A (ja) 描画装置および方法
EP3319046B1 (en) Texture processing method and unit
Wu et al. Correct resolution rendering of trimmed spline surfaces
US20230081389A1 (en) Rendering scalable multicolored vector content
KR102276910B1 (ko) 테셀레이션 장치 및 방법

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
GRNT Written decision to grant