KR20130095651A - 텍스트 렌더링을 위한 룩업 테이블 - Google Patents

텍스트 렌더링을 위한 룩업 테이블 Download PDF

Info

Publication number
KR20130095651A
KR20130095651A KR1020127033341A KR20127033341A KR20130095651A KR 20130095651 A KR20130095651 A KR 20130095651A KR 1020127033341 A KR1020127033341 A KR 1020127033341A KR 20127033341 A KR20127033341 A KR 20127033341A KR 20130095651 A KR20130095651 A KR 20130095651A
Authority
KR
South Korea
Prior art keywords
pixel
bit
bits
data
format
Prior art date
Application number
KR1020127033341A
Other languages
English (en)
Other versions
KR101812825B1 (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 KR20130095651A publication Critical patent/KR20130095651A/ko
Application granted granted Critical
Publication of KR101812825B1 publication Critical patent/KR101812825B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/22Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of characters or indicia using display control signals derived from coded signals representing the characters or indicia, e.g. with a character-code memory
    • G09G5/24Generation of individual character patterns
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/22Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of characters or indicia using display control signals derived from coded signals representing the characters or indicia, e.g. with a character-code memory
    • G09G5/24Generation of individual character patterns
    • G09G5/28Generation of individual character patterns for enhancement of character form, e.g. smoothing
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/04Changes in size, position or resolution of an image
    • G09G2340/0457Improvement of perceived resolution by subpixel rendering

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

GPU 상에서 글리프의 필터링 및 정정을 개선하기 위한 시스템 및 방법이 제공된다. 커버리지 데이터를 정정된 픽셀 값으로 변환하는데 필요한 계산의 일부 또는 전부를 미리 계산함으로써 필터링 및/또는 렌더링을 위해 요구되는 연산 집약도가 감소될 수 있다. 일부 실시형태에서 CPU로부터 GPU로 개선된 포맷으로 데이터를 전달함으로써 추가의 효율성이 실현될 수 있다. 개선은 다양한 그래픽 포맷으로 실현될 수 있다.

Description

텍스트 렌더링을 위한 룩업 테이블{LOOKUP TABLES FOR TEXT RENDERING}
글리프(glyph)는 문자 또는 문자들을 시각적으로 나타내는데 사용되는 이미지이다. 예를 들어, 폰트는 글리프의 세트일 수 있는데, 폰트의 문자 각각이 하나의 글리프를 나타낸다. 그러나, 글리프는 폰트의 다수의 문자를 포함할 수도 있고, 그 역도 가능하다. 즉, 폰트의 하나의 문자는 수 개의 글리프에 대응할 수도 있고, 또는 폰트의 수 개의 문자가 하나의 글리프에 대응할 수도 있다. 달리 말해, 글리프는, 문자 또는 문자들을 나타내는데 사용되는 영역의 윤곽을 그리는 일련의 곡선의 모양이다. 글리프 커브 및 그에 따른 문자를 생성하는데 사용되는 컴퓨터 구현(computer-implemented) 프로세스는 텍스트 렌더링이라고 불린다.
텍스트를 렌더링하는 것은 CPU(central processing unit) 사용의 관점에서 더 확장적인(extensive) 연산 중 하나일 수 있다. 텍스트를 렌더링하기 위한 하나의 프로세스는 레스터라이징(rasterizing), 병합(merging), 필터링 및 정정(correcting)의 4 단계 프로세스를 포함한다. 래스터라이징 단계는 글리프 커브를 비트맵으로 변환하는 단계를 포함한다. 비트맵의 형식은 통상 1bpp(1-bit-per-pixel)이고 하나 이상의 방향으로 "오버스케일(overscaled)"될 수 있다. 예를 들어, 비트맵은 수직 또는 수평 방향으로 오버스케일될 수 있다. 오버스케일은, 비트맵을 생성하는데 사용되는 데이터의 각각의 비트, 또는 텍셀(texel)이 글리프를 표시하는데 사용되는 픽셀보다 작은 프로세스를 지칭한다.
병합 단계는 아티팩트(artifact) 또는 바람직하지 않은 문자를 방지하기 위해 근처의 글리프를 병합하는 단계를 포함한다. 예를 들어, 앤티앨리어싱(anti-aliaising)(서브픽셀 렌더링 포함)은 일부 픽셀을 반투명으로 그리는 것을 포함한다. 각각의 글리프가 독립적으로 그려질 수 있기 때문에, 동일한 픽셀이 글리프가 중첩되는 위치에 반투명으로 여러번 그려지는 것이 가능하다. 이는 픽셀이 너무 어둡게 보이게 할 수 있다. 이를 피하기 위해, 병합 단계는 모든 글리프에 대한 비트맵을 단일 텍스처로 결합한다. 필터링과 블렌딩 단계는, 각각의 글리프에 대해 별개로 하는 것이 아니라 단일 텍스처에 대해 수행된다. 그러므로, 병합 단계는, 연속적인 모습을 달성하고 중첩되거나 분리된 글리프가 존재하지 않도록 하기 위해 개별 글리프를 결합한다.
필터링 단계는 병합된 글리프를 취하여 각각의 픽셀에 대한 "커버리지"를 계산한다. 커버리지라는 용어는 병합된 글리프를 표시하는데 사용되는 각각의 개별 픽셀에 대한 필요 강도 또는 값을 결정하는 것을 지칭한다. 예를 들어, 글리프 곡선의 영역 내에 완전히 떨어지는 픽셀은 100% 커버리지를 갖게 된다. 유사하게, 완전히 글리프 곡선의 영역 외에 있는 픽셀은 0% 커버리지를 갖게 된다. 그러므로, 글리프를 렌더링하기 위해 사용되는 구체적인 필터링 방법에 따라 커버리지 값은 0% 내지 100% 사이의 어딘가에 있을 수 있다.
정정 단계에는 문자의 가독성(readability)을 개선하기 위한 서브픽셀 렌더링이 포함될 수 있다. 정정의 일 예는 글리프의 가독성을 개선하는 알려진 인자에 기초하여 각각의 픽셀에 대한 커버리지를 변경하는 것을 포함할 수 있다. 이들은 글리프가 표시되는 때에 외관 아티팩트를 피하기 위해 글리프 내의 특정 색상 및/또는 픽셀을 강조(emphasizing) 또는 역강조(de-emphasizing)를 포함할 수 있다. 정정의 다른 예는 LCD(Liquid Crystal Display)의 픽셀 구조를 이용하기 위한 픽셀의 블렌딩일 수 있다. 구체적으로, LCD 스크린 상의 한 픽셀은 3개의 서브픽셀: 적색 하나, 녹색 하나 및 청색 하나(RGB)로 구성되기 때문에, 서브픽셀 렌더링이 가능하다. 육안에는 이들 서브픽셀이 하나의 픽셀로 보인다. 그러나, 세 개의 픽셀 각각은 고유하고 개별적으로 제어될 수 있다. 그러므로, LCD 상에 표시된 텍스트의 가독성을 증가시키기 위해 서브픽셀을 개별적으로 제어함으로써 LCD 스크린의 해상도가 개선될 수 있다.
텍스트를 렌더링하는 한 가지 방법은 CPU 상에서 처음 세 단계를 수행하는 것이다. 즉, 래스터라이징, 병합, 필터링 단계는 CPU 상에서 수행되고 블렌딩 단계는 GPU(graphic processing unit) 상에서 수행된다. CPU 사용의 관점에서, 병합 및 필터링 단계가 가장 연산적으로 집약적이다.
개요
다양한 실시형태에서, GPU 상의 글리프의 개선된 필터링 및 정정을 위한 시스템 및 방법이 제공된다. 커버리지 데이터를 정정된 픽셀 값으로 변환하는데 필요한 연산의 일부 또는 전부를 미리 계산함으로써 필터링 및/또는 렌더링을 위해 요구되는 연산적 집약성이 감소될 수 있다. 일부 실시형태에서 CPU로부터의 데이터를 개선된 포맷으로 GPU에 전달함으로써 추가적인 효율성이 실현될 수 있다. 개선은 다양한 그래픽 포맷으로 실현될 수 있다.
본 개요는 아래의 상세한 설명에서 더 설명되는 개념 중 선택된 것을 단순화된 형태로 소개하기 위해 제공된다. 본 개요는 청구된 주제의 중요 특성 또는 핵심 특성을 식별하려는 것이 아니고, 청구된 주제의 범위를 결정하는 독립한 수단으로서 사용되려는 것도 아니다.
본 발명은 첨부된 도면을 참조하여 아래에서 상세히 설명된다.
도 1은 본 발명의 실시형태를 구현하는데 사용하기에 적당한 예시적인 연산 환경의 블록도이다.
도 2는 텍스트 픽셀을 렌더링하기 위한 컴포넌트의 예를 개략적으로 도시한다.
도 3은 본 발명의 일 실시형태에 따른 방법의 흐름도를 도시한다.
도 4는 본 발명의 일 실시형태에 따른 방법의 흐름도롤 도시한다.
도 5는 본 발명의 일 실시형태에 따른 방법의 흐름도를 도시한다.
도 6은 텍스트 픽셀을 렌더링하기 위한 컴포넌트의 다른 예를 개략적으로 도시한다.
도 7은 바이트당 8비트 포맷으로 저장된 6 x 1 픽셀 커버리지 데이터의 정렬을 도시한다.
글리프의 비트맵이 결정된 후에, 글리프 비트맵에 기초한 텍스트 렌더링은 몇몇의 태스크의 완료를 요구할 수 있다. 하나는 CPU(central processing unit)로부터 GPU(graphics processing unit)로 렌더링을 위해 커버리지 데이터를 전달하는 것을 포함할 수 있다. 다른 태스크는 전달된 데이터를 인식할 수 있는 포맷으로 언패킹(unpacking)하는 것일 수 있다. 세 번째 태스크는 커버리지 데이터를 픽셀 데이터로 변환하는 것일 수 있다. 추가적으로, 텍스트의 최종 디스플레이를 개선하기 위해 다양한 정정이 픽셀에 적용될 수 있다. 텍스트를 효율적인 방식으로 렌더링하는 것은 커버리지 데이터에 기초하여 픽셀을 표시하기 위한 메모리 요구사항과 프로세싱 요구사항의 균형을 유지하는 것을 포함할 수 있다.
데이터 전달 및 언패킹
CPU로부터 GPU로의 커버리지 데이터 전달이 텍스트 렌더링 동안의 한 가지 가능한 병목이다. 종래에, 커버리지 데이터는, 데이터의 각각의 비트를 유지하기 위해 별도의 바이트를 이용함으로써 1bpp(bit-per-pixel) 데이터를 전달하는 것과 같이, 단순한 포맷으로 전달되었다. 1bpp 데이터의 각 비트를 유지하기 위해 바이트를 사용하는 것은 GPU로 전달되는 데이터의 언패킹을 단순화하는데, 각각 비트가 별도로 어드레스가능한 위치에 위치되기 때문이다. 그러나, 이 유형의 데이터 전달은 메모리 측면에서는 비효율적일 수 있는데, 각 바이트 내 데이터 공간의 대부분이 사용되지 않기 때문이다. 이 비효율성은 픽셀 데이터를 나타내는데 사용되는 여하한 오버샘플링에 의해 악화될 수 있다. 예를 들어, 텍스트 데이터(ClearType 데이터 등)에 대한 오버샘플링의 한 가지 공통적 유형은 각각의 픽셀에 대한 6 x 1 커버리지 데이터 포맷을 이용하는 것이다. 6 x 1 포맷에서, 픽셀을 위한 데이터의 3개의 채널을 나타내는데 총 10개의 비트가 필요하다. 채널은 통상 픽셀의 적색, 녹색 및 청색 컴포넌트에 대응한다. 그러므로, 1bpp 포맷의 데이터를 각 비트에 대해 별도의 바이트로써 전달할 때, 픽셀에 대한 적색, 녹색 및 청색 컴포넌트를 전달하기 위해 10 바이트가 필요하다. 데이터 전달의 이러한 유형에서, 픽셀을 특정하기 위해 필요한 비트는 쉽게 조합될 수 있는데, 10 비트가 다른 데이터를 포함하지 않는 그들의 개별 바이트로부터 불러오기(retrieve) 될 수 있기 때문이다.
다양한 실시형태에서, 커버리지 데이터 전달 및/또는 언패킹을 위한 개선된 방법이 제공된다. 별도의 바이트내 각각의 비트로 1bpp 데이터를 전달하는 대신에, 데이터는 8bpp와 같은 더 높은 데이터 밀도 포맷을 이용하여 GPU로 전달될 수 있다. 이는 각각의 바이트에서 전달되는 데이터의 양을 증가시키는데, 이는 GPU 상의 전체 메모리 사용을 감소시킬 수 있다.
더 높은 데이터 밀도 포맷으로 데이터를 전달하는 것은 데이터를 언패킹하기 위한 추가 처리를 요구할 수 있다. 더 높은 밀도 포맷 때문에, 각각의 픽셀에 대한 정보가 개별 바이트의 경계와 깨끗하게 정렬되지 않을 수 있다. 예를 들어, 6 x 1 커버리지 데이터는 픽셀 당 10 비트의 정보를 포함하는 반면, 8bpp 데이터 포맷은 바이트 당 8비트만 포함한다. 부가적으로, ClearType 텍스트에 대응하는 글리프에 대해, 각각의 픽셀은 ClearType 필터에 대한 픽셀 정보에서의 중첩 때문에 4비트만큼 인접 픽셀과 중첩된다. 그 결과, 8bpp 패킹 방식을 이용하여 전달된 1bpp ClearType 텍스트의 일 예에 있어서, 전달된 데이터의 각각의 바이트는 하나 보다 많은 픽셀에 대한 정보를 포함할 수 있고, 픽셀에 대한 디스플레이 값을 결정하는 것은 하나보다 많은 바이트로부터의 데이터를 필요로 할 수 있다. 이 상황은 도 6에 도시되어 있으며, 이는 8bpp 포맷에 6 x 1 커버리지 데이터가 저장되는 방법의 일 예를 도시한다.
커버리지 데이터를 언패킹하기 위한 방법은 가용한 디스플레이 하드웨어의 유형에 의존할 수 있다. DirectX 10 포맷(Dx10)을 이용하는 하드웨어 디스플레이에 대해, 비트 시프팅(shifting) 명령이 사용가능하다. 이는, 픽셀에 대응하는 10 비트를 포함하는 2 바이트 데이터를 액세스함으로써 필요한 여하한 픽셀 정보가 얻어질 수 있음을 의미한다. 그러면 비트 시프팅 명령은 현재 관심의 픽셀에 대응하는 각각의 바이트 내의 비트를 선택하는데 사용될 수 있다. 그러면 비트는, 픽셀에 대한 커버리지 데이터에 대응하는 10-비트 숫자를 구성하도록 조합될 수 있다. 커버리지 정보의 패킹에 대한 픽셀 내 비트의 수 사이의 관계에 기초하여, 유사한 조작이 다른 데이터 포맷에 대해 사용될 수 있다.
비트 시프팅 기능을 포함하지 않는 하드웨어에 대해 추가의 연산이 필요할 수 있다. 예를 들어, DirectX 9(Dx9)은 비트 시프팅 연산을 지원하지 않는다. 대신에, Dx9에서 픽셀 셰이더(Dx9)에 의해 샘플링된 정보가 0과 1 사이의 부동소수점(floating point) 값으로서 반환된다. 이 상황에서 픽셀 데이터를 추출하기 위해, 각각의 바이트에 저장된 값에 255가 곱해지고, 정수로 반올림될 수 있다(rounded). 그러면 다음의 연산은 희망 픽셀에 대한 관련 비트를 포함하는 원 바이트의 부분에 의존한다. 우측 비트 시프트(right bit shift)가 바람직하다면, 정수는 2의 음수 승(negative power)으로 곱해질 수 있다. 그러면 "플로어(floor)" 연산이 바람직하지 않은 비트를 제거하는데 사용될 수 있는데, 바람직하지 않은 비트는 곱셈 후 소수점의 오른쪽의 모든 것이다. 좌측 비트 시프트가 바람직하다면, 정수는 2의 양수 승으로 곱해질 수 있고, 소수점의 왼쪽에 위치된 바람직하지 않은 비트를 제거하기 위해 "프랙(frac)" 연산이 사용될 수 있다. 그 후 2의 음수 승에 의한 곱셈이 남아있는 비트를 원 위치로 되돌리기 위해 사용될 수 있다.
비트 어셈블리 및 데이터 룩업
상기에 기초하여, 더 높은 밀도 데이터 포맷이 GPU에게 1bpp 포맷 데이터를 전달하는데 사용될 수 있다. 픽셀에 대응하는 비트를 식별한 후에, 단일 숫자를 형성하기 위해 비트가 조합될 수 있다. 예를 들어, 6 x 1 포맷에서, 10 비트 수를 형성하기 위해 비트들이 조합될 수 있다. 6 x 5 포맷이 5개의 10자리 수를 형성하기 위해 조합될 수 있을 것이다. 더 일반적으로, 픽셀에 대응하는 비트의 수가 조합될 수 있다. 2개의 원 8-비트 바이트(two original 8-bit bytes)로부터의 비트들 사이의 중첩이 존재하지 않도록 상술한 비트 시프팅(또는 2의 멱(power of two) 곱셈)이 사용될 수 있으므로, 단순한 산술적 더하기 연산으로 비트를 조합하는데 충분함을 유의하라.
그러면 픽셀 값을 결정하기 위해 조합된 비트가 사용될 수 있다. 6 x 1 오버샘플링된 데이터를 이용하는 예에서, 별도의 적, 녹 및 청 값이 각각의 픽셀에 대해 연산될 수 있는데, 이것이 종래의 방식으로 언패킹되기 때문이다. 그러나, 상대적으로 적은 수의 가능한 조합만이 있으므로(10 비트 수에 대해 1024개), 출원인은 여하한 가능한 픽셀에 대한 값을 미리 계산하는 것이 더 효율적일 수 있다고 판단했다. 그러면 테이블(table)에서 정확한 값을 찾기 위한 인덱스로서 픽셀에 대한 10 비트 값이 사용될 수 있다. 이는 동일한 계산을 여러 번 하는 것을 피하고, 그러므로 GPU에 대한 처리 부담을 감소시킨다.
6 x 1 데이터와 같은 데이터 포맷에 대해, 비트 당 픽셀의 총 수(10)는 관리가능한 조합의 수(1024)를 낳는다. 그러나, 일부 오버샘플링 포맷은 더 큰 픽셀 당 데이터 양을 초래하고, 이는 픽셀 값의 결정을 복잡하게 할 수 있다. 예를 들어, 다른 가용 오버샘플링 포맷은 6 x 5 데이터인데, 이는 실질적으로 6 x 1 데이터의 5개의 열을 포함한다. 범용 연산 장치에 대한 현재의 연산 능력에 기초하면, 50 비트 인덱스를 이용하여 룩업 테이블을 직접 구성하는데 필요할 250개 조합을 미리 계산하는 것은 현실적이지 않다. 6 x 5 포맷 데이터에 대해, 이는 10 비트 데이터의 5행으로 데이터를 취급함으로써 어드레스될 수 있다. 룩업 테이블은 상술한 바와 같이 10 비트 커버리지 데이터 행에 대해 정정되지 않은 픽셀 값에 대해서 연산될 수 있다. 그 후 커버리지 데이터의 5개 행은 데이터를 단일 픽셀 값으로 결합하기 위해 수직으로 필터링될 수 있다. 선택적으로, 이 후자의 연산은 종래의 픽셀 셰이더에 의해 다루어질 수 있다. 상기에 기초하여, "픽셀 값"이라는 용어는, 완전한 값을 형성하기 위해 다른 부분적인 값과 결합될 수 있는 부분적 픽셀 값 또는 완전한 픽셀 값 중 하나를 지칭할 수 있음을 유의하라. 일부 상황에서, 완전한 값을 형성하기 위해 다른 부분적 값과 결합되는 픽셀 값을 구체적으로 설명할 때, 부분적 픽셀 값이라고 지칭될 것이다. 부분적 픽셀 값의 예는 6 x 5 오버샘플링된 커버리지 데이터의 일 행에 기초한 값일 수 있다.
픽셀 정정 인자
위의 방법은 1bpp 커버리지 데이터의 GPU로의 효율적 전달 및 그 후의 커버리지 데이터에 기초한 픽셀 값의 효율적인 계산을 가능하게 할 수 있다. 그 자체오, 이는 GPU에 대해 메모리 및/또는 연산 시간 절약을 제공할 수 있다. 그러나,픽셀 정정 인자 중 일부 또는 전부가 룩업 테이블에 포함될 수 있다면 추가의 개선이 가능하다.
ClearType 데이터와 같은 6 x 1 커버리지 데이터의 종래의 처리를 위해, 커버리지 데이터의 10 비트가 조합되고 처리되어 적, 녹 및 청 픽샐 정보를 제공한다. 그 후 픽셀 정보의 값에 기초하여, 하나 이상의 정정 값 또는 인자가 데이터에 적용된다. 이들 정정은 표시된 픽셀에 의해 형성된 텍스트의 모양을 개선하는데 사용될 수 있다. 정정은 (강화된) 컨트라스트 조정, ClearType 레벨 조정 및 알파 정정을 포함할 수 있다. 또한, 픽셀 정보를 표현하기 위해 청-녹-적 포맷을 사용하는 모니터에 대해서는, 적-녹-청 포맷과 반대로, 조정이 필요할 수 있다. 종래부터, 이들 정정 인자 각각은 데이터 내 적, 녹 및 청 채널 값에 기초하여 각각의 픽셀에 적용되고, 미정정 픽셀 값을 결정한 후에 별개의 추가 계산을 요구한다.
일부 실시형태에서, 픽셀 값에 적용되는 하나 이상의 정정 인자가 미리 계산될 수 있고 룩업 테이블에 포함될 수 있다. 픽셀 값에 적용되는 정정 중 많은 것이 조합된 커버리지 데이터 비트에 의해 완전히 특정된다. 예를 들어, 6 x 1 포맷 커버리지 데이터에 대한 조합된 10-비트 수는 픽셀 값에 적용될 수 있는 다양한 정정을 결정하는데 충분한 정보를 제공한다. 이러한 정정은 강화된 대비 정정, ClearType 레벨 정정 또는 알파 값 정정을 포함할 수 있다. 픽셀 값에 대한 정정도 미리 결정될 수 있기 때문에, 이들 정정도 미리 계산될 수 있다. 이는 룩업 테이블이 정정된 픽셀 값을 저장할 수 있도록 하는데, 이는 GPU에 의해 요구되는 계산의 수를 더 감소시킨다.
텍스트를 렌더링하기 위해 사용되는 픽셀에 적용되는 하나 이상의 정정 인자가 사용자 또는 하드웨어 설정에 기초하여 가변적일 수 있음을 유의하라. 예를 들어, 픽셀 값에 적용되는 정정 인자는 사용자 또는 하드웨어 디스플레이 장치의 컨트라스트 설정에 의해 선택되는 배경 및 텍스트 색에 의존할 수 있다. 그 결과, 픽셀 값에 대한 정정이 룩업 테이블에 포함되면, 정정 인자를 수정하는 변경이 일어날 때마다 새로운 룩업 테이블이 필요할 것이다. 이를 수용하는 한 가지 방법은 룩업 테이블의 지도책(atals)을 갖는 것일 수 있다. 공통 사용자 및 디스플레이 설정 및/또는 설정의 최근 조합에 대해, 룩업 테이블의 지도책에 룩업 테이블이 저장될 수 있다. 이전에 연산되었던 새로운 설정의 조합이 선택되면, 새로운 테이블이 계산되고 지도책에 부가될 수 있다. 메모리를 보존하기 위해, 룩업 테이블의 지도책은 제한된 수의 테이블을 포함할 수 있다. 예를 들어, 10-비트 데이터 룩업을 위한 20개 테이블은 96 kB 미만의 공간에 저장될 수 있다. 새로운 테이블이 부가되는 때에, 최근에 가장 사용되지 않은 테이블과 같은, 테이블 중 하나가 제거를 위해 선택될 수 있다.
픽셀 값에 대한 데이터 정정이 큰 데이터 포맷에 대한 추가의 도전을 제시할 수 있다. 예를 들어, 6 x 5 포맷의 데이터는 픽셀 값을 특정하기 위해 총 50 비트를 필요로할 수 있다. 상술한 바와 같이, 5개의 10-비트 테이터 행으로서 데이터를 분석함으로써 미정정 픽셀 값에 대한 룩업 테이블이 생성될 수 있다. 그러나, 픽셀 값에 대한 정정 인자의 적어도 일부는 픽셀에 대한 오버샘플링 데이터의 전부에 기초하고, 오버샘플링 데이터의 부분에 대응하는 10-비트 데이터 테이블에 포함시키기 위해 용이하게 분리될 수 없다. 예를 들어, 10-비트 데이터 행이 수적적으로 통합된 후에 6 x 5 픽셀 값에 대한 강화된 컨트라스트 정정이 계산되고 적용되어야 한다. 더 큰 데이터 포맷에 대한 픽셀 정정에 대해, 한 가지 옵션은 룩업 테이블로부터 불러온 데이터에 기초하여 종래의 방법으로 정정을 계산하는 것일 수 있다. 다르게는, 6 x 5 포맷 커버리지 데이터에 관한 예에서, 수직 통합의 결과는 디스플레이 모니터의 적, 녹 및 청 채널에 대응하는 3개의 그레이스케일 채널이다. 3개의 그레이스케일 채널 각각에 대해 별개로, 정정 데이터의 적어도 일부가 적당한 크기의 테이블에 저장될 수 있다. 그러므로, 일부 정정 값에 대해 룩업 테이블을 가짐으로써 일부 계산이 회피될 수 있는 반면, 나머지 정정은 종래대로 계산할 수 있다.
도 6은 본 발명의 일 실시형태에 따른 텍스트 픽셀의 표시를 위한 프로세스 흐름을 개략적으로 도시한다. 도 6에서, 전체적 맥락을 제공하기 위하여 프로세스의 확대도가 제공된다. 텍스처 커버리지 직사각형(rectangle)과 텍스처 좌표(610)는 텍스트를 래스터라이징하는데 사용되는 격자(grid)를 나타낸다. 버텍스 셰이더(620)는 스크린 공간 변환을 수행하고(622) 텍스처 좌표를 복사하기 위한(624) 기능을 포함한다. 픽셀 셰이더(630)는 커버리지 계산을 수행하고(632) 알파 조정과 같은 정정을 계산(634)하기 위한 기능을 포함한다. 1bpp 커버리지 데이터(660)는 픽셀 셰이더(630)에 의해 처리된다. 이 처리의 일부로서, 일부 계산이 커버리지 룩업 테이블(672) 및 알파 룩업 테이블(674)에 의해 대체될 수 있다. 블렌딩 단계(640)는 ClearType 블렌딩(642)과 같은 추가의 블렌딩을 수행하기 위한 기능을 포함한다.
본 발명의 다양한 실시형태의 개요를 간략하게 설명하였는데, 본 발명을 수행하기에 적합한 예시적인 동작 환경을 이제 설명한다. 도면 전체, 그리고 구체적으로 처음으로는 도 1을 참조하면, 본 발명의 실시형태를 구현하기 위한 예시적인 동작 환경이 도시되고 전체적으로 연산 장치(100)로 지시된다. 연산 장치(100)는 적당한 연산 환경의 일 예일 뿐이고 본 발명의 용도 또는 기능의 범위에 대한 여하한 제한을 시사하려는 것이 아니다. 연산 장치(100)는 도시된 컴포넌트 중 임의의 하나 또는 그 조합에 관한 여하한 의존성 또는 요구사항으로 해석되어도 안된다.
본 발명의 실시형태는, PDA(personal data assistant) 또는 기타 핸드헬드 장치와 같은 컴퓨터나 기타 기계에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능한 명령을 포함하는 컴퓨터 코드 또는 머신 사용가능 명령의 일반적인 맥락에서 설명될 수 있다. 일반적으로, 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함하는 프로그램 모듈은 특정한 태스크를 수행하거나 특정한 추상(absract) 데이터 유형을 구현하는 코드를 지칭한다. 본 발명은, 핸드헬드 장치, 소비자 가전, 범용 컴퓨터, 더 특화된 연산 장치 등을 포함하는 다양한 시스템 구성으로 실시될 수 있다. 본 발명은, 통신 네트워크를 통해 링크된 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실시될 수도 있다.
도 1을 계속 참조하면, 연산 장치(100)는 다음의 장치들을 직접 또는 간접으로 결합하는 버스(110)를 포함한다: 메모리(112), 하나 이상의 프로세서(114), 하나 이상의 프리젠테이션 컴포넌트(116), 입력/출력(I/O) 포트(118), I/O 컴포넌트(120) 및 예시적인 전원(122). 버스(110)는 하나 이상의 버스가 될 수 있는 것(주소 버스, 데이터 버스 또는 그 조합 등)을 나타낸다. 도 1의 다양한 블록이 명확성을 위해 선으로 도시되지만, 실제로는, 다양한 컴포넌트를 경계 짓는 것은 그렇게 명확하지 않고, 은유적으로, 더 정확하게는 선이 회색이거나 모호할 것이다. 예를 들어, 디스플레이 장치와 같은 프리젠테이션 컴포넌트가 I/O 컴포넌트라고 생각할 수 있다. 또한, 많은 프로세서가 메모리를 갖는다. 여기의 발명은, 이러한 것이 본 기술의 본질임을 인식하며, 도 1의 그림이 단순히 본 발명의 하나 이상의 실시형태와 결합하여 사용될 수 있는 예시적인 연산 장치의 예일 뿐임을 다시 반복한다. "워크스테이션(workstation)," "서버," "랩톱," 핸드헬드 장치" 등과 같은 카테고리 사이의 구별은 이루어지지 않는데, 모두가 도 1 및 "연산 장치"라는 지칭의 범위 내에 있는 것으로 생각되기 때문이다.
연산 장치(100)은 통상 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 연산 장치(100)에 의해 액세스될 수 있고 휘발성 및 비휘발성 매체, 제거가능(removable) 및 비제거가능 매체 모두를 포함하는 여하한 가용 매체일 수 있다. 제한이 아니라 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 여하한 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 제거가능 및 비제거가능 매체를 포함한다. 컴퓨터 저장 매체는 RAM(Random Access Memory), ROM(Read Only Memory), EEPROM(Electronically Erasable Programmable Read Only Memory), 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disks) 또는 기타 홀로그래픽 메모리, 자기 카세트, 자기 테이프, 자기 디스크 저장소 또는 기타 자기 저장 장치, 반송파 또는 희망 정보를 인코딩하는데 사용될 수 있고 연산 장치(100)에 의해 액세스될 수 있는 여하한 기타 매체를 포함하지만 이에 제한되지 않는다. 일 실시형태에서, 컴퓨터 저장 매체는 유형의 컴퓨터 저장 매체일 수 있다. 일 실시형태에서, 컴퓨터 저장 매체는 비-일시적(non-transitory) 컴퓨터 저장 매체일 수 있다.
메모리(112)는 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 메모리는 제거가능, 비제거가능 또는 그 결합일 수 있다. 예시적인 하드웨어 장치는 고체상태(solid-state) 메모리, 하드 드라이브, 광 디스크 드라이브 등을 포함한다. 연산 장치(100)는 메모리(112) 또는 I/O 컴포넌트(120)와 같은 다양한 엔티티로부터의 데이터를 판독하는 하나 이상의 프로세서를 포함한다. 프리젠테이션 컴포넌트(들)(116)은 사용자나 기타 장치에 데이터 표시를 제시한다. 예시적인 프레젠테이션 컴포넌트는 디스플레이 장치, 스피커, 인쇄 컴포넌트, 진동 컴포넌트 등을 포함한다.
I/O 포트(118)는 연산 장치(100)가 I/O 컴포넌트(120)를 포함하는 다른 장치에 논리적으로 결합될 수 있도록 하는데, 다른 장치 중 일부는 빌트인일 수 있다. 예시적인 컴포넌트는 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너, 프린터, 무선 장치 등을 포함한다.
도 2는 글리프를 처리하고 텍스트를 렌더링하기 위해 사용될 수 있는 연산 장치(100)의 컴포넌트를 상세히 나타낸다. GPU(124) 하드웨어의 일부는 하나 이상의 과정 셰이더(procedural shader)를 포함한다. 과정 셰이더는 그래픽 데이터에 대해 특화된 동작을 수행하기 위한 GPU(124)의 특화된 처리 서브유닛이다. 과정 셰이더의 일 예는 버텍스(vertex) 셰이더(126)인데, 이는 일반적으로 버텍스에 대해 동작한다. 예를 들어, 버텍스 셰이더(126)는 위치, 색 및 텍스처링 좌표의 연산을 개별 버텍스에 적용할 수 있다. 버텍스 셰이더(126)는 그래픽 파이프라인의 메모리에서 특정된 버텍스의 스트림에 대해 고정되거나 프로그램가능한 기능 연산을 수행할 수 있다. 과정 셰이더의 다른 예는 픽셀 셰이더(128)이다. 예를 들어, 버텍스 셰이더(126)의 출력은 픽셀 셰이더(128)로 전달될 수 있고, 픽셀 셰이더는 다시 각각의 개별 픽셀에 대해 동작한다. 과정 셰이더가 그 동작을 끝낸 후에, 정보는 GPU 버퍼(130)에 위치되고, 이는 부착된 디스플레이 장치상에 제시되거나 추가의 동작을 위해 호스트로 다시 전송될 수 있다.
GPU 버 위치를 글리프 텍스처를 위한 스테이징 표면 또는 스크래치 표면으로서 제공한다. 다양한 렌더링 동작이 글리프 텍스처에 대해 수행되면서, 글리프는 GPU 버퍼(130)로부터 액세스되고 버퍼(130) 상에서 변경 또는 재저장될 수 있다. 당업자에게 알려진 바와 같이, GPU 버퍼(130)는 처리되고 있는 글리프가 텍스트 파이프라인에 의해 변환되는 한편, GPU(124) 상에 남아있을 수 있게 한다. 글리프를 GPU(124)로부터 메모리(112)로 전달하는 것은 시간이 소모되므로, 글리프 텍스처나 비트맵이 GPU 버퍼(130) 상에 남아있는 것이 바람직할 수 있다.
픽, 픽셀 셰이더(128)로 명령을 다운로드함으로써 특화된 픽셀 셰이딩 기능이 달성될 수 있다. 예를 들어, 다운로드된 명령은 글리프 텍스처의 특화된 머징, 필터링 또는 에버리징을 가능하게 할 수 있다. 또한, 많은 상이한 동작의 기능이 픽셀 셰이더(128)로 맞춤화된 명령 세트에 의해 제공될 수 있다. 픽셀 셰이더(128)를 프로그램하는 기능은 텍스트 렌더링 동작을 위해 유리하고, 명령의 특화된 세트는 개발을 쉽게 하고 성능을 개선함으로써 가치를 부가할 수 있다. 명령 카운트 한계 및 기타 픽셀 셰이더(128)의 하드웨어 제한을 초과하지 않는다고 가정하면, 이들 명령을 실행함으로써, 다양한 기능이 픽셀 셰이더(128)에 의해 수행될 수 있다.
도 3은 본 발명의 일 실시형태에 따른 방법을 도시하는 흐름도이다. 도 3에 도시된 실시형태에서, 1bpp 커버리지 데이터가 수신된다(310). 커버리지 데이터는 6 x 1 포맷과 같은 오버샘플링된 포맷을 갖는다. 수신된 커버리지 데이터는 바이트당 1비트(bit per byte)의 저장소보다 큰 저장소 포맷에 저장된다. 커버리지 데이터의 비트는 n-비트 값을 형성하기 위해 조합된다(320). n-비트 값은 6 x 1 포맷에 대한 10-비트 값과 같은 오버샘플링된 포맷을 갖는 픽셀에 대응한다. 픽셀 값 테이블은 n-비트 값을 이용하여 인덱스된다(330). 인덱스된 위치에 대응하는 적어도 하나의 픽셀 값을 불러온다(340). 그러면 불러온 적어도 하나의 픽셀 값에 기초하여 픽셀이 렌더링된다(350).
도 4는 본 발명의 일 실시형태에 따른 다른 방법을 보여주는 흐름도를 도시한다. 도 4에 도시된 실시형태에서, 1bpp 커버리지 데이터를 불러온다(410). 커버리지 데이터는 6 x 5 포맷과 같은 오버샘플링된 포맷을 갖는다. 수신된 커버리지 데이터가 바이트당 1비트 저장소보다 큰 저장소 포맷에 저장된다. 커버리지 데이터의 비트는 복수의 n-비트 값을 형성하기 위해 조합된다(420). n-비트 값의 각각은, 6 x 5 포맷에 대한 픽셀 커버리지 데이터의 일부인 10-비트 값의 그룹과 같은, 오버샘플링된 포맷을 갖는 픽셀의 부분에 대응한다. n-비트 값의 각각은 또한 복수의 바이트로부터의 비트를 포함한다. 픽셀 값 테이블은 복수의 n-비트 값을 이용하여 여러 번 인덱싱된다(430). 동일한 픽셀 값 테이블이 복수 회 인덱스될 수 있거나, 선택적으로는, n-비트 값이 하나 이상의 픽셀 값 테이블을 인덱스하는데 사용될 수 있다. 인덱싱된 위치에 대응하는 복수의 부분적 픽셀 값을 불러온다(440). 불러온 부분적 픽셀 값은 복수의 결합된 픽셀 값을 형성하기 위해 결합된다(450). 그러면 픽셀은 결합된 픽셀 값에 기초하여 렌더링된다(460).
도 5는 본 발명의 또 다른 실시형태에 따른 방법을 보여주는 흐름도를 도시한다. 도 5에 도시된 실시형태에서, 1bpp 커버리지 데이터가 수신된다(510). 커버리지 데이터는 6 x 5 포맷과 같은 오버샘플링된 포맷을 갖는다. 수신된 커버리지 데이터는 바이트당 1비트 저장소보다 큰 저장소 포맷에 저장된다. 저장된 픽셀 커버리지 데이터의 바이트가 부동소수점 데이터 유형으로서 샘플링된다(520). 바이트는 렌더링될 픽셀에 대한 커버리지 데이터에 대응하는 하나 이상의 비트를 포함한다. 샘플링된 부동소수점 바이트는 저장된 데이터에서 하나 이상의 비트를 구별하기 위해 변환된다(530). 예를 들어, 변환은 2의 멱에 의한 곱셈일 수 있어서, 관심 비트가 숫자에 대한 소수점 한 쪽으로 구별된다. 변환된 바이트는 하나 이상의 구별된 비트에 대응하지 않는 비트를 제거하기 위해 트렁케이트(truncate)된다(540). 오버샘플링된 포맷을 갖는 픽셀에 대응하는 n-비트 값을 형성하기 위해 구별된 비트는 구별된 비트의 적어도 하나의 다른 부분과 조합된다(550). 픽셀 값 테이블은 n-비트 값을 이용하여 인덱스된다(560). 인덱싱된 위치에 대응하는 적어도 하나의 픽셀 값을 불러온다(570). 그러면 불러온 적어도 하나의 픽셀 값에 기초하여 픽셀이 렌더링된다(580).
예시
다음은 예언적인 예이다. 텍스트와 같은 앤티앨리어싱된 객체를 나타내고 있는 물리적 디스플레이에 대해 디스플레이 설정의 변화가 검출된다. 물리적 디스플레이 상의 픽셀은 6 x 1 오버샘플링된 1bpp 커버리지 데이터에 기초하여 렌더링되고 있다. 변화는 물리적 디스플레이 장치 상의 설정의 변화, 표시될 텍스트의 색의 변화, 또는 다른 변화일 수 있다. 변화에 기초하여, 디스플레이 픽셀에 영향을 주는 설정이 검출된다. 검출된 설정은 룩업 테이블의 지도책에 저장된 룩업 테이블에 대한 설정과 비교된다. 설정의 매칭하는 그룹이 찾아지지 않으면, 새로운 룩업 테이블이 생성된다. 룩업 테이블은 6 x 1 커버리지 데이터에 대해 가능한 210개의 조합의 각각에 대해 정정된 픽셀 값을 제공한다. 정정된 픽셀 값은 알파 정정, ClearType 정정, 또는 여하한 기타 유형의 정정과 같은 픽셀 값에 대한 정정을 포함한다. 새로운 룩업 테이블이 지도책에 추가되고, 지도책 내의 가장 오래된 룩업 테이블이 제거된다.
그러면 새로운 룩업 테이블이 텍스트 글리프와 같은 객체를 디스플레이 장치 상에서 렌더링하는데 사용된다. 디스플레이에 대한 글리프가 6 x 1 오버샘플링된 1bpp 커버리지 데이터로서 제시된다. 데이터의 8비트를 CPU에서 GPU로 전달하기 위한 바이트로 배치함으로써 1bpp 데이터가 패킹(pack)된다. GPU로 전달한 후에, 픽셀에 대응하는 데이터를 포함하는 2 바이트를 액세스함으로써 각각의 픽셀에 대한 데이터가 추출된다. 관심 비트를 고립시키기 위해 비트 시프팅 연산(operation)이 사용되고, 관심 비트로부터 10-비트 수가 형성된다. 그러면 이 10-비트 수가 새로운 룩업 테이블을 인덱스하는데 사용된다. 10-비트 수에 대응하는 저장된 픽셀 값이 불러오기 되고, 표시를 위해 사용된다. 모든 정정이 저장된 값에 통합되면, 저장된 픽셀 값은 임의의 다른 정정 계산을 필요로 하지 않을 수 있다.
추가적인 실시형태
제1 실시형태에서, 앤티앨리어싱된 렌더링을 위한 방법이 제공된다. 방법은: 오버샘플링된 포맷을 갖는 1bpp(bit-per-pixel) 커버리지 데이터를 수신하는 단계-상기 수신된 커버리지 데이터는 바이트당 1비트(bit per byte) 저장소보다 큰 저장소 포맷을 가짐-와; 상기 오버샘플링된 포맷을 갖는 픽셀에 대응하는 n-비트 값을 형성하기 위해 커버리지 데이터의 비트를 조합하는 단계와; 상기 n-비트 값을 이용하여 픽셀 값 테이블을 인덱스하는 단계와; 상기 인덱스된 위치에 대응하는 적어도 하나의 픽셀 값을 불러오는 단계와; 상기 불러온 적어도 하나의 픽셀 값에 기초하여 픽셀을 렌더링하는 단계를 포함한다.
제2 실시형태에서, 제1 실시형태에 따른 방법이 제공되는데, n-비트 값을 형성하기 위해 커버리지 데이터의 비트를 조합하는 단계는: 저장된 픽셀 커버리지 데이터의 바이트를 부동소수점(floating point) 데이터 유형으로서 샘플링하는 단계-상기 바이트는 렌더링될 픽셀에 대한 커버리지 데이터에 대응하는 하나 이상의 비트를 포함-와; 상기 저장된 데이터 내 하나 이상의 비트를 구별하기 위해 상기 샘플링된 부동소수점 바이트를 변환하는 단계와; 상기 하나 이상의 구별된 비트에 대응하지 않는 비트를 제거하기 위해 상기 변환된 바이트를 트렁케이트(truncate)하는 단계와; 상기 오버샘플링된 포맷을 갖는 픽셀에 대응하는 n-비트 값을 형성하기 위해 상기 구별된 비트를 구별된 비트의 적어도 하나의 다른 부분과 조합하는 단계를 포함한다.
제3 실시형태에서, 위의 실시형태 중 여하한 것에 따른 방법이 제공되는데, 상기 커버리지 데이터에 대한 상기 오버샘플링된 포맷은 6 x 1 포맷이고, 상기 n-비트 값은 10-비트 값에 대응한다.
제4 실시형태에서, 위의 실시형태 중 여하한 것에 따른 방법이 제공되는데, 결합된 픽셀 값을 형성하기 위해 상기 적어도 하나의 픽셀 값을 적어도 제2 픽셀 값과 결합하는 단계를 더 포함하고, 상기 렌더링된 픽셀은 상기 결합된 픽셀 값에 기초한다.
제5 실시형태에서, 위의 실시형태 중 여하한 것에 따른 방법이 제공되는데, 복수의 n-비트 값을 형성하기 위해 비트를 조합하는 단계는 복수의 바이트로부터의 비트를 조합하는 단계를 포함한다.
제6 실시형태에서, 앤티앨리어싱된 렌더링을 위한 방법이 제공된다. 방법은: 오버샘플링된 포맷을 갖는 1bpp 커버리지 데이터를 수신하는 단계-상기 수신된 커버리지 데이터는 바이트당 1비트(bit per byte) 저장소보다 큰 저장소 포맷을 가짐-와; 복수의 n-비트 값을 형성하기 위해 커버리지 데이터의 비트를 조합하는 단계-각각의 n-비트 값은 상기 오버샘플링된 포맷을 갖는 픽셀에 대응하고 각각의 n-비트 값은 복수의 바이트로부터의 비트를 포함-와; 상기 복수의 n-비트 값을 이용하여 픽셀 값 테이블을 여러 번 인덱스하는 단계와; 각각의 인덱스된 위치에 대응하는 복수의 픽셀 값을 불러오는 단계와; 복수의 결합된 픽셀 값을 형성하기 위해 복수의 인덱스된 위치에 대응하는 불러온 픽셀 값을 결합하는 단계와; 상기 복수의 결합된 픽셀 값에 기초하여 픽셀을 렌더링하는 단계를 포함한다.
제7 실시형태에서, 제6 실시형태에 따른 방법이 제공되는데, 복수의 픽셀 값을 불러오는 단계는 픽셀 값의 3개 채널을 불러오는 단계를 포함한다.
제8 실시형태에서, 제7 실시형태에 따른 방법이 제공되는데, 상기 불러온 픽셀 값을 결합하는 단계는 3개의 결합된 채널 픽셀 값을 형성하기 위해 픽셀 값의 상기 3개 채널을 결합하는 단계를 포함한다.
제9 실시형태에서, 제8 실시형태에 따른 방법이 제공되는데, 상기 방법은 정정 인자를 불러오기 위해 결합된 채널 값을 이용하여 정정 인자 테이블을 인덱스하는 단계와; 상기 결합된 채널 값에 상기 정정 인자를 적용하는 단계를 더 포함한다.
제10 실시형태에서, 제6 내지 제9 실시형태 중 여하한 것에 따른 방법이 제공되는데, 상기 커버리지 데이터에 대한 상기 오버샘플링된 포맷은 6 x 5 포맷이고, 각각의 n-비트 값은 10-비트 값에 대응한다.
제11 실시형태에서, 위의 실시형태 중 여하한 것에 따른 방법이 제공되는데, 상기 수신된 커버리지 데이터는 적어도 바이트당 8비트의 저장 포맷을 갖는다.
제12 실시형태에서, 위의 실시형태 중 여하한 것에 따른 방법이 제공되는데, 상기 1bpp 커버리지 데이터는 텍스트 글리프(glyph)에 대한 커버리지 데이터를 나타낸다.
제13 실시형태에서, 위의 실시형태 중 여하한 것에 따른 방법이 제공되는데, 상기 방법은 픽셀 정정 인자를 수정하는 변경을 검출하는 단계와; 상기 수정된 픽셀 정정 인자를 통합하는 픽셀 값의 테이블을 구성하는 단계를 더 포함하고, 상기 n-비트 값을 이용하여 픽셀 값 테이블을 인덱스하는 단계는 상기 구성된 테이블을 인덱스하는 단계를 포함한다.
제14 실시형태에서, 제13 실시형태에 따른 방법이 제공되는데, 상기 구성된 테이블은 테이블의 지도책(atlas)에 저장된다.
본 발명의 실시형태가 구체적인 실시형태에 관련하여 설명되었는데, 이는 모든 측면에서 제한적인 것이 아니라 예시적인 것으로 의도된 것이다. 본 발명이 관련된 기술분야의 당업자에게 그 범위를 벗어나지 않고 대안적인 실시형태가 명백하게 될 것이다.
전술한 바로부터, 본 발명은 위에 제시된 모든 목적 및 목표와 분명하고 구성에 본질적인 다른 장점을 획득하도록 잘 적응된 것임을 알 것이다.
특정한 특징 및 서브컴비네이션이 유용하고 다른 특징 및 서브컴비네이션을 참조하지 않고 채용될 수 있음을 이해할 것이다. 이는 청구항에서 고려된 것이고 청구항의 범위 내에 있다.

Claims (14)

  1. 오버샘플링된 포맷을 갖는 1bpp(bit-per-pixel) 커버리지 데이터를 수신하는 단계-상기 수신된 커버리지 데이터는 바이트당 1비트(bit per byte) 저장소보다 큰 저장소 포맷을 가짐-와,
    상기 오버샘플링된 포맷을 갖는 픽셀에 대응하는 n-비트 값을 형성하기 위해 커버리지 데이터의 비트를 조합(assembling)하는 단계와,
    상기 n-비트 값을 이용하여 픽셀 값 테이블을 인덱스하는 단계와,
    상기 인덱스된 위치에 대응하는 적어도 하나의 픽셀 값을 불러오는(retrieving) 단계와,
    상기 불러온 적어도 하나의 픽셀 값에 기초하여 픽셀을 렌더링하는 단계를 포함하는
    앤티앨리어싱된 렌더링(antialiased rendering)을 위한 방법.
  2. 제 1 항에 있어서,
    n-비트 값을 형성하기 위해 커버리지 데이터의 비트를 조합하는 단계는
    저장된 픽셀 커버리지 데이터의 바이트를 부동소수점(floating point) 데이터 유형으로서 샘플링하는 단계-상기 바이트는 렌더링될 픽셀에 대한 커버리지 데이터에 대응하는 하나 이상의 비트를 포함-와,
    상기 저장된 데이터 내 하나 이상의 비트를 구별하기 위해 상기 샘플링된 부동소수점 바이트를 변환하는 단계와,
    상기 하나 이상의 구별된 비트에 대응하지 않는 비트를 제거하기 위해 상기 변환된 바이트를 트렁케이트(truncate)하는 단계와,
    상기 오버샘플링된 포맷을 갖는 픽셀에 대응하는 n-비트 값을 형성하기 위해 상기 구별된 비트를 구별된 비트의 적어도 하나의 다른 부분과 조합하는 단계를 포함하는
    앤티앨리어싱된 렌더링을 위한 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 커버리지 데이터에 대한 상기 오버샘플링된 포맷은 6 x 1 포맷이고, 상기 n-비트 값은 10-비트 값에 대응하는
    앤티앨리어싱된 렌더링을 위한 방법.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 방법은 결합된 픽셀 값을 형성하기 위해 상기 적어도 하나의 픽셀 값을 적어도 제2 픽셀 값과 결합하는 단계를 더 포함하고,
    상기 렌더링된 픽셀은 상기 결합된 픽셀 값에 기초하는
    앤티앨리어싱된 렌더링을 위한 방법.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    복수의 n-비트 값을 형성하기 위해 비트를 조합하는 단계는 복수의 바이트로부터의 비트를 조합하는 단계를 포함하는
    앤티앨리어싱된 렌더링을 위한 방법.
  6. 오버샘플링된 포맷을 갖는 1bpp 커버리지 데이터를 수신하는 단계-상기 수신된 커버리지 데이터는 바이트당 1비트(bit per byte) 저장소보다 큰 저장소 포맷을 가짐-와,
    복수의 n-비트 값을 형성하기 위해 커버리지 데이터의 비트를 조합하는 단계-각각의 n-비트 값은 상기 오버샘플링된 포맷을 갖는 픽셀에 대응하고 각각의 n-비트 값은 복수의 바이트로부터의 비트를 포함-와,
    상기 복수의 n-비트 값을 이용하여 픽셀 값 테이블을 여러 번 인덱스하는 단계와,
    각각의 인덱스된 위치에 대응하는 복수의 픽셀 값을 불러오는 단계와,
    복수의 결합된 픽셀 값을 형성하기 위해 복수의 인덱스된 위치에 대응하는 불러온 픽셀 값을 결합하는 단계와,
    상기 복수의 결합된 픽셀 값에 기초하여 픽셀을 렌더링하는 단계를 포함하는
    앤티앨리어싱된 렌더링을 위한 방법.
  7. 제 6 항에 있어서,
    복수의 픽셀 값을 불러오는 단계는 픽셀 값의 3개 채널을 불러오는 단계를 포함하는
    앤티앨리어싱된 렌더링을 위한 방법.
  8. 제 7 항에 있어서,
    상기 불러온 픽셀 값을 결합하는 단계는 3개의 결합된 채널 픽셀 값을 형성하기 위해 픽셀 값의 상기 3개 채널을 결합하는 단계를 포함하는
    앤티앨리어싱된 렌더링을 위한 방법.
  9. 제 8 항에 있어서,
    상기 방법은
    정정 인자를 불러오기 위해 결합된 채널 값을 이용하여 정정 인자 테이블을 인덱스하는 단계와,
    상기 결합된 채널 값에 상기 정정 인자를 적용하는 단계를 더 포함하는
    앤티앨리어싱된 렌더링을 위한 방법.
  10. 제 6 항 내지 제 9 항 중 어느 한 항에 있어서,
    상기 커버리지 데이터에 대한 상기 오버샘플링된 포맷은 6 x 5 포맷이고, 각각의 n-비트 값은 10-비트 값에 대응하는
    앤티앨리어싱된 렌더링을 위한 방법.
  11. 제 1 항 내지 제 10 항 중 어느 한 항에 있어서,
    상기 수신된 커버리지 데이터는 적어도 바이트당 8비트의 저장 포맷을 갖는
    앤티앨리어싱된 렌더링을 위한 방법.
  12. 제 1 항 내지 제 10 항 중 어느 한 항에 있어서,
    상기 1bpp 커버리지 데이터는 텍스트 글리프(glyph)에 대한 커버리지 데이터를 나타내는
    앤티앨리어싱된 렌더링을 위한 방법.
  13. 제 1 항 내지 제 10 항 중 어느 한 항에 있어서,
    상기 방법은
    픽셀 정정 인자를 수정하는 변경을 검출하는 단계와,
    상기 수정된 픽셀 정정 인자를 통합하는 픽셀 값의 테이블을 구성하는 단계를 더 포함하고,
    상기 n-비트 값을 이용하여 픽셀 값 테이블을 인덱스하는 단계는 상기 구성된 테이블을 인덱스하는 단계를 포함하는
    앤티앨리어싱된 렌더링을 위한 방법.
  14. 제 13 항에 있어서,
    상기 구성된 테이블은 테이블의 지도책(atlas)에 저장되는
    앤티앨리어싱된 렌더링을 위한 방법.
