KR20210117988A - 디커플드 쉐이딩 텍스처 렌더링을 위한 방법 및 장치 - Google Patents

디커플드 쉐이딩 텍스처 렌더링을 위한 방법 및 장치 Download PDF

Info

Publication number
KR20210117988A
KR20210117988A KR1020210036800A KR20210036800A KR20210117988A KR 20210117988 A KR20210117988 A KR 20210117988A KR 1020210036800 A KR1020210036800 A KR 1020210036800A KR 20210036800 A KR20210036800 A KR 20210036800A KR 20210117988 A KR20210117988 A KR 20210117988A
Authority
KR
South Korea
Prior art keywords
texture
coverage
data
rendering
image
Prior art date
Application number
KR1020210036800A
Other languages
English (en)
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 KR20210117988A publication Critical patent/KR20210117988A/ko

Links

Images

Classifications

    • 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/04Texture mapping
    • 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
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10024Color image

Landscapes

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

Abstract

그래픽스 처리 시스템에서 이미지를 렌더링하는 방법은, 렌더링 파이프라인을 이용하여 이미지 커버리지 패스 동안에 이미지의 적어도 일부를 위한 텍스처 커버리지 데이터를 계산하는 단계, 상기 렌더링 파이프라인의 하나 이상의 하드웨어 자원을 이용하여 텍스처 커버리지 데이터를 기반으로 텍스처 스페이스에서 텍스처 렌더링 패스 동안에 렌더드 텍스처 데이터를 발생시키는 단계, 및 상기 렌더링 파이프라인을 이용하여 상기 렌더드 텍스처 데이터를 기반으로 상기 이미지를 렌더링하는 단계를 포함할 수 있다. 그래픽스 처리 시스템은, 디커플드 쉐이딩을 지원하도록 구성된 렌더링 파이프라인을 포함할 수 있으며, 상기 파이프라인은 이미지를 위한 텍스처 커버리지 데이터를 수신하도록 구성된 데이터 버퍼, 및 상기 데이터 버퍼로부터 상기 텍스처 커버리지 데이터를 리딩하고, 상기 이미지를 위한 텍스처 렌더링 패스 동안에 래스터화 커버리지를 한정하기 위해 상기 텍스처 커버리지 데잉터를 이용하도록 구성된 래스터화 유닛을 포함할 수 있다.

Description

