KR20230162006A - 두 레벨 비닝을 통한 포스트 깊이 가시성 수집 - Google Patents

두 레벨 비닝을 통한 포스트 깊이 가시성 수집 Download PDF

Info

Publication number
KR20230162006A
KR20230162006A KR1020237034856A KR20237034856A KR20230162006A KR 20230162006 A KR20230162006 A KR 20230162006A KR 1020237034856 A KR1020237034856 A KR 1020237034856A KR 20237034856 A KR20237034856 A KR 20237034856A KR 20230162006 A KR20230162006 A KR 20230162006A
Authority
KR
South Korea
Prior art keywords
primitive
tile
visibility
depth test
image
Prior art date
Application number
KR1020237034856A
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 KR20230162006A publication Critical patent/KR20230162006A/ko

Links

Classifications

    • 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
    • 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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal

Landscapes

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

Abstract

컴퓨터 시스템에서 디스플레이용 이미지의 타일 렌더링 방법 및 장치는 컴퓨터 시스템의 그래픽 파이프라인에서 하나 이상의 3차원(3D) 객체를 포함하는 이미지를 수신하는 단계를 포함한다. 이미지는 하나 이상의 타일로 분할된다. 하나 이상의 타일에 대해 깊이 테스트가 수행되고, 깊이 테스트에 기초하여 하나 이상의 타일의 가시성 정보가 비닝된다.

Description

두 레벨 비닝을 통한 포스트 깊이 가시성 수집
관련 출원에 대한 상호 참조
본 출원은 2021년 3월 31일자로 출원된 미국 가출원 제63/168,875호, 및 2021년 12월 27일자로 출원된 미국 정규 특허 출원 제17/562,872호의 우선권을 주장하며, 그 내용은 본 출원에 완전히 설명된 것처럼 참조로 포함된다.
그래픽 처리에는 2차원 (2D) 스크린에 3차원 (3D) 스크린을 렌더링하는 단계가 포함된다. 3D 장면은 다양한 처리 스테이지를 포함하는 그래픽 파이프라인을 통해 디스플레이 스크린에 렌더링된다. 커맨드 스트림의 그래픽 처리 커맨드가 수신(예를 들어, 애플리케이션으로부터)되고, 작업을 실행하기 위해 연산 작업이 제공(예를 들어, GPU와 같은 가속 처리 디바이스로) 된다.
그래픽은 프리미티브(예를 들어, 삼각형, 사각형 또는 다른 지오메트리 형상)를 사용하여 디스플레이 스크린에 렌더링된다. 그래픽 처리 커맨드에는 예를 들어, 디스플레이 스크린에 렌더링할 프리미티브의 수, 각 프리미티브의 위치 및 각 프리미티브의 속성이 포함된다.
그래픽 파이프라인은 프론트 엔드 지오메트리 부분 및 백엔드 부분을 포함하도록 단순화될 수 있다. 예를 들어, 파이프라인의 프론트 엔드 지오메트리 부분에는 여러 개의 셰이더 스테이지(예를 들어, 정점 셰이더 스테이지, 선체 셰이더 스테이지, 테셀레이터 스테이지, 도메인 셰이더 스테이지 및 지오메트리 셰이더 스테이지)가 포함된다. 셰이더 스테이지에서, 프리미티브는 3D 객체로 수신되고 2D 객체로 변환되어 2D 스크린에 렌더링된다. 백엔드 부분에는 래스터라이저 스테이지 및 픽셀 셰이더 스테이지가 포함된다. 래스터라이저 스테이지에서, 2D 스크린에 투영될 각 프리미티브의 스크린 상의 위치가 결정된다. 예를 들어, 래스터화 중에 가속 처리 디바이스(예를 들어, GPU)는 각 프리미티브에 대해 2D 스크린에 렌더링될 각 프리미티브에 해당하는 픽셀(또는 서브픽셀 샘플)을 결정한다. 픽셀 셰이더 스테이지에서는 프리미티브에 해당하는 픽셀에 대한 값(예를 들어, 밝기 및 색상)이 계산된다.
원격 메모리(예를 들어, 메인 메모리)를 사용하여 데이터를 처리하는 대신 로컬에 저장된 이전에 처리된 데이터(예를 들어, GPU의 캐시에 저장된 데이터)를 재사용하여 데이터를 더 효율적으로 처리(예를 들어, GPU에 의해)된다. 타일링(또는 비닝)은 전체 프레임을 한번에 렌더링하는 것에 비해 프레임을 렌더링하는 데 사용되는 로컬 메모리(예를 들어, 캐시) 및 대역폭의 양을 감소시키는 기술이다. 타일링은 프레임을 섹션(예를 들어, 타일 또는 빈)으로 분할하고 프레임의 다른 타일을 렌더링하기 전에 프레임의 한 타일을 렌더링한다. 예를 들어, 프레임(또는 이미지)이 네 개의 동일한 타일(즉, 좌측 상부 사분면, 우측 상부 사분면, 좌측 하부 사분면 및 우측 하부 사분면)로 분할된 경우, 제1 타일(예를 들어, 좌측 상부 사분면)이 렌더링된 후 다음 타일 중 하나를 렌더링한다. 이어서, 다른 타일 중 하나(예를 들어, 우측 상부 사분면)가 렌더링된 후 마지막 두 타일 중 하나를 렌더링하는 식으로 프레임의 각 타일이 렌더링될 때까지 계속 진행된다.
종래의 타일링 기술에는 거친 레벨 타일링(즉, 프레임당 더 큰 타일 및 더 적은 수의 타일 또는 빈) 및 미세 레벨 타일링(즉, 프레임당 더 작은 타일 및 더 많은 수의 타일 또는 빈)이 포함된다. 프레임당 타일 수가 더 적기 때문에, 거친 레벨 타일링은 미세 레벨 타일링보다 타일링(비닝) 오버헤드가 적지만, 미세한 레벨 타일링보다 전반적으로 낮은 캐시 히트 레이트를 포함한다. 미세 레벨 타일링은 타일링이 적은 거친 레벨 타일링보다 더 높은 캐시 히트 레이트를 포함하지만, 미세 레벨 타일링보다 타일링 오버헤드가 더 높다.
또한, 종래의 타일링 기술에서, 프리미티브를 설정한 후에 비닝이 발생한다. 타일링 및 비닝 후에, 프리미티브는 다양한 다른 프로세스(예를 들어, 깊이 테스트)로 전달될 수 있다. 따라서, 일부 프리미티브는 가시적이고 비가시적인 것으로 마킹된다. 결과적으로, 보이지 않을 수 있는 프리미티브는 타일링/비닝 프로세스 중에 처리된다.
본 출원은 효율적인 타일 렌더링을 제공하기 위해 고유하고 효율적인 방식으로 거친 레벨 타일링 및 미세 레벨 타일링을 모두 사용하는 실시예를 개시한다. 본 출원에 개시된 실시예는 거친 타일에 대해 거친 레벨 타일링 및 미세 레벨 타일링을 실행하고, 거친 타일의 미세 타일에 대해 다음 거친 타일로 처리하기 전에 거친 레벨 타일링 및 미세 레벨 타일링을 실행한다. 개시된 실시예 중 일부는 동일한 고정 기능 하드웨어를 사용하여 거친 레벨 타일링 및 미세 레벨 타일링을 실행함으로써, 추가 하드웨어 비용 없이 거친 레벨 타일링 및 미세 레벨의 이점을 제공한다. 또한, 깊이 테스트가 수행된 후, 가시성 수집(즉, 타일링 또는 비닝 프로세스의 양태를 수행)을 수행하는 실시예는 많은 경우에 비닝/타일링 연산을 위한 프리미티브의 수를 감소시킬 수 있다.
더 상세한 이해는 첨부된 도면과 함께 예로서 주어진 다음의 설명으로부터 얻을 수 있다.
도 1은 본 개시의 하나 이상의 특징들이 구현될 수 있는 예시적인 디바이스의 블록도이다.
도 2는 추가 세부사항을 도시한, 도 1의 디바이스의 블록도이다.
도 3은 일 실시예에 따른 그래픽 처리 파이프라인을 나타내는 블록도이다.
도 4는 본 개시의 특징에 따른 디스플레이용 이미지 렌더링의 예시적인 방법을 나타내는 흐름도이다.
도 5는 본 개시의 특징에 따른 디스플레이용 이미지 렌더링의 예시를 나타내는 개략도이다.
도 6은 본 개시의 특징에 따른 디스플레이용 이미지의 제1 타일을 렌더링하는 예시적인 방법을 나타내는 흐름도이다.
도 7은 본 개시의 특징에 따른 디스플레이용 이미지의 다음 타일을 렌더링하는 예시적인 방법을 나타내는 흐름도이다.
도 8은 두 레벨 비닝을 통한 포스트 깊이 가시성 수집의 특징에 따른 디스플레이용 이미지 타일을 렌더링하는 예시적인 방법을 나타내는 흐름도이다.
컴퓨터 시스템에서 디스플레이용 이미지의 타일을 렌더링하는 방법은 컴퓨터 시스템의 그래픽 파이프라인에서 하나 이상의 3차원 (3D) 객체를 포함하는 이미지를 수신하는 단계를 포함한다. 이미지는 하나 이상의 타일로 분할된다. 하나 이상의 타일에 대해 깊이 테스트가 수행되고, 깊이 테스트에 기초하여 하나 이상의 타일의 가시성 정보가 비닝된다.
컴퓨터 시스템에서 디스플레이용 이미지의 타일을 렌더링하기 위한 처리 장치는 메모리 및 메모리에 통신적으로 결합된 프로세서를 포함한다. 프로세서는 그래픽 파이프라인에서 하나 이상의 3차원 (3D) 객체를 포함하는 이미지를 수신하도록 구성되고, 이미지를 하나 이상의 타일로 분할하고, 하나 이상의 타일에 대해 깊이 테스트를 수행하며, 깊이 테스트에 기초하여, 하나 이상의 타일의 가시성 정보를 비닝한다.
컴퓨터 시스템에서 디스플레이용 이미지의 타일 렌더링을 위한 비일시적 컴퓨터 판독 가능 매체로서, 비일시적 컴퓨터 판독 가능 매체에는 프로세서에 의해 실행될 때 프로세서가 연산을 수행하게 하도록 명령이 기록되어 있다. 상기 연산에는 컴퓨터 시스템의 그래픽 파이프라인에서 하나 이상의 3차원 (3D) 객체가 포함된 이미지를 수신하는 단계가 포함된다. 이미지는 하나 이상의 타일로 분할된다. 하나 이상의 타일에 대해 깊이 테스트가 수행되고, 깊이 테스트에 기초하여 하나 이상의 타일의 가시성 정보가 비닝된다.
컴퓨터 시스템에서 디스플레이용 이미지의 타일 렌더링을 위한 비일시적 컴퓨터 판독 가능 매체로서, 상기 비일시적 컴퓨터 판독 가능 매체에는 프로세서를 생성하는 데 적응된 명령이 기록되어 있다. 프로세서는 컴퓨터 시스템의 그래픽 파이프라인에서 하나 이상의 3차원 (3D) 객체를 포함하는 이미지를 수신하고, 깊이 테스트에 기초하여, 이미지의 프리미티브를 하나 이상의 타일로 비닝하는 것을 포함하는 기능을 수행하도록 적응된다.
도 1은 본 개시의 하나 이상의 특징이 구현될 수 있는 예시적인 디바이스(100)의 블록도이다. 디바이스(100)는 예를 들어, 컴퓨터, 게이밍 디바이스, 핸드헬드 디바이스, 셋톱 박스, 텔레비전, 모바일 폰, 또는 태블릿 컴퓨터를 포함할 수 있다. 디바이스(100)는 프로세서(102), 메모리(104), 스토리지(106), 하나 이상의 입력 디바이스(108), 및 하나 이상의 출력 디바이스(110)를 포함한다. 디바이스(100)는 또한 선택적으로 입력 드라이버(112) 및 출력 드라이버(114)를 포함할 수 있다. 디바이스(100)는 도 1에 도시되지 않은 추가적인 컴포넌트들을 포함할 수 있다는 것이 이해된다.
다양한 대안들에서, 프로세서(102)는 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 동일한 다이 상에 위치된 CPU 및 GPU, 또는 하나 이상의 프로세서 코어들을 포함하고, 각각의 프로세서 코어는 CPU 또는 GPU일 수 있다. 다양한 대안들에서, 메모리(104)는 프로세서(102)와 동일한 다이 상에 위치되거나 또는 프로세서(102)와 별도로 위치된다. 메모리(104)는 휘발성 또는 비휘발성 메모리, 예를 들어, 랜덤 액세스 메모리(RAM), 동적 RAM, 또는 캐시를 포함한다.
스토리지(106)는 고정 또는 제거 가능한 스토리지, 예를 들어, 하드 디스크 드라이브, 솔리드 스테이트 드라이브, 광학 디스크, 또는 플래시 드라이브를 포함한다. 입력 디바이스들(108)은 키보드, 키패드, 터치 스크린, 터치 패드, 검출기, 마이크로폰, 가속도계, 자이로스코프, 바이오메트릭 스캐너, 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호들의 송신 및/또는 수신을 위한 무선 로컬 영역 네트워크 카드)을 포함하지만, 이에 제한되지 않는다. 출력 디바이스들(110)은 디스플레이, 스피커, 프린터, 햅틱 피드백 디바이스, 하나 이상의 조명들, 안테나, 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호들의 송신 및/또는 수신을 위한 무선 로컬 영역 네트워크 카드)을 포함하지만, 이에 제한되지 않는다.
입력 드라이버(112)는 프로세서(102) 및 입력 디바이스들(108)과 통신하고, 프로세서(102)가 입력 디바이스들(108)로부터 입력을 수신하도록 허용한다. 출력 드라이버(114)는 프로세서(102) 및 출력 디바이스들(110)과 통신하고, 프로세서(102)가 출력 디바이스들(110)에 출력을 발송하도록 허용한다. 입력 드라이버(112) 및 출력 드라이버(114)는 선택적인 컴포넌트들이며, 입력 드라이버(112) 및 출력 드라이버(114)가 존재하지 않는 경우에 디바이스(100)는 동일한 방식으로 동작할 것이라는 점에 유의한다. 출력 드라이버(116)는 디스플레이 디바이스(118)에 결합된 가속 처리 디바이스("APD")(116)를 포함한다. APD는 프로세서(102)로부터 컴퓨트 커맨드들 및 그래픽 렌더링 커맨드들을 수용하고, 이들 컴퓨트 및 그래픽 렌더링 커맨드들을 처리하고, 픽셀 출력을 디스플레이를 위해 디스플레이 디바이스(118)에 제공한다. 이하에서 보다 상세히 설명되는 바와 같이, APD(116)는 하나 이상의 병렬 처리 유닛을 포함하여 SIMD(single-instruction-multiple-data) 패러다임에 따라 계산을 수행한다. 따라서, 다양한 기능이 APD(116)에 의해 또는 이와 함께 수행되는 것으로 본원에 설명되지만, 다양한 대안에서, APD(116)에 의해 수행되는 것으로 설명된 기능은 호스트 프로세서(예를 들어, 프로세서(102))에 의해 구동되지 않고 디스플레이 디바이스(118)에 그래픽 출력을 제공하는 유사한 능력을 갖는 다른 컴퓨팅 디바이스에 의해 추가적으로 또는 대안적으로 수행된다. 예를 들어, SIMD 패러다임에 따라 처리 작업을 수행하는 임의의 처리 시스템은 본원에서 설명된 기능을 수행할 수 있음이 고려된다. 또는, SIMD 패러다임에 따라 처리 작업을 수행하지 않는 컴퓨팅 시스템은 본원에 설명된 기능을 수행하는 것으로 고려된다.
도 2는, 디바이스(100)의 블록도로, APD(116)에서 처리 작업의 실행과 관련된 추가 세부사항을 도시한다. 프로세서(102)는, 시스템 메모리(104)에, 프로세서(102)에 의한 실행을 위한 하나 이상의 제어 로직 모듈을 유지한다. 제어 로직 모듈은 운영 체제(120), 커널 모드 드라이버(122), 및 애플리케이션(126)을 포함한다. 이러한 제어 로직 모듈들은 프로세서(102) 및 APD(116)의 연산의 다양한 특징들을 제어한다. 예를 들어, 운영 체제(120)는 하드웨어와 직접 통신하고, 프로세서(102)에서 실행되는 다른 소프트웨어를 위해 하드웨어에 인터페이스를 제공한다. 커널 모드 드라이버(122)는, 예를 들어, 프로세서(102) 상에서 실행되는 소프트웨어(예를 들어, 애플리케이션(126))에 API(application programming interface)를 제공하여 APD(116)의 다양한 기능에 액세스하는 APD(116)의 동작을 제어한다. 커널 모드 드라이버(122)는 또한 (아래에서 더 상세히 논의되는 SIMD 유닛(138)과 같은) APD(116)의 처리 구성요소로 실행하기 위한 프로그램을 컴파일하는 JIT(just-in-time) 컴파일러를 포함한다.
APD(116)는 병렬 처리에 적합할 수 있는 그래픽 연산 및 비그래픽 연산과 같은 선택된 기능에 대한 커맨드 및 프로그램을 실행한다. APD(116)는 픽셀 연산, 지오메트리 계산과 같은 그래픽 파이프라인 연산을 실행하고, 프로세서(102)로부터 수신된 커맨드에 기초하여 이미지를 디스플레이 디바이스(118)에 렌더링하는 데 사용될 수 있다. APD(116)는 또한 프로세서(102)로부터 수신되는 커맨드들에 기초하여, 그래픽 동작들과 직접 관련이 없는 컴퓨트 처리 동작들, 이를테면 비디오, 물리 시뮬레이션들, 전산 유체 역학, 또는 다른 작업들과 관련된 동작들을 실행한다.
APD(116)는 SIMD 패러다임에 따라 병렬 방식으로 프로세서(102)의 요청에 동작을 수행하는 하나 이상의 SIMD 유닛(138)을 포함하는 계산 유닛(132)을 포함한다. SIMD 패러다임은 다수의 프로세싱 요소가 단일 프로그램 제어 흐름 유닛 및 프로그램 카운터를 공유하고, 따라서 동일한 프로그램을 실행하지만, 상이한 데이터로 해당 프로그램을 실행할 수 있는 것이다. 일례에서, 각각의 SIMD 유닛(138)은 16개의 레인을 포함하고, 여기서 각각의 레인은 SIMD 유닛(138)의 다른 레인과 동일한 시간에 동일한 명령어를 실행하지만 상이한 데이터로 해당 명령어를 실행할 수 있다. 모든 레인이 주어진 명령어를 실행할 필요가 없는 경우 예측으로 레인을 끌 수 있다. 예측은 또한, 프로그램들을 분기하는(divergent) 제어 흐름으로 실행하기 위해 사용될 수 있다. 더 구체적으로, 제어 흐름이 개별 레인에 의해 수행되는 계산들에 기초하는 조건부 분기들 또는 다른 명령어들을 갖는 프로그램들에 대해, 현재 실행되고 있지 않은 제어 흐름 경로들에 대응하는 레인들의 예측, 및 상이한 제어 흐름 경로들의 직렬 실행은 자의적인 제어 흐름을 가능하게 한다.
계산 유닛(132)에서 실행의 기본 단위는 작업-항목이다. 각 작업 항목은 특정 레인에서 병렬로 실행될 프로그램의 단일 인스턴스화를 나타낸다. 작업-항목은 단일 SIMD 처리 유닛(138) 상에서 "파면(wavefront)"으로서 동시에 실행될 수 있다. 하나 이상의 파면은 동일한 프로그램을 실행하도록 지정된 작업-항목의 집합을 포함하는 "작업 그룹"에 포함된다. 작업 그룹을 구성하는 파면 각각을 실행함으로써 작업 그룹은 실행될 수 있다. 대안적으로, 파면은 단일 SIMD 유닛(138) 상에서 순차적으로 또는 상이한 SIMD 유닛(138) 상에서 부분적으로 또는 완전히 병렬로 실행된다. 파면은 단일 SIMD 유닛(138) 상에서 동시에 실행될 수 있는 작업-항목의 가장 큰 집합으로 생각될 수 있다. 따라서, 프로세서(102)로부터 수신된 커맨드가, 프로그램이 단일 SIMD 유닛(138) 상에서 동시에 실행될 수 없는 정도로 특정 프로그램이 병렬화되어야 함을 표시하는 경우, 해당 프로그램은 2개 이상의 SIMD 유닛(138) 상에 병렬화되거나 동일한 SIMD 유닛(138) 상에 직렬화되는 (또는 필요에 따라 병렬화 및 직렬화 모두) 파면으로 분할된다. 스케줄러(136)는 상이한 계산 유닛(132) 및 SIMD 유닛(138)에서 다양한 웨이브프론트를 스케줄링하는 것과 관련된 동작을 수행한다.
계산 유닛(132)에 의해 제공되는 병렬성은 픽셀 값 계산, 정점 변환 및 다른 그래픽 동작과 같은 그래픽 관련 동작에 적합하다. 따라서, 일부 경우에서, 프로세서(102)로부터 그래픽 처리 커맨드를 수용하는 그래픽 파이프라인(134)은 병렬로 실행하기 위해 계산 유닛(132)에 계산 작업을 제공한다.
계산 유닛(132)은 또한 그래픽과 관련되지 않거나 그래픽 파이프라인(134)의 "정상(normal)" 동작의 일부로서 수행되지 않는 계산 작업(예를 들어, 그래픽 파이프라인(134)의 동작을 위해 수행되는 처리를 보완하기 위해 수행된 커스텀 동작)을 수행하는 데 사용된다. 프로세서(102)에서 실행되는 애플리케이션(126) 또는 다른 소프트웨어는 이와 같은 컴퓨테이션 작업을 정의하는 프로그램을 실행하기 위해 APD(116)로 전송한다.
APD(116)는 이하에서 더 상세히 설명되는 바와 같이, 복수의 기능을 실행함으로써 본 개시의 특징을 구현하도록 구성된다. 예를 들어, APD(116)는 하나 이상의 3차원(3D) 객체를 포함하는 이미지를 수신하고, 이미지를 복수의 타일로 분할하며, 이미지의 프리미티브에 대한 가시성 패스를 실행하고, 이미지를 타일로 분할하며, 이미지의 타일에 대한 거친 레벨 타일링을 실행하고, 타일을 미세한 타일로 분할하며, 이미지의 미세 레벨 타일링을 실행하도록 구성된다. 선택적으로, 타일 중 제1 타일에 있는 것으로 결정된 프리미티브의 프론트 엔드 지오메트리 처리는 가시성 패스와 동시에 실행될 수 있다.
도 3은 도 2에 도시된 그래픽 처리 파이프라인(134)의 추가 세부사항을 나타내는 블록도이다. 그래픽 처리 파이프라인(134)은, 각각이 특정 기능을 수행하는 스테이지들을 포함한다. 스테이지는 그래픽 처리 파이프라인(134)의 기능의 세분화를 나타낸다. 각 스테이지는 프로그램 가능한 처리 유닛(202)에서 실행되는 셰이더 프로그램으로서 부분적으로 또는 전체적으로 구현되거나, 프로그램 가능한 처리 유닛(202) 외부의 고정된 기능, 프로그램 가능하지 않은 하드웨어로서 부분적으로 또는 전체적으로 구현될 수 있다. 그러나, 다른 구현이 이용될 수 있다.
스테이지(302) 내지 스테이지(313)는 그래픽 처리 파이프라인(134)의 프론트 엔드 지오메트리 처리 부분을 나타낸다. 스테이지(314) 내지 스테이지(318)는 그래픽 처리 파이프라인(134)의 백엔드 픽셀 처리 부분을 나타낸다.
입력 어셈블러 스테이지(302)는 유저-필드 버퍼(user-filled buffer)(예를 들어, 애플리케이션(126)과 같은 프로세서(102)에 의해 실행되는 소프트웨어의 요청 시에 채워진 버퍼)로부터 프리미티브 데이터를 읽고, 파이프라인의 나머지 부분에서 사용하기 위해 데이터를 프리미티브 안으로 어셈블링한다. 입력 어셈블러 스테이지(302)는 유저-필드 버퍼에 포함된 프리미티브 데이터에 기초하여 다양한 유형의 프리미티브를 생성할 수 있다. 입력 어셈블러 스테이지(302)는 나머지 파이프라인에 의해서 사용되기 위해, 어셈블된 프리미티브를 포맷한다.
정점 셰이더 스테이지(304)는 입력 어셈블러 스테이지(302)에 의해 어셈블된 프리미티브의 정점을 처리한다. 정점 셰이더 스테이지(304)는 변환, 스키닝(skinning), 모핑(morphing) 및 정점별 조명처리와 같은 다양한 정점별 동작을 수행한다. 변환 연산은 정점의 좌표를 변환하는 다양한 연산을 포함한다. 이러한 연산은 모델링 변환, 보기 변환, 투영 변환, 원근 분할, 및 뷰포트 변환 중 하나 이상을 포함한다. 여기서, 이러한 변환은 변환이 수행되는 정점의 좌표 또는 "위치"를 수정하는 것으로 간주된다. 정점 셰이더 스테이지(304)의 다른 연산은 좌표 이외의 속성을 수정한다.
정점 셰이더 스테이지(304)는 하나 이상의 계산 유닛(132) 상에서 실행될 정점 셰이더 프로그램으로서 부분적으로 또는 전체적으로 구현된다. 정점 셰이더 프로그램은 프로세서(102)에 의해 제공되고, 컴퓨터 프로그래머에 의해 미리 작성된 프로그램에 기초한다. 드라이버(122)는 이러한 컴퓨터 프로그램을 계산 유닛(132) 내에서 실행하기에 적합한 포맷을 갖는 정점 셰이더 프로그램을 생성하도록 컴파일한다.
헐 셰이더 스테이지(306), 테셀레이터 스테이지(308) 및 도메인 셰이더 스테이지(310)는, 프리미티브를 세분화하여 단순한 프리미티브를 보다 복잡한 프리미티브로 변환하는 테셀레이션을 구현하기 위해 함께 작동된다. 헐 셰이더 스테이지(306)는 입력 프리미티브에 기초하여 테셀레이션을 위한 패치를 생성한다. 테셀레이터 스테이지(308)는 패치에 대한 일 세트의 샘플을 생성한다. 도메인 셰이더 스테이지(310)는 패치에 대한 샘플에 대응하는 정점에 대한 정점 위치를 계산한다. 헐 셰이더 스테이지(306) 및 도메인 셰이더 스테이지(310)는 프로그래밍 가능한 처리 유닛(202) 상에서 실행될 셰이더 프로그램으로서 구현될 수 있다.
지오메트리 셰이더 스테이지(312)는 프리미티브 단위로 정점 연산을 수행한다. 포인트 스프린트 확장(point sprint expand), 동적 입자 시스템 연산, 퍼-핀(fur-fin) 생성, 그림자 볼륨 생성, 단일 패스 렌더-투-큐브맵(single pass render-to-cubemap), 프리미티브별 재료 스와핑, 및 프리미티브별 재료 설정과 같은 연산을 포함하여, 다양한 상이한 유형의 연산이 지오메트리 셰이더 스테이지(312)에 의해 수행될 수 있다. 일부 예에서, 프로그래밍 가능한 처리 유닛(202) 상에서 실행되는 셰이더 프로그램은 지오메트리 셰이더 스테이지(312)에 대한 연산을 수행한다.
비너(타일러) 스테이지(313)는 프론트 엔드 처리의 마지막 스테이지이다. 비너 스테이지는 프레임(또는 이미지)의 타일(또는 빈)이 프리미티브와 중첩되는지 여부를 결정하기 위해 거친 래스터화를 수행한다. 예를 들어, 비너 스테이지는 가시성 검사(즉, 가시성 패스) 및 각 타일에 있는 것으로 결정된 프리미티브에 대한 타일 워킹을 포함한다. 이러한 실시예에서, 비너 스테이지(313)는 고정 기능 하드웨어에 의해 수행된다.
전술한 바와 같이, 스테이지(314) 내지 스테이지(318)는 그래픽 처리 파이프라인(134)의 백엔드 처리를 나타낸다. 래스터라이저 스테이지(314)는 단순 프리미티브 및 생성된 업스트림을 수용하고 래스터화한다. 래스터화는 특정 프리미티브에 커버되는 화면 픽셀(또는 하위-픽셀 샘플)을 결정하는 것을 포함한다. 예를 들어, 래스터라이저 스테이지(314)는 프리미티브(예를 들어, 삼각형)를 스크린 공간 픽셀로 변환하여, 어느 픽셀이 프리미티브에 의해 커버되는지를 테스트한다. 이 실시예에서, 래스터화는 고정 기능 하드웨어에 의해 수행된다.
픽셀 셰이더 스테이지(316)는 업스트림에서 생성된 프리미티브 및 래스터화 결과에 기초하여 스크린 픽셀에 대한 출력 값을 계산한다. 픽셀 셰이더 스테이지(316)는 텍스처 메모리로부터의 텍스처를 적용할 수 있다. 픽셀 셰이더 스테이지(316)에 대한 연산은 프로그래밍 가능한 처리 유닛(202) 상에서 실행되는 셰이더 프로그램에 의해 수행된다.
출력 병합 스테이지(318)는 픽셀 셰이더 스테이지(316)로부터의 출력을 수용하고, 이러한 출력을 병합하여, 스크린 픽셀에 대한 최종 색상을 결정하기 위해 z-테스트 및 알파 블렌딩과 같은 연산을 수행한다.
텍스처를 정의하는 텍스처 데이터는 텍스처 유닛(320)에 의해 저장되고/되거나 액세스된다. 텍스처는 그래픽 처리 파이프라인(134)의 다양한 지점에서 사용되는 비트맵 이미지이다. 예를 들어, 일부 경우에서, 픽셀 셰이더 스테이지(316)는 렌더링될 정점의 수를 증가시키지 않고 명백한 렌더링 복잡성을 개선하기 위해(예를 들어, 더 "사실적인" 모습을 제공하기 위해) 픽셀에 텍스처를 적용한다.
일부 예에서, 정점 셰이더 스테이지(304)는, 예를 들어, 개선된 미학을 위해 정점을 생성 또는 수정함으로써 복잡성을 증가시키기 위해 프리미티브를 수정하기 위해 텍스처 유닛(320)으로부터의 텍스처 데이터를 사용한다. 일 예에서, 정점 셰이더 스테이지(304)는 정점의 변위를 수정하기 위해 텍스처 유닛(320)에 저장된 높이 맵을 사용한다. 이러한 유형의 기술은, 예를 들어, 물을 렌더링하기 위해서 사용되는 정점의 위치 및 수를 수정함으로써, 픽셀 셰이더 스테이지(316)에서만 사용되는 텍스처와 비교하여 보다 사실적으로 보이는 물을 생성하기 위해서 사용될 수 있다. 일부 경우에서, 지오메트리 셰이더 스테이지(312)는 텍스처 유닛(320)으로부터 텍스처 데이터에 액세스한다.
도 4는 본 개시의 특징에 따른 디스플레이용 이미지를 렌더링하는 예시적인 방법을 나타내는 흐름도이다. 도 4의 방법을 설명하기 위해 사용되는 도 5는 본 개시의 특징에 따른 디스플레이용 이미지(500)를 렌더링하는 예시를 나타내는 개략도이다.
블록(402)에 도시된 바와 같이, 방법(400)은 하나 이상의 3D 객체를 포함하는 이미지를 수신하는 단계를 포함한다. 예를 들어, 이미지는 APD(116)에 의해 수신된다. 이미지는 2D 디스플레이 스크린에서 렌더링하기 위해 변환될 임의의 수의 객체를 포함할 수 있다.
블록(404)에 도시된 바와 같이, 방법(400)은 이미지를 복수의 타일로 분할하는 단계를 포함한다. 간단한 설명을 위해, 도 5에 도시된 예는 네 개의 동일한 타일(즉, 좌측 상부 사분면, 우측 상부 사분면, 좌측 하부 사분면 및 우측 하부 사분면)로 분할된 이미지(또는 프레임)(500)를 포함한다. 그러나, 이미지(또는 프레임)는 거친 레벨 타일링을 위해 임의의 수의 타일(예를 들어, 32개의 타일)로 분할될 수 있다. 타일의 수는 스크린 해상도와 무관하다.
블록(406)에 도시된 바와 같이, 방법(400)은 이미지의 제1 타일(빈)의 거친 레벨 타일링(비닝)을 실행하는 단계를 포함한다. 실시예(400)에서, 거친 레벨 타일링은 고정 기능 하드웨어를 통해 실행된다. 즉, 렌더링 명령(예를 들어, 커맨드 버퍼에 저장된 애플리케이션 또는 프로그램으로부터의 명령)은 고정 기능 하드웨어를 통해 각 타일에 대한 가시성 정보(즉, 프레임에 대해 실행된 가시성 패스로부터)를 사용하여 제1 타일(타일 0)에 대해 실행된다. 거친 레벨 타일링 가시성 정보는 타일 0을 렌더링하는 동안 생성된다. 타일은 픽셀 단위로 처리되고, 프리미티브에 대응하는 픽셀이 타일에 위치되는지 여부는 래스터화 중에(예를 들어, GPU와 같은 가속화된 프로세서에 의해) 결정된다. 예를 들어, 타일 0에 대해 생성된 거친 레벨 타일 가시성 정보는 삼각형(트라이 1)이 타일 0에 위치됨을 나타낸다.
블록(408)에 도시된 바와 같이, 거친 레벨 타일링이 다음 타일(즉, 도 5의 타일 1)에 대해 실행되기 전에, 타일 0에 대해 미세 레벨 타일링이 실행된다. 즉, 도 5에 도시된 바와 같이, 타일 0은 다수의 미세한(더 작은) 타일로 분할된다. 본 출원의 특징을 구현하는 데 임의의 수의 미세 타일이 사용될 수 있다. 미세 레벨 타일링(예를 들어, 프리미티브 배치 타일링)은, 거친 레벨 타일링(도 6과 관련하여 아래에서 더 상세히 설명되는 바와 같이)을 실행하는 데 사용되는 것과 동일한 고정 기능 하드웨어를 통해 실시예(400)에서 실행되며, 이는 로컬 메모리(예를 들어, 온칩 캐시)를 이용하여 프리미티브(예를 들어, 삼각형)의 배치를 축적하고 프리미티브를 한 번에 하나의 미세 타일로 렌더링한다.
블록(410)에 도시된 바와 같이, 이미지(프레임)에 다음 타일이 포함되는지 여부가 결정된다. 이미지가 다음 타일을 포함하는 것으로 결정될 때, 방법(400)은 블록(406)으로 돌아가서 다음 타일에 대한 거친 레벨 타일링을 실행한 다음, 다음 타일에 대해 미세 레벨 타일링을 실행한다. 예를 들어, 도 5에 도시된 예를 사용하여, 이미지(500)가 다음 타일(타일 1) 을 포함하는 것으로 결정될 때, 블록(406)에서 타일 1에 대해 거친 레벨 타일링이 실행된 다음, 타일 1에 대해 미세 레벨 타일링이 실행된다. 이어서, 방법은 이미지의 나머지 각 타일에 대해 거친 레벨 타일링 및 미세 레벨 타일링을 실행하도록 진행한다. 예를 들어, 도 5에 도시된 예를 사용하여, 방법(400)은 타일 2에 대해 거친 레벨 타일링 및 미세 레벨 타일링을 실행한 다음, 타일 3에 대해 거친 레벨 타일링 및 미세 레벨 타일링을 실행한다.
블록(410)에서, 이미지가 다음 타일을 포함하지 않는 것으로 결정될 때, 방법은 블록(412)을 진행하여 다음 이미지(프레임)를 처리한다. 예를 들어, 도 5에 도시된 예를 사용하여, 블록(410)에서 이미지(500)가 다음 타일을 포함하지 않는 것으로 결정될 때(즉, 타일 3에 대해 거친 레벨 타일링 및 미세 레벨 타일링이 실행된 후), 방법(400)은 다음 이미지(프레임)를 렌더링하기 위해 블록(412)을 진행한다.
도 6은 본 개시의 특징에 따른 디스플레이용 이미지의 제1 타일을 렌더링하는 예시적인 흐름을 나타내는 예시적 디바이스의 구성요소의 블록도이다. 도 6은 예를 들어, 도 5에 도시된 이미지(500)의 제1 타일(타일 0)의 거친 레벨 타일링 및 미세 레벨 타일링을 실행하는 것을 나타낸다.
도 6에 도시된 바와 같이, 명령은 이미지 타일의 렌더링을 실행하기 위해 프로세서(604)(예를 들어, GPU)에 의해 커맨드 스트림(602)을 통해 수신된다. 예를 들어, 명령은 커맨드 버퍼(도시되지 않음)에 저장된다. 프로세서(604)는 렌더링될 프리미티브(예를 들어, 삼각형)의 속성을 지오메트리 엔진(GE)(606)에 제공한다.
예를 들어, GE(606)는 인덱스 버퍼(608)로부터 인덱스 정보를 수신하고, 처리를 위해 프로세서(604)에 의해 제공되는 속성 정보를 셰이더(비고정 기능 하드웨어)에 전달한다. 예를 들어, 삼각형의 정점은 로컬(예를 들어, 정점 버퍼)에 저장된다. 인덱스 정보는 각 삼각형에 대해, 정점 버퍼에 저장된 정점 중 어느 세 점이 삼각형의 정점인지를 나타낸다. 즉, 인덱스 정보는 정점의 연결성을 설명한다. 예를 들어, 에지를 공유하지 않는 2 개의 삼각형은 6 개의 정점으로 구성되는 반면, 에지를 공유하는 2 개의 삼각형은 4 개의 정점으로 구성된다. 6 개의 정점으로 구성된 2 개의 삼각형의 경우, 2 개의 삼각형의 인덱스는 (0, 1, 2) (3, 4, 5)일 수 있고, 4 개의 정점으로 구성된 2 개의 삼각형의 경우, 2 개의 삼각형의 인덱스는 (0, 1, 2) (1, 2, 3)일 수 있다. GE는 하드웨어(예를 들어, 고정 기능 하드웨어), 소프트웨어 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다.
셰이더(610)는 프리미티브를 3D 객체로 수신하고, 프리미티브를 2D 객체로 변환하여 2D 스크린에 렌더링한다. 예를 들어, 셰이더(610)는 프레임 내 삼각형의 정점 위치를 결정한다. 위치 정보는 프리미티브 어셈블러(612)에 제공된다. 추가 정보(예를 들어, 색상 및 텍스처 정보)도 로컬 메모리의 프리미티브 캐시 부분(616)에 제공된다.
프리미티브 어셈블러(612)는 셰이더(610)에 의해 결정된 위치 정보를 사용하여 정점을 조합하고 각 삼각형의 정점 위치로부터 프레임 내의 각 삼각형의 위치를 결정한다. 이어서, 위치 정보는 프리미티브 타일러 및 래스터라이저(614) (프리미티브 비너 및 래스터라이저라고도 지칭됨) 뿐만 아니라 프리미티브 캐시 부분(616)에 제공된다.
이 예시적인 실시예의 프리미티브 타일러 및 래스터라이저(614)는 두 가지 상이한 기능을 수행하는 고정 기능 하드웨어 블록을 나타낸다. 즉, 동일한 고정 기능 하드웨어가 거친 레벨 타일링과 타일링 미세 레벨 타일링을 모두 실행하는 데 사용된다. 프리미티브 타일러 및 래스터라이저(614)는 이미지(프레임)를 거친 타일로 분할하고, 거친 타일을 미세 타일로 분할한다. 프리미티브 타일러 및 래스터라이저(614)는 거친 레벨 타일링(즉, 거친 레벨 래스터화)을 실행하여, 각 프리미티브(예를 들어, 삼각형)가 위치한 거친 타일을 결정한다. 즉, 프리미티브 타일러 및 래스터라이저(614)는 각각의 거친 타일에 대해, 거친 타일에서 각 삼각형의 가시성을 결정한다. 예를 들어, 도 5에 도시된 예를 사용하여, 프리미티브 타일러 및 래스터라이저(614)는 삼각형 트라이 1이 타일 0에 위치한다고 결정한다. 위치 정보는 가시성 정보(618)로서 로컬 메모리(예를 들어, 캐시 메모리)에 저장된다. 프리미티브 타일러 및 래스터라이저(614)는 또한 미세 레벨 타일링을 실행하며, 이는 로컬 메모리(예를 들어, 온칩 캐시)를 활용하여 프리미티브(예를 들어, 삼각형)의 배치를 축적하고, 프리미티브를 한 번에 하나의 미세 타일로 렌더링한다.
프리미티브 타일러 및 래스터라이저(614)는 2D 스크린에 투영될 각 프리미티브의 스크린 상의 위치를 결정한다. 예를 들어, 래스터화 중에 가속 처리 디바이스(예를 들어, GPU)는 각 프리미티브에 대해 2D 스크린에 렌더링될 각 프리미티브에 해당하는 픽셀(또는 서브픽셀 샘플)을 결정한다. 픽셀 셰이더 스테이지 동안, 프리미티브에 대응하는 픽셀에 대한 값(예를 들어, 밝기 및 색상)이 계산되어 픽셀 파이프(620)에 제공된다.
도 7은 본 개시의 특징에 따른 디스플레이용 이미지의 다른 타일 각각(즉, 제1 타일 이외의 나머지 타일)을 렌더링하는 예시적인 방법을 나타내는 흐름도이다. 도 7은 예를 들어, 도 5에 도시된 이미지(500)의 타일 1, 타일 2 및 타일 3 타일의 거친 레벨 타일링 및 미세 레벨 타일링을 실행하는 것을 나타낸다.
나머지 각 타일을 렌더링할 때, 프로세서(404)는 타일 0에 대한 명령과 동일한 명령을 실행하지만, 도 6에 도시된 바와 같이, 로컬 메모리에 저장된 가시성 정보(418)는 나머지 타일에 대한 데이터(예를 들어, 프리미티브)의 처리(예를 들어, 불필요한 처리)를 감소시키는 데 이용된다. 예를 들어, 도 5에 도시된 예를 사용하여, 타일 0을 처리하는 동안 결정되며, 도 5에 도시된 삼각형 1(트라이 1)이 타일 1에 위치하지 않는 것으로 결정된다. 따라서, 타일 1을 처리할 때 트라이 1의 처리를 회피한다.
도 7에 도시된 바와 같이, 저장된 가시성 정보(418)는 두 종류의 가시성 정보, 즉, 드로우 호출 가시성 정보(702)와 삼각형 가시성 정보(704)로 분할된다. 가시성 정보(418)는 각 타일에 대한 드로우(삼각형과 같은 하나 이상의 프리미티브를 각각 포함)를 나타낸다. 드로우 호출 가시성 정보(702)는 처리 중인 타일에 대해 어떤 드로우가 포함되는지를 나타내고, 삼각형 가시성 정보(704)는 처리 중인 타일에 각 드로우의 어떤 삼각형이 포함되는지를 나타낸다.
예를 들어, 도 5의 예시적인 이미지(500)를 사용하여 두 개의 삼각형(트라이 1 및 트라이 2)이 포함되는 경우, 명령은 "드로우 1: 트라이 1, 트라이 2"일 수 있다. 즉, 명령은 드로우(예를 들어, 드로우 1)를 나타내고, 드로우 내부의 삼각형(예를 들어, 드로우 1에는 트라이 1 및 트라이 2가 포함됨)을 나타낸다. 프로세서(604)는 각 타일에 대해 동일한 명령을 수신한다. 예를 들어, 단지 한 개의 드로우 명령이 있다고 가정하면, 제1 타일 (타일 0)을 처리할 때, 타일 0에 대한 가시성 정보(618)는 트라이 1이 타일 0에 표시되지만 트라이 2가 타일 0에 표시되지 않는 것으로 결정된다. 제2 타일(타일 1)을 처리할 때, 드로우 호출 가시성 정보(702)는 드로우 1에 삼각형 하나가 포함되어 있음을 나타내며, 타일 1에 대한 삼각형 가시성 정보(704)는 타일 0의 처리 중에 트라이 1이 타일 1에 없는 것으로 결정되었기 때문에 트라이 2로 결정된다.
타일 2를 처리할 때, 드로우 호출 가시성 정보(702)는 다시 드로우 1에 단지 하나의 삼각형이 포함되고 타일 2에 대한 삼각형 가시성 정보(704)는 트라이 1로 결정됨을 나타낸다. 타일 3을 처리할 때, 드로우 호출 가시성 정보(702)는 다시 드로우 1에 단지 하나의 삼각형이 포함되고 타일 3에 대한 삼각형 가시성 정보(704)는 트라이 2로 결정됨을 나타낸다. 따라서, 불필요한 처리(예를 들어, 타일 2, 타일 2 및 타일 3 내의 제2 삼각형)를 피한다. 이어서, 도 7의 나머지 블록(610) 내지 블록(620)은 도 6과 관련하여 전술된 바와 동일한 기능을 수행한다.
종래의 TLPBB 흐름에서, 비너 하드웨어가 프리미티브를 래스터화하고 프리미티브 컬링 및 설정 후 임의의 깊이 처리 전에 가시성 정보를 수집한다. 일부 프리미티브 또는 드로우는 초기 깊이 테스트를 통해 제거되지만, 종래의 흐름에서, 이들은 여전히 가시적으로 마킹되고 렌더링 단계에서 다시 처리된다.
따라서, 아래에 설명되는 바와 같이, 가시성 수집은 초기 깊이 테스트 후까지 연기된다. 위에서 언급된 프리미티브 및 드로우는 보이지 않는 것으로 마킹될 수 있고 렌더링 단계에서 스킵될 수 있다. 또한, 가시성 단계에서 초기 깊이 테스트를 수행하면 렌더링 단계에서 오버드로우를 감소시키기 위해 사용할 수 있는 깊이 버퍼를 설정하는 데 이용될 수 있다.
도 8은 두 레벨 비닝을 통한 포스트 깊이 가시성 수집의 특징에 따른 디스플레이용 이미지 타일을 렌더링하는 예시적인 방법을 나타내는 흐름도이다. 도 8은 커맨드 스트림(802), 커맨드 프로세서(804), 지오메트리 엔진(806), 인덱스 버퍼(808), 셰이더(810), 프리미티브 어셈블러(812), 프리미티브 배치 기반 빈 렌더링/스케일 래스터라이저(PBB/SC)(814)(프리미티브 비너 및 래스터라이저(614)와 유사), 프리미티브 캐시(816), 비너(817), 깊이 백엔드(821) 및 셰이더(822)를 포함한다.
도 8에 도시된 구성요소는 대체로 도 6 및 도 7에 도시된 구성요소와 동일한 기능을 수행한다. 깊이 백엔드(821) 및 셰이더(822)는 예를 들어, 도 6 및 도 7의 픽셀 파이프(620)에 있는 컴포넌트이다. 그러나, 예를 들어 도 6에 도시된 바와 같이, 가시성 정보(618)는 프리미티브 어셈블러(612) 이후에 프리미티브 타일러 및 래스터라이저(614)에 의해 수집된다.
도 8에서, 가시성 정보(818)는 깊이 백엔드(821)에 의해 깊이가 결정된 후에 비너(817)에 의해 수집된다. 따라서, 차단된 것으로 판단될 수 있는 삼각형이나 다른 객체 뒤에 존재하여 보이지 않는 픽셀은 처리를 위해 가시성 정보(818)에 포함되지 않는다.
따라서, 상술한 바와 같이, 렌더링 중에 보이지 않는 프리미티브를 처리하는 데 더 적은 리소스가 사용된다. 즉, 가시성 단계에서, 모든 프리미티브가 래스터화되고 깊이 버퍼를 업데이트하기 위해 깊이를 테스트한다. 깊이 테스트를 통과한 프리미티브만이 가시성 생성을 위해 비너로 전송된다. 가시성 패스에서 나온 깊이 테스트의 깊이 버퍼 결과는 빈 렌더링 단계에서 사용된다.
따라서, 프리미티브 가시성을 계산하기 위해 포스트 깊이 테스트 정보를 사용하는 두 레벨 비닝 방법을 설명한다. 상기 방법의 실시예는 종래의 두 레벨 비닝 위에 구현될 수 있다. 또한, 상술한 방법은 거친 래스터라이저가 필요하지 않으며, 파이프라인에서 미세 래스터라이저에 의해 생성된 정보를 사용할 수 있다. 전체 프레임에 대한 깊이 버퍼는 가시성을 생성하는 동안에 구축되며, 이는 거친 빈 렌더링 단계에서 사용하면 더 많은 오버 드로우를 감소시킨다.
비너를 나중에(예를 들어, 깊이 백엔드 이후) 재배치함으로써, 깊이 테스트를 견디는 삼각형(또는 타일)에 대해서만 가시성 정보를 생성한다. 즉, 다른 객체 뒤로 추락/렌더링할 수 있는 객체는 컬링된다. 따라서, 비너는 해당 삼각형에 대한 가시성 정보를 기록하지 않는다.
이렇게 하면 가시성 스트림 외부로 나가는 트래픽 및 데이터 처리를 절약할 수 있다. 또한, 재처리가 발생하는 제2 단계에서 해당 삼각형은 처리를 위해 스킵될 수 있다. 해당 삼각형은 보이지 않기 때문에 처리되지 않으므로 처리 시간이 절약된다.
본 명세서의 개시내용에 기초하여 많은 변형들이 가능하다는 것이 이해되어야 한다. 특징 및 엘리먼트가 특정 조합으로 위에서 설명되었지만, 각각의 특징 또는 엘리먼트는 다른 특징 및 엘리먼트 없이 단독으로 또는 다른 특징 및 엘리먼트를 갖거나 갖지 않는 다양한 조합으로 사용될 수 있다.
도면에 도시되고/되거나 본 명세서에 설명된 다양한 기능 유닛(프로세서(102), 입력 드라이버(112), 입력 디바이스(108), 출력 드라이버(114), 출력 디바이스(110), APD(116), 스케줄러(136), 그래픽 처리 파이프라인(134), 계산 유닛(132), SIMD 유닛(138)이 포함되나 이에 제한되지 않음)은 범용 컴퓨터, 프로세서 또는 프로세서 코어, 또는 프로그램, 소프트웨어 또는 펌웨어로 구현될 수 있고, 비일시적 컴퓨터 판독 가능 매체 또는 범용 컴퓨터, 프로세서 또는 프로세서 코어에 의해 실행 가능한 다른 매체에 저장될 수 있다. 제공된 방법들은 범용 컴퓨터, 프로세서, 또는 프로세서 코어에서 구현될 수 있다. 적합한 프로세서들은, 예를 들어, 범용 프로세서, 특수 목적 프로세서, 종래의 프로세서, 디지털 신호 프로세서(DSP), 복수의 마이크로프로세서들, DSP 코어와 연관된 하나 이상의 마이크로프로세서들, 제어기, 마이크로제어기, ASICs(Application Specific Integrated Circuits), FPGAs(Field Programmable Gate Arrays) 회로들, 임의의 다른 유형의 집적 회로(IC), 및/또는 상태 머신을 포함한다. 이러한 프로세서들은 프로세싱된 하드웨어 기술 언어(HDL) 명령어들의 결과들 및 넷리스트들을 포함하는 다른 중간 데이터(이러한 명령어들은 컴퓨터 판독 가능 매체 상에 저장될 수 있음)를 사용하여 제조 프로세스를 구성함으로써 제조될 수 있다. 이러한 프로세싱의 결과는 본 개시의 특징을 구현하는 프로세서를 제조하기 위해 반도체 제조 공정에 사용되는 마스크워크일 수 있다.
본 명세서에 제공된 방법들 또는 흐름도는 범용 컴퓨터 또는 프로세서에 의한 실행을 위해 비일시적 컴퓨터 판독 가능 스토리지 매체에 통합된 컴퓨터 프로그램, 소프트웨어 또는 펌웨어로 구현될 수 있다. 비일시적 컴퓨터 판독 가능 스토리지 매체의 예로는 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 레지스터, 캐시 메모리, 반도체 메모리 디바이스, 내부 하드 디스크 및 이동식 디스크와 같은 자기 매체, 자기 광학 매체, CD-ROM 디스크 및 디지털 다목적 디스크(DVD)와 같은 광학 매체를 포함한다.

Claims (25)

  1. 컴퓨터 시스템에서 디스플레이용 이미지를 타일 렌더링하는 방법으로서,
    상기 컴퓨터 시스템의 그래픽 파이프라인에서 하나 이상의 3차원(3D) 객체를 포함하는 상기 이미지를 수신하는 단계; 및
    깊이 테스트에 기초하여, 상기 이미지의 프리미티브를 하나 이상의 타일로 비닝하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 깊이 테스트는 상기 하나 이상의 타일에서 하나 이상의 프리미티브의 가시성을 결정하는, 방법.
  3. 제2항에 있어서,
    제1 타일에 상주하는 제1 프리미티브의 가시성 정보는, 상기 제1 프리미티브를 가시성 프리미티브로 결정하는 상기 깊이 테스트에 기초하여 비닝되는, 방법.
  4. 제3항에 있어서,
    상기 깊이 테스트에서 보이지 않는 것으로 결정된 상기 제1 타일에 상주하는 제2 프리미티브의 가시성 정보는 폐기되는, 방법.
  5. 제4항에 있어서,
    상기 깊이 테스트에서 보이지 않는 것으로 결정된 제2 타일에 상주하는 제3 프리미티브의 가시성 정보는 폐기되는, 방법.
  6. 제4항에 있어서,
    다른 객체에 의해 차단된 것으로 결정된 프리미티브는 가시성 프리미티브가 아닌 프리미티브로 식별되는, 방법.
  7. 제2항에 있어서,
    가시성인 것으로 결정된 하나 이상의 프리미티브는 디스플레이되도록 렌더링되는, 방법.
  8. 컴퓨터 시스템에서 디스플레이용 이미지의 타일 렌더링을 위한 처리 장치로서,
    메모리; 및
    상기 메모리에 통신적으로 결합된 프로세서를 포함하고, 상기 프로세서는,
    그래픽 파이프라인에서 하나 이상의 3차원(3D) 객체를 포함하는 이미지를 수신하도록; 그리고
    깊이 테스트에 기초하여, 상기 이미지의 프리미티브를 하나 이상의 타일로 비닝(bin)하도록 구성되는, 처리 장치.
  9. 제8항에 있어서,
    상기 깊이 테스트의 상기 프로세서는 상기 하나 이상의 타일에서 하나 이상의 프리미티브의 가시성을 결정하는, 처리 장치.
  10. 제9항에 있어서,
    상기 프로세서는 제1 프리미티브를 가시성 프리미티브로 결정하는 상기 깊이 테스트에서 제1 타일에 상주하는 상기 제1 프리미티브의 가시성 정보를 비닝하는, 처리 장치.
  11. 제10항에 있어서,
    상기 프로세서는 상기 깊이 테스트에서 보이지 않는 것으로 결정된 상기 제1 타일에 상주하는 제2 프리미티브의 가시성 정보를 폐기하는, 처리 장치.
  12. 제11항에 있어서,
    상기 프로세서는 상기 깊이 테스트에서 보이지 않는 것으로 결정된 제2 타일에 상주하는 제3 프리미티브의 가시성 정보를 폐기하는, 처리 장치.
  13. 제11항에 있어서,
    상기 프로세서는 다른 객체에 의해 차단된 것으로 결정된 프리미티브를 가시성 프리미티브가 아닌 상기 프리미티브로 식별하는, 처리 장치.
  14. 제9항에 있어서,
    가시성인 것으로 결정된 하나 이상의 프리미티브를 디스플레이하기 위한 프로세서 렌더링을 추가로 포함하는, 처리 장치.
  15. 컴퓨터 시스템에서 디스플레이용 이미지의 타일 렌더링을 위한 비일시적 컴퓨터 판독 가능 매체로서, 명령이 기록된 상기 비일시적 컴퓨터 판독 가능 매체가 프로세서에 의해 실행될 때 상기 프로세서는,
    상기 컴퓨터 시스템의 그래픽 파이프라인에서 하나 이상의 3차원(3D) 객체를 포함하는 상기 이미지를 수신하는 것; 및
    깊이 테스트에 기초하여, 상기 이미지의 프리미티브를 하나 이상의 타일로 비닝하는 것을 포함하는 동작을 수행하게 하는, 비일시적 컴퓨터 판독 가능 매체.
  16. 제15항에 있어서,
    상기 깊이 테스트는 상기 하나 이상의 타일에서 하나 이상의 프리미티브의 가시성을 결정하는, 비일시적 컴퓨터 판독 가능 매체.
  17. 제16항에 있어서,
    제1 타일에 상주하는 제1 프리미티브의 가시성 정보는 상기 제1 프리미티브를 가시성 프리미티브로 결정하는 상기 깊이 테스트에 기초하여 비닝되는, 비일시적 컴퓨터 판독 가능 매체.
  18. 제17항에 있어서,
    상기 깊이 테스트에서 보이지 않는 것으로 결정된 상기 제1 타일에 상주하는 제2 프리미티브의 가시성 정보는 폐기되는, 비일시적 컴퓨터 판독 가능 매체.
  19. 제18항에 있어서,
    상기 깊이 테스트에서 보이지 않는 것으로 결정된 제2 타일에 상주하는 제3 프리미티브의 가시성 정보는 폐기되는, 비일시적 컴퓨터 판독 가능 매체.
  20. 제18항에 있어서,
    다른 객체에 의해 차단된 것으로 결정된 프리미티브는 가시성 프리미티브가 아닌 상기 프리미티브로 식별되는, 비일시적 컴퓨터 판독 가능 매체.
  21. 컴퓨터 시스템에서 디스플레이용 이미지의 타일 렌더링을 위한 비일시적 컴퓨터 판독 가능 매체로서, 명령이 기록된 상기 비일시적 컴퓨터 판독 가능 매체는 프로세서를 생성하기 위해 적응되고, 적응된 프로세서는,
    상기 컴퓨터 시스템의 그래픽 파이프라인에서 하나 이상의 3차원(3D) 객체를 포함하는 이미지를 수신하는 것; 및
    깊이 테스트에 기초하여, 상기 이미지의 프리미티브를 하나 이상의 타일로 비닝하는 것을 포함하는 기능을 수행하는, 비일시적 컴퓨터 판독 가능 매체.
  22. 제21항에 있어서,
    상기 깊이 테스트는 상기 하나 이상의 타일에서 하나 이상의 프리미티브의 가시성을 결정하는, 비일시적 컴퓨터 판독 가능 매체.
  23. 제22항에 있어서,
    제1 타일에 상주하는 제1 프리미티브의 가시성 정보는, 상기 제1 프리미티브를 가시성 프리미티브로 결정하는 상기 깊이 테스트에 기초하여 비닝되는, 비일시적 컴퓨터 판독 가능 매체.
  24. 제23항에 있어서,
    상기 깊이 테스트에서 보이지 않는 것으로 결정된 상기 제1 타일에 상주하는 제2 프리미티브의 가시성 정보는 폐기되는, 비일시적 컴퓨터 판독 가능 매체.
  25. 제24항에 있어서,
    상기 깊이 테스트에서 보이지 않는 것으로 결정된 제2 타일에 상주하는 제3 프리미티브의 가시성 정보는 폐기되는, 비일시적 컴퓨터 판독 가능 매체.
KR1020237034856A 2021-03-31 2022-03-03 두 레벨 비닝을 통한 포스트 깊이 가시성 수집 KR20230162006A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202163168875P 2021-03-31 2021-03-31
US63/168,875 2021-03-31
US17/562,872 2021-12-27
US17/562,872 US20220319091A1 (en) 2021-03-31 2021-12-27 Post-depth visibility collection with two level binning
PCT/US2022/018795 WO2022211966A1 (en) 2021-03-31 2022-03-03 Post-depth visibility collection with two level binning

Publications (1)

Publication Number Publication Date
KR20230162006A true KR20230162006A (ko) 2023-11-28

Family

ID=83448168

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237034856A KR20230162006A (ko) 2021-03-31 2022-03-03 두 레벨 비닝을 통한 포스트 깊이 가시성 수집

Country Status (6)

Country Link
US (1) US20220319091A1 (ko)
EP (1) EP4315258A1 (ko)
JP (1) JP2024511763A (ko)
KR (1) KR20230162006A (ko)
CN (1) CN117083637A (ko)
WO (1) WO2022211966A1 (ko)

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5579455A (en) * 1993-07-30 1996-11-26 Apple Computer, Inc. Rendering of 3D scenes on a display using hierarchical z-buffer visibility
US5600763A (en) * 1994-07-21 1997-02-04 Apple Computer, Inc. Error-bounded antialiased rendering of complex scenes
US6480205B1 (en) * 1998-07-22 2002-11-12 Nvidia Corporation Method and apparatus for occlusion culling in graphics systems
US7068272B1 (en) * 2000-05-31 2006-06-27 Nvidia Corporation System, method and article of manufacture for Z-value and stencil culling prior to rendering in a computer graphics processing pipeline
US6359623B1 (en) * 1998-11-12 2002-03-19 Hewlett-Packard Company Method and apparatus for performing scan conversion in a computer graphics display system
US6525726B1 (en) * 1999-11-02 2003-02-25 Intel Corporation Method and apparatus for adaptive hierarchical visibility in a tiled three-dimensional graphics architecture
US20020196252A1 (en) * 2001-06-20 2002-12-26 Min-Hao Liao Method and apparatus for rendering three-dimensional images with tile-based visibility preprocessing
US7091971B2 (en) * 2001-10-29 2006-08-15 Ati Technologies, Inc. System, method, and apparatus for multi-level hierarchical Z buffering
GB2468994B (en) * 2008-01-23 2012-11-28 Intel Corp Method, apparatus and computer program product for improved graphics performance
KR102116708B1 (ko) * 2013-05-24 2020-05-29 삼성전자 주식회사 그래픽스 프로세싱 유닛
KR20160063081A (ko) * 2014-11-26 2016-06-03 삼성전자주식회사 선택적 테셀레이션 방법 및 장치
US11195326B2 (en) * 2018-09-21 2021-12-07 Advanced Micro Devices, Inc. Method and system for depth pre-processing and geometry sorting using binning hardware
US11055904B2 (en) * 2019-08-27 2021-07-06 Arm Limited Optimizing depth testing in graphics processing systems that perform early and late depth testing

Also Published As

Publication number Publication date
JP2024511763A (ja) 2024-03-15
EP4315258A1 (en) 2024-02-07
WO2022211966A1 (en) 2022-10-06
CN117083637A (zh) 2023-11-17
US20220319091A1 (en) 2022-10-06

Similar Documents

Publication Publication Date Title
KR102486347B1 (ko) 프리미티브 셰이더
KR102192065B1 (ko) 가변 레이트 셰이딩
KR20210095914A (ko) 가변 레이트 셰이딩과 슈퍼 샘플 셰이딩의 통합
KR102266962B1 (ko) 그래픽 파이프라인의 메모리 사용 감소를 위한 컴파일러 지원 기술
JP2019526128A (ja) 自動的にコンパイルされたコンピュートシェーダを用いるプリミティブカリング
JP2019537164A (ja) Zカリング後の重複フラグメントの除去又は識別
US20180211434A1 (en) Stereo rendering
CN110192225B (zh) 无序像素着色器导出
US11972518B2 (en) Hybrid binning
US11741653B2 (en) Overlapping visibility and render passes for same frame
US20220414939A1 (en) Render target compression scheme compatible with variable rate shading
KR20230162006A (ko) 두 레벨 비닝을 통한 포스트 깊이 가시성 수집
US11880924B2 (en) Synchronization free cross pass binning through subpass interleaving
US11900499B2 (en) Iterative indirect command buffers
US20210398349A1 (en) Fine grained replay control in binning hardware
US20240104685A1 (en) Device and method of implementing subpass interleaving of tiled image rendering
US20240169641A1 (en) Vertex index routing through culling shader for two level primitive batch binning
US20230298261A1 (en) Distributed visibility stream generation for coarse grain binning