KR1020127033341A 2010-06-21 2011-06-12 텍스트 렌더링을 위한 룩업 테이블 KR101812825B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/819,597 US9129441B2 (en) 2010-06-21 2010-06-21 Lookup tables for text rendering
US12/819,597 2010-06-21
PCT/US2011/040113 WO2011162993A2 (en) 2010-06-21 2011-06-12 Lookup tables for text rendering

Publications (2)

Publication Number Publication Date
KR20130095651A true KR20130095651A (ko) 2013-08-28
KR101812825B1 KR101812825B1 (ko) 2017-12-27

Family

ID=45328227

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127033341A KR101812825B1 (ko) 2010-06-21 2011-06-12 텍스트 렌더링을 위한 룩업 테이블

Country Status (7)

Country Link
US (1) US9129441B2 (ko)
EP (1) EP2583239B1 (ko)
JP (1) JP5785256B2 (ko)
KR (1) KR101812825B1 (ko)
CN (1) CN102971765B (ko)
CA (1) CA2801054C (ko)
WO (1) WO2011162993A2 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140320527A1 (en) * 2013-04-30 2014-10-30 Microsoft Corporation Hardware glyph cache
US9684950B2 (en) * 2014-12-18 2017-06-20 Qualcomm Incorporated Vision correction through graphics processing
CN104899838B (zh) * 2015-05-29 2017-11-28 小米科技有限责任公司 调整图像的方法及装置
US10049437B2 (en) 2016-11-21 2018-08-14 Microsoft Technology Licensing, Llc Cleartype resolution recovery resampling
CN110032712A (zh) * 2018-01-12 2019-07-19 北京方正手迹数字技术有限公司 一种字体渲染装置及终端
CN108965471B (zh) * 2018-08-22 2021-03-16 四川长虹电器股份有限公司 一种智能电视上浏览器内存改善方法
CN109558091B (zh) * 2018-12-11 2020-10-13 广东省新一代通信与网络创新研究院 查找表存储方法、装置及计算机可读存储介质

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5838334A (en) 1994-11-16 1998-11-17 Dye; Thomas A. Memory and graphics controller which performs pointer-based display list video refresh operations
US6133901A (en) * 1998-03-31 2000-10-17 Silicon Graphics, Inc. Method and system for width independent antialiasing
US6529284B1 (en) 1998-08-07 2003-03-04 Texas Instruments Incorporated Efficient rendering of masks to a screened buffer using a lookup table
JP3552094B2 (ja) 1999-02-01 2004-08-11 シャープ株式会社 文字表示装置、文字表示方法および記録媒体
US6342896B1 (en) 1999-03-19 2002-01-29 Microsoft Corporation Methods and apparatus for efficiently implementing and modifying foreground and background color selections
US6342890B1 (en) 1999-03-19 2002-01-29 Microsoft Corporation Methods, apparatus, and data structures for accessing sub-pixel data having left side bearing information
US6339426B1 (en) 1999-04-29 2002-01-15 Microsoft Corporation Methods, apparatus and data structures for overscaling or oversampling character feature information in a system for rendering text on horizontally striped displays
US6384839B1 (en) * 1999-09-21 2002-05-07 Agfa Monotype Corporation Method and apparatus for rendering sub-pixel anti-aliased graphics on stripe topology color displays
US6452595B1 (en) 1999-12-06 2002-09-17 Nvidia Corporation Integrated graphics processing unit with antialiasing
US7221381B2 (en) 2001-05-09 2007-05-22 Clairvoyante, Inc Methods and systems for sub-pixel rendering with gamma adjustment
US6927780B2 (en) 2002-01-14 2005-08-09 Seiko Epson Corporation Fast text/graphics resolution improvement with chain-code table look-up
AU2003233107A1 (en) * 2002-05-10 2003-11-11 Bitboys, Oy Graphics engine converting individual commands to spatial image information, and electrical device and memory incorporating the graphics engine
US7764833B2 (en) 2003-02-13 2010-07-27 Ati Technologies Ulc Method and apparatus for anti-aliasing using floating point subpixel color values and compression of same
US7034830B2 (en) * 2003-03-25 2006-04-25 Mitsubishi Electric Research Laboratories, Inc. Method for generating a two-dimensional distance field within a cell associated with a corner of a two-dimensional object
US7280120B2 (en) 2003-06-26 2007-10-09 Canon Kabushiki Kaisha Compositing with a sub-pixel mask in graphic object rendering
JP2005301414A (ja) * 2004-04-07 2005-10-27 Sony Computer Entertainment Inc 画像生成装置および画像生成方法
US7358975B2 (en) 2004-11-02 2008-04-15 Microsoft Corporation Texture-based packing, such as for packing 8-bit pixels into one bit
US8212838B2 (en) 2005-05-27 2012-07-03 Ati Technologies, Inc. Antialiasing system and method
US20070257934A1 (en) * 2006-05-08 2007-11-08 David Doermann System and method for efficient enhancement to enable computer vision on mobile devices
US7852350B2 (en) 2007-07-26 2010-12-14 Stmicroelectronics S.R.L. Graphic antialiasing method and graphic system employing the method
US20090160867A1 (en) 2007-12-19 2009-06-25 Advance Micro Devices, Inc. Autonomous Context Scheduler For Graphics Processing Units
TWI425440B (zh) 2008-07-03 2014-02-01 Nvidia Corp 複合多重樣本/超樣本抗頻疊
US8605086B2 (en) * 2008-07-03 2013-12-10 Nvidia Corporation Hybrid multisample/supersample antialiasing
US8139075B2 (en) 2008-12-10 2012-03-20 Microsoft Corp. Color packing glyph textures with a processor