디커플드 쉐이딩 텍스처 렌더링을 위한 방법 및 장치{METHODS AND APPARATUS FOR DECOUPLED SHADING TEXTURE RENDERING}
본 개시는 일반적으로 그래픽스 처리에 관한 것으로서, 더욱 상세하게는 디커플드 쉐이딩 과정에서 텍스처들을 렌더링하기 위한 방법들 및 장치에 관한 것이다.
그래픽스 처리 유닛(GPU)은 이미지들이 실시간 렌더링을 위한 쉐이더들을 이용할 수 있다. 쉐이딩 작업은 많은 양의 컴퓨팅 및/또는 파워 소모와 연관될 수 있다. 성능 및/또는 효율을 개선하기 위해, 렌더링 기법들은, 파이널 이미지에서 보이지 않을 수 있는 오브젝트들 또는 표면들을 확인하고, 보이는 오브젝트들 또는 표면들만 쉐이딩하여 쉐이딩 작업을 감소를 시도한다. 디커플드 쉐이딩 기법에서, 보이는 작업은 쉐이딩 작업과 별도로 수행될 수 있다.
본 개시의 목적은 디커플드 쉐이딩 과정에서 텍스처들을 렌더링하기 위한 방법들 및 장치를 제공하는 것이다.
그래픽스 처리 시스템에서 이미지를 렌더링하는 방법은, 렌더링 파이프라인을 이용하여 이미지 커버리지 패스 동안에 이미지의 적어도 일부를 위한 텍스처 커버리지 데이터를 계산하는 단계, 상기 렌더링 파이프라인의 하나 이상의 하드웨어 자원을 이용하여 텍스처 커버리지 데이터를 기반으로 텍스처 스페이스에서 텍스처 렌더링 패스 동안에 렌더링된 텍스처 데이터를 발생시키는 단계, 및 상기 렌더링 파이프라인을 이용하여 상기 렌더링된 텍스처 데이터를 기반으로 상기 이미지를 렌더링하는 단계를 포함할 수 있다. 상기방법은 상기 렌더링 파이프라인의 하드웨어 리소스에 상기 텍스처 커버리지 데이터의 적어도 일부를 저장하는 단계를 더 포함할 수 있다. 상기 텍스처 커버리지 데이터는 색상 처리 유닛에 저장될 수 있다. 상기 텍스처 커버리지 데이터는 타일 버퍼에 저장될 수 있다. 상기 텍스처 커버리지 데이터는 멀티플 렌더 타겟(MRT)에 저장될 수 있다. 상기 MRT에 저장된 상기 텍스처 커버리지 데이터는 다수의 커버리지를 포함할 수 있다. 상기 텍스처 커버리지 데이터를 2개 이상의 텍스처를 위해 계산될 수 있다. 상기 2개의 텍스처들은 독립적으로 전달될 수 있다. 상기 텍스처 커버리지 데이터의 적어도 일부는 상기 2개의 텍스처를 위한 공통 위치 데이터를 포함할 수 있다. 상기 텍스처 커버리지 데이터는 상기 텍스처 렌더링 패스 동안에 서바이빙 래스터화(rasterization) 커버리지를 한정하기 위해 이용될 수 있다.
그래픽스 처리 시스템은, 디커플드 쉐이딩을 지원하도록 구성된 렌더링 파이프라인을 포함할 수 있으며, 상기 파이프라인은 이미지를 위한 텍스처 커버리지 데이터를 수신하도록 구성된 데이터 버퍼, 및 상기 데이터 버퍼로부터 상기 텍스처 커버리지 데이터를 리딩하고, 상기 이미지를 위한 텍스처 렌더링 패스 동안에 래스터화 커버리지를 한정하기 위해 상기 텍스처 커버리지 데이터를 이용하도록 구성된 래스터화 유닛을 포함할 수 있다. 상기 래스터화 유닛은 2개 이상의 세트의 텍스처 커버리지 데이터를 이용하도록 구성될 수 있다. 상기 래스터화 유닛은 단지 더 늦은 프레임에 의해 요구되는 추가적인 커버리지를 추가하기 위해 커버리지를 한정하도록 상기 2개의 세트의 텍스처 커버리지 데이터를 이용하도록 구성될 수 있다. 상기 래스터화 유닛은 렌더링이 상기 2개의 래스터화 유닛 중에서 분할되도록 배열된 2개 이상의 래스터화 유닛 중의 하나일 수 있다. 상기 데이터 버퍼는 색상 처리 유닛에 적어도 부분적으로 포함될 수 있다. 상기 데이터 버퍼는 하나 이상의 타일 버퍼 유닛들에 적어도 부분적으로 포함될 수 있다. 상기 렌더링 파이프라인은 타일 기반의 렌더링을 위해 구성될 수 있다.
그래픽스 처리 시스템은, 디커플드 쉐이딩을 지원하도록 구성된 렌더링 파이프라인을 포함할 수 있으며, 상기 파이프라인은 이미지 커버리지 패스 동안에 쉐이더로부터 커버리지 퀴어리를 수신하고, 상기 커버리지 퀴어리에 대한 응답으로 이미지를 위한 텍스처 커버리지 데이터를 컴퓨팅하고, 상기 쉐이더로 상기 텍스처 커버리지 데이터를 리턴시키도록 구성된 텍스처 유닛을 포함할 수 있다. 상기 쉐이더는 픽셀 쉐이더를 포함할 수 있다. 상기 데이터 버퍼는 색상 처리 유닛에 적어도 부분적으로 포함될 수 있다.
본 발명 에 따르면, 디커플드 쉐이딩 과정에서 텍스처들을 효율적으로 렌더링될 수 있다.
도면들이 크기대로 반드시 도시될 필요는 없으며, 유사한 구조들 또는 기능들의 구성요소들은 일반적으로 전 도면들에 걸쳐 도시적 목적으로 유사한 참조번호들에 의해 나타내어진다. 이 도면들은 본원에 기술된 다양한 실시예들의 기술을 용이하게 하는 것을 단지 의도한다. 이 도면들은 본원에 개시된 교시들의 모든 양상을 기술하지 않으며 청구항의 범위를 한정하지 않는다. 도면들의 불명료해지는 것을 방지하기 위해, 모든 부품들, 연결들 등이 도시되지는 않으며, 모든 부품들이 참조번호를 갖지는 않는다. 그러나, 부품 구성들의 패턴들은 도면으로부터 용이하게 명확할 수 있다. 명세서와 함께, 첨부된 도면들은 본 개시의 예시 실시예들을 도시하며, 기술과 함께, 본 개시의 원리들을 설명하는 역할을 한다.
도 1은 본 개시에 따른 렌더링 파이프라인을 이용한 디커플드 쉐이딩을 위한 방법의 실시예를 위한 파이프라인 패스 다이어그램을 도시한다.
도 2는 본 개시에 따른 렌더링 파이프라인을 이용한 디커플드 쉐이딩을 위한 방법의 예시 실시예를 위한 파이프라인 패스 다이어그램을 도시한다.
도 3은 본 개시에 따른 텍스처 커버리지 파이프라인의 실시예를 도시한다.
도 4는 본 발명의 개시에 따라 디커플드 쉐이딩을 지원할 수 있는 렌더링 파이프라인을 위해 사용될 수 있는 파이프라인 하드웨어 부품들의 실시예들을 도시한다.
도 5는 본 개시에 따른 텍스처 컬링 동작을 위한 비트맵 래스터화 디코딩 동작의 예시 실시예를 도시한다.
도 6은 본 개시에 따른 이미징 장치의 실시예를 도시한다.
본 개시에 따른 GPU의 일부 실시예들은 파이널 이미지 렌더링으로부터 쉐이딩 동작들을 분리시키는 디커플드 쉐이딩을 이용할 수 있다. 디커플드 쉐이딩은, 예를 들어, 스크린 스페이스로부터 분리될 수 있는 텍스처 스페이스에서 쉐이딩을 수행하여 구현될 수 있다. 분리된 텍스처 및 스크린 스페이스들의 이용은 텍스처 렌더링과 파이널 이미지 렌더링이 분리된 좌표 시스템들에서, 서로 다른 해상도들에서, 서로 다른 시간 스케일들, 및/또는 등에서 수행될 수 있도록 함으로써 그래픽스 품질, 효율 및/또는 속도를 개선할 수 있다. 예를 들어, 모션 블러 또는 디포커스 블러와 같은 일부 효과들은 컴퓨팅적으로 강력하고 따라서 상대적으로 값비싸고 및/또는 계산이 느릴 수 있다. 그러나, 이러한 효과들은 풀 스크린 해상도로 렌더링될 필요는 없다. 텍스처 스페이스에서 더 낮은 해상도로 이러한 효과들을 위한 데이터를 렌더링하여, 스크린 스페이스에서 풀 해상도로 이들을 렌더링 하는 것에 비해 컴퓨팅적인 워크로드를 감소시킬 수 있다. 다른 예시로서, 라이트 맵과 같은 일부 정보는 프레임들 사이에서 변하지 않을 수 있다. 디커플드 쉐이딩의 이용은 이러한 정보를 위한 계산들이 다수의 프레임들에 의해 재이용될 수 있도록 함으로써 쉐이딩 워크로드를 감소시킬 수 있다.
성능 및/또는 효율을 더 개선하기 위해, 본 개시에 따른 일부 렌더링 기법들은 파이널 이미지에 보이지 않는 텍스처의 일부들 상에서 컴퓨테이션들을 제거하여 렌더링(쉐이딩) 워크를 감소시킬 수 있다. 이는, 예를 들어, 보이는 텍셀들(texels)의 커버리지를 매핑하는 비트맵과 같은 커버리지 데이터 구조를 생성하고, 커버드 텍셀들을 위한 텍스처를 단지 렌더링하여 이루어질 수 있다.
디커플드 쉐이딩 기법을 구현하기 위해, 본 개시에 따른 GPU의 일부 실시예들은 어떤 텍셀들이 텍스처 스페이스에서 렌더링될 필요가 없는지를 결정하기 위해 픽셀 쉐이더를 이용한 스크린 스페이스 패스를 운영할 수 있다. 컴퓨트 쉐이더는 이때 픽셀 쉐이더에 의해 생성된 커버리지 맵을 이용하여 텍스처들을 렌더링할 수 있다. 일부 실시예들에서, 상술한 바와 같은 텍스처 렌더링을 위한 컴퓨트 쉐이더의 이용은 값비싸고, 시간이 소요되고, 및/또는 비효율적인 데이터 이동 및/또는 조작과 연관될 수 있다. 예를 들어, 픽셀 쉐이더는 커버리지를 기록하고 축적하기 위해 값비싸고 및/또는 비효율적인 원자성 동작을 이용할 수 있다. 이 커버리지는 또한 비효율적일 수 있는 특별한 코얼레싱 하드웨어과 연관될 수 있는 스토어 동작들을 이용하여 시스템 메모리에 커버리지 맵으로서 저장될 수 있다. 이 컴퓨트 쉐이더는 이때 시스템 메모리로부터 커버리지 맵을 다시 리딩할 수 있다. 컴퓨트 쉐이더는 버텍스 속성들을 픽셀 쉐이더 속성들에 매핑하기 위해 버텍스 어레이들, 인덱스 어레이들, 속성 어레이들, 및/또는 상태 정보에 액세스하기 위해 많은 양의 캐시 대역폭과 연관될 수 있는 시스템 메모리로부터 프리미티브 및 버텍스 정보를 또한 리딩할 수 있다. 컴퓨트 쉐이더 스레드들은 또한 시스템 메모리로부터 리딩될 구조들로부터 버텍스 속성들을 인터폴레이션할 수 있다. 컴퓨트 쉐이더는 텍스처 렌더링을 위한 소프트웨어 래스터화를 더 구현할 수 있다. 이러한 동작들 중의 어느 것 또는 모두는 많은 양의 쉐이더 계산 사이클들, 메모리 액세스, 파워 소모, 및/또는 등과 연관될 수 있다.
일부 실시예들에서, 본 개시에 따른 GPU는 픽셀 쉐이더들, 버텍스 쉐이더들, 지오미트리 쉐이더들, 및/또는 등뿐 아니라, 래스터화, 속성 데이터 페치, 및/또는 인터폴레이션과 같은 기능들을 수행하기 위해 스페셜라이즈드 하드웨어 리소스들과 같은 특징들을 포함할 수 있는 렌더링 파이프라인을 포함할 수 있다. 본 개시에 따른 일부 실시예들에서, 상술한 바와 같은 하나 이상의 텍스처 커버리지 및/또는 렌더링 동작들은, 적어도 일부, 렌더링 파이프라인 하드웨어를 이용하여 구현될 수 있다. 구현 상세 내용에 따라, 이는 텍스처 커버리지 및/또는 텍스처 렌더링 알고리즘들이 스페셜라이즈드 파이프라인 하드웨어 및/또는 다른 파이프라인 특징들에 의해 제공될 수 있는 효율 및/또는 성능을 이용할 수 있도록 함으로써 성능 및/또는 효율을 개선할 수 있다. 텍스처 커버리지 및/또는 렌더링 알고리즘들의 멀티 패스 특성은 GPU 파이프라인 설계와 잘 맞을 수 있다. 따라서, 일부 실시예들에서, 기존의 파이프라인 설계는 본 개시에 따른 하나 이상의 텍스처 커버리지 및/또는 렌더링 동작들을 구현하도록 용이하게 및/또는 효율적으로 되어질 수 있다. 더욱이, 커버리지 및/또는 렌더링 출력 데이터는 파이프라인 내의 다양한 위치에서 하드웨어에 저장되어, 파이프라인 구성요소들 사이에서의 빠른 데이터 이동을 위해 설계된 스페셜라이즈드 하드웨어를 이용할 수 있다.
도 1은 본 개시에 따른 렌더링 파이프라인을 이용한 디커플드 쉐이딩을 위한 방법의 실시예를 위한 파이프라인 패스 다이어그램을 도시한다. 도 1에 도시된 방법(100)은, 커버리지가 파이널 이미지에 렌더링될 수 있는 텍셀들 및/또는 텍셀 그룹들을 위해 컴퓨팅될 수 있는 이미지 커버리지 패스(102)를 포함할 수 있다. 이 커버리지는, 예를 들어, 커버리지 데이터를 발생시키고 비트맵 또는 다른 커버리지 데이터 구조에 이를 저장할 수 있는 픽셀 쉐이더를 이용하여 컴퓨팅될 수 있다. 이 데이터 구조는, 예를 들어, 적어도 부분적으로 색상 처리 유닛 및/또는 타일 버퍼 유닛과 같은 파이프라인 하드웨어 내의 데이터 버퍼에 저장될 수 있다. 대안적으로, 이 데이터 구조는 시스템 메모리 또는 다른 적절한 위치에 저장될 수 있다. 커버리지는 독립적으로 전달되든지 아니던지 다수의 텍스처들을 위해 발생될 수 있다. 다수의 데이터 구조가 다수의 텍스처를 위해 이용될 수 있거나, 다수의 텍스처가, 예를 들어, 텍셀 스페이스의 동일한 위치(예: u, v 좌표들)에 위치하면, 데이터 구조에서 조합될 수 있다.
방법(100)은 이미지 커버리지 패스에서 발생된 커버리지 데이터의 일부 또는 모두를 기반으로 텍스처 스페이스에 하나 이상의 텍스처가 렌더링된, 즉, 쉐이딩된 텍스처 렌더 패스(104)를 또한 포함할 수 있다. 즉, 커버리지 데이터는 텍스처 렌더링 동안에 서바이빙 래스터화 커버리지를 한정하기 위해 이용될 수 있다. 예를 들어, 커버리지 데이터가 하드웨어 래스터화를 적합하게 하기 위해 이용되어, 파이널 이미지에 포함되면(예를 들어, 단지 포함되면) 텍셀들 및/또는 텍셀들의 블록들이 렌더링될 수 있다.
일부 실시예들에서, 파이프라인, 예를 들어, 래스터화 하드웨어는 다수의 세트의 커버리지를 구현할 수 있다. 예를 들어, 커버리지는 다수의 하드웨어 렌더링 구조들로부터 축적될 수 있으며, 예를 들어, 렌더링이 다수의 하드웨어 렌더링 유닛들 중에서 분할될 때 그러하다. 이러한 구현예에서, 텍스처 커버리지는 일반적으로 파이널 이미지 위치들로부터 독립적일 수 있다. 다른 예시로서, (예를 들어, 새로운 프레임을 위한) 새로운 렌더링 동작을 수행할 때 (예를 들어, 이전 프레임에서와 같이) 이전에 렌더링된 커버리지를 제거하기 위해, 비트마스크와 같은 하나 이상의 커버리지 데이터 구조들이 이전의 렌더링 동작으로부터 가져 와서, 이들이 이전의 프레임이 아니라 새로운 프레임에서 커버링되면(예를 들어, 단지 커버링되면) 텍셀들이 렌더링될 수 있다.
방법(100)은 또한 텍셀들의 보이는 블록들이 텍스처 렌더링 동안에 쉐이딩된 텍스처 렌더 패스(104)에 의해 발생된 렌더링된 텍스처 이미지를 적어도 부분적으로 기반으로 파이널 이미지가 렌더링될 수 있는 이미지 렌더 패스(106)를 포함할 수 있다. 이미지 렌더 패스(106)는, 예를 들어, 렌더링된 텍스처를 리딩하고 파이널 렌더 타겟들을 라이팅하도록 구성된 픽셀 쉐이더로 구현될 수 있다. 일부 실시예들에서, 및 모션 또는 디포커스 블러와 같은 구현 상세 내용들에 따라서, 비닝 기능 동안에 얼리 쿼드 디스카드(early quad discard) 또는 컬링(culling)과 같은 하나 이상의 다른 기법과 연관되어 이미지 렌더 패스(106)가 이용될 수 있다.
도 1에 도시된 실시예는 일부 비닝 투 타일(binning to tiles)을 수행하여 타일 기반의 동작들을 에뮬레이팅할 수 있는 타일 기반의 디퍼드 렌더링(TBDR) 설계, 즉시 모드 렌더링(IMR) 설계, IMR 설계를 갖는 파이프라인들을 포함하는 어떤 적절한 타입의 그래픽스 렌더링 파이프라인, 및/또는 어떤 다른 구성 또는 이들의 조합으로 구현될 수 있다.
본원에서 기술된 어떤 다른 실시예뿐 아니라 도 1에 도시된 실시예에 대해 기술된 동작들 및/또는 부품들은 예시 동작들 및/또는 부품들이다. 일부 실시예들에서, 일부 동작들 및/또는 부품들은 생략될 수 있고, 및/또는 다른 동작들 및/또는 부품들은 포함될 수 있다. 더욱이, 일부 실시예들에서, 이 동작들 및/또는 부품들의 시간적 및/또는 공간적 순서는 변할 수 있다.
본 개시에 따라 일부 가능한 구현 상세 내용들을 도시하는 시스템들, 공정들, 방법들, 및/또는 등의 일부 예시 실시예들이 하기에 기술된다. 이러한 예시들은 본 개시의 원리들을 도시할 목적으로 제공되나, 이 원리들은 이러한 실시예들, 구현 상세 내용들, 및/또는 등에 한정되지 않는다.
도 2는 본 개시에 따른 렌더링 파이프라인을 이용한 디커플드 쉐이딩을 위한 방법의 예시 실시예를 위한 파이프라인 패스 다이어그램을 도시한다. 도 2에 도시된 실시예(110)는 타일 기반의 구현예들과 관련된 일부 상세 내용들을 도시할 수 있으나, 이 원리들은 또한 IMR 시스템들과 같은 다른 타입의 시스템들에 적용될 수 있다. 실시예(110)는, 예를 들어, 래스터화, 속성 데이터 페치, 및/또는 인터폴레이션과 같은 기능들을 수행하기 위해, 텍스처 유닛들, 색상 처리 유닛들, 타일 버퍼 유닛들, 및/또는 다른 스페셜라이즈드 하드웨어와 같은 어떤 수의 하드웨어 특징들을 포함할 수 있는 렌더링 파이프라인으로 구현될 수 있다. 파이프라인은 전문화되고 및/또는 이 파이프라인의 하드웨어 양상들에 타이트하게 일체화된 픽셀 세이더들, 버텍스 쉐이더들, 지오미트리 쉐이더들, 및/또는 등과 같은 어떤 수의 소프트웨어 구동 특징들을 또한 포함할 수 있고, 따라서, 구현 상세 내용들에 따라서, 예를 들어, 컴퓨트 쉐이더와 비교하여 개선된 성능 및/또는 효율을 제공할 수 있다.
타일링을 포함할 수 있는 실시예들에서, 방법(110)은 이미지 커버리지 패스(116) 및/또는 이미지 렌더 패스(132)에 의해 사용되기 위한 이미지 비닝 데이터(114)를 발생시킬 수 있는 선택적으로 렌더링된 이미지 비닝 패스(112)를 포함할 수 있다. 일부 실시예들에서, 지오미트리 쉐이더는, (보수적일 수 있는) 모션 블러 및/또는 뎁스 어브 필드(예: 디포커스 블러) 래스터화 및 예를 들어, 삼각형들과 같은 하나 이상의 세트의 시간 종속적인 프리미티브들을 위해 이용될 수 있다. 이는, 예를 들어, 비닝 패스들 및/또는 2개의 렌더 패스들의 어느 것 또는 모두에서 수행될 수 있다. 이미지 비닝 및/또는 비닝 뎁스 데이터는 시간 종속적인 프리미티브들을 포함하는 프리미티브들을 기반으로 발생될 수 있다. 일부 실시예들에서, 또한 블러들과 같은 효과의 구현에 따라, 비닝 뎁스 컬링 기능이 구현될 수 있다.
도 2를 다시 참조하면, 이미지 커버리지 패스(116)는 텍스처 렌더 패스(124) 동안에 이용되기 위한 텍스처 커버리지 데이터(118)를 발생시킬 수 있다. 이미지 커버리지 패스(116)는, 예를 들어, 도 3에 대해 하기에 도시된 바와 같이 (하나 이상의 텍스처 유닛으로서 구현될 수 있는) 텍스처 유닛에 (텍스처 데이터보다는) 텍스처 커버리지를 요청하기 위해 텍스처 액세스 기능을 구현하도록 구성된 로직을 포함할 수 있는 (하나 이상의 픽셀 쉐이더로서 구현될 수 있는) 픽셀 쉐이더로써 구현될 수 있다. 이는, 예를 들어, 하나 이상의 텍스처 동작을 텍스처 유닛에 제공하여 이에 텍셀 위치들(커버리지)을 컴퓨팅하고 이 텍스처 커버리지 데이터를 픽셀 쉐이더에 리턴시키도록 명령하여 이루어질 수 있다. 일부 실시예들에서, 단지 이미지의 서브 세트만이 이미지 커버리지 패스(116) 동안에 렌더링될 수 있다. 예를 들어, 부분적을 렌더링된 텍스처들에 액세스하는 오브젝트들만이 렌더링될 필요가 있다. 따라서, 일부 구현예들에서, 부분적으로 렌더링된 텍스처들을 이용하여 렌더링하는 드로 콜들(draw calls)만이 실행될 수 있다. 일부 실시예들에서, 이미지 커버리지 패스(116)의 일부 또는 전부는 하드웨어(예: 후술될 변형된 텍스처 유닛), 소프트웨어(예: 픽셀 쉐이더 소프트웨어), 또는 그 조합으로 구현될 수 있다.
텍스처 유닛으로부터의 텍스처 커버리지 데이터를 기반으로, 이미지 커버리지 패스(116)는 보이는 텍셀들을 규정할 수 있는 커버리지 데이터 구조 또는 “커버리지 구조” 및/또는 파이널 이미지에서 렌더링될 수 있는 텍셀들의 블록들을 발생시킬 수 있다. 일부 실시예들에서, 픽셀 쉐이더는 커버리지의 바운딩 박스들 또는 커버리지 정보의 일부 다른 인코딩을 생성할 수 있다. 커버리지 구조는 텍스처 렌더링을 보이는 텍셀들로 한정하기 위해 다음의 텍스처 렌더 패스(124)에 의해 이용될 수 있다. 일부 구현예들에서, 계층적 또는 압축된 데이터 구조는 텍스처 커버리지, 예를 들어, 압축된 비트맵을 위해 이용될 수 있다. 실제의 이미지가 이미지 커버리지 패스(116) 동안에 렌더링되지 않을 수 있지만, 일부 실시예들에서, 뎁스 버퍼는 렌더링될 수 있으며, 예를 들어, 이미지 렌더링 패스(132)에 의해 다시 이용될 수 있다.
일부 실시예들에서, 커버리지는 다수의 텍스처들에 대해 검출되고 생성될 수 있으며, 다수의 텍스처가 파이널 이미지에서 렌더링되려 하면 하나 이상의 텍스처 커버리지 구조가 생성될 수 있다. 예를 들어, 슈퍼 세트가 효율적으로 이용될 수 없으면 특유의 텍스처 위치(텍스처 스페이스의 u, v 좌표들)를 갖거나 및/또는 어떤 이유로(예를 들어, 서로 다른 텍스처 필터를 이용하기 때문에) 서로 다른 텍스처 커버리지를 가지는 경우, 커버리지 구조는 각각의 텍스처를 위해 이용될 수 있다. 일부 실시예들에서, 동일한 어드세싱을 이용할 수 있는 반면, 서로 다른 커버리지를 갖는 텍스처들은 분리될 수 있다.
다수의 그래픽스 코어들이 커버리지 구조들을 생성하기 위해 이용될 수 있는 구현예들에서, 서로 다른 코어들에 의해 생성된 마스크들은 파이널 이미지 렌더 패스(132)에서 이용되기 위해 비트 OR(bitwise OR) 연산될 수 있다. 이러한 OR 연산은 서로 다른 그래픽스 코어들로부터의 커버리지의 유니온일 수 있는 커버리지를 생성시킬 수 있다. 대안적으로, 서로 다른 그래픽스 코어들에 의해 생성된 마스크들은 별도로 저장되어 다음의 텍스처 렌더 패스(124) 동안에 OR 연산될 수 있다. 일부 실시예들에서, 커버리지 데이터는 이전에 라이팅된 데이터와 비트 OR 연산될 수 있다.
이미지 커버리지 패스(116)를 구현하기 위해 이용되는 픽셀 쉐이더는 또한 다음 텍스처 렌더 패스(124) 동안에 이용되기 위한 텍스처 커버리지 데이터(118)를 라이팅하도록 구성된 로직을 포함할 수 있다. 예를 들어, 텍스처 커버리지 데이터는 도 3에 대하여 하기에 도시되는 색상 처리 유닛에 라이팅될 수 있다. 일부 실시예들에서, 데이터는 마치 색상 데이터인 것처럼 색상 처리 유닛에 라이팅될 수 있다. 색상 처리 유닛은, 예를 들어, 변형된 색상 블렌딩 하드웨어로서 구현될 수 있다. 커버리지 데이터는 어떤 수준의 거친 또는 미세한 입도(granularity)로 축적되고 및/또는 저장될 수 있다. 예를 들어, 텍스처 커버리지 비트맵 구조는 하나의 텍셀당 1비트, 4×4 쿼드 텍셀당 1 비트, 8×8 블록 텍셀당 1 비트로 저장될 수 있다.
일부 실시예들에서, 색상 처리 유닛(예: 색상 블렌딩 하드웨어)은 하나 이상의 멀티플 렌더 타겟(MRTs)에서, 예를 들어, 도 3에 도시된 하나 이상의 타일 버퍼 유닛에서, 시스템 메모리의 하나 이상의 전용 렌더 타겟에서, 및/또는 어떤 다른 적절한 위치에서 텍스처 커버리지 데이터를 축적할 수 있다. 일부 구현예들에서, 하나 이상의 기존의 또는 표준 MRT 구조는 텍스처 커버리지 데이터를 홀딩하기 위해 이용될 수 있다. 대안적으로 또는 추가적으로, 다수의 텍스처를 위한 커버리지 데이터는, 예를 들어, 텍스처들을 분리시키거나 및/또는 인덱싱하기 위한 오프셋들을 이용하여 하나 이상의 MRT 구조들 내로 패킹될 수 있다. 일부 다른 실시예들에서, 다수의 텍스처들을 위한 커버리지 데이터는 독립적으로 핸들링될 수 있다.
일부 실시예들에서, 기존의 색상 처리 하드웨어는 픽셀 쉐이더로부터 텍스처 커버리지 출력 데이터를 인식하고 외부 래스터화 커버리지 포맷을 이를 저장하기 위해, 예를 들어, 일부 내부 로직의 추가 또는 변형으로 용이하게 변형될 수 있다. 일부 실시예들에서, 색상 처리 하드웨어는 또한 다양한 입력 프리미티브들로부터 텍스처 커버리지를 축적하기 위해 (예를 들어, 비트 OR 연산을 이용하여) 저장된 텍스처 커버리지를 갖는 입력 텍스처 커버리지 데이터를 머징하도록 구성될 수 있다.
일부 실시예들에서, 및 구현 상세 내용들에 따라서, 본 개시에 따른 이미지 커버리지 패스는, 예를 들어, 원자성 동작들을 회피하여, 특별한 코우어레싱을 요하는 저장 동작들을 회피하여, (인텍스 및 버텍스 페치, 버텍스 변환들, 클리핑 및/또는 컬링과 같은) 프런트엔드 그래픽스 파이프라인의 소프트웨어 에뮬레이션의 요구를 제거하여, 및/또는 텍스터 커버리지 데이터를 축적하고 및/또는 저장하기 위해 색상 처리 유닛 및/또는 타일 버퍼 유닛과 같은 렌더 파이프라인 내에서 하나 이상의 하드웨어 구조를 이용하여 성능 및/또는 효율을 개선할 수 있다. 이러한 구조들은 파이프라인 구성요소들 사이에서의 빠르고 및/또는 효율적인 데이터 전달을 위해 설계될 수 있으며, 텍스처 커버리지 데이터 구조들은 컴팩트한 구조들(예: 비트맵들)로서 구현될 수 있다. 더욱이, 구현 상세 내용들에 따라서, 본 개시에 따른 이미지 커버리지 패스에서 구현된 어떤 수의 처리들은 또한 병렬화될 수 있다.
도 2를 다시 참조하면, 타일링을 포함할 수 있는 실시예들에서, 선택적 텍스처 이미지 비닝 패스(120)는 텍스처 렌더 패스(124)에 의한 이용을 위해 텍스처 비닝 데이터(122)를 발생시킬 수 있다. 일부 실시예들에서, 하나의 텍스처 이미지 렌더링 패스는 렌더링된 텍스처당 구현될 수 있다.
텍스처 렌더 패스(124)는 이용되지 않은 텍셀들의 렌더링을 방지하기 위해 이미지 커버리지 패스(116)으로부터의 텍셀 커버리지 데이터(118)를 이용하면서 파이널 렌더링된 이미지에서 이용될 수 있는 텍스처들을 이용하여 텍스처 스페이스에서 텍셀들을 렌더링(쉐이딩)할 수 있다. 예를 들어, 렌더링 파이프라인의 래스터화 하드웨어는 이미지 렌더링 패스(132)에 의해 이용되지 않을 수 있는 텍셀들의 렌더링을 방지하기 위해 텍셀 커버리지 데이터(118)를 리딩하고 이를 커버리지 마스크로서 이용하도록 구성된 로직을 포함할 수 있다. 일부 실시예들에서, 래스터화 하드웨어는, 예를 들어, 래스터화 및 뎁스 테스팅 유닛의 일부로서 구현될 수 있다. 확률적인 래스터화가 이용되는 일부 실시예들에서, 하나 이상의 픽셀 쉐이더는 레이들을 캐스팅하고 커버링된 렌더링된 텍스처들의 텍셀 위치들을 컴퓨팅하도록 구성될 수 있다.
커버리지 데이터가 타일 버퍼 유닛을 통해 액세스되고 그에 저장되는 타일 기반의 구현예들에서, 래스트화 또는 타일 버퍼 하드웨어는 텍스처 맵 타일과 연관된 텍스처 커버리지 데이터를 로딩할 수 있다. 이어서, 그 타일을 위한 렌더링이 시작될 수 있다. 다른 구현예들에서, 래스터화 하드웨어는 색상 처리 유닛 및/또는 텍스처 커버리지 데이터가 저장될 수 있는 어떤 다른 위치로부터 텍스처 커버리지 데이터를 로딩할 수 있다. 일부 실시예들에서, 타일버퍼 유닛 및/또는 래스터화 하드웨어는, 예를 들어, 이미지 커버리지 패스(116) 동안에 미리 OR 연산되지 않으면, 서로 다른 그래픽스 코어들에 의해 생성된 별도의 텍스처 커버리지 마스크들의 비트 OR 연산을 수행할 수 있다. 이는 다수의 그래픽스 코어들로부터의 커버리지를 보장할 수 있으며, 더 나뉜 이미지 렌더링들은 완전한 커버리지를 얻기 위해 머징될 수 있다.
일부 실시예들에서, 증가하는 렌더링(incremental rendering)이 이전 프레임 또는 시퀀스의 프레임들에 의해 생성된 텍스처를 다시 이용하면서 새로운 프레임을 위한 하나 이상의 텍셀들을 추가하기 위해 이용될 수 있다. 예를 들어, 새로운 프레임이 이전 프레임으로부터의 하나 이상의 렌더링된 텍셀들을 다시 이용하면, 나중의 프레임 및/또는 프레임 시퀀스 동안에 렌더링될 필요가 없는 텍셀들 및/또는 텍셀 블록들의 렌더링을 방지하기 위해 AND-NOT 비트 연산이 커버리지 데이터에 적용될 수 있다. 환언하면, 일부 실시예들에서, 새로운 프레임 또는 프레임들을 위한 텍스처 렌더 패스는 이전의 프레임과 비교되는 새로운 프레임에 추가된 텍셀들만을 렌더링할 수 있다.
일부 실시예들에서, 및 구현 상세 내용들에 따라, 예를 들어, 부품들 사이에서 데이터를 이동시키기 위한 효율적인 하드웨어 인프라구조를 이용하여뿐 아니라, 텍스처 렌더링 워크의 양을 줄이고, 래스터라이저들, 인터폴레이터 등과 같은 빌트인 파이프라인 하드웨어 자원들을 이용하는 등으로 본 개시에 따른 텍스처 렌더 패스는 성능 및/또는 효율을 개선할 수 있다. 더욱이, 텍스처 렌더링 픽셀 쉐이더의 컴퓨팅은 시간 및/또는 파워에 관하여 상대적으로 값비싸므로, 렌더링 워크의 어떤 감소는 중요한 성능 및/또는 파워의 이점을 가질 수 있다.
도 2를 다시 참조하면, 하나 이상의 텍스처 밉맵(mipmap) 패스(128) 동안에, 한 세트의 텍스처 밉맵(130)이, 예를 들어, 렌더링된 텍스처 이미지를 다운 샘플링하여 각각의 렌더링된 텍스처 이미지로부터 생성될 수 있다. 텍스처 밉맵(130)은 이때 파이널 이미지 렌더 패스(132) 동안에 이용될 수 있다. 일부 실시예들에서, 예를 들어, 커버리지 데이터 구조에 디테일 수준(LOD)을 기록하거나 이를 커버리지 데이터 구조로부터 도출하여 다운 샘플링이 더 최적화될 수 있다. 일부 실시예들에서, 예를 들어, 풀 해상도 텍스처가 이에 추가될 수 있듯이, 밉맵들이 또한 프레임들 사이에서 증가적으로 추가될 수 있다.
텍스처 렌더링 동안에 요구되는 텍셀 블록들이 쉐이딩된 후에, 파이널 렌더 패스(132)는 실제로 파이널 이미지(134)를 렌더링한다. 파이널 렌드 패스(132)는, 예를 들어, 이미지 커버 패스를 반복하기 위해 레귤러 픽셀 쉐이더를 이용하여, 그러나 하나 이상의 파이널 렌더 타겟으로부터의 렌더링된 텍스처 데이터(126)를 이용하여 표준 색상 패스로서 구현될 수 있다. 타일링을 구현하는 실시예들은 이미지 비닝 데이터(114)를 이용할 수 있다.
일부 실시예들에서, 하나 이상의 커버리지 패스는 보수적인 커버리지를 생성하도록 구성될 수 있으며, 이 경우 워크가 이때 실제의 파이널 이미지 커버리지를 기반으로 감소되거나 최소화될 수 있으며, 파이프라인 하드웨어는 렌더링된 텍스처 워크를 한정하기 위해 이 커버리지를 이용할 수 있다. 일부 실시예들에서, 렌더링된 텍스처 종속이 전달될 수 있다. 예를 들어, 제1 렌더링된 텍스처가 제2 렌더링된 텍스처의 어드레싱을 제어하기 위해 이용되고, 제1 렌더링된 텍스처가 완전히 렌더링된 후 제2 렌더링된 텍스처를 위한 커버리지 패스가 실행될 수 있고, 따라서 제1 렌더링된 텍스처를 위한 렌더링된 텍스터 데이터가 이용될 수 있다.
일부 실시예들에서, 및 구현 상세 내용들에 따라서, 상술한 렌더링된 파이프라인을 이용한 디커플링된 텍스처 쉐이딩 공정은 어떤 수의 하기의 특징들 및/또는 이점을을 제공한다. 최적화된 하드웨어를 가질 수 있는 증명된 설계 렌더링된 하드웨어 파이프라인의 전부 또는 일부는 이 공정의 전부 또는 일부 동안에 이용될 수 있다. 텍스처 커버리지 계산은 다수의 독립적으로 전달된 텍스처들을 위해 구현될 수 있다. 텍스처 커버리지는 다수의 파이널 이미지들을 가로질러 축적될 수 있고, 따라서 프레임들 또는 파이널 이미지들 사이에서의 텍스처 재사용을 지원하면서, 컴퓨팅이 새로운 텍셀들을 위해 단지 수행될 수 있다. 쉐이딩은 텍스처 스페이스에서 보다 효율적으로 수행될 수 있다. 모션 블러드 및/또는 디포커스 블러드 오브젝트들이 기존의 기법들을 개시된 기법에 일체화하여 렌더링될 수 있다. 개시된 기법들은 병렬화될 수 있다. 그래픽스 파이프라인 하드웨어가 컴퓨트 쉐이더를 기반으로 하는 기법에서 효율적이지 않을 수 있는 뎁스 버퍼링, (예를 들어, 쉐도우 볼륨들을 위한) 스텐실들, 및/또는 블렌딩을 효율적으로 구현하기 위해 이용될 수 있다. 비닝 패스들은 기존의 비닝 기법들을 개시된 기법들과 일체화하여 구현될 수 있다.
추가적으로, 본 개시에 따른 렌더링 파이프라인을 이용한 디커플드 텍스처 쉐이딩 과정은 용이하게 애플리케이션 소프트웨어와 일체화될 수 있다. 예를 들어, 본원에 개시된 파이프라인 기능들 및/또는 패스들을 구현하기 위해 API가 변경되고, 및/또는 API 익스텐션이 생성될 수 있다. 이러한 API 변형들 및/또는 익스텐션들은 비교적 중요하지 않고 및/또는 기존의 파이프라인 API들과 일치할 수 있으며, 따라서 텍스처들을 렌더링하기 위해 컴퓨트 쉐이더를 이용할 필요가 있는 대체적으로 서로 다른 소프트웨어 변화보다는 하나 이상의 증가적 변화들로서 구현될 수 있다. 따라서, 본 개시에 따라 소프트웨어를 시스템으로 포트하기 위해 소프트웨어 개발자들에게 상대적으로 용이할 수 있다.
도 3은 본 개시에 따른 텍스처 커버리지 파이프라인의 실시예를 도시한다. 파이프라인(140)이 타일 기반의 설계의 내용에 도시되어 있으나, 발명적 원리들이 IMR 및/또는 어떤 다른 설계들에 적용될 수 있다. 예를 들어, 상술한 커버리지 텍스처 컴퓨팅 및/또는 저장 동작들의 일부 또는 전부를 구현하기 위해 도 3에 도시된 실시예가 이용될 수 있으며, 상술한 바와 같이 렌더링 파이프라인의 일부로서 구현될 수 있다.
파이프라인(140)은 텍스처 커버리지 쉐이더(142), 텍스처 유닛(144), 예를 들어, 래스터화 유닛(148)에 위치한 픽셀 쉐이더 출력 버퍼(146), 색상 처리 유닛(150), 및 타일 버퍼 유닛(152)을 구비할 수 있다. 다른 실시예들에서, 픽셀 쉐이더 출력 버퍼(146)는 래스터화 유닛(148)로부터 별도일 수 있다. 텍스처 커버리지 쉐이더(142)는, 예를 들어, 커버리지 퀴어리 또는 명령을 텍스처(144)에 보내 텍스처 유닛(144)에 텍스처 커버리지를 요청하도록 구성되고 텍스처 유닛(144)에 공통인 픽셀 쉐이더로 구현될 수 있다. 텍스처 디스크립터 및 샘플러(146)로부터의 데이터에 응답하여 정상적으로 텍스처들을 적용하는 텍스처 유닛(144)이 텍스처 정보보다는 커버리지 정보를 픽셀 쉐이더로 리턴시켜 커버리지 퀴어리에 응답할 수 있다. 일부 실시예들에서, 텍스처 커버리지가 픽셀 쉐이더 소프트웨어를 이용하여 전체적으로 계산될 수 있다. 일부 다른 실시예들에서, 픽셀 쉐이더 소프트웨어를 부분적으로 이용하여, 예를 들어, 텍스처 커버리지를 컴퓨팅하기 위해 변형될 수 있는 하나 이상의 텍스처 유닛들과의 하이브리드 조합으로 텍스처 커버리지가 컴퓨팅될 수 있다.
텍스처 커버리지 쉐이더(142)는 파이널 이미지가 렌더링되는 경우 실제적으로 액세스될 필요가 있을 수 있는 텍셀들 및/또는 텍셀 블록들을 규정하는 텍스처 커버리지 구조를 생성할 수 있다. 도 3에 도시된 실시예에서, 커버리지가 텍셀들(156)의 5×2 블록들을 이용하여 도시되어 있으나, 텍스처 커버리지 데이터는 어떤 수준의 입도에서 축적되고 및/또는 저장될 수 있다.
일부 실시예들에서, 텍스처 커버리지 데이터의 일부 또는 전부가 예를 들어, 색상 블렌딩 하드웨어로 구현될 수 있는 색상 처리 유닛(150)의 데이터 버퍼에 저장될 수 있다. 도 3에 도시된 실시예에서, 텍스처 커버리지 데이터가 픽셀 쉐이더 출력 버퍼(146)를 통과할 수 있으며, 다른 실시예들에서, 데이터가 직접 색상 처리 유닛(150)으로 또는 다른 데이터 경로들을 통하여 전달될 수 있다.
일부 실시예들에서, 텍스처 커버리지 데이터의 일부 또는 전부는 타일 버퍼 유닛(152)의 타일 버퍼 메모리(154)에 저장될 수 있다. 색상 처리 유닛(150)은 버퍼에 커버리지 블록들을 위치시키기 위해 하나 이상의 타일 버퍼 주소들을 갖는 각각의 커버리지 구조를 송신할 수 있다.
일부 실시예들에서, 텍스처 커버리지 쉐이더(142), 텍스처 유닛(144), 래스터화 유닛(148), 색상 처리 유닛(150), 및 타일 버퍼 유닛(152)은 본원에 기술된 바와 같은 각각의 유닛의 기능들을 제어하도록 각각 구성된 로직(143, 145, 147, 151, 153)을 각각 구비할 수 있다.
도 4는 본 발명의 개시에 따라 디커플드 쉐이딩을 지원할 수 있는 렌더링 파이프라인을 위해 사용될 수 있는 파이프라인 하드웨어 부품들의 실시예들을 도시한다. 예를 들어, 상술한 축적, 저장, 및/또는 렌더링 동작들의 일부 또는 전부를 구현하기 위해 도 4에 도시된 실시예가 이용될 수 있으며, 상술한 바와 같이 렌더링 파이프라인의 일부로서 구현될 수 있다. 일부 실시예들에서, 도 4에 도시된 부품들은 렌더링 파이프라인의 기존의 증명된 하드웨어 부품들에 상대적으로 중요하지 않은 변형들을 하여 구현될 수 있다.
픽셀 쉐이더 출력 버퍼(162)는 픽셀 쉐이더(141)로부터 커버리지 정보를 수신하고 커버리지 정보를 색상 처리 유닛(166)으로 공급하도록 구성될 수 있다. 색상 처리 유닛(166)은 커버리지 구조들을 타일 버퍼 유닛(170)으로 전달하도록 구성될 수 있는 커버리지 생성 로직(168)을 구비할 수 있다. 예를 들어, 로직(168)은 블록들의 사각 영역들로부터 블록 커버리지 데이터를 추출하고, 타일 버터 워드들에서 주소들과 비트마스크들을 컴퓨팅하고, 타일 버터(172)의 위치들을 전달하기 위해 축적된 데이터 워드들을 라이팅할 수 있다. 타일 버퍼 유닛(170)은 텍스처 렌더링 패스가 커버링된 텍셀들로 쉐이딩을 한정하는 것을 허용하기 위해 (뎁스(z) 테스팅 기능을 포함할 수 있는) 래스터화 유닛(160)의 래스터화 하드웨어(164)로 텍스처 커버리지 데이터를 전달할 수 있는 프리로드 로직(174)을 포함할 수 있다. 일부 실시예들에서, 픽셀 쉐이더 출력 버퍼(162)는 래스터화 유닛(160)과 일체화될 수 있다.
도 5는 본 개시에 따른 텍스처 컬링 동작을 위한 비트맵 래스터화 디코딩 과정의 예시 실시예를 도시한다. 도 5에 도시된 실시예는, 마스크 및/또는 타일 크기들, 과정 단계들, 및/또는 등과 같은 일부 특정 구현 상세 내용들의 문맥에 기술되어 있으나, 이러한 상세 내용들은 단지 도시를 위한 것이며 발명적 원리들은 이러한 상세 내용들에 한정되지 않는다. 예를 들어, 렌더링된 타일 크기는 64×64 픽셀들(텍셀들)로 보여지며, 블록 크기는 4×4 픽셀로 보여진다. 따라서, 64×64 타일은 256개의 4×4 블록들을 포함할 수 있고, 마스크의 256개의 비트들은 어떤 서브 세트의 4×4 블록들을 마스크 오프하기 위해 이용될 수 있으나, 다른 크기들이 이용될 수 있다. 일부 실시예들에서, 커버리지 추출 및 테스팅은 빠른 결정을 제공하고 및/또는 작은 영역을 이용할 수 있는 단순한 멀티플렉서(MUX) 및 로직 게이트들로써 구현될 수 있다.
도 5에 도시된 실시예는, 예를 들어, 상술한 텍스처 렌더 패스들 중의 어느 것을 구현하기 위해 이용될 수 있다. 도시를 위하여, 이는 타일 버퍼 유닛, 및 래스트화 및 뎁스 테스트 유닛을 갖는 타일 기반의 시스템의 내용에 이용되는 것으로 가정한다. 하나의 데이터 구조가 각각의 렌더링된 텍스처를 위해 이용될 수 있다. 다수의 렌더링된 텍스처가, 하지만, 이들이 동일한 위치(텍스처 스페이스의 u, v 좌표들)를 이용하면, 동일한 커버리지 데이터를 이용할 수 있다.
타일 버퍼 유닛은 렌더링을 위한 타일을 개방하기 전에 텍스처 커버리지 구조의 세그먼트를 리딩할 수 있다. 타일 버퍼 유닛은 거친 래스터화 동안에 커버리지를 컬링하기 위해 이를 이용할 수 있는 래스터화 및 뎁스 테스트 유닛에 커버리지 데이터를 전달할 수 있다. 타일을 렌더링하는 경우, 래스터화 및 뎁스 테스트 유닛은 이미지 렌더링 동안에 필요가 없을 수 있는 커버리지를 마스크 오프하기 위해 거친 계층적 래스터화 과정 동안에 이 커버리지 데이터를 적용할 수 있다.
프리미티브들은 각각의 레벨이 4개의 쿼드런트로 다시 나뉘는 계층적 방식으로 래스터화될 수 있다. 각각의 계층적 레벨에서, 쿼드런트들은 프리미티브 커버리지가 있거나 있을 수 있는지를 결정하기 위해 테스트될 수 있다. 만약 쿼드런트가 프리미티브 커버리지를 가지거나 가질 수 있으면, 그 쿼드런트는 더 다시 나뉠 수 있다. 이 과정은 어떤 미세한 래스터화 레벨이 다다르면 종료될 수 있다. 이 실시예에서, 이는 8×8 픽셀 쿼드런트가 프리미티브 커버리지를 위해 테스팅된 4×4 쿼드런트로 더 나뉠 때 가능하다.
거친 래스터화가 도 5에 도시될 수 있으나, 일부 구현예에서, 하나의 쿼드런트가 더 나뉘거나 미세한 래스터화로 보내질 수 있으면, 추가적인 퀄리파이어가 이용될 수 있다. 래스터화는 64×64 타일 레벨에서 시작된다. 각각의 쿼드런트를 위한 커버리지 비트 마스크들은 그 쿼드런터에서의 추가적인 래스터화를 적합하게 하기 위해 추출되고 이용될 수 있다. 하나의 커버리지 마스크는 256개를 포함할 수 있고, 하나의 비트는 각각의 4×4 타일로 매핑된다. 풀 커버리지 퀄리피케이션은 에지 커버리지와 바운딩 박스 커버리지를 포함할 수 있다. 예를 들어, 에지 테스팅 및/또는 바운딩 박스 테스트가 쿼드런트를 배제하지 않으면 이 쿼드런트는 더 나뉠 수 있다.
도 5에 도시된 특정 예시는 다음과 같이 진행된다. 64×64 타일 쿼드런드들은 각각의 쿼드런트가 64 비트 커버리지 마스크를 이용하는 커버리지를 위해 테스팅된다. 64×64 래스터화에서, 마스크 비트(128-195)는 32×32 픽셀들의 쿼드런트일 수 있는 64×64 타일의 쿼드런트 2(서브타일 2)에 매핑될 수 있다. 이 예시에서, 그 블록의 적어도 하나의 4×4는 커버리지 맵의 1비트를 가져, 쿼드런트 4×4 커버리지 비트들(비트(128-195))의 비트 OR 연산을 이용하여 결정될 수 있는 쿼드런트의 추가적인 래스터화를 야기할 수 있다. 쿼드런트 테스팅의 32×32 단계에서, 오직 쿼드런트 0이 커버리지를 가지며, 따라서, 이는 단지 쿼드런트 1만이 커버리지를 갖는 16×16 단계로 진행된다. 8×8 단계에서, 쿼드런트 1은 커버리지를 가지며, 따라서, 미세한 래스터화가 이 예시에서 단지 이 단일의 4×4를 래스터화할 수 있다. 그 커버리지 비트들의 적어도 1이 로직 1이면 쿼드런트는 커버리지를 갖는 것으로 고려되고, 따라서 그 쿼드런트에 매핑된 비트 세트는 논리적으로 OR 연산된다. 하나를 초과하는 쿼드런트가 어떤 단계에서 커버리지를 가지면, 이 과정은 Z 순서대로 쿼드런트들을 트래버스 다운시킬 수 있다. 그 더 낮은 레벨 래스터화 계층 단계들 모두가 완료되면 주어진 쿼드런트는 완료된 것으로 고려된다.
도 6은 본 개시에 따른 이미징 장치의 실시예를 도시한다. 이미징 장치(204)는 PC, 랩탑, 휴대 장치, 등용의 패널 디스플레이, 프로젝터, VR 고글, 등과 같은 어떤 폼 팩터를 가질 수 있으며, 픽셀로써 래스터화된 이미지(206)를 디스플레이하기 위한 음극선관(CRT), 디지털 광 프로젝터(DLP), 발광 다이오드(LED), 액정 디스플레이(LCD), 유기 LED(OLED), 양자 도트, 등과 같은 어떤 이미징 기술을 기반으로 할 수 있다. 이미지 프로세서(210)는 본 개시에 따라 디커플드 쉐이딩 및/또는 텍스처 렌더링 기법들 중의 어느 것을 구현할 수 있는 그래픽스 처리 유닛(GPU)로서 구현될 수 있다. 디스플레이 드라이버 회로(212)는 이미지를 처리하고 및/또는 이미징 장치(204) 상에 또는 그를 통하여 디스플레이될 수 있는 형태로 변환할 수 있다. 이미지(206)의 일부가 확대되어 픽셀들(208)이 보여진다. 본 개시에서 기술된 방법들 또는 장치들 중 어느 것은 집적 회로(211) 상에서 제조될 수 있는 이미지 프로세서(210)에서 구현될 수 있다. 일부 실시예들에서, 집적 회로(211)는 디스플레이 장치(204)의 어떤 다른 기능을 구현할 수 있는 디스플레이 드라이버 회로(212) 및/또는 어떤 다른 부품들을 또한 구비할 수 있다.
본원에 개시된 실시예들은 여러가지 구현 상세 내용들의 문맥에 기술될 수 있으나, 본 개시의 원리들은 이들 또는 어떤 다른 특정 상세 내용들에 한정되지 않는다. 일부 기능이 어떤 부품들에 의해 구현되는 것으로 기술되었으나, 다른 실시예들에서, 이 기능은 서로 다른 위치들에서 여러가지 유저 인터페이스들을 갖는 서로 다른 시스템들 및 부품들 사이에서 분배될 수 있다. 어떤 실시예들이 특정 과정들, 단계들, 그 조합들, 및/또는 등을 갖는 것으로 기술되었으나, 이러한 용어들은 특정 과정, 단계, 그 조합, 및/또는 등이 다수의 과정, 단계, 그 조합, 및/또는 등으로써 구현될 수 있거나, 특정 과정, 단계, 그 조합, 및/또는 등이 다수의 과정, 단계, 그 조합, 및/또는 등으로써 일체화될 수 있는 실시예들을 또한 포함할 수 있다. 부품 또는 구성요소의 참조는 그 부품 또는 구성요소의 단지 일부를 참조할 수 있다. 본 개시와 청구항에서의 "제1" 및 "제2"와 같은 용어의 사용은 그것들이 변형하는 것들을 구분하기 위해서만일 수 있으며, 문맥에서 명백하게 다르게 하지 않으면 어떤 공간적 또는 시간적 순서를 지칭하지 않을 수 있다. 제1의 것에 대한 참조는 제2의 것의 존재를 암시하지 않을 수 있다. "선택적"인 것으로 실시예에서 구성요소를 특징화하는 것은 그 실시예에서 어떤 다른 구성요소가 필수적이라는 것을 의미하지 않을 수 있다. 본원에서 개시된 실시예들 중 어느 것에서, 구성요소들 중의 어느것은 본 개시의 원리들을 벗어나지 않고 생략될 수 있다. 더욱이, 상술한 여러가지 상세 사항들 및 실시예들은 이 특허 개시의 발명적 원리들에 따라 추가적인 실시예들을 생성하기 위해 조합될 수 있다. 특별한 하드웨어는 FPGA(field programmable gate array), CPLD(complex programmable logic device) 및/또는 등과 같은 특별한 기능들을 위해 구성된 범용 하드웨어를 포함할 수 있다.
이 특허 개시의 발명적 원리들이 발명적 개념들을 벗어나지 않고 배열 및 상세 내용에 있어서 변형될 수 있기 때문에, 변경들 및 변형들은 하기의 청구항의 범위 내에 있는 것으로 고려된다.
102: 이미지 커버리지 패스
104: 텍스처 렌더 패스
106: 이미지 렌더 패스

Claims (10)

  1. 그래픽스 처리 시스템에서 이미지를 렌더링하는 방법에 있어서,
    렌더링 파이프라인을 이용하여 이미지 커버리지 패스 동안에 이미지의 적어도 일부를 위한 텍스처 커버리지 데이터를 계산하는 단계;
    상기 렌더링 파이프라인의 하나 이상의 하드웨어 자원을 이용하여 텍스처 커버리지 데이터를 기반으로 텍스처 스페이스에서 텍스처 렌더링 패스 동안에 렌더링된 텍스처 데이터를 발생시키는 단계; 및
    상기 렌더링 파이프라인을 이용하여 상기 렌더링된 텍스처 데이터를 기반으로 상기 이미지를 렌더링하는 단계를 포함하는 방법.
  2. 청구항 1에 있어서,
    상기 텍스처 커버리지 데이터의 적어도 일부는 퀴어리에 응답하여 텍스처 유닛에 의해 계산되는 방법.
  3. 청구항 1에 있어서,
    상기 렌더링 파이프라인의 하드웨어 리소스에 상기 텍스처 커버리지 데이터의 적어도 일부를 저장하는 단계를 더 포함하는 방법.
  4. 청구항 1에 있어서,
    계층적 데이터 구조에서 상기 텍스처 커버리지 데이터의 적어도 일부를 저장하는 단계를 더 포함하는 방법.
  5. 청구항 1에 있어서,
    압축된 데이터 구조에서 상기 텍스처 커버리지 데이터의 적어도 일부를 저장하는 단계를 더 포함하는 방법.
  6. 청구항 3에 있어서,
    상기 텍스처 커버리지 데이터는 색상 처리 유닛에 저장되는 방법.
  7. 청구항 3에 있어서,
    상기 텍스처 커버리지 데이터는 타일 버퍼에 저장되는 방법.
  8. 청구항 3에 있어서,
    상기 텍스처 커버리지 데이터는 캐시에 저장되는 방법.
  9. 그래픽스 처리 시스템에 있어서,
    디커플드 쉐이딩을 지원하도록 구성된 렌더링 파이프라인으로서, 상기 파이프라인은:
    이미지를 위한 텍스처 커버리지 데이터를 수신하도록 구성된 데이터 버퍼; 및
    상기 데이터 버퍼로부터 상기 텍스처 커버리지 데이터를 리딩하고, 상기 이미지를 위한 텍스처 렌더링 패스 동안에 래스터화 커버리지를 한정하기 위해 상기 텍스처 커버리지 데이터를 이용하도록 구성된 래스터화 유닛을 포함하는 시스템.
  10. 그래픽스 처리 시스템에 있어서,
    디커플드 쉐이딩을 지원하도록 구성된 렌더링 파이프라인으로서, 상기 파이프라인은:
    이미지 커버리지 패스 동안에 쉐이더로부터 커버리지 퀴어리를 수신하고, 상기 커버리지 퀴어리에 대한 응답으로 이미지를 위한 텍스처 커버리지 데이터를 컴퓨팅하고, 상기 쉐이더로 상기 텍스처 커버리지 데이터를 리턴시키도록 구성된 텍스처 유닛을 포함하는 시스템.
KR1020210036800A 2020-03-20 2021-03-22 디커플드 쉐이딩 텍스처 렌더링을 위한 방법 및 장치 KR20210117988A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202062992898P 2020-03-20 2020-03-20
US62/992,898 2020-03-20
US16/864,137 2020-04-30
US16/864,137 US20210295586A1 (en) 2020-03-20 2020-04-30 Methods and apparatus for decoupled shading texture rendering

Publications (1)

Publication Number Publication Date
KR20210117988A true KR20210117988A (ko) 2021-09-29

Family

ID=77748323

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210036800A KR20210117988A (ko) 2020-03-20 2021-03-22 디커플드 쉐이딩 텍스처 렌더링을 위한 방법 및 장치

Country Status (2)

Country Link
US (1) US20210295586A1 (ko)
KR (1) KR20210117988A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023070291A1 (en) * 2021-10-25 2023-05-04 Shanghaitech University Systems and methods for image rendering

Also Published As

Publication number Publication date
US20210295586A1 (en) 2021-09-23

Similar Documents

Publication Publication Date Title
US10885607B2 (en) Storage for foveated rendering
JP3657518B2 (ja) ディファード・シェーディング(deferredshading)を伴うグラフィックス・プロセッサ(graphicsprocessor)
US6229553B1 (en) Deferred shading graphics pipeline processor
US10049486B2 (en) Sparse rasterization
EP3559914A1 (en) Foveated rendering in tiled architectures
US20130271465A1 (en) Sort-Based Tiled Deferred Shading Architecture for Decoupled Sampling
US9224227B2 (en) Tile shader for screen space, a method of rendering and a graphics processing unit employing the tile shader
US20110141112A1 (en) Image processing techniques
CN110675480B (zh) 用于获取纹理操作的采样位置的方法和装置
US10432914B2 (en) Graphics processing systems and graphics processors
US20230269391A1 (en) Adaptive Pixel Sampling Order for Temporally Dense Rendering
US7405735B2 (en) Texture unit, image rendering apparatus and texel transfer method for transferring texels in a batch
KR20210095914A (ko) 가변 레이트 셰이딩과 슈퍼 샘플 셰이딩의 통합
US11120609B2 (en) Reconstruction for temporally dense ray trace rendering
US10192348B2 (en) Method and apparatus for processing texture
US11631212B2 (en) Methods and apparatus for efficient multi-view rasterization
KR20210117988A (ko) 디커플드 쉐이딩 텍스처 렌더링을 위한 방법 및 장치
Velázquez-Armendáriz et al. Implementing the render cache and the edge-and-point image on graphics hardware
US20240104685A1 (en) Device and method of implementing subpass interleaving of tiled image rendering
EP4168976A1 (en) Fine grained replay control in binning hardware