KR102635452B1 - 컴퓨팅 시스템에서 안티-에일리어싱 동작 수행 - Google Patents

컴퓨팅 시스템에서 안티-에일리어싱 동작 수행 Download PDF

Info

Publication number
KR102635452B1
KR102635452B1 KR1020187022897A KR20187022897A KR102635452B1 KR 102635452 B1 KR102635452 B1 KR 102635452B1 KR 1020187022897 A KR1020187022897 A KR 1020187022897A KR 20187022897 A KR20187022897 A KR 20187022897A KR 102635452 B1 KR102635452 B1 KR 102635452B1
Authority
KR
South Korea
Prior art keywords
image
pixel
sub
processor
pixels
Prior art date
Application number
KR1020187022897A
Other languages
English (en)
Other versions
KR20180102617A (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 KR20180102617A publication Critical patent/KR20180102617A/ko
Application granted granted Critical
Publication of KR102635452B1 publication Critical patent/KR102635452B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/70Denoising; Smoothing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • 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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/503Blending, e.g. for anti-aliasing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/12Indexing scheme for image data processing or generation, in general involving antialiasing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2004Aligning objects, relative positioning of parts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2016Rotation, translation, scaling

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Architecture (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

하이브리드 안티에일리어싱 동작을 수행하기 위한 시스템, 장치 및 방법이 개시된다. 하이브리드 안티-에일리어싱 리졸브 동작은 멀티-샘플링 안티-에일리어싱과 후-처리 안티-에일리어싱을 결합하여 계산 효율적인 방식으로 고품질 이미지를 생성한다. 일 실시 예에서, 프로세서는 메모리에 저장된 이미지에 대해 안티-에일리어싱 리졸브 동작 수행 요청을 검출한다. 요청 감지에 응답하여, 프로세서는 이미지의 크기를 확대한 후 후-처리 안티-에일리어싱 필터로 이미지를 필터링 한다. 이미지를 필터링 한 후, 프로세서는 안티-에일리어싱 리졸브 동작의 결과가 되는 이미지의 평균화를 수행한다. 이미지의 크기를 확대하는 것은 이미지의 서브-픽셀들을 정규 픽셀들로 변환하는 것을 포함한다. 프로세서는 또한 이미지를 필터링하기 전에 서브-픽셀들을 수직 및 수평 그리드 패턴으로 정렬하도록 이미지를 회전시킬 수 있다. 또한, 회전된 그리드에 기초하여, 렌더링되는 이미지의 각 픽셀에 대한 복수의 서브-픽셀 샘플링 좌표들을 생성하고, 여기서 회전의 양은 회전된 그리드에 대해 특정화 되고, 복수의 실행 유닛들에 의해 렌더링되는 이미지의 각 픽셀 내의 복수의 서브-픽셀 샘플링 좌표들에 의해 지시되는 서브-픽셀 위치들을 샘플링하고, 및 서브-픽셀 위치들의 값들을 메모리에 저장하도록 구성된 프로세서의 실시 예가 고려된다.

Description

컴퓨팅 시스템에서 안티-에일리어싱 동작 수행
우선권 정보
본 출원은 발명자가 'Evgene Fainstain'인 "실시간 3D 그래픽을 위한 진보된 멀티샘플링 기술"이라는 제목의 2016년 1월 18일 출원된 미국 가 출원 번호 62/279,889의 우선권의 이익을 주장하며, 본원에 전체적으로 완전하게 설명된 것처럼 그 전체가 본원에 참고 문헌으로 포함된다.
3 차원(3D) 렌더링(rendering)은 계산 집약적(computationally-intensive) 프로세스이며, 현실적인(즉, 영화의) 고품질의 실-시간 렌더링을 생성하기 위해서는 상당한 양의 컴퓨팅 전력이 요구된다. 3D 하드웨어 제조사들은 렌더링 작업들을 수행하기 위해보다 강력한 장치들(예를 들어, 그래픽 처리 장치들(GPUs))을 지속적으로 생성한다. GPU는 그래픽 처리 작업을 수행하도록 구성된 복잡한 집적 회로이다. 예를 들어, GPU는 비디오 게임 어플리케이션과 같은 최종 사용자 어플리케이션에 필요한 그래픽 처리 작업을 수행할 수 있다. GPU는 개별 장치일 수도 있고, 중앙 처리 장치(CPU)와 같은 다른 프로세서와 동일한 장치에 포함될 수도 있다.
불행하게도, 현대의 실시간 3D 렌더링 하드웨어는 실시간으로 물리적 세계를 적절하게 시뮬레이션(simulation)할 만큼 충분히 강력하지 않다. 예를 들어, 레이 트레이싱(ray tracing)과 같은 알고리즘은 실시간으로 구현하기에는 너무 많은 계산 비용이 소요된다. 따라서, 이미지가 전체적으로 물리적으로 정확하지는 않지만 실제와 같이 보이는 이미지를 생성하기 위해 다양한 효율 개선 기술이 사용된다. 3D로 생성된 이미지의 일반적인 문제는 고유한 "지퍼(zipper)" 효과(즉, "계단 현상(jaggies)"또는 "에일리어싱(aliasing)")이다. 지금까지, 렌더링된 이미지들에 대한 이러한 에일리어싱 효과를 최소화하기 위해 개발된 기술들은 비효율적이었으며 및/또는 너무 많은 계산 비용이 소요되었다.
안티-에일리어싱 관련 동작들을 수행하기 위한 시스템 및 방법의 다양한 실시 예들이 고려된다. 일 실시 예에서, 적어도 메모리 및 프로세서를 포함하는 시스템이 고려된다. 프로세서는 메모리에 저장된 제1 이미지에 대해 안티-에일리어싱 리졸브 동작(resolve operation)을 수행하라는 요청을 검출하도록 구성된다. 제1 이미지는 픽셀 당 다수의 서브-픽셀 샘플들을 포함하고 제1 세트의 치수를 갖는다. 요청을 검출하는 것에 응답하여, 상기 프로세서는 상기 제1 이미지를 확대하여 픽셀 당 단일 샘플을 포함하고 상기 제1 세트의 치수보다 큰 제2 세트의 치수를 갖는 제2 이미지를 생성하고, 상기 제2 이미지에 대해 후-처리 안티-에일리어싱을 수행하여 상기 제2 세트의 치수를 갖는 제3 이미지를 생성하고, 및 제4 이미지를 생성하기 위해 상기 제3 이미지의 치수를 줄이기 위해 구성되고, 상기 제4 이미지는 상기 안티-에일리어싱 리졸브 동작의 결과이다. 다양한 실시 예에서, 후-처리 안티-에일리어싱을 수행하는 단계는 평균화에 앞서 수행되고, 주변 픽셀들의 값에 기초하여 픽셀들을 필터링하는 단계를 포함한다. 다양한 실시 예에서, 제1 이미지의 치수를 확대하는 것은 제1 이미지의 서브-픽셀들을 제2 이미지의 정규 픽셀들로 변환하는 것을 포함한다. 또한, 일부 실시 예들에서, 제2 이미지는 제1 이미지를 확대 및 회전시킴으로써 생성된다. 일부 실시 예에서, 프로세서는 서브-픽셀들을 제2 이미지 내의 수직 및 수평 그리드 패턴으로 정렬하도록 제1 이미지를 회전 시키도록 구성된다. 다른 실시 예는 제1 이미지로부터 복수의 삼각형 부분들을 제2 이미지 내의 새로운 위치들로 재배열하고, 재배치된 복수의 삼각형 부분들 사이에서 제1 이미지의 임의의 나머지 부분을 제2 이미지 내의 새로운 위치로 재배열하는 프로세서를 포함한다. 또한, 상술된 기능들을 수행하기 위한 방법이 고려된다.
또한, 메모리 및 복수의 실행 유닛들을 포함하는 프로세서가 고려된다. 이러한 실시 예들에서, 프로세서는 회전된 그리드에 기초하여, 렌더링되는 이미지의 각 픽셀에 대한 복수의 서브-픽셀 샘플링 좌표들을 생성하고, 회전의 양은 상기 회전된 그리드에 대해 특정화 되고; 상기 복수의 실행 유닛들에 의해 렌더링되는 상기 이미지의 각 픽셀 내의 상기 복수의 서브-픽셀 샘플링 좌표들에 의해 지시되는 서브-픽셀 위치들을 샘플링하고; 및 상기 서브-픽셀 위치들의 값들을 상기 메모리에 저장하도록 구성된다. 일부 실시 예들에서, 복수의 서브-픽셀 샘플링 좌표들을 생성할 때, 프로세서는 상기 이미지의 주어진 위치들을 대각선으로 통과하는 제1 세트의 평행한 선들에 대응되는 위치들을 계산하고, 및 상기 제1 세트의 평행한 선들에 수직한 제2 세트의 평행한 선들에 대응되는 위치들을 계산하도록 구성되고, 상기 제1 및 제2 세트의 평행한 선들은 회전된 그리드를 형성한다. 추가적으로, 다양한 실시 예들에서 프로세서는 제1 및 제2 세트의 평행한 선들의 정점들이 각 대응하는 픽셀의 중심에 있는 무게 중심을 갖도록 상기 회전된 그리드를 이동하고, 및 상기 이미지의 픽셀들 내의 상기 제1 및 제2 세트의 평행한 선들의 정점들의 위치들과 일치하도록 상기 복수의 서브-픽셀 샘플링 좌표들을 특정하도록 구성된다. 다양한 실시 예들에서, 주어진 위치는 픽셀들의 코너들 또는 픽셀들의 중심들이다. 또한, 다양한 실시 예들에서, 상기 중 하나 이상을 수행하여 다음 조건들 중 하나 이상이 충족되는 것을 보장하는 실시 예들이 고려된다: 서브-픽셀 샘플링 좌표들은 수평 및 수직 모두에 대해 특정 간격으로 배치되며, 이미지를 가로 지르는 주어진 수평 또는 수직 선 상의 픽셀 당 오직 하나의 서브-픽셀 샘플링 위치가 있고, 제1 세트의 평행한 선들의 각 선의 기울기는 2 개의 서로 다른 소수의 비율과 동일하다. 또한, 상술된 기능을 수행하기 위한 방법이 고려된다.
본 명세서에서 설명된 방법 및 메커니즘의 장점은 첨부된 도면과 함께 다음의 설명을 참조함으로써 더 잘 이해될 수 있으며, 그 중:
도 1은 컴퓨팅 시스템의 일 실시 예의 블록 다이어그램이다.
도 2는 그래픽 처리 파이프라인의 일 실시 예의 블록 다이어그램이다.
도 3은 일 실시 예에 따른 서브-픽셀 샘플링 패턴의 다이어그램을 도시한다.
도 4는 일 실시 예에 따른 5xMSAA 샘플링 패턴의 다이어그램을 도시한다.
도 5는 일 실시 예에 따른 10xMSAA 서브-픽셀 샘플링 패턴의 다이어그램을 도시한다.
도 6은 일 실시 예에 따른 13xMSAA 서브-픽셀 샘플링 패턴의 다이어그램을 도시한다.
도 7은 일 실시 예에 따른 17xMSAA 서브-픽셀 샘플링 패턴의 다이어그램을 도시한다.
도 8은 일 실시 예에 따른 원래의 픽셀 당 8 개의 서브-픽셀 샘플링 포인트들을 갖는 샘플링 패턴의 다이어그램을 도시한다.
도 9는 다양한 실시 예들에 따른 픽셀-공유 패턴들의 다이어그램을 도시한다.
도 10은 하이브리드 안티-에일리어싱 기법의 일 실시 예의 다이어그램을 도시한다.
도 11은 하이브리드 안티-에일리어싱 기법의 다른 실시 예의 다이어그램을 도시한다.
도 12는 확대된 이미지의 사이즈를 줄이기 위한 기술의 다이어그램을 도시한다.
도 13은 하이브리드 안티-에일리어싱 리졸브(resolve) 동작을 수행하기 위한 방법의 일 실시 예를 나타내는 일반화된 흐름도이다.
도 14는 이미지를 확대 및 회전시킬 때 이미지 부분들을 재배열하는 방법의 일 실시 예를 나타내는 일반화된 흐름도이다.
도 15는 이미지를 확대 및 회전시킬 때 이미지 부분들을 재배열하는 방법의 또 다른 실시 예를 나타내는 일반화된 흐름도이다.
도 16은 이미지의 서브-픽셀 위치들을 샘플링하는 방법의 일 실시 예를 나타내는 일반화된 흐름도이다.
도 17은 렌더링되는 이미지의 각각의 픽셀에 대한 복수의 서브-픽셀 샘플링 좌표들(coordinates)을 생성하는 방법의 일 실시 예를 나타내는 일반화된 흐름도이다.
도 18은 서브-픽셀 샘플링 좌표들을 생성하는 방법의 일 실시 예를 나타내는 일반화된 흐름도이다.
도 19는 안티-에일리어싱 동작을 수행하기 위한 방법의 일 실시 예를 나타내는 일반화된 흐름도이다.
도 20은 샘플링 그리드(grid)를 생성하는 방법의 일 실시 예를 나타내는 일반화된 흐름도이다.
이하의 설명에서, 여기에 제시된 방법 및 메커니즘의 완전한 이해를 제공하기 위해 다수의 특정 세부 사항이 제시된다. 그러나, 당업자는 다양한 실시 예들이 이러한 특정 세부 사항 없이 실시될 수 있음을 인식해야 한다. 어떤 경우에는 잘 알려진 구조, 구성 요소, 신호, 컴퓨터 프로그램 명령 및 기술이 여기에 설명된 접근 방식을 방법을 모호하게 하는 것을 피하기 위해 자세하게 표시되지 않았다. 설명의 단순성 및 명료성을 위해, 도면들에 도시된 요소들은 반드시 일정한 스케일로 그려진 것은 아니라는 것을 이해할 것이다. 예를 들어, 일부 구성 요소의 치수는 다른 구성 요소에 비해 과장될 수 있다.
프로세서상에서 하이브리드 안티-에일리어싱 동작을 수행하기 위한 다양한 시스템들, 장치들, 방법들 및 컴퓨터-판독가능 매체들이 개시된다. 일 실시 예에서, 프로세서는 적어도 메모리 및 다수의 실행 유닛들을 포함한다. 일 실시 예에서, 프로세서는 GPU이다. 다른 실시 예에서, 프로세서는 다양한 다른 타입의 프로세서들 중 임의의 프로세서이다(예를 들어, 디지털 신호 프로세서(DSP), 필드 프로그램 가능한 게이트 어레이(FPGA), 주문형 집적 회로(ASIC), 멀티-코어 프로세서). 프로세서는 메모리에 저장된 제1 이미지에 대해 안티-에일리어싱 리졸브 동작(anti-aliasing resolve operation)을 수행하라는 요청을 검출한다. 요청을 검출하는 것에 응답하여, 프로세서는 제1 이미지의 치수를 확대하여 제2 이미지를 생성하고, 제2 이미지를 후-처리(post-processing) 안티-에일리어싱 필터로 필터링하여 제3 이미지를 생성한 다음, 상기 제3 이미지의 평균화(averaging)를 수행하여 제4 이미지를 생성하고, 여기서 제4 이미지는 안티-에일리어싱 동작의 결과이다. 제1 이미지의 치수를 확대하는 것은 제1 이미지의 서브-픽셀들을 제2 이미지의 정규 픽셀들로 변환하는 것을 포함한다. 프로세서는 또한 제1 이미지를 회전시켜 제2 이미지 내에서 서브-픽셀들을 수직 및 수평 그리드 패턴으로 정렬시킬 수 있다.
일 실시 예에서, 프로세서는 제2 이미지의 미사용 영역을 저장 및/또는 처리하는 메모리 오버 헤드를 줄이기 위해 제1 이미지로부터의 복수의 삼각형 부분들을 제2 이미지 내의 새로운 위치들로 재배치하며, 상기 미사용 영역은 제1 이미지를 회전시킨 결과로서 생성된다. 프로세서는 또한 재배치된 복수의 삼각형 부분들 사이의 제2 이미지 내의 새로운 위치로 제1 이미지의 임의의 나머지 부분들을 재배치한다. 일 실시 예에서, 프로세서는 제1 이미지의 제1 삼각형 부분을 제2 이미지의 우측으로 재배치한다. 또한 프로세서는 제1 이미지의 제2 번째 삼각형 부분을 제2 이미지의 좌측으로 재배치한다. 또한, 프로세서는 제1 이미지의 제3 부분을 제2 이미지 내의 제1 삼각형 부분과 제2 삼각형 부분 사이에서 재배치한다.
이제 도 1을 참조하면, 컴퓨팅 시스템(100)의 일 실시 예의 블록 다이어그램이 도시된다. 일 실시 예에서, 컴퓨팅 시스템(100)은 메모리(150)에 결합된 시스템 온 칩(system on chip, SoC)(105)을 포함한다. SoC(105)는 또한 집적 회로(IC)로 지칭될 수 있다. 일 실시 예에서, SoC(105)는 처리 유닛들(115A-N), 입력/출력(I/O) 인터페이스들(110), 공유 캐시들(120A-B), 패브릭(fabric)(125), 그래픽 처리 유닛(GPU)(130) 및 메모리 제어기(들)(140)를 포함한다. SoC (105)는 또한, 도면을 모호하게 하는 것을 피하기 위한 목적으로, 도 1에 도시되지 않은 다른 구성 요소들을 포함할 수 있다. 처리 유닛들(115A-N)은 임의의 수 및 타입의 처리 유닛들을 나타낸다. 일 실시 예에서, 처리 유닛들(115A-N)은 중앙 처리 장치(CPU) 코어들이다. 다른 실시 예에서, 하나 이상의 처리 유닛들(115A-N)은 다른 유형의 처리 유닛들(예컨대, 특정 집적 회로(ASIC), 필드 프로그램 가능 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP))이다. 처리 유닛들(115A-N)은 공유 캐시들(120A-B) 및 패브릭(125)에 연결된다.
일 실시 예에서, 처리 유닛들(115A-N)은 특정 명령 세트 아키텍처(instruction set architecture, ISA)의 명령을 실행하도록 구성된다. 각 처리 유닛(115A-N)은 하나 이상의 실행 유닛들, 캐시 메모리들, 스케줄러들, 분기(branch) 예측 회로들 등을 포함한다. 일 실시 예에서, 처리 유닛(115A-N)은 운영 체제(operating system)와 같은 시스템(100)의 주요 제어 소프트웨어를 실행하도록 구성된다. 일반적으로, 사용 중에 처리 유닛들(115A-N)에 의해 실행되는 소프트웨어는 시스템(100)의 원하는 기능을 실현하기 위해 시스템(100)의 다른 구성 요소들을 제어할 수 있다. 처리 유닛들(115A-N)은 또한 어플리케이션 프로그램과 같은 다른 소프트웨어를 실행할 수 있다.
GPU(130)는 적어도 서브-픽셀 좌표 테이블(135) 및 그래픽 또는 범용 프로세싱을 위해 사용되는 임의의 수 및 임의의 타입의 컴퓨팅 유닛을 나타내는 컴퓨팅 유닛들(145A-N)을 포함한다. 서브-픽셀 좌표 테이블(135)은 GPU(130)에 의해 렌더링되는 이미지의 픽셀들 내의 서브 픽셀 샘플링 위치들의 좌표들을 저장하는 프로그램 가능한 테이블이다. 용어 "서브-픽셀 샘플링 위치들(sub-pixel sampling locations)"은 렌더링되는 이미지의 주어진 픽셀 내의 파라미터 값(예를 들어, 색상, 깊이, 스텐실, 투명도)을 샘플링하기 위한 다수의 위치들로서 정의된다. "서브-픽셀 샘플링 위치들"이라는 용어는 렌더링되는 이미지의 각 픽셀 내에 여러 샘플링 위치들이 있음을 나타낸다. 다양한 다른 유형의 서브-픽셀 샘플링 패턴들 중 임의의 것이 다른 실시 예들에서 이용될 수 있다. 서브-픽셀 샘플링 패턴은 서브-픽셀 좌표 테이블(135)에 생성되고 프로그래밍되어 주어진 이미지를 처리할 때 픽셀 내의 어느 위치가 샘플링되어야 하는지를 특정한다.
컴퓨팅 유닛들(145A-N)은 또한 "쉐이더(shader) 어레이들", "쉐이더 엔진들", "쉐이더 유닛들", "단일 명령 다중 데이터(single instruction multiple data, SIMD) 유닛들"또는 "SIMD 코어들"로 지칭될 수 있다. 각 컴퓨팅 유닛(145A-N)은 복수의 실행 유닛들을 포함한다. GPU(130)는 공유 캐시들(120A-B) 및 패브릭(125)에 연결된다. 일 실시 예에서, GPU(130)는 그리기 명령, 픽셀 동작, 기하학 계산 및 디스플레이에 이미지를 렌더링하기 위한 다른 동작과 같은 그래픽 파이프라인 동작들을 실행하도록 구성된다. 다른 실시 예에서, GPU(130)는 그래픽과 무관한 동작들을 실행하도록 구성된다. 추가 실시 예에서, GPU(130)는 그래픽 동작 및 비-그래픽 관련 동작들 모두를 실행하도록 구성된다.
일 실시 예에서, GPU(130)는 제1 이미지에 대해 안티-에일리어싱 리졸브 동작을 수행하라는 요청을 검출하도록 구성된다. 일 실시 예에서, 용어 "리졸브 동작(resolve operation)"은 서브 픽셀 샘플 표면을 픽셀 당 하나의 샘플을 갖는 표면으로 변환하는 것으로 정의된다. 요청을 검출하는 것에 응답하여, GPU(130)는 제1 이미지의 치수를 확대하여 제2 이미지를 생성하고, 후-처리 안티-에일리어싱 필터로 제2 이미지를 필터링하여 제3 이미지를 생성 한 다음, 제3 이미지를 평균하여 제4 이미지를 생성하고, 여기서 제4 이미지는 상기 안티-에일리어싱 동작의 결과이다. 제1 이미지의 치수 확대는 제1 이미지의 서브 픽셀들을 제2 이미지의 정규 픽셀들로 변환하는 것을 포함한다. GPU(130)는 제2 이미지 내의 수직 및 수평 그리드 패턴으로 서브-픽셀들을 정렬하기 위해 제1 이미지를 회전시킬 수 있다.
I/O 인터페이스(110)는 패브릭 (125)에 결합되고, I/O 인터페이스(110)는 임의의 수 및 임의의 유형의 인터페이스들을 나타낸다(예를 들어, PCI(Peripheral Component Interconnect) 버스, PCI-확대(PCI-X), PCIE(PCI Express) 버스, 기가비트 이더넷(GBB) 버스, 범용 직렬 버스(USB)). 다양한 유형의 주변 장치들이 I/O 인터페이스(110)에 연결될 수 있다. 그러한 주변 장치는 디스플레이, 키보드, 마우스, 프린터, 스캐너, 조이스틱 또는 다른 유형의 게임 제어기, 매체 기록 장치, 외부 저장 장치, 네트워크 인터페이스 카드 등을 포함한다(다만, 이에 제한되지 않는다).
SoC(105)는 하나 이상의 메모리 모듈들을 포함하는 메모리(150)에 연결된다. 각각의 메모리 모듈들은 그 위에 장착된 하나 이상의 메모리 장치들을 포함한다. 일부 실시 예에서, 메모리(150)는 SoC(105)가 또한 탑재되는 마더보드 또는 다른 캐리어 상에 장착된 하나 이상의 메모리 장치들을 포함한다. 일 실시 예에서, 메모리(150)는 동작 동안 SoC(105)와 함께 사용하기 위한 랜덤 액세스 메모리(RAM)를 구현하는데 사용된다. 구현된 RAM은 정적 RAM(SRAM), 동적 RAM(DRAM), 저항성 RAM(ReRAM), 상 변화 RAM(PCRAM) 또는 임의의 다른 휘발성 또는 비-휘발성 RAM일 수 있다. 메모리(150)를 구현하는데 사용되는 DRAM의 유형은 DDR(double data rate) DRAM, DDR2 DRAM, DDR3 DRAM 등을 포함한다(다만, 이에 제한되는 것은 아니다). 도 1에 명시적으로 도시되지는 않았지만, SoC(105)는 또한 처리 유닛들(115A-N) 및/또는 컴퓨팅 유닛(145A-N)의 내부에 있는 하나 이상의 캐시 메모리들을 포함할 수 있다. 일부 실시 예들에서, SoC(105)는 처리 유닛들(115A-N) 및 컴퓨팅 유닛(145A-N)에 의해 이용되는 공유 캐시들(120A-B)을 포함한다. 일 실시 예에서, 캐시들(120A-B)은 캐시 제어기를 포함하는 캐시 서브시스템의 일부이다.
본 명세서에서 다양한 구조들 옆에 표시되는 문자 "N"은 일반적으로 하나의 구조를 포함하는 그 구조에 대한 임의의 수의 요소들을 나타내기 위한 것이다(예를 들어, 임의의 수의 처리 유닛들(115A-N)). 또한, 도 1에서 문자 "N"(예를 들어, 처리 유닛들(115A-N) 및 컴퓨팅 유닛들(145A-N))을 사용하는 다른 참조 번호들은 동일한 수의 다른 요소가 제공됨을 나타내지는 않는다(예를 들어, 처리 유닛들(115A-N)의 수는 연산 유닛들(145A-N)의 수와 다를 수 있다).
다양한 실시 예들에서, 컴퓨팅 시스템(100)은 컴퓨터, 랩탑, 모바일 장치, 서버 또는 다양한 다른 유형의 컴퓨팅 시스템들 또는 장치들일 수 있다. 컴퓨팅 시스템(100) 및/또는 SoC(105)의 구성 요소들의 수는 실시 예마다 다를 수 있음을 알아야 한다. 도 1에 도시된 수보다 많거나 적은 수의 각 구성 요소/서브 구성 요소가 있을 수 있다. 예를 들어, 다른 실시 예에서, SoC(105)는 다수의 메모리들에 연결된 다수의 메모리 제어기들을 포함할 수 있다. 또한, 컴퓨팅 시스템(100) 및/또는 SoC(105)는 도 1에 도시되지 않은 다른 구성 요소들을 포함할 수 있음을 알아야 한다. 추가적으로, 다른 실시 예들에서, 컴퓨팅 시스템(100) 및 SoC(105)는 도 1에 도시된 것 이외의 다른 방식으로 구성될 수 있다.
이제 도 2를 참조하면, 그래픽 처리 파이프 라인(200)의 일 실시 예의 블록 다이어그램이 도시된다. 일 실시 예에서, 그래픽 처리 파이프 라인(200)은 (도 1의) GPU(130)에 의해 구현된다. 다른 실시 예들에서, 그래픽 처리 파이프 라인(200)은 다른 유형의 처리 하드웨어를 사용하여 구현될 수 있다(예를 들어, FPGA, ASIC, DSP, 멀티-코어 프로세서). 일반적으로, 그래픽 처리 파이프 라인(200)은 소프트웨어 및/또는 하드웨어의 임의의 적합한 조합을 사용하여 구현될 수 있다. 파이프 라인 아키텍처는 각 단계의 출력이 후속 파이프 라인 단계의 입력을 제공하면서 여러 단계로 동작을 분할함으로써 보다 긴 지연 시간의 동작들을 보다 효율적으로 수행할 수 있다. 파이프 라인(200)의 쉐이더 유닛들(205A-N)은 버텍스 쉐이더(vertex shader), 기하구조 쉐이더(geometry shader), 프래그먼트 쉐이더(fragment shader), 픽셀 쉐이더(pixel shader) 및/또는 캐시/메모리(210)에 연결된 하나 이상의 다른 쉐이더들을 포함할 수 있다. 캐시/메모리 (210)는 임의의 유형 및 개수의 캐시 또는 메모리 장치들을 나타낸다. 파이프 라인(200)에 도시된 하나 이상의 쉐이더 유닛들(205A-N)은 이하에서 더 상세히 설명되는 바와 같이 하이브리드 안티-에일리어싱 리졸브 동작을 수행하도록 구성된다. 이 쉐이더 유닛은 이미지, 텍스처 또는 다른 입력 픽셀 데이터를 수신하고, 쉐이더 유닛은 이미지에 하이브리드 안티-에일리어싱 리졸브 동작을 수행하여 안티-에일리어싱된 이미지를 출력으로 생성한다. 실시 예에 따라, 안티-앨리어싱된 이미지는 디스플레이로 구동되거나, 메모리에 다시 기록되거나, 하나 이상의 추가 쉐이더 유닛들에 의해 처리될 수 있다.
이제 도 3을 참조하면, 서브-픽셀 샘플링 패턴의 일 실시 예의 다이어그램들이 도시된다. 다이어그램(305)은 도 3의 상단에 도시되고, 다이어그램(305)은 픽셀들의 경계들을 나타내는 수평 및 수직선들을 갖는 4x4 픽셀 사각형 그리드를 포함한다. 그리드의 각 사각형은 소스 이미지의 픽셀을 나타낸다. 일 실시 예에서, 서브-픽셀 샘플링 패턴은 픽셀들의 코너들을 통해 2x1의 기울기를 갖는 제1 세트의 선들을 그림(drawing)으로써 생성된다. 2x1의 기울기를 갖는 제1 세트의 선들은 두 픽셀들의 폭 및 하나의 픽셀 높이인 직사각형의 대각선에 평행하다는 것을 유의해야 한다. 본 명세서에 사용된 용어 "2x1의 기울기"는 종래의 수학적 기울기의 정의에 따른 -1/2의 기울기에 해당한다. 일반적으로, 한 세트의 선들이 NxM의 기울기를 갖는 것으로 기술될 때, 이들 선들에 대한 기울기의 전통적인 정의는 -M/N이 될 것이다. 그 다음, 제2 세트의 선들이 제1 세트의 선들에 수직하게 그려지며, 제1 및 제2 세트의 선들은 4x4 픽셀 사각형 그리드의 상부에 회전된 그리드를 생성한다. 서브-픽셀 샘플링 위치들은 회전된 그리드의 제1 및 제2 세트의 선들의 정점들(vertices)(즉, 교차점)과 일치하도록 선택된다. 본 명세서에서의 설명은 샘플링 패턴을 생성하기 위해 선들을 "그리는(drawing)" 것을 기술하고 있지만, 회전된 그리드의 제1 및 제2 세트의 평행한 선들은 실제로 서브-픽셀 샘플링 패턴을 생성하기 위해 그려질 필요가 없다는 것을 유의해야 한다. 오히려, 선들은 서브-픽셀 샘플링 패턴을 생성하도록 수학적으로 결정될 수 있다(예를 들어, 선들에 대한 방정식들을 계산하는 것).
그 다음, 일 실시 예에서, 다이어그램(310)에 도시된 바와 같이, 회전된 그리드는 각 원본 픽셀에 대한 서브-픽셀 샘플링 위치들의 무게 중심(center of gravity)이 원본 픽셀의 중심에 있도록 이동된다. 예를 들어, 일 실시 예에서, (X1+X2+... XN)/N의 값이 x 좌표에 대한 원본 픽셀의 중심과 동일하고 서브-픽셀들의 Y 좌표들에 대해 유사한 방정식을 사용하고, 여기서 N은 서브-픽셀 샘플들의 수와 같다. 각각의 원본 픽셀에 대한 서브-픽셀 샘플링 위치들의 무게 중심이 원본 픽셀의 중심에 있도록 하기 위해 회전된 그리드를 이동시키는 이러한 단계는 다른 실시 예들에서는 생략될 수 있음을 알아야 한다. 서브-픽셀 샘플링 위치들은 제1 및 제2 세트의 선들의 교차점에서 원에 의해 다이어그램(310)에 표시된다. 다른 실시 예에서, 서브-픽셀 샘플링 패턴은 회전된 정규의 샘플링 그리드를 원본 픽셀들의 중심을 통해 생성되고, 그 후 선택적으로 이동된다. 그리드가 픽셀들의 중심들을 통해 그려지는 경우, 서브-픽셀 샘플들 중 하나는 픽셀의 중심에 있을 것이고, 서브-픽셀 샘플들의 무게 중심은 픽셀의 중심에 있을 것이고, 서브-픽셀 샘플링 패턴은 픽셀의 중심 주위에서 대칭일 것이다. 예를 들어, 픽셀의 중심이 좌표(0,0)를 갖는다면, 좌표(a, b)에 있는 서브-픽셀 샘플에 대해, 좌표(-a, -b)에 다른 서브 픽셀 샘플이 있을 것이다. 단일 픽셀에 대한 서브 픽셀 샘플링 위치들이 다이어그램(315)에 도시되어있다.
일 실시 예에서, 다이어그램(310)에 도시된 서브-픽셀 샘플링 패턴은 하부의 이미지(underlying image)에 대한 서브-픽셀 샘플링 좌표들을 생성하는데 사용된다. 그 다음, 이러한 특징들은 프로세서(예컨대, GPU)에 의해 렌더링되는 이미지 내에서 샘플링 할 서브 픽셀 위치들을 결정하는데 사용된다. 일 실시 예에서, 좌표들은 한 쌍의 수치적 좌표들에 의해 특정된 각각의 샘플링 포인트를 갖는 데카르트 좌표 시스템(Cartesian coordinate system)에 따라 생성된다. 일 실시 예에서, 수치적 좌표들은 부동 소수점(floating point)(예를 들어, 단일 정밀도 부동 소수점(single precision floating point), 배 정밀도(double precision) 부동 소수점) 값으로서 저장된다. 다른 실시 예들에서, 수치적 좌표들은 다른 유형의 표현을 사용하여 저장된다(예를 들어, 고정 소수점(fixed point), 정수).
단일 픽셀 내에서 다수의 개별 위치들을 샘플링하는 기술은 "서브-픽셀 샘플링" 또는 "멀티샘플링 안티-에일리어싱"(multisampling anti-aliasing, MSAA)이라고 지칭될 수 있다. 경우에 따라, 단일 픽셀 내의 다수의 개별 위치들을 샘플링하는 것을 "서브샘플링"이라고 지칭될 수 있다. 이 문맥에서의 "서브 샘플링"은 "서브 샘플링"이라는 용어가 신호 처리 기술을 설명할 때 사용되는 것과는 다른 의미를 갖는다는 것을 이해해야 한다. 신호 처리 분야에서 "서브 샘플링"이란 용어는 신호의 샘플링 속도를 줄이는 것으로 정의된다. 본 개시에서, "서브-픽셀 샘플링"이라는 용어는 임의의 혼동을 피하기 위해 단일 픽셀 내의 다수의 개별 위치들을 샘플링하는 것을 기술하는데 사용된다.
예를 들어, 다이어그램(315)에 표시된 패턴은 5xMSAA 샘플링 패턴이라고 지칭될 수 있다. 이 패턴은, 2x1 기울기로 제1 세트의 선들을 그려서 구성되고, 제1 세트의 선들의 각 선이 각 수직 픽셀에 대해 두 개의 수평 픽셀들을 가로 지르는 원본 픽셀 사각형 그리드를 통해 그려진다. 그 다음, 제2 세트의 선들이 제1 세트의 선들에 대해 수직으로 그려지고, 선들의 교차점들이 서브-픽셀 샘플링 위치들을 결정하고, 픽셀 당 2^2+1^2=5 서브-픽셀 샘들의 결과를 초래한다. 이 샘플링 패턴은 이동되어 90도 회전되고 대칭될 수 있다. 이 샘플링 패턴과 임의의 조정은 시간적(temporal) 안티-에일리어싱의 다양한 어플리케이션들에 활용될 수 있다.
이제 도 4를 참조하면, 5xMSAA 샘플링 패턴의 다이어그램(400)이 도시된다. 도 4의 설명은 도 3에 관한 설명의 연속이다. 도 4의 다이어그램(400)에 도시된 도트들은 이미지의 다양한 파라미터들 중 임의의 파라미터(예를 들어, 색상, 깊이, 스텐실, 투명도)의 값을 계산하기 위한 위치들을 결정하기 위한 서브-픽셀 샘플링 위치들을 나타낸다. 다이어그램(400)에 도시된 바와 같이, 이러한 서브 픽셀 샘플링 위치들과 교차하도록 그려진 수직 선들과 수평 선들은 샘플들이 수평 및 수직으로 규칙적으로 간격을 두기 때문에 5xMSAA 샘플링 패턴이 규칙적인 사각형 그리드 조건을 충족시키는 것을 보여준다. 5xMSAA 샘플링 패턴은 또한 이미지를 가로 지르는 주어진 수평 또는 수직 선에서 픽셀 당 샘플링된 하나의 서브 픽셀 위치가 있기 때문에 수평/수직 선 당 하나의 샘플 조건을 만족한다. 수평/수직 선 당 하나의 샘플 조건을 만족 시키면 이미지 내의 서브-픽셀 레벨에서 수직 및 수평 선들의 개선된 표면을 가능하게 함으로써 패턴의 안티-에일리어싱 특성을 향상시킬 수 있다.
5xMSAA 샘플링 패턴은 여러 가지 면에서 표준 2x2 회전 그리드 슈퍼 샘플링(rotated grid super sampling, RGSS) 패턴보다 우수하다. 예를 들어, 5xMSAA 패턴은 3 개 대신 가로 및 세로 선들에 4 개의 중간 색상들을 생성한다. 5xMSAA 샘플링 패턴은 이미지 전체에 걸쳐 균일한 서브-픽셀 샘플링을 보장한다. 5xMSAA 샘플링 패턴은, 픽셀 경계를 가로 질러 이동하는 것을 포함하여, 이동될 수 있고, 규칙적인 그리드 품질과 수평/수직 선 당 하나의 샘플의 패턴의 품질을 유지하면서 미러링될 수 있다. 5xMSAA 샘플링 패턴은 다양한 일시적 안티-알리아싱 기법을 구현할 때 유리할 수 있다.
이제 도 5를 참조하면, 10xMSAA 서브-픽셀 샘플링 패턴의 다이어그램들이 도시된다. 다이어그램들(505, 510 및 515)은 도 3에 도시된 다이어그램들(305, 310 및 315)과 유사한 방식으로 생성된다. 다이어그램들(505, 510 및 515)에 도시된 10xMSAA 샘플링 패턴은 3x1 기울기를 갖는 제1 세트의 선들 및 제1 세트의 선들에 수직인 제2 세트의 선들로 구성되며, 결과적으로 이미지의 각 픽셀에서 3^2+1^2 =10 샘플들이 초래된다.
다이어그램(505)을 생성하기 위해, 먼저 이미지의 원본 픽셀들의 사각형 픽셀 그리드가 생성된다. 그리드는 소스 이미지의 픽셀들 경계에서 수직 선들과 수평 선들을 포함한다. 그 다음, 제1 세트의 선들이 픽셀 그리드의 코너들(corners)을 통해 -1/3의 기울기로 그려지며, 각 라인은 각의 수직 픽셀에 대해 3 개의 수평 픽셀들을 통과한다. 그 다음, 제1 세트의 선들에 수직인 제2 세트의 선들이 픽셀 그리드의 코너들을 통해 그려진다. 제2 세트의 선들은 3의 기울기를 가지며, 각 라인은 각 수평 픽셀에 대해 3 개의 수직 픽셀들을 통과한다. 제1 세트의 선들 및 제2 세트의 선들은 회전된 그리드로 지칭될 수있다.
다음으로, 다이어그램(510)에 도시된 바와 같이, 회전된 그리드는 각 원본 픽셀 내의 제1 세트의 선들 및 제2 세트의 선들의 정점들(vertices)(즉, 교차점)이 원본 픽셀의 중심에서의 무게 중심을 갖도록 이동된다. 그 다음, 정점들의 좌표들은 그래픽 하드웨어(예를 들어, GPU)에 프로그래밍되어 이미지의 서브-픽셀 샘플링 좌표들로 이용된다. 다이어그램(515)은 단일 픽셀에 대한 서브-픽셀 샘플링 위치들을 도시한다. 다른 실시 예에서, 제1 및 제2 세트의 선들은 픽셀 그리드의 코너들을 통하는 것이 아니라 그리드의 픽셀들의 중심들을 통해 그려진다.
이제 도 6을 참조하면, 13xMSAA 서브-픽셀 샘플링 패턴의 다이어그램이 도시된다. 다이어그램들(605, 610 및 615)은 도 3에 도시된 다이어그램들(305, 310 및 315) 및 도 5에 도시된 다이어그램들(505, 510 및 515)과 유사한 방식으로 생성된다. 다이어그램들(605 및 610)에 도시된 13xMSAA 샘플링 패턴은 3x2 기울기를 갖는 선들에 기초하여 구성되어, 이미지의 각 픽셀에서 3^2+2^2 =13 샘플들을 초래한다. 다이어그램(615)은 단일 픽셀에 대한 13 개의 서브-픽셀 샘플 위치들을 도시한다.
이제 도 7을 참조하면, 17xMSAA 서브-픽셀 샘플링 패턴의 다이어그램이 도시된다. 다이어그램들(705, 710, 715)은 이전 다이어그램들과 유사한 방식으로 생성된다. 다이어그램들(705 및 710)에 도시된 17xMSAA 샘플링 패턴은 4x1 기울기를 갖는 선들에 기초하여 구성되어, 이미지의 각 픽셀에서 4^2+1^2=17 샘플들을 초래한다. 다이어그램(715)은 단일 픽셀에 대한 17 개의 서브-픽셀 샘플 위치들을 도시한다.
추가적인 패턴들이 또한 도 3 및 도 5 내지 도 7에 도시된 패턴들과 유사한 방식으로 생성될 수 있다. 일 실시 예에서, 추가적인 패턴을 생성 할 때, 기울기 생성 수(예를 들어, 3x1)는 패턴이 수평/수직 선 당 하나의 샘플 조건을 만족하도록 서로 소수(mutually prime)(상호-소수(co-prime))이다. 즉, 기울기 생성 숫자 사이의 최대 공약수는 일(one)이다. 예를 들어 이러한 조건을 만족하는 추가적인 패턴 옵션에는 픽셀 당 25 개의 서브 픽셀 샘플들(sub-pixel samples per pixel, sspp)을 갖는 4x3, 26 sspp를 갖는 5x1, 29 sspp를 갖는 5x2, 34 sspp를 갖는 5x3, 41 sspp를 갖는 5x4, 65 sspp를 갖는 6x1 등이 포함된다.
이제 도 8을 참조하면, 원본 픽셀 당 8 개의 서브-픽셀 샘플링 포인트들을 갖는 샘플링 패턴의 다이어그램이 도시된다. 다이어그램들(805 및 810)은 2x2의 수를 생성하는 비-상호 소수(non-mutually-prime) 기울기를 갖는 서브-픽셀 샘플링 패턴을 도시한다. 따라서, 다이어그램들(805 및 810)에 도시된 8xMSAA 샘플링 패턴은 2x2 기울기를 갖는 선들에 기초하여 구성된다. 결과적인 패턴은 다이어그램(815)에 도시된 바와 같이 픽셀 당 8 개의 서브-픽셀 샘플들을 포함한다. 이 8 개의 서브-픽셀 샘플링 패턴의 경우, 각 수직 및 수평 선마다 픽셀 당 2 개의 샘플들이 있다. 따라서, 소스 이미지에 표시되는 수평 및 수직 선들을 안티-에일리어싱 하는 경우, 오직 3 개의 중간 톤들만 생성되며, 이는 도 3에 표시된 5xMSAA 패턴에 의해 생성된 4 개의 중간 톤들보다 적다. 그러나, 8xMSAA 패턴은 아래에서 더 자세히 설명되는 바와 같이 하이브리드 안티-에일리어싱 리졸브 동작에 대해 효율적으로 구현될 수 있다. 8xMSAA 패턴의 또 다른 버전은 회전되지 않은 직사각형 그리드 4x2에서 생성될 수 있으며, 이러한 다른 버전은 또한 하이브리드 안티-에일리어싱 리졸브 동작에 대해 효율적으로 구현될 수 있다.
이제 도 9를 참조하면, 픽셀-공유 패턴들의 다이어그램들이 도시된다. 도 3 및 도 5 내지 도 8에 도시된 이전에 기술된 패턴들은 하나의 서브-픽셀 샘플링 위치가 소스 픽셀의 코너 또는 중심으로 위치하는 방식으로 이동될 수 있다. 예를 들어, 다이어그램(905)은 2x1의 기울기에 기초한 5x 서브 픽셀 샘플링 패턴을 도시하며, 서브 픽셀 샘플링 위치들은 위치들 중 하나가 소스 픽셀의 하단 우측 코너와 일치하도록 이동된다. 패턴의 이동은 픽셀의 하부 우측 코너 상의 서브-픽셀 위치가 4 개의 인접한 픽셀들 사이에서 공유되도록 한다. 다이어그램(910)은 5x 서브-픽셀 샘플링 패턴에 대한 대안적인 구성을 도시한다. 다이어그램(910)은 서브-픽셀들 중 하나가 픽셀의 중심과 정렬되도록 이동된 5x 서브 픽셀 샘플링 패턴을 도시한다.
다이어그램(915)은 3x1의 기울기를 갖는 10x 서브-픽셀 샘플링 패턴을 도시하며, 서브-픽셀 샘플링 패턴은 서브-필셀 샘플링 위치들 중 하나가 픽셀의 우측 하단 코너에 위치하도록 이동된다. 다이어그램(920)은 3x2의 기울기를 갖는 13x 서브-픽셀 샘플링 패턴을 도시하며, 서브-픽셀 샘플링 패턴은 서브 픽셀 샘플링 위치들 중 하나가 픽셀의 우측 하단 코너에 위치하도록 이동된다. 다이어그램(925)는 4x1의 기울기를 갖는 17x 서브-픽셀 샘플링 패턴을 도시하며, 서브-픽셀 샘플링 패턴은 서브-픽셀 샘플링 위치들 중 하나가 픽셀의 우측 하단 코너에 위치하도록 이동된다. 이들 샘플링 패턴들 각각은 서브-픽셀 샘플링 위치들 중 하나가 4 개의 인접 픽셀들 사이에서 공유되도록 한다. 따라서, 리졸브 동작 동안 하나의 조각(fragment)보다는 4 개의 조각들에 접근될 수 있다.
일부 실시 예들에서, 조각 당 5, 10, 13 또는 17 개의 샘플들을 포함하는 표면을 생성하는 것은 실제 하드웨어 구현의 관점에서 최적이 아닐 수 있다. 그러나, 서로 다른 유형의 해결 방법을 구현하여 기존 또는 미래의 하드웨어에서 조각 당 5, 10, 13 또는 17 개의 샘플들을 효율적으로 구현할 수 있다. 예를 들어 8x CSAA(coverage coverage anti-aliasing) 패턴 또는 4x EQAA(enhanced quality anti-aliasing) 패턴은 각각 8 개의 커버리지(coverage) 샘플들을 가지고 있다. 일 실시 예에서, 8xCSAA 패턴 또는 4xEQAA 패턴은 도 3의 다이어그램들(310 및 315)에 도시된 5x 서브-픽셀 샘플링 패턴을 생성하도록 구현될 수 있다. 8xCSAA 패턴 또는 4xEQAA 패턴의 경우, 여분의 3 개의 커버리지 샘플들은 5x 패턴의 처음 5 개 위치들 중 3 개와 일치하도록 위치된다. 이러한 여분의 서브-픽셀 샘플들은 렌더링 파이프 라인의 초기 단계에서 깊이-컬링되므로(depth-culled) 렌더링 시간을 낭비하지 않는다. 대안적으로, 하드웨어는 불필요한 서브-픽셀 샘플들을 계산하지 않도록 구성된다. 이러한 동일한 접근법은 기존의 16x 서브-픽셀 샘플링 모드(예를 들어, 16x CSAA, 16x Quincunx CSAA (QCSAA), 16x EQAA)를 사용하여 10x 또는 13x 서브-픽셀 샘플링 패턴을 지원함으로써 구현될 수 있다.
다른 실시 예에서, 5x 서브-픽셀 샘플링 패턴을 구현할 때, 하나의 표면이 4x 서브-픽셀 샘플링 패턴을 구현하고 다른 표면이 1x 서브-픽셀 샘플링 패턴을 구현하면서, 2 개의 표면들이 저장을 위해 이용된다. 유사한 방식으로, 10x 서브-픽셀 샘플링 패턴은 8x 서브-픽셀 샘플링 패턴 표면 및 2x 서브-픽셀 샘플링 패턴 표면을 구현함으로써 이용될 수 있다. 또한, 13x 서브-픽셀 샘플링 패턴은 12x 서브-픽셀 샘플링 패턴 표면 및 1x 서브-픽셀 샘플링 패턴 표면으로 이루어질 수 있거나, 또는 13x 서브-픽셀 샘플링 패턴은 8x 서브-픽셀 샘플링 패턴 표면, 4x 서브-픽셀 샘플링 패턴 표면, 및 1x 서브-픽셀 샘플링 패턴 표면으로 이루어질 수 있다. 또한, 17x 서브-픽셀 샘플링 패턴은 16x 서브-픽셀 샘플링 패턴 표면 및 1x 서브-픽셀 샘플링 패턴 표면을 사용하여 구현될 수 있다.
추가의 실시 예에서, 서브-픽셀 샘플링 패턴의 샘플들 중 하나는 패턴으로부터 생략될 수 있다. 예를 들어, 17x 서브-픽셀 샘플링 패턴의 경우, 오직 16 개의 서브-픽셀 샘플 위치들만이 계산될 수 있다. 샘플링 위치들을 생략하면 규칙적인 그리드 패턴에 구멍들(holes)이 생길 수 있지만, 이러한 구멍들은 리졸브 동작 중에 프로그래밍적으로(programmatically) 보간(interpolation)될 수 있다. 일 실시 예에서, GPU는 서브-픽셀 샘플링 패턴을 프로그램적으로 변경할 수 있지만, 샘플들의 위치들에 대한 구체적인 입상도(granularity)가 있을 수 있다. 예를 들어, 일 실시 예에서 픽셀 내부의 16x16 가능한 위치들의 그리드가 이용 가능할 수 있다. 따라서, 여기에 설명된 패턴들 중 일부는 절대 행렬(absolute procession)로 구현될 수 없을 수도 있지만, 샘플 위치들이 가장 가까운 그리드 포인트들로 조정되는 근사 패턴(approximated pattern)이 구현되어 적합한 결과를 산출할 수 있다.
이제 도 10을 참조하면, 하이브리드 안티-에일리어싱 기법의 일 실시 예의 다이어그램이 도시된다. 일반적으로 말하자면, 일반적으로 안티-에일리어싱 알고리즘의 두 가지 패밀리가 있다: 멀티 샘플링 안티-에일리어싱 및 후-처리 안티-에일리어싱. 이 두 가지 방법은 일반적으로 상호 배타적이다. 후-처리 안티-에일리어싱의 패스는 멀티-샘플링된 이미지로부터 리졸브된 이미지에 적용될 수 있다. 일반적으로, 결과 이미지는 흐릿 해져서(blurry) 이전보다 악화될 수 있다. 그러나, 하이브리드 안티-에일리어싱 기법을 구현하기 위해 여기에 기술 된 기술들은 종래 기술에 대한 개선이다.
일 실시 예에서, 하이브리드 안티-에일리어싱 기법은 다중-샘플링된 이미지로 시작하고, 서브-픽셀 샘플링 패턴은 이미지 내에 규칙적인 그리드를 생성한다. 전술한 서브 픽셀 샘플링 패턴들(예를 들어, 5x, 10x, 13x, 17x) 중 임의의 것이 이용될 수 있다. 다음으로, 멀티-샘플링된 이미지는 서브-픽셀 샘플링 해상도(resolution)의 이미지로 확대된다. 그런 다음, 후-처리 안티-에일리어싱 알고리즘이 확대된 이미지를 필터링하는 데 사용된다. 마지막으로, 필터링된 확대된 이미지는 다시 원본 해상도의 이미지로 평균화된다. 이러한 접근법은 현재의 그래픽 처리 하드웨어(예를 들어, GPU) 상에서 구현될 수 있다. 예를 들어, 서브-픽셀 샘플링 위치들은 GPU에서 프로그래밍되어 새로운 서브-픽셀 샘플링 패턴을 지원할 수 있다. 이 접근법은 회전 및 회전되지 않는 그리드 패턴에서 작동한다. 일부 실시 예에서, 이 접근법은 재투영(reprojection) 기술뿐만 아니라 시간적 필터(temporal filter) 기술과 결합될 수 있다. 일 실시 예에서, 기존 게임emf은 그래픽 드라이버 소프트웨어를 업데이트함으로써 하이브리드 안티-에일리어싱 기법을 이용할 수 있다.
일 실시 예에서, 하이브리드 안티-에일리어싱 기법은 도 10의 다이어그램에 도시된 시나리오에 대해 구현될 수 있다. 이 실시 예에서, 높이(H)x폭(W) 치수를 갖는 이미지(1005)는 다이어그램(1010)에 도시된 바와 같이 2x2 정렬된 그리드(ordered grid, OG)에 기초한 멀티 샘플링(즉, 서브-픽셀 샘플링)을 이용한다. 이미지 (1005)는 서브픽셀들을 정규 픽셀들인 것처럼 취급함으로써 확대된다. 결과 이미지(1015)는 2Hx2W의 치수를 갖는다. 일 실시 예에서, 높은 동적 범위(high dynamic range, HDR) 텍스처를 위한 톤 맵핑(tone mapping)이 확대 단계에 통합된다.
다음으로, 이미지(1015)는 후-처리 안티-에일리어싱 필터에 의해 처리되어 이미지(1020)를 생성한다. 또한, 일부 실시 예들에서, 선명화(sharpening)와 같은 추가적인 후-처리가 확대된 이미지(1015)에 적용된다. 그 다음, 평균화 필터가 이미지(1020)로부터 이미지(1025)를 생성하는데 이용된다. 이미지들(1005, 1015, 1020, 및 1025)은 또한 텍스처들로서 언급될 수 있음을 주목한다. 일 실시 예에서, 평균화 필터는 박스 평균화 필터(예를 들어, 2x2 박스 평균화 필터)이다. 다른 실시 예에서, 다른 유형의 평균화 필터(예를 들어, 텐트 필터)가 이용될 수 있다. 또한, 평균화 필터는 높은 동적 범위(HDR) 텍스처, 선명화 및/또는 다른 것에 대한 인버스 톤 맵핑(inverse tone mapping)을 포함할 수 있다. 이미지(1025)는 원본 이미지(1005)와 동일한 치수, WxH를 갖는다는 것을 유의해야 한다. 다른 실시 예에서, 평균화 필터는 이미지(1025)의 해상도를 원본 이미지(1005)와는 다른 해상도로 변경할 수 있다. 대안으로, 평균화 필터를 사용하는 축소 단계는 생략될 수 있으며, 결과 이미지는 시작 이미지보다 큰 해상도를 갖는다.
이제 도 11을 참조하면, 하이브리드 안티-에일리어싱 기법의 다른 실시 예의 다이어그램이 도시된다. 일 실시 예에서, 임의의 유형의 이미지, 텍스쳐, 표면, 또는 다른 픽셀 데이터를 나타내는 이미지(1105)에 하이브리드 후-처리, 안티-에일리어싱 기법이 적용된다. 이미지(1105)는 HxW의 치수를 갖고, 이미지(1105)는 다이어그램(1110)에 도시된 바와 같이 2x1의 기울기에 기초한 x5 MSAA 서브-픽셀 샘플링 패턴을 이용한다. 이미지(1105)의 서브-픽셀 샘플들이 확대되어 정렬을 위해 회전되어, 멀티 샘플링 없이 자연 해상도의 이미지인 이미지 (1115)를 생성한다. 즉, 이미지(1105)의 서브-픽셀들은 이미지(1115)에서 픽셀로서 취급된다. 또한, 이미지(1115) 내의 픽셀이 규칙적인, 직사각형 그리드를 형성하도록 픽셀들이 회전된다.
다음으로, 후-처리, 안티-에일리어싱 필터링 단계가 이미지(1115)에 대해 수행되어 이미지(1120)를 생성한다. 그 다음, 평균화 필터 단계가 이미지(1120)에 대해 수행되어, 원본 이미지(1105)와 동일한 치수 WxH를 갖는 이미지(1125)를 생성한다. 다른 실시 예에서, 평균화 필터 단계는 생략될 수 있고, 이미지(1120)는 하이브리드 안티-에일리어싱 리졸브 동작의 결과일 수 있다. 대안적으로, 다른 실시 예에서, 평균화 필터는 이미지(1120)를 평균화하여 이미지(1125)의 해상도가 이미지(1105)의 원본 해상도 WxH보다 크게 할 수 있다.
이제 도 12를 참조하면, 확대된 이미지의 크기를 감소시키는 기술의 다이어그램이 도시된다. 이미지(1205)는 도 11의 이미지(1115)와 유사한 확대된 이미지의 예이다. 이미지(1205)는 서브-픽셀 샘플링된 이미지(미도시)로부터 생성된 확대되고 회전된 이미지를 포함한다. 그러나, 이미지(1205) 내의 "X"를 포함하는 영역들 각각은 추가 메모리를 소비할 사용되지 않는 공간에 해당한다.
따라서, 일 실시 예에서, 현재 상태의 이미지(1205)를 처리하는 대신에, 이미지(1205)의 부분들은 공간의 보다 효율적인 사용을 가져 오는 이미지(1210)를 생성하도록 재배치된다. 부분들을 더 공간-효율적 이미지(1210)로 재 배열하기 위해, 삼각형 부분(1215)은 이미지(1205)의 우측에서 이미지(1210)의 좌측으로 이동된다. 또한, 삼각형 부분(1220)은 이미지(1205)의 상부에서 이미지(1210)의 하부 우측으로 이동된다. 이미지(1210)의 우측 상부에는 여전히 "X"로 표시된 미사용 공간의 작은 부분이 있다. 그러나 이는 이미지(1205)에서 사용되지 않은 공간의 양보다 훨씬 적다. 이미지(1210) 내에서, 부분들(1215, 1220, 및 1225)은 덜 낭비된 공간으로 더 효율적인 정렬로 함께 피팅(fitting)된다. 이것은 다음 후-처리, 안티-에일리어싱 단계가 이미지(1205)보다 이미지(1210)에서보다 효율적으로 수행될 수 있게 한다.
주위 부분들을 움직여서 이미지를 재 배열 할 때, 후-처리 알고리즘을 수행할 수 있도록 각 부분에 일부 오버랩이 포합될 수 있다. 예를 들어, 후-처리 알고리즘이 중심 픽셀 주위로 5 개의 픽셀들을 샘플링하는 경우, 5 개의 픽셀들의 오버랩이 부분들(1215, 1220 및 1225)에, 이들이 결합되어 이미지(1210)를 형성 할 때, 추가된다. 부분들(1215, 1220, 및 1225)의 재 배열은 서브-픽셀 확대 단계 동안 수행 될수 있음을 또한 주목해야 한다. 따라서, 부분들(1215, 1220 및 1225)의 재배열은 추가적인 렌더링 패스를 필요로 하지 않는다. 또한, 대체 삼각형 세분화(subdivision) 및/또는 대체 재배열 패턴의 사용이 가능하고 고려될 수 있음을 알 수 있다.
이제 도 13을 참조하면, 하이브리드 안티-에일리어싱 리졸브 동작을 수행하기 위한 방법(1300)의 일 실시 예가 도시된다. 설명을 위한 목적으로, 이 실시 예의 단계들과 도 14 내지 도17의 단계들이 순차적으로 도시되어있다. 그러나, 설명된 방법들의 다양한 실시 예들에서, 개시된 요소들 중 하나 이상은 도시된 것과 다른 순서로 동시에 수행되거나 완전히 생략된다는 것을 유의해야 한다. 다른 추가적 요소들도 또한 원하는 대로 수행된다. 본 명세서에 기재된 다양한 시스템들, 장치들 또는 컴퓨팅 장치들 중 임의의 것은 방법(1300)을 구현하도록 구성된다.
프로세서는 픽셀 당 다수의 서브-픽셀 샘플들 및 제1 세트의 치수를 갖는 제1 이미지에 대해 안티-에일리어싱 리졸브 동작을 수행하라는 요청을 검출한다(블록 1305). 일 실시 예에서, 프로세서는 GPU이다. 다른 실시 예들에서, 프로세서는 다양한 다른 유형의 프로세서들(예를 들어, DSP, FPGA, ASIC, 멀티-코어 프로세서) 중 임의의 프로세서이다. 실시 예에 따라, 제1 이미지는 텍스처, 표면 또는 프로세서에 의해 처리되는 다른 유형의 픽셀 데이터일 수 있다.
요청을 검출하는 것에 응답하여, 프로세서는 픽셀 당 단일 샘플을 포함하고 제1 세트의 치수보다 큰 제2 세트의 치수를 갖는 제2 이미지를 생성하기 위해 제1 이미지의 치수를 확대한다 (블록 1310). 일 실시 예에서, 제1 이미지의 치수를 확대하는 것은 제1 이미지의 서브-픽셀들을 제2 이미지의 정규 픽셀들로 변환하는 것을 포함한다. 즉, 제1 이미지의 서브-픽셀들은 제2 이미지의 실제 픽셀들인 것처럼 취급될 것이다. 제1 이미지의 치수의 확대는 제1 이미지의 픽셀 당 서브-픽셀들 샘플링 위치들의 수에 따라 변할 것이다. 제1 이미지의 치수를 확대하여 제2 이미지를 생성하는 것은, 사실상 확대를 수행하지 않고 제2 이미지를 생성하지 않으면서 제1 이미지가 확대된 것처럼, 후속 계산을 수행함으로써 가상적으로 수행될 수 있음에 유의해야 한다. 일부 실시 예들에서, 제1 이미지의 치수를 확대하는 것에 추가하여, 제1 이미지는 또한 회전된다. 이들 실시 예들에서, 회전은 제1 이미지의 서브-픽셀들을 제2 이미지 내의 수직 및 수평 그리드 패턴으로 정렬하도록 수행된다.
다음으로, 프로세서는 제2 이미지 세트에 후-처리 안티-에일리어싱을 수행하여 제2 세트의 치수를 갖는 제3 이미지를 생성한다 (블록 1315). 일부 실시 예에서, 블록(1315)은 사실상 제3 이미지를 실제로 생성하지 않고서 가상으로 수행될 수 있다. 프로세서는 안티-에일리어싱 필터를 사용하여 안티-에일리어싱 프로세싱 처리를 수행한다. 안티-에일리어싱 필터는 후-처리, 안티-에일리어싱 필터라고도 지칭될 수 있다. 일 실시 예에서, 안티-에일리어싱 필터는 고속 근사화 안티-에일리어싱(fast approximate anti-aliasing, FXAA) 알고리즘에 기초한다. 다른 실시 예들에서, 안티-에일리어싱 필터는 제3 이미지를 생성하기 위해 제2 이미지를 필터링하기 위한 다른 알고리즘을 이용할 수 있다. 일반적으로, 안티-에일리어싱 필터는 중심 픽셀을 분석한 다음 주변 픽셀들을 분석하여 중심 픽셀 근처에 표시될 원하지 않는 에일리어싱 효과(즉, 계단 현상)가 있는지 여부를 결정한다. 안티-에일리어싱 필터가 중심 픽셀에 대한 아티팩트(artifacts)의 존재를 검출하면, 중심 픽셀의 값을 인접 픽셀들과 평균화 할 수 있다.
그 다음, 프로세서는 제3 이미지의 크기를 감소시켜 바람직한 해상도의 제4 이미지를 생성한다(블록 1320). 일 실시 예에서, 치수를 감소시키는 것은 제4 이미지를 생성하기 위해 제3 이미지의 평균화를 수행하는 것을 포함한다. 일 실시 예에서, 제3 이미지의 평균화는 제4 이미지를 생성하지 않고 적소에서(in-place) 수행될 수 있다. 블록(1320)에 후속하여, 실시 예에 따라, 제4 이미지는 메모리에 다시 기록될 수 있고, 제4 이미지는 추가의 처리를 거칠 수 있고, 및/또는 제4 이미지는 디스플레이로 구동될 수 있다. 일 실시 예에서, 제4 이미지는 제1 이미지와 동일한 해상도를 갖는다. 다른 실시 예에서, 제4 이미지는 제1 이미지보다 높은 해상도를 갖는다. 일부 실시 예들에서, 블록(1320)은 방법(1300)에서 생략될 수 있으며, 제3 이미지는 안티-에일리어싱 리졸브 동작의 결과이다. 예를 들어, 일부 어플리케이션들(예를 들어, 가상 현실(VR) 어플리케이션들)에서는, 렌더링 후 발생한 헤드 움직임을 보정하기 위해 렌더링된 이미지를 디스플레이로 보내기 전에 워핑(warping) (즉, 재투영)할 때 더 높은 해상도 이미지에 액세스하는 것이 유용할 수 있다. 블록(1320) 이후에, 방법(1300)이 종료된다.
방법(1300)을 설명하는데 이용된 제1 이미지, 제2 이미지, 제3 이미지 및 제4 이미지의 용어는 방법(1300)의 상이한 단계들을 구별하기 위한 것으로 이해해야 한다. 이러한 용어 각각은 수정된 소스 이미지를 만들기 위해 일부 처리가 소스 이미지에 적용되었음을 나타내기 위한 것이다. 예를 들어, 제1 이미지의 크기를 확대하여 제2 이미지를 만들 때, 프로세서는, 제1 이미지가 확대된 것처럼 후속 계산을 수행하고 실제로 제2 이미지를 만들지 않는 방법으로, 가상적으로 치수를 확대할 수 있다. 또한, 프로세서가 제3 이미지의 평균화를 수행 할 때, 프로세서는 제3 이미지의 평균화된 버전으로 제3 이미지를 덮어 쓸 수 있다. 이러한 관점에서, 제3 이미지는 평균화될 수 있고, 평균화의 출력은 여전히 제3 이미지로 불릴 수 있다. 그러나, 명확화를 위해, 평균화 단계의 입력과 출력을 명확히 구별하기 위해, 방법(1300)에서 제3 이미지를 평균화하는 출력은 제4 이미지라고 지칭된다. 유사하게, 방법(1300)의 다른 단계들은 새로운 이미지를 생성하기보다는 소스 이미지를 실제로 덮어 쓰거나 수정할 수 있다.
이제 도 14를 참조하면, 이미지를 확대 및 회전시킬 때 이미지 부분들을 재 배열하기 위한 방법(1400)의 일 실시 예가 도시된다. 프로세서는 제1 이미지로부터 제2 이미지 내의 새로운 위치들로 복수의 삼각형 부분들을 재배열한다(블록 1405). 일 실시 예에서, 프로세서는 제1 이미지로부터의 복수의 삼각형 부분들을 하이브리드 안티-에일리어싱 리졸브 동작의 일부로서 제2 이미지 내의 새로운 위치들로 재배열한다. 하이브리드 안티-에일리어싱 리졸브 동작의 일부로서 프로세서가 제1 이미지를 제2 이미지로 확대 및 회전시킬 때, 프로세서는 또한 제1 이미지로부터 제2 이미지 내의 새로운 위치들로 복수의 삼각형 부분들을 재배열한다. 또한, 프로세서는 제1 이미지의 임의의 나머지 부분을 복수의 삼각형 부분들 사이의 제2 이미지 내의 새로운 위치들로 재배열한다(블록 1410). 블록(1410) 후에, 방법(1400)이 종료된다. 제1 이미지의 이미지 부분들을 제2 이미지의 새로운 위치들로 재배열함으로써, 그래픽 하드웨어에 의해 제2 이미지에 대한 후속 처리 동작이 보다 효율적으로 수행될 수 있다.
이제 도 15를 참조하면, 이미지를 확대 및 회전시킬 때 이미지 부분들을 재배열하기 위한 방법(1500)의 다른 실시 예가 도시된다. 프로세서는 소스 이미지의 좌측으로부터 소스 이미지의 확대된 버전의 우측으로 제1 삼각형 부분을 이동시킨다(블록 1505). 또한, 프로세서는 제2 삼각형 부분을 소스 이미지의 우측에서 소스 이미지의 확대된 버전의 좌측으로 이동시킨다(블록 1510). 또한, 프로세서는 소스 이미지의 확대된 버전 내에서 제1 삼각형 부분과 제2 삼각형 부분 사이에 맞추기 위해 소스 이미지의 제3 부분을 이동시킨다(블록 1515). 일 실시 예에서, 프로세서는 소스 이미지의 확대된 버전에서 제1, 제2 및 제3 부분을 그들의 새로운 위치들로 이동할 때 제1, 제2 및 제3 부분들의 가장자리들 상에 서브-픽셀들의 오버랩을 포함한다. 블록(1515) 후에, 방법(1500)이 종료된다.
이제 도 16을 참조하면, 이미지의 서브-픽셀 위치들을 샘플링하는 방법(1600)의 일 실시 예가 도시된다. 프로세서는 회전된 그리드에 기초하여, 렌더링되는 이미지의 각 픽셀에 대한 복수의 서브-픽셀 샘플링 좌표들을 생성하고, 여기서 회전 각도는 회전된 그리드에 대해 특정된다(블록 1605). 회전 각도는 또한 보다 일반적으로 회전량으로 지칭될 수 있다. 다음으로, 프로세서는 렌더링되는 이미지의 각 픽셀 내에서 복수의 서브 픽셀 샘플링 좌표들에 의해 지시되는 서브-픽셀 위치들을 샘플링 한다(블록 1610). 그 후, 프로세서는 서브-픽셀 위치들의 값들을 메모리에 저장한다(블록 1615). 메모리는 캐시, 로컬 데이터 공유, 글로벌 데이터 공유, 메모리 장치, 또는 임의의 다른 적절한 저장 요소들의 집합을 나타냄을 알 수 있다. 블록(1615) 후에, 방법(1600)은 종료한다.
이제 도 17을 참조하면, 렌더링되는 이미지의 각 픽셀에 대한 복수의 서브-픽셀 샘플링 좌표들을 생성하는 방법(1700)의 일 실시 예가 도시된다. 프로세서는 이미지의 주어진 위치들을 대각선으로 통과하는 제1 세트의 평행한 선들에 대응하는 위치들을 계산한다(블록 1705). '대각선으로 통과'하는 것은 90도 또는 180도가 아닌 각도로 이미지를 가로 지르는 것으로 정의된다. 즉, 제1 세트의 평행한 선들은 이미지의 픽셀들의 경계를 표시하는 사각형 그리드의 수평 또는 수직 선들과 평행하지 않는다. 일 실시 예에서, 주어진 위치들은 픽셀들의 코너들이다. 다른 실시 예에서, 주어진 위치들은 픽셀들의 중심들이다. 다양한 실시 예들에서, 제1 세트의 평행한 선들의 각 선의 기울기는 2 개의 상호 소수의 비율로부터 생성된다. 예를 들어, 일 실시 예에서, 제1 세트의 평행한 선들의 각 선의 기울기는 2 픽셀 x 1 픽셀이다. 다른 실시 예에서, 기울기는 다른 적절한 비율일 수 있다. 일 실시 예에서, 인접한 선들 사이의 거리는 제1 세트의 평행한 선들의 인접한 선들의 각 쌍에 대해 일정하다.
다음으로, 프로세서는 제1 세트의 평행한 선들에 수직인 제2 세트의 평행한 선들에 대응하는 위치들을 계산하고, 제1 및 제2 세트의 평행한 선들은 회전된 그리드를 형성한다(블록 1710). 일 실시 예에서, 인접한 선들 사이의 거리는 제2 세트의 평행한 선들의 인접한 선들의 각 쌍에 대해 일정하다. 일 실시 예에서, 제1 세트의 평행한 선들의 인접한 선들 사이의 거리는 제2 세트의 평행한 선들의 인접한 선들 사이의 거리와 동일하다. 그 다음, 프로세서는 회전된 그리드를 이동시켜 제1 및 제2 세트의 평행한 선들의 정점들이 대응하는 각 픽셀의 중심에서 무게 중심을 갖게 한다(블록 1715). 다음으로, 프로세서는 이미지의 픽셀들 내의 복수의 서브-픽셀 샘플링 좌표들을 특정하기 위해 제1 및 제2 세트의 평행한 선들의 정점들의 위치를 이용한다(블록 1720). 블록(1720) 후에, 방법(1700)이 종료한다. 구현 방법(1700)은 서브-픽셀 샘플링 좌표들이 수평 및 수직으로 모두 규칙적으로 이격되도록 한다. 부가적으로, 구현 방법(1700)은 이미지를 가로 지르는 주어진 수평 또는 수직 선 상의 픽셀 당 단 하나의 서브-픽셀 샘플링 위치가 존재하게 할 것이다. 다른 실시 예에서, 방법(1700)에 의해 생성된 것과 유사한 서브-픽셀 샘플링 패턴을 달성하기 위해 다른 방법들이 구현될 수 있음을 알아야 한다. 일반적으로 픽셀 당 "a^2+b^2"(a 및 b는 정수) 서브-샘플들의 밀도를 갖는 사각형 그리드의 경우, 그리드가 "atan(a/b)+90*n"(n은 정수)의 각도로 회전 또는 미러링되는 경우, 각 픽셀 내의 샘플링 패턴은 동일할 것이다.
이제 도 18을 참조하면, 서브-픽셀 샘플링 좌표들을 생성하는 방법의 일 실시 예가 도시되어 있다. 프로세서는 회전된 그리드에 대한 각도를 특정한다(블록 1805). 예를 들어, 프로세서는 회전된 그리드의 제1 세트의 선들이 2x1의 기울기를 가지도록 지정할 수 있는데, 이는 2 픽셀의 폭 및 1 픽셀의 높이의 직사각형의 대각선에 평행한 선들을 지칭한다. 회전된 그리드의 제2 세트의 선들은 제1 세트의 선들에 수직이다. 다음으로, 프로세서는 렌더링된 이미지 위에 회전된 그리드를 중첩시킨다(블록 1810). 그 다음, 프로세서는 회전된 그리드에 기초하여, 렌더링되는 이미지의 각 픽셀에 대한 복수의 서브-픽셀 샘플링 좌표들을 생성한다(블록 1815). 블록(1815) 후에, 방법(1800)은 종료한다.
이제 도 19를 참조하면, 안티-에일리어싱 동작을 수행하기 위한 방법의 일 실시 예가 도시된다. 프로세서는 이미지에 대한 안티-에일리어싱 동작을 수행하라는 요청을 검출한다(블록 1905). 안티-에일리어싱 동작은 안티-에일리어싱 리졸브 동작이라고도 할 수 있다. 요청을 검출하는 것에 응답하여, 프로세서는 이미지의 치수를 확대한다(블록 1910). 일 실시 예에서, 프로세서는 블록(1910)에서 이미지의 가상 확대를 수행한다. 가상 확대는 더 큰 새 이미지를 만들거나 원본 이미지를 더 큰 이미지로 처리하여 수행할 수 있다. 일 실시 예에서, 프로세서는 원본의 이미지를 회전된 더 큰 이미지로서 취급한다. 일 실시 예에서, 이미지의 확대된 치수는 서브-픽셀들을 정규 픽셀들로 변환하는 것으로 정의된다. 일부 실시 예들에서, 이미지는 또한 사각형 그리드로 정규 픽셀들이 정렬되도록 하기 위해 회전된다. 다음으로, 프로세서는 이미지에 대해 안티-에일리어싱 처리를 수행한다(블록 1915). 그 후, 프로세서는 원하는 해상도에서 안티-에일리어싱 동작의 최종 결과를 생성하기 위해 이미지의 평균화를 수행한다(블록 1920). 블록(1920) 후에, 방법(1900)이 종료된다.
이제 도 20을 참조하면, 샘플링 그리드를 생성하는 방법의 일 실시 예가 도시되어 있다. 샘플링 그리드에 대한 기울기(예를 들어, 2x1)가 선택된다(블록 2005). 다음으로, 선택된 기울기의 선들이 픽셀 그리드의 모든 그리드 교차점들을 통과하여 그려진다 (블록 2010). 다른 실시 예에서, 선택된 기울기의 선들은 블록(2010)에서 픽셀 그리드의 모든 픽셀 중심들을 통과하여 그려진다. 그 다음, 픽셀 그리드의 모든 그리드 교차점들을 통과하는 수직한 선들이 그려진다(블록 2015). 대안적으로, 다른 실시 예에서, 수직 선들은 블록(2015)에서 픽셀 그리드의 모든 픽셀 중심들을 통과하여 그려진다. 블록들(2010 및 2015)에 그려진 선들은 회전된 규칙적인 그리드를 생성한다. 이 회전된 규칙적인 그리드는 또한 샘플링 그리드라고 할 수 있다.
다음으로, 선택적 단계에서, 샘플링 그리드는 이동되고, 90도의 배수만큼 회전되고 및/또는 미러링된다(블록 2020). 단일 픽셀 내에서 샘플링 그리드의 그리드 교차점들에 의해 생성된 패턴은 이미지에 대한 샘플링 패턴으로서 이용된다(블록 2025). 단일 픽셀 내의 샘플링 패턴은 방법(2000)에 의해 생성된 샘플링 패턴에 대한 이미지의 모든 픽셀에 대해 동일할 것이다. 블록(2025) 후에, 방법(2000)은 종료한다. 본 명세서에 설명된 임의의 시스템들 및/또는 장치들은 방법(2000)을 수행하도록 구성될 수 있다.
다양한 실시 예들에서, 소프트웨어 어플리케이션의 프로그램 명령들은 이전에 설명된 방법들 및/또는 메커니즘들을 구현하기 위해 사용된다. 프로그램 명령은 C와 같은 고급 프로그래밍 언어로 하드웨어의 동작을 설명한다. 대안적으로, 'Verilog'와 같은 하드웨어 설계 언어(hardware design language, HDL)가 사용된다. 프로그램 명령은 일시적이지 않은 컴퓨터 판독 가능 저장 매체에 저장된다. 다양한 유형의 저장 매체를 사용할 수 있다. 저장 매체는 프로그램 실행을 위해 컴퓨팅 시스템에 프로그램 명령 및 동반 데이터를 제공하기 위해 사용 중에 컴퓨팅 시스템에 의해 액세스 가능하다. 컴퓨팅 시스템은 적어도 하나 이상의 메모리들 및 프로그램 명령을 실행하도록 구성된 하나 이상의 프로세서를 포함한다.
전술한-실시 예들은 단지 구현의 비-제한적인 예일 뿐이라는 것이 강조되어야 한다. 상술한 개시가 완전히 이해되면, 당업자에게는 다양한 변형 및 수정이 명백해질 것이다. 다음의 특허 청구 범위는 모든 변형 및 수정을 포함하는 것으로 해석되어야 한다.

Claims (32)

  1. 시스템에 있어서,
    메모리; 및
    프로세서를 포함하고;
    상기 프로세서는,
    상기 메모리에 저장된 제1 이미지에 대해 안티-에일리어싱 리졸브 동작 수행의 요청을 검출하고, 상기 제1 이미지는 픽셀 당 다수의 서브-픽셀 샘플들을 포함하며 제1 세트의 치수를 갖고;
    상기 요청의 검출에 응답하여,
    상기 제1 이미지의 치수를 확대하여 제2 이미지를 생성하되, 상기 제2 이미지의 각 픽셀이 상기 제1 이미지의 상기 서브-픽셀 샘플들 중 하나에 의해 나타내어지는 단일 샘플을 갖도록 아울러 상기 제1 세트의 치수보다 큰 제2 세트의 치수를 갖도록 상기 제2 이미지를 생성하고;
    상기 제2 이미지에 대해 후-처리 안티-에일리어싱을 수행하여 상기 제2 세트의 치수를 갖는 제3 이미지를 생성하고; 및
    제4 이미지를 생성하기 위해 상기 제3 이미지의 치수를 줄이기 위해 구성되고, 상기 제4 이미지는 상기 안티-에일리어싱 리졸브 동작의 결과인, 시스템.
  2. 청구항 1에 있어서, 후-처리 안티-에일리어싱을 수행하는 것은 주위의 픽셀들의 값들을 기초로 픽셀들을 필터링하는 것을 포함하는, 시스템.
  3. 청구항 1에 있어서, 상기 제1 이미지의 치수를 확대하는 것은 상기 제1 이미지의 서브-픽셀들을 상기 제2 이미지의 정규 픽셀들로 변환하는 것을 포함하는, 시스템.
  4. 청구항 3에 있어서, 상기 제2 이미지는 상기 제1 이미지를 확대 및 회전함으로써 생성되는, 시스템.
  5. 청구항 4에 있어서, 상기 프로세서는 상기 제1 이미지를 회전하여 상기 서브-픽셀들을 상기 제2 이미지 내의 수직 및 수평 그리드 패턴에 정렬하도록 구성되는, 시스템.
  6. 청구항 5에 있어서, 상기 프로세서는,
    상기 제1 이미지로부터의 복수의 삼각형 부분들을 상기 제2 이미지 내의 새로운 위치들로 재배열하고; 및
    상기 제1 이미지의 임의의 남은 부분들을 재배열된 상기 복수의 삼각형 부분들 사이의 상기 제2 이미지 내의 새로운 위치들로 재배열하도록 구성되는, 시스템.
  7. 청구항 6에 있어서, 상기 프로세서는,
    제1 삼각형 부분을 상기 제1 이미지의 좌측으로부터 상기 제2 이미지의 우측으로 이동하고; 및
    제2 삼각형 부분을 상기 제1 이미지의 우측으로부터 상기 제2 이미지의 좌측으로 이동하고; 및
    상기 제1 이미지의 제3 부분을 상기 제2 이미지 내에서 상기 제1 삼각형 부분 및 상기 제2 삼각형 부분 사이에 맞추도록 구성되는, 시스템.
  8. 컴퓨팅 장치에서 사용하기 위한 방법에 있어서,
    픽셀 당 다수의 서브-픽셀 샘플들을 포함하고 제1 세트의 치수를 갖는 제1 이미지에 대해 안티-에일리어싱 리졸브 동작 수행 요청을 검출하는 단계;
    상기 요청의 검출에 응답하여,
    상기 제1 이미지의 치수를 확대하여 제2 이미지를 생성하되, 상기 제2 이미지의 각 픽셀이 상기 제1 이미지의 상기 서브-픽셀 샘플들 중 하나에 의해 나타내어지는 단일 샘플을 갖도록 아울러 상기 제1 세트의 치수보다 큰 제2 세트의 치수를 갖도록 상기 제2 이미지를 생성하는 단계;
    상기 제2 세트의 치수를 갖는 제3 이미지를 생성하기 위해 상기 제2 이미지에 대해 후-처리 안티-에일리어싱을 수행하는 단계; 및
    제4 이미지를 생성하기 위해 상기 제3 이미지의 치수를 줄이는 단계를 포함하고, 상기 제4 이미지는 상기 안티-에일리어싱 리졸브 동작의 결과인, 방법.
  9. 청구항 8에 있어서, 후-처리 안티-에일리어싱을 수행하는 단계는 주위의 픽셀들의 값들을 기초로 픽셀들을 필터링하는 단계를 포함하는, 방법.
  10. 청구항 8에 있어서, 상기 제1 이미지의 치수를 확대하는 단계는 상기 제1 이미지의 서브-픽셀들을 상기 제2 이미지의 정규 픽셀들로 변환하는 단계를 포함하는, 방법.
  11. 청구항 10에 있어서, 상기 제2 이미지는 상기 제1 이미지를 확대 및 회전함으로써 생성되는, 방법.
  12. 청구항 11에 있어서, 상기 서브-픽셀들을 상기 제2 이미지 내에서 수평 및 수직 그리드 패턴에 정렬하기 위해 상기 제1 이미지를 회전하는 단계를 더 포함하는, 방법.
  13. 청구항 12에 있어서,
    상기 제1 이미지로부터의 복수의 삼각형 부분들을 상기 제2 이미지 내의 새로운 위치들로 재배열하는 단계; 및
    상기 제1 이미지의 임의의 남은 부분들을 재배열된 상기 복수의 삼각형 부분들 사이의 상기 제2 이미지 내의 새로운 위치들로 재배열하는 단계를 더 포함하는, 방법.
  14. 청구항 13에 있어서,
    제1 삼각형 부분을 상기 제1 이미지의 좌측으로부터 상기 제2 이미지의 우측으로 이동하는 단계;
    제2 삼각형 부분들을 상기 제1 이미지의 우측으로부터 상기 제2 이미지의 좌측으로 이동하는 단계; 및
    상기 제1 이미지의 제3 부분들을 상기 제2 이미지 내에서 상기 제1 삼각형 부분 및 상기 제2 삼각형 부분 사이에 맞추기 위해 이동하는 단계를 더 포함하는, 방법.
  15. 프로세서에 있어서,
    메모리; 및
    복수의 실행 유닛들을 포함하고,
    상기 복수의 실행 유닛들은,
    상기 메모리에 저장된 제1 이미지에 대해 안티-에일리어싱 리졸브 동작 수행의 요청을 검출하고, 상기 제1 이미지는 픽셀 당 다수의 서브-픽셀 샘플들을 포함하며 제1 세트의 치수를 갖고;
    상기 요청의 검출에 응답하여,
    상기 제1 이미지의 치수를 확대하여 제2 이미지를 생성하되, 상기 제2 이미지의 각 픽셀이 상기 제1 이미지의 상기 서브-픽셀 샘플들 중 하나에 의해 나타내어지는 단일 샘플을 갖도록 아울러 상기 제1 세트의 치수보다 큰 제2 세트의 치수를 갖도록 상기 제2 이미지를 생성하고;
    상기 제2 이미지에 대해 후-처리 안티-에일리어싱을 수행하여 상기 제2 세트의 치수를 갖는 제3 이미지를 생성하고; 및
    제4 이미지를 생성하기 위해 상기 제3 이미지의 치수를 줄이기 위해 구성되고, 상기 제4 이미지는 상기 안티-에일리어싱 리졸브 동작의 결과인, 프로세서.
  16. 청구항 15에 있어서, 후-처리 안티-에일리어싱을 수행하는 것은 주위의 픽셀들의 값들을 기초로 픽셀들을 필터링하는 것을 포함하는, 프로세서.
  17. 청구항 15에 있어서, 상기 제1 이미지의 치수를 확대하는 것은 상기 제1 이미지의 서브-픽셀들을 상기 제2 이미지의 정규 픽셀들로 변환하는 것을 포함하는, 프로세서.
  18. 청구항 17에 있어서, 상기 제2 이미지는 상기 제1 이미지를 확대 및 회전함으로써 생성되는, 프로세서.
  19. 청구항 18에 있어서, 상기 프로세서는 상기 제1 이미지를 회전하여 상기 서브-픽셀들을 상기 제2 이미지 내의 수직 및 수평 그리드 패턴에 정렬하도록 구성되는, 프로세서.
  20. 청구항 19에 있어서, 상기 프로세서는,
    상기 제1 이미지로부터의 복수의 삼각형 부분들을 상기 제2 이미지 내의 새로운 위치들로 재배열하고; 및
    상기 제1 이미지의 임의의 남은 부분들을 재배열된 상기 복수의 삼각형 부분들 사이의 상기 제2 이미지 내의 새로운 위치들로 재배열하도록 구성되는, 프로세서.
  21. 프로세서에 있어서,
    메모리; 및
    복수의 실행 유닛들을 포함하고;
    상기 프로세서는,
    회전된 그리드에 기초하여, 렌더링되는 이미지의 각 픽셀에 대한 복수의 서브-픽셀 샘플링 좌표들을 생성하고, 회전의 양은 상기 회전된 그리드에 대해 특정화 되고, 상기 회전된 그리드의 기울기는 두 개의 상호 소수들의 비율과 동일하도록 선택되고;
    상기 복수의 실행 유닛들에 의해 렌더링되는 상기 이미지의 각 픽셀 내의 상기 복수의 서브-픽셀 샘플링 좌표들에 의해 지시되는 서브-픽셀 위치들을 샘플링하고; 및
    상기 서브-픽셀 위치들의 값들을 상기 메모리에 저장하는, 프로세서.
  22. 청구항 21에 있어서, 상기 회전된 그리드에 기초하여 상기 복수의 서브-픽셀 샘플링 좌표들을 생성하는 것은,
    상기 이미지의 주어진 위치들을 대각선으로 통과하는 제1 세트의 평행한 선들에 대응되는 위치들을 계산하는 것;
    상기 제1 세트의 평행한 선들에 수직한 제2 세트의 평행한 선들에 대응되는 위치들을 계산하는 것으로써, 상기 제1 및 제2 세트의 평행한 선들은 회전된 그리드를 형성하고;
    제1 및 제2 세트의 평행한 선들의 정점들이 각 대응하는 픽셀의 중심에 있는 무게 중심을 갖도록 상기 회전된 그리드를 이동하는 것; 및
    상기 이미지의 픽셀들 내의 상기 제1 및 제2 세트의 평행한 선들의 정점들의 위치들과 일치하도록 상기 복수의 서브-픽셀 샘플링 좌표들을 특정하는 것을 포함하는, 프로세서.
  23. 청구항 22에 있어서, 상기 주어진 위치들은 상기 픽셀들의 코너들 또는 상기 픽셀들의 중심들인, 프로세서.
  24. 청구항 21에 있어서, 상기 서브-픽셀 샘플링 좌표들은 수직 및 수평으로 규칙적으로 이격된, 프로세서.
  25. 청구항 21에 있어서, 상기 이미지를 가로지르는 주어진 수평 또는 수직 선 상에 픽셀 당 오직 하나의 서브-픽셀 샘플링 위치가 있는, 프로세서.
  26. 청구항 22에 있어서, 상기 제1 세트의 평행한 선들의 각 선의 기울기는 두 개의 상호 소수들의 비율과 동일한, 프로세서.
  27. 컴퓨팅 장치에서 사용하기 위한 방법에 있어서,
    회전된 그리드에 기초하여, 렌더링되는 이미지의 각 픽셀에 대한 복수의 서브-픽셀 샘플링 좌표들을 생성하는 단계로서, 회전의 양은 상기 회전된 그리드에 대해 특정화되고, 상기 회전된 그리드의 기울기는 두 개의 상호 소수들의 비율과 동일하도록 선택되는, 단계;
    렌더링되는 상기 이미지의 각 픽셀 내의 상기 복수의 서브-픽셀 샘플링 좌표들에 의해 지시되는 서브-픽셀 위치들을 샘플링하는 단계; 및
    상기 서브-픽셀 위치들의 값들을 메모리에 저장하는 단계를 포함하는, 방법.
  28. 청구항 27에 있어서, 상기 회전된 그리드에 기초하여 상기 복수의 서브-픽셀 샘플링 좌표들을 생성하는 단계는,
    상기 이미지의 주어진 위치들을 대각선으로 통과하는 제1 세트의 평행한 선들에 대응되는 위치들을 계산하는 단계;
    상기 제1 세트의 평행한 선들에 수직한 제2 세트의 평행한 선들에 대응되는 위치들을 계산하는 단계로써, 상기 제1 및 제2 세트의 평행한 선들은 회전된 그리드를 형성하는, 단계;
    제1 및 제2 세트의 평행한 선들의 정점들이 각 대응하는 픽셀의 중심에 있는 무게 중심을 갖도록 상기 회전된 그리드를 이동하는 단계; 및
    상기 이미지의 픽셀들 내의 상기 제1 및 제2 세트의 평행한 선들의 정점들의 위치들과 일치하도록 상기 복수의 서브-픽셀 샘플링 좌표들을 특정하는 단계를 포함하는, 방법.
  29. 청구항 28에 있어서, 상기 주어진 위치들은 상기 픽셀들의 코너들 또는 상기 픽셀들의 중심들인, 방법.
  30. 청구항 27에 있어서, 상기 서브-픽셀 샘플링 좌표들은 수평 및 수직으로 규칙적으로 이격되는, 방법.
  31. 청구항 27에 있어서, 상기 이미지를 가로지르는 주어진 수평 또는 수직 선 상에 픽셀 당 오직 하나의 서브-픽셀 샘플링 위치가 있는, 방법.
  32. 청구항 28에 있어서, 상기 제1 세트의 평행한 선들의 각 선의 기울기는 두 개의 상호 소수들의 비율과 동일한, 방법.
KR1020187022897A 2016-01-18 2017-01-17 컴퓨팅 시스템에서 안티-에일리어싱 동작 수행 KR102635452B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662279889P 2016-01-18 2016-01-18
US62/279,889 2016-01-18
PCT/US2017/013786 WO2017127363A1 (en) 2016-01-18 2017-01-17 Performing anti-aliasing operations in a computing system

Publications (2)

Publication Number Publication Date
KR20180102617A KR20180102617A (ko) 2018-09-17
KR102635452B1 true KR102635452B1 (ko) 2024-02-13

Family

ID=59313891

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187022897A KR102635452B1 (ko) 2016-01-18 2017-01-17 컴퓨팅 시스템에서 안티-에일리어싱 동작 수행

Country Status (6)

Country Link
US (2) US10152772B2 (ko)
EP (2) EP4040395A1 (ko)
JP (2) JP6992005B2 (ko)
KR (1) KR102635452B1 (ko)
CN (1) CN108701235B (ko)
WO (1) WO2017127363A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017127363A1 (en) 2016-01-18 2017-07-27 Advanced Micro Devices, Inc. Performing anti-aliasing operations in a computing system
CA2949383C (en) * 2016-11-22 2023-09-05 Square Enix, Ltd. Image processing method and computer-readable medium
US10628907B2 (en) 2017-04-01 2020-04-21 Intel Corporation Multi-resolution smoothing
CN109710122B (zh) * 2017-10-26 2021-05-25 北京京东尚科信息技术有限公司 用于展示信息的方法和装置
US11113790B2 (en) * 2018-04-12 2021-09-07 Nvidia Corporation Adding greater realism to a computer-generated image by smoothing jagged edges
CN111192351B (zh) * 2018-11-14 2023-06-02 芯原微电子(上海)股份有限公司 边缘抗锯齿的图形处理方法、系统、存储介质及装置
KR102374945B1 (ko) * 2019-02-22 2022-03-16 지멘스 메디컬 솔루션즈 유에스에이, 인크. 영상 처리 방법 및 영상 처리 시스템
US11100889B2 (en) 2019-02-28 2021-08-24 Ati Technologies Ulc Reducing 3D lookup table interpolation error while minimizing on-chip storage
US11076151B2 (en) 2019-09-30 2021-07-27 Ati Technologies Ulc Hierarchical histogram calculation with application to palette table derivation
KR20210043068A (ko) 2019-10-11 2021-04-21 장혜경 커넥터블 연무 재배장치
US11915337B2 (en) 2020-03-13 2024-02-27 Advanced Micro Devices, Inc. Single pass downsampler
CN115440153A (zh) * 2021-06-01 2022-12-06 力领科技股份有限公司 显示面板的子像素渲染方法
CN114331844A (zh) * 2021-12-28 2022-04-12 Tcl华星光电技术有限公司 图像处理方法、装置、服务器及存储介质
US20230298133A1 (en) * 2022-03-17 2023-09-21 Advanced Micro Devices, Inc. Super resolution upscaling

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140327696A1 (en) * 2013-05-03 2014-11-06 Advanced Micro Devices Inc. Variable acuity rendering using multisample anti-aliasing

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5274754A (en) 1986-04-14 1993-12-28 Advanced Micro Devices, Inc. Method and apparatus for generating anti-aliased vectors, arcs and circles on a video display
US4831447A (en) * 1987-11-16 1989-05-16 The Grass Valley Group, Inc. Method and apparatus for anti-aliasing an image boundary during video special effects
US5251218A (en) * 1989-01-05 1993-10-05 Hughes Aircraft Company Efficient digital frequency division multiplexed signal receiver
US5818456A (en) 1996-04-30 1998-10-06 Evans & Sutherland Computer Corporation Computer graphics system with adaptive pixel multisampler
US6525723B1 (en) 1998-02-17 2003-02-25 Sun Microsystems, Inc. Graphics system which renders samples into a sample buffer and generates pixels in response to stored samples at different rates
US6577312B2 (en) * 1998-02-17 2003-06-10 Sun Microsystems, Inc. Graphics system configured to filter samples using a variable support filter
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
US6924816B2 (en) * 2000-03-17 2005-08-02 Sun Microsystems, Inc. Compensating for the chromatic distortion of displayed images
US6781600B2 (en) * 2000-04-14 2004-08-24 Picsel Technologies Limited Shape processor
US6775420B2 (en) 2000-06-12 2004-08-10 Sharp Laboratories Of America, Inc. Methods and systems for improving display resolution using sub-pixel sampling and visual error compensation
US7061507B1 (en) * 2000-11-12 2006-06-13 Bitboys, Inc. Antialiasing method and apparatus for video applications
US6636232B2 (en) * 2001-01-12 2003-10-21 Hewlett-Packard Development Company, L.P. Polygon anti-aliasing with any number of samples on an irregular sample grid using a hierarchical tiler
US7123277B2 (en) * 2001-05-09 2006-10-17 Clairvoyante, Inc. Conversion of a sub-pixel format data to another sub-pixel data format
US7145577B2 (en) * 2001-08-31 2006-12-05 Micron Technology, Inc. System and method for multi-sampling primitives to reduce aliasing
JP3882585B2 (ja) * 2001-11-07 2007-02-21 富士ゼロックス株式会社 画像処理装置およびプログラム
US6985159B2 (en) * 2002-05-08 2006-01-10 Intel Corporation Arrangements for antialiasing coverage computation
JP3910120B2 (ja) 2002-08-23 2007-04-25 株式会社リコー 画像処理装置、方法、該方法を実行するプログラム及び記録媒体
US6967663B1 (en) * 2003-09-08 2005-11-22 Nvidia Corporation Antialiasing using hybrid supersampling-multisampling
KR100580624B1 (ko) * 2003-09-19 2006-05-16 삼성전자주식회사 영상 표시 방법과 장치 및 컴퓨터 프로그램을 저장하는컴퓨터로 읽을 수 있는 기록 매체
JP2005100176A (ja) * 2003-09-25 2005-04-14 Sony Corp 画像処理装置およびその方法
US7348996B2 (en) 2004-09-20 2008-03-25 Telefonaktiebolaget Lm Ericsson (Publ) Method of and system for pixel sampling
US8744184B2 (en) * 2004-10-22 2014-06-03 Autodesk, Inc. Graphics processing method and system
GB0426170D0 (en) 2004-11-29 2004-12-29 Falanx Microsystems As Processing of computer graphics
US8666196B2 (en) * 2005-01-19 2014-03-04 The United States Of America As Represented By The Secretary Of The Army System and method for super-resolution imaging from a sequence of color filter array (CFA) low-resolution images
US8577184B2 (en) 2005-01-19 2013-11-05 The United States Of America As Represented By The Secretary Of The Army System and method for super-resolution imaging from a sequence of color filter array (CFA) low-resolution images
US7456846B1 (en) * 2005-06-03 2008-11-25 Nvidia Corporation Graphical processing system, graphical pipeline and method for implementing subpixel shifting to anti-alias texture
US8269788B2 (en) 2005-11-15 2012-09-18 Advanced Micro Devices Inc. Vector graphics anti-aliasing
US7684641B1 (en) * 2005-12-13 2010-03-23 Nvidia Corporation Inside testing for paths using a derivative mask
US7612783B2 (en) * 2006-05-08 2009-11-03 Ati Technologies Inc. Advanced anti-aliasing with multiple graphics processing units
EP2028621A1 (en) * 2007-08-20 2009-02-25 Agfa HealthCare NV System and method for information embedding and extraction in phantom targets for digital radiography systems
US7916155B1 (en) * 2007-11-02 2011-03-29 Nvidia Corporation Complementary anti-aliasing sample patterns
JP5305641B2 (ja) 2007-11-21 2013-10-02 株式会社ニューフレアテクノロジー パターン検査装置及びパターン検査方法
US8396129B2 (en) * 2007-12-28 2013-03-12 Ati Technologies Ulc Apparatus and method for single-pass, gradient-based motion compensated image rate conversion
US8044971B2 (en) 2008-01-31 2011-10-25 Arm Norway As Methods of and apparatus for processing computer graphics
GB0801812D0 (en) * 2008-01-31 2008-03-05 Arm Noway As Methods of and apparatus for processing computer graphics
WO2009124248A1 (en) 2008-04-04 2009-10-08 Advanced Micro Devices, Inc. Filtering method and apparatus for anti-aliasing
JP2009303164A (ja) * 2008-06-17 2009-12-24 Canon Inc 画像読取装置及び画像読取装置の制御方法
US8605087B2 (en) * 2008-07-03 2013-12-10 Nvidia Corporation Hybrid multisample/supersample antialiasing
GB0819570D0 (en) * 2008-10-24 2008-12-03 Advanced Risc Mach Ltd Methods of and apparatus for processing computer graphics
WO2010063881A1 (en) * 2008-12-03 2010-06-10 Nokia Corporation Flexible interpolation filter structures for video coding
WO2010079685A1 (ja) 2009-01-09 2010-07-15 コニカミノルタホールディングス株式会社 動きベクトル生成装置および動きベクトル生成方法
US8773448B2 (en) 2010-04-09 2014-07-08 Intel Corporation List texture
US8368774B2 (en) * 2010-11-22 2013-02-05 The Aerospace Corporation Imaging geometries for scanning optical detectors with overlapping fields of regard and methods for providing and utilizing same
CN102571657B (zh) * 2010-12-10 2015-10-21 中兴通讯股份有限公司 一种变换采样率的数字预失真处理系统和方法
GB2497302B (en) * 2011-12-05 2017-04-12 Advanced Risc Mach Ltd Methods of and apparatus for processing computer graphics
US9165526B2 (en) 2012-02-28 2015-10-20 Shenzhen Yunyinggu Technology Co., Ltd. Subpixel arrangements of displays and method for rendering the same
US8928690B2 (en) 2012-03-20 2015-01-06 Advanced Micro Devices, Inc. Methods and systems for enhanced quality anti-aliasing
KR20140024977A (ko) * 2012-08-17 2014-03-04 삼성디스플레이 주식회사 유기 발광 표시장치 및 그 제조방법
US8941676B2 (en) * 2012-10-26 2015-01-27 Nvidia Corporation On-chip anti-alias resolve in a cache tiling architecture
US9235926B2 (en) * 2012-12-24 2016-01-12 Intel Corporation Techniques for improving MSAA rendering efficiency
US9478066B2 (en) 2013-03-14 2016-10-25 Nvidia Corporation Consistent vertex snapping for variable resolution rendering
US9230363B2 (en) * 2013-09-11 2016-01-05 Nvidia Corporation System, method, and computer program product for using compression with programmable sample locations
US9501860B2 (en) 2014-01-03 2016-11-22 Intel Corporation Sparse rasterization
KR102238651B1 (ko) * 2014-04-23 2021-04-09 삼성전자주식회사 경로 렌더링을 수행하는 방법 및 장치.
JP6369799B2 (ja) 2014-04-23 2018-08-08 Tianma Japan株式会社 画素アレイ及び電気光学装置並びに電気機器
US9978171B2 (en) 2014-07-29 2018-05-22 Nvidia Corporation Control of a sample mask from a fragment shader program
US10412387B2 (en) * 2014-08-22 2019-09-10 Qualcomm Incorporated Unified intra-block copy and inter-prediction
US9536282B2 (en) * 2015-01-14 2017-01-03 Lucidlogix Technologies Ltd. Method and apparatus for controlling spatial resolution in a computer system
US9426362B2 (en) 2015-01-16 2016-08-23 Mems Drive, Inc. Three-axis OIS for super-resolution imaging
US9659349B2 (en) * 2015-06-12 2017-05-23 Gopro, Inc. Color filter array scaler
US9659402B2 (en) 2015-06-26 2017-05-23 Intel Corporation Filtering multi-sample surfaces
CN105160355B (zh) * 2015-08-28 2018-05-15 北京理工大学 一种基于区域相关和视觉单词的遥感图像变化检测方法
US20170132833A1 (en) * 2015-11-10 2017-05-11 Intel Corporation Programmable per pixel sample placement using conservative rasterization
WO2017127363A1 (en) 2016-01-18 2017-07-27 Advanced Micro Devices, Inc. Performing anti-aliasing operations in a computing system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140327696A1 (en) * 2013-05-03 2014-11-06 Advanced Micro Devices Inc. Variable acuity rendering using multisample anti-aliasing

Also Published As

Publication number Publication date
JP7361089B2 (ja) 2023-10-13
EP4040395A1 (en) 2022-08-10
WO2017127363A1 (en) 2017-07-27
US20170206638A1 (en) 2017-07-20
EP3405907B1 (en) 2022-05-04
US20170206626A1 (en) 2017-07-20
JP2022031880A (ja) 2022-02-22
EP3405907A1 (en) 2018-11-28
CN108701235A (zh) 2018-10-23
JP6992005B2 (ja) 2022-01-13
EP3405907A4 (en) 2020-01-01
JP2019505939A (ja) 2019-02-28
US10354365B2 (en) 2019-07-16
CN108701235B (zh) 2022-04-12
US10152772B2 (en) 2018-12-11
KR20180102617A (ko) 2018-09-17

Similar Documents

Publication Publication Date Title
KR102635452B1 (ko) 컴퓨팅 시스템에서 안티-에일리어싱 동작 수행
KR101952633B1 (ko) 고 분해능 디스플레이 버퍼들의 효율적인 구성을 위한 방법
KR102046616B1 (ko) 오브젝트 및/또는 프리미티브 식별자들을 추적하는 것에 의한 그래픽스 프로세싱 강화
KR102475212B1 (ko) 타일식 아키텍처들에서의 포비티드 렌더링
US10853988B2 (en) Single pass rendering for head mounted displays
CN106204712B (zh) 分段线性不规则光栅化
KR102598915B1 (ko) 그래픽 처리
CN104732479B (zh) 对图像进行调整大小
US10019802B2 (en) Graphics processing unit
DE102013222685A1 (de) System, Verfahren und Computer-Programm-Produkt zum Abtasten einer hierarchischen Tiefe-Karte
US10074159B2 (en) System and methodologies for super sampling to enhance anti-aliasing in high resolution meshes
CN115330986B (zh) 一种分块渲染模式图形处理方法及系统
GB2604232A (en) Graphics texture mapping
GB2493438A (en) Water simulation using velocity-dependent column heights
WO2015103685A1 (en) Method and system for expediting bilinear filtering
WO2013021525A1 (ja) 画像処理装置、画像処理方法、プログラム、及び集積回路
JP2018032301A (ja) 画像処理プロセッサにおける画像データ処理方法及びそのプログラム
WO1999045502A1 (en) Subsampled texture edge antialiasing
Zemcik et al. Particle rendering engine in DSP and FPGA
JP2004013510A (ja) 描画処理プログラム,描画処理プログラムを記憶させた記憶媒体,描画処理装置、及び描画処理方法
JP2023538828A (ja) 距離場グラフィックスレンダリングのためのアンチエイリアシング

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