Also Published As

Publication number Publication date
WO2011162993A3 (en) 2012-04-12
US9129441B2 (en) 2015-09-08
US20110310115A1 (en) 2011-12-22
WO2011162993A2 (en) 2011-12-29
JP2013536490A (ja) 2013-09-19
EP2583239A2 (en) 2013-04-24
EP2583239A4 (en) 2017-05-10
EP2583239B1 (en) 2020-03-04
JP5785256B2 (ja) 2015-09-24
CA2801054C (en) 2018-05-01
CN102971765A (zh) 2013-03-13
KR101812825B1 (ko) 2017-12-27
CA2801054A1 (en) 2011-12-29
CN102971765B (zh) 2014-10-22

Similar Documents

Publication Publication Date Title
US10134175B2 (en) Gradient adjustment for texture mapping to non-orthonormal grid
KR101812825B1 (ko) 텍스트 렌더링을 위한 룩업 테이블
CN103503032B (zh) 图形硬件中的纹理化
KR102275712B1 (ko) 렌더링 방법, 렌더링 장치 및 전자 장치
CN101911123B (zh) 图形描绘装置以及图形描绘方法
US20100141670A1 (en) Color Packing Glyph Textures with a Processor
KR100823373B1 (ko) 3차원 그래픽 서브시스템들에서의 텍스쳐 맵 데이터의프로그램 가능 필터링을 위한 방법 및 메카니즘
EP1980998A2 (en) Programmable graphics processing element
US11238639B2 (en) Gradient adjustment for texture mapping to non-orthonormal grid
CN106575429A (zh) 图形处理单元中的高阶滤波
US7358975B2 (en) Texture-based packing, such as for packing 8-bit pixels into one bit
US7643032B2 (en) Texture-based packing, such as for packing 8-bit pixels into two bits
CN106575428B (zh) 图形处理单元中的高阶滤波
US7532221B2 (en) Texture-based packing, such as for packing 16-bit pixels into four bits
US20130063475A1 (en) System and method for text rendering
JP2010055374A (ja) データ作成装置、データ作成方法、データ作成用プログラム、描画装置、描画方法、描画用プログラム、および、コンピュータ読取可能な記録媒体
JP4360410B2 (ja) 画像処理回路、表示装置及び印刷装置
JP4817792B2 (ja) テクスチャベースのピクセルパッキング
US20030164826A1 (en) Reading or writing a non-super sampled image into a super sampled buffer
CN115280368A (zh) 用于渲染的滤波
US10074152B2 (en) GPU rendering of knockout groups

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant