KR100721065B1 - 그래픽 오브젝트의 렌더링 방법 - Google Patents
그래픽 오브젝트의 렌더링 방법 Download PDFInfo
- Publication number
- KR100721065B1 KR100721065B1 KR1020050057114A KR20050057114A KR100721065B1 KR 100721065 B1 KR100721065 B1 KR 100721065B1 KR 1020050057114 A KR1020050057114 A KR 1020050057114A KR 20050057114 A KR20050057114 A KR 20050057114A KR 100721065 B1 KR100721065 B1 KR 100721065B1
- Authority
- KR
- South Korea
- Prior art keywords
- objects
- rendering
- list
- priority
- image
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/503—Blending, e.g. for anti-aliasing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/60—Editing figures and text; Combining figures or text
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/30—Clipping
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
- Record Information Processing For Printing (AREA)
- Crystals, And After-Treatments Of Crystals (AREA)
Abstract
오브젝트 기반 이미지를 렌더링하는 방법이 개시된다. 본 방법은 이미지(950) 내의 오브젝트들(951-955)의 리스트를 수신하며, 상기 리스트는 상기 오브젝트들을 최저 우선순위 오브젝트(951)로부터 최고 우선순위 오브젝트(955)까지의 우선순위 순서로 정렬한다. 상기 오브젝트들은 제1 세트의 오브젝트들(915, 952) 및/또는 제2 세트의 오브젝트들(953-955)에 할당된다. 상기 제1 세트의 오브젝트들은 한 오브젝트의 일부가 상기 제1 세트의 오브젝트들 내에 존재한다면 상기 일부만을 렌더링하는 제1 렌더링 방식을 이용하여 이미지 스토어에 렌더링되며, 상기 제2 세트의 오브젝트들은 각 오브젝트를 상기 제2 세트 내의 다른 오브젝트들과 독립적으로 렌더링하는 제2 렌더링 방식을 이용하여 상기 이미지 스토어에 렌더링된다. 상기 할당은 최고 우선순위의 콤포지팅 오브젝트(952)의 우선순위 순서에 기초할 수 있다. 한 그룹 내의 오브젝트(1105)가 콤포지팅을 요하는 경우, 상기 할당은 중첩되는 오브젝트들(1101, 1102, 1103, 1105)의 그룹에 기초할 수도 있다.
GDI, PSRM, XPSRM, PARM, IPARM
Description
도 1a는 불투명한 캐릭터 'O' 위에 반투명한 사각형이 존재하는 이미지의 일례를 도시한 도면.
도 1b는 도 1a의 오브젝트의 에지들을 도시한 도면.
도 1c는 도 1a의 예에서의 에지 리스트를 개략적으로 도시한 블록도.
도 2는 메인 에지 리스트 중 액티브 에지들을 결정하기 위한 방법과 이 액티브 에지들의 세트가 렌더링될 주사선의 수를 결정하기 위한 방법의 흐름도.
도 3a는 도 2의 메쏘드 스텝들에 의해 산출된 액티브 에지들로부터 주사선을 렌더링하기 위한 방법의 흐름도.
도 3b는 도 2의 메쏘드 스텝들에 의해 산출된 액티브 에지들로부터 주사선을 렌더링하기 위한 또 다른 방법의 흐름도.
도 4는 픽셀 순차(pixel sequential) 렌더링 방식에서 픽셀 런(pixel run)에 기여하는 오브젝트들을 결정하기 위한 방법의 흐름도.
도 5a는 바운딩 박스(bounding box)에 의해 중첩되는 2개의 오브젝트의 일례를 도시한 도면.
도 5b는 바운딩 박스에 의해 중첩되지 않는 2개의 오브젝트를 도시한 도면.
도 6a는 2개의 삼각형 클립이 사각형을 클리핑하고 있는 이미지의 일례를 도 시한 도면.
도 6b는 도 6a의 사각형과 클립들을 렌더링한 결과를 도시한 도면.
도 6c는 도 6a의 오브젝트들의 에지들을 도시한 도면.
도 6d는 도 6a의 오브젝트들에 대한 메모리 내의 디스플레이 리스트의 개략적 표현을 도시한 도면.
도 7은 픽셀 순차 렌더링 방식에서, 클립을 고려하여, 오브젝트를 활성화 또는 비활성화할지를 결정하기 위한 방법의 흐름도.
도 8은 개선된 페인터스 알고리즘 렌더링 방식(PARM; Painter's Algorithm render method)에서, 픽셀 런에 기여하는 오브젝트들을 결정하기 위한 방법의 흐름도.
도 9a 및 도 9b는 제2 및 제3 구성에서의 디스플레이 리스트 생성 시 오브젝트 리스트가 어떻게 구성되는지를 설명하는 방법의 흐름도.
도 10a는 한 페이지에 5개의 오브젝트를 갖는 이미지를 도시한 도면.
도 10b, 도 10c 및 도 10d는 도 10a의 오브젝트들이 어떻게 3개의 렌더링 태스크로 렌더링되는지를 도시한 도면.
도 10e는 도 10a의 페이지를 2개의 밴드로 렌더링한 것을 도시한 도면.
도 11a는 한 페이지의 오브젝트들을 개략적으로 표현한 것을 도시한 도면.
도 11b는 도 11a의 오브젝트를 배타적 픽셀 순차 렌더링 방식(XPSRM; Exclusive Pixel Sequential Render Method)을 이용하여 렌더링한 것을 도시한 도면.
도 11c는 주사선(S)의 근방에 존재하는 도 11a의 오브젝트들의 에지들을 도시한 도면.
도 12는 오브젝트들을 활성화하기 위한 방법의 흐름도로서, XPSRM에서, 오브젝트가 활성화된 경우 액티브 오브젝트 리스트의 ExclusiveCount 멤버가 어떻게 증가하고, 오브젝트가 비활성화된 경우 액티브 오브젝트 리스트의 ExclusiveCount 멤버가 어떻게 감소하는지를 도시한 흐름도.
도 13은 XPSRM에서 픽셀 런에 기여하는 오브젝트들을 결정하기 위한 방법의 흐름도.
도 14는 픽셀 순차 렌더링 방식(PSRM) 및 페인터스 알고리즘 렌더링 방식(PARM)을 이용하는 제1 렌더링 구성의 흐름도.
도 15는 본 발명의 렌더링 구성이 구현될 수 있는 렌더링 절차(pipeline)을 개략적으로 도시한 블록도.
도 16은 픽셀 순차 렌더링 방식(PSRM) 및 개선된 페인터스 알고리즘 렌더링 방식(IPARM)을 이용하는 제2 렌더링 구성의 흐름도.
도 17은 배타적 픽셀 순차 렌더링 방식(XPSRM) 및 개선된 페인터스 알고리즘 렌더링 방식(IPARM)을 이용하는 제3 렌더링 구성의 흐름도.
도 18은 렌더링 구성을 탑재한 컴퓨터 시스템을 개략적으로 도시한 블록도.
<도면의 주요 부분에 대한 도면의 설명>
1503: 오퍼레이팅 시스템의 그래픽 장치 인터페이스
1505: 그래픽 렌더링 시스템
1507: 디스플레이 리스트 생성 모듈
1509: 디스플레이 리스트
1511: 렌더링 모듈
1513: 타겟 장치
본 발명은 전반적으로 오브젝트 기반 이미지의 렌더링에 관한 것이다. 특히, 본 발명은 복수의 렌더링 기법을 이용한 그래픽 오브젝트의 렌더링 방법에 관한 것이다.
컴퓨터 애플리케이션이 인쇄 및/또는 디스플레이를 위해 장치에 데이터를 제공할 때, 그 페이지에 대한 중간 설명(intermediate description)이 장치 드라이버 소프트웨어에게 페이지 기술 언어(PDL)로 제공되는데, 이 페이지 기술 언어는 그 페이지 또는 디스플레이에 렌더링되는 그래픽 오브젝트들에 대한 설명을 제공한다. 이것은 래스터(raster) 이미지 데이터를 애플리케이션에 의해 직접 생성하여 인쇄 또는 디스플레이를 위해 전송하는 일부 구성과는 대조된다. 페이지 기술 언어의 예로는 캐논사의 LIPS™ 및 HP사의 PCL™을 포함한다.
마찬가지로, 애플리케이션은 그래픽 오브젝트들에 대한 한 세트의 설명을 펑션콜(function call)의 형태로 마이크로소프트(TM) 윈도우즈 GDI와 같은 그래픽 장치 인터페이스층에 제공할 수 있다. 연관된 타겟 프린터의 프린터 드라이버는 GDI 층으로부터 그래픽 오브젝트 설명을 수신하는 소프트웨어이다. 각 오브젝트에 대해, 프린터 드라이버는 그 오브젝트에 대한 설명을 타겟 프린터의 렌더링 시스템에 의해 이해되는 페이지 기술 언어로 생성하는 일을 담당한다.
프린터의 렌더링 시스템은 그래픽 오브젝트 설명을 파싱(parse)하며 그래픽 오브젝트 데이터의 디스플레이 리스트를 구축하는 PDL 해석기를 구비한다. 렌더링 시스템은 또한 이 디스플레이 리스트를 처리하며 그 데이터를 예컨대 C, M, Y 및 K 채널을 구비하는 픽셀 값들로 렌더링하는 래스터 이미지 프로세서(RIP; raster image processor)를 구비한다. 일단 이러한 포맷으로 되면, 프린터는 그 페이지를 인쇄한다.
대부분의 래스터 이미지 프로세서(RIP)는 다음의 인쇄 및/또는 디스플레이를 위해 그 페이지 또는 화면에 대한 픽셀 기반 이미지 데이터 표현을 유지하기 위하여, 본 기술분야에 프레임스토어(framestore) 또는 페이지 버퍼(page buffer)로 공지되어 있는 대량의 메모리를 이용한다. 일반적으로, 그래픽 오브젝트들은 그 아웃라인을 산출하여 컬러값으로 채운 다음 프레임스토어에 기록된다. 2차원의 그래픽의 경우, 다른 오브젝트들의 앞에 나타나는 오브젝트들은 프레임스토어에 기록될 때 백그라운드(background) 오브젝트들의 다음에 기록됨으로써, 백그라운드 오브젝트들을 픽셀 단위로 대체하게 된다. 이것은 본 기술분야에서 흔히 "페인터스 알고리즘"(Painter's algorithm)으로 알려져 있다. 오브젝트들은 최후방의 오브젝트로부터 최전방의 오브젝트까지의 우선순위 순서로 고려된다. 일반적으로, 각 오브젝트는 주사선 순서로 래스터화되며, 픽셀들은 각 주사선을 따른 순차적인 열(sequential run)로 프레임스토어에 기록된다. 어떤 래스터 이미지 프로세서는 오브젝트들을 다른 오브젝트들과 콤포지팅하는 것을 허용하기도 한다. 예를 들어, 프레임스토어 내에 이미 렌더링되어 있는 하나 이상의 그래픽 오브젝트들과 픽셀들 사이에 논리 또는 산술 연산을 지정하여 수행할 수 있다. 이 경우, 렌더링 규칙에는 변함이 없다: 즉, 오브젝트들(또는 오브젝트들의 그룹들)은 주사선 순서로 래스터화되며, 지정된 연산의 결과가 산출되어 각 주사선을 따라 순차적인 열로 프레임스토어에 기록된다.
페인터스 알고리즘 렌더링 방식에는 많은 문제점이 있다.
한가지 문제점은 오브젝트를 렌더링하여 프레임스토어에 기록된 많은 픽셀들이 다음의 오브젝트들을 렌더링하는 경우 오버라이트된다는 것이다. 픽셀 데이터를 프레임스토어에 기록하기 위해 리소스를 이용하지만 그것이 다음의 단계에서 오버라이트되어 버린다는 점에서 명백한 불이익이 있다.
또 다른 문제점은 오브젝트가 콤포지팅을 요하는 경우, 그 오브젝트 아래의 픽셀들은 일반적으로 프레임스토어로부터 판독된 다음 그 오브젝트의 픽셀들과 어떠한 방식으로 결합된다는 것이다. 프레임스토어 내의 픽셀들이 콤포지팅을 요하는 오브젝트보다 낮은 비트 깊이(bit-depth)로 저장된다면, 대부분의 콤포지팅 연산은 부정확한 결과를 가져올 것이다. 이러한 경우는, 그래픽 오브젝트가 예를 들어 채널당 8비트의 RGBA 비트맵이고 프레임스토어가 채널당 1비트의 하프톤 픽셀 데이터(half-toned pixel data)를 보유하고 있는 경우에 해당된다. 이것은 프레임스토어에 저장되는 픽셀 값들이 인쇄에 필요한 비트 깊이로 저장되기 때문에 발생된다. 픽셀들을 최고(full)인 채널당 8비트로 저장하는 것이 가능하지만, 600dpi 분해능에서의 채널당 8비트의 RGBA 프레임스토어는 A4 페이지당 100MB가 넘는 메모리를 필요로 한다. 또한, 일단 페이지가 채널당 8비트의 프레임스토어에 렌더링되더라도, 인쇄를 위해 이것을 보다 낮은 비트 깊이로 변환해야 하므로 비효율적이다.
다른 래스터 이미지 프로세서는 픽셀 순차 렌더링 방식을 이용함으로써 프레임스토어의 필요성을 제거하고 오버페인팅(over-painting)의 문제점을 극복하고 있다. 이러한 시스템에서는, 각 픽셀이 래스터 순서로 생성된다. 묘화될 모든 오브젝트들은 디스플레이 리스트에 보관된다. 각 주사선에서 그 주사선과 교차하는 오브젝트들의 에지들이 그 주사선과의 교점(intersection)이 증가하는 순서로 보유된다. 이들 교점의 위치 또는 에지 크로싱(edge crossing)들은 차례대로 고려되며 디스플레이 리스트 내의 오브젝트들을 활성화 또는 비활성화시킨다. 해당 픽셀들의 기간(span)(즉, 픽셀 런) 중 불투명한(opaque) 오브젝트들에 의해 흐려지지 않는 오브젝트들에 기초하여, 고려되는 각 쌍의 에지들 사이에서, 첫번째 에지와 두번째 에지 사이에 존재하는 각 픽셀에 대한 컬러 데이터가 생성된다. 다음 주사선을 준비함에 있어서, 각 에지의 교점의 좌표가 각 에지의 성질(nature)에 따라 갱신되며, 에지들은 그 주사선과의 교점이 증가하는 순서로 저장된다. 새로운 에지가 있다면 에지들의 리스트에 병합(merge)되며, 이것을 액티브 에지 리스트라고 한다. 본 명세서에서, 픽셀 런 내의 오브젝트들 중 불투명한 오브젝트들에 의해 흐려지지 않는 오브젝트들만을 렌더링하는 렌더링 방식을 "픽셀 순차 렌더링 방식"이라고 한다.
이러한 픽셀 순차 렌더링을 이용하는 그래픽 시스템은 프레임스토어 또는 라인스토어를 구비하지 않고 불필요한 오버페인팅이 존재하지 않는다는 점에서 상당한 이점을 갖는다. 콤포지팅을 요하는 오브젝트들은 각 오브젝트의 원래의 컬러 데이터를 이용하여 픽셀 단위로 처리된다.
픽셀 순차 렌더링은 각 주사선마다 x의 오름차순으로 정렬(sort)된 순서로 유지하고 트랙킹해야 하는 에지들의 수가 많은 경우에는 문제가 될 수 있다. 각 에지가 주사선 내에서 갱신됨에 따라, 에지들은 액티브 에지 리스트에 통상 삽입 정렬에 의해 재삽입된다. 복잡한 페이지들에는 수십만개의 에지가 존재할 수 있는데, 각 주사선마다 정렬된 에지 리스트를 유지하는데 필요한 시간이 복잡한 페이지를 렌더링하는 총 시간의 대부분을 차지하게 된다.
본 발명의 목적은 기존의 구성에서의 하나 이상의 불이익을 실질적으로 극복 또는 적어도 완화하는 것이다.
본 발명의 일 태양에 따르면, 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하는 방법으로서,
상기 리스트 내의 오브젝트들을 제1 세트의 오브젝트들과 제2 세트의 오브젝트들 중 적어도 하나에 할당하는 단계;
상기 제1 세트의 오브젝트들을 제1 렌더링 방식을 이용하여 이미지 스토어에 렌더링하는 단계 - 상기 제1 렌더링 방식은 상기 제1 세트의 오브젝트의 일부가 상기 제1 세트의 오브젝트들의 렌더링된 출력에 기여하는지의 여부를 판정하며, 만약 기여한다면, 상기 제1 렌더링 방식은 상기 일부를 렌더링함 -; 및
상기 제2 세트의 오브젝트들을 제2 렌더링 방식을 이용하여 상기 이미지 스토어에 렌더링하는 단계 - 상기 제2 렌더링 방식은 상기 제2 세트 내의 각 오브젝트를 상기 제2 세트 내의 다른 오브젝트들과 독립적으로 렌더링함 -
를 포함하는 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하는 방법이 제공된다.
본 발명의 또 다른 태양에 따르면, 오브젝트 기반 이미지를 렌더링하는 방법으로서,
상기 이미지의 오브젝트들을 최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 리스트화하는 디스플레이 리스트를 수신하는 단계 - 상기 디스플레이 리스트는 콤포지팅을 요하는 최고 우선순위 오브젝트인 최종 콤포지팅 오브젝트를 가짐 -;
상기 디스플레이 리스트 내의 오브젝트들 중 상기 최저 우선순위 오브젝트로부터 상기 최종 콤포지팅 오브젝트까지의 오브젝트들에 대해 수행되는 제1 렌더링 태스크를 처리하는 단계; 및
상기 디스플레이 리스트 내의 오브젝트들 중 상기 최종 콤포지팅 오브젝트보다 우선순위가 높은 하나 이상의 오브젝트들에 대해 수행되는 적어도 하나의 제2 렌더링 태스크를 처리하는 단계
를 포함하며,
상기 제1 렌더링 태스크는 오브젝트의 일부가 상기 제1 렌더링 태스크에 의해 처리되는 상기 오브젝트들의 렌더링된 출력에 기여하는지의 여부를 판정하며, 만약 기여한다면, 상기 일부를 렌더링하며,
상기 제2 렌더링 태스크는 오브젝트들을 상기 제2 렌더링 태스크에 의해 처리되는 다른 오브젝트들과 독립적으로 이미지 스토어에 렌더링하는 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하는 방법이 제공된다.
본 발명의 또 다른 태양에 따르면, 그래픽 오브젝트들로서 표현되는 데이터에 의해 기술된 이미지를 형성하는 방법으로서,
(a) 상기 이미지를 기술하는 오브젝트들의 리스트를 수신하는 단계 - 상기 오브젝트들은 최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 정렬됨 -; 및
(b) 상기 리스트 내의 오브젝트들을 우선순위가 증가하는 순서로 고려하는 단계
를 포함하며,
현재 고려되는 각각의 오브젝트에 대해:
(ba) 상기 현재 고려되는 오브젝트가 콤포지팅을 요하지 않는다면 상기 현재 고려되는 오브젝트를 제1 렌더링 방식을 이용하여 이미지 스토어에 렌더링하는 단계; 및
(bb) 상기 현재 고려되는 오브젝트가 콤포지팅을 요한다면 하기의 단계를 수행하는 단계;
(bb)(i) 상기 리스트 내의 오브젝트들 중 상기 현재 고려되는 오브젝트보다 우선순위가 낮으며 상기 현재 고려되는 오브젝트의 바운딩 박스와 중첩되는 바운딩 박스를 갖는 오브젝트들을 결정하는 단계; 및
(bb)(ii) 상기 현재 고려되는 오브젝트 및 상기 결정된 오브젝트들을 제2 렌더링 방식을 이용하여 렌더링하는 단계 - 상기 제2 렌더링 방식은 오브젝트의 일부가 상기 제2 렌더링 방식에 의해 처리되는 한 세트의 오브젝트들의 렌더링된 출력에 기여하는지의 여부를 판정하며, 만약 기여한다면, 상기 제2 렌더링 방식은 상기 일부를 렌더링함 -
을 포함하는 그래픽 오브젝트들로서 표현되는 데이터에 의해 기술된 이미지를 형성하는 방법이 제공된다.
본 발명의 또 다른 태양에 따르면, 오브젝트 기반 이미지를 렌더링하는 방법으로서,
(a) 상기 이미지 내의 오브젝트들을 최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 리스트화하는 디스플레이 리스트를 수신하는 단계;
(b) 상기 디스플레이 리스트 내의 오브젝트들을 적어도 하나의 미리 정해진 기준에 따라서 제1 세트의 오브젝트들 및 제2 세트의 오브젝트들 중 적어도 하나에 할당하는 단계;
(c) 상기 제1 세트의 오브젝트들 내의 오브젝트들을 제1 렌더링 방식을 이용하여 렌더링하는 단계; 및
(d) 상기 제2 세트의 오브젝트들 내의 오브젝트들을 제2 렌더링 방식을 이용 하여 렌더링하는 단계
를 포함하며,
상기 제1 렌더링 방식은, 렌더링되는 연속한 픽셀들의 런 각각에 대해:
(ca) 상기 제1 세트의 오브젝트들 중 상기 픽셀들의 런에 대해 액티브인 오브젝트들을 결정하는 단계;
(cb) 상기 결정된 액티브 오브젝트들 중 최고 우선순위인 불투명 오브젝트를 식별하는 단계; 및
(cc) 상기 최고 우선순위인 불투명 오브젝트, 및 상기 최고 우선순위 불투명 오브젝트보다 우선순위가 높은 불투명이 아닌 액티브 오브젝트들을 렌더링하는 단계
를 포함하며,
상기 제2 렌더링 방식은, 렌더링되는 연속한 픽셀들의 런 각각에 대해:
(da) 상기 제2 세트의 오브젝트들 중 현재의 오브젝트가 액티브인지의 여부를 체크하는 단계 - 상기 제2 세트는 우선순위가 증가하는 순서로 고려됨 -; 및
(db) 상기 현재의 오브젝트가 액티브이라면 상기 현재의 오브젝트를 상기 이미지 스토어에 렌더링하는 단계
를 포함하는 오브젝트 기반 이미지를 렌더링하는 방법이 제공된다.
본 발명의 또 다른 태양에 따르면, 오브젝트 기반 이미지를 렌더링하는 방법으로서,
최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서 로 된, 상기 이미지 내의 오브젝트들의 리스트를 수신하는 단계;
상기 리스트 내의 오브젝트들을 적어도 한 세트의 오브젝트들에 할당하는 단계 - 상기 세트 내의 오브젝트들은 상기 리스트 내에서 연속적인 우선순위 순서를 가지며, 상기 세트 내의 각각의 오브젝트는 상기 세트 내의 다른 오브젝트와는 중첩되지 않음 -; 및
상기 적어도 한 세트의 오브젝트들을 이미지 스토어에 렌더링하는 단계
를 포함하는 오브젝트 기반 이미지를 렌더링하는 방법이 제공된다.
본 발명의 또 다른 태양에 따르면, 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하는 방법으로서,
상기 리스트 내의 오브젝트들을 제1 세트의 오브젝트들 및 제2 세트의 오브젝트들 중 적어도 하나에 할당하는 단계;
상기 제1 세트 내의 오브젝트들을 픽셀 순차(pixel sequential) 렌더링 방식을 이용하여 렌더링하는 단계; 및
상기 제2 세트 내의 오브젝트들을 페인터스 알고리즘(Painter's algorithm) 렌더링 방식을 이용하여 렌더링하는 단계
를 포함하는 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하는 방법이 제공된다.
본 발명의 또 다른 태양에 따르면, 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하기 위한 장치로서,
오브젝트들을 제1 렌더링 방식을 이용하여 이미지 스토어에 렌더링하기 위한 제1 수단 - 상기 제1 렌더링 방식은, 오브젝트의 일부가 상기 제1 수단에 의해 처리되는 한 세트의 오브젝트들의 렌더링된 출력에 기여하는지의 여부를 판정하며, 만약 기여한다면, 상기 제1 수단은 상기 일부를 렌더링함 -;
오브젝트들을 제2 렌더링 방식을 이용하여 상기 이미지 스토어에 렌더링하기 위한 제2 수단 - 상기 제2 렌더링 방식은, 상기 제2 수단에 의해 수신되는 각각의 오브젝트를 상기 제2 수단에 의해 수신되는 다른 오브젝트들과 독립적으로 렌더링함 -; 및
상기 리스트 내의 그래픽 오브젝트들을 상기 제1 수단 및 상기 제2 수단 중 적어도 하나에 할당하기 위한 수단
을 포함하는 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하기 위한 장치가 제공된다.
본 발명의 또 다른 태양에 따르면, 오브젝트 기반 이미지를 렌더링하기 위한 장치로서,
오브젝트들을 제1 렌더링 방식을 이용하여 이미지 스토어에 렌더링하기 위한 제1 수단 - 상기 제1 렌더링 방식은, 오브젝트의 일부가 상기 제1 수단에 의해 처리되는 한 세트의 오브젝트들의 렌더링된 출력에 기여하는지의 여부를 판정하며, 만약 기여한다면, 상기 제1 수단은 상기 일부를 렌더링함 -;
오브젝트들을 제2 렌더링 방식을 이용하여 상기 이미지 스토어에 렌더링하기 위한 제2 수단 - 상기 제2 렌더링 방식은, 상기 제2 수단에 의해 수신되는 각각의 오브젝트를 상기 제2 수단에 의해 수신되는 다른 오브젝트들과 독립적으로 렌더링 함 -;
상기 이미지 내의 오브젝트들의 리스트를 수신하기 위한 수단 - 상기 리스트 내의 오브젝트들은 최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 정렬되며, 상기 리스트는 콤포지팅을 요하는 최고 우선순위 오브젝트인 최종 콤포지팅 오브젝트를 구비함 -; 및
오브젝트들을 상기 제1 렌더링 수단 및 상기 제2 렌더링 수단에 할당하기 위한 수단 - 상기 할당 수단은, 상기 최저 우선순위 오브젝트로부터 상기 최종 콤포지팅 오브젝트까지의 상기 리스트의 제1 부분을 상기 제1 렌더링 수단에 할당하며, 상기 최종 콤포지팅 오브젝트보다 우선순위가 높은 하나 이상의 오브젝트들을 상기 제2 렌더링 수단에 할당함 -
을 포함하는 오브젝트 기반 이미지를 렌더링하기 위한 장치가 제공된다.
본 발명의 또 다른 태양에 따르면, 오브젝트 기반 이미지를 렌더링하기 위한 장치로서,
오브젝트들을 제1 렌더링 방식을 이용하여 이미지 스토어에 렌더링하기 위한 제1 수단 - 상기 제1 렌더링 방식은, 오브젝트의 일부가 상기 제1 수단에 의해 처리되는 한 세트의 오브젝트들의 렌더링된 출력에 기여하는지의 여부를 판정하며, 만약 기여한다면, 상기 제1 수단은 상기 일부를 렌더링함 -;
오브젝트들을 제2 렌더링 방식을 이용하여 렌더링하기 위한 제2 수단 - 상기 제2 렌더링 방식은, 상기 제2 수단에 의해 수신되는 각각의 오브젝트를 수신되는 다른 오브젝트들과 독립적으로 상기 이미지 스토어에 렌더링함 -;
상기 이미지 내의 오브젝트들의 리스트를 수신하기 위한 수단 - 상기 오브젝트들은 최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 정렬됨 -;
콤포지팅을 요하는 오브젝트에 대하여, 상기 리스트 내의 오브젝트들 중 상기 콤포지팅 오브젝트보다 우선순위가 낮고 상기 콤포지팅 오브젝트의 바운딩 박스와 중첩되는 바운딩 박스를 갖는 오브젝트들을 결정하기 위한 수단;
상기 리스트로부터 비콤포지팅(non-compositing) 오브젝트들을 상기 제2 렌더링 수단에 할당하기 위한 수단; 및
상기 리스트로부터 콤포지팅 오브젝트들을, 상기 각각의 콤포지팅 오브젝트에 대해 상기 결정 수단에 의해 결정된 오브젝트들과 함께, 상기 제1 렌더링 수단에 할당하기 위한 수단
을 포함하는 오브젝트 기반 이미지를 렌더링하기 위한 장치가 제공된다.
본 발명의 또 다른 태양에 따르면, 오브젝트 기반 이미지를 렌더링하기 위한 장치로서,
최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 된, 상기 이미지 내의 오브젝트들의 리스트를 수신하기 위한 수단;
상기 리스트 내의 오브젝트들을 적어도 한 세트의 오브젝트들에 할당하기 위한 수단 - 상기 세트 내의 오브젝트들은 상기 리스트 내에서 연속적인 우선순위 순서를 가지며, 상기 세트 내의 각각의 오브젝트는 상기 세트 내의 다른 오브젝트와는 중첩되지 않음 -; 및
상기 적어도 한 세트의 오브젝트들을 이미지 스토어에 렌더링하기 위한 수단
을 포함하는 오브젝트 기반 이미지를 렌더링하기 위한 장치가 제공된다.
본 발명의 또 다른 태양에 따르면, 오브젝트 기반 이미지를 렌더링하기 위한 시스템으로서,
오브젝트들을 제1 렌더링 방식을 이용하여 이미지 스토어에 렌더링하는 한 또는 그 이상의 제1 렌더링기 - 상기 제1 렌더링 방식은, 오브젝트의 일부가 상기 제1 렌더링 방식에 의해 처리되는 한 세트의 오브젝트들의 렌더링된 출력에 기여하는지의 여부를 판정하며, 만약 기여한다면, 상기 제1 렌더링 방식은 상기 일부를 렌더링함 -;
오브젝트들을 제2 렌더링 방식을 이용하여 렌더링하는 하나 이상의 제2 렌더링기 - 상기 제2 렌더링 방식은, 상기 제2 렌더링기에 의해 수신되는 각각의 오브젝트를 수신되는 다른 오브젝트들과 독립적으로 상기 이미지 스토어에 렌더링함 -;
상기 이미지에 대한 오브젝트들의 리스트를 생성하는 디스플레이 리스트 생성기 - 상기 리스트 내의 오브젝트들은 최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 정렬되며, 상기 리스트는 콤포지팅을 요하는 최고 우선순위 오브젝트인 최종 콤포지팅 오브젝트를 구비함 -;
상기 디스플레이 리스트 생성기에 의해 생성된 리스트를 저장하는 디스플레이 리스트 스토어; 및
상기 디스플레이 리스트 스토어 및 상기 제1 및 제2 렌더링기들과 통신하는 프로세서 - 상기 프로세서는, 상기 최저 우선순위 오브젝트로부터 상기 최종 콤포지팅 오브젝트까지의 오브젝트들을 상기 제1 렌더링기에 할당하도록 프로그램되며, 상기 최종 콤포지팅 오브젝트보다 우선순위가 높은 오브젝트들을 하나 이상의 제2 렌더링기에 할당하도록 프로그램됨 -
을 포함하는 오브젝트 기반 이미지를 렌더링하기 위한 시스템이 제공된다.
본 발명의 또 다른 태양에 따르면, 오브젝트 기반 이미지를 렌더링하기 위한 시스템으로서,
오브젝트들을 제1 렌더링 방식을 이용하여 이미지 스토어에 렌더링하는 한 또는 그 이상의 제1 렌더링기 - 상기 제1 렌더링 방식은, 오브젝트의 일부가 상기 제1 렌더링 방식에 의해 처리되는 한 세트의 오브젝트들의 렌더링된 출력에 기여하는지의 여부를 판정하며, 만약 기여한다면, 상기 제1 렌더링 방식은 상기 일부를 렌더링함 -;
오브젝트들을 제2 렌더링 방식을 이용하여 렌더링하는 하나 이상의 제2 렌더링기 - 상기 제2 렌더링 방식은, 상기 제2 렌더링기에 의해 수신되는 각각의 오브젝트를 수신되는 다른 오브젝트들과 독립적으로 상기 이미지 스토어에 렌더링함 -;
상기 이미지 내의 오브젝트들의 리스트를 생성하는 디스플레이 리스트 생성기 - 상기 리스트 내의 오브젝트들은 최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 정렬됨 -;
상기 디스플레이 리스트 생성기에 의해 생성된 리스트를 저장하는 디스플레이 리스트 스토어; 및
상기 디스플레이 리스트 스토어 및 상기 제1 및 제2 렌더링기들과 통신하는 프로세서
를 포함하며,
상기 프로세서는,
(i) 상기 리스트 내의 오브젝트들을 우선순위가 증가하는 순서로 고려하는 하위 단계와;
현재 고려되는 각각의 오브젝트에 대해:
(ii) 상기 현재의 오브젝트가 콤포지팅을 요하지 않는다면, 상기 현재의 오브젝트를 상기 제2 렌더링기에 할당하는 단계와;
(iii) 상기 현재의 오브젝트가 콤포지팅을 요한다면, 상기 리스트 내의 오브젝트들 중 상기 현재 고려되는 오브젝트보다 우선순위가 낮고 상기 현재 고려되는 오브젝트의 바운딩 박스와 중첩되는 바운딩 박스를 갖는 오브젝트들을 결정하여, 상기 현재 고려되는 오브젝트 및 상기 결정된 오브젝트들을 상기 제1 렌더링기에 할당하는 단계
를 포함하는 오브젝트 기반 이미지를 렌더링하기 위한 시스템이 제공된다.
본 발명의 또 다른 태양에 따르면, 오브젝트 기반 이미지를 렌더링하는 방법을 수행하기 위한 프로그램 코드가 실행되는 데이터 처리 장치의 동작을 제어하기 위한 머신 판독가능 프로그램 코드가 머신 판독가능 기억 매체에 기록되어 있는 컴 퓨터 프로그램 제품으로서,
상기 방법은:
상기 리스트 내의 오브젝트들을 제1 세트의 오브젝트들과 제2 세트의 오브젝트들 중 적어도 하나에 할당하는 단계;
상기 제1 세트의 오브젝트들을 제1 렌더링 방식을 이용하여 이미지 스토어에 렌더링하는 단계 - 상기 제1 렌더링 방식은 상기 제1 세트의 오브젝트의 일부가 상기 제1 세트의 오브젝트들의 렌더링된 출력에 기여하는지의 여부를 판정하며, 만약 기여한다면, 상기 제1 렌더링 방식은 상기 일부를 렌더링함 -; 및
상기 제2 세트의 오브젝트들을 제2 렌더링 방식을 이용하여 상기 이미지 스토어에 렌더링하는 단계 - 상기 제2 렌더링 방식은 상기 제2 세트 내의 각 오브젝트를 상기 제2 세트 내의 다른 오브젝트들과 독립적으로 렌더링함 -
를 포함하는 컴퓨터 프로그램 제품이 제공된다.
본 발명의 또 다른 태양에 따르면, 오브젝트 기반 이미지를 렌더링하는 방법을 수행하기 위한 프로그램 코드가 실행되는 데이터 처리 장치의 동작을 제어하기 위한 머신 판독가능 프로그램 코드가 머신 판독가능 기억 매체에 기록되어 있는 컴퓨터 프로그램 제품으로서,
상기 방법은:
상기 이미지의 오브젝트들을 최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 리스트화하는 디스플레이 리스트를 수신하는 단계 - 상기 디스플레이 리스트는 콤포지팅을 요하는 최고 우선순위 오브젝트인 최종 콤 포지팅 오브젝트를 가짐 -;
제1 렌더링 방식을 이용하여 제1 렌더링 태스크를 렌더링하는 단계 - 상기 제1 렌더링 태스크는 상기 디스플레이 리스트 내의 오브젝트들 중 상기 최저 우선순위 오브젝트로부터 상기 최종 콤포지팅 오브젝트까지의 오브젝트들을 포함함 - ; 및
제2 렌더링 방식을 이용하여 하나 이상의 제2 렌더링 태스크를 렌더링하는 단계 - 상기 제2 렌더링 태스크는 상기 디스플레이 리스트 내의 오브젝트들 중 상기 최종 콤포지팅 오브젝트보다 우선순위가 높은 하나 이상의 오브젝트들을 포함함 -
를 포함하며,
상기 제1 렌더링 방식은 오브젝트의 일부가 상기 제1 렌더링 태스크의 렌더링된 출력에 기여하는지의 여부를 판정하며, 만약 기여한다면, 상기 일부를 렌더링하며,
상기 제2 렌더링 방식은 상기 제2 렌더링 방식은 상기 제2 렌더링 태스크의 각 오브젝트를 상기 제2 렌더링 태스크의 다른 오브젝트들과 독립적으로 이미지 스토어에 렌더링하는 컴퓨터 프로그램 제품이 제공된다.
본 발명의 또 다른 태양에 따르면, 오브젝트 기반 이미지를 렌더링하는 방법을 수행하기 위한 프로그램 코드가 실행되는 데이터 처리 장치의 동작을 제어하기 위한 머신 판독가능 프로그램 코드가 머신 판독가능 기억 매체에 기록되어 있는 컴퓨터 프로그램 제품으로서,
상기 방법은:
(a) 상기 이미지를 기술하는 오브젝트들의 리스트를 수신하는 단계 - 상기 오브젝트들은 최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 정렬됨 -; 및
(b) 상기 리스트 내의 오브젝트들을 우선순위가 증가하는 순서로 고려하는 단계
를 포함하며,
현재 고려되는 각각의 오브젝트에 대해:
(ba) 상기 현재 고려되는 오브젝트가 콤포지팅을 요하지 않는다면 상기 현재 고려되는 오브젝트를 제1 렌더링 방식을 이용하여 이미지 스토어에 렌더링하는 단계; 및
(bb) 상기 현재 고려되는 오브젝트가 콤포지팅을 요한다면 하기의 단계를 수행하는 단계;
(bb)(i) 상기 리스트 내의 오브젝트들 중 상기 현재 고려되는 오브젝트보다 우선순위가 낮으며 상기 현재 고려되는 오브젝트의 바운딩 박스와 중첩되는 바운딩 박스를 갖는 오브젝트들을 결정하는 단계; 및
(bb)(ii) 상기 현재 고려되는 오브젝트 및 상기 결정된 오브젝트들을 제2 렌더링 방식을 이용하여 렌더링하는 단계 - 상기 제2 렌더링 방식은 오브젝트의 일부가 상기 제2 렌더링 방식에 의해 처리되는 한 세트의 오브젝트들의 렌더링된 출력에 기여하는지의 여부를 판정하며, 만약 기여한다면, 상기 제2 렌더링 방식은 상기 일부를 렌더링함 -
를 포함하는 컴퓨터 프로그램 제품이 제공된다.
본 발명의 또 다른 태양에 따르면, 오브젝트 기반 이미지를 렌더링하는 방법을 수행하기 위한 프로그램 코드가 실행되는 데이터 처리 장치의 동작을 제어하기 위한 머신 판독가능 프로그램 코드가 머신 판독가능 기억 매체에 기록되어 있는 컴퓨터 프로그램 제품으로서,
상기 방법은:
최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 된, 상기 이미지 내의 오브젝트들의 리스트를 수신하는 단계;
상기 리스트 내의 오브젝트들을 적어도 한 세트의 오브젝트들에 할당하는 단계 - 상기 세트 내의 오브젝트들은 상기 리스트 내에서 연속적인 우선순위 순서를 가지며, 상기 세트 내의 각각의 오브젝트는 상기 세트 내의 다른 오브젝트와는 중첩되지 않음 -; 및
상기 적어도 한 세트의 오브젝트들을 이미지 스토어에 렌더링하는 단계
를 포함하는 컴퓨터 프로그램 제품이 제공된다.
본 발명의 또 다른 태양에 따르면, 오브젝트 기반 이미지를 렌더링하는 방법을 수행하기 위한 프로그램 코드가 실행되는 데이터 처리 장치의 동작을 제어하기 위한 머신 판독가능 프로그램 코드를 구비한 컴퓨터 프로그램으로서,
상기 방법은:
상기 리스트 내의 오브젝트들을 제1 세트의 오브젝트들과 제2 세트의 오브젝트들 중 적어도 하나에 할당하는 단계;
상기 제1 세트의 오브젝트들을 제1 렌더링 방식을 이용하여 이미지 스토어에 렌더링하는 단계 - 상기 제1 렌더링 방식은 상기 제1 세트의 오브젝트의 일부가 상기 제1 세트의 오브젝트들의 렌더링된 출력에 기여하는지의 여부를 판정하며, 만약 기여한다면, 상기 제1 렌더링 방식은 상기 일부를 렌더링함 -; 및
상기 제2 세트의 오브젝트들을 제2 렌더링 방식을 이용하여 상기 이미지 스토어에 렌더링하는 단계 - 상기 제2 렌더링 방식은 상기 제2 세트 내의 각 오브젝트를 상기 제2 세트 내의 다른 오브젝트들과 독립적으로 렌더링함 -
를 포함하는 컴퓨터 프로그램이 제공된다.
본 발명의 또 다른 태양에 따르면, 오브젝트 기반 이미지를 렌더링하는 방법을 수행하기 위한 프로그램 코드가 실행되는 데이터 처리 장치의 동작을 제어하기 위한 머신 판독가능 프로그램 코드를 구비한 컴퓨터 프로그램으로서,
상기 방법은:
상기 이미지의 오브젝트들을 최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 리스트화하는 디스플레이 리스트를 수신하는 단계 - 상기 디스플레이 리스트는 콤포지팅을 요하는 최고 우선순위 오브젝트인 최종 콤포지팅 오브젝트를 가짐 -;
상기 디스플레이 리스트 내의 오브젝트들 중 상기 최저 우선순위 오브젝트로부터 상기 최종 콤포지팅 오브젝트까지의 오브젝트들에 대해 수행되는 제1 렌더링 태스크를 처리하는 단계; 및
상기 디스플레이 리스트 내의 오브젝트들 중 상기 최종 콤포지팅 오브젝트보다 우선순위가 높은 하나 이상의 오브젝트들에 대해 수행되는 적어도 하나의 제2 렌더링 태스크를 처리하는 단계
를 포함하며,
상기 제1 렌더링 태스크는 오브젝트의 일부가 상기 제1 렌더링 태스크에 의해 처리되는 상기 오브젝트들의 렌더링된 출력에 기여하는지의 여부를 판정하며, 만약 기여한다면, 상기 일부를 렌더링하며,
상기 제2 렌더링 태스크는 오브젝트들을 상기 제2 렌더링 태스크에 의해 처리되는 다른 오브젝트들과 독립적으로 이미지 스토어에 렌더링하는 컴퓨터 프로그램이 제공된다.
본 발명의 또 다른 태양에 따르면, 오브젝트 기반 이미지를 렌더링하는 방법을 수행하기 위한 프로그램 코드가 실행되는 데이터 처리 장치의 동작을 제어하기 위한 머신 판독가능 프로그램 코드를 구비한 컴퓨터 프로그램으로서,
상기 방법은:
(a) 상기 이미지를 기술하는 오브젝트들의 리스트를 수신하는 단계 - 상기 오브젝트들은 최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 정렬됨 -; 및
(b) 상기 리스트 내의 오브젝트들을 우선순위가 증가하는 순서로 고려하는 단계
를 포함하며,
현재 고려되는 각각의 오브젝트에 대해:
(ba) 상기 현재 고려되는 오브젝트가 콤포지팅을 요하지 않는다면 상기 현재 고려되는 오브젝트를 제1 렌더링 방식을 이용하여 이미지 스토어에 렌더링하는 단계; 및
(bb) 상기 현재 고려되는 오브젝트가 콤포지팅을 요한다면 하기의 단계를 수행하는 단계;
(bb)(i) 상기 리스트 내의 오브젝트들 중 상기 현재 고려되는 오브젝트보다 우선순위가 낮으며 상기 현재 고려되는 오브젝트의 바운딩 박스와 중첩되는 바운딩 박스를 갖는 오브젝트들을 결정하는 단계; 및
(bb)(ii) 상기 현재 고려되는 오브젝트 및 상기 결정된 오브젝트들을 제2 렌더링 방식을 이용하여 렌더링하는 단계 - 상기 제2 렌더링 방식은 오브젝트의 일부가 상기 제2 렌더링 방식에 의해 처리되는 한 세트의 오브젝트들의 렌더링된 출력에 기여하는지의 여부를 판정하며, 만약 기여한다면, 상기 제2 렌더링 방식은 상기 일부를 렌더링함 -
를 포함하는 컴퓨터 프로그램이 제공된다.
본 발명의 또 다른 태양에 따르면, 오브젝트 기반 이미지를 렌더링하는 방법을 수행하기 위한 프로그램 코드가 실행되는 데이터 처리 장치의 동작을 제어하기 위한 머신 판독가능 프로그램 코드를 구비한 컴퓨터 프로그램으로서,
상기 방법은:
최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 된, 상기 이미지 내의 오브젝트들의 리스트를 수신하는 단계;
상기 리스트 내의 오브젝트들을 적어도 한 세트의 오브젝트들에 할당하는 단 계 - 상기 세트 내의 오브젝트들은 상기 리스트 내에서 연속적인 우선순위 순서를 가지며, 상기 세트 내의 각각의 오브젝트는 상기 세트 내의 다른 오브젝트와는 중첩되지 않음 -; 및
상기 적어도 한 세트의 오브젝트들을 이미지 스토어에 렌더링하는 단계
를 포함하는 컴퓨터 프로그램이 제공된다.
이하, 도면을 참조하여 본 발명의 하나 이상의 실시예를 설명한다.
<표에 대한 간단한 설명>
본 발명의 실시예들을 설명함에 있어서 상세한 설명부와 특허청구범위 사이에 열거된 표들을 참조한다.
표 A는 도 2의 방법을 도 1의 예에 적용하는 방법을 예시한 것이다.
표 B는 도 3a의 방법을 도 1a의 예에서의 주사선에 적용하는 방법을 예시한 것이다.
표 C는 도 7의 방법을 도 6c의 주사선(662)의 첫번째 3개의 에지에 적용하는 방법을 예시한 것이다.
표 D는 도 11의 주사선(1130)에 제3 구성을 적용한 것을 예시한 것이다.
<최상의 모드를 포함한 상세한 설명>
아래의 설명에서 어떤 부분은 컴퓨터 메모리 내에서의 데이터 연산에 대한 알고리즘 및 심볼 표현에 의해 명시적 또는 함축적으로 제공된다. 이들 알고리즘에 의한 설명 및 표현은 데이터 처리 기술분야의 전문가들이 그들의 연구의 실체를 본 기술분야의 다른 전문가들에게 가장 효과적으로 전달하기 위하여 사용하는 수단 이다. 본 명세서에서 뿐만 아니라, 일반적으로 알고리즘은 원하는 결과를 가져오는 일관성있는(self-consistent) 스텝들의 시퀀스인 것으로 생각된다. 이러한 스텝들은 물리적인 양(quantity)의 물리적인 조작을 요하는 것이다. 반드시 그런 것은 아니지만, 통상적으로, 이러한 양은 저장, 전달, 결합, 비교 및 그밖에 조작이 가능한 전기 또는 자기 신호의 형태를 갖는다. 때에 따라서는, 주로 일반적인 이용을 위해, 이러한 신호를 비트, 값(수치), 엘리먼트, 심볼, 캐릭터, 용어, 숫자 등으로 부르는 것이 편리하다는 것이 증명되었다.
그러나, 상기한 및 이와 유사한 용어들은 적절한 물리량과 관련지어져야 하며, 단지 이러한 양에 부가된 편리한 라벨일 뿐이다. 아래의 설명을 통해 명백해지겠지만, 달리 명시되지 않는 한, 본 명세서 전반에 걸쳐, "산출한다", "결정(판정)한다", "대체한다", "생성한다", "초기화한다", "출력한다" 등과 같은 용어를 이용한 설명은, 컴퓨터 시스템의 레지스터 및 메모리 내에 물리적인(전자적인) 양으로서 표현된 데이터를 컴퓨터 시스템의 레지스터 또는 메모리 또는 그 밖의 이러한 정보 저장, 전송 또는 표시 장치 내에 물리적인 양으로서 마찬가지로 표현된 다른 데이터로 조작 및 변환하는 컴퓨터 시스템 또는 이와 유사한 전자 장치의 액션 및 프로세스를 지칭한다.
본 명세서에서는 이러한 방법의 동작을 수행하기 위한 장치를 개시한다. 이러한 장치는 필요한 용도를 위해 전용으로 구성될 수도 있으며, 또는 범용 컴퓨터 또는 이 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화 또는 재설정(reconfigured)되는 다른 장치를 구비할 수도 있다. 본 명세서에서 제공되는 알고 리즘 및 디스플레이는 본질적으로 임의의 특정 컴퓨터 도는 기타의 장치에만 관련된 것이 아니다. 본 명세서에서의 교시에 따라 각종의 범용의 머신이 프로그램과 함께 사용될 수 있다. 또한 대안적으로, 필요한 메쏘드 단계들을 수행하도록 보다 전문화된 장치를 구성하는 것도 가능하다.
또한, 본 발명은 함축적으로 컴퓨터 프로그램을 개시하는데, 이것은 본 기술분야의 전문가들에게는 본 명세서에 설명된 바람직한 방법의 각각의 단계들은 프로그램 코드에 의해 실시되어야 한다는 것이 명백하기 때문이다. 컴퓨터 프로그램은 임의의 특정 프로그래밍 언어 및 그에 대한 특정의 구현형태에 국한되지 않는다. 본 명세서에 개시된 교시를 구현함에 있어 각종의 프로그래밍 언어 및 코딩을 이용할 수 있다. 또한, 컴퓨터 프로그램은 임의의 특정 제어 흐름에 국한되지 않는다. 본 발명의 사상 또는 범주를 일탈하지 않는 범위 내에서 다른 제어 흐름을 이용하는 다른 많은 변형된 컴퓨터 프로그램이 있을 수 있다. 또한, 컴퓨터 프로그램의 하나 이상의 단계들은 순차적이 아닌 병행 처리될 수 있다.
이러한 컴퓨터 프로그램은 임의의 컴퓨터 판독가능 매체에 저장될 수 있다. 컴퓨터 판독가능 매체로는 자기 또는 광 디스크, 메모리 칩 등의 저장 장치, 또는 범용 컴퓨터와의 인터페이스에 적합한 그 밖의 저장 장치를 포함한다. 컴퓨터 판독가능 매체에는 인터넷 시스템에서 찾아 볼 수 있는 하드와이어드(hard-wired) 매체 또는 GSM 모바일 텔레폰 시스템에서 찾아 볼 수 있는 와이어리스 매체도 포함된다. 컴퓨터 프로그램이 이러한 범용 컴퓨터에 로드되어 실행된 경우 실제로 상기한 바람직한 방법의 단계들을 구현하는 장치가 된다.
첨부된 하나 이상의 도면에서 단계 및/또는 피처를 참조하는 경우, 설명의 편의 상, 동일한 참조 부호를 갖는 단계 및/또는 피처는, 달리 표현되지 않는 한, 동일한 기능 또는 동작을 갖는 것으로 한다.
본 명세서에서는 하기의 약어를 사용한다:
PSRM: 픽셀 순차 렌더링 방식(Pixel-Sequential Rendering Method)
PARM: 페인터스 알고리즘 렌더링 방식(Painter's Algorithm Rendering Method)
IPARM: 개선된 페인터스 알고리즘 렌더링 방식(Improved Painter's Algorithm Rendering Method)
XPSRM: 배타적 픽셀 순차 렌더링 방식(Exclusive Pixel-Sequential Rendering Method)
DL: 디스플레이 리스트(Display List)
OL: 오브젝트 리스트(Object List)
CL: 콤포지팅 리스트(Compositing List)
AEL: 액티브 에지 리스트(Active Edge List)
AOL: 액티브 에지 리스트(Active Object List)
RT: 렌더링 태스크(Render Task)
PART: 페인터스 알고리즘 렌더링 태스크(Painter's Algorithm Render Task)
PSRT: 픽셀 순차 렌더링 태스크(Pixel-Sequential Render Task)
GDI: 그래픽 장치 인터페이스(Graphics Device Interface)
RIP: 래스터 이미지 프로세서(Raster Image Processor)
<1.0 렌더링 장치>
도 18은 컴퓨터 그래픽 오브젝트 이미지를 렌더링 및 프리젠트하도록 구성된 시스템(1800)을 개략적으로 도시한 것이다. 시스템(1800)은 시스템 RAM(1803)에 접속된 호스트 프로세서(1802)를 포함하며, 시스템 RAM(1803)은 불활성의 하드 디스크 드라이브 또는 이와 유사한 장치(1805) 및 활성의 반도체 RAM(1804)을 포함할 수 있다. 시스템(1800)은 또한 시스템 ROM(1806)을 포함하는데, 시스템 ROM(1806)은 반도체 ROM(1807) 위에서 발견되며 경우에 따라서는 CD-ROM(1808)이 추가되는 경우가 많다. 시스템(1800)에는 래스터 방식으로 동작하는 영상 표시 유닛(VDU; video display unit) 또는 프린터와 같은, 이미지의 디스플레이를 위한 타겟 장치(1513)가 탑재될 수도 있다.
전술한 시스템(1800)의 각 구성요소들은 시스템 버스(1809)를 통해 상호연결되며, IBM PC/AT 타입 PC 및 이로부터 발전한 구성형태와 같은 본 기술분야에 공지된 컴퓨터 시스템의 통상의 동작 모드에서 동작한다.
도 18에 도시된 바와 같이, 그래픽 렌더링 시스템(1505)(또는 렌더링기)은 버스(1809)에 연결되며, 버스(1809)를 통해 프로세서(1802)로부터 제공된 명령문 및 데이터와 함께 그래픽 오브젝트 기반 기술(description)로부터 유도된 픽셀 기반 이미지를 렌더링하도록 구성된다. 렌더링기(1505)는 오브젝트 기술을 렌더링하기 위해 시스템 RAM(1803)을 이용할 수도 있지만, 바람직하기로는 렌더링기(1505)에는 일반적으로 반도체 RAM으로 구성된 전용의 렌더링 스토어 수단(1530)이 접속 되어 있다.
렌더링 시스템(1505)은 호스트 프로세서(1802) 상의 소프트웨어로서 구현될 수도 있다. 또한 대안적으로, 렌더링 시스템(1505)은 별도의 유닛 상에 구현될 수도 있는데, 이 별도의 유닛은 맞춤된(custom-built) 하드웨어 유닛일 수도 있고, 또는 범용 컴퓨터 상에서 동작하는 소프트웨어일 수도 있다. 또 다른 대안으로서, 렌더링 시스템은 타겟 장치(1513)에 임베드된 시스템일 수도 있다.
도 15는 렌더링 절차를 예시한 것이다. 호스트 프로세서(1802) 상에서 동작하는 애플리케이션(1501)은 호스트 프로세서의 오퍼레이팅 시스템의 그래픽 장치 인터페이스(GDI; Graphics Device Interface)(1503)에 그래픽 데이터를 송신한다. 그래픽 장치 인터페이스(1503)는 그래픽 데이터를 처리하고 그 데이터를 디스플레이 리스트 생성 모듈(1507) 및 렌더링 모듈(1511)을 구비한 그래픽 렌더링 시스템(1505)에 전달한다.
디스플레이 리스트 생성 모듈(1507)은 GDI(1503)로부터 수신된 데이터에 정의된 한 세트의 오브젝트들로부터 디스플레이 리스트를 생성한다. 디스플레이 리스트 내의 오브젝트들은 최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 z-레벨(우선순위) 순서로 정렬된다. 디스플레이 리스트는 디스플레이 리스트 스토어(1509)에 저장된다. 렌더링 모듈(1511)은 디스플레이 리스트를 처리함으로써 인쇄를 위한 픽셀들을 생성한다.
렌더링기(1505)가 호스트 프로세서(1802) 상의 소프트웨어로서 존재하는 경우에는 렌더링기(1505)가 하프톤 비트맵을 생성한다. 이 비트맵이 타겟 장치 (1513)에 압축되어 송신되면, 타겟 장치(1513)에서 이 비트맵을 압축해제하여 픽셀 데이터의 페이지를 렌더링한다.
대안적인 구성에서는 디스플레이 리스트 생성 모듈(1507)이 호스트 프로세서(1802) 상에 존재하며 렌더링 모듈(1511)이 타겟 장치(1513)에 임베드된다. 이러한 경우에는 호스트 프로세서(1802)가 디스플레이 리스트를 타겟 장치(1513)에 송신하면, 타겟 장치(1513)가 디스플레이 리스트를 렌더링하고 인쇄를 위한 픽셀 데이터를 생성한다.
렌더링 모듈(1511)은 아래에서 보다 상세하게 설명하게 될 복수의 렌더링 방식을 이용한다. 모듈(1511)은 서로 다른 렌더링 태스크가 서로 다른 방식을 이용하도록 하는 아래에 설명된 기준에 따라 서로 다른 부분의 디스플레이 리스트를 서로 다른 렌더링 태스크에 할당한다. 렌더링 모듈(1511)은 렌더링 태스크 대기열(queue)을 이용하여 동시에 실행되는 렌더링 태스크 쓰레드(thread)를 큐처리할 수 있다. 이용되는 렌더링 방식으로는, 3.0 섹션에서 설명되는 픽셀 순차 렌더링 방식(PSRM), 4.0 섹션에서 설명되는 페인터스 알고리즘 렌더링 방식(PARM), 6.0 섹션에서 설명되는 개선된 PARM(또는 IPARM), 및 8.0 섹션에서 설명되는 배타적 PSRM(XPSRM)을 포함한다. 설명된 렌더링 방식들의 서로 다른 조합을 이용하는 3가지 구성을 설명한다.
<2.0 데이터 구조>
디스플레이 리스트 생성 모듈(1507)이 GDI 층(1503)으로부터 오브젝트를 수신하면, 오브젝트를 3개의 구성요소로 분해(decompose)한다:
- 에지: 오브젝트의 아웃라인을 기술함;
- 묘화(drawing) 정보: 오브젝트가 페이지 상에 어떻게 묘화되는지를 기술함; 및
- 필링(fill) 정보: 오브젝트의 컬러를 기술함.
오브젝트들의 아웃라인들은 업(up) 에지들과 다운(down) 에지들로 나누어지며, 각 에지는 단조적으로 페이지의 아래로 진행한다. 하나의 에지에는 그 에지가 주사선을 따라 주사된 경우에 해당 오브젝트를 활성화 또는 비활성화하는지의 여부에 따라서 업 또는 다운의 방향이 부여된다.
에지들은 데이터 구조로서 소프트웨어로 구현된다. 이러한 데이터 구조에는 다음의 것들이 포함된다:
- 에지의 아웃라인을 기술하는 점(point)들;
- 현재 주사선 상에서 에지의 x 위치; 및
- 에지 방향.
묘화 정보 또는 레벨 데이터는 레벨 데이터 구조에 저장된다. 이러한 데이터 구조에는 다음의 것들이 포함된다:
- 우선순위라고 하는 z-순서(order) 정수;
- 홀수/짝수 또는 넌제로 와인딩(non-zero-winding) 등의 필링 규칙;
- 오브젝트에 관한 정보(오브젝트가 텍스트, 그래픽 또는 이미지인지의 여부);
- 콤포지팅 오퍼레이터;
- 비트맵, 타일 또는 플랫 컬러 등 묘화되는 필링의 종류; 및
- 해당 오브젝트를 클리핑하는 클립의 수를 나타내는 클립-카운트.
필링 정보 또는 필링 데이터는 필링 데이터 구조라고 하는 데이터 구조에 저장된다. 이 데이터 구조의 내용은 필링 종류에 의존한다. 비트맵 필립의 경우, 그 데이터 구조에는 다음의 것들이 포함된다:
- 페이지 상의 원본 비트맵의 x 및 y 위치;
- 픽셀들 내의 비트맵의 폭 및 높이;
- 페이지-이미지 변환 행렬;
- 이미지 데이터의 포맷을 나타내는 값(예컨대 32bpp RGBA 또는 24bpp BGR 등); 및
- 이미지 데이터로의 포인터.
플랫 필링의 경우, 그 데이터 구조는 통상적으로 단일의 32비트(R, G, B, 및 알파 각 채널당 8비트) 정수를 포함한다.
각 에지 데이터 구조는 일반적으로 레벨 데이터 구조로의 포인터를 갖는다. 각 레벨 데이터 구조도 필링 데이터 구조로의 포인터를 갖는다.
도 1a는 불투명한 오렌지색 캐릭터('O')인 제1 오브젝트(O1)와 이 제1 오브젝트 위에 있으며 반투명한 적색 사각형인 제2 오브젝트(O2)를 갖는 이미지를 도시한 것이다.
도 1b는 오브젝트(O1 및 O2)의 에지들을 도시한 것이다. 오브젝트 O1은 다음과 같다:
- 에지들 = E1 (down), E2 (up), E3 (up), E4 (down);
- 레벨 데이터 = {필링 규칙 = 넌제로 와인딩, 오브젝트 종류 = 텍스트, 우선순위 = 1}; 및
- 필링 데이터 = RGBA = 255, 128, 0, 255 (불투명한 오렌지).
오브젝트 O2는 다음과 같다:
- 에지들 = E5 (down), E6 (up);
- 레벨 데이터 = {필링 규칙 = 넌제로 와인딩, 오브젝트 종류 = 그래픽, 우선순위 = 2}; 및
- 필링 데이터 = RGBA = 255, 0, 0, 128 (반투명한 적색).
도 1c는 도 1a의 이미지에 대한 에지 리스트(50)를 도시한 것이다. 에지들 E1∼E4는 오브젝트 O1에 대한 묘화 정보를 포함하는 레벨 데이터(52)를 포인팅하며, 에지들 E5 및 E6은 오브젝트 O2의 레벨 데이터(56)를 포인팅한다. 레벨 데이터(52 및 56)는 오브젝트 O1 및 O2에 대한 필링 정보를 포함하고 있는 필링 데이터(54 및 58)를 각각 포인팅한다.
데이터가 전술한 방식의 구조를 가짐으로써, 디스플레이 리스트가 에지들의 리스트로부터 렌더링될 수 있다. 이것을 에지 기반 디스플레이 리스트라고 한다.
도 1a의 예에서, 디스플레이 리스트는 에지 리스트 {E1, E2, E3, E4, E5, E6}이다.
디스플레이 리스트는 먼저 y 좌표의 오름차순으로 정렬된 다음, y 좌표들이 동일한 경우 x 좌표의 오름차순으로 정렬된다. 도 1a에 대한 정렬된 에지 리스트 는 에지 리스트 {E1, E2, E5, E6, E3, E4}이다.
<3.0 픽셀 순차 렌더링 방식(PSRM)>
렌더링 모듈(1511)에 의해 이용되는 픽셀 순차 렌더링 방식은 픽셀들에 대한 컬러 및 불투명도(opacity)를 래스터 주사 순서로 한번에 하나씩 생성한다. 동시에 주사 및 처리되는 임의의 픽셀에서, 픽셀 순차 렌더링 방식은 현재 주사되는 픽셀에서 액티브인, 노출된 오브젝트들에 대해서만 콤포지팅을 수행한다. 픽셀 순차 렌더링 방식은 오브젝트의 경계 내에 픽셀이 존재하면 현재 주사되는 픽셀에서 해당 오브젝트가 액티브인 것으로 판정한다. 렌더링기(1505)는 해당 오브젝트와 연관된 필링 카운트를 참조함으로써 이를 실현한다. 필링 카운트는 오브젝트의 경계 내에 픽셀이 존재하는지의 여부를 나타내는 러닝(running) 필링 카운트를 보유하고 있다. 렌더링기(1505)가 오브젝트와 연관된 에지를 만나는 경우, 렌더링기(1505)는 그 에지의 방향에 따라서 필링 카운트를 증가 또는 감소시킨다. 그러면, 렌더링기(1505)는 필링 카운트 및 미리 정해진 필링 규칙에 따라 현재의 픽셀이 오브젝트의 경계 내에 존재하는지의 여부를 판정할 수 있게 된다. 픽셀 순차 렌더링 방식을 이용하는 경우, 렌더링기(1505)는 그 오브젝트와 연관된 플래그를 참조함으로써 액티브 오브젝트가 노출되었는지의 여부를 판정한다. 오브젝트와 연관된 이러한 플래그는 해당 오브젝트가 보다 낮은 우선순위의 오브젝트들을 흐리게 하는지의 여부를 나타낸다. 즉, 플래그는 해당 오브젝트가 부분적으로 투명한 경우 - 이 경우에는 보다 낮은 우선순위의 액티브 오브젝트들이 현재 픽셀의 컬러 및 불투명도에 기여하게 됨 - 인지의 여부를 나타낸다. 그렇지 않다면, 상기 플래그는 그 오 브젝트가 불투명한 것을 나타내며, 이 경우에는 보다 낮은 우선순위의 액티브 오브젝트들이 현재 주사되는 픽셀들의 컬러 및 불투명도에 어떠한 기여도 하지 않는다. 픽셀 순차 렌더링 방식은 오브젝트가 최상위(uppermost) 액티브 오브젝트인 경우, 또는 그 오브젝트 위의 모든 액티브 오브젝트들의 대응 플래그들이 투명한 것으로 설정되어 있는 경우에는 해당 오브젝트가 노출된 것으로 판정한다. 그러면, 렌더링기(1505)는 이들 노출된 액티브 오브젝트들에 대해 콤포지팅 처리하여, 현재 주사되는 픽셀에 대한 컬러 및 불투명도를 판정하여 출력한다.
<3.1 PSRM: 액티브 에지의 결정>
도 2는 픽셀 순차 렌더링 방식에서 메인 에지 리스트로부터 액티브 에지들을 결정하는 방법을 예시한 흐름도이다. 메인 에지 리스트는 렌더링되는 모든 에지들을 보유하고 있으며, 액티브 에지 리스트는 현재의 주사선과 교차하는 에지들의 임시 리스트이다.
단계 251은 초기화 단계이며 여기서 변수 CurY는 제로(0)로 설정되며 액티브 에지 리스트는 공백(empty)의 세트로서 설정된다. 다음으로, 단계 253에서 렌더링기(1511)는 메인 에지 리스트로부터 에지를 판독한다. 단계 255에서 렌더링기(1511)는 메인 에지 리스트 내의 모든 에지들이 처리되었는지 여부, 또는 현재 판독된 에지의 y-값인 Edge.y가 변수 CurY에 저장된 값보다 큰지의 여부를 체크한다.
이들 조건 중 어느 것도 충족되지 않았다면(단계 255에서 No), 단계 259로 진행하며, 여기서 현재 에지가 액티브 에지 리스트에 병합된다. 현재의 에지 리스트 내의 에지들은 x-값의 오름차순으로, 즉 주사선을 따른 순서로 정렬된다. 일단 현재의 에지가 액티브 에지 리스트에 추가되고 나면, 단계 253으로 복귀하여 메인 에지 리스트로부터 다음의 에지를 고려한다.
단계 255에서의 어느 하나의 조건이 충족되면(단계 255에서 Yes), 단계 257에서 렌더링기(1511)는 렌더링할 주사선의 수(N)를 결정한다. 메인 에지 리스트 내의 모든 에지들이 처리되었다면, 페이지 상에 잔존하는 주사선의 수, 즉 페이지 높이와 현재 주사선 사이의 차를 N으로 설정한다:
N = PageHeight - CurY
그러나, 처리할 에지들이 여전히 존재한다면, 현재 판독된 에지가 시작되는(commence) 주사선과 CurY 사이의 주사선들의 수를 N으로 설정한다:
N = Edge.Y - CurY
일단 주사선들의 수가 결정되면, 렌더링기(1511)는 N개의 주사선에 대한 액티브 에지 리스트를 렌더링한 다음 현재의 주사선을 갱신한다:
CurY = CurY + N
픽셀 순차 렌더링 방식에서의 N개의 주사선에 대한 렌더링에 대해서는 도 3a를 참조하여 보다 상세히 설명한다.
다음으로, 단계 261에서 렌더링기(1511)는 갱신된 CurY가 페이지 높이와 동일한지의 여부를 체크한다. 동일하다면, 액티브 에지를 결정하는 처리가 종료된다(263). 그러나, CurY가 페이지 높이보다 작다면(단계 261에서 No), 단계 253으로 복귀하여 메인 에지 리스트로부터 다음의 에지를 처리한다.
표 A는 도 2의 방법을 도 1a 내지 도 1c의 예에 적용하는 방법을 예시한 것 이다. 상기 표는 열단위로 왼쪽에서 오른쪽으로 읽어가야 한다. 각 열은 단계 253에서 시작되는 루프의 반복수행(iteration)을 나타낸다. 도시의 편의 상, 단계 251은 생략되었다. 공백의 박스는 해당 단계를 수행하지 않았음을 나타낸다. 단계 255는 상기 루프의 현재의 반복수행에서 단계 257 및 단계 259 중 어느 단계를 수행할지를 결정한다.
상기 루프의 제1 반복수행 시, 단계 253에서 메인 에지 리스트로부터 에지 E1을 판독한다. CurY는 제로(0)로 초기화되어 있기 때문에, E1이 시작되는 주사선인 E1.Y는 CurY보다 크며, 따라서 단계 257이 수행된다. 그 페이지의 시작과 E1.Y 사이의 주사선들은 렌더링되며 CurY는 갱신된다.
상기 루프의 최종 반복수행 시, 모든 에지들이 처리되었으므로, 페이지의 높이와 CurY 사이의 차가 N으로 설정된다. 나머지 주사선들이 렌더링되며 CurY가 갱신된다. 단계 251에서는 CurY가 페이지 높이와 동일한지를 판정하며, 상기 루프는 종료된다.
<3.2 PSRM: 주사선들에 대한 렌더링>
도 3a의 흐름도는 픽셀 순차 렌더링 방식에서 주사선들이 렌더링되는 방법을 예시한 것이다. 도 3a의 처리는 도 2의 단계 257에 의해 개시(invoke)된다.
초기화 단계 351에서, 렌더링기(1511)는 인덱스 CurX를 제로(0)로 설정하며 액티브 오브젝트 리스트 및 임시 액티브 에지 리스트(TempAEL; Temporary Active Edge List)를 공백의 세트로 설정한다. 다음으로, 단계 353에서 본 처리는 주사선의 끝 - 즉, CurX가 페이지 폭과 동일한 때 - 까지 진행하는 루프에 진입한다. 단 계 353에서, 렌더링기(1511)는 액티브 에지 리스트(AEL)로부터 에지 "Edge"를 판독한다. 다음으로, 단계 355에서 렌더링기(1511)는 액티브 에지 리스트 내의 모든 에지들이 처리되었는지의 여부, 또는 현재의 주사선과 현재 판독된 에지의 교점인 Edge.X가 인덱스 CurX보다 큰지의 여부를 체크한다. 이들 조건 중 어느 하나가 충족되면, 단계 357로 진행한다. 이들 조건 중 어느 것도 충족되지 않는다면(단계 355에서 No), 단계 359로 진행한다.
단계 359에서는 현재 판독된 에지가 액티브 에지 리스트(AEL)로부터 제거되며, 현재 판독된 에지에 의해 포인팅된 오브젝트는 적절하게 활성화 또는 비활성화된다. 오브젝트들의 활성화/비활성화는 오브젝트와 연관된 필링 규칙에 기초한다. 오브젝트들은 액티브 오브젝트 리스트(AOL; active object list)에 추가되거나 그것으로부터 제거된다. 클리핑된 오브젝트들에 대한 활성화/비활성화 처리 및 AOL 갱신 처리에 대해서는 도 7을 참조하여 보다 자세히 설명한다.
다음의 단계 360에서는, Edge.X가 현재 판독된 에지와 다음의 주사선과의 교점을 나타내도록 갱신된다. 다음으로, 단계 348에서는 현재 판독된 에지를 테스트하여 그것이 현재의 주사선에서 소멸(expired)되는지의 여부를 체크한다. 소멸되지 않는다면, 단계 349로 진행하여 그 에지를 임시 AEL인 TempAEL에 추가하는데 해당 리스트에서 x의 오름차순이 유지되도록 올바른 위치에 추가한다. 그렇지 않고(단계 348에서 Yes) 단계 349를 따른다면, 단계 353으로 복귀하여 액티브 에지 리스트로부터 다음의 에지를 판독한다.
단계 357에서 렌더링할 픽셀들의 수(N)가 결정된다. 액티브 에지 리스트 내 의 모든 에지들이 이미 처리되었다면, 페이지 폭과 인덱스 CurX 사이의 차를 N으로 설정한다. 그렇지 않다면, (Edge.X-CurX) - 즉, 현재 고려되는 액티브 에지에 대한 현재 인덱스와 그 위치 사이의 차 - 를 N으로 설정한다.
다음으로, 단계 361에서는 액티브 오브젝트 리스트가 N개 픽셀에 대해 렌더링되며, 이에 대해서는 도 4를 참조하여 보다 상세히 설명한다.
단계 363에서 인덱스 CurX는 (CurX + N)으로 갱신되며, 단계 365에서 CurX가 페이지 폭과 동일한지의 여부를 체크한다. 동일하다면, 단계 366에서 임시 에지 리스트의 내용이 액티브 에지 리스트에 복사된다. 그런 다음, 본 처리는 단계 351로 복귀되어 다음의 주사선을 렌더링하거나, 또는 단계 367로 복귀되어 도 2의 단계 257로 진행한다. CurX가 페이지 폭에 도달하지 않았다면(단계 365에서 No), 단계 353으로 복귀한다.
표 B는 도 3a의 방법을 액티브 에지 리스트로서 {E5, E1, E3, E4, E2, E6}을 갖는 도 1a의 이미지의 주사선 - 이들 주사선은 'O' 캐릭터(O1)의 센터홀을 관통함 - 에 적용한 것을 예시한 것이다.
앞에서와 마찬가지로, 상기 표의 각 열은 단계 353에서 시작되는 루프의 반복수행(iteration)을 나타낸다. 체크 단계 355에서는 경로 359/360을 따를지 또는 경로 357/361/363을 따를지의 여부를 판정한다. 공백의 박스는 상기 루프의 현재 반복수행에서 해당 단계가 수행되지 않음을 나타낸다. 종료 단계 365 및 367은 명시적으로 도시되지 않는다.
초기에, CurX는 제로(0)이며 액티브 오브젝트 리스트(AOL)는 공백 상태이다.
<3.3 PSRM: 주사선 상의 픽셀들에 대한 렌더링>
도 4의 흐름도는 주사선 상의 픽셀들에 대한 렌더링 방법을 예시한 것으로, 여기서는 최고 우선순위의 불투명한 오브젝트와 이 최고 우선순위의 불투명한 오브젝트 위에 놓인 임의의 투명한 오브젝트만 콤포지팅 처리되어 출력된다. 도 4의 단계들은 도 3a의 단계 361에 의해 시작된다.
단계 451에서 렌더링기(1511)는 액티브 오브젝트 리스트(AOL)가 공백 상태인지의 여부를 체크한다. 공백 상태라면, 렌더링기(1511)는 N개의 픽셀에 대해 화이트(white)(페이지의 백그라운드)를 출력하며, (필요하다면) 단계 470에서 프레임스토어의 비트 깊이로 하프톤 처리한다. 본 처리는 단계 471에서 종료되며 단계 363으로 복귀한다.
액티브 오브젝트 리스트가 공백 상태가 아니라면(단계 451에서 No), 단계 453으로 진행하여 액티브 오브젝트 리스트를 우선순위 순서의 내림차순으로 정렬한다. 액티브 오브젝트 리스트 내의 엔트리의 수를 'NumObjects'라고 한다.
다음으로, 단계 457에서 렌더링기(1511)는 액티브 오브젝트 리스트 내의 첫번째 오브젝트가 불투명한지의 여부를 체크한다. 불투명하다면, 단계 459에서 AOL[0] 내의 필링을 프레임스토어에 출력하고, (필요하다면) 단계 470에서 프레임스토어의 비트 깊이로 하프톤 처리하며, 단계 471에서 본 처리가 종료된다. 이 경우에는 최상위(topmost) 오브젝트가 불투명하기 때문에 액티브 리스트 내의 그 밖의 오브젝트들은 고려할 필요가 없다.
최상위 오브젝트가 불투명하지 않다면(단계 457에서 No), 단계 461에서 렌더 링기(1511)는 인덱스 i를, i = 1로 설정한다. 단계 463에서는 액티브 오브젝트 리스트의 i번째 엔트리의 오브젝트를 오브젝트로 설정한다. 단계 465에서는 오브젝트가 불투명한지의 여부 또는 인덱스 i가 액티브 오브젝트 리스트 내의 오브젝트들의 총수, (NumObjects - 1)와 동일한지의 여부를 체크한다.
이들 조건 중 어느 하나가 충족되면(단계 465에서 Yes), 단계 469에서 렌더링기(1511)는 AOL[0]와 AOL[i] 사이의 모든 오브젝트에 대한 콤포지팅 결과를 프레임스토어에 출력하고, (필요하다면) 단계 470에서 프레임스토어의 비트 깊이로 하프톤 처리한다. 단계 471에서 본 처리는 종료된다.
이들 조건 중 어느 것도 충족되지 않았다면(단계 465에서 No), 단계 467로 진행하여 인덱스 i를, i = i + 1로 증가시킨다. 그런 다음 단계 463으로 복귀하여 액티브 오브젝트 리스트 내의 다음의 오브젝트를 고려한다.
도 4의 처리를 적용한 예로서, 도 1a의 오브젝트 O1의 좌반부에서 픽셀 E1.X와 E3.X 사이의 주사선 E3.Y(즉, 에지 E3이 시작되는 주사선)에 있는 픽셀들의 런을 고려해 보기로 한다. 이 픽셀들의 런에 대해서는 양방의 오브젝트가 액티브이며 액티브 오브젝트 리스트 AOL은, AOL = {O1, O2}이다.
단계 451에서 AOL이 공백 상태인지의 여부를 체크한다. AOL이 2개의 엔트리를 보유하므로 단계 453으로 진행한다. 상기 AOL은 우선순위 순서의 내림차순으로 정렬되며, 그 결과 AOL = {O2, O1}이 된다. NumObjects의 값은 2이다. 단계 457에서 리스트 내의 첫번째 엔트리가 불투명한지의 여부를 체크한다. 'O2'는 불투명하지 않으므로 단계 461로 진행한다. 단계 461에서 카운터 i가 1로 초기화되며, 그 다음 단계 463에서 변수 obj가 AOL[i] 위치에 있는 오브젝트로 설정되는데, 이 경우 'O1'이 설정된다. 단계 465에서 'O1'이 불투명하므로 단계 469로 진행한다. 오브젝트 'O2'와 'O1'의 필링은 함께 콤포지팅 처리되며 그 결과는 프레임스토어에 기록된다.
<3.4 PSRM에서의 클리핑>
마이크로소프트(TM) GDI와 같은 시스템에서는, 오브젝트들에 클리핑 영역이 동반하며(accompany), 오브젝트는 대응 클리핑 영역에 의해 규정된 영역의 내측에만 출력된다.
이러한 시스템에서는, 일반적으로 각 오브젝트가 대응 클리핑 영역에 의해 클리핑되어 차례대로 프레임스토어에 렌더링된다. 어떤 시스템에서는 복수의 클리핑 영역이 활성화되는 것을 허용한다. 따라서, 오브젝트가 하나 이상의 클리핑 영역에 의해 클리핑되어 프레임스토어에 렌더링될 수 있다.
픽셀 순차 렌더링 방식(PSRM)에서, 클립은 일반적으로 한 세트의 에지들 및 레벨 데이터 구조의 "오브젝트 리스트"에 의해 표현되는데, 리스트 내의 첫번째 엔트리는 클립 자체를 기술하는 레벨 데이터 구조이다. 레벨 데이터 구조 내의 나머지 엔트리들은 클리핑되는 오브젝트들을 기술한다.
도 6a는 클리핑된 이미지의 일례를 도시한 것이다. 도 6a에서는 삼각형 클립(650), 상하반전된 삼각형 클립(652), 및 이들 클립(650 및 652)에 의해 클리핑되는 사각형(654)의 3개의 오브젝트를 도시하고 있다. 도 6b는 도 6a의 오브젝트들을 렌더링하여 얻은 육각형의 형상(656)을 도시하고 있다.
도 6c는 이들 오브젝트(650-654)의 에지들을 도시한 것이다. 클립(650)은 좌측 에지(E1) 및 우측 에지(E2)를 갖는다. 클립(652)은 좌측 에지(E3) 및 우측 에지(E4)를 가지며, 사각형(654)은 좌측 에지(E5) 및 우측 에지(E6)에 의해 정의된다. 바운딩 박스(658)는 오브젝트들(650, 652, 654)의 외곽점(outer point)들의 범위를 정한다. 주사선 S(622)는 도 7의 방법을 도 6a의 예에 적용한 것을 나타내기 위해 사용된 것이다.
도 6d는 도 6a의 이미지에 대한 디스플레이 리스트의 바람직한 메모리 구성을 도시한 것이다. 도 6d에서, 각 에지는 대응 오브젝트에 대한 묘화 정보를 포함하는 레벨 데이터를 포인팅한다. 에지 E1 및 E2은 레벨 데이터 L1을 포인팅하며, 에지 E3 및 E4는 레벨 데이터 L2를 포인팅하며, 에지 E5 및 E6은 레벨 데이터 L3을 포인팅한다. 오브젝트(650 및 652)는 클리핑 오브젝트로서 그 레벨 데이터 L1 및 L2는 오브젝트(654)에 대한 레벨 데이터 L3을 포인팅한다. 다음으로, 오브젝트(654)에 대한 레벨 데이터 L3은 오브젝트(654)에 대한 필링 정보를 포함하는 필링 데이터 F3을 포인팅한다.
이러한 레벨 데이터 구조는 해당 오브젝트가 몇개의 클리핑 영역에 의해 클리핑되는지를 나타내는 오브젝트와 연관된 클립 카운트를 포함한다. 본 예에서, 오브젝트 654는 L3.ClipCout = 2이므로, 오브젝트 654는 2개의 클립에 의해 클리핑되는 것을 나타낸다.
도 7은 액티브 오브젝트 리스트(AOL)의 관리를 예시한 것이다. 도 7의 단계들은 단계 359에 의해 시작된다. 도 7에서 입력되는 것은 액티브 오브젝트 리스트 및 현재의 에지에 의해 포인팅된 레벨 데이터 구조의 리스트이다. 도 7에서 출력되는 것은 활성화된 오브젝트를 추가하거나 비활성화된 오브젝트를 추가함으로써 수정된 액티브 오브젝트 리스트이다.
초기화 단계 751에서, 카운터 i는 제로(0)로 초기화되며 변수 'clip_delta'는 제로(0)로 초기화된다. 그런 다음, 단계 753에서 렌더링기(1511)는 변수 'obj'를 현재의 오브젝트와 연관된 오브젝트 리스트(OL) 내의 i번째 오브젝트인 OL[i]로 설정한다. 단계 755에서 렌더링기(1511)는 오브젝트(obj)가 클립인지의 여부를 체크한다. 클립이라면, 단계 757에서 클립이 액티브로 되었는지의 여부를 체크한다. 클립이 액티브로 되었다면, 단계 761에서 상기 변수 'clip_delta'를 '-1'로 설정한다. 클립이 액티브로 되지 않았다면, 단계 759에서 변수 'clip_delta'를 '1'로 설정한다.
단계 759 또는 단계 761에서 변수 'clip_delta'가 설정된 후, 단계 763으로 진행하여 카운터 i를 1만큼 증가시킨다. 다음으로, 단계 765에서 현재의 에지와 연관된 모든 오브젝트가 처리 완료되었는지를 체크한다. 처리 완료되었다면, 도 7의 처리를 종료하고 단계 360으로 복귀한다. 현재의 에지와 연관된 오브젝트가 남아 있다면(단계 765에서 No), 단계 753으로 복귀하여 다음의 오브젝트를 처리한다.
현재 고려되는 오브젝트가 클립이 아니라면(단계 755에서 No), 단계 768에서 렌더링기(1511)는 현재 오브젝트의 클립 카운트를 'clip_delta'의 값만큼 증가시킨다:
Obj.ClipCount = obj.ClipCount + clip_delta
다음으로, 단계 769에서 렌더링기(1511)는 오브젝트(obj)가 액티브로 되었는지의 여부 및 'obj'의 클립 카운트가 제로(0)인지의 여부를 체크한다. 이들 양방의 조건이 충족되었다면, 단계 771에서 렌더링기(1511)는 (만약 'obj'가 이미 액티브 오브젝트 리스트에 존재하지 않는다면) 'obj'를 액티브 오브젝트 리스트에 추가한다.
단계 769에서 양방의 조건이 충족되지 않았고(단계 769에서 No), 오브젝트 'obj'가 액티브 오브젝트 리스트에 존재한다면, 렌더링기(1511)는 'obj'를 액티브 오브젝트 리스트로부터 제거한다.
단계 771 또는 단계 773의 다음에는, 단계 763으로 진행하여, 전술한 바와 마찬가지로, 현재의 에지와 연관된 오브젝트가 남아 있는지의 여부를 판정한다.
일례로서, 표 C는 도 7의 단계들이 도 6c에 도시된 주사선(662)의 첫번째 3개의 에지들에 대해 어떻게 수행되는지를 도시한 것이다.
<4.0 페인터스 알고리즘 렌더링 방식(PARM)>
페인터스 알고리즘을 이용한 렌더링 방식은 앞에서 설명한 픽셀 순차 렌더링 방식과 몇가지 유사한 점을 갖는다. PARM 및 PSRM은 모두 에지들을 트랙킹하여 각 주사선에 대해 x의 오름차순으로 유지할 필요가 있다. PARM은 도 2, 도 3b 및 도 7의 절차를 따라 구현될 수 있다.
전술한 바와 같이, 도 2는 액티브 에지 리스트를 결정하는 방법을 도시한 것이다. 도 2의 단계들은 PSRM 및 PARM에 모두 적용될 수 있다.
페인터스 알고리즘 렌더링 방식의 경우에는, 도 2의 단계 257에서 도 3b를 호출(invoke)하여 일련의 N개의 주사선에 대해 액티브 에지 리스트를 렌더링한다. 도 3b의 처리는, PARM에서 단지 하나의 오브젝트가 액티브이고, 따라서 액티브 오브젝트 리스트를 렌더링할 필요가 없다는 점을 제외하고는, 도 3a의 처리와 유사하다. 따라서, 초기화 단계 351이 도 3b에서는 단계 371로 대체되며, 여기서는 액티브 오브젝트 리스트를 NULL 세트로 설정하는 대신에, 액티브 오브젝트를 NULL로 설정한다. 도 3a의 단계 361(도 4의 단계들을 호출함)이 도 3b에서는 단계 369로 대체되며, 여기서는 렌더링기(1511)가 PARM을 구현하는 경우 액티브인 (단일의) 오브젝트의 필링을 이용하여 N개의 픽셀을 렌더링한다.
도 3b의 단계 359a는, 액티브 오브젝트 리스트를 갱신할 필요가 없다는 점을 제외하고는, 도 3a의 단계 359와 유사하다.
오브젝트를 활성화/비활성화하는 경우, 단계 771 및 단계 773은 각각 오브젝트에 대한 액티브 플래그를 단순히 설정 또는 클리어한다는 점에서 보다 간편하다는 것을 제외하고는, 도 7의 방법이 이용된다.
<4.1 PSRM과 PARM의 차이점>
전술한 픽셀 순차 렌더링 방식과 페인터스 알고리즘 렌더링 방식(PARM)의 차이점은 다음과 같이 요약될 수 있다:
(a) PARM에서는 일반적으로 오브젝트가 GDI 층(1503)으로부터 수신되자마자 렌더링되는 반면, PSRM에서는 최종의 오브젝트가 수신될 때까지 렌더링을 개시하지 않는다;
(b) PARM에서의 디스플레이 리스트는 단지 하나의 오브젝트를 구비하는 반 면, PSRM에서는 렌더링되는 모든 오브젝트가 디스플레이 리스트에 존재한다;
(c) PARM에서는 오브젝트가 액티브인 픽셀들의 런만 프레임스토어에 렌더링되는 반면, PSRM에서는 일반적으로 액티브인 오브젝트가 없는 경우에는 화이트(페이지의 컬러)를 렌더링한다;
(d) PARM에서는 오브젝트와 프레임스토어 사이에서만 콤포지팅이 수행되지만, PSRM에서는 픽셀 런 상의 기여하는 모든 액티브 오브젝트를 콤포지팅 처리하여 그 결과를 프레임스토어에 기록한다; 및
(e) PARM에서는 클리핑 영역이 그것과 연관되어 있는 각 오브젝트마다 처리되는 반면, PSRM에서는 모든 오브젝트를 일시에 클리핑한다.
3개의 오브젝트가 클립 영역(C1)에 의해 클리핑된 이미지의 경우, PARM에서는 클립(C1)을 3회 - 3개의 오브젝트 각각에 대해 1회씩 - 에 걸쳐서 처리한다. PSRM에서는 클립(C1)이 단지 한번에 디스플레이 리스트에 추가된다. 클립(C1)은 이들 3개의 오브젝트 각각을 포인팅하는 레벨 리스트를 구비한다. 각 오브젝트는 클립 카운트로서 1을 갖는데, 이는 해당 오브젝트가 렌더링 시에 클리핑되는 것을 보증한다.
PARM에서의 콤포지팅은 프레임스토어가 콤포지팅을 요하는 오브젝트의 비트 깊이보다 낮은 비트 깊이로 픽셀 값들을 보유하고 있는 경우 문제가 될 수 있다. 예를 들어, 프레임스토어가 픽셀당 1비트의 CMYK 하프톤 픽셀 값을 보유하고 있고 오브젝트를 픽셀당 32비트의 RGBA 픽셀 값으로 콤포지팅하려고 하는 경우에는 콤포지팅 처리 시 정보의 손실이 예상된다.
<5.0 제1 구성: PSRM 및 PARM을 이용한 렌더링>
도 14를 참조하여 제1 렌더링 구성을 설명한다. 제1 구성은 렌더링기(1505)가 전술한 픽셀 순차 렌더링 방식과 페인터스 알고리즘 렌더링 방식 모두를 사용하는 혼성(hybrid) 방식을 채용한다.
도 15에 도시된 바와 같이, 디스플레이 리스트 생성 모듈(1507)은 에지 기반 디스플레이 리스트(1509)를 생성한다. 이 리스트에서, 각 에지에는 자신이 속하는 오브젝트를 지칭하는 오브젝트 식별자, 'edge.ID'가 부여된다.
오브젝트의 픽셀들이 그 오브젝트 아래의 픽셀들과 어떠한 방식으로 결합될 것을 요구하는 콤포지팅 연산자를 갖는 오브젝트라면, 그 오브젝트는 콤포지팅을 요한다. 오브젝트들이 디스플레이 리스트에 추가되면, 디스플레이 리스트 생성 모듈(1507)은 콤포지팅을 요하는 최종의 오브젝트를 트랙킹한다. 이를 최종 콤포지팅 오브젝트(last-compositing-object)라고 한다. 모든 오브젝트가 디스플레이 리스트에 추가되면, 렌더링 모듈(1511)은 렌더링을 개시한다.
도 14의 방법은 렌더링 태스크의 관점에서 설명한 것이다. 렌더링 태스크(RT; rendering task)는, 그것이 실행된 경우, 지정된 렌더링 방식에 따라 에지 기반 디스플레이 리스트의 일 부분을 렌더링하는 태스크이다. 렌더링 태스크에는 메인 디스플레이 리스트로부터의 한 세트의 에지들이 할당된다. 이들 에지는 렌더링 태스크 자신의 로컬 메인 에지 리스트와 로컬 액티브 에지 리스트에 저장된다. PARM을 이용하는 렌더링 태스크는 페인터스 알고리즘 렌더링 태스크(PART; Painter's Algorithm Render Task)라고 한다. PSRM을 이용하는 렌더링 태스크는 픽 셀 순차 렌더링 태스크(PSRT; Pixel-Sequential Render Task)라고 한다.
제1 구성에서 렌더링 모듈(1511)은 디스플레이 리스트 내의 첫번째 오브젝트와 최종 콤포지팅 오브젝트 사이의 모든 에지를 전술한 PSRM을 이용하는 픽셀 순차 렌더링 태스크(PSRT)에 할당한다. 그러면, 렌더링 태스크는 화이트 스페이스를 포함한 상기 세트의 에지들을 프레임스토어에 렌더링한다.
그런 다음, 디스플레이 리스트 내의 나머지 각 오브젝트에 대해서는, 그 오브젝트의 에지들을 전술한 PARM을 이용하는 페인터스 알고리즘 렌더링 태스크(PART)에 할당한다. 그러면, 렌더링 태스크는 화이트 스페이스를 제외한 상기 세트의 에지들을 프레임스토어 상에 렌더링한다.
따라서, 콤포지팅을 요하는 임의의 오브젝트들에 대해서는 픽셀 순차 렌더링 방식이 적용되며, 나머지(불투명한) 오브젝트들은 단순히 프레임스토어 상에 렌더링된다.
도 14를 참조하면, 단계 1401에서 렌더링 모듈(1511)은 최종 콤포지팅 오브젝트가 제로(0)보다 크거나 동일한지의 여부를 체크한다. 그렇다면(단계 1401에서 Yes), 단계 1403에서 렌더링 모듈(1511)은 'edge.ID'가 최종 콤포지팅 오브젝트보다 작은 모든 에지를 픽셀 순차 렌더링 태스크에 할당한다. 다음으로, 단계 1405에서 렌더링 태스크는 도 2, 도 3a 및 도 7에 기재된 메쏘드 스텝들을 이용하여 실행된다.
다음으로, 단계 1407에서 인덱스 i는 (last-compositing-object+1)로 설정된다. 단계 1409에서 렌더링기는 i가 N보다 작은지의 여부를 체크한다. 그렇지 않 다면(단계 1409에서 No), 처리할 오브젝트가 존재하지 않는다는 것이므로 본 처리는 단계 1411에서 종료된다. 그러나, i가 N보다 작다면, 단계 1413으로 진행하여 'edge.ID'가 'i'인 모든 에지를 페인터스 알고리즘 렌더링 태스크에 할당한다. 그런 다음, 단계 1415에서 렌더링 태스크는 도 2, 도 3b 및 도 7의 단계들을 이용하여 실행된다.
렌더링 태스크가 완료되면, 단계 1417에서 인덱스 'i'를 '1'만큼 증가시키고, 단계 1409로 진행하여 처리할 추가의 오브젝트가 남아 있는지의 여부를 체크한다.
최종 콤포지팅 오브젝트가 제로(0) 미만인 경우(단계 1401에서 No)에는, 단계 1403 및 단계 1405를 거치지 않고, 바로 단계 1407로 진행한다. 이 경우에는 픽셀 순차 렌더링이 필요하지 않고 디스플레이 리스트 내의 모든 오브젝트가 PART를 이용하여 렌더링된다.
제1 구성에 따른 렌더링 방법은 도 14를 참조하면 다음의 의사코드로 요약될 수 있다:
이러한 방법을 이용하여 36,000개의 오브젝트로 된 페이지를 최종 콤포지팅 오브젝트가 5인 1bpp 하프톤 단색 프레임스토어에 렌더링한 경우, Pentium III 667MHz, 256MB RAM 상에서의 렌더링 시간은 일반 PSRM과 비교하여 6초에서 3초로 절반으로 줄어들었다.
본 기술분야의 전문가라면, 렌더링 모듈(1511)을 복수의 프로세서를 갖는 머신에서 구현하는 경우, 각 페인터스 알고리즘 렌더링 태스크(PART)를 별도의 쓰레드로 렌더링할 수 있다는 것을 인식할 것이다. 디스플레이 리스트 내의 오브젝트 중 다음에 고려되는 오브젝트가 현재 실행중인 PART와 중첩되지 않는 경우에는, 새로운 쓰레드를 생성하여 새로 고려되는 오브젝트를 렌더링하는 것이 가능하다. 이러한 처리는 모든 오브젝트가 렌더링되었거나 또는 현재 실행중인 PART와 중첩되는 오브젝트가 발견될 때까지 계속된다.
<6.0 변형된 페인터스 알고리즘(IPARM)>
전술한 PARM을 개선하기 위한 2가지 방법을 제안한다. 제1 변형예는 연속적인 비중첩 불투명 오브젝트들을 처리하는 것과 관련되며, 제2 변형예는 복수의 연속적인 오브젝트들을 클리핑하는 것과 관련된다.
<6.1 연속적인 비중첩 불투명 오브젝트>
페인터스 알고리즘 렌더링 방식은, 오브젝트들이 중첩되는 바운딩 박스를 갖지 않는다면, 사실 상 다수의 오브젝트를 일시에 처리할 수 있다. 바운딩 박스가 중첩되지 않는다면, 에지 정렬 이동은 각 오브젝트의 에지 내에서만 일어난다.
예를 들어, 도 5a는 각 오브젝트들이 서로 중첩되지는 않지만 중첩되는 바운딩 박스를 갖는 2개의 오브젝트를 도시하고 있다. 오브젝트 802는 바운딩 박스 803을 갖는 다각형이다. 오브젝트 802는 에지 E1, E2, E3, E4, E5, E6 및 E7로 이루어지며, 이들 중 에지 E3∼E6은 톱니 모양의 패턴으로 배열되어 있다.
오브젝트 804는 바운딩 박스 805를 갖는 다각형이다. 오브젝트 804는 일련의 에지 E8, E9, E10, E11 및 E12로 구성된다. 에지 E11 및 E12는 톱니 모양으로 배열되며, 에지 E8 및 E12에 의해 형성된 피크는 에지 E3 및 E4에 의해 형성된 오목부(hollow)에 위치하고 있다. 오브젝트 804의 에지 E11 및 E10에 의해 형성된 피크는 오브젝트 802의 에지 E5 및 E6에 의해 형성된 오목부에 위치하고 있다. 오브젝트 804는 오브젝트 802와 만나거나 교차하지도 않지만, 그 바운딩 박스 805는 바운딩 박스 803과 중첩된다.
따라서, 오브젝트 802와 804를 함께 렌더링하는 경우, 주사선 807에서 오브젝트 804의 에지 E8, E12, E11 및 E10은 액티브 에지 리스트 {E2, E3, E4, E5, E6, E7}에 병합되어 하며, 그 결과 에지 리스트는 {E2, E3, E8, E12, E4, E5, E11, E10, E6, E7}가 된다.
도 5b에서, 오브젝트 804는 오브젝트 802로부터 멀리 옮겨져고 바운딩 박스 803 및 805는 더 이상 중첩되지 않게 되었다. 결국, 에지 E8, E12, E11, E10은 에지 E2, E3, E4, E5, E6, E7과는 병합되지 않게 된다.
따라서, 어떤 2개의 오브젝트도 바운딩 박스에 의해 중첩되지 않는다면, 페인터스 알고리즘 렌더링 태스크(PART)에 할당된 수개의 오브젝트를 렌더링하는 것은 적어도 각각의 오브젝트를 개별적으로 렌더링하는 것만큼은 빠르다. 개선된 PARM(또는 IPARM)에서는 바운딩 박스에 의해 중첩되지 않는 연속적인 불투명 오브 젝트들의 개별 그룹들이 별도의 PART에 바람직하게 할당된다.
<6.2 복수의 연속적인 오브젝트들의 클리핑>
복수의 연속적인 오브젝트들이 하나 이상의 클리핑 영역에 의해 클리핑되는 경우, 일반적인 PARM에서는 각각의 오브젝트가 클리핑 및 렌더링된다. 이것은 클리핑 영역이 복잡한 경로로 된 경우에 비효율적일 수 있다. PART에서 PSRM을 이용하여 클리핑 영역에 의해 클리핑된 한 그룹의 오브젝트들을 렌더링한다면 그 성능을 개선할 수 있다. 이것은 하나의 클립이 단지 1회 처리되는 것을 보증한다.
<6.3 IPARM 절차>
수정된 PARM에서는 도 2에 기재된 액티브 에지 리스트 결정 방법 및 도 3a를 참조하여 설명한 주사선 렌더링 방법을 이용한다. IPARM은 또한 도 7을 참조하여 설명한 오브젝트 활성화를 이용한다.
단계 361에서 IPARM은 N개의 픽셀에 대한 액티브 오브젝트 리스트를 렌더링한다. IPARM에서의 이러한 렌더링은 도 8에 도시되어 있다. 도 8의 방법에서 입력되는 것은 한 세트의 액티브 오브젝트들이다. 단계 851에서 렌더링기는 액티브 오브젝트 리스트(AOL)가 공백 상태인지의 여부를 체크한다. 공백 상태라면, 본 처리는 단계 857에서 종료되고 도 3a로 복귀한다. 이것은 IPARM에서는 화이트 스페이스를 렌더링하지 않기 때문이다.
AOL이 공백이 아니라면(단계 851에서 No), 단계 853에서 액티브 오브젝트 리스트가 우선순위 값의 내림차순으로 정렬된다. 리스트 내의 첫번째 엔트리는 최고 우선순위인 액티브 오브젝트를 갖는다. 이것은 개선된 PARM에서는 불투명의 오브젝트만 종속(submit)되기 때문이다. 다음으로, 단계 855로 진행하여 AOL[0]에서의 오브젝트의 필링을 프레임스토어에 출력한다. 단계 857에서 본 루틴은 종료된다.
개선된 PARM(IPARM)에 기초한 렌더링 태스크(RT)는 IPART라고 한다. IPART는 다음과 같은 종류의 데이터를 렌더링하는데 이용될 수 있다:
1. 연속적인 비중첩 불투명 오브젝트; 및
2. 한 세트의 클립과, 이 클립에 의해 클리핑되는 모든 불투명 오브젝트들(단, 클리핑되는 모든 오브젝트가 불투명해야 함).
<7.0 제2 구성: PSRM 및 IPARM을 이용한 렌더링>
렌더링 모듈(1511)에 의해 이용되는 제2 렌더링 구성은 전술한 픽셀 순차 렌더링 방식(PSRM)을 6.0 섹션의 개선된 페인터스 알고리즘 렌더링 방식(IPARM)과 결합시킨다. 첫번째 오브젝트와 최종 콤포지팅 오브젝트 사이의 모든 오브젝트는 제1 구성에서와 마찬가지로 PSRM을 이용하여 렌더링된다. 후속한 모든 오브젝트는 불투명한 것이 보증되므로, 개선된 PARM(IPARM)에 의해 렌더링되기에 적합한 후보들이다. 제2 구성에서, 연속적인 비중첩 오브젝트들은 IPART에 의한 렌더링을 위해 그룹화된다.
<7.1 제2 구성: 오브젝트 리스트>
IPARM의 바람직한 구현예에서, 오브젝트 리스트라고 하는, 새로운 리스트가 유지된다. 각 오브젝트가 처리되어 디스플레이 리스트 생성기(1507)에 의해 에지 기반 디스플레이 리스트에 추가될 때마다 오브젝트 리스트에 엔트리가 추가된다. 오브젝트 리스트 내의 각 엔트리는 다음의 것들을 보유한다:
- 그 오브젝트를 기술하는 에지 리스트를 참조하는 시작 및 끝 인덱스;
- 그 오브젝트의 바운딩 박스; 및
- 그 오브젝트가 콤포지팅을 요하는지의 여부를 나타내는 플래그.
한 세트의 오브젝트들이 하나 이상의 클립에 의해 클리핑되는 경우에는, 첫번째 클립과 클리핑되는 최종의 오브젝트 사이의 전체 에지들의 세트가 단일의 오브젝트인 것으로 간주된다. 이 경우에는, 바운딩 박스는 상기 세트의 오브젝트들과 하나 이상의 클립의 바운딩 박스 전체의 결합체(union)이다.
따라서, 예를 들어, 도 6a의 클립(650, 652) 및 사각형(654)의 메인 에지 리스트 {E1, E2, E3, E4, E5, E6}는 단일의 오브젝트인 것으로 간주된다.
도 5a의 오브젝트 802 및 804의 경우, 메인 에지 리스트는 {E1, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11, E12}이고, 오브젝트 리스트는 다음의 2개의 엔트리를 갖는다:
- 엔트리 1은 시작 인덱스로서 제로(0)(에지 E1을 참조함), 끝 인덱스로서 6(에지 E6을 참조함), 바운딩 박스로서 BB1(즉, 박스 803), 'FALSE'의 콤포지팅 플래그를 갖는다.
- 엔트리 2는 시작 인덱스로서 7, 끝 인덱스로서 11, 바운딩 박스로서 BB2(즉, 박스 805), 'FALSE'의 콤포지팅 플래그를 갖는다.
<7.2 제2 구성: 디스플레이 리스트 생성>
도 9a 및 도 9b는 제2 구성에서 사용되는 디스플레이 리스트와 이에 대응하 는 오브젝트 리스트의 생성을 예시한 것이다. 본 방법에서는 하나의 오브젝트는 단지 하나의 클립에 의해서만 클리핑될 수 있다고 가정한다. 클립은 렌더링되는 오브젝트의 속성(property)인 것으로 고려된다. 이것은 MS 윈도우즈 GDI와 같은 시스템에서 일상적이다. 도 9a 및 도 9b의 단계들은 디스플레이 리스트 생성 모듈(1507)에 의해 수행된다.
단계 901에서, 디스플레이 리스트 생성 모듈(1507)은 현재의 클립 'CurClip'을 NULL로 설정하고 최종 콤포지팅 오브젝트를 '-1'로 초기화한다. 카운터 'i'는 제로(0)로 설정되며, 오브젝트 리스트 내의 첫번째 엔트리 OL[0]에는 다음의 값이 할당된다:
OL[0].Start = 0
다음으로, 단계 903으로 진행하여 처리할 추가의 오브젝트가 남아 있는지의 여부를 체크한다. 해당 페이지에 대해 처리할 오브젝트가 더 이상 존재하지 않는다면(단계 903에서 No), 본 처리는 단계 919에서 종료된다. 그렇지 않다면(단계 903에서 Yes), 단계 905로 진행하여 (오브젝트가 존재한다면) 오브젝트의 클립을 에지 및 레벨 데이터로 분해하고, 오브젝트를 에지, 레벨 데이터 및 필링 데이터로 분해한다. 모듈(1507)은 에지들을 에지 리스트에 추가한다. 오브젝트가 콤포지팅을 요한다면, 변수 'composites'는 'TRUE'로 설정되며 최종 콤포지팅 오브젝트는 카운터 'i'로 설정된다. 그렇지 않고 오브젝트가 콤포지팅을 요한다면, 변수 'composites'는 'FALSE'로 설정된다.
다음으로, 단계 907에서 모듈(1507)은 오브젝트가 클립인지의 여부를 체크한 다. 오브젝트가 동반하는 클립을 갖고 있지 않다면, 단계 909로 진행하여 변수 'bbox'를 묘화되는 오브젝트의 바운딩 박스로 설정된다. 그런 다음, 단계 917에서 오브젝트 리스트 내의 i번째 엔트리, OL[i]에는 다음의 값들이 부여된다:
OL[i].End = (현재 에지 리스트의 크기) - 1
OL[i].BBox = 변수 'bbox'
OL[i].Composites = 변수 'composites'
카운터 'i'는 1만큼 증가되며, 오브젝트 리스트 내의 i번째 엔트리, OL[i]에는 다음의 값들이 부여된다:
OL[i].Start = 현재 에지 리스트의 크기
단계 917 다음에는 단계 903으로 진행하여 처리할 추가의 오브젝트가 남아 있는지의 여부를 판정한다.
단계 907에서 오브젝트가 동반하는 클립을 갖는다면(단계 907에서 Yes), 단계 911로 진행하여 동반하는 클립을 변수 'CurClip'과 비교한다. 이들 클립이 동일하다면(단계 911에서 Yes), 단계 915로 진행한다.
단계 915에서 오브젝트 리스트 내의 (i - 1)번째 엔트리, OL[i-1]은 다음의 값들로 갱신된다:
OL[i-1].End = (현재의 에지 리스트의 크기) - 1
OL[i-1].BBox = OL[i-1].BBox 및 오브젝트의 바운딩 박스인 Obj.BoundingBox를 결합한 바운딩 박스
OL[i-1].Composites = OL[i-1].Composites의 값을 'composites'의 값과 비트 단위로 OR 연산한 결과
이것은 현재의 오브젝트가 콤포지팅을 요하지 않는 경우에도 OL[i-1].Composites는 'TRUE'인 채로 있게 되는 것을 보증한다.
그런 다음, 모듈(1507)은 오브젝트 리스트 내의 i번째 엔트리, OL[i]를 다음의 값들로 갱신한다:
OL[i].Start = 현재의 에지 리스트의 크기
그런 다음, 단계 903으로 진행하며, 모든 오브젝트가 처리될 때까지 계속된다.
단계 911에서 동반하는 클립이 현재의 클립 'CurClip'과 동일하지 않다면(단계 911에서 No), 단계 913으로 진행한다. 단계 913에서는, 변수 'CurClip'을 동반하는 클립 값인 'Obj.Clip'으로 설정한다. 변수 'bbox'는 오브젝트와 클립의 결합된 바운딩 박스로 설정된다. 그런 다음, 전술한 바와 마찬가지로 단계 917로 진행한다. 그런 다음, 단계 903으로 진행하며, 모든 오브젝트가 처리될 때까지 계속된다.
단계 919의 끝에서, 출력되는 것은 정렬되지 않은 메인 에지 리스트와 이에 대응하는 오브젝트 리스트이다. 또한, 최종 콤포지팅 오브젝트가 식별된 상태이다. 디스플레이 리스트 내의 오브젝트들의 총수는 카운터 'i'의 값이다.
<7.3 제2 구성: 렌더링 방법>
도 16은 제2 구성에 따른 렌더링 방식을 예시하고 있다. 단계 1601에서 렌더링 모듈(1511)은 최종 콤포지팅 오브젝트가 제로(0)보다 크거나 동일한지의 여부 를 체크한다. 그렇다면, 단계 1603에서 모듈(1511)은 OL[0].Start와 OL[last-compositing-object].End 사이의 모든 에지를 PSRT에 할당한다. 다음으로, 단계 1605에서 도 2, 도 3a, 도 4 및 도 7의 스텝들을 이용하여 렌더링 태스크가 실행된다. 그런 다음 단계 1607로 진행한다.
최종 콤포지팅 오브젝트가 제로(0)보다 작다면(단계 1601에서 No), PSRT가 불필요하므로, 단계 1603 및 단계 1605를 거치지 않고 바로 단계 1607로 진행한다.
단계 1607에서, 모듈 1511은 인덱스 'i'를 (최종 콤포지팅 오브젝트) + 1로 설정한다. 그러면 단계 1611에서 'i'를 오브젝트의 수인 'N'보다 작은지의 여부를 체크한다. 렌더링할 더 이상의 오브젝트가 존재하지 않는다면(단계 1611에서 No), 단계 1609에서 렌더링이 종료된다. 처리할 추가의 오브젝트가 남아 있다면, 단계 1613에서 모듈(1511)은 다음의 값들을 설정한다:
StartObj = i
TotalBBox = Obj[i].Bbox
i = i+1.
그러면, 단계 1615에서 Obj[i].Bbox가 TotalBbox에 존재하지 않는지의 여부 및 'i'가 'N'보다 작은지의 여부를 체크한다. 이들 조건이 충족되면(단계 1615에서 Yes), 단계 1617로 진행하여 다음의 값들을 설정한다:
TotalBbox = TotalBbox + Obj[i].Bbox
i = i+1
그런 다음 단계 1615로 복귀한다.
단계 1615에서의 조건이 충족되지 않았다면(단계 1615에서 No), 단계 1619에서 모듈(1511)은 OL[StartObj].Start와 OL[i-1].End 사이의 모든 에지를 IPART에 할당한다. 단계 1621에서 모듈(1511)은 도 2, 도 3a, 도 7 및 도 8의 스텝들을 이용하여 렌더링 태스크를 실행한다. 다음으로, 단계 1623에서 인덱스 'i'를 1만큼 증가시키고, 단계 1611로 진행하여 처리할 추가의 오브젝트가 남아 있는지의 여부를 체크한다.
제2 구성에 따른 렌더링 방법은 다음의 의사코드로 요약될 수 있다:
그 일례가 도 10a에 도시되어 있는데, 여기서는 이미지(950)가 5개의 오브젝트(951, 952, 953, 954 및 955)(우선순위 순서의 오름차순임)로 구성되어 있다. 최종 콤포지팅 오브젝트는 952이다.
사각형 951은 이미지(950)의 상부 좌측에 위치하고 있다. 반투명한 타원 952는 부분적으로 사각형 951을 덮고 있지만 다른 오브젝트들과는 접하지 않는다. 사각형 954는 이미지(950)의 상부 우측에 위치하고 있으며 다른 오브젝트들과 교차하지 않는다. 불투명한 사각형 953은 이미지(950)의 하반부에 위치하고 있으며, 불투명한 사다리꼴 955는 부분적으로 사각형 953을 덮고 있다.
제2 구성에서, 오브젝트(951 및 952)에 대한 에지들의 세트는 픽셀 순차 렌더링 방식을 이용하여 프레임스토어에 렌더링된다. 이 첫번째 렌더링 태스크(957)는 도 10b에 도시되어 있다.
오브젝트(953 및 954)는 바운딩 박스에 의해 중첩되지 않지만, 오브젝트(955)는 오브젝트(953 및 954)의 결합된 바운딩 박스와 중첩된다. 따라서, 오브젝트(953 및 954)의 에지들은 도 10c에 도시된 바와 같이 제1 PART(959)에 할당된다. 태스크(959)는 오브젝트(953 및 954)를 프레임스토어에 렌더링한다.
마지막으로, 도 10d에 도시된 바와 같이, 별도의 PART(961)를 이용하여 오브젝트(955)를 프레임스토어에 렌더링한다.
<7.4 밴딩(banding)>
타겟이 픽셀당 1비트의 단색 하프톤 출력인 경우와 같이 전체(full) 프레임스토어를 이용하는 것이 가능한 경우가 있을 수 있다. 이러한 출력을 위한 프레임스토어는 대략 600DPI에서 A4 한 페이지당 4MB를 필요로 한다. 4bpp CMYK와 같이 비트 깊이가 더 크거나, 또는 DPI가 보다 높거나 페이지가 더 큰 경우에는, 페이지의 폭과 동일한 라인당 픽셀수의 밴드를 할당하는 것이 가능할 뿐이며, 또한 최대 주사선의 수도 페이지 높이보다 훨씬 작은 수인 예를 들어 256개의 주사선을 할당 하는 것이 가능할 뿐이다.
전체 프레임스토어를 이용하는 것이 가능한 경우에는, 렌더링 태스크를 완전히 순차적으로 실행할 수 있다. 예를 들어 이미지 950을 처리하는 경우, PSRT(957)를 실행하여 모든 픽셀을 프레임스토어에 렌더링한다. 그런 다음, 나머지의 각 IPART(959, 961)를 실행하여 오브젝트(953-955)를 프레임스토어에 렌더링한다. 연속적인 IPART가 중첩되지 않는다면 각각의 IPART를 병행하여 렌더링할 수 있다.
밴드스토어만을 이용할 수 있는 경우라면, 태스크들은 부분적으로 순차적으로 실행되는데, 현재의 밴드 상에 존재하는(visible) 태스크 부분만 렌더링된다. 연속적인 IPART가 밴드 내에서 중첩되지 않는다면, 각각의 IPART를 병행하여 렌더링할 수 있다.
도 10a의 예에서는 3개의 렌더링 태스크가 존재한다. 태스크 957은 오브젝트 951 및 952를 렌더링한다. 태스크 959는 오브젝트 953 및 954를 렌더링하며, 태스크 961은 오브젝트 955를 렌더링한다.
도 10e에서와 같이 페이지가 2개의 밴드, B1 및 B2로 분할된다면, 밴드 B1에 대해서는 태스크 957 및 959가 액티브이다. 태스크 957이 H1 주사선에 대한 밴드스토어에 렌더링된 다음, 태스크 959가 H1 주사선에 대한 밴드스토어에 렌더링된다. 그런 다음 밴드스토어는 프린터에 보내진다. 태스크는 모든 에지가 처리 완료될 때까지 메모리에 존속한다(persist). 태스크 957은 밴드 B1 내에서 완결되지만, 태스크 959는 (오브젝트 953에 대해) 처리되어야 하는 추가의 에지를 갖는다. 두번째 밴드 B2에서 태스크 961은 액티브이다. 태스크 959가 밴드스토어에 렌더링된 다음, 태스크 961이 밴드스토어에 렌더링된다. 그런 다음 밴드스토어는 프린터에 보내진다.
이러한 밴딩 방법은 본 명세서에 기재된 모든 렌더링 방식에 적용될 수 있다.
<8.0 배타적 픽셀 순차 렌더링 방식(XPSRM)>
제2 구성에 따른 렌더링 방식은 최종 콤포지팅 오브젝트가 디스플레이 리스트 내의 전체 오브젝트의 수와 비교하여 적은 경우에 유용하다. 최악의 경우, 디스플레이 리스트 내의 최종의 오브젝트가 콤포지팅을 요한다면, 제2 구성에서는 모든 오브젝트가 PSRM을 이용하여 렌더링될 것이다. 이러한 경우는 콤포지팅을 요하는 오브젝트들이 국소(localized) 영역 내에 보유되어 있고 다수의 오브젝트들과 중첩되지 않는 경우에 종종 있을 수 있다.
아래에서는, 지명된 오브젝트들의 픽셀들만 출력하는 배타적 픽셀 순차 렌더링 방식(XPSRM)이라고 하는 변형된 PSRM에 대해 설명한다.
XPSRM에서는, 레벨 데이터 구조에 새로운 멤버가 추가된다. 이 멤버를 'ExclusiveOutput'라고 한다. 픽셀 런은 'ExclusiveOutput' 멤버가 '1'로 설정되어 있는 적어도 하나의 오브젝트가 액티브 오브젝트 리스트(AOL)에 포함된 경우에만 출력(emit)된다. AOL 자신은 'ExclusiveCount'라고 하는 새로운 멤버를 갖는다. 오브젝트가 AOL에 삽입될 때, AOL.ExclusiveCount는 object.ExclusiveOutput만큼 증가된다. 오브젝트가 AOL로부터 제거될 때, AOL.ExclusiveCount는 object.ExclusiveOutput만큼 감소된다.
XPSRM에서는 도 2에 기술된 결정 방법 및 도 3에 기술된 주사선 렌더링 방법을 이용하여 액티브 에지 리스트를 결정한다. XPSRM에서 이용되는 (클리핑을 고려한) 오브젝트 활성화 방법이 도 12에 도시되어 있으며, 이것은 도 7에 도시된 방법을 변형한 것이다.
XPSRM에서 어떤 오브젝트가 픽셀 런에 기여하는지를 판정하는 방법에 대해서는 도 13에 도시되어 있으며, 이것은 도 4에 도시된 방법을 변형한 것이다.
도 13의 방법은 도 4의 단계들을 다수 포함한다. 구체적으로, 단계들 453, 457, 459, 461, 463, 465, 467, 469, 470 및 471로 구성되는 브랜치에는 변함이 없다. 최초 단계 451은 도 13에서 단계 1301로 대체되는데, 이 단계에서는 "AOL이 공백 상태인지 또는 'AOL.ExclusiveCount = 0'인지의 여부를 체크한다. 이 조건이 충족되지 않으면(단계 1301에서 No), 단계 453으로 진행하여 단계들 453-471로 구성되는 브랜치를 실행한다.
단계 1301에서의 조건이 충족되면, 단계 471로 진행한다. 도 4의 방법과의 두번째 차이점은 XPSRM에서는 단계 455(화이트 출력 단계)가 생략된 점이다. 따라서, XPSRM에서는 액티브 오브젝트 리스트가 공백 상태이거나 'ExclusiveOutput' 멤버가 설정되어 있는 오브젝트가 액티브 오브젝트 리스트(AOL)에 포함되어 있지 않다면 어떠한 픽셀도 출력하지 않는다.
도 12는 도 7의 오브젝트 활성화/비활성화 루틴을 변형한 것이다. 도 7 및 도 12의 방법은 단계 773 및 단계 771이 각각 단계 1223 및 단계 1221로 대체된 점 을 제외하고는 동일하다. 단계 1223 및 단계 1221은 액티브 오브젝트 리스트의 새로운 멤버, 'AOL.ExclusiveCount'를 증가 또는 감소시키는 추가의 태스크를 포함한다.
도 12에서 입력되는 것은 도 7에서와 같이 액티브 오브젝트 리스트 및 현재의 에지에 의해 포인팅된 레벨 데이터 구조의 리스트이다. 도 12에서 출력되는 것은 수정된 액티브 오브젝트 리스트 및 수정된 'ExclusiveCount' 변수이다.
단계 773을 대체하는 단계 1223에서는 (AOL에 오브젝트가 존재한다면) AOL로부터 오브젝트를 제거하고 AOL.ExclusiveCount로부터 obj.ExclusiveOutput를 감산한다. 단계 771을 대체하는 단계 1221에서는 (AOL에 오브젝트가 존재하지 않는다면) AOL에 오브젝트를 삽입하고 AOL.ExclusiveCount에 obj.ExclusiveOutput를 가산한다.
XPSRM에서는 디스플레이 리스트에 복수의 오브젝트를 추가하는 것을 허용하지만, 단지 몇개의 명시적으로 지정된 오브젝트만 나타나야 한다. XPSRM을 이용하는 렌더링 태스크를 XPSRT라고 한다.
도 11a는 그 일례를 도시한 것이다. 이미지(1100)는 영역(1110) 내에 첫번째 100개의 오브젝트를 포함한다. 첫번째 100개의 오브젝트는 불투명한 텍스트 오브젝트이다. 이미지(1100)는 5개의 벡터 그래픽 오브젝트 1101, 1102, 1103, 1104 및 1105를 포함하는데, 오브젝트 1105는 오브젝트 1101, 1102 및 1103에 콤포지팅된다. 이들 오브젝트의 다음에는 영역(1120) 내의 보다 많은 수의 텍스트 오브젝트가 존재한다. 전술한 제1 및 제2 구성에 따른 방법에서는, 비록 오브젝트 1105 가 영역(1110)에 아무런 영향을 주지 않음에도 불구하고, 오브젝트 1105가 최종 콤포지팅 오브젝트이므로, 첫번째 텍스트 오브젝트와 오브젝트 1105 사이의 모든 오브젝트는 PSRM을 이용하여 렌더링될 것이다.
이와 비교하여, XPSRM을 이용하면, 오브젝트 1105는 단독으로 프레임스토어에 렌더링되어 오브젝트 1105만 출력되지만, 도 11b에 도시된 바와 같이 오브젝트 1105는 오브젝트 1101, 1102 및 1103과 콤포지팅된다.
오브젝트 1105의 ExclusiveOutput 멤버는 1로 설정됨으로써, XPSRT에서는 오브젝트 1105가 액티브일 때에만 픽셀 런이 출력되는 것을 보증한다. 이러한 픽셀 런의 경우, 오브젝트 1101, 1102, 1103 및 1105의 에지들은 XPSRT에 종속된다. 오브젝트 1101의 에지는 E1 및 E2이며, 오브젝트 1102의 에지는 E3 및 E4이며, 오브젝트 1103의 에지는 E5 및 E6이며, 오브젝트 1105의 에지는 E9 및 E10이다. 이들 에지는 도 11c에서 주사선 1130과 관련하여 도시되어 있다. XPSRT에 전달된 에지들은 {E1, E2, E3, E4, E5, E6, E9, E10}이 된다. E7 및 E8은 오브젝트 1104에 속하므로 렌더링되는 에지에는 포함되지 않았다.
이 에지 리스트는 {E1, E2, E3, E4, E9, E10, E5, E6}로 정렬되며, 이들 에지는 일반적으로 도 2 및 도 3a에서와 같이 트랙킹된다.
주사선 1130의 경우, 액티브 에지 리스트는 {E1, E9, E2, E3, E10, E4}이다. 도 3a, 도 12 및 도 13을 참조하면, 단계 351에서 CurX는 제로(0)로 설정되며, 'ActiveObjectList'는 공백 리스트로 설정된다. 단계 353에서 E1이 판독된다. E1.X > CurX이므로 단계 357로 진행한다. E1.X는 N으로 설정되고, 단계 361에서 단계 3101로 진행한다. AOL은 공백 상태이므로 아무런 픽셀도 출력되지 않고, 단계 471에서 단계 363으로 복귀한다. CurX는 E1.X로 갱신되며, 단계 363에서 E1.X는 PageWidth와 동일하므로 본 루틴은 단계 353으로 복귀한다.
단계 353에서 E1이 판독된다. E1.X = CurX이므로 단계 359로 진행하여 AEL로부터 E1를 제거하고, 도 12의 단계 751을 호출한다. 단계 751에서 i는 제로(0)로 설정되며 'clip_delta'는 제로(0)로 설정된다. 단계 753에서 obj는 E1.OL[0] = 1101로 설정된다. 단계 755에서 오브젝트 1101은 클립이 아니므로 단계 768에서 obj.ClipCount는 제로(0)만큼 증가된다. 단계 769에서, 오브젝트는 액티브로 되며, 단계 1221에서 오브젝트가 AOL에 렌더링되며 AOL.ExclusiveCoun가 1101.ExclusiveCount인 제로(0)만큼 증가된다. 단계 763에서 i는 1만큼 증가되며, 모든 오브젝트가 단계 765에서 처리되었으므로 본 루틴은 단계 767에서 종료된다. 다음으로, 단계 360에서 다음의 주사선에 대해 에지 E1.X가 갱신된다. 그런 다음 본 처리는 단계 353으로 복귀된다.
표 D는 수행되는 주요한 단계들 및 액션들을 요약한 것이다.
<9.0 제3 구성: XPSRM 및 IPARM을 이용한 렌더링>
제3 렌더링 구성은 전술한 배타적 픽셀 순차 렌더링 방식(XPSRM)과 개선된 페인터스 알고리즘 렌더링 방식(IPARM)을 모두 이용한다.
<9.1 제3 구성: 디스플레이 리스트의 생성>
제3 렌더링 구성에서, 디스플레이 생성 모듈(1507)은 도 9의 방법을 이용하되 단계 905을 변형하여 디스플레이 리스트를 생성한다.
오브젝트가 콤포지팅을 요한다면 콤포지팅 리스트라고 하는 제3의 리스트에 새로운 엔트리를 추가하도록 한 로직이 단계 905에 추가된다. 단계 905의 수정은 다음의 의사코드로 요약될 수 있다:
콤포지팅 리스트 내의 각 엔트리는 오브젝트들의 리스트로서, 그 첫번째 엔트리는 콤포지팅 오브젝트 자신이며, 그 다음에는 콤포지팅 오브젝트 아래의 모든 오브젝트가 뒤따르는데, 여기서 "아래(beneath)"라 함은 "우선순위가 더 낮고 바운딩 박스에 의해 중첩되는 것"을 의미한다. 콤포지팅 리스트는 우선순위 순서의 오름차순으로 되어 있어, 콤포지팅 오브젝트 내의 최종의 오브젝트는 콤포지팅 오브젝트 아래의 Z-순위의 최고 우선순위 오브젝트이다. 각 콤포지팅 오브젝트에 종속하는 오브젝트들의 리스트는 렌더링 모듈(1511)에 의한 렌더링 처리 동안 구성된다. 여기서는 리스트로서 설명하고 있지만, 트리와 같은 다른 데이터 구조를 이용 하여 동일한 정보를 포획(capture)할 수 있다.
도 9a 및 도 9b의 변형된 방법에서 출력되는 것들은 다음과 같다:
정렬되지 않은 메인 에지 리스트;
대응하는 오브젝트 리스트; 및
콤포지팅 리스트.
또한, 최종 콤포지팅 오브젝트는 식별된 상태이며, 디스플레이 리스트 내의 오브젝트들의 총수는 카운터 'i'의 값이다.
그러면, 렌더링 시, 각 오브젝트를 오브젝트 리스트 내의 첫번째 것부터 최종의 것까지 처리하면서, 그 오브젝트의 바운딩 박스가 콤포지팅 리스트 내의 모든 엔트리에 걸쳐서 체크된다. 현재 고려되는 오브젝트의 바운딩 박스가 콤포지팅 오브젝트의 바운딩 박스와 중첩되면, 현재 고려되는 오브젝트는 콤포지팅 리스트 내의 대응하는 엔트리에 추가된다.
도 11a의 예에서, 제3 구성에 따라 생성된 콤포지팅 리스트는 하나의 엔트리를 갖는다. 그러면, 엔트리가 4개의 오브젝트 {1105, 1101, 1102, 1103}로 구성되게 된다.
<9.2 제3 구성: 렌더링>
도 17은 제3 렌더링 구성에 따른 렌더링 방법을 도시한 것이다. 초기화 단계 1701에서, 렌더링 모듈(1511)은 인덱스 'i'를 제로(0)로 설정하고 디스플레이 리스트 내의 오브젝트의 총수를 N으로 설정한다. 다음으로, 단계 1703에서 인덱스 'i'가 N보다 작은지의 여부를 체크한다. 그렇지 않다면, 본 렌더링 처리는 단계 1705에서 종료된다.
'i'가 N보다 작다면(단계 1703에서 Yes), 단계 1707로 진행하여 i < N인지의 여부 및 OL[i].Composites = 'FALSE'인지의 여부를 체크한다. 이들 조건이 충족되면(단계 1707에서 Yes), 단계 1709에서 모듈(1511)은 다음의 값들을 설정한다:
StartObj = i
TotalBBox = OL[i].Bbox
i = i+1
단계 1709에서는 또한 바운딩 박스 및 우선순위에 기초하여 'i'에 관한 콤포지팅 리스트 CL 내의 모든 엔트리에 엔트리 i를 추가한다.
다음으로, 단계 1711에서 3가지 조건을 체크한다. OL[i].Bbox가 TotalBBox에 존재하고, i < N이고, 및 OL[i]가 콤포지팅 리스트 CL 내에 존재하지 않는다면, 단계 1713으로 진행한다. 그렇지 않다면(단계 1711에서 No), 단계 1715로 진행한다.
단계 1713에서, 렌더링 모듈(1511)은 현재 오브젝트 OL[i]의 바운딩 박스를 전체 바운딩 박스 TotalBBox에 추가하고 'i'를 증가시킨다. 그런 다음, 단계 1713에서 OL[i]에 관한 콤포지팅 리스트 CL[i] 내의 모든 엔트리에 OL[i]를 추가한다. 다음으로, 단계 1711로 복귀하여 다음의 오브젝트를 처리한다.
단계 1715에서 렌더링 모듈(1511)은 'OL[StartObj].Start'와 'OL[i-1].End' 사이의 모든 에지를 IPART에 할당한다. 그런 다음, 단계 1717에서 도 2, 도 3a, 도 7 및 도 8의 메쏘드 스텝들을 이용하여 렌더링 태스크를 실행한다. 그런 다음, 본 처리는 단계 1719로 진행한다. 단계 1719는 단계 1707에서의 조건이 충족되지 않은 경우(단계 1707에서 No)에도 실행된다.
단계 1719에서는 'i'가 'N'보다 작은지의 여부 및 'OL[i].Composites'가 'TRUE'인지의 여부를 체크한다. 이들 조건이 충족되지 않는다면, 단계 1703으로 복귀한다. 이들 조건이 충족되면(단계 1719에서 Yes), 단계 1721에서 렌더링기(1511)는 현재의 오브젝트 OL[i]를 OL[i]에 관한 콤포지트 리스트 CL 내의 모든 엔트리에 추가한다. 그런 다음, 렌더링기는 XPSRM(도 2, 도 3a, 도 12 및 도 13의 메쏘드 스텝들)을 이용하여 'CL[OL[i].CompositeIndex' 내의 모든 오브젝트를 렌더링한다. 인덱스 'i'가 증가되며 단계 1703으로 복귀하여 다음의 오브젝트를 고려한다.
도 17의 방법은 다음의 의사코드에 의해 기술될 수도 있다:
도 11a의 예에서 오브젝트 리스트는 다음의 오브젝트들로 구성된다:
O1, ..., O100, O101, O102, O103, O104, O105, O106, ..., O150,
여기서, O1-O100는 텍스트 오브젝트 1110이며, O101-O105는 벡터 그래픽 오브젝트 1101-1105이며, 오브젝트 O106-O150는 텍스트 오브젝트 1120이다.
콤포지팅 리스트는 CL[0] = O105이다. 이 콤포지팅 리스트는 디스플레이 리스트 생성 모듈(1507)에 의해 결정된다.
렌더링 시, O1 내지 O100의 오브젝트들은 바운딩 박스에 의해 CL[0]와 중첩되지 않고 모두 우선순위에 있어서 CL[0]보다 작으므로, 각 오브젝트 O1-O100는 하나 이상의 IPARM을 이용하여 렌더링된다.
상기한 의사코드의 line 4와 line 5 사이에는 렌더링기(1511)에 의해 다음의 작업이 수행된다:
Line 7: O101은 우선순위에서 CL[0]보다 작고 바운딩 박스에 의해 CL[0]과 중첩되므로, O101이 CL[0]에 추가된다.
Line 11: O102는 우선순위에서 CL[0]보다 작고 바운딩 박스에 의해 CL[0]과 중첩되므로, O102가 CL[0]에 추가된다.
Line 11: O103은 우선순위에서 CL[0]보다 작고 바운딩 박스에 의해 CL[0]과 중첩되므로, O103이 CL[0]에 추가된다.
Line 11: O104는 우선순위에서 CL[0]보다 작고 바운딩 박스에 의해 CL[0]과 중첩되지 않으므로, O104는 CL[0]에 추가되지 않는다.
Line 9: O105는 콤포지팅 오브젝트이므로 루프가 종료된다.
Line 14: 오브젝트들 O101, 102, 103 및 104가 IPARM을 이용하여 렌더링된다.
Line 4: O105는 콤포지팅 리스트이므로 루프가 종료된다.
Line 16: OL[i] = O105 및 O105.Composite = TRUE의 여부를 체크한다.
Line 17: O105보다 높은 우선순위를 갖는 엔트리가 콤포지팅 리스트 CL에 존재하지 않으므로, Line 18로 진행한다.
Line 18: CL[0] 내의 엔트리는 O105, O101, O102, O103이다. 따라서 오브젝 트들 O101, O102, O103 및 O105가 XPSRT에 할당되며 프레임스토어에 렌더링된다.
Line 3: i = 106이며, Line 4와 Line 15 사이에서, 추가의 모든 오브젝트들(1120)이 하나 이상의 IPARM을 이용하여 렌더링된다.
<10.0 기타의 구성>
이상의 3가지 구성에 대한 추가의 변형으로서, 렌더링 시에 일단 하나의 렌더링 태스크가 시작되고 나면, 현재의 렌더링 태스크가 실행되고 중에 추가의 렌더링 태스크를 적어도 식별할 수는 있다. 다음에 식별된 렌더링 태스크가 현재 실행되고 있는 렌더링 태스크와 중첩되지 않는 바운딩 박스를 갖는다면, 다음에 식별된 렌더링 태스크도 렌더링을 시작할 수 있다. 이러한 처리는 다음에 식별된 렌더링 태스크가 현재 실행되는 렌더링 태스크와 중첩되는 바운딩 박스를 갖거나 또는 렌더링이 완료될 때까지 계속될 수 있다.
<산업상 이용가능성>
이상의 설명으로부터 알 수 있는 바와 같이, 전술한 구성은 컴퓨터 및 이미지 처리 기술분야에 적용될 수 있다.
이상의 설명에서는 본 발명의 단지 일부의 실시예만을 설명하였지만, 본 발명의 범주 및 사상으로부터 일탈하지 않는 범위 내에서 각종의 수정 및/또는 변형이 가능하며, 따라서 전술한 실시예들은 예시를 위한 것일 뿐, 이것에 국한되지 않는다.
본 명세서에서, "구비하는"이라는 단어는 "주로 그것을 포함하되 그것만을 포함하는 것은 아님" 또는 "갖는" 또는 "포함하는"을 의미하는 것이며 "단지 무엇 만으로 이루어진"을 의미하는 것은 아니다. "구비하는"이라는 단어의 변형으로서 "구비한다"는 그에 대응하는 여러가지의 변형된 의미를 갖는다.
<표 A: 도 1의 예에 도 2의 방법을 적용한 경우>
<표 B: 도 1a의 주사선에 도 3a의 방법을 적용한 경우>
<표 C: 주사선(662)의 첫번째 3개의 에지에 도 7의 방법을 적용한 경우>
주사선 662에 대한 액티브 에지 리스트(AEL)는 {E5, E1, E3, E4, E2, E6}이다.
첫번째 에지 E5는 다음과 같이 처리된다:
단계 751에서, 카운터 'i'는 제로(0)로 초기화되며, 변수 'clip_delta'는 제로(0)로 초기화된다.
두번째 에지 E1은 다음과 같이 처리된다:
단계 751에서, 카운터 'i'는 제로(0)로 초기화되며, 변수 'clip_delta'는 제로(0)로 초기화된다.
E3과 연관된 오브젝트는 다음과 같이 처리된다:
단계 751에서, 카운터 'i'는 제로(0)로 초기화되며, 변수 'clip_delta'는 제 로(0)로 초기화된다.
이 시점에서, AOL은 오브젝트로서 사각형(654)을 보유하며, E3과 E4 사이의 픽셀 런은 이제 출력될 수 있으며, 그 픽셀 런은 필링 F3에 저장된 픽셀 데이터로 구성된다.
<표 D: 도 11의 주사선(1130)에 제3 구성을 적용한 경우>
전술한 바와 같이, 본 발명에 따른 그래픽 오브젝트의 렌더링 방법에서는, 기존의 구성에서의 하나 이상의 불이익을 실질적으로 극복 또는 적어도 완화하는 것이 가능하다.
Claims (38)
- 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하는 방법으로서,상기 리스트 내의 오브젝트들을 제1 세트의 오브젝트들과 제2 세트의 오브젝트들 중 적어도 하나에 할당하는 단계;상기 제1 세트의 오브젝트들을 제1 렌더링 방식을 이용하여 이미지 스토어에 렌더링하는 단계 - 상기 제1 렌더링 방식은 상기 제1 세트의 오브젝트의 일부가 상기 제1 세트의 오브젝트들의 렌더링된 출력에 기여하는지의 여부를 판정하며, 만약 기여한다면, 상기 제1 렌더링 방식은 상기 일부를 렌더링함 -; 및상기 제2 세트의 오브젝트들을 제2 렌더링 방식을 이용하여 상기 이미지 스토어에 렌더링하는 단계 - 상기 제2 렌더링 방식은 상기 제2 세트 내의 각 오브젝트를 상기 제2 세트 내의 다른 오브젝트들과 독립적으로 렌더링함 -를 포함하는 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하는 방법.
- 제1항에 있어서,상기 리스트 내의 오브젝트들은 최저 우선순위 오브젝트(lowest-priority object)로부터 최고 우선순위 오브젝트(highest-priority object)까지의 우선순위 순서를 가지며, 상기 리스트는 콤포지팅(compositing)을 요하는 최고 우선순위 오브젝트인 최종 콤포지팅 오브젝트(last-compositing object)를 가지며,상기 할당하는 단계는,상기 리스트 내의 오브젝트들 중 최저 우선순위 오브젝트로부터 최종 콤포지팅 오브젝트까지의 오브젝트들을 상기 제1 세트의 오브젝트들에 할당하는 하위 단계; 및상기 리스트 내의 오브젝트들 중 상기 최종 콤포지팅 오브젝트보다 우선순위가 높은 오브젝트들을 상기 제2 세트의 오브젝트들에 할당하는 하위 단계를 포함하는 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하는 방법.
- 제1항에 있어서,상기 리스트 내의 오브젝트들은 최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서를 가지며, 상기 오브젝트들은 렌더링되어 픽셀들을 구성하며, 상기 제1 렌더링 방식은, 렌더링되는 하나 이상의 연속한 픽셀들의 런(pixel run) 각각에 대해:상기 제1 세트의 오브젝트들 중 상기 픽셀들의 런에 대해 액티브인 오브젝트들을 결정하는 단계;상기 결정된 액티브 오브젝트들 중 최고 우선순위를 갖는 불투명(opaque) 오브젝트를 식별하는 단계; 및상기 최고 우선순위인 불투명 오브젝트, 및 상기 최고 우선순위 불투명 오브젝트보다 우선순위가 높은 불투명이 아닌 액티브 오브젝트들을 렌더링하는 단계를 포함하는 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하는 방법.
- 제1항에 있어서,상기 리스트 내의 오브젝트들은 최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서를 가지며, 상기 오브젝트들은 렌더링되어 픽셀들을 구성하며, 상기 제2 렌더링 방식은, 렌더링되는 연속한 픽셀들의 런 각각에 대해:상기 제2 세트의 오브젝트들 중 현재의 오브젝트가 액티브인지의 여부를 체크하는 단계 - 상기 제2 세트는 우선순위가 증가하는 순서로 고려됨 -; 및상기 현재의 오브젝트가 액티브이라면 상기 현재의 오브젝트를 상기 이미지 스토어에 렌더링하는 단계를 포함하는 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하는 방법.
- 제4항에 있어서,상기 제2 렌더링 방식은,상기 제2 세트의 오브젝트들 중 한 그룹의 연속적인 오브젝트들을 검색하는 하위 단계 - 상기 그룹 내의 오브젝트들은 상기 그룹 내의 다른 오브젝트들과 중첩되지 않음 - ; 및상기 그룹이 발견된 경우에는, 상기 그룹 내의 오브젝트들을 상기 이미지 스토어에 동시에 렌더링하는 하위 단계를 포함하는 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하는 방법.
- 제5항에 있어서,각 오브젝트의 최대 크기(extent)는 바운딩 박스(bounding box)에 의해 표기되며, 상기 그룹 내의 오브젝트들의 바운딩 박스들은 상기 그룹 내의 다른 오브젝트들의 바운딩 박스들과 중첩되지 않는 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하는 방법.
- 제4항에 있어서,상기 제2 세트의 오브젝트들 내의 복수의 연속적인 오브젝트들이 클립(clip) 오브젝트에 의해 클리핑된 경우에는, 상기 복수의 오브젝트들이 상기 제1 렌더링 방식을 이용하여 렌더링되는 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하는 방법.
- 제1항에 있어서,상기 오브젝트들의 리스트를 생성하는 단계를 더 포함하며,상기 리스트는 각 오브젝트에 대해:상기 오브젝트를 기술하는 한 세트의 하나 이상의 에지들;상기 오브젝트의 최대 크기를 나타내는 바운딩 박스; 및상기 오브젝트가 콤포지팅을 요하는지의 여부를 나타내는 플래그를 구비하는 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하는 방법.
- 제8항에 있어서,한 그룹의 오브젝트가 하나 이상의 클립 오브젝트들에 의해 클리핑된 경우에는, 상기 클립 오브젝트들 중 첫번째 오브젝트와 상기 그룹의 오브젝트들 중 클리핑되는 마지막 오브젝트 사이의 에지(edge)들이 단일 오브젝트로서 상기 리스트에 부가되는 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하는 방법.
- 제1항에 있어서,상기 리스트 내의 오브젝트들은 최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서를 가지며, 상기 할당하는 단계는:상기 리스트 내의 오브젝트들을 우선순위가 증가하는 순서로 고려하는 하위 단계; 및현재 고려되는 각각의 오브젝트에 대해:상기 현재의 오브젝트가 콤포지팅을 요하지 않는다면, 상기 현재의 오브젝트를 상기 제2 세트의 오브젝트들에 배치하고;상기 현재의 오브젝트가 콤포지팅을 요한다면:(i) 상기 현재의 오브젝트보다 우선순위가 낮고 바운딩 박스가 상기 현재의 오브젝트의 바운딩 박스와 중첩되는 오브젝트들을 결정하는 단계와;(ii) 상기 현재의 오브젝트 및 상기 결정된 오브젝트들을 상기 제1 세트의 오브젝트들에 배치하는 단계를 수행하는 하위 단계를 포함하는 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하는 방법.
- 제10항에 있어서,상기 현재의 오브젝트의 에지들 내에 존재하는 상기 결정된 오브젝트들의 부분들은 상기 제1 세트의 오브젝트들에 배치되는 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하는 방법.
- 제1항에 있어서,상기 이미지 스토어는 상기 이미지 중 현재 고려되는 부분을 저장하는 밴드 스토어이며, 상기 제1 및 제2 렌더링 방식은 상기 이미지 중 현재 고려되는 부분에 존재하는 오브젝트들을 렌더링하는 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하는 방법.
- 제1항에 있어서,상기 할당하는 단계는 상기 제1 렌더링 방식 및 상기 제2 렌더링 방식에 의해 각각 렌더링되는 제1 렌더링 태스크들 및 제2 렌더링 태스크들에 오브젝트들을 할당하며, 복수의 렌더링 태스크는 동시에 처리되는 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하는 방법.
- 오브젝트 기반 이미지를 렌더링하는 방법으로서,상기 이미지의 오브젝트들을 최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 리스트화하는 디스플레이 리스트를 수신하는 단계 - 상기 디스플레이 리스트는 콤포지팅을 요하는 최고 우선순위 오브젝트인 최종 콤포지팅 오브젝트를 가짐 -;상기 디스플레이 리스트 내의 오브젝트들 중 상기 최저 우선순위 오브젝트로부터 상기 최종 콤포지팅 오브젝트까지의 오브젝트들에 대해 수행되는 제1 렌더링 태스크를 처리하는 단계; 및상기 디스플레이 리스트 내의 오브젝트들 중 상기 최종 콤포지팅 오브젝트보다 우선순위가 높은 하나 이상의 오브젝트들에 대해 수행되는 적어도 하나의 제2 렌더링 태스크를 처리하는 단계를 포함하며,상기 제1 렌더링 태스크는 오브젝트의 일부가 상기 제1 렌더링 태스크에 의해 처리되는 상기 오브젝트들의 렌더링된 출력에 기여하는지의 여부를 판정하고, 만약 기여한다면, 상기 일부를 렌더링하며,상기 제2 렌더링 태스크는 오브젝트들을, 상기 제2 렌더링 태스크에 의해 처리되는 다른 오브젝트들과 독립적으로 이미지 스토어에 렌더링하는 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하는 방법.
- 제14항에 있어서,중첩되지 않고 연속적인 우선순위 순서를 갖는 복수의 오브젝트들은 단일의 제2 렌더링 태스크에 할당되는 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하는 방법.
- 그래픽 오브젝트들로서 표현되는 데이터에 의해 기술된 이미지를 형성하는 방법으로서,(a) 상기 이미지를 기술하는 오브젝트들의 리스트를 수신하는 단계 - 상기 오브젝트들은 최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 정렬됨 -; 및(b) 상기 리스트 내의 오브젝트들을 우선순위가 증가하는 순서로 고려하는 단계를 포함하며,현재 고려되는 각각의 오브젝트에 대해:(ba) 상기 현재 고려되는 오브젝트가 콤포지팅을 요하지 않는다면 상기 현재 고려되는 오브젝트를 제1 렌더링 방식을 이용하여 이미지 스토어에 렌더링하는 단계; 및(bb) 상기 현재 고려되는 오브젝트가 콤포지팅을 요한다면,(bb)(i) 상기 리스트 내의 오브젝트들 중 상기 현재 고려되는 오브젝트보다 우선순위가 낮으며 바운딩 박스가 상기 현재 고려되는 오브젝트의 바운딩 박스와 중첩되는 오브젝트들을 결정하는 단계; 및(bb)(ii) 상기 현재 고려되는 오브젝트 및 상기 결정된 오브젝트들을 제2 렌더링 방식을 이용하여 렌더링하는 단계 - 상기 제2 렌더링 방식은 오브젝트의 일부가 상기 제2 렌더링 방식에 의해 처리되는 한 세트의 오브젝트들의 렌더링된 출력에 기여하는지의 여부를 판정하며, 만약 기여한다면, 상기 제2 렌더링 방식은 상기 일부를 렌더링함 - 를 수행하는 단계를 포함하는 그래픽 오브젝트들로서 표현되는 데이터에 의해 기술된 이미지를 형성하는 방법.
- 제16항에 있어서,상기 단계 (bb)(ii)는 상기 현재 고려되는 오브젝트의 에지들 내에 존재하는 상기 결정된 오브젝트들의 영역들을 렌더링하는 그래픽 오브젝트들로서 표현되는 데이터에 의해 기술된 이미지를 형성하는 방법.
- 오브젝트 기반 이미지를 렌더링하는 방법으로서,(a) 상기 이미지 내의 오브젝트들을 최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 리스트화하는 디스플레이 리스트를 수신하는 단계;(b) 상기 디스플레이 리스트 내의 오브젝트들을 적어도 하나의 미리 정해진 기준에 따라서 제1 세트의 오브젝트들 및 제2 세트의 오브젝트들 중 적어도 하나에 할당하는 단계;(c) 상기 제1 세트의 오브젝트들 내의 오브젝트들을 제1 렌더링 방식을 이용하여 렌더링하는 단계; 및(d) 상기 제2 세트의 오브젝트들 내의 오브젝트들을 제2 렌더링 방식을 이용하여 렌더링하는 단계를 포함하며,상기 제1 렌더링 방식은, 렌더링되는 연속한 픽셀들의 런 각각에 대해:(ca) 상기 제1 세트의 오브젝트들 중 상기 픽셀들의 런에 대해 액티브인 오브젝트들을 결정하는 단계;(cb) 상기 결정된 액티브 오브젝트들 중 최고 우선순위인 불투명 오브젝트를 식별하는 단계; 및(cc) 상기 최고 우선순위인 불투명 오브젝트, 및 상기 최고 우선순위 불투명 오브젝트보다 우선순위가 높은 불투명이 아닌 액티브 오브젝트들을 렌더링하는 단계를 포함하며,상기 제2 렌더링 방식은, 렌더링되는 연속한 픽셀들의 런 각각에 대해:(da) 상기 제2 세트의 오브젝트들 중 현재의 오브젝트가 액티브인지의 여부를 체크하는 단계 - 상기 제2 세트는 우선순위가 증가하는 순서로 고려됨 -; 및(db) 상기 현재의 오브젝트가 액티브이라면 상기 현재의 오브젝트를 이미지 스토어에 렌더링하는 단계를 포함하는 오브젝트 기반 이미지를 렌더링하는 방법.
- 오브젝트 기반 이미지를 렌더링하는 방법으로서,최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 상기 이미지 내의 오브젝트들의 리스트를 수신하는 단계;상기 리스트 내의 오브젝트들을 적어도 한 세트의 오브젝트들에 할당하는 단계 - 상기 세트 내의 오브젝트들은 상기 리스트 내에서 연속적인 우선순위 순서를 가지며, 상기 세트 내의 각각의 오브젝트는 상기 세트 내의 다른 오브젝트와는 중첩되지 않음 -; 및상기 적어도 한 세트의 오브젝트들을 이미지 스토어에 렌더링하는 단계를 포함하는 오브젝트 기반 이미지를 렌더링하는 방법.
- 제19항에 있어서,상기 리스트는 콤포지팅을 요하는 최고 우선순위 오브젝트인 최종 콤포지팅 오브젝트를 가지며, 상기 할당하는 단계는 상기 리스트 내의 오브젝트들 중 상기 최종 콤포지팅 오브젝트보다 우선순위가 높은 오브젝트들을 고려하며, 상기 방법은,상기 리스트 내의 오브젝트들 중 상기 최저 우선순위 오브젝트로부터 상기 최종 콤포지팅 오브젝트까지의 오브젝트들을 렌더링 방식을 이용하여 렌더링하는 단계 - 상기 렌더링 방식은 오브젝트의 일부가 상기 리스트 내의 오브젝트들의 렌더링된 출력에 기여하는지의 여부를 판정하여, 만약 기여한다면, 상기 일부를 렌더링함 - 를 더 포함하는 오브젝트 기반 이미지를 렌더링하는 방법.
- 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하는 방법으로서,상기 리스트 내의 오브젝트들을 제1 세트의 오브젝트들 및 제2 세트의 오브젝트들 중 적어도 하나에 할당하는 단계;상기 제1 세트 내의 오브젝트들을 픽셀 순차(pixel sequential) 렌더링 방식을 이용하여 렌더링하는 단계; 및상기 제2 세트 내의 오브젝트들을 페인터스 알고리즘(Painter's algorithm) 렌더링 방식을 이용하여 렌더링하는 단계를 포함하는 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하는 방법.
- 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하기 위한 장치로서,오브젝트들을 제1 렌더링 방식을 이용하여 이미지 스토어에 렌더링하기 위한 제1 수단 - 상기 제1 렌더링 방식은, 오브젝트의 일부가 상기 제1 수단에 의해 처리되는 한 세트의 오브젝트들의 렌더링된 출력에 기여하는지의 여부를 판정하며, 만약 기여한다면, 상기 제1 수단은 상기 일부를 렌더링함 -;오브젝트들을 제2 렌더링 방식을 이용하여 상기 이미지 스토어에 렌더링하기 위한 제2 수단 - 상기 제2 렌더링 방식은, 상기 제2 수단에 의해 수신되는 각각의 오브젝트를 상기 제2 수단에 의해 수신되는 다른 오브젝트들과 독립적으로 렌더링함 -; 및상기 리스트 내의 그래픽 오브젝트들을 상기 제1 수단 및 상기 제2 수단 중 적어도 하나에 할당하기 위한 수단을 포함하는 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하기 위한 장치.
- 제22항에 있어서,상기 그래픽 오브젝트들의 리스트를 생성하기 위한 수단을 더 포함하는 그래픽 오브젝트들의 리스트에 의해 기술된 이미지를 렌더링하기 위한 장치.
- 오브젝트 기반 이미지를 렌더링하기 위한 장치로서,오브젝트들을 제1 렌더링 방식을 이용하여 이미지 스토어에 렌더링하기 위한 제1 수단 - 상기 제1 렌더링 방식은, 오브젝트의 일부가 상기 제1 수단에 의해 처리되는 한 세트의 오브젝트들의 렌더링된 출력에 기여하는지의 여부를 판정하며, 만약 기여한다면, 상기 제1 수단은 상기 일부를 렌더링함 -;오브젝트들을 제2 렌더링 방식을 이용하여 렌더링하기 위한 제2 수단 - 상기 제2 렌더링 방식은, 상기 제2 수단에 의해 수신되는 각각의 오브젝트를 상기 제2 수단에 의해 수신되는 다른 오브젝트들과 독립적으로 상기 이미지 스토어에 렌더링함 -;상기 이미지 내의 오브젝트들의 리스트를 수신하기 위한 수단 - 상기 리스트 내의 오브젝트들은 최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 정렬되며, 상기 리스트는 콤포지팅을 요하는 최고 우선순위 오브젝트인 최종 콤포지팅 오브젝트를 구비함 -; 및오브젝트들을 상기 제1 렌더링 수단 및 상기 제2 렌더링 수단에 할당하기 위한 수단 - 상기 할당 수단은, 상기 최저 우선순위 오브젝트로부터 상기 최종 콤포지팅 오브젝트까지의 상기 리스트의 제1 부분을 상기 제1 렌더링 수단에 할당하며, 상기 최종 콤포지팅 오브젝트보다 우선순위가 높은 하나 이상의 오브젝트들을 상기 제2 렌더링 수단에 할당함 -을 포함하는 오브젝트 기반 이미지를 렌더링하기 위한 장치.
- 제24항에 있어서,상기 할당 수단은 복수의 오브젝트들을 상기 제2 렌더링 수단에 동시에 할당하며, 상기 복수의 오브젝트들은 중첩되지 않으며 상기 리스트 내에서 우선순위 위치가 연속적인 오브젝트 기반 이미지를 렌더링하기 위한 장치.
- 제24항에 있어서,상기 제2 렌더링 수단을 복수개 포함하는 오브젝트 기반 이미지를 렌더링하기 위한 장치.
- 오브젝트 기반 이미지를 렌더링하기 위한 장치로서,오브젝트들을 제1 렌더링 방식을 이용하여 이미지 스토어에 렌더링하기 위한 제1 수단 - 상기 제1 렌더링 방식은, 오브젝트의 일부가 상기 제1 수단에 의해 처리되는 한 세트의 오브젝트들의 렌더링된 출력에 기여하는지의 여부를 판정하며, 만약 기여한다면, 상기 제1 수단은 상기 일부를 렌더링함 -;오브젝트들을 제2 렌더링 방식을 이용하여 렌더링하기 위한 제2 수단 - 상기 제2 렌더링 방식은, 상기 제2 수단에 의해 수신되는 각각의 오브젝트를 수신되는 다른 오브젝트들과 독립적으로 상기 이미지 스토어에 렌더링함 -;상기 이미지 내의 오브젝트들의 리스트를 수신하기 위한 수단 - 상기 오브젝트들은 최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 정렬됨 -;콤포지팅을 요하는 오브젝트에 대하여, 상기 리스트 내의 오브젝트들 중 상기 콤포지팅 오브젝트보다 우선순위가 낮고 바운딩 박스가 상기 콤포지팅 오브젝트의 바운딩 박스와 중첩되는 오브젝트들을 결정하기 위한 수단;상기 리스트로부터 비콤포지팅(non-compositing) 오브젝트들을 상기 제2 렌더링 수단에 할당하기 위한 수단; 및상기 리스트로부터 콤포지팅 오브젝트들을, 상기 각각의 콤포지팅 오브젝트에 대해 상기 결정 수단에 의해 결정된 오브젝트들과 함께, 상기 제1 렌더링 수단에 할당하기 위한 수단을 포함하는 오브젝트 기반 이미지를 렌더링하기 위한 장치.
- 오브젝트 기반 이미지를 렌더링하기 위한 장치로서,최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 상기 이미지 내의 오브젝트들의 리스트를 수신하기 위한 수단;상기 리스트 내의 오브젝트들을 적어도 한 세트의 오브젝트들에 할당하기 위한 수단 - 상기 세트 내의 오브젝트들은 상기 리스트 내에서 연속적인 우선순위 순서를 가지며, 상기 세트 내의 각각의 오브젝트는 상기 세트 내의 다른 오브젝트와 중첩되지 않음 -; 및상기 적어도 한 세트의 오브젝트들을 이미지 스토어에 렌더링하기 위한 수단을 포함하는 오브젝트 기반 이미지를 렌더링하기 위한 장치.
- 오브젝트 기반 이미지를 렌더링하기 위한 시스템으로서,오브젝트들을 제1 렌더링 방식을 이용하여 이미지 스토어에 렌더링하는 하나 이상의 제1 렌더링기 - 상기 제1 렌더링 방식은, 오브젝트의 일부가 상기 제1 렌더링 방식에 의해 처리되는 한 세트의 오브젝트들의 렌더링된 출력에 기여하는지의 여부를 판정하며, 만약 기여한다면, 상기 제1 렌더링 방식은 상기 일부를 렌더링함 -;오브젝트들을 제2 렌더링 방식을 이용하여 렌더링하는 하나 이상의 제2 렌더링기 - 상기 제2 렌더링 방식은, 상기 제2 렌더링기에 의해 수신되는 각각의 오브젝트를 수신되는 다른 오브젝트들과 독립적으로 상기 이미지 스토어에 렌더링함 -;상기 이미지에 대한 오브젝트들의 리스트를 생성하는 디스플레이 리스트 생성기 - 상기 리스트 내의 오브젝트들은 최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 정렬되며, 상기 리스트는 콤포지팅을 요하는 최고 우선순위 오브젝트인 최종 콤포지팅 오브젝트를 구비함 -;상기 디스플레이 리스트 생성기에 의해 생성된 리스트를 저장하는 디스플레이 리스트 스토어; 및상기 디스플레이 리스트 스토어 및 상기 제1 및 제2 렌더링기들과 통신하는 프로세서 - 상기 프로세서는, 상기 최저 우선순위 오브젝트로부터 상기 최종 콤포지팅 오브젝트까지의 오브젝트들을 상기 제1 렌더링기에 할당하도록 프로그램되며, 상기 최종 콤포지팅 오브젝트보다 우선순위가 높은 오브젝트들을 하나 이상의 제2 렌더링기에 할당하도록 프로그램됨 -을 포함하는 오브젝트 기반 이미지를 렌더링하기 위한 시스템.
- 오브젝트 기반 이미지를 렌더링하기 위한 시스템으로서,오브젝트들을 제1 렌더링 방식을 이용하여 이미지 스토어에 렌더링하는 하나 이상의 제1 렌더링기 - 상기 제1 렌더링 방식은, 오브젝트의 일부가 상기 제1 렌더링 방식에 의해 처리되는 한 세트의 오브젝트들의 렌더링된 출력에 기여하는지의 여부를 판정하며, 만약 기여한다면, 상기 제1 렌더링 방식은 상기 일부를 렌더링함 -;오브젝트들을 제2 렌더링 방식을 이용하여 렌더링하는 하나 이상의 제2 렌더링기 - 상기 제2 렌더링 방식은, 상기 제2 렌더링기에 의해 수신되는 각각의 오브젝트를 수신되는 다른 오브젝트들과 독립적으로 상기 이미지 스토어에 렌더링함 -;상기 이미지 내의 오브젝트들의 리스트를 생성하는 디스플레이 리스트 생성기 - 상기 리스트 내의 오브젝트들은 최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 정렬됨 -;상기 디스플레이 리스트 생성기에 의해 생성된 리스트를 저장하는 디스플레이 리스트 스토어; 및상기 디스플레이 리스트 스토어 및 상기 제1 및 제2 렌더링기들과 통신하는 프로세서를 포함하며,상기 프로세서는,(i) 상기 리스트 내의 오브젝트들을 우선순위가 증가하는 순서로 고려하는 단계와;현재 고려되는 각각의 오브젝트에 대해:(ii) 상기 현재의 오브젝트가 콤포지팅을 요하지 않는다면, 상기 현재의 오브젝트를 상기 제2 렌더링기에 할당하는 단계와;(iii) 상기 현재의 오브젝트가 콤포지팅을 요한다면, 상기 리스트 내의 오브젝트들 중 상기 현재 고려되는 오브젝트보다 우선순위가 낮고 바운딩 바스가 상기 현재 고려되는 오브젝트의 바운딩 박스와 중첩되는 오브젝트들을 결정하여, 상기 현재 고려되는 오브젝트 및 상기 결정된 오브젝트들을 상기 제1 렌더링기에 할당하는 단계를 포함하는 오브젝트 기반 이미지를 렌더링하기 위한 시스템.
- 실행 시에, 오브젝트 기반 이미지를 렌더링하는 방법을 수행하도록 데이터 처리 장치의 동작을 제어하기 위한 컴퓨터 프로그램을 기록한 컴퓨터 판독가능한 매체로서,상기 방법은:상기 리스트 내의 오브젝트들을 제1 세트의 오브젝트들과 제2 세트의 오브젝트들 중 적어도 하나에 할당하는 단계;상기 제1 세트의 오브젝트들을 제1 렌더링 방식을 이용하여 이미지 스토어에 렌더링하는 단계 - 상기 제1 렌더링 방식은 상기 제1 세트의 오브젝트의 일부가 상기 제1 세트의 오브젝트들의 렌더링된 출력에 기여하는지의 여부를 판정하며, 만약 기여한다면, 상기 제1 렌더링 방식은 상기 일부를 렌더링함 -; 및상기 제2 세트의 오브젝트들을 제2 렌더링 방식을 이용하여 상기 이미지 스토어에 렌더링하는 단계 - 상기 제2 렌더링 방식은 상기 제2 세트 내의 각 오브젝트를 상기 제2 세트 내의 다른 오브젝트들과 독립적으로 렌더링함 -를 포함하는 컴퓨터 판독가능한 매체.
- 실행 시에, 오브젝트 기반 이미지를 렌더링하는 방법을 수행하도록 데이터 처리 장치의 동작을 제어하기 위한 컴퓨터 프로그램을 기록한 컴퓨터 판독가능한 매체로서,상기 방법은:상기 이미지의 오브젝트들을 최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 리스트화하는 디스플레이 리스트를 수신하는 단계 - 상기 디스플레이 리스트는 콤포지팅을 요하는 최고 우선순위 오브젝트인 최종 콤포지팅 오브젝트를 가짐 -;제1 렌더링 방식을 이용하여 제1 렌더링 태스크를 렌더링하는 단계 - 상기 제1 렌더링 태스크는 상기 디스플레이 리스트 내의 오브젝트들 중 상기 최저 우선순위 오브젝트로부터 상기 최종 콤포지팅 오브젝트까지의 오브젝트들을 포함함 - ; 및제2 렌더링 방식을 이용하여 하나 이상의 제2 렌더링 태스크를 렌더링하는 단계 - 상기 제2 렌더링 태스크는 상기 디스플레이 리스트 내의 오브젝트들 중 상기 최종 콤포지팅 오브젝트보다 우선순위가 높은 하나 이상의 오브젝트들을 포함함 -를 포함하며,상기 제1 렌더링 방식은 오브젝트의 일부가 상기 제1 렌더링 태스크의 렌더링된 출력에 기여하는지의 여부를 판정하며, 만약 기여한다면, 상기 일부를 렌더링하며,상기 제2 렌더링 방식은 상기 제2 렌더링 태스크의 각 오브젝트를 상기 제2 렌더링 태스크의 다른 오브젝트들과 독립적으로 이미지 스토어에 렌더링하는 컴퓨터 판독가능한 매체.
- 실행 시에, 오브젝트 기반 이미지를 렌더링하는 방법을 수행하도록 데이터 처리 장치의 동작을 제어하기 위한 컴퓨터 프로그램을 기록한 컴퓨터 판독가능한 매체로서,상기 방법은:(a) 상기 이미지를 기술하는 오브젝트들의 리스트를 수신하는 단계 - 상기 오브젝트들은 최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 정렬됨 -; 및(b) 상기 리스트 내의 오브젝트들을 우선순위가 증가하는 순서로 고려하는 단계를 포함하며,현재 고려되는 각각의 오브젝트에 대해:(ba) 상기 현재 고려되는 오브젝트가 콤포지팅을 요하지 않는다면 상기 현재 고려되는 오브젝트를 제1 렌더링 방식을 이용하여 이미지 스토어에 렌더링하는 단계; 및(bb) 상기 현재 고려되는 오브젝트가 콤포지팅을 요한다면 하기의 단계를 수행하는 단계;(bb)(i) 상기 리스트 내의 오브젝트들 중 상기 현재 고려되는 오브젝트보다 우선순위가 낮으며 바운딩 박스가 상기 현재 고려되는 오브젝트의 바운딩 박스와 중첩되는 오브젝트들을 결정하는 단계; 및(bb)(ii) 상기 현재 고려되는 오브젝트 및 상기 결정된 오브젝트들을 제2 렌더링 방식을 이용하여 렌더링하는 단계 - 상기 제2 렌더링 방식은 오브젝트의 일부가 상기 제2 렌더링 방식에 의해 처리되는 한 세트의 오브젝트들의 렌더링된 출력에 기여하는지의 여부를 판정하며, 만약 기여한다면, 상기 제2 렌더링 방식은 상기 일부를 렌더링함 -를 포함하는 컴퓨터 판독가능한 매체.
- 실행 시에, 오브젝트 기반 이미지를 렌더링하는 방법을 수행하도록 데이터 처리 장치의 동작을 제어하기 위한 컴퓨터 프로그램을 기록한 컴퓨터 판독가능한 매체로서,상기 방법은:최저 우선순위 오브젝트로부터 최고 우선순위 오브젝트까지의 우선순위 순서로 상기 이미지 내의 오브젝트들의 리스트를 수신하는 단계;상기 리스트 내의 오브젝트들을 적어도 한 세트의 오브젝트들에 할당하는 단계 - 상기 세트 내의 오브젝트들은 상기 리스트 내에서 연속적인 우선순위 순서를 가지며, 상기 세트 내의 각각의 오브젝트는 상기 세트 내의 다른 오브젝트와는 중첩되지 않음 -; 및상기 적어도 한 세트의 오브젝트들을 이미지 스토어에 렌더링하는 단계를 포함하는 컴퓨터 판독가능한 매체.
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU2004903592A AU2004903592A0 (en) | 2004-06-30 | Method of Rendering Graphic Objects | |
AU2004903592 | 2004-06-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20060048709A KR20060048709A (ko) | 2006-05-18 |
KR100721065B1 true KR100721065B1 (ko) | 2007-05-22 |
Family
ID=34981158
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020050057114A KR100721065B1 (ko) | 2004-06-30 | 2005-06-29 | 그래픽 오브젝트의 렌더링 방법 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7755629B2 (ko) |
EP (1) | EP1612737B1 (ko) |
JP (1) | JP4756937B2 (ko) |
KR (1) | KR100721065B1 (ko) |
CN (1) | CN100552700C (ko) |
AT (1) | ATE506664T1 (ko) |
DE (1) | DE602005027520D1 (ko) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7978196B2 (en) * | 2006-03-02 | 2011-07-12 | Canon Kabushiki Kaisha | Efficient rendering of page descriptions |
US7907151B2 (en) * | 2007-05-14 | 2011-03-15 | Business Objects Software Ltd. | Apparatus and method for associating non-overlapping visual objects with z-ordered panes |
AU2007203061A1 (en) * | 2007-06-29 | 2009-01-15 | Canon Kabushiki Kaisha | Efficient banded hybrid rendering |
US8862986B2 (en) * | 2007-10-01 | 2014-10-14 | Hewlett-Packard Development Company, L.P. | Arranging graphic objects on a page with relative position based control |
US8289320B2 (en) * | 2007-10-22 | 2012-10-16 | Samsung Electronics Co., Ltd. | 3D graphic rendering apparatus and method |
AU2008202364B2 (en) * | 2008-05-28 | 2011-04-21 | Canon Kabushiki Kaisha | Scan converting a set of vector edges to a set of pixel aligned edges |
AU2009202377A1 (en) * | 2009-06-15 | 2011-01-06 | Canon Kabushiki Kaisha | Combining overlapping objects |
AU2010241218B2 (en) * | 2010-11-03 | 2013-10-31 | Canon Kabushiki Kaisha | Method, apparatus and system for associating an intermediate fill with a plurality of objects |
AU2010249337A1 (en) * | 2010-12-13 | 2012-06-28 | Canon Kabushiki Kaisha | Predicting the times of future events in a multi-threaded RIP |
AU2011205085B2 (en) * | 2011-07-29 | 2014-05-15 | Canon Kabushiki Kaisha | 2D region rendering |
CN102496169A (zh) * | 2011-11-30 | 2012-06-13 | 威盛电子股份有限公司 | 重迭对象的绘制方法及装置 |
JP6058978B2 (ja) * | 2012-11-19 | 2017-01-11 | サターン ライセンシング エルエルシーSaturn Licensing LLC | 画像処理装置及び画像処理方法、撮影装置、並びにコンピューター・プログラム |
GB2517809B (en) | 2014-02-13 | 2015-07-22 | Imagination Tech Ltd | Processing of primitive blocks in parallel tiling engine pipes |
US10157485B2 (en) * | 2016-02-17 | 2018-12-18 | Texas Instruments Incorporated | Method and system for merging of polygons in adjacent tiles |
US10235612B2 (en) * | 2016-07-29 | 2019-03-19 | Canon Kabushiki Kaisha | Information processing apparatus, information processing method, storage medium, and image forming apparatus for converting drawing data of a transparent object that does not overlap another drawing object into drawing data of a drawing object that does not have an alpha channel as color information |
CN108404412B (zh) * | 2018-02-02 | 2021-01-29 | 珠海金山网络游戏科技有限公司 | 一种次世代游戏渲染引擎的光源管理系统、装置及其方法 |
EP3830757B1 (en) | 2018-08-01 | 2024-05-15 | Hewlett-Packard Development Company, L.P. | Covert dot patterns |
CN110264543B (zh) * | 2019-06-21 | 2022-07-12 | 苏州科达科技股份有限公司 | 拼接画面的边框绘制方法、装置及存储介质 |
US11341383B2 (en) * | 2019-08-18 | 2022-05-24 | Kyocera Document Solutions Inc. | Methods and apparatus to detect effective tiling area and fill tiles efficiently |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS60198690A (ja) | 1984-03-23 | 1985-10-08 | Hitachi Ltd | 高速図形処理方式 |
JPH05210745A (ja) * | 1991-09-06 | 1993-08-20 | Canon Inc | 3次元グラフィックス処理方法及びその装置 |
KR20010014910A (ko) * | 1999-05-24 | 2001-02-26 | 포만 제프리 엘 | 그래픽 서브시스템의 블록 렌더링 방법 |
KR20030054108A (ko) * | 2001-12-24 | 2003-07-02 | 한국전자통신연구원 | 실시간 렌더링을 위한 하드웨어 그래픽 가속장치 내 연산최적화 시스템 및 그 방법 |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5031117A (en) * | 1990-02-13 | 1991-07-09 | International Business Machines Corporation | Prioritization scheme for enhancing the display of ray traced images |
US5325485A (en) * | 1992-10-30 | 1994-06-28 | International Business Machines Corporation | Method and apparatus for displaying primitives processed by a parallel processor system in a sequential order |
US5493637A (en) * | 1992-12-04 | 1996-02-20 | Network Computing Devices, Inc. | Video buffer recycling method and apparatus |
CN1104792A (zh) * | 1994-03-15 | 1995-07-05 | 杨高雄 | 高速电脑多边形剪裁跟踪器 |
EP0693737A3 (en) * | 1994-07-21 | 1997-01-08 | Ibm | Method and apparatus for managing tasks in a multiprocessor system |
WO1996013006A1 (en) * | 1994-10-20 | 1996-05-02 | Mark Alan Zimmer | Digital mark-making method |
JP3658027B2 (ja) * | 1995-01-31 | 2005-06-08 | キヤノン株式会社 | 図形編集装置および図形編集方法 |
US5600768A (en) * | 1995-06-06 | 1997-02-04 | Apple Computer, Inc. | Image generation with dynamically consolidated list of image data |
US6016150A (en) * | 1995-08-04 | 2000-01-18 | Microsoft Corporation | Sprite compositor and method for performing lighting and shading operations using a compositor to combine factored image layers |
US5692063A (en) * | 1996-01-19 | 1997-11-25 | Microsoft Corporation | Method and system for unrestricted motion estimation for video |
US5852502A (en) * | 1996-05-31 | 1998-12-22 | American Digital Imaging, Inc. | Apparatus and method for digital camera and recorder having a high resolution color composite image output |
US6104842A (en) * | 1996-06-10 | 2000-08-15 | Integrated Device Technology, Inc. | Geometry processing of digital video models and images |
US6239807B1 (en) * | 1998-03-13 | 2001-05-29 | Mgi Software Corporation | Method and system for multi-resolution texture mapping |
US6501483B1 (en) * | 1998-05-29 | 2002-12-31 | Ati Technologies, Inc. | Method and apparatus for antialiasing using a non-uniform pixel sampling pattern |
US6771264B1 (en) * | 1998-08-20 | 2004-08-03 | Apple Computer, Inc. | Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor |
JP4365950B2 (ja) * | 1998-09-11 | 2009-11-18 | キヤノン株式会社 | 高速ラスタ形式レンダリングのためのグラフィックオブジェクト処理方法および装置 |
US6429949B1 (en) * | 1998-10-15 | 2002-08-06 | Electronics For Imaging, Inc. | Low memory printer controller |
AUPP923799A0 (en) * | 1999-03-16 | 1999-04-15 | Canon Kabushiki Kaisha | Method for optimising compilation of compositing expressions |
US6441817B1 (en) * | 1999-11-29 | 2002-08-27 | Xerox Corporation | Methods and apparatuses for performing Z-buffer granularity depth calibration in graphics displays of three-dimensional scenes |
US6891533B1 (en) * | 2000-04-11 | 2005-05-10 | Hewlett-Packard Development Company, L.P. | Compositing separately-generated three-dimensional images |
AUPQ697100A0 (en) * | 2000-04-18 | 2000-05-11 | Canon Kabushiki Kaisha | Rendering graphic object based images |
AUPQ758000A0 (en) * | 2000-05-17 | 2000-06-08 | Canon Kabushiki Kaisha | Processing pixels of a digital image |
AUPQ905800A0 (en) * | 2000-07-28 | 2000-08-24 | Canon Kabushiki Kaisha | Rendering page descriptions |
AUPR860901A0 (en) * | 2001-10-31 | 2001-11-29 | Canon Kabushiki Kaisha | Activating a filling of a graphical object |
US6891536B2 (en) * | 2001-11-30 | 2005-05-10 | Canon Kabushiki Kaisha | Method of determining active priorities |
US6700580B2 (en) * | 2002-03-01 | 2004-03-02 | Hewlett-Packard Development Company, L.P. | System and method utilizing multiple pipelines to render graphical data |
AUPS134202A0 (en) | 2002-03-25 | 2002-05-09 | Canon Kabushiki Kaisha | System and method for optimizing halftoning printer performance |
AU2003213492A1 (en) | 2002-08-23 | 2004-03-11 | Canon Kabushiki Kaisha | Scanline Rendering with Persistent Spans |
US20040075699A1 (en) * | 2002-10-04 | 2004-04-22 | Creo Inc. | Method and apparatus for highlighting graphical objects |
US7365743B1 (en) * | 2002-10-08 | 2008-04-29 | Adobe Systems Incorporated | Assignments for parallel rasterization |
AU2003900772A0 (en) * | 2003-02-21 | 2003-03-13 | Canon Kabushiki Kaisha | Reducing the number of compositing operations performed in a pixel sequential rendering system |
AU2003901416A0 (en) * | 2003-03-27 | 2003-04-10 | Canon Kabushiki Kaisha | Graphical object group management system |
JP3663407B2 (ja) * | 2003-05-12 | 2005-06-22 | 株式会社ナムコ | ゲーム装置及び情報記憶媒体 |
AU2003238803A1 (en) * | 2003-05-30 | 2005-01-04 | Dreamworks | Shading computer-generated objects using generalized shading regions |
US7295342B2 (en) * | 2003-06-27 | 2007-11-13 | Xerox Corporation | Method for identifing objects on white background for optimized rendering |
US7095418B2 (en) * | 2003-10-30 | 2006-08-22 | Sensable Technologies, Inc. | Apparatus and methods for texture mapping |
US7379588B2 (en) * | 2003-11-25 | 2008-05-27 | Xerox Corporation | Systems for spectral multiplexing of source images to provide a composite image, for rendering the composite image, and for spectral demultiplexing the composite image to obtain a normalized color image |
US7269297B2 (en) * | 2003-11-25 | 2007-09-11 | Xerox Corporation | Illuminant-neutral gray component replacement in systems for spectral multiplexing of source images to provide a composite image, for rendering the composite image, and for spectral demultiplexing of the composite image |
-
2005
- 2005-06-21 US US11/156,626 patent/US7755629B2/en not_active Expired - Fee Related
- 2005-06-27 AT AT05253969T patent/ATE506664T1/de not_active IP Right Cessation
- 2005-06-27 EP EP05253969A patent/EP1612737B1/en not_active Not-in-force
- 2005-06-27 DE DE602005027520T patent/DE602005027520D1/de active Active
- 2005-06-29 KR KR1020050057114A patent/KR100721065B1/ko not_active IP Right Cessation
- 2005-06-30 JP JP2005193116A patent/JP4756937B2/ja not_active Expired - Fee Related
- 2005-06-30 CN CNB2005101373221A patent/CN100552700C/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS60198690A (ja) | 1984-03-23 | 1985-10-08 | Hitachi Ltd | 高速図形処理方式 |
JPH05210745A (ja) * | 1991-09-06 | 1993-08-20 | Canon Inc | 3次元グラフィックス処理方法及びその装置 |
KR20010014910A (ko) * | 1999-05-24 | 2001-02-26 | 포만 제프리 엘 | 그래픽 서브시스템의 블록 렌더링 방법 |
KR20030054108A (ko) * | 2001-12-24 | 2003-07-02 | 한국전자통신연구원 | 실시간 렌더링을 위한 하드웨어 그래픽 가속장치 내 연산최적화 시스템 및 그 방법 |
Also Published As
Publication number | Publication date |
---|---|
EP1612737A2 (en) | 2006-01-04 |
US20060001681A1 (en) | 2006-01-05 |
EP1612737B1 (en) | 2011-04-20 |
JP4756937B2 (ja) | 2011-08-24 |
CN100552700C (zh) | 2009-10-21 |
KR20060048709A (ko) | 2006-05-18 |
JP2006018842A (ja) | 2006-01-19 |
CN1797432A (zh) | 2006-07-05 |
EP1612737A3 (en) | 2008-03-12 |
DE602005027520D1 (de) | 2011-06-01 |
US7755629B2 (en) | 2010-07-13 |
ATE506664T1 (de) | 2011-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100721065B1 (ko) | 그래픽 오브젝트의 렌더링 방법 | |
EP1577838B1 (en) | A method of rendering graphical objects | |
JP3919754B2 (ja) | 画素順次描画システムにおいて実行される合成演算回数の削減法 | |
US6891536B2 (en) | Method of determining active priorities | |
US20100315431A1 (en) | Combining overlapping objects | |
EP0741887A1 (en) | Applying traps to a printed page specified in a page description language format | |
US20060192983A1 (en) | Caching and Optimisation of Compositing | |
US8723884B2 (en) | Scan converting a set of vector edges to a set of pixel aligned edges | |
US7450121B2 (en) | Dynamic bit depth rendering | |
US6456298B1 (en) | Image processing apparatus and method | |
US8638470B2 (en) | Efficient banded hybrid rendering | |
US6795048B2 (en) | Processing pixels of a digital image | |
JPH01277055A (ja) | 多値描画のためのラスターデータ生成方法 | |
AU2005202742B2 (en) | Method of Rendering Graphic Objects | |
AU2002308789B2 (en) | A Method for Determining Active Priorities | |
AU2003204832B2 (en) | Rendering Graphic Object Based Images | |
AU2005227419A1 (en) | Method of clip-centric rendering | |
AU4379201A (en) | Processing pixels of a digital image | |
AU2005202070A1 (en) | Rendering graphic object based images | |
AU2007202126A1 (en) | Efficiently rendering objects in the presence of transparency | |
JP2001111805A (ja) | 描画処理装置 | |
AU2005203463A1 (en) | Rendering Graphic Object-based Images | |
AU2008229676A1 (en) | On-demand rendering | |
AU2008207665A1 (en) | Retaining edges of opaque groups across bands | |
AU2005246987A1 (en) | A pixel sequential rendering method for compound graphic outlines |
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 | ||
FPAY | Annual fee payment |
Payment date: 20130425 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20140424 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20150424 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20160425 Year of fee payment: 10 |
|
FPAY | Annual fee payment |
Payment date: 20170424 Year of fee payment: 11 |
|
LAPS | Lapse due to unpaid annual fee |