KR101824665B1 - 안티-앨리어싱된 샘플들의 분할 저장 - Google Patents
안티-앨리어싱된 샘플들의 분할 저장 Download PDFInfo
- Publication number
- KR101824665B1 KR101824665B1 KR1020137004196A KR20137004196A KR101824665B1 KR 101824665 B1 KR101824665 B1 KR 101824665B1 KR 1020137004196 A KR1020137004196 A KR 1020137004196A KR 20137004196 A KR20137004196 A KR 20137004196A KR 101824665 B1 KR101824665 B1 KR 101824665B1
- Authority
- KR
- South Korea
- Prior art keywords
- samples
- memory
- rendering
- aliased
- pixel
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/12—Indexing scheme for image data processing or generation, in general involving antialiasing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Image Generation (AREA)
- Computer Graphics (AREA)
- General Engineering & Computer Science (AREA)
Abstract
본 발명의 실시예들은 안티-앨리어싱된 이미지 렌더링의 성능을 향상시키는 것에 관한 것이다. 일 실시예는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 방법이다. 이 방법은, 상기 픽셀의 복수의 안티-앨리어싱된 샘플들로부터의 샘플들의 제 1 세트 및 제 2 세트를 제 1 메모리 및 제 2 메모리에 각각 저장하는 단계와; 그리고 상기 제 1 세트로부터의 소정 개수의 샘플들만을 렌더링하거나 혹은 상기 제 1 세트와 상기 제 2 세트로부터의 소정 개수의 샘플들을 렌더링하는 단계를 포함한다. 대응하는 시스템 및 컴퓨터 프로그램물의 실시예들이 또한 개시된다.
Description
본 발명의 실시예들은 안티-앨리어싱된 이미지(anti-aliased images)의 디스플레이에 관한 것이다.
디스플레이되는 이미지에서 재기드 에지(jagged edges)와 같은 에지 효과(edge effects)가 발생하는데, 이는 실세계에서의 매끄러운 에지들이 모니터에서 정확히 디스플레이되지 않기 때문에 일어난다. 모니터는 픽셀들을 디스플레이하는바, 여기서 픽셀들은 스크린 상의 개별 포인트(point)들이다. 에지 효과는 시각적으로 바람직하지 않을 수 있다. 따라서, 이러한 에지 효과를 감소시키기 위해 안티-앨리어싱(Anti-Aliasing, AA) 기술이 빈번히 사용된다. 두 가지 안티-앨리어싱 기술은 슈퍼샘플링(supersampling) 및 멀티샘플링(multisampling)이다. 슈퍼샘플링에서, 이미지는 고해상도로 렌더링(rendering)되고 픽셀 당 다수의 샘플들이 저장된다. 멀티샘플링에서는, 본래의 픽셀(original pixel)이 여러 위치에서 샘플링되고 픽셀 당 여러 샘플들이 저장된다. 디스플레이될 이미지를 렌더링할 때, 실제 픽셀 값은 해당 픽셀에 대해 그 저장 샘플들의 평균을 구함으로써 결정될 수 있다. 4x 안티-앨리어싱된 이미지들, 즉, 4xAA 이미지들에서는, 안티-앨리어싱된 이미지의 각각의 픽셀에 대해 4개의 샘플들이 취해진다. 이 샘플들은, 컬러 값, 농도 값, 및/또는 (이미지 혹은 장면을 디스플레이하는 것과 관련된) 다른 속성들을 포함할 수 있다.
렌더링된 이미지들은 그래픽 프로세서 유닛(Graphics Processor Unit, GPU) 메모리, 시스템 메모리, 혹은 컴퓨터 시스템의 다른 메모리에 저장될 수 있다. 안티-앨리어싱이 활성화될 때, 이미지의 메모리 사용량(memory footprint)은 크게 증가한다. 예를 들어, 4xAA이 사용되는 경우, 일반적으로, 각각의 픽셀은 4개의 샘플들을 요구하고, 이로 인해 이미지를 저장하기 위해 필요한 메모리에서의 상당량의 증가가 일어나게 된다. 필요한 메모리 사용량에서의 증가는, 확장성(scalability)의 한계, 대역폭(bandwidth)의 한계, 및 프레임 렌더링시의 지연(delays)으로 인해, 성능 저하를 일으킬 수 있다. 예를 들어, 큰 메모리 사용량에 더하여, 메모리 내에서 동일 이미지의 복수의 샘플들에 액세스하는 것은 메모리 대역폭 혼잡(memory bandwidth congestion)을 일으킬 수 있다.
이에 따라, 필요한 것은, 안티-앨리어싱이 사용될 때 메모리 대역폭의 활용을 향상시키는 방법 및 시스템이다.
본 발명의 실시예들은 안티-앨리어싱된 이미지 렌더링(anti-aliased image rendering)의 성능을 향상시키는 것에 관한 것이다. 일 실시예는 안티-앨리어싱된 이미지로부터의 픽셀(pixel)을 렌더링하는 방법이다. 이 방법은, 상기 픽셀의 복수의 안티-앨리어싱된 샘플들의 제 1 세트 및 제 2 세트를 제 1 메모리 및 제 2 메모리에 각각 저장하는 단계와; 그리고 상기 제 1 세트로부터의 소정 개수의 샘플들을 렌더링하거나 혹은 상기 제 1 세트와 상기 제 2 세트로부터의 소정 개수의 샘플들을 렌더링하는 단계를 포함한다.
또 다른 실시예는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 시스템이다. 이 시스템은, 적어도 하나의 프로세서와; 상기 프로세서에 결합되는 제 1 메모리 및 제 2 메모리와; 그리고 분할형 안티-앨리어싱 샘플 기입기(split anti-aliased sample writer)를 포함한다. 상기 분할형 안티-앨리어싱 샘플 기입기는 상기 픽셀의 복수의 안티-앨리어싱된 샘플들의 제 1 세트 및 제 2 세트를 제 1 메모리 및 제 2 메모리에 각각 저장하도록 구성된다. 이 시스템은 또한, 분할형 안티-앨리어싱 샘플 판독기(split anti-aliased sample reader)를 포함할 수 있다. 이러한 안티-앨리어싱 샘플 판독기는, 상기 제 1 세트로부터의 소정 개수의 샘플들만을 렌더링하거나 혹은 상기 제 1 세트와 상기 제 2 세트로부터의 소정 개수의 샘플들을 렌더링하도록 구성될 수 있다.
또 다른 실시예는 명령들을 저장하는 컴퓨터 판독가능 매체이며, 여기서 상기 명령들은 그 실행시, 렌더링 방법을 구현하는 적어도 하나의 프로세서를 사용하여, 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하도록 구성된다. 상기 렌더링 방법은, 상기 픽셀의 복수의 안티-앨리어싱된 샘플들의 제 1 세트 및 제 2 세트를 제 1 메모리 및 제 2 메모리에 각각 저장하는 단계와; 그리고 상기 제 1 세트로부터의 소정 개수의 샘플들만을 렌더링하거나 혹은 상기 제 1 세트와 상기 제 2 세트로부터의 소정 개수의 샘플들을 렌더링하는 단계를 포함한다.
첨부되는 도면을 참조하여 본 발명의 추가 실시예, 특징 및 장점뿐만 아니라 본 발명의 다양한 실시예의 구조 및 동작이 아래에서 상세히 설명된다.
첨부되는 도면(본 명세서에 통합되어 본 명세서의 일부를 형성함)은 상세한 설명과 함께 본 발명의 실시예들을 예시하고, 또한 본 발명의 원리를 설명하는 역할을 하며, 관련 기술분야에서 숙련된 자가 본 발명의 실시예를 구현 및 사용할 수 있도록 하는 역할을 한다.
도 1은 본 발명의 실시예에 따른, 그래픽 컴퓨팅 환경의 블록도를 나타낸다.
도 2는 본 발명의 실시예에 따른, 멀티샘플링된 픽셀 샘플들을 메모리들에 할당하는 예를 나타낸 것이다.
도 3은 본 발명의 실시예에 따른, 안티-앨리어싱된 이미지의 렌더링을 나타내는 흐름도이다.
도 2는 본 발명의 실시예에 따른, 멀티샘플링된 픽셀 샘플들을 메모리들에 할당하는 예를 나타낸 것이다.
도 3은 본 발명의 실시예에 따른, 안티-앨리어싱된 이미지의 렌더링을 나타내는 흐름도이다.
본 발명은 첨부되는 도면을 참조하여 설명될 것이다. 일반적으로, 도면에서 구성요소가 처음 나타나는 경우 해당 도면은 대응하는 참조 번호의 가장좌측의 숫자(들)에 의해 전형적으로 표시된다.
본 명세서의 개요 및 요약 부분이 아닌 상세한 설명 부분이 본 출원의 특허청구범위의 해석을 위해 사용되도록 의도되었음을 이해해야 한다. 본 명세서의 개요 및 요약 부분은 본 발명자(들)에 의해 고려되는 바와 같은 본 발명의 하나 이상의 실시예(모든 실시예는 아님)를 제시할 수 있고, 따라서 본 발명 및 첨부되는 특허청구범위를 어떤 경우에서건 한정하도록 의도되지 않았다.
이미지들의 디스플레이에서 에지 효과(edge effects)를 감소시키기 위해 안티-앨리어싱이 수행된다. 예를 들어, 슈퍼샘플링 혹은 멀티샘플링에 의한 이미지 프레임들의 안티-앨리어싱은 이미지의 각각의 픽셀에 대해 복수의 샘플들을 발생시킨다. 슈퍼샘플링에서, 본래의 이미지는 고해상도로 렌더링되고, 고해상도 이미지로부터의 수개의 샘플들이 결합(혹은 평균화)되어 원하는 해상도로 이미지를 렌더링하게 된다. 멀티샘플링에서, 픽셀은 수개의 위치들에서 샘플링된다. 예를 들어, 4xAA 멀티샘플링된 이미지에서, 각각의 픽셀에 관해 4개의 샘플들이 취해진다. 픽셀 당 복수의 샘플들을 저장하는 것은, 이미지의 렌더링 동안 복수의 샘플들을 검색해야 하기 때문에, 안티-앨리어싱된 이미지를 저장하기 위해 요구되는 메모리 사용량 측면뿐만 아니라 발생된 추가적인 메모리 트래픽(memory traffic) 측면 양쪽 모두에서, 많은 비용을 필요로 할 수 있다.
더욱이, 대부분의 픽셀들의 경우, 렌더링에서는 실제로 샘플들 중 단지 몇 개만이 사용된다. 본 발명의 실시예들은, 안티-앨리어싱된 샘플들에 근거하여 이미지들이 효과적으로 렌더링되도록, 안티-앨리어싱된 샘플들을 구성하는 것에 관한 것이다. 일 실시예에 따르면, 픽셀의 안티-앨리어싱된 샘플들은 서로 다른 메모리들에 저장된다. 서로 다른 메모리들은 서로 다른 저장 및 액세스 특징들을 가질 수 있다. 서로 다른 메모리들 각각에 저장될 샘플들은, 예를 들어, 샘플이 이미지의 렌더링시에 실제로 사용될 가능성에 근거하여 선택될 수 있다. GPU의 그래픽 메모리와 같은 로컬 메모리(local memory)에 가장 많이 사용되는 샘플들만을 저장함으로써, 더 많은 픽셀들의 샘플들이 그래픽 메모리 내에 수용될 수 있고, 이에 따라, 예를 들어, GPU가 로컬 그래픽 메모리 내에서 렌더링을 위해 요구되는 이미지 데이터 모두에 액세스할 수 있기 때문에, 전체적으로 실행 속도가 증가하게 되고 메모리 트래픽이 감소하게 된다.
다음의 설명에서, 본 발명의 실시예들은 주로 멀티샘플링과 관련하여 설명된다. 그러나, 본 발명의 기술분야에서 숙련된 자들은 AA의 다른 방법들이 또한 사용될 수 있음을 알 것이다.
안티
-
앨리어싱된
픽셀 샘플들의 분할 저장을 위한 시스템
도 1은 본 발명의 실시예에 따른 컴퓨팅 환경을 나타낸다. 예를 들어, 컴퓨팅 환경(100)은 GPU(104)에 결합된 중앙 처리 장치(Central Processing Unit, CPU)(102)를 포함한다. 관련 기술 분야에서 숙련된 자들이 본 명세서에서의 설명을 기반으로 하여 알 수 있는 바와 같이, 본 발명의 실시예들은 제시된 바와 같은 GPU를 하나 이상 포함할 수 있다. GPU(104)는 메모리, 디스플레이 등과 같은 추가적인 컴포넌트들에 결합될 수 있다. GPU(104)는, 그래픽 프로세싱(예컨대, 렌더링) 혹은 디스플레이 태스크(display task)들과 같은 그래픽 관련 태스크들을 CPU(102)로부터 수신한다. 본 발명의 기술 분야에서 통상의 기술을 가진 자들이 이해하는 바와 같이, GPU(104)는, 예시된 바와 같이, 분리된 컴포넌트들(즉, 별개의 디바이스들)일 수 있거나, 혹은 통합된 컴포넌트들(예를 들어, 단일 집적 회로(IC)와 같은 단일 디바이스, 복수의 IC들을 하우징하는 단일 패키지에 통합된 컴포넌트들, 다른 IC들(예컨대, CPU 혹은 노스브리지(Northbridge)에 통합된 컴포넌트들)일 수 있으며, 이와는 다른 것일 수 있다(예컨대, 어떤 상이한 능력(예를 들어, 성능)을 가진 것일 수 있음).
GPU(104)는 커맨드 프로세서(command processor)(112), 메모리 제어기(114), 로컬 그래픽 메모리(local graphics memory)(116), 및 쉐이더 코어(shader core)(118)를 포함할 수 있다. 커맨드 프로세서(112)는 GPU(104)에서의 커맨드 실행을 제어한다. 예를 들어, 커맨드 프로세서(112)는 GPU(104)에서 프로세싱될 커맨드들 및 데이터를 CPU(102)로부터 수신하는 것을 제어 및/또는 조정할 수 있다. 커맨드 프로세서(112)는 또한, 일반적으로 메모리 제어기(114)를 통해, 그래픽 메모리(116) 내에서의 메모리 할당을 제어 및/또는 조정할 수 있다. 메모리 제어기(114)는 데이터의 판독 및 기입을 위해 그래픽 메모리(116)에 액세스하는 것을 제어할 수 있다. 일부 실시예들에서, 메모리 제어기(114)는 또한, 시스템 메모리(108)와 그래픽 메모리(116) 간의 중재를 행할 수 있고, 이에 따라 프로세싱을 위해 필요한 데이터가 시스템 메모리(108) 또는 그래픽 메모리(116)로부터 획득될 수 있다. 메모리 제어기(114), 쉐이더 코어(118) 및/또는 커맨드 프로세서(112)는 픽셀 샘플 저장 위치들을 기록하고 있는 메모리 맵핑(memory mapping)(134)에 액세스할 수 있다. 그래픽 메모리(116)는 일반적으로 고속 랜덤 액세스 메모리(예컨대, 임베디드 DRAM(Embedded DRAM, EDRAM)과 같은 것)이다. 일반적으로, 시스템 메모리와 비교하여 볼 때, 그래픽 메모리(116)는 GPU에 고속으로 액세스할 수 있다. 쉐이더 코어(118)는 그래픽 프로세싱 쓰레드(graphics processing thread)들과 같은 다양한 프로세싱 태스크들을 실행하는 프로세싱 유닛들을 포함한다. 예를 들어, 쉐이더 코어(118) 내의 프로세싱 유닛들은 복수의 단일 명령 복수 데이터(Single Instruction Multiple Data, SIMD) 프로세싱 유닛들을 포함할 수 있다. 쉐이더 코어(118)에서 실행되는 그래픽 프로세싱 쓰레드들은, 버텍스 쉐이더(vertex shaders), 지오메트릭 쉐이더(geometric shaders) 및 픽셀 쉐이더(pixel shaders)와 같은 쉐이더 프로그램들(이것은 때때로 간략히 "쉐이더"로 지칭되기도 함)을 포함할 수 있다. 렌더링 쓰레드들과 같은 다른 그래픽 프로세싱 쓰레드들이 또한 쉐이더 코어(118)에서 실행될 수 있다. 쉐이더 코어(118)에서 실행될 태스크들은 예를 들어, 커맨드 프로세서(112)에 의해 할당될 수 있다.
일 실시예에 따르면, GPU(104)는 또한 다른 모듈(module)들, 예를 들어 렌더링 작업 블록(render operations block, ROP)(120), 텍스처 맵퍼(texture mapper)(122), 분할형 AA 샘플 기입기(split AA sample writer)(124), 및 분할형 AA 샘플 판독기(split AA sample reader)(126)를 포함할 수 있다. ROP(120), 텍스처 맵퍼(122), 분할형 AA 샘플 기입기(124) 및 분할형 AA 샘플 판독기(126)의 로직은 하드웨어, 펌웨어, 소프트웨어 혹은 이들의 조합을 사용하여 구현될 수 있다. ROP(120)는 스크린을 메모리 및/또는 다른 위치에 렌더링하기 위한 로직을 포함한다. 예를 들어, ROP(120)는 이미지를 픽셀 프로세싱 쉐이더의 출력으로부터 메모리에 렌더링하기 위한 로직을 포함할 수 있다. 일 실시예에 따르면, ROP(120)는 픽셀들의 안티-앨리어싱된 샘플들을 메모리에 기입하기 위해 분할형 AA 샘플 기입기(124)를 호출할 수 있다.
텍스처 맵퍼(122)는 메모리에 저장된 멀티샘플링된 샘플들을 사용하여 이미지의 텍스처 맵핑 및/또는 렌더링을 수행하기 위한 로직을 포함한다. 예를 들어, 텍스처 맵퍼(122)는 다양한 라이팅 효과(lighting effects)가 나타나도록 그래픽 오브젝트(graphics object)를 텍스처 맵핑하기 위해 메모리로부터 멀티샘플링된 샘플들을 판독할 수 있다. 안티-앨리어싱된 샘플들의 경우 메모리로부터 4개의 개별적 샘플들을 판독하는 것은, 안티-앨리어싱되지 않은 경우 픽셀 당 단일 샘플만을 판독해야만 하는 것과 비교하여 볼 때, 추가적인 메모리 트래픽을 유발한다. 더욱이, 많은 애플리케이션들은 복수의 렌더링 및 텍스처 맵핑 과정을 포함하는바, 이것은 메모리 트래픽을 증가시키게 된다. 일 실시예에 따르면, 텍스처 맵퍼(122)는 개별적 메모리들에 저장된 멀티샘플링된 샘플들을 판독하기 위해 분할형 AA 샘플 판독기(124)를 호출할 수 있다.
분할형 AA 샘플 기입기(124)는 각각의 픽셀의 안티-앨리어싱된 샘플들의 세트를 (이들을 메모리에 저장하기 전에) 분할하기 위한 로직을 포함한다. 샘플들은 시스템 메모리, 그래픽 메모리, 및/또는 또 다른 메모리에 저장될 수 있다. 샘플들은 다양한 저장 방식에 따라 서로 다른 메모리들에 저장될 수 있다. 샘플들을 그래픽 메모리에 저장함으로써 렌더링 및/또는 텍스처 맵핑을 행할 때 이러한 샘플들에 더 빨리 액세스하게 된다. 도 2는 안티-앨리어싱된 샘플들의 세트에 적용되는, 메모리들 간에 샘플들을 분할하는 것을 예시적으로 나타낸 것이다. 복수의 메모리들 간에 분할된 샘플들을 저장하는 것은 도 2 및 도 3을 참조하여 아래에서 더 설명된다.
분할형 AA 샘플 판독기(126)는 복수의 메모리들 간에 분배된 안티-앨리어싱된 샘플들을 판독하기 위한 로직을 포함한다. 일 실시예에 따르면, 분할형 AA 샘플 판독기(126)는, 픽셀 식별자를 특정하는 그리고 선택에 따라서는 샘플 식별자를 특정하는 입력으로서 하나 이상의 픽셀 샘플들에 대한 요청을 수신하여 그 하나 이상의 샘플들에 대응하는 값들을 리턴(return)하도록 구성된다. 분할형 AA 샘플 판독기(126)는 렌더링을 위해 검색될 샘플들의 개수 및 위치를 결정함으로써 샘플들을 판독하도록 구성될 수 있다. 픽셀 샘플에 대한 요청을 수신하는 경우, 분할형 AA 샘플 판독기(126)는 요청된 픽셀에 대해 판독될 샘플들의 개수를 결정할 수 있고 샘플들을 그래픽 메모리 및/또는 시스템 메모리로부터 검색할지 여부를 결정할 수 있다. 일부 실시예들에서, 얼마나 많은 샘플들이 검색돼야 하는 지의 결정은 픽셀 별로 수행될 있다. 일부 실시예들에서, 얼마나 많은 샘플들이 검색돼야 하는 지의 결정은 프레임 단위로 수행되거나 더 높은 세밀도(level of granularity)로 수행된다. AA 샘플들의 판독은 샘플들이 메모리에 저장될 때 따르게 되는 저장 방식에 의해 영향을 받을 수 있다. AA 샘플들의 판독은 도 2 및 도 3과 관련하여 아래에서 더 설명된다.
컴퓨팅 환경(100)은 또한 시스템 메모리(108)를 포함한다. 시스템 메모리(108)는 GPU(104)와 CPU(102) 간에 전달되는 커맨드들 및 데이터를 보유하는데 사용될 수 있다. 일부 실시예에서, 시스템 메모리는 또한 샘플 저장소(134)를 포함할 수 있다. 그래픽 작업을 이용하여 데이터가 프로세싱된 이후, 프로세싱된 데이터는 GPU(104)에 의해 시스템 메모리에 다시 기입될 수 있다. 예를 들어, 일부 실시예들에서, 그래픽 메모리(116)로부터의 프로세싱된 데이터는, 후속 프로세싱을 위해 사용되기 전에 혹은 스크린(110)과 같은 스크린 상의 디스플레이를 위해 사용되기 전에 시스템 메모리(108)에 기입될 수 있다. 일부 실시예들에서, GPU(104)에서 프로세싱된 프레임 데이터는 디스플레이 엔진(display engine)(109)을 통해 스크린(110)에 기입된다. 디스플레이 엔진(109)은 하드웨어 및/또는 소프트웨어 혹은 이들의 조합으로 구현될 수 있고, 스크린(110)의 특성에 근거하여 데이터의 디스플레이를 최적화하기 위한 기능을 포함할 수 있다. 또 다른 실시예에서, 디스플레이 엔진(109)은 프로세싱된 디스플레이 데이터를 GPU 메모리(116) 및/또는 GPU 메모리(122)로부터 직접 수신할 수 있다.
컴퓨팅 시스템(100)의 다양한 디바이스들이 통신 기반구조(communication infrastructure)(106)에 의해 결합된다. 예를 들어, 통신 기반구조(106)는 주변 장치 상호연결 익스프레스(Peripheral Component Interconnect Express, PCI-E)를 포함하는 하나 이상의 통신 버스들을 포함할 수 있다. 통신 기반구조(106)는 또한 예를 들어, 이더넷(Ethernet), 파이어와이어(Firewire), 혹은 다른 상호연결 디바이스들을 포함할 수 있다.
앞서의 설명에서, GPU(104)는 선별된 컴포넌트들 및 기능들을 포함하는 것으로서 제시되었다. 하지만, 본 발명의 기술분야에서 숙련된 자는, 하나 혹은 양쪽 GPU(104)가 프리미티브 어셈블리(primitive assemblies), 시퀀서(sequencers), 쉐이더 익스포트 메모리(shader export memories), 레지스터(registers) 등과 같은(하지만 이러한 것에만 한정되는 것은 아님) 다른 컴포넌트들을 포함할 수 있다는 것을 이해할 것이다.
도 2는 두 개의 메모리들 간에 샘플들의 예시적인 할당을 나타낸다. 일 실시예에 따르면, 픽셀들의 안티-앨리어싱된 샘플들은 GPU의 그래픽 메모리(116)에 그리고 시스템 메모리(108)에 저장될 수 있다. 각각의 픽셀에 대해, 각각의 메모리에 저장될 샘플들의 세트는, 예를 들어, 샘플이 렌더링에서 실제로 사용될 가능성 및/또는 샘플이 렌더링에서 얼마나 자주 사용될 것 같은가와 같은 다양한 기준에 근거하여 결정될 수 있다. 일 실시예에 따르면, 렌더링을 위해 검색될 가능성이 가장 높은 하나 이상의 샘플들이 GPU 메모리(116)와 같이 상대적으로 더 빠른 메모리에 저장될 수 있고, 다른 샘플들은 시스템 메모리(108)와 같이 상대적으로 더 느린 메모리에 저장될 수 있다. 제시된 예는 픽셀 p의 4개의 샘플들의 예를 나타내는바, 여기서 샘플 0과 샘플 1(즉, (p,0) 및 (p,1))은 GPU 메모리(116)에 저장되고, 반면 샘플 2와 샘플 3(즉, (p,2) 및 (p,3))은 시스템 메모리에 저장된다.
각각의 메모리에 할당된 샘플들은, 예를 들어, 액세스 속도의 향상 및/또는 저장 효율의 향상을 위해, 임의의 방식에 따라 정렬될 수 있다. 일 실시예에 따르면, 각각의 픽셀들의 0번째 샘플이 인접 메모리 블록들에 저장될 수 있고 그 다음에 1번째 샘플이 각각의 블록들 등에 저장될 수 있다. 모든 픽셀들에 대한 특정 샘플 위치의 샘플들을 포함하는 전체 표면이 인접 메모리 영역에 저장될 수 있다. GPU 메모리는 0번째 샘플과 1번째 샘플에 대한 표면들을 저장할 수 있고, 2번째 샘플과 3번째 샘플은 시스템 메모리에 저장될 수 있다. 메모리 맵(134)은, 각각의 표면에 대해, 표면의 베이스 어드레스(base address)를 포함할 수 있고 아울러 표면이 GPU 메모리에 저장되는지 아니면 시스템 메모리에 저장되는지 여부를 포함할 수 있다. 특정 샘플(예를 들어, 픽셀 p의 1번째 샘플)의 위치는 1번째 샘플 표면의 베이스 어드레스, 및 스트라이드(stride)에 근거하여 결정될 수 있다. 예를 들어, 실제 위치는, 1번째 샘플의 베이스 어드레스로부터 p에 의해 늘어난 스트라이드의 오프셋(offset)에 있을 수 있는바, 여기서, 스트라이드는 하나의 샘플에 의해 점유된 메모리 공간에 대응한다. 각각의 저장된 샘플들에 액세스하기 위해 베이스 어드레스 및 스트라이드를 이용함으로써, 메모리 맵(134)이 샘플 위치의 어드레스를 저장하기 위해 필요한 메모리의 양은, 각각의 샘플 위치에 대해 개별 어드레스를 저장하는 것에 비해, 감소하게 된다.
또 다른 실시예의 경우, 각각의 메모리 내에서, 픽셀로부터의 해당 메모리에 할당된 모든 샘플들은 인접 메모리에 저장된다. 예를 들어, 각각의 픽셀의 0번째 샘플과 1번째 샘플이 인접 GPU 메모리에 저장될 수 있고, 2번째 샘플과 3번째 샘플이 인접 시스템 메모리에 저장될 수 있다. 또 다른 실시예에서, 샘플들은 다른 샘플들에 대한 저장 위치에서의 어떤 특정된 관련성 없이 저장될 수 있다. 각각의 메모리에서의 샘플들은 해당 메모리에 가장 적합하도록 저장 및 구성될 수 있다. 각각의 샘플들의 어드레스들은, 메모리 맵 내에 저장될 각각의 메모리 위치의 전체 어드레스를 요구하지 않는 방식으로, 메모리 맵(134) 내에서 특정될 수 있다.
안티
-
앨리어싱된
픽셀 샘플들의 분할 저장을 위한 방법
도 3은 본 발명의 실시예에 따른, 픽셀들의 각각의 안티-앨리어싱된 샘플들을 복수의 메모리들 간에 분할 저장하는 프로세스를 나타낸 흐름도이다. 단계(302)에서, 샘플들이 각각의 메모리에 저장될 때 따르게 되는 비율이 결정된다. 일 실시예에 따르면, GPU 메모리와 시스템 메모리에 각각 저장될 샘플들의 개수가 결정된다. GPU 메모리에 저장될 샘플들의 개수는, GPU 메모리의 크기, 샘플 크기, 각각의 표면의 크기, (저장될 표면들에 대한) 서로 다른 이미지들 및/또는 스크린들의 개수 등과 같은 다양한 인자들에 근거하여 결정될 수 있다. 일반적으로, 각각의 이미지 및/또는 스크린에 대해, 가장 빈번하게 사용될 것으로 예측되는 샘플들에 대응하는 표면들을 저장하는 것이 바람직하다. 일 실시예에 따르면, 동시에 사용되는 각각의 이미지 및/또는 스크린에 대해, 0번째 샘플 표면과 1번째 샘플 표면이 GPU 메모리에 저장될 수 있고, 다른 샘플들은 시스템 메모리에 저장될 수 있다.
단계(304)에서, AA 이미지가 메모리에 렌더링된다. 일 실시예에서, 멀티샘플 안티-앨리어싱된 이미지는, 단계(302)에서 결정된 비율과 같은 사전에 결정된 기준에 따라, 각각의 픽셀의 샘플들의 세트를 GPU 메모리와 시스템 메모리 간에 분할함으로써, 메모리에 렌더링된다. 예를 들어, ROP가 이미지를 렌더링하는 렌더 타겟(render target)은, 각각의 픽셀에 대한 멀티샘플 샘플 식별자에 근거하여, GPU 메모리와 시스템 메모리 간에 분할될 수 있다.
단계(306)에서, 이미지를 메모리에 렌더링하는 동안, 이미지의 각각의 픽셀의 하나 이상의 멀티샘플 샘플들이 GPU 메모리 내에서 각각의 표면들에 렌더링된다. GPU 메모리에 렌더링될 샘플들의 개수는, 예를 들어, 상기 단계(302)에 따라 결정될 수 있다. GPU 메모리 내에 렌더링 및/또는 텍스처 맵핑을 위해 가장 빈번하게 사용되는 샘플들을 저장하는 것이 바람직하다(이에 따라, 각각의 샘플들은, 최종 이미지를 스크린에 렌더링할 때 일어나는 하나 이상의 렌더링 및 텍스처 맵핑 과정 동안 이러한 샘플들이 액세스될 때, 효과적으로 액세스될 수 있게 됨). 각각의 샘플들이 렌더링되는 메모리 어드레스는, 예를 들어, GPU 메모리 내에서의 대응하는 표면의 베이스 어드레스 및 렌더링되는 픽셀의 식별자에 근거하여, 결정될 수 있다. 예를 들어, 4xAA 멀티샘플링에서 발생된 4개의 샘플들 각각에 대응하여, 개별 표면이 GPU 메모리 혹은 시스템 메모리 내에 저장될 수 있다. 특정 픽셀로부터의 샘플의 대응하는 표면 내에서의 위치는, 각각의 샘플의 크기 및 픽셀의 수치적 순차 식별자에 근거하여 결정될 수 있다.
또 다른 실시예에서, 각각의 픽셀에 대해, GPU 메모리에 저장된 샘플들의 개수는, 해당하는 특정 픽셀의 특성에 따라, 단계(302)에서 결정된 비율과 다를 수 있거나 혹은 동일할 수 있다. 예를 들어, 일 애플리케이션에서는, 디스플레이될 이미지의 특정 부분들 및/또는 픽셀들이 수개의 렌더링 및 텍스처 과정에 놓이도록 하고 이에 따라 이러한 픽셀들의 샘플들이 GPU 메모리 내에 저장되도록 결정할 수 있다. 각각의 픽셀들에 대해 서로 다른 개수의 샘플들이 저장될 수 있는 실시예에서, 샘플들의 저장 및 저장된 샘플들에 대한 액세스는 더 복잡하게 될 수 있지만, 성능 효율이 획득될 수 있다. 또 다른 실시예에서, 시스템 메모리에 저장되는 샘플들 중 하나 이상의 샘플들은 또한, 선택된 픽셀들에 대한 GPU 메모리에 저장될 수 있다. 이러한 선택적으로 저장된 샘플들을 포함하는 하나 이상의 표면들은 GPU 메모리 내에서 유지될 수 있고, 그리고 이러한 선택적으로 저장된 샘플들을 적절하게 액세스하기 위해 메모리 맵핑 기능이 구현될 수 있다.
단계(308)에서, 이미지를 메모리에 렌더링하는 동안, 이미지의 각각의 픽셀들의 하나 이상의 멀티샘플 샘플들이 시스템 메모리 내에서 대응하는 표면들에 렌더링된다. 시스템 메모리에 렌더링될 샘플들의 개수는, 예를 들어, 상기 단계(302)에 따라 결정될 수 있다. 시스템 메모리에 저장되는 샘플들은 바람직하게는, 앞서 설명된 바와 같이, GPU 메모리에 저장된 것들보다 덜 빈번하게 액세스된다. 각각의 샘플들이 렌더링되는 메모리 어드레스는, 예를 들어, 시스템 메모리 내에서의 대응하는 표면의 베이스 어드레스 및 렌더링되는 픽셀의 식별자에 근거하여, 결정될 수 있다. 예를 들어, 앞서 설명된 바와 같이, 4xAA 멀티샘플링에서 발생된 4개의 샘플들 각각에 대응하여, 개별 표면이 GPU 메모리 혹은 시스템 메모리 내에 저장될 수 있다. 특정 픽셀로부터의 샘플의 대응하는 표면 내에서의 위치는, 각각의 샘플의 크기 및 픽셀의 순차적 수치 식별자에 근거하여 결정될 수 있다.
단계(306)와 단계(308)는, 이미지의 각각의 픽셀에 대해 대응하는 메모리들 내에 각각의 샘플들을 저장하기 위해, 순차적으로 혹은 병렬로 일어날 수 있다. 단계(308)의 끝부분에서, 일 실시예에 따르면, 이미지의 모든 픽셀들에 대한 각각의 픽셀의 복수의 샘플들은 GPU 메모리 및 시스템 메모리 내에서 대응하는 표면들에 저장된다.
단계(310)에서, 판독될 픽셀이 결정된다. 픽셀의 판독은, 멀티샘플링된 안티-앨리어싱 렌더 타겟의 초기 렌더링(단계(304)-단계(308))과 스크린 상의 이미지의 디스플레이 사이에 일어나는 하나 이상의 렌더링 및 텍스처 맵핑 과정들 중 임의의 과정 동안 일어날 수 있다. 예를 들어, 픽셀은 디스플레이 이미지를 렌더링하기 위한 분해 작업(resolve operation)의 일부로서 판독될 수 있다. 많은 애플리케이션들은, 라이팅 효과와 같은 다양한 효과 및 복합적인 이미지를 렌더링하기 위해 복수의 렌더링 및 텍스처 맵핑 과정들을 실행한다. 일 실시예에 따르면, 멀티샘플링된 안티-앨리어싱된 렌더 타겟으로부터의 렌더링 동안, 이미지의 픽셀들은 좌측에서 우측 그리고 위에서 아래로 진행하는 래스터 스캔 패턴(raster scan pattern)으로 판독된다.
단계(312)에서, 선택된 픽셀에 대해 판독될 샘플이 결정된다. 멀티샘플링된 안티-앨리어싱된 렌더 타겟으로부터의 렌더링 동안, 각각의 픽셀에 대해, 어떤 샘플들이 디스플레이 이미지를 렌더링할 때 사용돼야 하는지가 결정될 수 있다. 픽셀에 대해 디스플레이될 샘플들의 개수는, 예를 들어, 픽셀에 접촉(touch)하는 오브젝트의 개수, 픽셀이 임의의 단일 픽셀에 의해 덮여있는지 여부, 및 각각의 오브젝트가 픽셀에 접촉하는 깊이와 같은 다양한 기준에 근거하여 결정될 수 있다. 예를 들어, 4xAA 멀티샘플링에서, 만약 픽셀이 단일 오브젝트에 의해 전체적으로 덮여있다면, 단지 하나의 샘플만이 해당 픽셀을 디스플레이 이미지에 렌더링하기 위해 판독될 필요가 있다. 만약 하나의 오브젝트가 픽셀에 접촉하고 있지만 덮지는 않는 경우라면, 해당 픽셀을 디스플레이 이미지에 렌더링하기 위해 두 개의 샘플들이 판독될 수 있다. 마찬가지로, 픽셀에 접촉하는 오브젝트들 및 이러한 오브젝트들의 가시성(visibility)에 근거하여 3개의 샘플을 판독할지 아니면 4개의 샘플을 판독할지 여부가 결정될 수 있다.
단계(314)에서, 각각의 샘플에 대해, 샘플이 GPU 메모리 내에 저장되어 있는지 아니면 시스템 메모리 내에 저장되어 있는지 여부가 결정된다. 샘플이 어느 메모리에 위치하는 지에 관한 결정은, GPU 메모리에 저장된 샘플들의 개수를 표시하는 사전에 결정된 파라미터에 근거할 수 있다. 예를 들어, 단계(302)에서 결정된 바와 같이, 임의의 픽셀에 대한 0번째 샘플 및 1번째 샘플이 GPU 메모리 내에서 액세스될 수 있고, 다른 샘플들은 시스템 메모리 내에서 액세스될 수 있다. 또 다른 실시예에서, 이러한 결정은 픽셀 별 동적 기준에 근거할 수 있다. 예를 들어, 앞에서 단계(306)와 관련하여 설명된 바와 같이, 선택된 픽셀들은 GPU 메모리에 저장되는 다른 개수의 샘플들을 가질 수 있다.
단계(314)에서의 결정에 근거하여, 샘플은 (단계(316)에서) GPU 메모리 내에서 액세스되거나, 혹은 (단계(318)에서) 시스템 메모리 내에서 액세스된다. 샘플이 위치하고 있는 메모리 어드레스는, 샘플에 대응하는 표면의 베이스 어드레스 및 해당 표면 내의 오프셋에 근거할 수 있다. 각각의 표면에 대한 베이스 어드레스는, 샘플들을 메모리에 할당 및/또는 기입할 때 사전에 구성될 수 있고 그리고/또는 사전에 결정될 수 있다. 오프셋은 저장된 샘플의 크기에 기반을 둔 알려진 스트라이드, 그리고 래스터 스캔 액세스 패턴의 시퀀스에서 픽셀을 식별하는 수치적 식별자에 근거하여 결정될 수 있다. 또 다른 실시예에서, 개개의 샘플들에 위치는 메모리 내에서 해당 샘플의 위치를 특정하는 메모리 맵핑에 근거하여 결정될 수 있다. 예를 들어, 각각의 픽셀에 대해 서로 다른 개수의 샘플들이 저장될 수 있는 실시예들에서, 특정 샘플들의 위치를 식별하기 위해 메모리 맵이 사용될 수 있다.
단계(320)에서는, 렌더 타겟에 저장돼야 할 샘플들이 더 있는지 여부가 결정된다. 예를 들어, 4xAA 멀티샘플링에서, 각각의 픽셀에 대해, 4개의 샘플들이 렌더 타겟에 저장될 수 있다. 저장돼야 할 샘플들이 더 있다면, 방법(300)은 단계(312)로 리턴한다. 만약 현재 픽셀에 대해 저장돼야 할 샘플들이 더 없다면, 방법(300)은 단계(322)로 진행한다.
단계(322)에서, 현재 픽셀이 현재 이미지에서 본 방법(300)으로 프로세싱될 마지막 픽셀인지 여부가 결정된다. 만약 "예"라면, 방법(300)은 완료된다. 만약 현재 픽셀이 렌더링 타겟에 렌더링될 현재 이미지에서의 마지막 픽셀이 아니라면, 본 방법(300)에서의 프로세싱은 단계(310)로 리턴한다.
본 발명의 실시형태들을 수행하기 위해 로직(logic)에 의해 실행되는 명령들은, 다양한 프로그래밍 언어(예를 들어, C, C++, 어셈블리, 및/또는 하드웨어 기술 언어(Hardware Description Language, HDL))로 코딩될 수 있고, 아울러 로직 혹은 다른 디바이스에 의해 실행될 수 있는 오브젝트 코드(object code)로 컴파일링될 수 있다.
앞서 설명된 실시예들은, 베리로그(Verilog), RTL, 넷리스트(netlists) 등과 같은 하드웨어 기술 언어로 기술될 수 있고, 그리고 이러한 기술(description)들은, 본 명세서에서 설명되는 바와 같은 본 발명의 실시형태들을 구현하는 하나 이상의 하드웨어 디바이스들을 발생시키기 위해, 마스크워크(maskworks)/포토마스크(photomasks)의 생성을 통해 제조 공정을 궁극적으로 구성하는데 사용될 수 있다.
본 발명의 실시형태들은 컴퓨터 판독가능 매체에 전체적으로 혹은 부분적으로 저장될 수 있다. 컴퓨터 판독가능 매체에 저장된 명령들은 프로세서로 하여금 본 발명의 실시예들을 전체적으로 혹은 부분적으로 수행하도록 할 수 있다.
본 발명은 특정 기능들 및 이들의 관계의 구현을 나타내는 기능적 빌딩 블록들의 도움을 받아 앞서 설명되었다. 이러한 기능적 빌딩 블록들의 범위는 설명의 편의를 위해 본 명세서에서 임의적으로 정의되었다. 특정 기능들 및 이들의 관계가 적절하게 수행되는 한 다른 범위가 정의될 수 있다.
본 발명의 다양한 실시예들이 앞서 설명되었지만, 이들은 비한정적 의미로 단지 예시적으로 제공되었음을 이해해야 한다. 본 발명의 사상 및 범위를 벗어남이 없이 그 형태 및 세부적 사항에서 다양한 변경이 행해질 수 있음은 관련 기술분야에서 숙련된 자들에게는 명백할 것이다. 따라서, 본 발명의 범위 및 영역은 앞서 설명된 예시적 실시예들 중 어느 하나에 의해 한정돼서는 안 되며, 단지 다음의 특허청구범위 및 그 등가물에 따라서만 정의돼야 한다.
특정 실시예들의 앞서의 설명은, 본 발명의 일반적 성질을 매우 충분히 개시하고 있어, 다른 사람들은, 본 발명의 기술분야에서 숙련된 자의 지식 범위 내에 있는 지식을 적용함으로써, 과도한 실험 없이, 본 발명의 전체적 개념으로부터 벗어남이 없이, 다양한 애플리케이션에 대해 이러한 특정 실시예들을 쉽게 수정 및/또는 조정할 수 있다. 따라서, 이러한 조정 및 수정은, 본 명세서에서 제공되는 가르침 및 지침에 근거하여, 본 명세서에서 개시되는 실시예들의 등가물의 의미 및 범위 내에 있게 된다. 본 명세서에서의 어구 혹은 용어는 한정의 목적이 아닌 설명의 목적으로 사용되었고, 이에 따라 본 명세서에서의 용어 혹은 어구는 본 명세서의 가르침 및 지침을 고려하여 숙련된 당업자에 의해 해석돼야 하는 그러한 것임을 이해해야 한다.
Claims (27)
- 안티-앨리어싱된 이미지(anti-aliased image)로부터의 픽셀(pixel)을 렌더링(rendering)하는 방법으로서,
상기 픽셀의 안티-앨리어싱된 샘플들을 제 1 세트 및 제 2 세트로 분할하는 단계와, 상기 제 1 세트와 상기 제 2 세트는 상호 배타적인 세트들이고, 상기 제 1 세트와 상기 제 2 세트에서의 샘플들은 서로 다른 샘플들이며;
상기 픽셀의 안티-앨리어싱된 샘플들의 상기 제 1 세트 및 상기 제 2 세트를 제 1 메모리 및 제 2 메모리에 각각 저장하는 단계와; 그리고
상기 제 1 세트로부터의 결정된 개수의 샘플들을 렌더링하거나 혹은 상기 제 1 세트와 상기 제 2 세트로부터의 결정된 개수의 샘플들을 렌더링하는 단계를 포함하는 것을 특징으로 하는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 방법. - 제1항에 있어서,
상기 제 1 세트에서의 샘플들의 개수는 사전에 결정되는 것을 특징으로 하는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 방법. - 제1항에 있어서,
상기 제 1 세트에서의 샘플들의 개수는 상기 이미지의 특성에 근거하여 결정되는 것을 특징으로 하는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 방법. - 제1항에 있어서,
상기 제 1 세트에서의 샘플들의 개수는 샘플의 크기 및 상기 제 1 메모리의 크기에 근거하여 결정되는 것을 특징으로 하는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 방법. - 제1항에 있어서,
상기 렌더링될 샘플들의 개수는 상기 픽셀에 접촉(touch)하는 오브젝트(object)들에 근거하여 결정되는 것을 특징으로 하는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 방법. - 제1항에 있어서,
상기 제 1 메모리는 상기 제 2 메모리보다 더 빠른 속도로 프로세서에 의해 액세스가능한 것을 특징으로 하는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 방법. - 제1항에 있어서,
상기 제 1 메모리는 그래픽 프로세서 유닛(Graphics Processor Unit, GPU)에 결합되는 그래픽 메모리이고, 상기 제 2 메모리는 시스템 메모리인 것을 특징으로 하는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 방법. - 제1항에 있어서,
상기 안티-앨리어싱된 샘플들은 멀티샘플링(multisampling)된 것을 특징으로 하는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 방법. - 제1항에 있어서,
상기 렌더링하는 단계는, 상기 결정된 개수의 샘플들이 렌더링될 때까지, 사전에 결정된 시퀀스(predetermined sequence)에 따라, 상기 제 1 세트로부터의 샘플들을 렌더링하고 후속하여 선택적으로 상기 제 2 세트로부터의 샘플들을 렌더링하는 것을 포함하는 것을 특징으로 하는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 방법. - 제9항에 있어서,
상기 제 2 세트로부터의 샘플들은, 상기 제 1 세트가 상기 결정된 개수의 샘플들보다 적은 수의 샘플들을 갖는 경우에, 렌더링되는 것을 특징으로 하는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 방법. - 제1항에 있어서,
상기 샘플들 각각은 각각의 표면(surface)에 저장되는 것을 특징으로 하는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 방법. - 제1항에 있어서,
상기 렌더링될 샘플들의 개수를 결정하는 단계를 더 포함하는 것을 특징으로 하는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 방법. - 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 시스템으로서,
프로세서와;
상기 프로세서에 결합되는 제 1 메모리 및 제 2 메모리와; 그리고
분할형 안티-앨리어싱 샘플 기입기(split anti-aliased sample writer)를 포함하여 구성되며,
상기 분할형 안티-앨리어싱 샘플 기입기는,
상기 픽셀의 안티-앨리어싱된 샘플들을 제 1 세트 및 제 2 세트로 분할하도록 되어 있고; 그리고
상기 제 1 세트 및 상기 제 2 세트를 상기 제 1 메모리 및 상기 제 2 메모리에 각각 저장하도록 되어 있으며,
상기 제 1 세트와 상기 제 2 세트는 상호 배타적인 세트들이고, 상기 제 1 세트와 상기 제 2 세트에서의 샘플들은 서로 다른 샘플들인 것을 특징으로 하는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 시스템. - 제13항에 있어서,
상기 제 1 세트로부터의 결정된 개수의 샘플들을 렌더링하거나 혹은 상기 제 1 세트와 상기 제 2 세트로부터의 결정된 개수의 샘플들을 렌더링하도록 되어 있는 분할형 안티-앨리어싱 샘플 판독기(split anti-aliased sample reader)를 더 포함하는 것을 특징으로 하는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 시스템. - 제14항에 있어서,
상기 분할형 안티-앨리어싱 샘플 판독기는 또한, 상기 렌더링될 샘플들의 개수를 결정하도록 되어 있는 것을 특징으로 하는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 시스템. - 제15항에 있어서,
상기 분할형 안티-앨리어싱 샘플 판독기는 또한, 상기 결정된 개수의 샘플들까지, 사전에 결정된 시퀀스에 따라, 상기 제 1 세트로부터의 샘플들을 렌더링하고 후속하여 선택적으로 상기 제 2 세트로부터의 샘플들을 렌더링하도록 되어 있는 것을 특징으로 하는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 시스템. - 제16항에 있어서,
상기 제 2 세트로부터의 샘플들은, 상기 제 1 세트가 상기 결정된 개수의 샘플들보다 적은 수의 샘플들을 갖는 경우에, 렌더링되는 것을 특징으로 하는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 시스템. - 제13항에 있어서,
상기 제 1 메모리는 그래픽 프로세서 유닛(GPU)에 결합되는 그래픽 메모리이고, 상기 제 2 메모리는 시스템 메모리인 것을 특징으로 하는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 시스템. - 제13항에 있어서,
상기 제 1 메모리는 상기 제 2 메모리보다 더 빠른 액세스 속도를 갖도록 되어 있는 것을 특징으로 하는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 시스템. - 비일시적 컴퓨터 판독가능 매체로서,
상기 컴퓨터 판독가능 매체에는 명령들이 저장되어 있고, 상기 명령들이 실행되는 경우 상기 명령들은 적어도 하나의 프로세서를 사용하여, 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하도록 되어 있고,
상기 적어도 하나의 프로세서는,
상기 픽셀의 안티-앨리어싱된 샘플들을 제 1 세트 및 제 2 세트로 분할하는 동작과, 상기 제 1 세트와 상기 제 2 세트는 상호 배타적인 세트들이고, 상기 제 1 세트와 상기 제 2 세트에서의 샘플들은 서로 다른 샘플들이며;
상기 픽셀의 복수의 안티-앨리어싱된 샘플들로부터의 샘플들의 상기 제 1 세트 및 상기 제 2 세트를 제 1 메모리 및 제 2 메모리에 각각 저장하는 동작과; 그리고
상기 제 1 세트로부터의 결정된 개수의 샘플들을 렌더링하거나 혹은 상기 제 1 세트와 상기 제 2 세트로부터의 결정된 개수의 샘플들을 렌더링하는 동작을
포함하는 동작들을 수행하는 것을 특징으로 하는 비일시적 컴퓨터 판독가능 매체. - 제20항에 있어서,
상기 동작들은 또한, 상기 결정된 개수의 샘플들이 렌더링될 때까지, 사전에 결정된 시퀀스에 따라, 상기 제 1 세트로부터의 하나 이상의 샘플들을 렌더링하고 후속하여 선택적으로 상기 제 2 세트로부터의 샘플들을 렌더링하는 동작을 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독가능 매체. - 제20항에 있어서,
상기 제 2 세트로부터의 샘플들은, 상기 제 1 세트가 상기 결정된 개수의 샘플들보다 적은 수의 샘플들을 갖는 경우에, 렌더링되는 것을 특징으로 하는 비일시적 컴퓨터 판독가능 매체. - 제22항에 있어서,
상기 제 1 메모리는 그래픽 프로세서 유닛(GPU)에 결합되는 그래픽 메모리이고, 상기 제 2 메모리는 시스템 메모리인 것을 특징으로 하는 비일시적 컴퓨터 판독가능 매체. - 제1항에 있어서,
상기 제 1 세트와 상기 제 2 세트에서의 샘플들 간의 차이는 상기 제 1 메모리 혹은 상기 제 2 메모리의 특성에 근거하고 있는 것을 특징으로 하는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 방법. - 제24항에 있어서,
상기 특성은 상기 메모리들 중 어느 한쪽 메모리의 저장 크기 혹은 액세스 속도인 것을 특징으로 하는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 방법. - 제1항에 있어서,
상기 제 1 세트와 상기 제 2 세트에서의 샘플들 간의 차이는 상기 제 1 세트에서의 샘플 혹은 상기 제 2 세트에서의 샘플의 특성에 근거하고 있는 것을 특징으로 하는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 방법. - 제26항에 있어서,
상기 특성은 샘플이 이미지의 렌더링시에 실제로 사용될 가능성인 것을 특징으로 하는 안티-앨리어싱된 이미지로부터의 픽셀을 렌더링하는 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US36570310P | 2010-07-19 | 2010-07-19 | |
US61/365,703 | 2010-07-19 | ||
PCT/US2011/044563 WO2012012451A1 (en) | 2010-07-19 | 2011-07-19 | Split storage of anti-aliased samples |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130141445A KR20130141445A (ko) | 2013-12-26 |
KR101824665B1 true KR101824665B1 (ko) | 2018-02-01 |
Family
ID=44629206
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137004196A KR101824665B1 (ko) | 2010-07-19 | 2011-07-19 | 안티-앨리어싱된 샘플들의 분할 저장 |
Country Status (6)
Country | Link |
---|---|
US (2) | US20120013624A1 (ko) |
EP (1) | EP2596471B1 (ko) |
JP (1) | JP5808407B2 (ko) |
KR (1) | KR101824665B1 (ko) |
CN (1) | CN103003839B (ko) |
WO (1) | WO2012012451A1 (ko) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9953455B2 (en) * | 2013-03-13 | 2018-04-24 | Nvidia Corporation | Handling post-Z coverage data in raster operations |
US9299181B2 (en) | 2013-08-28 | 2016-03-29 | Qualcomm Incorporated | Target independent stenciling in graphics processing |
US9747658B2 (en) * | 2013-09-06 | 2017-08-29 | Apple Inc. | Arbitration method for multi-request display pipeline |
US9230363B2 (en) * | 2013-09-11 | 2016-01-05 | Nvidia Corporation | System, method, and computer program product for using compression with programmable sample locations |
US9230362B2 (en) * | 2013-09-11 | 2016-01-05 | Nvidia Corporation | System, method, and computer program product for using compression with programmable sample locations |
US9437040B2 (en) * | 2013-11-15 | 2016-09-06 | Nvidia Corporation | System, method, and computer program product for implementing anti-aliasing operations using a programmable sample pattern table |
CN105225264B (zh) * | 2014-06-27 | 2020-11-10 | 三星电子株式会社 | 基于运动的自适应渲染 |
KR102251444B1 (ko) | 2014-10-21 | 2021-05-13 | 삼성전자주식회사 | 그래픽 프로세싱 유닛, 이를 포함하는 그래픽 프로세싱 시스템, 및 이를 이용한 안티 에일리어싱 방법 |
US10169887B2 (en) * | 2016-06-10 | 2019-01-01 | Apple Inc. | Accelerated blits of multisampled textures on GPUs |
US10163184B2 (en) * | 2016-08-17 | 2018-12-25 | Adobe Systems Incorporated | Graphics performance for complex user interfaces |
CN111798365B (zh) * | 2020-06-12 | 2023-09-01 | 完美世界(北京)软件科技发展有限公司 | 深度抗锯齿数据读取方法、装置、设备和存储介质 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4148377B2 (ja) * | 1997-10-28 | 2008-09-10 | 松下電器産業株式会社 | 画像生成装置、画像生成方法、画像生成プログラム記録媒体、画像合成装置、画像合成方法、および画像合成プログラム記録媒体 |
WO1999041706A1 (en) * | 1998-02-17 | 1999-08-19 | Sun Microsystems, Inc. | Graphics system with variable resolution super-sampling |
US6483504B1 (en) * | 1998-02-17 | 2002-11-19 | Sun Microsystems, Inc. | Graphics system having a super sampled-sample buffer with efficient storage of sample position information |
US6188394B1 (en) * | 1998-08-28 | 2001-02-13 | Ati Technologies, Inc. | Method and apparatus for video graphics antialiasing |
US6429876B1 (en) * | 1998-08-28 | 2002-08-06 | Ati International Srl | Method and apparatus for video graphics antialiasing with memory overflow optimization |
US6795081B2 (en) * | 2001-05-18 | 2004-09-21 | Sun Microsystems, Inc. | Sample cache for supersample filtering |
US6967663B1 (en) * | 2003-09-08 | 2005-11-22 | Nvidia Corporation | Antialiasing using hybrid supersampling-multisampling |
GB0426170D0 (en) * | 2004-11-29 | 2004-12-29 | Falanx Microsystems As | Processing of computer graphics |
US7511717B1 (en) * | 2005-07-15 | 2009-03-31 | Nvidia Corporation | Antialiasing using hybrid supersampling-multisampling |
US8294731B2 (en) * | 2005-11-15 | 2012-10-23 | Advanced Micro Devices, Inc. | Buffer management in vector graphics hardware |
US8212832B2 (en) * | 2005-12-08 | 2012-07-03 | Ati Technologies Ulc | Method and apparatus with dynamic graphics surface memory allocation |
US7564456B1 (en) * | 2006-01-13 | 2009-07-21 | Nvidia Corporation | Apparatus and method for raster tile coalescing |
US8325203B1 (en) * | 2007-08-15 | 2012-12-04 | Nvidia Corporation | Optimal caching for virtual coverage antialiasing |
TWI425440B (zh) * | 2008-07-03 | 2014-02-01 | Nvidia Corp | 複合多重樣本/超樣本抗頻疊 |
-
2011
- 2011-07-19 WO PCT/US2011/044563 patent/WO2012012451A1/en active Application Filing
- 2011-07-19 US US13/186,256 patent/US20120013624A1/en not_active Abandoned
- 2011-07-19 JP JP2013520817A patent/JP5808407B2/ja active Active
- 2011-07-19 CN CN201180035304.6A patent/CN103003839B/zh active Active
- 2011-07-19 KR KR1020137004196A patent/KR101824665B1/ko active IP Right Grant
- 2011-07-19 EP EP11738118.6A patent/EP2596471B1/en active Active
-
2016
- 2016-09-30 US US15/282,336 patent/US9934551B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
CN103003839A (zh) | 2013-03-27 |
US20170018053A1 (en) | 2017-01-19 |
US20120013624A1 (en) | 2012-01-19 |
WO2012012451A1 (en) | 2012-01-26 |
EP2596471B1 (en) | 2016-04-06 |
EP2596471A1 (en) | 2013-05-29 |
JP2013539095A (ja) | 2013-10-17 |
JP5808407B2 (ja) | 2015-11-10 |
KR20130141445A (ko) | 2013-12-26 |
US9934551B2 (en) | 2018-04-03 |
CN103003839B (zh) | 2017-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101824665B1 (ko) | 안티-앨리어싱된 샘플들의 분할 저장 | |
CN106504181B (zh) | 用于处理子图元的图形处理方法和系统 | |
US11263798B2 (en) | Multi-rendering in graphics processing units using render progression checks | |
US8963931B2 (en) | Tiling compaction in multi-processor systems | |
US20200202484A1 (en) | Transformed Geometry Data Cache for Graphics Processing Systems | |
CN106504184B (zh) | 用于处理子图元的图形处理方法和系统 | |
CN107025681B (zh) | 图形处理系统和图形处理方法 | |
KR20190100194A (ko) | 타일식 아키텍처들에서의 포비티드 렌더링 | |
US11830144B2 (en) | Frustum rendering in computer graphics | |
KR20150119803A (ko) | 그래픽 처리 시스템 | |
EP3671650A1 (en) | Primitive block-based rasterization in graphics processing systems | |
US10453168B2 (en) | Techniques for maintaining atomicity and ordering for pixel shader operations | |
CN109584140B (zh) | 图形处理 | |
KR20210066727A (ko) | 그래픽 처리 시스템 | |
US20240112311A1 (en) | Graphics processing systems and methods | |
US20120013629A1 (en) | Reading Compressed Anti-Aliased Images | |
GB2580166A (en) | Primitive block-based rasterization in graphics processing systems | |
GB2580168A (en) | Primitive block generator for graphics processing systems | |
GB2610081A (en) | Primitive block generator for graphics processing systems | |
GB2579155A (en) | Frustum rendering |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |