KR20180102563A - 다수의 레벨들의 디테일을 렌더링하기 위한 시스템들 및 방법들 - Google Patents

다수의 레벨들의 디테일을 렌더링하기 위한 시스템들 및 방법들 Download PDF

Info

Publication number
KR20180102563A
KR20180102563A KR1020187019465A KR20187019465A KR20180102563A KR 20180102563 A KR20180102563 A KR 20180102563A KR 1020187019465 A KR1020187019465 A KR 1020187019465A KR 20187019465 A KR20187019465 A KR 20187019465A KR 20180102563 A KR20180102563 A KR 20180102563A
Authority
KR
South Korea
Prior art keywords
zone
data
electronic device
window
image
Prior art date
Application number
KR1020187019465A
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 KR20180102563A publication Critical patent/KR20180102563A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • 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
    • 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
    • G06T3/00Geometric image transformation in the plane of the image
    • G06T3/0012Context preserving transformation, e.g. by using an importance map
    • G06T3/04
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/02Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the way in which colour is displayed
    • G09G5/026Control of mixing and/or overlay of colours in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/36Level of detail
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/14Solving problems related to the presentation of information to be displayed
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2354/00Aspects of interface with display user

Abstract

전자 디바이스가 설명된다. 전자 디바이스는 프로세서를 포함한다. 프로세서는 이미지의 제 1 존을 렌더링하도록 구성된다. 프로세서는 또한, 이미지의 제 2 존을 렌더링하도록 구성된다. 제 1 존은 제 2 존보다 더 높은 테슬레이팅된 레벨의 디테일을 갖는다. 프로세서는 또한, 제 1 존 및 제 2 존을 적어도 하나의 차량 윈도우 상에 제시하도록 구성된다.

Description

다수의 레벨들의 디테일을 렌더링하기 위한 시스템들 및 방법들
본 개시물은 일반적으로 전자 디바이스들에 관한 것이다. 보다 구체적으로, 본 개시물은 다수의 레벨들의 디테일을 렌더링하기 위한 시스템들 및 방법들에 관한 것이다.
일부 전자 디바이스들 (예를 들어, 스마트 폰들, 컴퓨터들, 텔레비전들, 자동차들, 비디오게임 시스템들, 미디어 플레이어들, 카메라들, 셀룰러 폰들, 퍼스널 카메라들, 셋-톱 박스들, 프로젝터들, 모니터들, 등) 은 이미지들을 디스플레이한다. 예를 들어, 스마트폰은 스틸 및/또는 비디오 이미지들을 캡처 및/또는 프로세싱할 수도 있다. 이미지들을 프로세싱하는 것은 상대적으로 대량의 시간, 메모리 및 에너지 리소스들을 요구할 수도 있다. 요구된 리소스들은 프로세싱의 복잡성에 따라 가변할 수도 있다.
대량의 이미지 데이터를 프로세싱하는 것은 특히 어려울 수도 있다. 예를 들어, 대량의 이미지 데이터는 상대적으로 대량의 리소스들, 예컨대 전력, 시간, 프로세서 대역폭, 메모리 및/또는 사용 요금들을 요구할 수도 있다. 본 논의로부터 관측될 수 있는 바와 같이, 이미지 프로세싱을 개선시키는 시스템들 및 방법들이 유리할 수도 있다.
전자 디바이스가 설명된다. 전자 디바이스는 이미지의 제 1 존을 렌더링하도록 구성된 프로세서를 포함한다. 프로세서는 또한, 이미지의 제 2 존을 렌더링하도록 구성된다. 제 1 존은 제 2 존보다 더 높은 테슬레이팅된 (tessellated) 레벨의 디테일을 갖는다. 프로세서는 또한, 적어도 하나의 차량 윈도우 상에 제 1 존 및 제 2 존을 제시하도록 구성된다. 전자 디바이스는 차량 내의 착탈형 모듈의 적어도 부분일 수도 있다.
전자 디바이스는 적어도 하나의 디스플레이를 포함할 수도 있다. 프로세서는 제 1 존 및 제 2 존을 적어도 하나의 디스플레이로 전송하여 제 1 존 및 제 2 존을 제시하도록 구성될 수도 있다. 적어도 하나의 디스플레이는 윈도우 프로젝터 또는 통합형 윈도우 디스플레이 패널일 수도 있다.
프로세서는 제 1 윈도우 상에 제 1 존을 제시하고 제 2 윈도우 상에 제 2 존을 제시하도록 구성될 수도 있다. 제 1 윈도우는 전방 윈드실드일 수도 있고 제 2 윈도우는 차량의 다른 윈도우일 수도 있다.
프로세서는 윈도우의 제 1 섹션 상에 제 1 존을 제시하도록 구성될 수도 있고, 윈도우의 제 2 섹션 상에 제 2 존을 제시하도록 구성될 수도 있다. 제 1 섹션은 윈드실드의 사이드 섹션일 수도 있고 제 2 섹션은 윈드실드의 다른 사이드 섹션일 수도 있다. 제 1 섹션은 윈드실드를 가로지르는 제 1 수평 바일 수도 있고 제 2 섹션은 윈드실드를 가로지르는 제 2 수평 바일 수도 있다.
프로세서는 아이 추적을 수행하도록 구성될 수도 있다. 프로세서는 또한, 아이 추적에 기초하여 제 1 존 및 제 2 존을 렌더링하도록 구성될 수도 있다. 프로세서는 다수의 사용자들에 대한 아이 추적을 수행하도록 구성될 수도 있다. 프로세서는 아이 추적에 기초하여 존 렌더링을 우선순위화할 수도 있다.
프로세서는 제 3 존을 렌더링하도록 구성될 수도 있다. 제 3 존은 제 1 존 및 제 2 존보다 더 낮은 테슬레이팅된 레벨의 디테일을 가질 수도 있다. 프로세서는 적어도 하나의 차량 윈도우 상에 제 3 존을 제시하도록 구성될 수도 있다.
전자 디바이스에 의해 수행된 방법이 또한, 설명된다. 방법은 이미지의 제 1 존을 렌더링하는 단계를 포함한다. 방법은 또한, 이미지의 제 2 존을 렌더링하는 단계를 포함한다. 제 1 존은 제 2 존보다 더 높은 테슬레이팅된 레벨의 디테일을 갖는다. 방법은 적어도 하나의 차량 윈도우 상에 제 1 존 및 제 2 존을 제시하는 단계를 더 포함한다.
컴퓨터-프로그램 제품이 또한, 설명된다. 컴퓨터-프로그램 제품은 명령들을 갖는 비일시적 유형의 컴퓨터 판독가능 매체를 포함한다. 명령들은 전자 디바이스로 하여금 이미지의 제 1 존을 렌더링하게 하는 코드를 포함한다. 명령들은 또한, 전자 디바이스로 하여금 이미지의 제 2 존을 렌더링하게 하는 코드를 포함한다. 제 1 존은 제 2 존보다 더 높은 테슬레이팅된 레벨의 디테일을 갖는다. 명령들은 전자 디바이스로 하여금 적어도 하나의 차량 윈도우 상에 제 1 존 및 제 2 존을 제시하게 하는 코드를 더 포함한다.
장치가 또한, 설명된다. 장치는 이미지의 제 1 존을 렌더링하기 위한 수단을 포함한다. 장치는 또한, 이미지의 제 2 존을 렌더링하기 위한 수단을 포함한다. 제 1 존은 제 2 존보다 더 높은 테슬레이팅된 레벨의 디테일을 갖는다. 장치는 적어도 하나의 차량 윈도우 상에 제 1 존 및 제 2 존을 제시하기 위한 수단을 더 포함한다.
도 1 은 다수의 레벨들의 디테일을 렌더링하기 위한 시스템들 및 방법들이 구현될 수도 있는 전자 디바이스의 일 구성을 예시하는 블록도이다;
도 2 는 다수의 레벨들의 디테일을 렌더링하는 방법의 일 구성을 예시하는 흐름도이다;
도 3 은 다수의 레벨들의 디테일을 렌더링하기 위한 시스템들 및 방법들이 구현될 수도 있는 전자 디바이스의 일 구성을 예시하는 블록도이다;
도 4 는 불-균일 프레임 버퍼의 일 예를 예시하는 다이어그램이다;
도 5 는 다수의 레벨들의 디테일을 렌더링하는 방법의 더 많은 특정 구성을 예시하는 흐름도이다;
도 6 은 포비에이티드 (foveated) 렌더링을 위한 방법의 예를 예시하는 흐름도이다;
도 7 은 포비에이티드 렌더링의 일 예를 예시한다;
도 8 은 매우 긴 명령어 (VLIW) 회로를 포함하는 전자 디바이스의 예를 예시하는 블록도이다;
도 9 는 도 8 와 연관되어 설명된 아키텍처에서 구현된 본원에 개시된 시스템들 및 방법들의 예를 예시하는 블록도이다;
도 10 은 매우 긴 명령어 (VLIW) 회로를 포함하는 전자 디바이스의 다른 예를 예시하는 블록도이다;
도 11 은 도 10 과 연관되어 설명된 아키텍처에서 구현된 본원에 개시된 시스템들 및 방법들의 다른 예를 예시하는 블록도이다;
도 12 는 매우 긴 명령어 (VLIW) 회로를 포함하는 전자 디바이스의 다른 예를 예시하는 블록도이다;
도 13 은 도 12 와 연관되어 설명된 아키텍처에서 구현된 본원에 개시된 시스템들 및 방법들의 예를 예시하는 블록도이다;
도 14 는 매우 긴 명령어 (VLIW) 회로를 포함하는 전자 디바이스의 다른 예를 예시하는 블록도이다;
도 15 는 도 14 와 연관되어 설명된 아키텍처에서 구현된 본원에 개시된 시스템들 및 방법들의 예를 예시하는 블록도이다;
도 16 은 다수의 존들을 렌더링하기 위한 시스템들 및 방법들이 구현될 수도 있는 전자 디바이스의 일 구성을 예시하는 블록도이다;
도 17 은 다수의 존들을 렌더링하는 방법을 예시하는 흐름도이다;
도 18 은 윈도우 디스플레이들의 일부 예들을 예시하는 다이어그램이다;
도 19 는 윈도우 상의 존들의 일 예를 예시하는 다이어그램이다;
도 20 은 윈도우 상의 존들의 다른 예를 예시하는 다이어그램이다;
도 21 은 다수의 윈도우들 상에 존들의 다른 예를 예시하는 다이어그램이다;
도 22 는 다수의 존들을 렌더링하는 방법의 더 많은 특정 구성을 예시하는 흐름도이다;
도 23 은 윈도우 상의 존들의 다른 예를 예시하는 다이어그램이다;
도 24 는 전자 디바이스 내에 포함될 수도 있는 소정 컴포넌트들을 예시한다.
본원에 개시된 시스템들 및 방법들은 다수의 레벨들의 디테일을 렌더링하기 위한 접근들을 제공할 수도 있다. 예를 들어, 다수의 상이한 레벨들의 디테일은 동일한 이미지에서 렌더링될 수도 있다. 이것은 렌더링 효율성 및/또는 사용자 경험을 개선시킬 수도 있다. 본원에 사용된 바와 같이, 용어 "렌더" 및 그 변형들은 이미지 데이터를 생성하기 위한 하나 이상의 동작들을 수행하는 것을 의미할 수도 있다. 예를 들어, 렌더링하는 것은 지오메트리 데이터 (예를 들어, 기하학적 모델들, 정점들, 다각형들 등) 를 이미지 데이터 (예를 들어, 픽셀 데이터, 픽셀들, 비주얼 도메인 데이터, 등) 로 컨버팅하기 위한 하나 이상의 동작들을 수행하는 것을 포함할 수도 있다. 렌더링에서 비롯되는 이미지 데이터는 디스플레이 상에 제시되고, 저장 및/또는 송신될 수도 있다. 예를 들어, 렌더링된 이미지 데이터는 디스플레이 상에 즉시 제시되거나 또는 제시되지 않을 수도 있다. 렌더링된 이미지 데이터는 (예를 들어, 디스플레이 상의 추후의 프리젠테이션을 위해) 저장될 수도 있고, (예를 들어, 디스플레이 상에 렌더링된 이미지 데이터를 제시할 수도 있는) 다른 디바이스로 송신될 수도 있고/있거나 디스플레이 상에 제시될 수도 있다.
렌더링 비효율성은 하나의 현재 문제일 수도 있다. 예를 들어, 가상 현실 (VR) 은 장면의 2 개의 뷰들을 렌더링하는 것을 포함할 수도 있고, 이것은 콘텐트를 렌더링하는데 2 배 느려지게 할 수도 있다. 하나의 접근은 (정확하고 저렴하게 수행될 수도 있는) 아이 추적을 수행하는 것, 상이한 레벨들의 조악함으로 3 개의 지오메트리 패스들을 렌더링하는 것, 안티-에일리어싱을 수행하는 것, 및 3 개의 상이한 프레임 버퍼 품질들을 함께 블렌딩하는 것을 수반할 수도 있다. 그러나, 이 접근은, 다수의 지오메트리 패스들이 오버랩되어 일부 픽셀들에서 반복적으로 프로세싱되는 것을 초래하기 때문에 비효율적일 수도 있다.
일부 구성들에서, 본원에 개시된 시스템들 및 방법들은 단일-패스 멀티-레벨의 디테일 (멀티-LOD) 렌더링 (예를 들어, 단일-패스 포비에이티드 렌더링) 에 대한 접근들을 제공할 수도 있다. 예를 들어, 일부 접근들은 테슬레이터 (tessellator)(예를 들어, 테슬레이션 엔진 (tessellation engine)), 멀티샘플 안티-에일리어싱 (MSAA), 동적 커널 디스패치 및/또는 멀티-레졸루션 (예를 들어, 불-균일) 프레임 버퍼 (예를 들어, 프레임 버퍼 오브젝트 (FBO)) 를 이용할 수도 있다. 일부 접근들에서, 단지 하나의 지오메트리 패스가 필요할 수도 있다. 이 개선은 지오메트리 대역폭 사용을 감소시키고/시키거나 MSAA 를 재사용할 수도 있다.
본원에 개시된 시스템들 및 방법들의 일부 구성들은 하나 이상의 성능 이익들을 제공할 수도 있다. 예를 들어, 멀티-레졸루션 FBO 및/또는 동적 커널 디스패치를 포함하는 하드웨어가 구현될 수도 있다. 이것은 대역폭 소비를 감소시킬 수도 있다. 예를 들어, 다수 (예를 들어, 3 개) 의 지오메트리 패스들은 테슬레이터 (예를 들어, 테슬레이션 엔진) 를 사용하여 하나로 콜랩스될 수도 있다. 래스터화 하드웨어 안티-에일리어싱이 일부 구성들에서 재사용될 수도 있다. 이것은, 규칙적인 콘텐트 렌더링에 대한 개선들을 가능하게 할 수도 있다. 부가적으로 또는 대안으로, 프래그먼트 커널들의 동적 디스패칭은 연산을 감소시킬 수도 있다. 이들 개선들은 가상 현실 (VR) 및/또는 증강 현실 (AR) 의 맥락에서 특히 유리할 수도 있고, 여기서 장면의 다수의 뷰들은 (예를 들어, 입체적 뷰들을 위해) 한 번에 렌더링될 수도 있다. 일부 구성들에서, VR 및 AR 은 조합될 수도 있다. 본원에 개시된 시스템들 및 방법들은, 그래픽 프로세싱 산업이 몰입형 경험들을 제공하기 위한 방식들을 검색할 때 유리할 수도 있다.
본원에 개시된 시스템들 및 방법들은 또한, 윈도우들 상의 프리젠테이션을 위한 다수의 존들을 렌더링하기 위한 접근들을 설명한다. 이들 시스템들 및 방법들은 운전자 보조 및 자율주행 차량들 (예를 들어, 셀프-드라이빙 카들) 과 같은 애플리케이션들에서 사용자 경험을 강화하기 위해 차량들의 맥락에서 특히 유리할 수도 있다.
다양한 구성들은 이제, 도면들을 참조하여 설명되고, 여기서 유사한 참조 부호들은 기능적으로 유사한 엘리먼트들을 나타낼 수도 있다. 본원에 일반적으로 설명되고 도면들에서 예시된 바와 같은 시스템들 및 방법들은 광범위한 상이한 구성들에서 배열 및 설계될 수 있다. 따라서, 도면들에서 나타난 바와 같은 여러 구성들의 다음의 더 상세한 설명은 청구하는 바와 같은 범위를 제한하도록 의도되지 않고, 단지 시스템들 및 방법들의 대표이다.
도 1 은, 다수의 레벨들의 디테일을 렌더링하기 위한 시스템들 및 방법들이 구현될 수도 있는 전자 디바이스 (102) 의 하나의 구성을 예시하는 블록도이다. 전자 디바이스 (102) 의 예들은 스마트 폰들, 컴퓨터들 (예를 들어, 데스크톱 컴퓨터들, 랩톱 컴퓨터들, 등), 헤드-장착 디스플레이들 (예를 들어, 가상 현실 (VR) 헤드셋들, 증강 현실 (AR) 헤드셋들, 등), VR 디바이스들, AR 디바이스들, 태블릿 디바이스들, 미디어 플레이어들, 텔레비전들, 자동차들, 차량들, 카메라들, 비디오 캠코더들, 디지털 카메라들, 셀룰러 폰들, 퍼스널 카메라들, 액션 카메라들, 에어크래프트, 드론들, 무인 항공기 (UVA)들, 헬스케어 장비, 게이밍 콘솔들, 개인 휴대 정보 단말 (PDA)들, 셋-톱 박스들, 미디어 플레이어들 등을 포함한다. 전자 디바이스 (102) 는 하나 이상의 컴포넌트들 또는 엘리먼트들을 포함할 수도 있다. 컴포넌트들 또는 엘리먼트들 중 하나 이상은 하드웨어 (예를 들어, 회로부), 펌웨어 및/또는 하드웨어와 소프트웨어 (예를 들어, 명령들을 갖는 프로세서) 의 조합에서 구현될 수도 있다.
일부 구성들에서, 전자 디바이스 (102) 는 매우 긴 명령어 (VLIW) 회로 (104) 및 시스템 메모리 (114) 를 포함할 수도 있다. VLIW 회로 (104) 는 명령 레벨 병렬성을 구현하는 회로 (예를 들어, 프로세서) 일 수도 있다. 예를 들어, VLIW 회로 (104) 는 명령들을 병렬로 (예를 들어, 동시에) 실행시킬 수도 있다. VLIW 회로 (104) 는 시스템 메모리 (114) 에 (예를 들어, 전자 통신적으로) 커플링될 수도 있다. VLIW 회로 (104) 는 이미지들을 렌더링하기 위한 디바이스일 수도 있다. 예를 들어, VLIW 회로 (104) 는 지오메트리 데이터 (예를 들어, 기하학적 모델(들), 2-차원 (2D) 또는 3 차원 (3D) 지오메트리 데이터, 정점들, 다각형들, 등) 를 하나 이상의 이미지들로 컨버팅할 수도 있다. 결과의 이미지(들)은 하나 이상의 디스플레이들 상에 제시될 수도 있다. 예를 들어, 이미지(들)은 2D 뷰를 생성하기 위한 단일 이미지일 수도 있고 또는 3D 뷰를 생성하기 위한 다중 이미지들 (예를 들어, 입체적 이미지들) 일 수도 있다. 예를 들어, VLIW 회로 (104) 는 입체적 뷰 (예를 들어, 좌안에 대한 하나의 이미지 및 우안에 대한 다른 이미지) 를 위한 다수의 이미지들 (예를 들어, 상이한 뷰들) 을 생성할 수도 있다. VLIW 회로 (104) 는 일련의 이미지들 (예를 들어, 비디오) 을 렌더링할 수도 있다는 것이 주목되어야 한다. VLIW 회로 (104) 는 하드웨어에서 또는 하드웨어와 소프트웨어의 조합에서 구현될 수도 있다. VLIW 회로 (104) 의 일 예는 그래픽 프로세싱 유닛 (GPU) 이다.
일부 구성들에서, 전자 디바이스 (102) 는 도 2 내지 도 5, 도 9, 도 11, 도 13, 및 도 15 내지 도 24 중 하나 이상과 연관되어 설명된 기능들, 절차들, 방법들, 단계들 등 중 하나 이상을 수행할 수도 있다. 부가적으로 또는 대안으로, 전자 디바이스 (102) 는 도 2 내지 도 5, 도 9, 도 11, 도 13 및 도 15 내지 도 24 중 하나 이상과 연관되어 설명된 구조들 중 하나 이상을 포함할 수도 있다.
시스템 메모리 (114) 는 명령들 및/또는 데이터를 저장할 수도 있다. 시스템 메모리 (114) 의 예들은 랜덤 액세스 메모리 (RAM), 동적 랜덤 액세스 메모리 (DRAM), 동기식 동적 랜덤 액세스 메모리 (SDRAM), 이중 데이터 레이트 동기식 동적 랜덤 액세스 메모리 (DDR SDRAM), DDR2, DDR3, DDR4, 정적 랜덤 액세스 메모리 (SRAM), 레지스터들, 판독-전용 메모리 (ROM), 소거가능 프로그래머블 판독-전용 메모리 (EPROM), 전기적으로 소거 가능한 프로그래머블 판독-전용 메모리 (EEPROM), NAND 플래시 메모리, NOR 플래시 메모리 등을 포함한다. VLIW 회로 (104) 는 시스템 메모리 (114) 에 액세스 (예를 들어, 시스템 메모리로부터 판독 및/또는 시스템 메모리에 기입) 할 수도 있다. 시스템 메모리 (114) 는 하나 이상의 프로세서들 (예를 들어, 중앙 처리 장치 (CPU들)) 과 같은 전자 디바이스 (102) 의 (있다면) 다른 엘리먼트들에 의해 엑세스 가능할 수도 있다. 시스템 메모리 (114) 는 VLIW 회로 (104) 로부터 분리될 수도 있다. 시스템 메모리 (114) 에 의해 저장될 수도 있는 명령들 및/또는 데이터의 예들은 명령들, 커맨드 데이터, 지오메트리 데이터 (예를 들어, 정점들, 다각형들, 법선들 (예를 들어, 객체 배향들), 프리미티브들, 메타데이터, 등), 텍스처 데이터, 비순서화된 액세스 뷰 데이터, 렌더링 파라미터(들)(예를 들어, 디테일 파라미터(들)의 레벨)), 등을 포함할 수도 있다. 일부 구성들에서, 전자 디바이스 (102)(예를 들어, 시스템 메모리 (114)) 는 하나 이상의 프레임 버퍼들을 포함할 수도 있다. 프레임 버퍼(들)은 이미지 데이터를 버퍼링 (예를 들어, 저장) 할 수도 있다. 버퍼링된 이미지 데이터는 하나 이상의 디스플레이들 상에 제시될 수도 있다.
VLIW 회로 (104) 는 이미지들을 렌더링하기 위한 하나 이상의 엘리먼트들을 포함할 수도 있다. 엘리먼트들의 일부 예들은 프론트 엔드 (FE), 정점 프로세서 (VP들, 정점 페처 (vertex fetcher; VF), 정점 셰이더 (vertex shader; VS), 테슬레이션 제어 셰이더 (TCS), 헐 셰이더 (hull shader; HS), 테슬레이터 (예를 들어, 테슬레이션 엔진) (TESS), 테슬레이션 평가 셰이더 (TES), 도메인 셰이더 (DS), 지오메트리 셰이더 (GS), 래스터라이저 (Rast), 프래그먼트 셰이더 (FS), 픽셀 셰이더 (PS), 타일러, 렌더 출력 유닛 (ROP), 클립퍼 (Clip) 및/또는 스트림 출력 (SOL), 등을 포함할 수도 있다. 일부 구성들에서, 이들 엘리먼트들 중 하나 이상은 그래픽 파이프라인 (106) 으로서 지칭될 수도 있다. 테슬레이터는 일부 구성들에서 고정된 기능의 테슬레이션 엔진일 수도 있다는 것이 주목되어야 한다. 테슬레이터 (및/또는 그래픽 파이프라인의 하나 이상의 다른 엘리먼트들) 는 하드웨어, 소프트웨어 또는 하드웨어와 소프트웨어의 조합에서 구현될 수도 있다.
VLIW 회로 (104) 는 온-칩 메모리 (110) 를 포함할 수도 있다. 온-칩 메모리 (110) 는 빠른 메모리 액세스를 제공하도록 VLIW 회로 (104) 상에서 구현될 수도 있다. 예를 들어, 온-칩 메모리 (110) 는 시스템 메모리 (114) 보다 더 빨리 액세스될 수도 있다. 온-칩 메모리 (110) 의 예들은 랜덤 액세스 메모리 (RAM), 동적 랜덤 액세스 메모리 (DRAM), 동기식 동적 랜덤 액세스 메모리 (SDRAM), 이중 데이터 레이트 동기식 동적 랜덤 액세스 메모리 (DDR SDRAM), DDR2, DDR3, DDR4, 정적 랜덤 액세스 메모리 (SRAM), 레지스터들, 판독-전용 메모리 (ROM), 소거가능 프로그래머블 판독-전용 메모리 (EPROM), 전기적으로 소거 가능한 프로그래머블 판독-전용 메모리 (EEPROM), NAND 플래시 메모리, NOR 플래시 메모리 등을 포함한다. 일부 구성들에서, 온-칩 메모리 (110) 는 다수의 레벨들 (예를 들어, 레벨 1 (L1) 캐시, 레벨 2 (L2) 캐시, 레벨 3 (L3) 캐시, 등) 에서 구현될 수도 있다. 온-칩 메모리 (110) 에 의해 저장될 수도 있는 데이터의 예들은 지오메트리 데이터 (예를 들어, 정점들, 다각형들, 법선들, 프리미티브들, 메타데이터, 등), 텍스처 데이터, 비순서화된 액세스 뷰 데이터, 하나 이상의 렌더링 파라미터들 (예를 들어, 디테일의 레벨 (LOD) 파라미터(들)), 등을 포함할 수도 있다. 일부 구성들에서, 온-칩 메모리 (110) 는 (예를 들어, 시스템 메모리 (114) 에 추가하여 또는 이의 대안으로) 하나 이상의 프레임 버퍼(들)을 포함할 수도 있다. 프레임 버퍼(들)은 이미지 데이터를 버퍼링 (예를 들어, 저장) 할 수도 있다. 버퍼링된 이미지 데이터는 하나 이상의 디스플레이들 상에 제시될 수도 있다.
일부 구성들에서, VLIW 회로 (104) 는 비동기식 메모리 제어기 (108) 를 포함할 수도 있다. 비동기식 메모리 제어기 (108) 는 하드웨어 또는 하드웨어와 소프트웨어의 조합에서 구현될 수도 있다. 비동기식 메모리 제어기 (108) 는 VLIW 회로 (104) 에서, VLIW 회로로부터 분리되어 구현될 수도 있고, 또는 VLIW 회로 (104) 에서 부분적으로 및 VLIW 회로 (104) 로부터 분리되어 부분적으로 구현될 수도 있다. 비동기식 메모리 제어기 (108) 는 메모리 (예를 들어, 온-칩 메모리 (110) 및/또는 시스템 메모리 (114)) 에 비동기식으로 액세스하도록 구성될 수도 있다. 일부 구성들에서, 비동기식 메모리 제어기 (108) 는, 비동기식 메모리 제어기 (108) 가 프로세싱 (예를 들어, 테슬레이팅) 되고 있는 데이터의 세트와는 동떨어져 메모리 (예를 들어, 파라미터(들), 디테일의 레벨 (LOD) 파라미터(들), 등) 에 액세스할 수 있다는 점에서 "비동기식으로" 동작한다. 예를 들어, VLIW 회로 (104) 는 데이터의 세트들을 주기적으로 프로세싱할 수도 있다. 데이터의 단일 세트를 프로세싱 (예를 들어, 테슬레이팅) 하는 것은 드로우 콜 (draw call) 로서 지칭될 수도 있다. 예를 들어, 드로우 콜은 데이터의 세트를 프로세싱 (예를 들어, 렌더링) 하기 위한 VLIW 회로 (104) 에 대한 명령 (예를 들어, 프로그래밍적 요청, 명령, 등) 일 수도 있다. 하나 이상의 파라미터들 (예를 들어, LOD 파라미터, 테슬레이션 설정, 하나 이상의 다른 파라미터들, 등) 은 드로우 콜과 연관되고/되거나 이에 대한 세트일 수도 있다. 따라서, 드로우 콜은, 예를 들어 데이터의 세트에 대해 렌더링되도록 LOD 를 확립할 수도 있다.
알려진 접근들에서, 데이터 (예를 들어, 드로우 콜) 의 각각의 세트는 고정된 레벨의 디테일 (LOD) 을 갖는다. 이들 접근들에서, 데이터의 세트에 대한 LOD 는, 일단 프로세싱이 데이터의 그 세트 상에서 시작했으면 변화할 수 없다 (예를 들어, 드로우 콜 동안 변화할 수 없다). 부가적으로, 데이터의 각각의 세트는 알려진 접근들에서 단일의 LOD 만을 가질 수도 있다.
본원에 개시된 시스템들 및 방법들에 따르면, 비동기식 메모리 제어기 (108) 는 단일의 데이터 세트 내에서 (예를 들어, 드로우 콜의 프로세싱 동안) 상이한 레벨들의 디테일 (예를 들어, 상이한 레벨들의 디테일을 갖는 상이한 존들) 을 렌더링할 수 있도록 메모리 (예를 들어, 온-칩 메모리 (110) 및/또는 시스템 메모리 (114)) 에 비동기식으로 액세스할 수도 있다. 예를 들어, 비동기식 메모리 제어기 (108) 는 데이터의 세트 상의 프로세싱 (예를 들어, 테슬레이션, 셰이딩, 등) 이 시작한 후에 그리고 데이터의 세트 상의 프로세싱이 완료되기 전에 메모리 (예를 들어, 파라미터(들), LOD 파라미터(들), 등) 에 액세스할 수도 있다. 이것은 VLIW 회로 (104) 가 데이터의 세트의 프로세싱 동안 LOD 를 변화시켜 데이터의 하나의 세트에서 상이한 LOD들을 생성할 수 있도록 할 수도 있다. 데이터의 각각의 세트는 다수의 프리미티브들 (예를 들어, 포인트들, 다각형들, 등) 을 포함할 수도 있다. 일부 구성들에서, 데이터의 각각의 세트는 (초기에) 할당된 단일의 LOD 를 가질 수도 있다. 그러나, 비동기식 메모리 제어기 (108) 는 데이터의 세트에 그 데이터 세트의 프로세싱 동안 상이한 LOD 를 할당할 수도 있다. 다시 말해, 비동기식 메모리 제어기 (108) 는 (데이터의 그 세트 상의 프로세싱 (예를 들어, 테슬레이션, 셰이딩, 등) 이 시작한 후지만 데이터의 그 세트 상의 프로세싱 (예를 들어, 테슬레이션, 셰이딩, 등) 이 완료되기 전에) 데이터의 세트에 대한 LOD 를 변화시킬 수도 있다. 예를 들어, 본원에 개시된 시스템들 및 방법들은 (예를 들어, 데이터의 세트 내에서도) 픽셀-당 및/또는 프리미티브 단위-당 LOD 를 변화시키는 것을 허용할 수도 있다. 일부 구성들에서, 파라미터들 (예를 들어, 파라미터(들), LOD 파라미터(들), 등) 은 프로세싱 동안 업데이트될 수도 있다. 예를 들어, 프로세서 (예를 들어, 중앙 처리 장치 (CPU), 디지털 신호 프로세서 (DSP), 등) 또는 임의의 전용 하드웨어 블록 (예를 들어, 센서 데이터 (예를 들어, 아이 추적 센서 데이터, 모션 센서 데이터, 등) 을 처리하는 임의의 하드웨어) 이 파라미터들을 업데이트할 수도 있다. VLIW 회로 (104) (예를 들어, GPU) 는 파라미터들을 포함하는 메모리의 섹션 (예를 들어, 온-칩 메모리 (110) 및/또는 시스템 메모리 (114)) 으로부터 판독할 수도 있다 (예를 들어, 항상 판독하고, 연속적으로 판독하고, 주기적으로 판독 등을 할 수도 있다). 따라서, VLIW 회로 (104)(예를 들어, GPU) 는 전체 드로우 콜에 대한 것 대신에 프리미티브마다 대응하여 조정할 수도 있다. 일부 구성들에서, VLIW 회로 (104) 는 단일의 드로우 콜에서 상이한 레벨들의 디테일을 렌더링할 수도 있다.
본원에 개시된 시스템들 및 방법들은 하나 이상의 이점들을 제공할 수도 있다. 예를 들어, 비동기식 메모리 제어기 (108) 는, 다수의 LOD들을 렌더링하는 경우 더 효율적인 프로세싱을 가능하게 할 수도 있다. 알려진 접근들에서, 다수의 오버랩하는 층들이 렌더링될 수도 있고, 여기서 각각의 층은 상이한 LOD 를 갖는다. 그 후, 오버랩하는 층들은 블렌딩될 수도 있다. 그러나, 이 접근은, 동일한 데이터가 여러 번 렌더링되기 때문에 비효율적이다. 본원에 개시된 시스템들 및 방법들에 따르면, 상이한 LOD들이 단일 패스로 렌더링될 수도 있다. 이것은 동일한 데이터를 재-렌더링하는 것을 회피하고/하거나 상이한 레벨들의 디테일을 갖는 다수의 층들을 블렌딩하는 것을 회피할 수도 있다.
부가적으로 또는 대안으로, 본원에 개시된 시스템들 및 방법들은 LOD 를 비동기식으로 변화시키는 것을 허용할 수도 있다. 예를 들어, 이미지의 하나 이상의 존들을 렌더링하는 것은 아이 추적에 기초할 수도 있다. 예를 들어, 전자 디바이스 (102) 는 상이한 레벨들의 디테일을 갖는 다수의 존들을 렌더링할 수도 있고, 여기서 최고 레벨의 디테일을 갖는 존은 사용자가 현재 보고 있는 영역에서 렌더링된다. 아이 추적은, 사용자가 이미지의 상이한 부분을 살피도록 시선을 변화시키는 때를 검출할 수도 있다. 본원에 개시된 시스템들 및 방법들 (예를 들어, 비동기식 메모리 제어기 (108)) 은 아이 추적에 기초하여 렌더링된 LOD 를 즉시 변화시킬 수도 있다. 예를 들어, VLIW 회로 (104) 는, 데이터 세트의 프로세싱 동안에도, 사용자가 보기 위해 시선을 변화시킨 이미지의 영역에서 LOD 를 증가시킬 수도 있다. 이것은 더 좋은 사용자 경험을 제공할 수도 있다. 부가적으로, 본원에 개시된 시스템들 및 방법들 (예를 들어, 비동기식 메모리 제어기 (108)) 은 사용자의 시선이 더 이상 지향하지 않는 이미지의 영역에서 LOD 를 감소시킬 수도 있다. 이것은 불필요한 프로세싱을 감소시킬 수도 있다.
VLIW 회로 (104) 는 불-균일 프레임 버퍼 제어기 (112) 를 포함할 수도 있다. 불-균일 프레임 버퍼 제어기 (112)(예를 들어, 멀티-레졸루션 FBO) 는 하드웨어 또는 하드웨어와 소프트웨어의 조합에서 구현될 수도 있다. 불-균일 프레임 버퍼 제어기 (112) 는 VLIW 회로 (104) 에서, VLIW 회로로부터 분리되어 구현될 수도 있고, 또는 VLIW 회로 (104) 에서 부분적으로 및 VLIW 회로 (104) 로부터 분리되어 부분적으로 구현될 수도 있다. 일부 구성들에서, 불-균일 프레임 버퍼 제어기 (112) 는 그래픽 파이프라인 (106) 의 부분으로서 구현될 수도 있다. 대안으로, 불-균일 프레임 버퍼 제어기 (112) 는 온-칩 메모리 (110) 의 부분으로서 구현될 수도 있다. 다른 구현에서, 불-균일 프레임 버퍼 제어기 (112) 는 VLIW 회로 (104) 에서 구현되지만 그래픽 파이프라인 (106) 및 온-칩 메모리 (110) 로부터 분리되어 구현될 수도 있다.
불-균일 프레임 버퍼 제어기 (112) 는 하나 이상의 프레임 버퍼(들)의 상이한 서브세트들에 동적으로 액세스하도록 구성될 수도 있다. 일부 구성들에서, 프레임 버퍼의 상이한 서브세트들은 상이한 레벨들의 디테일, 상이한 레벨들의 디테일을 갖는 존들 및/또는 상이한 밉맵 레벨들에 대응할 수도 있다. 예를 들어, 불-균일 프레임 버퍼 제어기 (112) 는 프레임 버퍼의 상이한 서브세트들 상에서 동적으로 동작하도록 구성될 수도 있다. 2 이상의 프레임 버퍼 서브세트들이 존재할 수도 있다는 것이 주목되어야 한다. 일부 구성들에서, 불균일 프레임 버퍼의 상이한 서브세트들은 상이한 뷰들 (예를 들어, 입체적 렌더링을 위한 좌안 뷰 및 우안 뷰) 에 대응할 수도 있다. 불-균일 프레임 버퍼는 대역폭 이용을 개선시킬 수도 있다. 불-균일 프레임 버퍼로, 예를 들어 좌안 뷰 및 우안 뷰는 하나의 패스로, 동시에 (예를 들어, 일제히) 프로세싱되고 시스템 메모리 (114) 에 저장될 수도 있다. 부가적으로 또는 대안으로, 예를 들어 불균일 프레임 버퍼는 하나의 패스로 다수의 LOD들을 렌더링하기 위한 메모리 이용을 가능하게 하고/하거나 개선시킬 수도 있다.
일부 구성들에서, 프레임 버퍼의 상이한 서브세트들에 동적으로 액세스하는 것은 제 2 존의 적어도 하나의 픽셀과는 상이한 레이트에서 제 1 존의 적어도 하나의 픽셀에 액세스하는 것을 포함할 수도 있다. 제 1 존 및 제 2 존은 상이한 레벨들의 디테일에 대응할 수도 있다. 예를 들어, 불-균일 프레임 버퍼 제어기 (112) 는 (예를 들어, 더 높은 LOD 를 갖는) 하나의 존의 픽셀들이 (예를 들어, 더 낮은 LOD 를 갖는) 다른 존의 픽셀들보다 더 높은 레이트에서 프로세싱되게 할 수도 있다. 이 접근은 하나 이상의 존들 (예를 들어, 더 낮은-LOD 존들) 의 프로세싱을 천천히함으로써 전력 절감을 허용할 수도 있다. 2 이상의 상이한 레이트들에서 액세스될 수도 있는 2 이상의 존들로부터의 픽셀들이 존재할 수도 있다는 것이 주목되어야 한다.
부가적으로 또는 대안으로, 프레임 버퍼의 상이한 서브세트들에 동적으로 액세스하는 것은 셰이더 서브-루틴 스왑핑을 가능하게 하는 것을 포함할 수도 있다. 예를 들어, 셰이더 서브-루틴 스왑핑은, 제 1 픽셀의 프로세싱이 진행 중이고 제 2 픽셀의 프로세스가 완료되는 경우 수행될 수도 있다. 예를 들어, 프레임 버퍼의 제 1 서브세트는 제 1 셰이더 서브-루틴으로 프로세싱된 하나 이상의 픽셀들에 대해 할당될 수도 있는 한편, 프레임 버퍼의 제 2 서브세트는 제 2 셰이더 서브-루틴으로 프로세싱된 하나 이상의 픽셀들에 대해 할당될 수도 있다. 하나 이상의 제 2 셰이더 서브-루틴 픽셀들의 프로세싱이 완료될 때, 전자 디바이스 (102) 는 프레임 버퍼의 제 2 서브세트를 차지하도록 셰이더 서브-루틴들을 스왑핑할 수도 있다. 이것은 프레임 버퍼 능력이 더 효율적으로 이용될 수 있도록 함으로써 더 효율적인 프로세싱을 제공할 수도 있다. 프레임 버퍼의 2 이상의 서브세트들은 서브세트들 중 하나 이상에 대한 서브-루틴 스왑핑을 가능하게 하도록 이용될 수도 있다는 것이 주목되어야 한다.
불-균일 프레임 버퍼 제어기 (112) 는 제 2 픽셀의 제 2 샘플을 제 1 픽셀의 프로세싱된 제 1 샘플로 대체하여 제 2 픽셀의 제 2 샘플을 프로세싱하는 것을 회피하도록 구성될 수도 있다. 제 1 픽셀은 제 2 픽셀과는 상이한 상이한 수의 샘플들을 가질 수도 있다. 예를 들어, 제 1 존으로부터의 제 1 픽셀은 더 낮은 LOD 를 갖는 제 2 존으로부터 이웃하는 제 2 픽셀보다 더 높은 LOD 를 가질 수도 있다. 불-균일 프레임 버퍼 제어기 (112) 는 제 2 픽셀의 (프로세싱되지 않은) 샘플을 제 1 픽셀의 (프로세싱된) 샘플로 대체할 수도 있다. 이 방식에서, 불-균일 프레임 버퍼 제어기 (112) 는 프로세싱을 감소시킬 수도 있다. 불-균일 프레임 버퍼 제어기 (112) 는 하나 이상의 픽셀들의 하나 이상의 (프로세싱되지 않은) 샘플들을 하나 이상의 다른 픽셀들의 하나 이상의 (프로세싱된) 샘플들로 대체할 수도 있다는 것이 주목되어야 한다.
일부 구성들에서, 전자 디바이스 (102) 는 하나 이상의 디스플레이들 (예를 들어, 헤드-장착 디스플레이들) 을 포함할 수도 있고/있거나 이에 커플링될 수도 있다. 디스플레이(들)은 상이한 레벨들의 디테일을 제시하도록 구성될 수도 있다.
도 2 는 다수의 레벨들의 디테일을 렌더링하는 방법 (200) 의 하나의 구성을 예시하는 흐름도이다. 방법 (200) 은 도 1 과 연관되어 설명된 전자 디바이스 (102) 에 의해 수행될 수도 있다.
전자 디바이스 (102) 는 지오메트리 데이터를 획득할 수도 있다 (202). 예를 들어, 전자 디바이스 (102) 는 스토리지 (예를 들어, 하드 디스크 스토리지, 착탈형 스토리지, 예컨대 외부 하드 드라이브, 디지털 비디오 디스크 (DVD) 드라이브, 블루-레이 드라이브, 컴팩트 디스크 (CD), 썸 드라이브, 등) 로부터의 지오메트리 데이터를 메모리 (예를 들어, 시스템 메모리 (114) 및/또는 온-칩 메모리 (110)) 로 로딩할 수도 있다. 부가적으로 또는 대안으로, 전자 디바이스 (102) 는 다른 디바이스로부터 지오메트리 데이터를 수신할 수도 있다. 예를 들어, 전자 디바이스 (102) 는 통신 인터페이스 (예를 들어, 이더넷, 전기전자 협회 (IEEE) 802.11 인터페이스, 셀룰러 네트워크 인터페이스, 등) 를 통해 지오메트리 데이터를 수신하고, 지오메트리 데이터를 메모리 (예를 들어, 시스템 메모리 (114) 및/또는 온-칩 메모리 (110)) 로 로딩할 수도 있다. 지오메트리 데이터의 예들은 포인트들, 라인들 및/또는 다각형들 (예를 들어, 삼각형들), 등을 포함할 수도 있다.
전자 디바이스 (102) 는 상이한 레벨들의 디테일을 비동기식으로 렌더링할 수도 있다 (204). 이것은 도 1 과 연관되어 전술된 바와 같이 달성될 수도 있다. 예를 들어, 전자 디바이스 (102) 는 메모리 (예를 들어, 시스템 메모리 (114) 및/또는 온-칩 메모리 (110)) 에 비동기식으로 액세스하여 상이한 레벨들의 디테일을 렌더링할 수도 있다. 예를 들어, 전자 디바이스 (102) 는 프로세싱 동안 데이터의 세트에 대한 LOD 를 변화시킬 수도 있다 (여기서, 예를 들어 데이터의 세트는 처음에 상이한 LOD 를 갖는다). 일부 구성들에서, 상이한 레벨들의 디테일을 비동기식으로 렌더링하는 것 (204) 은 동적 LOD 테슬레이션을 수행하는 것을 포함할 수도 있다.
전자 디바이스 (102) 는 프레임 버퍼의 상이한 서브세트들에 동적으로 액세스할 수도 있다 (206). 이것은 도 1 과 연관되어 전술된 바와 같이 달성될 수도 있다. 예를 들어, 전자 디바이스 (102) 는 제 2 존의 적어도 하나의 픽셀과는 상이한 레이트에서 제 1 존의 적어도 하나의 픽셀에 액세스할 수도 있다. 부가적으로 또는 대안으로, 전자 디바이스 (102) 는, 제 1 픽셀의 프로세싱이 진행 중이고 제 2 픽셀의 프로세스가 완료되는 경우 셰이더 서브-루틴 스왑핑을 가능하게 할 수도 있다. 부가적으로 또는 대안으로, 전자 디바이스 (102) 는 제 2 픽셀의 제 2 샘플을 제 1 픽셀의 프로세싱된 제 1 샘플로 대체하여 제 2 픽셀의 제 2 샘플을 프로세싱하는 것을 회피할 수도 있다.
도 3 은, 다수의 레벨들의 디테일을 렌더링하기 위한 시스템들 및 방법들이 구현될 수도 있는 전자 디바이스 (302) 의 하나의 구성을 예시하는 블록도이다. 도 3 과 연관되어 설명된 전자 디바이스 (302) 는 도 1 과 연관되어 설명된 전자 디바이스 (102) 의 예일 수도 있다. 일부 구성들에서, 전자 디바이스 (302) 의 컴포넌트들 또는 엘리먼트들 중 하나 이상은 도 1 과 연관되어 설명된 대응하는 컴포넌트들 또는 엘리먼트들과 유사할 수도 있다. 컴포넌트들 또는 엘리먼트들 중 하나 이상은 하드웨어 (예를 들어, 회로부) 또는 하드웨어와 소프트웨어 (예를 들어, 명령들을 갖는 프로세서) 의 조합에서 구현될 수도 있다.
일부 구성들에서, 전자 디바이스 (302) 는 매우 긴 명령어 (VLIW) 회로 (304), 시스템 메모리 (314), 하나 이상의 디스플레이들 (332), 하나 이상의 이미지 센서들 (316), 하나 이상의 광학 시스템들 (318), 하나 이상의 통신 인터페이스들 (320), 하나 이상의 안테나들 (322) 및/또는 하나 이상의 프로세서들 (324) 을 포함할 수도 있다. 도 3 과 연관되어 설명된 엘리먼트들 또는 컴포넌트들 중 2 이상은 서로와 전자 통신할 수도 있다. 예를 들어, VLIW 회로 (304) 는 시스템 메모리 (314) 에 (예를 들어, 전자 통신적으로) 커플링될 수도 있다. VLIW 회로 (304) 는 도 1 및 도 2 중 하나 이상과 연관되어 전술된 바와 같이 이미지들을 렌더링하기 위한 디바이스일 수도 있다. 일부 구성들에서, 결과의 이미지(들)은 하나 이상의 디스플레이들 (332) 상에 제시될 수도 있다. VLIW 회로 (304) 는 일부 구현들에서 프로세서 (324) 로부터 분리될 수도 있다. 다른 구현들에서, VLIW 회로 (304) 는 프로세서 (324) 안에 통합될 수도 있다.
통신 인터페이스 (320) 는 전자 디바이스 (302) 가 하나 이상의 다른 전자 디바이스들과 통신하게 할 수도 있다. 예를 들어, 통신 인터페이스 (320) 는 유선 및/또는 무선 통신을 위해 인터페이스를 제공할 수도 있다. 일부 구성들에서, 통신 인터페이스 (320) 는 무선 주파수 (RF) 신호들을 송신 및/또는 수신하기 위해 하나 이상의 안테나들 (322) 에 커플링될 수도 있다. 부가적으로 또는 대안으로, 통신 인터페이스 (320) 는 하나 이상의 종류들의 와이어라인 (예를 들어, 유니버셜 시리얼 버스 (USB), 이더넷, 비디오 그래픽 어레이 (VGA), 디지털 비주얼 인터페이스 (DVI), 고화질 멀티미디어 인터페이스 (HDMI), 디스플레이포트, 모바일 고-화질 링크 (MHL), 등) 통신을 가능하게 할 수도 있다.
일부 구성들에서, 다수의 통신 인터페이스들 (320) 이 구현 및/또는 이용될 수도 있다. 예를 들어, 하나의 통신 인터페이스 (320) 는 셀룰러 (예를 들어, 3G, 롱 텀 에볼루션 (LTE), CDMA, 등) 통신 인터페이스 (320) 일 수도 있고, 다른 통신 인터페이스 (320) 는 이더넷 인터페이스일 수도 있고, 다른 통신 인터페이스 (320) 는 유니버셜 시리얼 버스 (USB) 인터페이스일 수도 있고, 또 다른 통신 인터페이스 (320) 는 무선 로컬 영역 네트워크 (WLAN) 인터페이스 (예를 들어, 전기전자 협회 (IEEE) 802.11 인터페이스) 일 수도 있으며, 또 다른 통신 인터페이스 (320) 는 블루투스 인터페이스일 수도 있다.
일부 구성들에서, 전자 디바이스 (302) 는 도 1, 도 3 내지 도 5, 도 9, 도 11, 도 13, 및 도 15 내지 도 24 중 하나 이상과 연관되어 설명된 기능들, 절차들, 방법들, 단계들 등 중 하나 이상을 수행할 수도 있다. 부가적으로 또는 대안으로, 전자 디바이스 (302) 는 도 1, 도 3 내지 도 5, 도 9, 도 11, 도 13 및 도 15 내지 도 24 중 하나 이상과 연관되어 설명된 구조들 중 하나 이상을 포함할 수도 있다.
시스템 메모리 (314) 는 명령들 및/또는 데이터를 저장할 수도 있다. 도 3 과 연관되어 설명된 시스템 메모리 (314) 는 도 1 과 연관되어 설명된 시스템 메모리 (114) 의 예일 수도 있다. VLIW 회로 (304) 는 시스템 메모리 (314) 에 액세스 (예를 들어, 시스템 메모리로부터 판독 및/또는 시스템 메모리에 기입) 할 수도 있다. 시스템 메모리 (314) 는 또한, 프로세서(들)(324) 에 의해 액세스 가능할 수도 있다. 시스템 메모리 (314) 는 지오메트리 데이터 (328) 를 저장할 수도 있다. 일부 구성들에서, 시스템 메모리 (314) 는 프레임 버퍼 (330a) 를 포함할 수도 있다. 프레임 버퍼 (330a) 는 이미지 데이터를 저장하기 위한 시스템 메모리 (314) 의 일부일 수도 있다. 버퍼링된 이미지 데이터는 일부 구성들에서 하나 이상의 디스플레이들 (332) 상에 제시될 수도 있다.
VLIW 회로 (304) 는 이미지들을 렌더링하기 위한 하나 이상의 엘리먼트들을 포함할 수도 있다. 엘리먼트들의 일부 예들은 프론트 엔드 (FE), 정점 프로세서 (VP들), 정점 페처 (VF), 정점 셰이더 (VS), 테슬레이션 제어 셰이더 (TCS), 헐 셰이더 (HS), 테슬레이터 (예를 들어, 테슬레이션 엔진) (TESS), 테슬레이션 평가 셰이더 (TES), 도메인 셰이더 (DS), 지오메트리 셰이더 (GS), 래스터라이저 (Rast), 프래그먼트 셰이더 (FS), 픽셀 셰이더 (PS), 타일러, 렌더 출력 유닛 (ROP), 클립퍼 (Clip) 및/또는 스트림 출력 (SOL), 등을 포함할 수도 있다. 일부 구성들에서, 이들 엘리먼트들 중 하나 이상은 그래픽 파이프라인으로서 지칭될 수도 있다.
VLIW 회로 (304) 는 온-칩 메모리 (310) 를 포함할 수도 있다. 도 3 과 연관되어 설명된 온-칩 메모리 (310) 는 도 1 과 연관되어 설명된 온-칩 메모리 (110) 의 예일 수도 있다. 일부 구성들에서, 온-칩 메모리 (310) 는 (예를 들어, 시스템 메모리 (314) 에서 프레임 버퍼 (330a) 에 추가하여 또는 이의 대안으로) 프레임 버퍼(330a) 를 포함할 수도 있다. 프레임 버퍼는 이미지 데이터를 저장하기 위한 온-칩 메모리 (310) 의 일부일 수도 있다. 버퍼링된 이미지 데이터는 일부 구성들에서 하나 이상의 디스플레이들 (332) 상에 제시될 수도 있다.
일부 구성들에서, VLIW 회로 (304) 는 비동기식 메모리 제어기 (308) 를 포함할 수도 있다. 비동기식 메모리 제어기 (308) 는 하드웨어 또는 하드웨어와 소프트웨어의 조합에서 구현될 수도 있다. 비동기식 메모리 제어기 (308) 는 VLIW 회로 (304) 에서, VLIW 회로로부터 분리되어 구현될 수도 있고, 또는 VLIW 회로 (304) 에서 부분적으로 및 VLIW 회로 (304) 로부터 분리되어 부분적으로 구현될 수도 있다. 비동기식 메모리 제어기 (308) 는 메모리 (예를 들어, 온-칩 메모리 (310) 및/또는 시스템 메모리 (314)) 에 비동기식으로 액세스하도록 구성될 수도 있다. 비동기식 메모리 제어기 (308) 는 온-칩 메모리 (110) 및/또는 시스템 메모리 (114) (예를 들어, 어느 하나 또는 양자 모두) 를 이용 (예를 들어, 액세스) 할 수도 있다. 일부 구성들은 사용 케이스에 의존할 수도 있다. 예를 들어, 센서 데이터 (예를 들어, 이미지 센서 (316) 데이터) 가 고 레이트 (예를 들어, 1000 헤르츠 (Hz)) 에서 기입된다면, 캐싱은 시간, 배터리 및/또는 다른 리소스들을 낭비할 수도 있다. 도 3 과 연관되어 설명된 비동기식 메모리 제어기 (308) 는 도 1 과 연관되어 설명된 비동기식 메모리 제어기 (108) 의 일 예일 수도 있다. 도 3 과 연관되어 설명된 비동기식 메모리 제어기 (308) 는 도 1 과 연관되어 설명된 비동기식 메모리 제어기 (108) 와 연관되어 설명된 바와 같이 동작할 수도 있다.
VLIW 회로 (304) 는 불-균일 프레임 버퍼 제어기 (312) 를 포함할 수도 있다. 불-균일 프레임 버퍼 제어기 (312) 는 하드웨어 또는 하드웨어와 소프트웨어의 조합에서 구현될 수도 있다. 불-균일 프레임 버퍼 제어기 (312) 는 VLIW 회로 (304) 에서, VLIW 회로로부터 분리되어 구현될 수도 있고, 또는 VLIW 회로 (304) 에서 부분적으로 및 VLIW 회로 (304) 로부터 분리되어 부분적으로 구현될 수도 있다. 일부 구성들에서, 불-균일 프레임 버퍼 제어기 (312) 는 그래픽 파이프라인의 부분으로서 구현될 수도 있다. 대안으로, 불-균일 프레임 버퍼 제어기 (312) 는 온-칩 메모리 (310) 의 부분으로서 구현될 수도 있다. 다른 구현에서, 불-균일 프레임 버퍼 제어기 (312) 는 VLIW 회로 (304) 에서 구현되지만 그래픽 파이프라인 (306) 및 온-칩 메모리 (310) 로부터 분리되어 구현될 수도 있다. 도 3 과 연관되어 설명된 불-균일 프레임 버퍼 제어기 (312) 는 도 1 과 연관되어 설명된 불-균일 프레임 버퍼 제어기 (112) 의 예일 수도 있다. 도 3 과 연관되어 설명된 불-균일 프레임 버퍼 제어기 (312) 는 도 1 과 연관되어 설명된 불-균일 프레임 버퍼 제어기 (112) 와 연관되어 설명된 바와 같이 동작할 수도 있다.
일부 구성들에서, 전자 디바이스 (302) 는 단일-패스 멀티-LOD 렌더링을 수행할 수도 있다. 멀티-LOD 렌더링은 상이한 레벨들의 디테일을 갖는 이미지의 상이한 존들을 렌더링하는 것을 포함할 수도 있다. 단일-패스 멀티-LOD 렌더링은 (예를 들어, 임의의 픽셀을 반복적으로 프로세싱하지 않고) 단일 패스로 상이한 레벨들의 디테일 (예를 들어, 테슬레이팅된 레벨들의 디테일) 을 갖는 상이한 존들을 렌더링하는 것을 포함할 수도 있다. 단일-패스 포비에이티드 렌더링은 단일-패스 멀티-LOD 렌더링의 예일 수도 있고, 여기서 상이한 레벨들의 디테일을 갖는 상이한 존들은 아이 추적에 기초할 수도 있다. 예를 들어, 존은 사용자가 보고 있는 디스플레이의 포인트 (예를 들어, 이미지) 상에 거의 센터링된 원형 영역 (또는 다른 형상의 영역) 일 수도 있다. 부가적으로 또는 대안으로, 단일-패스 렌더링 (예를 들어, 단일-패스 멀티-LOD 렌더링) 은, 좌안 뷰 및 우안 뷰 양자 모두가 렌더링될 필요가 있더라도, 렌더링될 데이터 및/또는 텍스처에 걸쳐 하나의 패스 (예를 들어, 프로세싱 패스) 를 수행하는 것을 포함할 수도 있다. 따라서, 본원에 개시된 시스템들 및 방법들의 일부 구성들은 시스템 메모리와 온-칩 메모리 (예를 들어, GPU 메모리) 간에 데이터를 이동시키기 전에 가능한 한 많이 양쪽 아이 뷰들에 대한 많은 데이터를 이용할 수도 있다. 일부 구성들에서, 비동기식 메모리 제어기 (308) 및/또는 불-균일 프레임 버퍼 제어기 (312) 는 단일-패스 멀티-LOD 렌더링 (예를 들어, 단일-패스 포비에이티드 렌더링) 의 수행을 가능하게 할 수도 있다. 예를 들어, 비동기식 메모리 제어기 (308) 는 휘발성 메모리 블록으로부터 파라미터(들)(예를 들어, 디테일의 레벨 (LOD) 파라미터(들)) 을 판독 (예를 들어, 드로우 콜 동안 동적으로 적응) 하는 것을 허용할 수도 있다. 예를 들어, 비동기식 메모리 제어기 (308) 는 테슬레이션 제어 셰이더 (TCS), 테슬레이터 (TESS), 테슬레이션 평가 셰이더 (TES), 지오메트리 셰이더 (GS), 래스터화 및 프래그먼트 셰이더 (FS) 가 (예를 들어, 드로우 콜 동안 동적으로 적응시키기 위해) 휘발성 메모리 블록으로부터 하나 이상의 파라미터들에 액세스할 수 있도록 할 수도 있다.
일부 구성들에서, VLIW 회로 (304) 는 래스터라이저를 포함할 수도 있다. 래스터라이저는 MSAA 가 프리미티브들의 더 많은 샘플링을 수행하게 할 수도 있고, 이것은 또한 더 많은 프래그먼트 셰이더 (FS) 평가들을 활성화시킬 수도 있다. 부가적으로, 프리미티브들의 샘플링은, 프로세싱되고 평균화되고 있는 샘플들이 충분하지 않기 때문인, 재기 (jaggy)들과 같은 아티팩트들을 방지하도록 수행될 수도 있다.
전자 디바이스 (302) 는 하나 이상의 이미지들 (예를 들어, 디지털 이미지들, 이미지 프레임들, 비디오 등) 을 획득할 수도 있다. 하나 이상의 이미지들은 하나 이상의 사용자들의 이미지들 및/또는 장면 (예를 들어, 하나 이상의 객체들 및/또는 배경) 일 수도 있다. 예를 들어, 전자 디바이스 (302) 는 하나 이상의 이미지 센서들 (316) 및/또는 광학 시스템(들)(318) 의 시야 내에 위치되는 객체들의 이미지들을 이미지 센서(들)(316) 상으로 포커싱하는 하나 이상의 광학 시스템들 (318)(예를 들어, 렌즈들) 을 포함할 수도 있다. 일부 구성들에서, 이미지 센서(들)(316) 은 하나 이상의 이미지들을 캡처할 수도 있다. 이미지 센서(들)(316) 및/또는 광학 시스템(들)(318) 은 프로세서 (324) 에 커플링되고/되거나 이에 의해 제어될 수도 있다.
부가적으로 또는 대안으로, 전자 디바이스 (302) 는 다른 디바이스 (예를 들어, 전자 디바이스 (302) 에 커플링된 외부 이미지 센서, 네트워크 서버, 트래픽 카메라, 드롭 카메라, 자동차 카메라, 웹 카메라, 등) 로부터 하나 이상의 이미지들을 요청 및/또는 수신할 수도 있다. 일부 구성들에서, 전자 디바이스 (302) 는 통신 인터페이스 (320) 를 통해 하나 이상의 이미지들을 요청 및/또는 수신할 수도 있다. 예를 들어, 전자 디바이스 (302) 는 카메라 (예를 들어, 이미지 센서 (316) 및/또는 광학 시스템 (318)) 를 포함하거나 포함하지 않을 수도 있고, 원격 디바이스로부터 이미지들을 수신할 수도 있다.
일부 구성들에서, 전자 디바이스 (302) 에 포함된 하나 이상의 이미지 센서들 (316) 및/또는 전자 디바이스 (302) 에 커플링된 하나 이상의 다른 이미지 센서들은 사용자의 하나 이상의 이미지들을 캡처하도록 배향될 수도 있다. 예를 들어, 스마트폰은 디스플레이 (예를 들어, 디스플레이 (332)) 와 동일한 면 상에 장착된 카메라를 포함할 수도 있다. 이 방식에서, 카메라는, 사용자가 디스플레이를 보고 있는 동안 사용자의 이미지들을 캡처할 수도 있다. 다른 예에서, 카메라는 사용자 (예를 들어, 운전자) 의 이미지들을 캡처하도록 차량의 콘솔 및/또는 스티어링 휠에 장착될 수도 있다.
부가적으로 또는 대안으로, 전자 디바이스 (302) 에 포함된 하나 이상의 이미지 센서들 (316) 및/또는 전자 디바이스 (302) 에 커플링된 하나 이상의 다른 이미지 센서들은 풍경을 캡처하도록 배향될 수도 있다. 예를 들어, 하나 이상의 카메라들은 스마트 폰의 뒷면에 장착될 수도 있다. 다른 예에서, 하나 이상의 카메라들은 차량의 외부에 장착될 수도 있다. 일부 구성들에서, 전자 디바이스 (302) 는 증강 현실 (AR) 애플리케이션들, 가상 현실 (VR) 애플리케이션들 및/또는 다른 애플리케이션들 (예를 들어, 전망뷰 시각화, 운전자 보조, 운전자 보조 시스템들 (ADAS), 등) 에서 풍경의 이미지들을 이용할 수도 있다.
일부 구성들에서, 이미지 센서(들)(316) 에 의해 캡처되고/되거나 통신 인터페이스(들)(320) 을 통해 수신된 이미지(들)은 아이 추적을 위해 전자 디바이스 (302) 에 의해 이용될 수도 있다. 예를 들어, 프로세서 (324) 는 아이 추적기 (326) 를 포함 및/또는 구현할 수도 있다. 아이 추적기 (326) 는 하나 이상의 사용자들의 눈(들)의 시선 (예를 들어, 주시 방향 (look direction)) 을 추적할 수도 있다. 예를 들어, 아이 추적기 (326) 는 이미지(들)에 하나 이상의 사용자들의 눈(들)을 위치시킬 수도 있고 사용자(들)의 시선 (예를 들어, 주시 방향) 을 추정할 수도 있다. 예를 들어, 아이 추적기 (326) 는, 사용자가 디스플레이 (예를 들어, 디스플레이 (332) 또는 외부 디스플레이) 상에서 보고 있는 곳 및/또는 사용자가 디스플레이에 의해 제시된 이미지 상에서 보고 있는 곳을 결정 (예를 들어, 추정) 할 수도 있다. 다시 말해, 아이 추적기 (326) 는, 사용자의 시선이 이미지 및/또는 디스플레이에 대해 지향되는 곳을 결정 (예를 들어, 추정) 할 수도 있다.
본원에 개시된 시스템들 및 방법들은 단일 패스로 LOD 를 비동기식으로 변화시키고/시키거나 다수의 레벨들의 디테일을 렌더링하는 것을 허용할 수도 있다. 일부 구성들에서, 이미지의 하나 이상의 존들을 렌더링하는 것은 아이 추적에 기초할 수도 있다. 이미지의 존들은 상이한 레벨들의 디테일을 가질 수도 있다. 예를 들어, 전자 디바이스 (302) 는 상이한 레벨들의 디테일을 갖는 다수의 존들을 렌더링할 수도 있고, 여기서 최고 레벨의 디테일을 갖는 존은 사용자가 현재 보고 있는 영역에서 렌더링된다. 일부 구성들에서, 이것은 포비에이티드 렌더링으로서 지칭될 수도 있다. 아이 추적기 (326) 는 아이 추적 정보를 생성할 수도 있다. 아이 추적 정보는, 사용자의 시선이 디스플레이 및/또는 이미지에 대해 지향되는 (예를 들어, 사용자들의 시선이 지향되는) 곳을 나타낼 수도 있다. 일부 구성들에서, 프로세서 (324) 및/또는 VLIW 회로 (304) 는 아이 추적 정보에 기초하여 하나 이상의 LOD 파라미터들을 결정할 수도 있다. LOD 파라미터(들)은 이미지의 하나 이상의 존들에 대해 렌더링될 LOD 를 나타낼 수도 있다. LOD 파라미터(들)은 시스템 메모리 (314) 및/또는 온-칩 메모리 (310) 에 저장될 수도 있다. LOD 파라미터(들)은 VLIW 회로 (304) 에 의해 프로세싱되고 있는 데이터의 세트 (예를 들어, 드로우 콜) 와 관련되어 비동기식으로 업데이트될 수도 있다. 비동기식 메모리 제어기 (308) 는 데이터 세트 (예를 들어, 드로우 콜) 의 프로세싱 동안 (시스템 메모리 (314) 및/또는 온-칩 메모리 (310) 로부터) LOD 파라미터(들)을 판독할 수도 있다. 예를 들어, 비동기식 메모리 제어기 (308) 는 데이터 세트 (예를 들어, 드로우 콜) 의 프로세싱 동안 테슬레이션 설정들을 업데이트할 수도 있다.
아이 추적기 (326) 는, 사용자가 이미지의 상이한 부분을 살피도록 시선을 변화시키는 때를 검출할 수도 있다. 본원에 개시된 시스템들 및 방법들 (예를 들어, 비동기식 메모리 제어기 (308)) 은 아이 추적 (예를 들어, 아이 추적 정보 및/또는 LOD 파라미터(들)) 에 기초하여 렌더링된 LOD 를 즉시 변화시킬 수도 있다. 예를 들어, 비동기식 메모리 제어기 (308) 는 데이터 세트 (예를 들어, 드로우 콜) 의 프로세싱 동안 변화시킬 수도 있는 하나 이상의 파라미터들 (예를 들어, LOD 파라미터들) 을 판독할 수도 있다. 예를 들어, VLIW 회로 (304) 는, 데이터 세트의 프로세싱 동안에도, 사용자가 보기 위해 시선을 변경했던 이미지의 영역 (예를 들어, 존) 에서 LOD 를 증가시킬 수도 있다. 부가적으로 또는 대안으로, 본원에 개시된 시스템들 및 방법들 (예를 들어, 비동기식 메모리 제어기 (308)) 은 사용자의 시선이 더 이상 지향하지 않는 이미지의 영역 (예를 들어, 존) 에서 LOD 를 감소시킬 수도 있다. 일부 구성들에서, 존은 사용자가 보고 있는 디스플레이의 포인트 (예를 들어, 이미지) 상에 거의 센터링된 원형 영역 (또는 다른 형상의 영역) 일 수도 있다. 다른 구성들에서, 존은 사용자가 보고 있는 윈도우에 대응하는 이미지의 전체 영역일 수도 있다.
일부 구성들에서, 전자 디바이스 (302) 는 카메라 애플리케이션 및/또는 디스플레이 (332) 를 포함할 수도 있다. 카메라 애플리케이션이 실행되고 있을 때, 광학 시스템 (318) 의 시야 내에 위치되는 객체들의 이미지들은 이미지 센서 (316) 에 의해 캡처될 수도 있다. 이미지 센서 (316) 에 의해 캡처되고 있는 이미지들은 디스플레이 (332) 상에 제시될 수도 있다. 일부 구성들에서, 이들 이미지들은, 소정 시점에, 광학 시스템 (318) 의 시야 내에 위치되는 객체들이 디스플레이 (332) 상에 제시되도록 상대적으로 높은 프레임 레이트에서 빠르게 연속적으로 디스플레이될 수도 있다.
전자 디바이스 (302) 에 예시된 엘리먼트들 중 하나 이상은 선택적일 수도 있다는 것이 주목되어야 한다. 예를 들어, 전자 디바이스 (302) 에 예시된 엘리먼트들 중 하나 이상은 포함 및/또는 구현되거나 또는 그렇지 않을 수도 있다. 부가적으로 또는 대안으로, 프로세서 (324) 및/또는 VLIW 회로 (304) 에 예시된 엘리먼트들 중 하나 이상은 프로세서 (324) 및/또는 VLIW 회로 (304) 로부터 분리되어 (예를 들어, 다른 회로부에서, 다른 프로세서 상에서, 별개의 전자 디바이스 등에서) 구현될 수도 있다. 예를 들어, 이미지 센서 (316), 광학 시스템 (318), 통신 인터페이스 (320), 프로세서 (324), 아이 추적기 (326) 및/또는 디스플레이 (332) 는 전자 디바이스 (302) 상에서 구현되지 않을 수도 있다. 일부 구성들에서, 전자 디바이스 (302) 는 다른 디바이스로부터 이미지들 및/또는 아이 추적 정보를 수신할 수도 있다. 부가적으로 또는 대안으로, 하나 이상의 디스플레이들은 하나 이상의 별개의 디바이스들 상에서 구현될 수도 있다.
일부 구성들에서, 전자 디바이스 (302) 는 디스플레이 (332) 상에 사용자 인터페이스 (334) 를 제시할 수도 있다. 예를 들어, 사용자 인터페이스 (334) 는 사용자가 전자 디바이스 (302) 와 상호작용하게 할 수도 있다. 일부 구성들에서, 디스플레이 (332) 는 물리적 터치로부터 (예를 들어, 손가락, 스타일러스 또는 다른 툴에 의해) 입력을 수신하는 터치스크린일 수도 있다. 부가적으로 또는 대안으로, 전자 디바이스 (302) 는 다른 입력 인터페이스를 포함하거나 이에 커플링될 수도 있다. 예를 들어, 전자 디바이스 (302) 는 사용자를 대면하는 카메라를 포함할 수도 있고 사용자 제스처들 (예를 들어, 손 제스처들, 팔 제스처들, 아이 추적, 눈꺼풀 깜박거림 등) 을 검출할 수도 있다. 다른 예에서, 전자 디바이스 (302) 는 마우스에 커플링될 수도 있고 마우스 클릭을 검출할 수도 있다. 일부 구성들에서는 사용자 입력이 필요하지 않을 수도 있다는 것이 주목되어야 한다.
일부 구성들에서, 전자 디바이스 (302) 는 선택적으로, 모션 센서 (예를 들어, 자이로스코프(들), 가속계(들), 등) 을 포함할 수도 있다. 예를 들어, 모션 센서는 (예를 들어, 전자 디바이스 (302) 의) 모션 및/또는 배향을 검출할 수도 있다. 일부 구성들에서, 렌더링되고 있는 이미지는 모션 및/또는 배향 정보에 기초할 수도 있다. 예를 들어, 전자 디바이스 (302) 는 헤드-장착 디스플레이 (예를 들어, 가상 현실 (VR) 헤드셋, 증강 현실 (AR) 헤드셋, 등), 차량들 (예를 들어, 자동차, 드론, 비행기 등), 모바일 디바이스 (예를 들어, 스마트폰) 또는 이미지를 렌더링하기 위해 모션 및/또는 배향 정보를 이용할 수도 있는 다른 디바이스일 수도 있다. 예를 들어, 모션 및/또는 배향 정보는 렌더링된 장면에서 일반적인 뷰잉 방향을 나타낼 수도 있다. 전자 디바이스 (302) 는 일부 구성들에서 아이 추적 정보에 추가하여 또는 이로부터의 대안으로 이 뷰잉 정보에 기초하여 이미지를 렌더링할 수도 있다. 모션 센서의 사용은 비동기식 메모리 제어기 (308) 의 비동기식 동작의 다른 양태를 예시할 수도 있다. 예를 들어, 모션 센서는 모션 정보 및/또는 배향 정보를 특정 레이트 (예를 들어, 1000 헤르츠 (Hz)) 에서 메모리 (예를 들어, 시스템 메모리 (314) 및/또는 온-칩 메모리 (310)) 에 제공할 수도 있는 한편, VLIW 회로 (304) 는 비교적 더 낮은 레이트 (예를 들어, 초당 30 프레임들 (fps)) 에서 프레임들을 렌더링할 수도 있다. 비동기식 메모리 제어기 (308) 는 모션 정보 및/또는 배향 정보에 기초하여 데이터의 세트를 렌더링하는 중에 하나 이상의 렌더링 동작들 (예를 들어, 테슬레이션) 을 비동기식으로 변화시킬 수도 있다.
도 4 는 불-균일 프레임 버퍼 (430) 의 일 예를 예시하는 다이어그램이다. 이 예에서, 프레임 버퍼 (430) 는 2n x 2m 픽셀들의 용량을 갖는다. 일부 구성들에서, 전자 디바이스 (302) 는 선택적으로, 프레임 버퍼 (430) 를 타일들 (436) 로 타일링할 수도 있다 (432). 도 4 에 예시된 예에서, 사이즈 (n, m) 의 4 개의 타일들 (436) 이 예시된다. 일부 구현들에서, 온-칩 메모리 (310) 또는 온-칩 메모리 (310) 의 일부는 타일 (436) 의 사이즈에 제한될 수도 있다. 따라서, 전자 디바이스 (302) 는 프레임 버퍼 (430) 를 타일들 (436) 로 스플릿할 수도 있다. 다른 구현들에서, 온-칩 메모리 (310) 또는 온-칩 메모리 (310) 의 부분은 전체 프레임 버퍼 (430) 를 수용하기에 충분히 클 수도 있고, 틸팅 (434) 이 수행되지 않을 수도 있다.
전자 디바이스 (302) 는 프레임 버퍼 (430) 및/또는 타일들 (436) 을 스케일링된 부분들 (440) 로 세분할 수도 있다 (438). 예를 들어, 프레임 버퍼 (430) 및/또는 타일들 (436) 은 다수의 레졸루션들 및/또는 레벨들의 디테일을 피팅하도록 세분될 수도 있다. 도 4 에 예시된 예에서, 스케일링된 부분들 (440) 은 사이즈 (n/c, m/c) 이고, 여기서 c 는 스케일링 팩터이다. 이 스케일링 팩터 (c) 는 가변적일 수도 있고/있거나 구성에 기초하여 선택될 수도 있다.
전자 디바이스 (302)(예를 들어, 불-균일 프레임 버퍼 제어기 (312)) 는 프레임 버퍼 (430) 의 상이한 서브세트들 (442a-c) 에 동적으로 액세스할 수도 있다. 도 4 에 예시된 예에서, 전자 디바이스 (302) 는 버퍼 서브세트 A (442a), 버퍼 서브세트 B (442b) 및 버퍼 서브세트 C (442c) 에 동적으로 액세스할 수도 있다. 더 적은 또는 더 많은 버퍼 서브세트들이 이용될 수도 있다는 것이 주목되어야 한다. 또한, 프레임 버퍼 (430) 의 전부 또는 단지 일부가 버퍼 서브세트들에 의해 차지될 수도 있다는 것이 주목되어야 한다. 예를 들어, 프레임 버퍼의 다른 비-해칭된 부분들은 하나 이상의 다른 서브세트들에 의해 이용될 수도 있다.
상이한 프레임 버퍼 서브세트들 (예를 들어, 버퍼 서브세트들 (442a-c)) 의 동적 액세스 (예를 들어, 판독 및/또는 기입) 는 이미지들을 렌더링하는 것에서 더 놓은 제어 및/또는 효율성을 제공하도록 하나 이상의 접근들을 가능하게 할 수도 있다. 일부 접근들에서, 상이한 프레임 버퍼 서브세트들의 동적 액세스는 단일-패스 멀티-LOD 렌더링을 가능하게 할 수도 있다. 이것은, 하나의 LOD 에서 존을 렌더링하는 것이 상이한 LOD 에서 다른 존을 렌더링하는 것이 시작될 수 있기 전에 완료될 필요가 없기 때문이다. 이 접근에서, 버퍼 서브세트들 (442a-c) 중 하나 이상은 상이한 이미지 존들에 대응할 수도 있다. 예를 들어, 버퍼 서브세트 A (442a) 는 최고 LOD 를 갖는 존에 대응할 수도 있고, 버퍼 서브세트 B (442b) 는 중간 LOD 를 갖는 존에 대응할 수도 있으며 버퍼 서브세트 C (442c) 는 더 낮은 LOD 를 갖는 존에 대응할 수도 있다. 예를 들어, VLIW 회로 (304) 는 버퍼 서브세트 A (442a) 에 기입될 수도 있는 최고 LOD 존을 렌더링할 수도 있으면서 동시에 또는 순차적으로 버퍼 서브세트 B (442b) 에 기입될 수도 있는 중간 LOD 존을 렌더링한다. 상이한 LOD 존들은 임의의 순서로 (예를 들어, 최고 LOD 에서부터 최하로, 역의 순서로 또는 다른 순서로) 렌더링될 수도 있다는 것이 주목되어야 한다. 부가적으로 또는 대안으로, 상이한 프레임 버퍼 서브세트들의 동적 액세스는 상이한 레이트들에서 상이한 존들을 프로세싱하는 것을 허용할 수도 있다 (예를 들어, 더 큰 프레임 버퍼 서브세트는 더 빠르게 프로세싱되도록 하나의 존에 대해 할당될 수도 있는 한편, 더 작은 프레임 버퍼 서브세트는 더 천천히 프로세싱되도록 다른 존에 대해 할당될 수도 있다).
일부 접근들에서, 상이한 프레임 버퍼 서브세트들의 동적 액세스는 병렬 셰이더 프로세스들 (예를 들어, 서브-루틴들) 을 가능하게 할 수도 있다. 예를 들어, 상이한 셰이더 프로세스들은 병렬로 실행될 수도 있고, 여기서 하나의 셰이더 프로세스는 프레임 버퍼의 하나의 서브세트에 액세스하고 다른 셰이더 프로세스는 프레임 버퍼의 다른 서브세트에 액세스한다. 부가적으로 또는 대안으로, 상이한 프레임 버퍼 서브세트들의 동적 액세스는 셰이더 서브-루틴 스왑핑을 허용할 수도 있다. 예를 들어, 버퍼 서브세트 A (442a) 에 액세스하는 제 1 셰이더 서브-루틴이 실행될 수도 있다. 제 1 셰이더 서브-루틴이 진행 중인 동안, 버퍼 서브세트 B (442b) 에 액세스하는 제 2 셰이더 서브-루틴은 끝날 수도 있다. 제 1 셰이더 서브-루틴이 진행중인 동안 제 2 셰이더 서브-루틴은 (예를 들어, 버퍼 서브세트 B (442b) 에 액세스할 수도 있는) 다른 셰이더 서브-루틴에 대해 스왑핑될 수도 있다. 이것은, 다른 것이 시작될 수 있기 전에 셰이더 서브-루틴이 완성되기를 대기하는 것보다는, 프레임 버퍼의 공간을 이용하는 것에서 더 좋은 효율성을 허용할 수도 있다.
일부 접근들에서, 상이한 프레임 버퍼 서브세트들의 동적 액세스는 샘플 대체를 가능하게 할 수도 있다. 예를 들어, 불-균일 프레임 버퍼 제어기 (312) 는 다른 픽셀의 하나 이상의 샘플들에 대한 프로세싱된 픽셀의 하나 이상의 샘플들을 스왑핑할 수도 있다. 일부 구성들에서, VLIW 회로 (304) 는 안티-에일리어싱 (예를 들어, 멀티-샘플 안티-에일리어싱 (MSAA)) 을 수행할 수도 있다. 안티-에일리어싱을 수행하는데 있어서, 상이한 픽셀들은 상이한 수들의 샘플들을 가질 수도 있다. 예를 들어, 버퍼 서브세트 A (442a) 에서의 제 1 (예를 들어, "미세") 픽셀은 4 개의 샘플들을 가질 수도 있고 고 품질의 셰이딩을 사용할 수도 있는 한편, 버퍼 서브세트 B (442b) 에서의 부근의 (예를 들어, 이웃하는) 제 2 (예를 들어, "코어스") 픽셀은 1 개의 샘플을 가질 수도 있고 저 품질의 셰이딩을 사용할 수도 있다. 제 2 픽셀 상에서 프로세싱 (예를 들어, 셰이딩) 을 수행하는 대신에, 불-균일 프레임 버퍼 제어기 (312) 는 제 2 픽셀의 샘플을 제 1 픽셀의 샘플로 대체할 수도 있다. 이것은 제 2 픽셀에 대한 임의의 프로세싱을 수행하는 것을 회피할 수도 있다. 부가적으로 또는 대안으로, 불-균일 프레임 버퍼 제어기 (312) 는 밉맵들을 프로세싱하는데 있어서 샘플 대체를 수행할 수도 있다. 예를 들어, 불-균일 프레임 버퍼 제어기 (312) 는 (예를 들어, 버퍼 서브세트 B (442b) 에서) 더 낮은 레벨로부터의 샘플을 (예를 들어, 버퍼 서브세트 A (442a) 에서) 더 높은 레벨로부터의 샘플로 대체할 수도 있다. 이것은 하나 이상의 더 낮은 레벨들에서 일부 또는 프로세싱을 회피할 수도 있다.
불-균일 프레임 버퍼 제어기 (312) 는 셰이더 프로세싱 (예를 들어, 서브-루틴들, 커넬들, 등) 의 동적 디스패치를 가능하게 할 수도 있고, 픽셀 샘플 대체를 가능하게 할 수도 있고/있거나 멀티-LOD 프레임 버퍼를 제공할 수도 있다. 도 4 에 예시된 바와 같이, 프레임 버퍼 (430) 는 다수의 렌더링된 타겟들 (444) 로서 스트림 아웃될 수도 있는 이미지 데이터를 저장할 수도 있다.
리스팅 (1) 은 불-균일 프레임 버퍼 기능성에 대한 하나의 접근을 예시하는 의사코드의 일 예를 예시한다. GLSL 는 OpenGL Shading Language 의 약어이고 SSBO 는 Shader Storage Buffer Object 의 약어이다. 리스팅 (1) 은 상이한 레벨들의 디테일을 갖는 다수의 존들을 예시한다.
Figure pct00001
Figure pct00002
리스팅 (1)
도 5 는 다수의 레벨들의 디테일을 렌더링하는 방법 (500) 의 더 많은 특정 구성을 예시하는 흐름도이다. 방법 (500) 은 도 3 과 연관되어 설명된 전자 디바이스 (302) 에 의해 수행될 수도 있다.
전자 디바이스 (302) 는 지오메트리 데이터 (예를 들어, 지오메트리 데이터 (328)) 를 획득할 수도 있다 (502). 이것은 도 1 내지 도 3 중 하나 이상과 연관되어 설명된 바와 같이 달성될 수도 있다. 예를 들어, 전자 디바이스 (302) 는 지오메트리 데이터를 스토리지로부터 메모리 (예를 들어, 시스템 메모리 (314) 및/또는 온-칩 메모리 (310)) 로 로딩할 수도 있고/있거나 다른 디바이스로부터 지오메트리 데이터를 수신하고 이 지오메트리 데이터를 메모리 (예를 들어, 시스템 메모리 (314) 및/또는 온-칩 메모리 (310)) 로 로딩할 수도 있다.
전자 디바이스 (302) 는 아이 추적을 수행할 수도 있다 (504). 이것은 도 3 과 연관되어 설명된 바와 같이 달성될 수도 있다. 예를 들어, 전자 디바이스 (302) 는 하나 이상의 이미지들을 획득 (예를 들어, 캡처 및/또는 수신) 할 수도 있고 하나 이상의 이미지들에 기초하여 사용자의 시선이 지향되는 곳 (예를 들어, 사용자가 디스플레이 상에서 보고 있는 곳 및/또는 디스플레이 상에 제시되고 있는 이미지) 을 결정할 수도 있다.
전자 디바이스 (302) 는 아이 추적에 기초하여 상이한 레벨들의 디테일을 비동기식으로 렌더링할 수도 있다 (506). 이것은 도 1 내지 도 3 중 하나 이상과 연관되어 전술된 바와 같이 달성될 수도 있다. 예를 들어, 전자 디바이스 (302) 는 메모리 (예를 들어, 시스템 메모리 (314) 및/또는 온-칩 메모리 (310)) 에 비동기식으로 액세스하여, 아이 추적에 기초하여 상이한 레벨들의 디테일을 렌더링할 수도 있다. 예를 들어, 전자 디바이스 (302) 는, 아이 추적에 기초하여 데이터의 세트에 대한 존이 변화하는 경우 프로세싱 동안 데이터의 세트에 대한 LOD 를 변화시킬 수도 있다 (여기서, 예를 들어 데이터의 세트는 처음에 상이한 LOD 를 갖는다). 일부 구성들에서, 전자 디바이스 (302) 는, 사용자의 시선 방향이 데이터의 세트에 대응하는 이미지의 영역으로 지향되는 경우 데이터의 세트에 대한 LOD 를 증가시킬 수도 있다. 부가적으로 또는 대안으로, 전자 디바이스 (302) 는, 사용자의 시선이 데이터의 세트에 대응하는 이미지의 영역으로부터 멀리 이동하는 경우 데이터의 세트에 대한 LOD 를 감소시킬 수도 있다.
일부 구성들에서, 상이한 레벨들의 디테일을 비동기식으로 렌더링하는 것 (506) 은 동적 LOD 테슬레이션을 수행하는 것을 포함할 수도 있다. 예를 들어, 메모리 (예를 들어, 시스템 메모리 (314) 및/또는 온-칩 메모리 (310)) 는 LOD 테슬레이션 파라미터(들) (예를 들어, 테슬레이션의 정도) 에서의 변화를 나타내도록 업데이트될 수도 있다. 비동기식 메모리 제어기 (308) 는 업데이트된 LOD 테슬레이션 파라미터에 액세스하여 LOD 테슬레이션을 비동기식으로 변화시킬 수도 있다.
전자 디바이스 (302) 는 프레임 버퍼의 상이한 서브세트들에 동적으로 액세스할 수도 있다 (508). 이것은 도 1 내지 도 4 중 하나 이상과 연관되어 전술된 바와 같이 달성될 수도 있다. 예를 들어, 전자 디바이스 (302) 는 제 2 존의 적어도 하나의 픽셀과는 상이한 레이트에서 제 1 존의 적어도 하나의 픽셀에 액세스할 수도 있다. 부가적으로 또는 대안으로, 전자 디바이스 (302) 는, 제 1 픽셀의 프로세싱이 진행 중이고 제 2 픽셀의 프로세스가 완료될 때 셰이더 서브-루틴 스왑핑을 가능하게 할 수도 있다. 부가적으로 또는 대안으로, 전자 디바이스 (302) 는 제 2 픽셀의 제 2 샘플을 제 1 픽셀의 프로세싱된 제 1 샘플로 대체하여 제 2 픽셀의 제 2 샘플을 프로세싱하는 것을 회피할 수도 있다.
전자 디바이스 (302) 는 렌더링된 이미지를 제시할 수도 있다 (510). 예를 들어, 전자 디바이스 (302) 는 상이한 레벨들의 디테일을 갖고 비동기식으로 렌더링되고 있는 (506) 이미지 데이터를 스트림 아웃할 수도 있다. 일부 구성들에서, 이미지 데이터는 통합형 디스플레이 (332) 에 제공될 수도 있다. 다른 구성들에서, 이미지 데이터는 전자 디바이스 (302) 와 통신하는 원격 디스플레이에 제공될 수도 있다. 예를 들어, 전자 디바이스 (302) 는 (VGA, DVI, HDMI, 등을 통해) 전자 디바이스 (302) 에 커플링되는 디스플레이에 이미지 데이터를 제공할 수도 있다.
도 6 은 포비에이티드 렌더링을 위한 방법 (600) 의 예를 예시하는 흐름도이다. 이 방법에서, 지오메트리 데이터가 획득된다 (602). 아이 추적이 또한, 수행된다 (604). 코어스 층이 렌더링되고 (606), 중간 층이 렌더링되며 (608), 미세 층이 렌더링된다 (610). 예를 들어, 미세 층은, 사용자의 시선이 지향되는 이미지 상에 렌더링될 수도 있다 (610). 중간 층은 미세 층 영역을 오버랩하는 더 큰 영역에서 렌더링될 수도 있다 (608). 코어스 층은 중간 층 영역 및 미세 층 영역을 포함하는 더욱 더 큰 영역 (예를 들어, 전체 이미지) 에서 렌더링될 수도 있다 (606). 따라서, 층들 간의 상당한 오버랩이 존재할 수도 있다. 코어스 층, 중간 층 및 미세 층은 안티-에일리어싱으로 병합될 수도 있다 (612). 결과의 이미지는 프레임 버퍼로 출력될 수도 있다 (614).
관측될 수 있는 바와 같이, 방법 (600) 은 오버랩하는 영역들의 상당한 양들을 렌더링하는 것을 포함할 수도 있다. 예를 들어, 미세 디테일 영역은 3 번 렌더링될 수도 있다: 일단 코어스 층에서 한 번, 중간 층에서 한 번, 및 미세 층에서 한 번. 이것은 동일한 픽셀들에 걸쳐 다수의 렌더링 패스들을 수행하는 것과 같이 비효율적일 수도 있다.
도 7 은 포비에이티드 렌더링의 일 예를 예시한다. 특히, 도 7 은 포비에이티드 렌더링을 위한 장면의 예를 예시한다. 포비에이티드 렌더링을 위한 장면은 코어스 디테일 영역 (748), 중간 디테일 영역 (750) 및 미세 디테일 영역 (752) 을 포함한다. 도 6 과 연관되어 설명된 바와 같이, 포비에이티드 렌더링에 대한 하나의 접근은 코어스 층 (754) 을 렌더링하는 것, 중간 층 (756) 을 렌더링하는 것 및 미세 층 (758) 을 렌더링하는 것을 포함한다. 그 후, 코어스 층 (754), 중간 층 (756) 및 미세 층 (758) 상에서 병합 및 블렌딩 (760) 이 수행되어 최종 블렌딩된 이미지 (762) 를 생성할 수도 있다. 예를 들어, 중간 층 (756) 과 코어스 층 (754) 간의 블렌드 마스크 A (764a) 는 중간 층 (756) 및 코어스 층 (754) 을 블렌딩하는데 사용될 수도 있다. 부가적으로, 중간 층 (756) 과 미세 층 (758) 간의 블렌드 마스크 B (764b) 는 중간 층 (756) 및 미세 층 (756) 을 블렌딩하는데 사용될 수도 있다. 관측될 수 있는 바와 같이, 이 접근은 동일한 픽셀들을 다수의 패스들에서 렌더링하여, 비효율성을 초래한다. 블렌드 마스크들 (764a-b) 중 하나 이상은 일부 구성들에서 가중화된 (예를 들어, 점진적인) 블렌드를 제공할 수도 있고, 여기서 블렌딩 가중치는 블렌드 마스크들의 외측 에지들로부터 내측 영역으로 증가한다. 또한, 코어스 층 (754) 및/또는 최종 블렌딩된 이미지 (762) 가 편의를 위해 전체 장면의 서브세트들로서 도 7 에 예시된다는 것이 주목되어야 한다. 그러나, 코어스 층 (754) 및/또는 최종 블렌딩된 이미지 (762) 는 전체 장면을 커버할 수도 있다.
도 8 은 매우 긴 명령어 (VLIW) 회로 (868) 를 포함하는 전자 디바이스 (866) 의 예를 예시하는 블록도이다. 특히, 도 8 은 그래픽 프로세싱을 위한 아키텍처의 일 예를 예시한다. 도 8 과 연관되어 설명된 아키텍처의 하나 이상의 양태들은 엔비디아 (Nvidia) 아키텍처의 양태들과 유사하게 기능할 수도 있다. 이 아키텍처는 전력 및 다이 영역의 희생으로 고-대역폭 설계를 갖는 즉각 모드 렌더링 (IMR) 을 제공할 수도 있다. 이 설계에서, 캐시 (801) 는 (예를 들어, 반복된 샘플링, 시스템 메모리 (805) 로부터 판독 및/또는 시스템 메모리에 기입하는 것을 회피하기 위해) 대역폭을 감소시키도록 이용될 수도 있다. 예를 들어, 캐시 (801) 는 전체 이미지 프레임에 대한 데이터를 수용하기에 충분히 클 수도 있다. 본원에 설명된 그래픽 파이프라인들 중 하나 이상은 DirectX 및/또는 OpenGL 파이프라인들 및/또는 애플리케이션 프로그래밍 인터페이스 (API) 들과 유사한 하나 이상의 양태들을 가질 수도 있다는 것이 주목되어야 한다. 미국 특허출원 공개 제 2014/0347363 호는 DirectX 파이프라인과 유사성을 가질 수도 있는 그래픽 프로세싱의 일부 양태들을 설명한다.
전자 디바이스 (866) 는 VLIW 회로 (868) (예를 들어, GPU) 및 시스템 메모리 (805) (예를 들어, DRAM) 을 포함할 수도 있다. VLIW 회로 (868) 는 그래픽 파이프라인 (870) 및 온-칩 메모리 (803) 를 포함할 수도 있다. 그래픽 파이프라인 (870) 은 프론트-엔드 (FE)(872), 정점 페처 (VF)(874), 정점 셰이더 (VS)(876), 테슬레이션 제어 셰이더 (TCS)(878), 테슬레이터 (TESS)(880) (예를 들어, 테슬레이션 엔진), 테슬레이션 평가 셰이더 (TES)(882), 지오메트리 셰이더 (GS)(884), 래스터라이저 (Rast)(886), 프래그먼트 셰이더 (FS)(890) 및 렌더 출력 유닛 (ROP)(894) 중 하나 이상을 포함할 수도 있다. 많은 엘리먼트 라벨들이 편의를 위해 축약되어 있다. 온-칩 메모리 (803) 는 버퍼 (896), 구성/해체 (composition/decomposition; C/D) 메모리 (898) 및 캐시 (801) 를 포함할 수도 있다. 일부 구성들에서, 버퍼 (896) 는 텍스처 버퍼, 프레임 버퍼 및/또는 온-칩 메모리 (910) 의 다른 블록이고/이거나 이들을 포함할 수도 있다. 시스템 메모리 (805) 는 커맨드 데이터 (Cmd)(807), 정점 데이터 (809), 텍스처 데이터 및 비순서화된 액세스 뷰 데이터 (811) 및 렌더링된 타겟들 데이터 (813) 를 포함할 수도 있다.
장면을 렌더링하기 위해, 전자 디바이스 (866) 는 커맨드 데이터 (807) 및 정점 데이터 (809) 를 시스템 메모리 (805) 로부터 온-칩 메모리 (803) 에서의 캐시 (801) 로 로딩할 수도 있다. 정점 데이터 (809) 는 하나 이상의 포인트들 (예를 들어, 정점들), 라인들 및/또는 다각형들을 나타낼 수도 있다. 정점 데이터 (809) 는 장면 및/또는 장면에서의 하나 이상의 객체들을 나타낼 수도 있다.
FE (872) 는 캐시 (801) 와 그래픽 파이프라인 (870)(예를 들어, VF (874)) 간의 인터페이스를 제공할 수도 있다. 예를 들어, FE (872) 는 VF (874) 에 의해 변형될 데이터를 획득할 수도 있고/있거나 캐시 (801) 로부터 취출되는 데이터 (예를 들어, 정점 데이터) 에 관한 VF (874) 를 제어할 수도 있다.
VF (874) 는 정점 데이터를 캐시 (801) 로부터 그래픽 파이프라인 (870) 으로 페치할 수도 있다. VF (874) 는 버퍼 (896) 에 액세스할 수도 있다. 예를 들어, VF 는 데이터를 버퍼 (896) 에 기입할 수도 있다. VF (874) 는 정점 데이터를 VS (876) 에 제공할 수도 있다. 부가적으로 또는 대안으로, VS (876) 는 버퍼 (896) 로부터 정점 데이터를 취출할 수도 있다.
VS (876) 는 정점 데이터를 상이한 공간으로 변환할 수도 있다. 예를 들어, VS (876) 는 정점 데이터를 3-차원 (3D) 공간으로부터 2-차원 (2D) 공간으로 변환할 수도 있다. VS (876) 는 변환된 정점 데이터를 TCS (878) 에 제공할 수도 있고/있거나 변환된 정점 데이터를 버퍼 (896) 에 저장할 수도 있다.
TCS (878) 는 정점 데이터 (예를 들어, 변환된 정점 데이터) 를 VS (876) 로부터 및/또는 버퍼 (896) 로부터 수신할 수도 있다. TCS (878) 는 정점 데이터 (예를 들어, 변환된 정점 데이터) 의 단위를 변환할 수도 있다. 예를 들어, TCS (878) 는 정점 데이터의 단위를 테슬레이션을 위한 (예를 들어, 삼각형들과 같은 다각형들로 효율적으로 세분하기 위한) 단위로 변환할 수도 있다. TCS (878) 는 정보를 캐시 (801) 에 저장할 수도 있다. 예를 들어, TCS (878) 는 TCS (878) 에 의해 수행된 단위 변환을 나타내는 단위 표시자 (basis indicator) 를 저장할 수도 있다. 단위-변환된 정점 데이터는 TESS (880) 에 제공될 수도 있다.
TESS (880) 는 정점 데이터 (예를 들어, 단위-변환된 정점 데이터) 를 테슬레이팅할 수도 있다. 예를 들어, TESS (880) 는 정점 데이터에 기초하여 더 많은 정점들을 생성할 수도 있다 (예를 들어, 삼각형들을 더 많은 삼각형들로 세분할 수도 있다). TESS (880) 는 LOD 파라미터에 기초하여 동작할 수도 있다. LOD 파라미터는 LOD 를 지정할 수도 있고/있거나 수행할 TESS (880) 에 대한 테슬레이션의 정도를 나타낼 수도 있다. 테슬레이팅된 정점 데이터는 TES (882) 에 제공될 수도 있다.
TES (882) 는 정점 데이터 (예를 들어, 테슬레이팅된 정점 데이터) 의 단위를 변환할 수도 있다. 예를 들어, TES (882) 는 정점 데이터의 단위를 TCS (878) 에 의해 적용된 단위 변환 전의 단위로 다시 변환할 수도 있다. 일부 구성들에서, TES (882) 는 정점 데이터의 단위를 변환 (예를 들어, 역 변환) 하기 위해 캐시 (801) 로부터 단위 표시자를 판독할 수도 있다. TES (882) 는 정점 데이터 (예를 들어, 역 단위-변환된 정점 데이터) 를 GS (884) 에 제공하고/하거나 정점 데이터를 버퍼 (896) 에 저장할 수도 있다.
GS (884) 는 정점 데이터 (예를 들어, 역 단위-변환된 정점 데이터) 상에서 하나 이상의 동작들을 수행할 수도 있다. 예를 들어, GS (884) 는 정점 데이터에 기초하여 추가적인 지오메트리를 생성할 수도 있다. GS (884) 는 (예를 들어, 추가적인 지오메트리를 갖는) 정점 데이터를 래스터라이저 (886) 및/또는 캐시 (801) 에 제공할 수도 있다.
래스터라이저 (886) 는 GS (884) 및/또는 캐시 (801) 로부터 정점 데이터를 수신할 수도 있다. 래스터라이저 (886) 는 정점 데이터를 래스터화할 수도 있다. 예를 들어, 래스터라이저는 정점 데이터를 픽셀 데이터를 컨버팅할 수도 있다. 픽셀 데이터는 FS (890) 에 제공될 수도 있다.
FS (890) 는 픽셀 데이터 상에서 프래그먼트 셰이딩 또는 픽셀 셰이딩을 수행할 수도 있다. 예를 들어, FS (890) 는 하나 이상의 픽셀들의 하나 이상의 속성들 (예를 들어, 컬러, 밝기, 투명도 등) 을 결정할 수도 있다. 일부 구성들에서, FS (890) 는 숨은 면 제거 (hidden surface removal; HSR) 를 수행할 수도 있다. FS (890) 는 구성/분해 (C/D) 블록 (892) 을 포함할 수도 있다. 대안으로, C/D (892) 는 FS (890) 로부터 분리되고/되거나 FS (890) 에 커플링될 수도 있다.
일부 구성들에서, C/D (892) 는 텍스처링 및/또는 블렌딩과 같은 동작들을 수행할 수도 있다. 예를 들어, C/D (892) 는 다수의 층들을 블렌딩하여 최종 픽셀 값을 결정할 수도 있다. 일부 구성들에서, C/D (892) 는 상이한 프레임 버퍼들을 조합할 수도 있다 (예를 들어, 픽셀 마다 다수의 이미지들을 함께 블렌딩할 수도 있다). C/D (892) 는 칩 상에서 (VLIW 회로 (868) 상에서), 그래픽 파이프라인 (870) 에서, 온-칩 메모리 (803) 에서 구현될 수도 있고/있거나 VLIW 회로 (868) 로부터 분리될 수도 있다는 것이 주목되어야 한다. C/D (892) 는 일부 구성들에서 시스템 메모리 (805) 에서 구현되지 않을 수도 있다. C/D (892) 는, 이미지 데이터가 시스템 메모리 (805) 에 및/또는 다른 스트림 아웃 (예를 들어, HDMI 스트림 아웃) 에 기입되기 전에 이미지 데이터 상에서 동작할 수도 있다. FS (890) (및/또는 C/D (892)) 는 C/D 메모리 (898) 에 액세스할 수도 있다. 예를 들어, 시스템 메모리 (805) 는 텍스처 데이터 및/또는 비순서화된 액세스 뷰 데이터 (811) 를 캐시 (801) 에 제공할 수도 있다. FS (890) 는 C/D 메모리 및/또는 캐시 (801) 에 액세스함으로써 하나 이상의 동작들을 수행할 수도 있다. FS (890) 는 픽셀 데이터 (예를 들어, 프로세싱된 픽셀 데이터) 를 ROP (894) 에 제공할 수도 있다.
ROP (894) 는 픽셀 데이터 (예를 들어, 프로세싱된 픽셀 데이터) 를 출력할 수도 있다. 예를 들어, ROP (894) 는 C/D 메모리 (898) 및/또는 캐시 (801) 를 통해 픽셀 데이터를 렌더링된 타겟들 데이터 (813) 로서 시스템 메모리 (805) 로 출력할 수도 있다. 렌더링된 타겟들 데이터 (813) 는 프리젠테이션을 위해 제공 (예를 들어, 출력) 될 수도 있다. 예를 들어, 렌더링된 타겟들 데이터 (813) 는 프리젠테이션을 위해 디스플레이로 전송될 수도 있다.
본원에 개시된 시스템들 및 방법들 없이, 도 8 과 연관되어 설명된 동작들은 데이터 세트들 (예를 들어, 정점, 픽셀 및/또는 이미지 데이터의 세트들) 의 관점에서 수행될 수도 있고, 여기서 각각의 데이터 세트는 렌더링을 위한 하나 이상의 확립된 파라미터들 (예를 들어, 렌더링 파라미터(들)) 을 가질 수도 있다는 것이 주목되어야 한다. 예를 들어, 각각의 데이터 세트는 테슬레이션 동작들을 위해 할당된 고정된 LOD 를 가질 수도 있다. 따라서, LOD 는 데이터 세트에 대한 렌더링 동안 (예를 들어, 드로우 콜 동안) 변화되지 않을 수도 있다. 이것은, 예를 들어 도 6 및 도 7 과 연관되어 설명된 바와 같이 다수의 LOD들을 렌더링하기 위한 다수의 패스들을 초래할 수도 있다. 부가적으로 또는 대안으로, (온-칩 메모리 (803), 버퍼 (896) 및/또는 캐시 (801) 에서 구현될 수도 있는) 프레임 버퍼는 균일할 수도 있다.
예를 들어, 프레임 버퍼는 균일한 데이터 (예를 들어, 동일한 LOD 를 갖는 데이터, 동일한 수의 픽셀 샘플들을 갖는 데이터, 동일한 셰이더 서브-루틴으로부터의 데이터, 등) 를 포함할 수도 있다. 예를 들어, 버퍼의 서브세트들은 독립적으로 (예를 들어, 상이한 셰이더 서브-루틴들에 의해 동시에) 액세스되지 않을 수도 있다. 예를 들어, 프레임 버퍼는, 프레임 버퍼로의 단지 하나의 데이터 기입이 한 번에 발생할 수도 있다는 점에서 균일할 수도 있다. 부가적으로 또는 대안으로, 프레임 버퍼는, 각각의 데이터가 한 번에 단일의 셰이더 서브-루틴으로부터의 것일 수도 있다는 점에서 균일할 수도 있다. 부가적으로 또는 대안으로, 프레임 버퍼는, 각각의 데이터 기입이 동일한 LOD 를 갖는 및/또는 동일한 수의 픽셀 샘플들을 갖는 데이터 만을 포함할 수도 있다는 점에서 균일할 수도 있다.
도 9 는 도 8 와 연관되어 설명된 아키텍처에서 구현된 본원에 개시된 시스템들 및 방법들의 예를 예시하는 블록도이다. 구체적으로, 도 9 는 전자 디바이스 (902) 를 예시한다. 도 9 와 연관되어 설명된 전자 디바이스 (902) 는 도 1 내지 도 5 중 하나 이상과 연관되어 전술된 전자 디바이스들 (102, 302) 중 하나 이상의 예일 수도 있다. 전자 디바이스 (902) 는 도 1 내지 도 5 중 하나 이상과 연관되어 설명된 방법들, 기능들, 단계들, 동작들, 등 중 하나 이상을 수행하도록 구성될 수도 있다.
전자 디바이스 (902) 는 VLIW 회로 (904) (예를 들어, GPU) 및 시스템 메모리 (914) 를 포함할 수도 있다. VLIW 회로 (904) 는 도 1 내지 도 5 중 하나 이상과 연관되어 전술된 VLIW 회로들 (104, 304) 중 하나 이상의 일 예일 수도 있다. 부가적으로 또는 대안으로, 시스템 메모리 (914) 는 도 1 내지 도 5 중 하나 이상과 연관되어 설명된 시스템 메모리들 (114, 314) 중 하나 이상의 예일 수도 있다. 시스템 메모리 (914) 는 커맨드 데이터 (Cmd)(907), 정점 데이터 (909), 텍스처 및 비순서화된 액세스 뷰 데이터 (911) 및/또는 렌더링된 타겟 데이터 (913) 를 포함할 수도 있다. 커맨드 데이터 (Cmd)(907), 정점 데이터 (909), 텍스처 및 비순서화된 액세스 뷰 데이터 (911) 및/또는 렌더링된 타겟 데이터 (913) 중 하나 이상은 도 8 과 연관되어 설명된 대응하는 데이터와 유사할 수도 있다.
VLIW 회로 (904) 는 그래픽 파이프라인 (906) 및 온-칩 메모리 (910) 를 포함할 수도 있다. 도 9 와 연관되어 설명된 그래픽 파이프라인 (906) 은 도 1 내지 도 5 중 하나 이상과 연관되어 설명된 그래픽 파이프라인들 (106, 306) 중 하나 이상의 일 예일 수도 있다. 부가적으로 또는 대안으로, 도 9 와 연관되어 설명된 온-칩 메모리 (910) 는 도 1 내지 도 5 중 하나 이상과 연관되어 설명된 온-칩 메모리들 (110, 310) 중 하나 이상의 일 예일 수도 있다.
온-칩 메모리 (910) 는 버퍼 (996), 캐시 (901) 및/또는 C/D 메모리 (998) 를 포함할 수도 있다. 일부 구성들에서, 온-칩 메모리 (910), 버퍼 (996), 캐시 (901) 및/또는 C/D 메모리 (998) 중 하나 이상은 도 8 과 연관되어 설명된 대응하는 엘리먼트들과 유사할 수도 있다. 온-칩 메모리 (910) 는 도 3 및 도 4 중 하나 이상과 연관되어 설명된 바와 같이 하나 이상의 프레임 버퍼들을 포함할 수도 있다는 것이 주목되어야 한다. 프레임 버퍼(들)은 온-칩 메모리 (910), 버퍼 (996), 캐시 (901) 및/또는 C/D 메모리 (998) 중 하나 이상에 포함될 수도 있다. 부가적으로 또는 대안으로, 프레임 버퍼(들)은 시스템 메모리 (914) 에 포함될 수도 있다. 일부 구성들에서, 하나 이상의 프레임 버퍼들은 온-칩 메모리 (910), 시스템 메모리 (914) 또는 양자 모두에 포함될 수도 있다.
그래픽 파이프라인 (906) 은 FE (972), VF (974), VS (976), TCS (978), TESS (980), TES (982), GS (984), 래스터라이저 (986), FS (990) 및 ROP (994) 중 하나 이상을 포함할 수도 있다. 일부 구성들에서, FE (972), VF (974), VS (976), TCS (978), TESS (980), TES (982), GS (984), 래스터라이저 (986), FS (990) 및 ROP (994) 중 하나 이상은 도 8 과 연관되어 설명된 하나 이상의 대응하는 엘리먼트들의 동작들 중 하나 이상을 수행할 수도 있다.
도 9 에 예시된 구성들에서, VLIW 회로 (904)(예를 들어, 그래픽 파이프라인 (906)) 는 비동기식 메모리 제어기 (908) 를 포함할 수도 있다. 비동기식 메모리 제어기 (908) 는 TCS (978), TESS (980), TES (982), GS (984), 래스터라이저 (986) 및 FS (990) 중 하나 이상을 포함하고/하거나 이들에서 구현될 수도 있다. 완전히 또는 부분적으로, 예를 들어 비동기식 메모리 제어기 (908a) 는 TCS (978), TESS (980), TES (982), GS (984), 래스터라이저 (986) 및/또는 FS (990) 에서 구현될 수도 있다. 일반적인 라벨 "908" 은, 비동기식 메모리 제어기 (908) 가 도 9 에 예시된 엘리먼트들 (908a-f) 중 어느 하나 또는 전부에서 구현될 수도 있다는 것을 가리킬 수도 있다. 일부 구성들에서, 비동기식 메모리 제어기 (908) 는 TCS (978), TESS (980), TES (982) 및 GS (984) 중 하나 이상에서만 구현될 수도 있다. 예를 들어, 비동기식 메모리 제어기 (908) 는, 데이터가 추후의 단계들로 포워딩될 수도 있기 때문에, TCS (978), TESS (980), TES (982), 및/또는 GS (984) 에서 하나 이상의 파라미터들을 단지 비동기식으로 판독할 수도 있다.
도 9 와 연관되어 설명된 비동기식 메모리 제어기 (908) 는 도 1 내지 도 5 중 하나 이상과 연관되어 설명된 비동기식 메모리 제어기들 (108, 308) 중 하나 이상의 예일 수도 있다. 예를 들어, 비동기식 메모리 제어기 (908) 는 (예를 들어, 데이터 세트의 프로세싱 동안) 온-칩 메모리 (910) 및/또는 시스템 메모리 (914) 로부터 하나 이상의 파라미터들 (예를 들어, LOD 파라미터들) 을 비동기식으로 판독할 수도 있다. 일부 구성들에서, 업데이트된 파라미터(들)은 TCS (978), TESS (980), TES (982), GS (984), 래스터라이저 (986) 및 FS (990) 중 하나 이상에 제공될 수도 있다. 따라서, TCS (978), TESS (980), TES (982), GS (984), 래스터라이저 (986) 및 FS (990) 중 하나 이상은 데이터 세트가 프로세싱되고 있는 동안, 데이터 세트에 대해 초기에 확립된 프로세싱과는 상이하도록 데이터 세트의 프로세싱을 변화시킬 수도 있다.
일부 구성들에서, 이것은 전자 디바이스 (302) 가 단일-패스 멀티-LOD 렌더링을 수행하게 할 수도 있다. 예를 들어, 비동기식 메모리 제어기 (908) 는, 현재 프로세싱 및/또는 렌더링 (예를 들어, 테슬레이팅) 되고 있는 데이터의 세트에 대해 초기에 확립된 다른 LOD 파라미터와 상이한 LOD 파라미터를 판독할 수도 있다. 업데이트된 LOD 파라미터는 TCS (978), TESS (980), TES (982), GS (984), 래스터라이저 (986) 및 FS (990) 중 하나 이상에 제공될 수도 있다. 따라서, TCS (978), TESS (980), TES (982), GS (984), 래스터라이저 (986) 및 FS (990) 중 하나 이상은 하나 이상의 상이한 파라미터들로 개시되었던 데이터 세트의 프로세싱 동안 업데이트된 LOD 파라미터에 따라 데이터 세트의 프로세싱을 변화 (예를 들어, 테슬레이션 레벨을 변화) 시킬 수도 있다.
VLIW 회로 (904)(예를 들어, 그래픽 파이프라인 (906)) 는 불-균일 프레임 버퍼 제어기 (912) 를 포함할 수도 있다. 도 9 에 예시된 바와 같이, 불-균일 프레임 버퍼 제어기 (912) 는 FS (990)(예를 들어, C/D (992)) 에 포함되고/되거나 이에서 구현될 수도 있다. 불-균일 프레임 버퍼 제어기 (912) 는 부가적으로 또는 대안으로, FS (990), C/D (992), 그래픽 파이프라인 (906) 및 온-칩 메모리 (910) 중 하나 이상에 포함되고/되거나 이에서 구현될 수도 있다는 것이 주목되어야 한다. 완전히 또는 부분적으로, 예를 들어 불-균일 프레임 버퍼 제어기 (912) 는 FS (990), C/D (992), 그래픽 파이프라인 (906), 온-칩 메모리 (910) 및 전자 디바이스 (902) 중 하나 이상에서 구현될 수도 있다. 불-균일 프레임 버퍼 제어기 (912) 는 C/D (992) 에서 구현될 수도 있다. 다르게는 추가의 레이턴시가 발생될 수도 있다는 것이 주목되어야 한다.
도 9 와 연관되어 설명된 불-균일 프레임 버퍼 제어기 (912) 는 도 1 내지 도 5 중 하나 이상과 연관되어 설명된 불-균일 프레임 버퍼 제어기들 (112, 312) 중 하나 이상의 예일 수도 있다. 예를 들어, 불-균일 프레임 버퍼 제어기 (912) 는 하나 이상의 프레임 버퍼(들)의 상이한 서브세트들에 동적으로 액세스할 수도 있다. 일부 구성들에서, 프레임 버퍼의 상이한 서브세트들에 동적으로 액세스하는 것은 제 2 존의 적어도 하나의 픽셀과는 상이한 레이트에서 제 1 존의 적어도 하나의 픽셀에 액세스하는 것을 포함할 수도 있다. 부가적으로 또는 대안으로, 프레임 버퍼의 상이한 서브세트들에 동적으로 액세스하는 것은 (예를 들어, 제 1 픽셀의 프로세싱이 진행 중이고 제 2 픽셀의 프로세스가 완료될 때) 동적 셰이더 서브-루틴 스왑핑을 가능하게 하는 것을 포함할 수도 있다. 부가적으로 또는 대안으로, 불-균일 프레임 버퍼 제어기 (912) 는 제 2 픽셀의 제 2 샘플을 제 1 픽셀의 프로세싱된 제 1 샘플을 대체하여 제 2 픽셀의 제 2 샘플로 프로세싱하는 것을 회피하도록 구성될 수도 있다.
일부 구성들에서, 전용 캐시는 특정 텍스처들을 핸들링하고 타겟들을 렌더링하도록 구현될 수도 있다. 캐시는 텍스처들의 세트 그 자체들 만큼 클 수도 있다.
도 10 은 매우 긴 명령어 (VLIW) 회로 (1068) 를 포함하는 전자 디바이스 (1066) 의 다른 예를 예시하는 블록도이다. 특히, 도 10 은 그래픽 프로세싱을 위한 아키텍처의 다른 예를 예시한다. 도 10 과 연관되어 설명된 아키텍처의 하나 이상의 양태들은 인텔 (Intel) 아키텍처의 양태들과 유사하게 기능할 수도 있다. 이 아키텍처는 즉각 모드 렌더링 (IMR) 뿐만 아니라 공유된 물리적 및 가상 메모리와 통합된 메모리 아키텍처 (UMA) 를 제공할 수도 있다. 이 아키텍처는 제로-복사 공유 뿐만 아니라 포인터-공유를 가능하게 할 수도 있다.
전자 디바이스 (1066) 는 프로세서 (1015)(예를 들어, CPU) 를 포함할 수도 있다. 이 예에서, 프로세서 (1015) 는 VLIW 회로 (1068) 를 포함할 수도 있다. 예를 들어, VLIW 회로 (1068) 는 프로세서 (1015) 에 통합될 수도 있다.
전자 디바이스 (1066) 는 VLIW 회로 (1068) (예를 들어, GPU) 및 시스템 메모리 (1005) 를 포함할 수도 있다. VLIW 회로 (1068) 는 그래픽 파이프라인 (1070) 및 온-칩 메모리 (1003) 를 포함할 수도 있다. 그래픽 파이프라인 (1070) 은 커맨드 스트리머 (CS)(1017), 정점 페처 (VF)(1074), 정점 셰이더 (VS)(1076), 훌 셰이더 (HS)(1078), 테슬레이터 (TESS)(1080) (예를 들어, 테슬레이션 엔진), 도메인 셰이더 (DS)(1082), 지오메트리 셰이더 (GS)(1084), 스트림 아웃 (SOL)(1019), 클립퍼 (Clip)(1021), 래스터라이저 (Rast)(1086) 및 프래그먼트 셰이더 (FS)(1090) 중 하나 이상을 포함할 수도 있다. 많은 엘리먼트 라벨들이 편의를 위해 축약되어 있다. 온-칩 메모리 (1003) 는 하나 이상의 버퍼들, 하나 이상의 캐시들, 등을 포함할 수도 있다. 일부 구성들에서, 온-칩 메모리 (1003) 는 텍스처 버퍼, 프레임 버퍼 및/또는 온-칩 메모리 (1110) 의 다른 블록을 포함할 수도 있다. 시스템 메모리 (1005) 는 커맨드 데이터, 정점 데이터 (예를 들어, 지오메트리 데이터) 및/또는 텍스처 데이터를 포함할 수도 있다.
장면을 렌더링하기 위해서, 전자 디바이스 (1066) 는 시스템 메모리로부터 커맨드 데이터 및 정점 데이터를 획득할 수도 있다. 예를 들어, CS (1017) 는 시스템 메모리 (1005) 로부터 렌더링 커맨드(들)을 수신 및/또는 실행시킬 수도 있다. 정점 데이터는 하나 이상의 포인트들 (예를 들어, 정점들), 라인들 및/또는 다각형들을 나타낼 수도 있다. 정점 데이터 (1009) 는 장면 및/또는 장면에서의 하나 이상의 객체들을 나타낼 수도 있다.
VF (1074) 는 정점 데이터를 시스템 메모리 (1005) 로부터 VLIW 회로 (1068)(예를 들어, 그래픽 파이프라인 (1070)) 으로 페치할 수도 있다. VF (1074) 는 정점 데이터를 VS (1076) 에 제공할 수도 있고/있거나 정점 데이터를 캐시 (1001) 에 저장할 수도 있다.
VS (1076) 는 정점 데이터를 상이한 공간으로 변환할 수도 있다. 예를 들어, VS (1076) 는 정점 데이터를 3-차원 (3D) 공간으로부터 2-차원 (2D) 공간으로 변환할 수도 있다. VS (1076) 는 변환된 정점 데이터를 HS (1078) 에 제공할 수도 있고/있거나 변환된 정점 데이터를 캐시 (1001) 에 저장할 수도 있다.
HS (1078) 는 정점 데이터 (예를 들어, 변환된 정점 데이터) 를 VS (1076) 로부터 및/또는 캐시 (1001) 로부터 수신할 수도 있다. HS (1078) 는 정점 데이터 (예를 들어, 변환된 정점 데이터) 의 단위를 변환할 수도 있다. 예를 들어, HS (1078) 는 정점 데이터의 단위를 테슬레이션을 위한 (예를 들어, 삼각형들과 같은 다각형들로 효율적으로 세분하기 위한) 단위로 변환할 수도 있다. HS (1078) 는 정보를 캐시 (1001) 에 저장할 수도 있다. 예를 들어, HS (1078) 는 HS (1078) 에 의해 수행된 단위 변환을 나타내는 단위 표시자를 저장할 수도 있다. 단위-변환된 정점 데이터는 TESS (1080) 에 제공될 수도 있다.
TESS (1080) 는 정점 데이터 (예를 들어, 단위-변환된 정점 데이터) 를 테슬레이팅할 수도 있다. 예를 들어, TESS (1080) 는 정점 데이터에 기초하여 더 많은 정점들을 생성할 수도 있다 (예를 들어, 삼각형들을 더 많은 삼각형들로 세분할 수도 있다). TESS (1080) 는 LOD 파라미터에 기초하여 동작할 수도 있다. LOD 파라미터는 LOD 를 지정할 수도 있고/있거나 수행할 TESS (1080) 에 대한 테슬레이션의 정도를 나타낼 수도 있다. 테슬레이팅된 정점 데이터는 DS (1082) 에 제공될 수도 있다.
DS (1082) 는 정점 데이터 (예를 들어, 테슬레이팅된 정점 데이터) 의 단위를 변환할 수도 있다. 예를 들어, DS (1082) 는 정점 데이터의 단위를 HS (1078) 에 의해 적용된 단위 변환 전의 단위로 다시 변환할 수도 있다. 일부 구성들에서, DS (1082) 는 정점 데이터의 단위를 변환 (예를 들어, 역 변환) 하기 위해 캐시 (1001) 로부터 단위 표시자를 판독할 수도 있다. 다른 구성들에서, DS (1082) 는 HS (1078) 에 직접 커플링될 수도 있고, 정점 데이터의 단위를 변환 (예를 들어, 역 변환) 하기 위해 HS (1078) 로부터 단위 표시자를 수신할 수도 있다. DS (1082) 는 정점 데이터 (예를 들어, 역 단위-변환된 정점 데이터) 를 GS (1084) 에 제공하고/하거나 정점 데이터를 캐시 (1001) 에 저장할 수도 있다.
GS (1084) 는 정점 데이터 (예를 들어, 역 단위-변환된 정점 데이터) 상에서 하나 이상의 동작들을 수행할 수도 있다. 예를 들어, GS (1084) 는 정점 데이터에 기초하여 추가적인 지오메트리를 생성할 수도 있다. GS (1084) 는 (예를 들어, 추가적인 지오메트리를 갖는) 정점 데이터를 SOL (1019) 에 제공할 수도 있다.
SOL (1019) 은 (예를 들어, 추가적인 지오메트리를 갖는) 정점 데이터를 스트리밍하고/하거나 정점 데이터를 시스템 메모리 (1005) 에 저장할 수도 있다. SOL (1019) 는 (예를 들어, 추가적인 지오메트리를 갖는) 정점 데이터를 클립퍼 (1021) 에 제공할 수도 있다.
클립퍼 (1021) 는 (예를 들어, 추가적인 지오메트리를 갖는) 정점 데이터의 일부를 폐기할 수도 있다. 예를 들어, 클립퍼 (1021) 는 뷰 (예를 들어, 뷰잉 절단체) 밖에 있는 정점 데이터를 폐기할 수도 있다. 클립퍼 (1021) 는 클립핑된 정점 데이터를 래스터라이저 (1086) 및/또는 캐시 (1001) 에 제공할 수도 있다.
래스터라이저 (1086) 는 클립핑된 정점 데이터를 클립퍼 (1021) 및/또는 캐시 (1001) 로부터 수신할 수도 있다. 래스터라이저 (1086) 는 정점 데이터를 래스터화할 수도 있다. 예를 들어, 래스터라이저는 정점 데이터를 픽셀 데이터로 컨버팅할 수도 있다. 픽셀 데이터는 FS (1090) 에 및/또는 캐시 (1001) 에 제공될 수도 있다.
FS (1090) 는 픽셀 데이터 상에서 프래그먼트 셰이딩 또는 픽셀 셰이딩을 수행할 수도 있다. 예를 들어, FS (1090) 는 하나 이상의 픽셀들의 하나 이상의 속성들 (예를 들어, 컬러, 밝기, 투명도 등) 을 결정할 수도 있다. 일부 구성들에서, FS (1090) 는 숨은 면 제거 (HSR) 를 수행할 수도 있다. 일부 구성들에서, FS (1090) 는 구성/분해 (C/D) 블록 (1092) 을 포함할 수도 있다. 대안으로, C/D (1092) 는 도 10 에 예시된 바와 같이 FS (1090) 로부터 분리되고/되거나 FS (1090) 에 커플링될 수도 있다.
일부 구성들에서, C/D (1092) 는 텍스처링 및/또는 블렌딩과 같은 동작들을 수행할 수도 있다. 예를 들어, C/D (1092) 는 다수의 층들을 블렌딩하여 최종 픽셀 값을 결정할 수도 있다. 일부 구성들에서, C/D (1092) 는 상이한 프레임 버퍼들을 조합할 수도 있다 (예를 들어, 픽셀 마다 다수의 이미지들을 함께 블렌딩할 수도 있다). C/D (1092) 는 칩 상에서 (VLIW 회로 (1068) 상에서), 그래픽 파이프라인 (1070) 에서, 온-칩 메모리 (1003) 에서 구현될 수도 있고/있거나 VLIW 회로 (1068) 로부터 분리될 수도 있다는 것이 주목되어야 한다. C/D (1092) 는, 이미지 데이터가 시스템 메모리 (1005) 에 및/또는 다른 스트림 아웃 (예를 들어, HDMI 스트림 아웃) 에 기입되기 전에 이미지 데이터 상에서 동작할 수도 있다. 일부 구성들에서, 시스템 메모리 (1005) 는 텍스처 데이터를, FS (1090) 및/또는 C/D (1092) 에 의해 엑세스될 수도 있는 캐시 (1001) 에 제공할 수도 있다. FS (1090) 는 캐시 (1001) 에 액세스함으로써 하나 이상의 동작들을 수행할 수도 있다. FS (1090) 는 픽셀 데이터 (예를 들어, 프로세싱된 픽셀 데이터) 를 구성/분해를 수행할 수도 있는 C/D (1092) 에 제공할 수도 있고, 픽셀 데이터를 캐시 (1001) 에 제공할 수도 있다.
픽셀 데이터는 캐시 (1001) 를 통해 시스템 메모리 (1005) 로 출력될 수도 있다. 픽셀 데이터는 프리젠테이션을 위해 제공 (예를 들어, 출력) 될 수도 있다. 예를 들어, 픽셀 데이터는 프리젠테이션을 위해 디스플레이로 전송될 수도 있다.
본원에 개시된 시스템들 및 방법들 없이, 도 10 과 연관되어 설명된 동작들은 도 8 과 연관되어 설명된 바와 같이 데이터 세트들 (예를 들어, 정점, 픽셀 및/또는 이미지 데이터의 세트들) 의 관점들에서 수행될 수도 있다는 것이 주목되어야 한다.
도 11 은 도 10 과 연관되어 설명된 아키텍처에서 구현된 본원에 개시된 시스템들 및 방법들의 다른 예를 예시하는 블록도이다. 구체적으로, 도 11 은 전자 디바이스 (1102) 를 예시한다. 도 11 과 연관되어 설명된 전자 디바이스 (1102) 는 도 1 내지 도 5 중 하나 이상과 연관되어 전술된 전자 디바이스들 (102, 302) 중 하나 이상의 예일 수도 있다. 전자 디바이스 (1102) 는 도 1 내지 도 5 중 하나 이상과 연관되어 설명된 방법들, 기능들, 단계들, 동작들, 등 중 하나 이상을 수행하도록 구성될 수도 있다.
전자 디바이스 (1102) 는 프로세서 (1124)(예를 들어, CPU) 를 포함할 수도 있다. 프로세서 (1124) 는 도 3 과 연관되어 설명된 프로세서 (324) 의 일 예일 수도 있다. 이 예에서, 프로세서 (1015) 는 VLIW 회로 (1104) 를 포함할 수도 있다. 예를 들어, VLIW 회로 (1104) 는 프로세서 (1124) 에 통합될 수도 있다.
전자 디바이스 (1102) 는 VLIW 회로 (1104) (예를 들어, GPU) 및 시스템 메모리 (1114) 를 포함할 수도 있다. VLIW 회로 (1104) 는 도 1 내지 도 5 중 하나 이상과 연관되어 전술된 VLIW 회로들 (104, 304) 중 하나 이상의 일 예일 수도 있다. 부가적으로 또는 대안으로, 시스템 메모리 (1114) 는 도 1 내지 도 5 중 하나 이상과 연관되어 설명된 시스템 메모리들 (114, 314) 중 하나 이상의 예일 수도 있다. 시스템 메모리 (1114) 는 커맨드 데이터, 정점 데이터 (예를 들어, 지오메트리 데이터), 텍스처 데이터 및/또는 렌더링된 타겟 데이터 (예를 들어, 픽셀 데이터) 를 포함할 수도 있다.
VLIW 회로 (1104) 는 그래픽 파이프라인 (1106) 및 온-칩 메모리 (1110) 를 포함할 수도 있다. 도 11 과 연관되어 설명된 그래픽 파이프라인 (1106) 은 도 1 내지 도 5 중 하나 이상과 연관되어 설명된 그래픽 파이프라인들 (106, 306) 중 하나 이상의 일 예일 수도 있다. 부가적으로 또는 대안으로, 도 11 과 연관되어 설명된 온-칩 메모리 (1110) 는 도 1 내지 도 5 중 하나 이상과 연관되어 설명된 온-칩 메모리들 (110, 310) 중 하나 이상의 일 예일 수도 있다.
온-칩 메모리 (1110) 는 하나 이상의 버퍼들, 하나 이상의 캐시들 (1101), 등을 포함할 수도 있다. 예를 들어, 레벨 1 (L1) 및/또는 레벨 2 (L2) 캐시들은 온-칩 스토리지로서 이용될 수도 있다. 일부 구성들에서, 파이프라인 예측 하드웨어는 디스에이블될 수도 있다. 온-칩 메모리 (1110) 는 도 3 및 도 4 중 하나 이상과 연관되어 설명된 바와 같이 하나 이상의 프레임 버퍼들을 포함할 수도 있다는 것이 주목되어야 한다. 프레임 버퍼(들)은 온-칩 메모리 (1110), 캐시 (1101), 등 중 하나 이상에 포함될 수도 있다. 부가적으로 또는 대안으로, 프레임 버퍼(들)은 시스템 메모리 (1114) 에 포함될 수도 있다. 일부 구성들에서, 하나 이상의 프레임 버퍼들은 온-칩 메모리 (1110), 시스템 메모리 (1114) 또는 양자 모두에 포함될 수도 있다.
그래픽 파이프라인 (1106) 은 CS (1117), VF (1174), VS (1176), HS (1178), TESS (1180), DS (1182), GS (1184), SOL (1119), 클립퍼 (1121), 래스터라이저 (1186), FS (1190) 및 C/D (1192) 중 하나 이상을 포함할 수도 있다. 일부 구성들에서, CS (1117), VF (1174), VS (1176), HS (1178), TESS (1180), DS (1182), GS (1184), SOL (1119), 클립퍼 (1121), 래스터라이저 (1186), FS (1190) 및 C/D (1192) 중 하나 이상은 도 10 과 연관되어 설명된 하나 이상의 대응하는 엘리먼트들의 동작들 중 하나 이상을 수행할 수도 있다.
도 11 에 예시된 구성들에서, VLIW 회로 (1104)(예를 들어, 그래픽 파이프라인 (1106)) 는 비동기식 메모리 제어기 (1108) 를 포함할 수도 있다. 비동기식 메모리 제어기 (1108) 는 HS (1178), TESS (1180), DS (1182), GS (1184), 래스터라이저 (1186) 및 FS (1190) 중 하나 이상을 포함하고/하거나 이들에서 구현될 수도 있다. 완전히 또는 부분적으로, 예를 들어 비동기식 메모리 제어기 (1108a) 는 HS (1178), TESS (1180), DS (1182), GS (1184), 래스터라이저 (1186) 및 FS (1190) 에서 구현될 수도 있다. 일반적인 라벨 "1108" 은, 비동기식 메모리 제어기 (1108) 가 도 11 에 예시된 엘리먼트들 (1108a-f) 중 어느 하나 또는 전부에서 구현될 수도 있다는 것을 가리킬 수도 있다. 일부 구성들에서, 비동기식 메모리 제어기 (1108) 는 HS (1178), TESS (1180), DS (1182) 및 GS (1184) 중 하나 이상에서만 구현될 수도 있다. 예를 들어, 비동기식 메모리 제어기 (1108) 는, 데이터가 추후의 단계들로 포워딩될 수도 있기 때문에, HS (1178), TESS (1180), DS (1182) 및/또는 GS (1184) 에서 하나 이상의 파라미터들을 단지 비동기식으로 판독할 수도 있다.
도 11 과 연관되어 설명된 비동기식 메모리 제어기 (1108) 는 도 1 내지 도 5 중 하나 이상과 연관되어 설명된 비동기식 메모리 제어기들 (108, 308) 중 하나 이상의 예일 수도 있다. 예를 들어, 비동기식 메모리 제어기 (1108) 는 (예를 들어, 데이터 세트의 프로세싱 동안) 온-칩 메모리 (1110) 및/또는 시스템 메모리 (1114) 로부터 하나 이상의 파라미터들 (예를 들어, LOD 파라미터들) 을 비동기식으로 판독할 수도 있다. 일부 구성들에서, 업데이트된 파라미터(들)은 HS (1178), TESS (1180), DS (1182), GS (1184), 래스터라이저 (1186) 및 FS (1190) 중 하나 이상에 제공될 수도 있다. 따라서, HS (1178), TESS (1180), DS (1182), GS (1184), 래스터라이저 (1186) 및 FS (1190) 중 하나 이상은 데이터 세트가 프로세싱되고 있는 동안, 데이터 세트에 대해 초기에 확립된 프로세싱과는 상이하도록 데이터 세트의 프로세싱을 변화시킬 수도 있다.
일부 구성들에서, 이것은 전자 디바이스 (1102) 가 단일-패스 멀티-LOD 렌더링을 수행하게 할 수도 있다. 예를 들어, 비동기식 메모리 제어기 (1108) 는, 현재 프로세싱 및/또는 렌더링 (예를 들어, 테슬레이팅) 되고 있는 데이터의 세트에 대해 초기에 확립된 다른 LOD 파라미터와는 상이한 LOD 파라미터를 판독할 수도 있다. 업데이트된 LOD 파라미터는 HS (1178), TESS (1180), DS (1182), GS (1184), 래스터라이저 (1186) 및 FS (1190) 중 하나 이상에 제공될 수도 있다. 따라서, HS (1178), TESS (1180), DS (1182), GS (1184), 래스터라이저 (1186) 및 FS (1190) 중 하나 이상은 하나 이상의 상이한 파라미터들로 개시되었던 데이터 세트의 프로세싱 동안 업데이트된 LOD 파라미터에 따라 데이터 세트의 프로세싱을 변화 (예를 들어, 테슬레이션 레벨을 변화) 시킬 수도 있다.
VLIW 회로 (1104)(예를 들어, 그래픽 파이프라인 (1106)) 는 불-균일 프레임 버퍼 제어기 (1112) 를 포함할 수도 있다. 도 11 에 예시된 바와 같이, 불-균일 프레임 버퍼 제어기 (1112) 는 C/D (1192) 에 포함되고/되거나 구현될 수도 있다. 불-균일 프레임 버퍼 제어기 (1112) 는 부가적으로 또는 대안으로, FS (1190), C/D (1192), 그래픽 파이프라인 (1106) 및 온-칩 메모리 (1110) 중 하나 이상에 포함되고/되거나 이들에서 구현될 수도 있다는 것이 주목되어야 한다. 완전히 또는 부분적으로, 예를 들어 불-균일 프레임 버퍼 제어기 (1112) 는 FS (1190), C/D (1192), 그래픽 파이프라인 (1106), 온-칩 메모리 (1110) 및 전자 디바이스 (1102) 중 하나 이상에서 구현될 수도 있다.
도 11 과 연관되어 설명된 불-균일 프레임 버퍼 제어기 (1112) 는 도 1 내지 도 5 중 하나 이상과 연관되어 설명된 불-균일 프레임 버퍼 제어기들 (112, 312) 중 하나 이상의 예일 수도 있다. 예를 들어, 불-균일 프레임 버퍼 제어기 (1112) 는 하나 이상의 프레임 버퍼(들)의 상이한 서브세트들에 동적으로 액세스할 수도 있다. 일부 구성들에서, 프레임 버퍼의 상이한 서브세트들에 동적으로 액세스하는 것은 제 2 존의 적어도 하나의 픽셀과는 상이한 레이트에서 제 1 존의 적어도 하나의 픽셀에 액세스하는 것을 포함할 수도 있다. 부가적으로 또는 대안으로, 프레임 버퍼의 상이한 서브세트들에 동적으로 액세스하는 것은 (예를 들어, 제 1 픽셀의 프로세싱이 진행 중이고 제 2 픽셀의 프로세스가 완료될 때) 동적 셰이더 서브-루틴 스왑핑을 가능하게 하는 것을 포함할 수도 있다. 부가적으로 또는 대안으로, 불-균일 프레임 버퍼 제어기 (1112) 는 제 2 픽셀의 제 2 샘플을 제 1 픽셀의 프로세싱된 제 1 샘플로 대체하여 제 2 픽셀의 제 2 샘플을 프로세싱하는 것을 회피하도록 구성될 수도 있다. 일부 구성들에서, 도 11 과 연관되어 설명된 전자 디바이스 (1102) 는 공유된 메모리 및/또는 적응적 멀티-주파수 셰이딩을 사용하여 비동기식 적응적 안티-에일리어싱을 수행하도록 구현될 수도 있다는 것이 주목되어야 한다.
도 12 는 매우 긴 명령어 (VLIW) 회로 (1268) 를 포함하는 전자 디바이스 (1266) 의 다른 예를 예시하는 블록도이다. 특히, 도 12 는 그래픽 프로세싱을 위한 아키텍처의 일 예를 예시한다. 도 12 와 연관되어 설명된 아키텍처의 하나 이상의 양태들은 이매진 테그놀로지 (Imagine Technologies)(예를 들어, PowerVR 그래픽) 아키텍처의 양태들과 유사하게 기능할 수도 있다. 이 아키텍처는 타일-기반 연기된 렌더링 (Tile-Based Deferred Rendering; TBDR) 을 제공할 수도 있는 타일링된 아키텍처이다. 불분명한 지오메트리는 (예를 들어, 캐싱 대신에) 타일들로 소팅될 수도 있다.
전자 디바이스 (1266) 는 VLIW 회로 (1268) (예를 들어, GPU) 및 시스템 메모리 (1205) (예를 들어, DRAM) 을 포함할 수도 있다. VLIW 회로 (1268) 는 그래픽 파이프라인 (1270) 및 온-칩 메모리 (1203) 를 포함할 수도 있다. 그래픽 파이프라인 (1270) 은 정점 프로세서 (VP)(1274), 정점 셰이더 (VS)(1276), 테슬레이션 제어 셰이더 (TCS)(1278), 테슬레이터 (TESS)(1280) (예를 들어, 테슬레이션 엔진), 테슬레이션 평가 셰이더 (TES)(1282), 지오메트리 셰이더 (GS)(1284), 타일러 (1223), 래스터라이저 (Rast)(1286) 및 프래그먼트 셰이더 (FS)(1290) 중 하나 이상을 포함할 수도 있다. 많은 엘리먼트 라벨들이 편의를 위해 축약되어 있다. 온-칩 메모리 (1203) 는 심도 버퍼 (1237) 및 컬러 버퍼 (1239) 를 포함할 수도 있다. 시스템 메모리 (1205) 는 지오메트리 데이터 (1209), 파라미터 버퍼 (1235), 텍스처 데이터 (1211) 및 프레임 버퍼 (1241) 를 포함할 수도 있다. 지오메트리 데이터 (1209) 는 하나 이상의 포인트들 (예를 들어, 정점들), 라인들 및/또는 다각형들을 나타낼 수도 있다. 지오메트리 데이터 (1209) 는 장면 및/또는 장면에서의 하나 이상의 객체들을 나타낼 수도 있다.
VP (1274) 는 지오메트리 데이터를 시스템 메모리 (1205) 로부터 VLIW 회로 (1268)(예를 들어, 그래픽 파이프라인 (1270)) 으로 페치할 수도 있다. VP (1274) 는 지오메트리 데이터를 VS (1276) 에 제공할 수도 있다.
VS (1276) 는 지오메트리 데이터를 상이한 공간으로 변환 (예를 들어, 프로젝트) 할 수도 있다. 예를 들어, VS (1276) 는 지오메트리 데이터를 3-차원 (3D) 공간으로부터 2-차원 (2D) 공간으로 변환할 수도 있다. 일부 구성들에서, VS (1276) 는 클립핑, 프로젝션 및/또는 선별 (culling) 을 수행할 수도 있다. 예를 들어, VS (1276) 는 뷰잉 절단체 밖에 있는 지오메트리 데이터를 클립 아웃할 수도 있다. VS (1276) 는 지오메트리 데이터를 3D 공간으로부터 2D 공간으로 프로젝팅할 수도 있다. VS (1276) 는 또한, 지오메트리 데이터의 일부를 선별할 수도 있다. 예를 들어, 가려진 지오메트리 (예를 들어, 다른 지오메트리에 의해 차단되기 때문에 볼 수 없는 지오메트리) 에 대응하는 지오메트리 데이터는 제거될 수도 있다. VS (1276) 는 변환된 지오메트리 데이터를 TCS (1278) 에 제공할 수도 있다.
TCS (1278) 는 지오메트리 데이터 (예를 들어, 변환된 지오메트리 데이터) 를 VS (1276) 로부터 및/또는 버퍼 (1296) 로부터 수신할 수도 있다. TCS (1278) 는 지오메트리 데이터 (예를 들어, 변환된 지오메트리 데이터) 의 단위를 변환할 수도 있다. 예를 들어, TCS (1278) 는 지오메트리 데이터의 단위를 테슬레이션을 위한 (예를 들어, 삼각형들과 같은 다각형들로 효율적으로 세분하기 위한) 단위로 변환할 수도 있다. 예를 들어, TCS (1278) 는 TCS (1278) 에 의해 수행된 단위 변환을 나타내는 단위 표시자를 생성할 수도 있다. 단위-변환된 지오메트리 데이터는 TESS (1280) 에 제공될 수도 있다.
TESS (1280) 는 지오메트리 데이터 (예를 들어, 단위-변환된 지오메트리 데이터) 를 테슬레이팅할 수도 있다. 예를 들어, TESS (1280) 는 지오메트리 데이터에 기초하여 더 많은 지오메트리 데이터 (예를 들어, 정점들) 를 생성할 수도 있다 (예를 들어, 삼각형들을 더 많은 삼각형들로 세분할 수도 있다). TESS (1280) 는 LOD 파라미터에 기초하여 동작할 수도 있다. LOD 파라미터는 LOD 를 지정할 수도 있고/있거나 수행할 TESS (1280) 에 대한 테슬레이션의 정도를 나타낼 수도 있다. 테슬레이팅된 지오메트리 데이터는 TES (1282) 에 제공될 수도 있다.
TES (1282) 는 지오메트리 데이터 (예를 들어, 테슬레이팅된 지오메트리 데이터) 의 단위를 변환할 수도 있다. 예를 들어, TES (1282) 는 지오메트리 데이터의 단위를 TCS (1278) 에 의해 적용된 단위 변환 전의 단위로 다시 변환할 수도 있다. 일부 구성들에서, TES (1282) 는 지오메트리 데이터의 단위를 변환 (예를 들어, 역 변환) 하기 위해 TCS (1278) 및/또는 메모리 (예를 들어, 온-칩 메모리 (1203) 및/또는 시스템 메모리 (1205)) 로부터 단위 표시자를 획득할 수도 있다. TESS (1282) 는 지오메트리 데이터 (예를 들어, 역 단위-변환된 지오메트리 데이터) 를 GS (1284) 에 제공할 수도 있다.
GS (1284) 는 지오메트리 데이터 (예를 들어, 역 단위-변환된 지오메트리 데이터) 상에서 하나 이상의 동작들을 수행할 수도 있다. 예를 들어, GS (1284) 는 지오메트리 데이터에 기초하여 추가적인 지오메트리를 생성할 수도 있다. GS (1284) 는 (예를 들어, 추가적인 지오메트리를 갖는) 지오메트리 데이터를 타일러 (1223) 에 제공할 수도 있다.
타일러 (1223) 는 (예를 들어, 추가적인 지오메트리를 갖는) 지오메트리 데이터를 타일들로 스플릿할 수도 있다. 예를 들어, 타일러 (1223) 는 지오메트리 데이터를 더 작은 그룹들의 지오메트리 데이터로 분할할 수도 있다. 타일들은 연속적인 지오메트리 데이터를 포함할 수도 있다. 타일러 (1223) 는 타일들을 파라미터 버퍼 (1235) 에 제공할 수도 있다.
파라미터 버퍼 (1235) 는 타일들을 저장할 수도 있다. 예를 들어, 파라미터 버퍼 (1235) 는 프리미티브들 (예를 들어, 지오메트리 데이터, 정점들, 라인들, 다각형들, 등) 의 리스트를 저장할 수도 있다. 도 12 에 설명된 타일링된 아키텍처에서, 타일 프로세싱은 시스템 메모리 액세스들의 공간적 집약성 (locality) 을 레버리징할 수도 있다. 예를 들어, 타일에 국부적인 동작들은 비교적 "저렴" 할 수도 있다 (예를 들어, 매우 적은 프로세싱, 전력, 메모리 및/또는 시간 리소스들을 이용할 수도 있다). 일부 구성들에서, VLIW 회로 (1268) 는 지오메트리 데이터를 테슬레이팅하고 이들 지오메트리 데이터를 타일링을 위해 파라미터 버퍼 (1235) 로 전송할 수도 있다. 지오메트리 데이터 (예를 들어, 타일링된 지오메트리 데이터, 프리미티브들, 등) 는 래스터라이저 (1286) 에 제공될 수도 있다. 파라미터 버퍼 (1235) 에 저장된 파라미터들은 파라미터(들)(예를 들어, LOD 파라미터(들)) 을 렌더링하는 것을 포함하지 않을 수도 있다는 것이 주목되어야 한다.
래스터라이저 (1286) 는 파라미터 버퍼 (1235) 로부터 지오메트리 데이터 (예를 들어, 타일링된 지오메트리 데이터, 프리미티브들, 등) 를 수신할 수도 있다. 래스터라이저 (1286) 는 지오메트리 데이터를 래스터화할 수도 있다. 예를 들어, 래스터라이저는 지오메트리 데이터를 픽셀 데이터를 컨버팅할 수도 있다. 픽셀 데이터는 FS (1290) 에 제공될 수도 있다.
FS (1290) 는 픽셀 데이터 상에서 프래그먼트 셰이딩 또는 픽셀 셰이딩을 수행할 수도 있다. 예를 들어, FS (1290) 는 하나 이상의 픽셀들의 하나 이상의 속성들 (예를 들어, 컬러, 밝기, 투명도 등) 을 결정할 수도 있다. 일부 구성들에서, FS (1290) 는 숨겨진 면 제거 (HSR) 및 심도 테스트 (DT) 블록 (1225), 태그 버퍼 (TB)(1227), 텍스처 및 셰이드 (T&S) 블록 (1229), 알파 테스트 (AT) 블록 (1231) 및 알파 블렌드 (AB) 블록 (1223) 중 하나 이상을 포함할 수도 있다. HSR & DT (1225) 는 심도 테스팅 및 숨겨진 면 제거를 수행할 수도 있다. 예를 들어, 심도 테스팅은 픽셀들에 대응하는 심도를 결정하는 것을 포함할 수도 있다. HSR & DT 는 각각의 픽셀에 대한 심도를 결정하고 심도 표시자들을 심도 버퍼 (1237) 에 저장할 수도 있다. 숨겨진 면 제거를 수행하는 것은 다른 픽셀들보다 더 큰 심도에 있는 (예를 들어, 다른 픽셀들에 의해 가려지는) 픽셀들을 폐기하는 것을 포함할 수도 있다. 일부 접근들에서, 태그 버퍼 (TB)(1227) 는 선택적으로, 더 빠른 실행을 위해 픽셀들을 재그루핑할 수도 있다. T&S (1229) 는 시스템 메모리로부터 텍스처 데이터 (1211) 를 획득할 수도 있다. AT (1231) 는 커스텀 "스텐실" 테스트 (예를 들어, 다른 심도 테스트) 를 수행할 수도 있다. 일부 구성들에서, AT (1231) 는 HSR & DT (1225) 를 업데이트할 수도 있다. AB (1233) 는 픽셀들 (예를 들어, 하나 이상의 계층들 및/또는 프레임 버퍼들로부터의 픽셀들) 을 블렌딩할 수도 있다. 예를 들어, AB (1233) 는 구성 및/또는 분해 동작을 수행할 수도 있고, 여기서 2 개의 이미지들은 알파 값을 사용하여 블렌딩될 수도 있다.
AB (1233) 는 픽셀 데이터를 컬러 버퍼 (1239) 에 제공할 수도 있다. 도 12 에 예시된 바와 같이, 컬러 및 심도 버퍼 데이터는 칩 상에 저장될 수도 있다. 컬러 버퍼 (1239) 는 픽셀 데이터를 프레임 버퍼 (1241) 에 제공할 수도 있다. 프레임 버퍼 (1241) 는 픽셀 데이터를 출력할 수도 있다. 픽셀 데이터는 프리젠테이션을 위해 제공 (예를 들어, 출력) 될 수도 있다. 예를 들어, 픽셀 데이터는 프리젠테이션을 위해 디스플레이로 전송될 수도 있다.
본원에 개시된 시스템들 및 방법들 없이, 도 12 와 연관되어 설명된 동작들은 도 8 과 연관되어 설명된 바와 같이 데이터 세트들 (예를 들어, 정점, 픽셀 및/또는 이미지 데이터의 세트들) 의 관점들에서 수행될 수도 있다는 것이 주목되어야 한다.
도 13 은 도 12 와 연관되어 설명된 아키텍처에서 구현된 본원에 개시된 시스템들 및 방법들의 예를 예시하는 블록도이다. 이 아키텍처는 TBDR 을 제공할 수도 있다. 구체적으로, 도 13 은 전자 디바이스 (1302) 를 예시한다. 도 13 과 연관되어 설명된 전자 디바이스 (1302) 는 도 1 내지 도 5 중 하나 이상과 연관되어 전술된 전자 디바이스들 (102, 302) 중 하나 이상의 예일 수도 있다. 전자 디바이스 (1302) 는 도 1 내지 도 5 중 하나 이상과 연관되어 설명된 방법들, 기능들, 단계들, 동작들, 등 중 하나 이상을 수행하도록 구성될 수도 있다.
전자 디바이스 (1302) 는 VLIW 회로 (1304) (예를 들어, GPU) 및 시스템 메모리 (1314) 를 포함할 수도 있다. VLIW 회로 (1304) 는 도 1 내지 도 5 중 하나 이상과 연관되어 전술된 VLIW 회로들 (104, 304) 중 하나 이상의 일 예일 수도 있다. 부가적으로 또는 대안으로, 시스템 메모리 (1314) 는 도 1 내지 도 5 중 하나 이상과 연관되어 설명된 시스템 메모리들 (114, 314) 중 하나 이상의 예일 수도 있다. 시스템 메모리 (1314) 는 지오메트리 데이터 (1309), 파라미터 버퍼 (1335), 텍스처 데이터 (1311) 및/또는 프레임 버퍼 (1341) 를 포함할 수도 있다. 지오메트리 데이터 (1309), 파라미터 버퍼 (1335), 텍스처 데이터 (1311) 및/또는 프레임 버퍼 (1341) 중 하나 이상은 도 12 와 연관되어 설명된 대응하는 엘리먼트들과 유사할 수도 있다. 시스템 메모리 (1314) 는 도 3 및 도 4 중 하나 이상과 연관되어 설명된 바와 같이 하나 이상의 프레임 버퍼들을 포함할 수도 있다는 것이 주목되어야 한다. 예를 들어, 프레임 버퍼 (1341) 는 도 3 및 도 4 중 하나 이상과 연관되어 설명된 프레임 버퍼들 중 하나 이상의 예일 수도 있다. 일부 구성들에서, 하나 이상의 프레임 버퍼들은 온-칩 메모리 (1310), 시스템 메모리 (1314) 또는 양자 모두에 포함될 수도 있다.
VLIW 회로 (1304) 는 그래픽 파이프라인 (1306) 및 온-칩 메모리 (1310) 를 포함할 수도 있다. 도 13 과 연관되어 설명된 그래픽 파이프라인 (1306) 은 도 1 내지 도 5 중 하나 이상과 연관되어 설명된 그래픽 파이프라인들 (106, 306) 중 하나 이상의 일 예일 수도 있다. 부가적으로 또는 대안으로, 도 13 과 연관되어 설명된 온-칩 메모리 (1310) 는 도 1 내지 도 5 중 하나 이상과 연관되어 설명된 온-칩 메모리들 (110, 310) 중 하나 이상의 일 예일 수도 있다.
온-칩 메모리 (1310) 는 캐시 (1301) 및/또는 심도 및 컬러 버퍼 (1343) 를 포함할 수도 있다. 일부 구성들에서, 온-칩 메모리 (1310), 캐시 (1301) 및/또는 심도 및 컬러 버퍼 (1343) 중 하나 이상은 도 12 와 연관되어 설명된 대응하는 엘리먼트들과 유사할 수도 있다.
그래픽 파이프라인 (1306) 은 VP (1374), VS (1376), TCS (1378), TESS (1380), TES (1382), GS (1384), 타일러 (1323), 래스터라이저 (1386) 및 FS (1390) 중 하나 이상을 포함할 수도 있다. 일부 구성들에서, VP (1374), VS (1376), TCS (1378), TESS (1380), TES (1382), GS (1384), 타일러 (1323), 래스터라이저 (1386) 및 FS (1390) 중 하나 이상은 도 12 와 연관되어 설명된 하나 이상의 대응하는 엘리먼트들의 동작들 중 하나 이상을 수행할 수도 있다. FS (1390) 는 일부 구성들에서 도 12 와 연관되어 설명된 바와 같이 HSR & DT, TB, T&S, AT 및 AB 중 하나 이상을 포함할 수도 있다.
도 13 에 예시된 구성들에서, VLIW 회로 (1304)(예를 들어, 그래픽 파이프라인 (1306)) 는 비동기식 메모리 제어기 (1308) 를 포함할 수도 있다. 비동기식 메모리 제어기 (1308) 는 TCS (1378), TESS (1380), TES (1382), GS (1384), 래스터라이저 (1386) 및 FS (1390) 중 하나 이상을 포함하고/하거나 이들에서 구현될 수도 있다. 완전히 또는 부분적으로, 예를 들어 비동기식 메모리 제어기 (1308) 는 TCS (1378), TESS (1380), TES (1382), GS (1384), 래스터라이저 (1386) 및/또는 FS (1390) 에서 구현될 수도 있다. 일반적인 라벨 "1308" 은, 비동기식 메모리 제어기 (1308) 가 도 13 에 예시된 엘리먼트들 (1308a-f) 중 어느 하나 또는 전부에서 구현될 수도 있다는 것을 가리킬 수도 있다. 일부 구성들에서, 비동기식 메모리 제어기 (1308) 는 TCS (1378), TESS (1380), TES (1382) 및 GS (1384) 중 하나 이상에서만 구현될 수도 있다. 예를 들어, 비동기식 메모리 제어기 (1308) 는, 데이터가 추후의 단계들로 포워딩될 수도 있기 때문에, TCS (1378), TESS (1380), TES (1382), 및/또는 GS (1384) 에서 하나 이상의 파라미터들을 단지 비동기식으로 판독할 수도 있다.
도 13 과 연관되어 설명된 비동기식 메모리 제어기 (1308) 는 도 1 내지 도 5 중 하나 이상과 연관되어 설명된 비동기식 메모리 제어기들 (108, 308) 중 하나 이상의 예일 수도 있다. 예를 들어, 비동기식 메모리 제어기 (1308) 는 (예를 들어, 데이터 세트의 프로세싱 동안) 시스템 메모리 (1314) 로부터 하나 이상의 파라미터들 (예를 들어, LOD 파라미터들) 을 비동기식으로 판독할 수도 있다. 일부 구성들에서, 업데이트된 파라미터(들)은 TCS (1378), TESS (1380), TES (1382), GS (1384), 래스터라이저 (1386) 및 FS (1390) 중 하나 이상에 제공될 수도 있다. 따라서, TCS (1378), TESS (1380), TES (1382), GS (1384), 래스터라이저 (1386) 및 FS (1390) 중 하나 이상은 데이터 세트가 프로세싱되고 있는 동안, 데이터 세트에 대해 초기에 확립된 프로세싱과는 상이하도록 데이터 세트의 프로세싱을 변화시킬 수도 있다.
일부 구성들에서, 이것은 전자 디바이스 (1302) 가 단일-패스 멀티-LOD 렌더링을 수행하게 할 수도 있다. 예를 들어, 비동기식 메모리 제어기 (1308) 는, 현재 프로세싱 및/또는 렌더링 (예를 들어, 테슬레이팅) 되고 있는 데이터의 세트에 대해 초기에 확립된 다른 LOD 파라미터와 상이한 LOD 파라미터를 판독할 수도 있다. 업데이트된 LOD 파라미터는 TCS (1378), TESS (1380), TES (1382), GS (1384), 래스터라이저 (1386) 및 FS (1390) 중 하나 이상에 제공될 수도 있다. 따라서, TCS (1378), TESS (1380), TES (1382), GS (1384), 래스터라이저 (1386) 및 FS (1390) 중 하나 이상은 하나 이상의 상이한 파라미터들로 개시되었던 데이터 세트의 프로세싱 동안 업데이트된 LOD 파라미터에 따라 데이터 세트의 프로세싱을 변화 (예를 들어, 테슬레이션 레벨을 변화) 시킬 수도 있다.
VLIW 회로 (1304)(예를 들어, 그래픽 파이프라인 (1306)) 는 불-균일 프레임 버퍼 제어기 (1312) 를 포함할 수도 있다. 도 13 에 예시된 바와 같이, 불-균일 프레임 버퍼 제어기 (1312) 는 FS (1390) 에 포함되고/되거나 이에서 구현될 수도 있다. 불-균일 프레임 버퍼 제어기 (1312) 는 부가적으로 또는 대안으로, FS (1390), 그래픽 파이프라인 (1306) 및 온-칩 메모리 (1310) 중 하나 이상에 포함되고/되거나 이들에서 구현될 수도 있다는 것이 주목되어야 한다. 완전히 또는 부분적으로, 예를 들어 불-균일 프레임 버퍼 제어기 (1312) 는 FS (1390), 그래픽 파이프라인 (1306), 온-칩 메모리 (1310) 및 전자 디바이스 (1302) 중 하나 이상에서 구현될 수도 있다.
도 13 과 연관되어 설명된 불-균일 프레임 버퍼 제어기 (1312) 는 도 1 내지 도 5 중 하나 이상과 연관되어 설명된 불-균일 프레임 버퍼 제어기들 (112, 312) 중 하나 이상의 예일 수도 있다. 예를 들어, 불-균일 프레임 버퍼 제어기 (1312) 는 하나 이상의 프레임 버퍼(들)의 상이한 서브세트들에 동적으로 액세스할 수도 있다. 일부 구성들에서, 프레임 버퍼의 상이한 서브세트들에 동적으로 액세스하는 것은 제 2 존의 적어도 하나의 픽셀과는 상이한 레이트에서 제 1 존의 적어도 하나의 픽셀에 액세스하는 것을 포함할 수도 있다. 부가적으로 또는 대안으로, 프레임 버퍼의 상이한 서브세트들에 동적으로 액세스하는 것은 (예를 들어, 제 1 픽셀의 프로세싱이 진행 중이고 제 2 픽셀의 프로세스가 완료될 때) 동적 셰이더 서브-루틴 스왑핑을 가능하게 하는 것을 포함할 수도 있다. 부가적으로 또는 대안으로, 불-균일 프레임 버퍼 제어기 (1312) 는 제 1 픽셀의 프로세싱된 제 1 샘플로 제 2 픽셀의 제 2 샘플을 대체하여 제 2 픽셀의 제 2 샘플을 프로세싱하는 것을 회피하도록 구성될 수도 있다. 도 13 에 예시된 아키텍처는 온-칩 버퍼들 (예를 들어, 심도 및 컬러 버퍼들) 의 커스텀 구성을 허용할 수도 있다. 이것은 VR 에 대한 렌더링, 밉맵 생성 등을 나란히 허용할 수도 있다.
도 14 는 매우 긴 명령어 (VLIW) 회로 (1468) 를 포함하는 전자 디바이스 (1466) 의 다른 예를 예시하는 블록도이다. 특히, 도 14 는 그래픽 프로세싱을 위한 아키텍처의 일 예를 예시한다. 이 아키텍처는 즉각 모드 (예를 들어, IMR) 및 타일링된 모드 (예를 들어, TBDR) 양자 모두를 제공 (예를 들어, 지원) 할 수도 있다. 예를 들어, 아키텍처는 즉각 모드 또는 타일링된 모드의 선택을 제공할 수도 있다. 도 14 에 예시된 예는 (예를 들어, 중간 지오메트리에 대해 필요한) 대형 온-칩 캐시/버퍼들을 회피할 수도 있다.
전자 디바이스 (1466) 는 VLIW 회로 (1468) (예를 들어, GPU) 및 시스템 메모리 (1405) (예를 들어, DRAM) 을 포함할 수도 있다. VLIW 회로 (1468) 는 그래픽 파이프라인 (1470) 및 온-칩 메모리 (1403) 를 포함할 수도 있다. 그래픽 파이프라인 (1470) 은 정점 프로세서 (VP)(1474), 정점 셰이더 (VS)(1476), 스위치들 A-B (1447a-b)(예를 들어, 멀티플렉서들), 테슬레이션 제어 셰이더 (TCS)(1478), 테슬레이터 (TESS)(1480) (예를 들어, 테슬레이션 엔진), 테슬레이션 평가 셰이더 (TES)(1482), 지오메트리 셰이더 (GS)(1484), 타일러 (1449), 래스터라이저 (Rast)(1486) 및 프래그먼트 셰이더 (FS)(1490) 중 하나 이상을 포함할 수도 있다. 많은 엘리먼트 라벨들이 편의를 위해 축약되어 있다. 온-칩 메모리 (1403) 는 캐시 (1401) 및 심도 및 컬러 버퍼 (1443) 를 포함할 수도 있다. 시스템 메모리 (1405) 는 지오메트리 데이터 (1409), 파라미터 버퍼 (1435), 텍스처 데이터 (1411) 및 프레임 버퍼 (1441) 를 포함할 수도 있다. 지오메트리 데이터 (1409) 는 하나 이상의 포인트들 (예를 들어, 정점들), 라인들 및/또는 다각형들을 나타낼 수도 있다. 지오메트리 데이터 (1409) 는 장면 및/또는 장면에서의 하나 이상의 객체들을 나타낼 수도 있다.
VP (1474) 는 지오메트리 데이터를 시스템 메모리 (1405) 로부터 VLIW 회로 (1468)(예를 들어, 그래픽 파이프라인 (1470)) 으로 페치할 수도 있다. VP (1474) 는 지오메트리 데이터를 VS (1476) 에 제공할 수도 있다.
VS (1476) 는 지오메트리 데이터를 상이한 공간으로 변환 (예를 들어, 프로젝트) 할 수도 있다. 예를 들어, VS (1476) 는 지오메트리 데이터를 3-차원 (3D) 공간으로부터 2-차원 (2D) 공간으로 변환할 수도 있다. 일부 구성들에서, VS (1476) 는 클립핑, 프로젝션 및/또는 선별 (culling) 을 수행할 수도 있다. 예를 들어, VS (1476) 는 뷰잉 절단체 밖에 있는 지오메트리 데이터를 클립 아웃할 수도 있다. VS (1476) 는 지오메트리 데이터를 3D 공간으로부터 2D 공간으로 프로젝팅할 수도 있다. VS (1476) 는 또한, 지오메트리 데이터의 일부를 선별할 수도 있다. 예를 들어, 가려진 지오메트리 (예를 들어, 다른 지오메트리에 의해 차단되기 때문에 볼 수 없는 지오메트리) 에 대응하는 지오메트리 데이터는 제거될 수도 있다. VS (1476) 는 변환된 지오메트리 데이터를 스위치 A (1447a)(예를 들어, 멀티플렉서) 에 제공할 수도 있다.
스위치 A (1447a) 는 변환된 지오메트리 데이터를 TCS (1478) 로 또는 타일러 (1449) 로 모드 (1445) 에 기초하여 라우팅할 수도 있다. 예를 들어, 모드 (1445) 는 렌더링 모드를 나타낼 수도 있다. 일부 구성들에서, 렌더링 모드들은 타일링된 모드 (예를 들어, 타일-기반 연기된 렌더링 (TBDR) 모드) 및 즉각 모드 (예를 들어, 즉각 모드 렌더링 (IMR)) 을 포함할 수도 있다. 테슬레이션이 인에이블되면, 스위치 A (1447a) 는 변환된 지오메트리 데이터를 테슬레이팅되도록 라우팅할 수도 있다. 그렇지 않으면, 스위치 A (1447a) 는 변환된 지오메트리 데이터를 타일링되도록 라우팅할 수도 있다. 예를 들어, 모드 (1445) 가 타일링된 모드를 나타내는 경우에서, 스위치 A (1447a) 는 변환된 지오메트리를 타일러 (1449) 로 지향시킬 수도 있다. 모드 (1445) 가 즉각 모드를 나타내는 경우에서, 스위치 A (1447a) 는 변환된 지오메트리를 TCS (1478) 로 지향시킬 수도 있다. 즉각 모드는 도 8 및 도 10 중 하나 이상과 연관되어 설명된 동작들 중 하나 이상을 포함할 수도 있다. 타일링된 모드는 도 12 와 연관되어 설명된 동작들 중 하나 이상을 포함할 수도 있다.
TCS (1478) 는 스위치 A (1447a)(예를 들어, VS (1476)) 로부터 지오메트리 데이터 (예를 들어, 변환된 지오메트리 데이터) 를 수신할 수도 있다. TCS (1478) 는 지오메트리 데이터 (예를 들어, 변환된 지오메트리 데이터) 의 단위를 변환할 수도 있다. 예를 들어, TCS (1478) 는 지오메트리 데이터의 단위를 테슬레이션을 위한 (예를 들어, 삼각형들과 같은 다각형들로 효율적으로 세분하기 위한) 단위로 변환할 수도 있다. 예를 들어, TCS (1478) 는 TCS (1478) 에 의해 수행된 단위 변환을 나타내는 단위 표시자를 생성할 수도 있다. 단위-변환된 지오메트리 데이터는 TESS (1480) 에 제공될 수도 있다.
TESS (1480) 는 지오메트리 데이터 (예를 들어, 단위-변환된 지오메트리 데이터) 를 테슬레이팅할 수도 있다. 예를 들어, TESS (1480) 는 지오메트리 데이터에 기초하여 더 많은 지오메트리 데이터 (예를 들어, 정점들) 를 생성할 수도 있다 (예를 들어, 삼각형들을 더 많은 삼각형들로 세분할 수도 있다). TESS (1480) 는 LOD 파라미터에 기초하여 동작할 수도 있다. LOD 파라미터는 LOD 를 지정할 수도 있고/있거나 수행할 TESS (1480) 에 대한 테슬레이션의 정도를 나타낼 수도 있다. 테슬레이팅된 지오메트리 데이터는 TES (1482) 에 제공될 수도 있다.
TES (1482) 는 지오메트리 데이터 (예를 들어, 테슬레이팅된 지오메트리 데이터) 의 단위를 변환할 수도 있다. 예를 들어, TES (1482) 는 지오메트리 데이터의 단위를 TCS (1478) 에 의해 적용된 단위 변환 전의 단위로 다시 변환할 수도 있다. 일부 구성들에서, TES (1482) 는 지오메트리 데이터의 단위를 변환 (예를 들어, 역 변환) 하기 위해 TCS (1478) 및/또는 메모리 (예를 들어, 온-칩 메모리 (1403) 및/또는 시스템 메모리 (1405)) 로부터 단위 표시자를 획득할 수도 있다. TESS (1482) 는 지오메트리 데이터 (예를 들어, 역 단위-변환된 지오메트리 데이터) 를 GS (1484) 에 제공할 수도 있다.
GS (1484) 는 지오메트리 데이터 (예를 들어, 역 단위-변환된 지오메트리 데이터) 상에서 하나 이상의 동작들을 수행할 수도 있다. 예를 들어, GS (1484) 는 지오메트리 데이터에 기초하여 추가적인 지오메트리를 생성할 수도 있다. GS (1484) 는 (예를 들어, 추가적인 지오메트리를 갖는) 지오메트리 데이터를 스위치 B (1447b) 에 제공할 수도 있다. 스위치 B (1447b)(예를 들어, 멀티플렉서) 는 (예를 들어, 추가적인 지오메트리를 갖는) 지오메트리 데이터를 (예를 들어, 즉각 모드의 경우에서) 래스터라이저 (1486) 로 라우팅할 수도 있다.
예를 들어, 모드 (1445) 가 TBDR 모드를 나타내는 경우에서, 스위치 A (1447a) 는 변환된 지오메트리 데이터를 (예를 들어, VS (1476) 로부터) 타일러 (1449) 에 제공할 수도 있다. 타일러 (1449) 는 변환된 지오메트리 데이터를 타일들로 스플릿할 수도 있다. 예를 들어, 타일러 (1449) 는 지오메트리 데이터를 더 작은 그룹들의 지오메트리 데이터로 분할할 수도 있다. 타일들은 연속적인 지오메트리 데이터를 포함할 수도 있다. 타일러 (1449) 는 타일들을 파라미터 버퍼 (1435) 에 제공할 수도 있다.
파라미터 버퍼 (1435) 는 타일들을 저장할 수도 있다. 예를 들어, 파라미터 버퍼 (1435) 는 프리미티브들 (예를 들어, 지오메트리 데이터, 정점들, 라인들, 다각형들, 등) 의 리스트를 저장할 수도 있다. 도 14 에 설명된 타일링된 모드에서, 타일 프로세싱은 시스템 메모리 액세스들의 공간적 집약성을 레버리징할 수도 있다. 예를 들어, 타일에 국부적인 동작들은 비교적 "저렴" 할 수도 있다 (예를 들어, 매우 적은 프로세싱, 전력, 메모리 및/또는 시간 리소스들을 이용할 수도 있다). 지오메트리 데이터 (예를 들어, 타일링된 지오메트리 데이터, 프리미티브들, 등) 는 스위치 B (1447b) 에 제공될 수도 있다. 스위치 B (1447b) 는 지오메트리 데이터를 (예를 들어, 타일링된 모드의 경우에서) 파라미터 버퍼 (1435) 로부터 래스터라이저 (1486) 로 라우팅할 수도 있다.
래스터라이저 (1486) 는 지오메트리 데이터 (예를 들어, 파라미터 버퍼 (1435) 로부터 타일링된 지오메트리 데이터 또는 GS (1484) 로부터 (예를 들어, 추가적인 지오메트리를 갖는) 지오메트리 데이터) 를 수신할 수도 있다. 래스터라이저 (1486) 는 지오메트리 데이터를 래스터화할 수도 있다. 예를 들어, 래스터라이저는 지오메트리 데이터를 픽셀 데이터를 컨버팅할 수도 있다. 픽셀 데이터는 FS (1490) 에 제공될 수도 있다.
FS (1490) 는 픽셀 데이터 상에서 프래그먼트 셰이딩 또는 픽셀 셰이딩을 수행할 수도 있다. 예를 들어, FS (1490) 는 하나 이상의 픽셀들의 하나 이상의 속성들 (예를 들어, 컬러, 밝기, 투명도 등) 을 결정할 수도 있다. 예를 들어, FS (1490) 는 도 8 내지 도 12 중 하나 이상과 연관되어 설명된 FS들 (890, 990, 1090, 1190, 1290, 1390) 중 하나 이상과 연관되어 전술된 동작들 중 하나 이상을 수행하고/하거나 구조들 중 하나 이상을 포함할 수도 있다.
FS (1490) 는 캐시 (1401) 및 심도 및 컬러 버퍼 (1443) 중 하나 이상에 픽셀 데이터를 제공할 수도 있다. 일부 구성들에서, FS (1490) 및/또는 심도 및 컬러 버퍼 (1443) 는 유사한 기능성을 본원에 설명된 구성/분해 블록들에 제공할 수도 있다. 일부 구성들에서, 도 14 와 연관되어 설명된 아키텍처는 즉각 모드 및 타일링된 모드를 혼합하지 않을 수도 있다. 예를 들어, 모드 (예를 들어, 모드 (1445)) 는 테슬레이션 즉각 모드를 나타내거나 또는 테슬레이션 타일링된 모드를 나타내지 않을 수도 있다.
캐시 (1401) 는 시스템 메모리로부터 텍스처 데이터 (1411) 를 수신할 수도 있다. 일부 구성들에서, 단지 텍스처 액세스들 및 프레임 버퍼 타일들이 캐싱될 수도 있다. 즉각 모드의 경우에서, 전체 프레임 버퍼 (1441) 의 사이즈인 타일이 할당될 수도 있다.
도 14 에 예시된 바와 같이, 컬러 및 심도 버퍼 데이터는 칩 상에 저장될 수도 있다. 심도 및 컬러 버퍼 (1443) 는 픽셀 데이터를 프레임 버퍼 (1441) 에 제공할 수도 있다. 프레임 버퍼 (1441) 는 픽셀 데이터를 출력할 수도 있다. 픽셀 데이터는 프리젠테이션을 위해 제공 (예를 들어, 출력) 될 수도 있다. 예를 들어, 픽셀 데이터는 프리젠테이션을 위해 디스플레이로 전송될 수도 있다.
본원에 개시된 시스템들 및 방법들 없이, 도 14 와 연관되어 설명된 동작들은 도 8 과 연관되어 설명된 바와 같이 데이터 세트들 (예를 들어, 정점, 픽셀 및/또는 이미지 데이터의 세트들) 의 관점들에서 수행될 수도 있다는 것이 주목되어야 한다.
도 15 는 도 14 와 연관되어 설명된 아키텍처에서 구현된 본원에 개시된 시스템들 및 방법들의 예를 예시하는 블록도이다. 이 아키텍처는 즉각 모드 (예를 들어, IMR) 및 타일링된 모드 (예를 들어, TBDR) 를 제공할 수도 있다. 구체적으로, 도 15 는 전자 디바이스 (1502) 를 예시한다. 도 15 와 연관되어 설명된 전자 디바이스 (1502) 는 도 1 내지 도 5 중 하나 이상과 연관되어 전술된 전자 디바이스들 (102, 302) 중 하나 이상의 예일 수도 있다. 전자 디바이스 (1502) 는 도 1 내지 도 5 중 하나 이상과 연관되어 설명된 방법들, 기능들, 단계들, 동작들, 등 중 하나 이상을 수행하도록 구성될 수도 있다.
전자 디바이스 (1502) 는 VLIW 회로 (1504) (예를 들어, GPU) 및 시스템 메모리 (1514) 를 포함할 수도 있다. VLIW 회로 (1504) 는 도 1 내지 도 5 중 하나 이상과 연관되어 전술된 VLIW 회로들 (104, 304) 중 하나 이상의 일 예일 수도 있다. 부가적으로 또는 대안으로, 시스템 메모리 (1514) 는 도 1 내지 도 5 중 하나 이상과 연관되어 설명된 시스템 메모리들 (114, 314) 중 하나 이상의 예일 수도 있다. 시스템 메모리 (1514) 는 지오메트리 데이터 (1509), 파라미터 버퍼 (1535), 텍스처 데이터 (1511) 및/또는 프레임 버퍼 (1541) 를 포함할 수도 있다. 지오메트리 데이터 (1509), 파라미터 버퍼 (1535), 텍스처 데이터 (1511) 및/또는 프레임 버퍼 (1541) 중 하나 이상은 도 14 와 연관되어 설명된 대응하는 엘리먼트들과 유사할 수도 있다. 시스템 메모리 (1514) 는 도 3 및 도 4 중 하나 이상과 연관되어 설명된 바와 같이 하나 이상의 프레임 버퍼들을 포함할 수도 있다는 것이 주목되어야 한다. 예를 들어, 프레임 버퍼 (1541) 는 도 3 및 도 4 중 하나 이상과 연관되어 설명된 프레임 버퍼들 중 하나 이상의 예일 수도 있다. 일부 구성들에서, 하나 이상의 프레임 버퍼들은 온-칩 메모리 (1510), 시스템 메모리 (1514) 또는 양자 모두에 포함될 수도 있다.
VLIW 회로 (1504) 는 그래픽 파이프라인 (1506) 및 온-칩 메모리 (1510) 를 포함할 수도 있다. 도 15 와 연관되어 설명된 그래픽 파이프라인 (1506) 은 도 1 내지 도 5 중 하나 이상과 연관되어 설명된 그래픽 파이프라인들 (106, 306) 중 하나 이상의 일 예일 수도 있다. 부가적으로 또는 대안으로, 도 14 와 연관되어 설명된 온-칩 메모리 (1510) 는 도 1 내지 도 5 중 하나 이상과 연관되어 설명된 온-칩 메모리들 (110, 310) 중 하나 이상의 일 예일 수도 있다.
온-칩 메모리 (1510) 는 캐시 (1501) 및/또는 심도 및 컬러 버퍼 (1543) 를 포함할 수도 있다. 일부 구성들에서, 온-칩 메모리 (1510), 캐시 (1501) 및/또는 심도 및 컬러 버퍼 (1543) 중 하나 이상은 도 14 와 연관되어 설명된 대응하는 엘리먼트들과 유사할 수도 있다.
그래픽 파이프라인 (1506) 은 VP (1574), VS (1576), 스위치들 A-B (1547a-b), TCS (1578), TESS (1580), TES (1582), GS (1584), 타일러 (1549), 래스터라이저 (1586) 및 FS (1590) 중 하나 이상을 포함할 수도 있다. 일부 구성들에서, VP (1574), VS (1576), 스위치들 A-B (1547a-b), TCS (1578), TESS (1580), TES (1582), GS (1584), 타일러 (1549), 래스터라이저 (1586) 및 FS (1590) 중 하나 이상은 도 14 와 연관되어 설명된 하나 이상의 대응하는 엘리먼트들의 동작들 중 하나 이상을 수행할 수도 있다. FS (1590) 는 일부 구성들에서 도 15 와 연관되어 설명된 바와 같이 HSR & DT, TB, T&S, AT 및 AB 중 하나 이상을 포함할 수도 있다.
도 15 에 예시된 구성들에서, VLIW 회로 (1504)(예를 들어, 그래픽 파이프라인 (1506)) 는 비동기식 메모리 제어기 (1508) 를 포함할 수도 있다. 비동기식 메모리 제어기 (1508) 는 TCS (1578), TESS (1580), TES (1582), GS (1584), 래스터라이저 (1586), FS (1590) 및 타일러 (1549) 중 하나 이상을 포함하고/하거나 이들에서 구현될 수도 있다. 완전히 또는 부분적으로, 예를 들어 비동기식 메모리 제어기 (1508) 는 TCS (1578), TESS (1580), TES (1582), GS (1584), 래스터라이저 (1586), FS (1590) 및/또는 타일러 (1549) 에서 구현될 수도 있다. 일반적인 라벨 "1508" 은, 비동기식 메모리 제어기 (1508) 가 도 15 에 예시된 엘리먼트들 (1508a-g) 중 어느 하나 또는 전부에서 구현될 수도 있다는 것을 가리킬 수도 있다. 일부 구성들에서, 비동기식 메모리 제어기 (1508) 는 TCS (1578), TESS (1580), TES (1582) 및 GS (1584) 중 하나 이상에서만 구현될 수도 있다. 예를 들어, 비동기식 메모리 제어기 (1508) 는, 데이터가 추후의 단계들로 포워딩될 수도 있기 때문에, TCS (1578), TESS (1580), TES (1582), 및/또는 GS (1584) 에서 하나 이상의 파라미터들을 단지 비동기식으로 판독할 수도 있다.
스위치 A (1547a) 는 데이터를 TCS (1578) 로 또는 타일러 (1549) 로 모드 (1545) 에 기초하여 라우팅할 수도 있다. 예를 들어, 모드 (1545) 는 렌더링 모드를 나타낼 수도 있다. 일부 구성들에서, 렌더링 모드들은 타일링된 모드 (예를 들어, 타일-기반 연기된 렌더링 (TBDR) 모드) 및 즉각 모드 (예를 들어, 즉각 모드 렌더링 (IMR)) 을 포함할 수도 있다. 테슬레이션이 인에이블되면, 스위치 A (1547a) 는 데이터를 테슬레이팅되도록 라우팅할 수도 있다. 그렇지 않으면, 스위치 A (1547a) 는 데이터를 타일링되도록 라우팅할 수도 있다. 즉각 모드는 도 8 및 도 10 중 하나 이상과 연관되어 설명된 동작들 중 하나 이상을 포함할 수도 있다. 타일링된 모드는 도 12 와 연관되어 설명된 동작들 중 하나 이상을 포함할 수도 있다.
타일링된 모드에서, 타일러 (1549), 래스터라이저 (1586) 및 FS (1590) 중 하나 이상에 포함된 비동기식 메모리 제어기 (1508e-g) 는 일부 구성들에서 FS (1590) 의 연산을 구역설정 (zoning) 하고/하거나 감소시키는 것을 수행할 수도 있다. 예를 들어, 비동기식 메모리 제어기 (1508e-g) 는 고-LOD 존에 대해 더 값비싼 셰이더, 중간-LOD 존에 대해 중간으로 값비싼 셰이더 및 저-LOD 존에 대해 저렴한 셰이더를 이용할 수도 있다. 예를 들어, 포비에이티드 렌더링은 셰이더 연산 및/또는 지오메트리의 LOD 를 포함할 수도 있다. 일부 구성들에서 (예를 들어, 타일링된 모드에서), 지오메트리는 수정되지 않을 수도 있지만 픽셀 마다 실행되는 하나 이상의 셰이더들은 가변하는 연산 비용들을 가질 수도 있다.
도 15 와 연관되어 설명된 비동기식 메모리 제어기 (1508) 는 도 1 내지 도 5 중 하나 이상과 연관되어 설명된 비동기식 메모리 제어기들 (108, 308) 중 하나 이상의 예일 수도 있다. 예를 들어, 비동기식 메모리 제어기 (1508) 는 (예를 들어, 데이터 세트의 프로세싱 동안) 시스템 메모리 (1514) 로부터 하나 이상의 파라미터들 (예를 들어, LOD 파라미터들) 을 비동기식으로 판독할 수도 있다. 일부 구성들에서, 업데이트된 파라미터(들)은 TCS (1578), TESS (1580), TES (1582), GS (1584), 래스터라이저 (1586), FS (1590) 및 타일러 (1549) 중 하나 이상에 제공될 수도 있다. 따라서, TCS (1578), TESS (1580), TES (1582), GS (1584), 래스터라이저 (1586), FS (1590) 및 타일러 (1549) 중 하나 이상은 데이터 세트가 프로세싱되고 있는 동안, 데이터 세트에 대해 초기에 확립된 프로세싱과는 상이하도록 데이터 세트의 프로세싱을 변화시킬 수도 있다.
일부 구성들에서, 이것은 전자 디바이스 (1502) 가 단일-패스 멀티-LOD 렌더링을 수행하게 할 수도 있다. 예를 들어, 비동기식 메모리 제어기 (1508) 는, 현재 프로세싱 및/또는 렌더링 (예를 들어, 테슬레이팅) 되고 있는 데이터의 세트에 대해 초기에 확립된 다른 LOD 파라미터와 상이한 LOD 파라미터를 판독할 수도 있다. 업데이트된 LOD 파라미터는 TCS (1578), TESS (1580), TES (1582), GS (1584), 래스터라이저 (1586), FS (1590) 및 타일러 (1549) 중 하나 이상에 제공될 수도 있다. 따라서, TCS (1578), TESS (1580), TES (1582), GS (1584), 래스터라이저 (1586), FS (1590) 및 타일러 (1549) 중 하나 이상은 하나 이상의 상이한 파라미터들로 개시되었던 데이터 세트의 프로세싱 동안 업데이트된 LOD 파라미터에 따라 데이터 세트의 프로세싱을 변화 (예를 들어, 테슬레이션 레벨을 변화 및/또는 하나 이상의 셰이더들을 변화) 시킬 수도 있다.
VLIW 회로 (1504)(예를 들어, 그래픽 파이프라인 (1506)) 는 불-균일 프레임 버퍼 제어기 (1512) 를 포함할 수도 있다. 도 15 에 예시된 바와 같이, 불-균일 프레임 버퍼 제어기 (1512) 는 FS (1590) 에 포함되고/되거나 이에서 구현될 수도 있다. 불-균일 프레임 버퍼 제어기 (1512) 는 부가적으로 또는 대안으로, FS (1590), 그래픽 파이프라인 (1506) 및 온-칩 메모리 (1510) 중 하나 이상에 포함되고/되거나 이들에서 구현될 수도 있다는 것이 주목된다. 완전히 또는 부분적으로, 예를 들어 불-균일 프레임 버퍼 제어기 (1512) 는 FS (1590), 그래픽 파이프라인 (1506), 온-칩 메모리 (1510) 및 전자 디바이스 (1502) 중 하나 이상에서 구현될 수도 있다.
도 15 와 연관되어 설명된 불-균일 프레임 버퍼 제어기 (1512) 는 도 1 내지 도 5 중 하나 이상과 연관되어 설명된 불-균일 프레임 버퍼 제어기들 (112, 312) 중 하나 이상의 예일 수도 있다. 예를 들어, 불-균일 프레임 버퍼 제어기 (1512) 는 하나 이상의 프레임 버퍼(들) (예를 들어, 프레임 버퍼 (1541)) 의 상이한 서브세트들에 동적으로 액세스할 수도 있다. 일부 구성들에서, 프레임 버퍼의 상이한 서브세트들에 동적으로 액세스하는 것은 제 2 존의 적어도 하나의 픽셀과는 상이한 레이트에서 제 1 존의 적어도 하나의 픽셀에 액세스하는 것을 포함할 수도 있다. 부가적으로 또는 대안으로, 프레임 버퍼의 상이한 서브세트들에 동적으로 액세스하는 것은 (예를 들어, 제 1 픽셀의 프로세싱이 진행 중이고 제 2 픽셀의 프로세스가 완료될 때) 동적 셰이더 서브-루틴 스왑핑을 가능하게 하는 것을 포함할 수도 있다. 부가적으로 또는 대안으로, 불-균일 프레임 버퍼 제어기 (1512) 는 제 2 픽셀의 제 2 샘플을 제 1 픽셀의 프로세싱된 제 1 샘플로 대체하여 제 2 픽셀의 제 2 샘플을 프로세싱하는 것을 회피하도록 구성될 수도 있다. 도 15 에 예시된 아키텍처는 온-칩 버퍼들 (예를 들어, 심도 및 컬러 버퍼들) 의 커스텀 구성을 허용할 수도 있다. 이것은 VR 에 대한 렌더링, 밉맵 생성 등을 나란히 허용할 수도 있다.
부가적으로 또는 대안으로, 불-균일 프레임 버퍼 제어기 (312) 는 효율적인 프레임 버퍼 파티셔닝, 판독 및/또는 기입을 제공할 수도 있다. 예를 들어, 불-균일 프레임 버퍼 제어기 (312) 는 프래그먼트 셰이더 (FS) 및/또는 구성/분해 블록 불-균일한 방식으로 프레임 버퍼에 액세스하도록 (예를 들어, 상이한 레벨들의 디테일을 갖는 프레임 버퍼의 상이한 서브세트들에 동시에 기입하고, 상이한 수들의 샘플들을 갖는 상이한 서브세트들에 기입하는 등을 하도록) 할 수도 있다.
도 16 은 다수의 존들을 렌더링하기 위한 시스템들 및 방법들이 구현될 수도 있는 전자 디바이스 (1651) 의 일 구성을 예시하는 블록도이다. 전자 디바이스 (1651) 의 예들은 스마트 폰들, 컴퓨터들 (예를 들어, 데스크톱 컴퓨터들, 랩톱 컴퓨터들, 등), 헤드-장착 디스플레이들 (예를 들어, 가상 현실 (VR) 헤드셋들, 증간 현실 (AR) 헤드셋들, 등), VR 디바이스들, AR 디바이스들, 태블릿 디바이스들, 미디어 플레이어들, 텔레비전들, 자동차들, 차량들, 카메라들, 비디오 캠코더들, 디지털 카메라들, 셀룰러 폰들, 퍼스널 카메라들, 액션 카메라들, 에어크래프트, 드론들, 무인 항공기 (UAV)들, 헬스케어 장비, 게이밍 콘솔들, 개인 휴대 정보 단말 (PDA)들, 셋-톱 박스들, 미디어 플레이어들 등을 포함한다. 일부 구성들에서, 전자 디바이스 (1651) 는 차량에서의 착탈형 모듈의 적어도 부분일 수도 있다. 예를 들어, 전자 디바이스 (1651) 는 차량 내에 포함되고/되거나 이에 커플링될 수도 있고 차량으로부터 착탈 가능할 수도 있다. 도 16 과 연관되어 설명된 전자 디바이스 (1651) 는 도 1 내지 도 5 및 도 8 내지 도 15 중 하나 이상과 연관되어 전술된 전자 디바이스들 (102, 302, 866, 902, 1066, 1102, 1266, 1302, 1466, 1502) 중 하나 이상의 예가 아닐 수도 있다. 일부 구성들에서, 전자 디바이스 (1654) 의 컴포넌트들 또는 엘리먼트들 중 하나 이상은 도 1 내지 도 5 및 도 8 내지 도 15 중 하나 이상과 연관되어 설명된 대응하는 컴포넌트들 또는 엘리먼트들과 유사하거나 또는 유사하지 않을 수도 있다. 컴포넌트들 또는 엘리먼트들 중 하나 이상은 하드웨어 (예를 들어, 회로부) 또는 하드웨어와 소프트웨어의 조합 (예를 들어, 명령들을 갖는 프로세서) 에서 구현될 수도 있다.
일부 구성들에서, 전자 디바이스 (1651) 는 메모리 (1667), 하나 이상의 디스플레이들 (1673), 하나 이상의 이미지 센서들 (1653), 하나 이상의 광학 시스템들 (1655), 하나 이상의 통신 인터페이스들 (1657), 하나 이상의 안테나들 (1659) 및/또는 하나 이상의 프로세서들 (1661) 을 포함할 수도 있다. 도 16 과 연관되어 설명된 엘리먼트들 또는 컴포넌트들 중 2 이상은 서로와 전자 통신할 수도 있다. 예를 들어, 프로세서 (1661) 는 메모리 (1667) 에)(예를 들어, 전자 통신적으로) 커플링될 수도 있다. 프로세서(들)(1661) 은 하나 이상의 중앙 처리 장치 (CPU)들, 매우 긴 명령어 (VLIW) 회로들, 그래픽 프로세싱 유닛들, 주문형 집적 회로 (ASIC)들 등, 또는 이들의 임의의 조합을 포함할 수도 있다. 예를 들어, 프로세서 (1661) 는 도 1 내지 도 5 및 도 8 내지 도 15 중 하나 이상과 연관되어 설명된 VLIW 회로 (104, 304, 868, 904, 1068, 1104, 1268, 1304, 1468, 1504) 일 수도 있다. 일부 구성들에서, 프로세서 (1661) 는 통합된 VLIW 회로 (예를 들어, GPU) 를 갖는 CPU 일 수도 있고 또는 CPU 및 별개의 VLIW 회로 (예를 들어, GPU) 일 수도 있다. 예를 들어, 프로세서 (1661) 는 이미지들을 렌더링하기 위한 디바이스일 수도 있다. 일부 구성들에서, 결과의 이미지(들)은 하나 이상의 디스플레이들 (1673) 상에 제시될 수도 있다.
통신 인터페이스 (1657) 는 전자 디바이스 (1651) 가 하나 이상의 다른 전자 디바이스들과 통신하게 할 수도 있다. 예를 들어, 통신 인터페이스 (1657) 는 유선 및/또는 무선 통신을 위해 인터페이스를 제공할 수도 있다. 일부 구성들에서, 통신 인터페이스 (1657) 는 무선 주파수 (RF) 신호들을 송신 및/또는 수신하기 위해 하나 이상의 안테나들 (1659) 에 커플링될 수도 있다. 부가적으로 또는 대안으로, 통신 인터페이스 (1657) 는 하나 이상의 종류들의 와이어라인 (예를 들어, 유니버셜 시리얼 버스 (USB), 이더넷, 비디오 그래픽 어레이 (VGA), 디지털 비주얼 인터페이스 (DVI), 고화질 멀티미디어 인터페이스 (HDMI), 디스플레이포트, 모바일 고-화질 링크 (MHL), 등) 통신을 가능하게 할 수도 있다.
일부 구성들에서, 다수의 통신 인터페이스들 (1657) 이 구현 및/또는 이용될 수도 있다. 예를 들어, 하나의 통신 인터페이스 (1657) 는 셀룰러 (예를 들어, 3G, 롱 텀 에볼루션 (LTE), CDMA, 등) 통신 인터페이스 (1657) 일 수도 있고, 다른 통신 인터페이스 (1657) 는 이더넷 인터페이스일 수도 있고, 다른 통신 인터페이스 (1657) 는 유니버셜 시리얼 버스 (USB) 인터페이스일 수도 있고, 또 다른 통신 인터페이스 (1657) 는 무선 로컬 영역 네트워크 (WLAN) 인터페이스 (예를 들어, 전기전자 협회 (IEEE) 802.11 인터페이스) 일 수도 있으며, 또 다른 통신 인터페이스 (1657) 는 블루투스 인터페이스일 수도 있다.
일부 구성들에서, 전자 디바이스 (1654) 는 도 1 내지 도 15 및 도 17 내지 도 24 중 하나 이상과 연관되어 설명된 기능들, 절차들, 방법들, 단계들 등 중 하나 이상을 수행할 수도 있다. 부가적으로 또는 대안으로, 전자 디바이스 (1651) 는 도 1 내지 도 15 및 도 17 내지 도 24 중 하나 이상과 연관되어 설명된 구조들 중 하나 이상을 포함할 수도 있다.
메모리 (1667) 는 명령들 및/또는 데이터를 저장할 수도 있다. 메모리 (1667) 는 시스템 메모리 및/또는 온-칩 메모리를 포함할 수도 있다. 도 16 과 연관되어 설명된 메모리 (1667) 는 도 1 내지 도 5 및 도 8 내지 도 15 중 하나 이상과 연관되어 설명된 메모리들 (110, 114, 310, 314, 803, 805, 910, 914, 1003, 1005, 1110, 1114, 1203, 1205, 1310, 1314, 1403, 1405, 1510, 1514) 중 하나 이상의 예일 수도 있거나 또는 예가 아닐 수도 있다. 프로세서 (1661) 는 메모리 (1667) 에 액세스 (예를 들어, 메모리로부터 판독 및/또는 메모리에 기입) 할 수도 있다. 메모리 (1667) 는 지오메트리 데이터 (1669) 를 저장할 수도 있다. 일부 구성들에서, 메모리 (1667) 는 프레임 버퍼 (1671) 를 포함할 수도 있다. 프레임 버퍼 (1671) 는 이미지 데이터를 저장하기 위한 메모리 (1667) 의 일부일 수도 있다. 버퍼링된 이미지 데이터는 일부 구성들에서 하나 이상의 디스플레이들 (1673) 상에서 제시될 수도 있다.
일부 구성들에서, 프로세서 (1661) 는 이미지들을 렌더링하기 위한 하나 이상의 엘리먼트들을 포함할 수도 있다. 엘리먼트들의 일부 예들은 프론트 엔드 (FE), 정점 프로세서 (VP들, 정점 페처 (VF), 정점 셰이더 (VS), 테슬레이션 제어 셰이더 (TCS), 헐 셰이더 (HS), 테슬레이터 (예를 들어, 테슬레이션 엔진) (TESS), 테슬레이션 평가 셰이더 (TES), 도메인 셰이더 (DS), 지오메트리 셰이더 (GS), 래스터라이저 (Rast), 프래그먼트 셰이더 (FS), 픽셀 셰이더 (PS), 타일러, 렌더 출력 유닛 (ROP), 클립퍼 (Clip) 및/또는 스트림 출력 (SOL), 등을 포함할 수도 있다. 일부 구성들에서, 이들 엘리먼트들 중 하나 이상은 그래픽 파이프라인으로서 지칭될 수도 있다.
프로세서 (1661) 는 멀티-존 렌더러 (1663) 를 포함 및/또는 구현할 수도 있다. 예를 들어, 멀티-존 렌더러를 하드웨어 또는 하드웨어와 소프트웨어의 조합에서 구현될 수도 있다. 멀티-존 렌더러 (1663) 는 이미지의 다수의 존들을 렌더링할 수도 있다. 예를 들어, 멀티-존 렌더러 (1663) 는 지오메트리 데이터 (1669) 에 기초하여 이미지의 다수의 존들을 렌더링할 수도 있다. 다수의 존들은 상이한 테슬레이팅된 레벨들의 디테일로 렌더링될 수도 있다. 예를 들어, 멀티-존 렌더러 (1663) 는 N 개의 존들을 렌더링할 수도 있고, 여기서 존들 중 적어도 2 개는 상이한 테슬레이팅된 레벨들의 디테일을 갖는다. 예를 들어, 멀티-존 렌더러는 제 1 테슬레이팅된 레벨의 디테일에서 이미지의 제 1 존을 렌더링할 수도 있고 제 2 의 더 높은 테슬레이팅된 레벨의 디테일을 갖는 이미지의 제 2 존을 렌더링할 수도 있다. 존들은 정적이거나 또는 동적일 수도 있다. 예를 들어, 존들은 디스플레이 (1673) 상의 미리결정된 로케이션들에 있을 수도 있다. 따라서, 멀티-존 렌더러 (1663) 는 정적 존들에 대응하는 디테일의 레벨에서 지오메트리를 렌더링할 수도 있다. 다른 구성들에서, 존들은 동적일 수도 있다. 예를 들어, 존들은 아이 추적 및/또는 다른 팩터들 (예를 들어, 객체 유형, 우선순위, 수신된 설정들 등) 에 기초하여 이동할 수도 있다. 일부 구성들에서, 존은 사용자가 보고 있는 디스플레이의 포인트 (예를 들어, 이미지) 상에 거의 센터링된 원형 영역 (또는 다른 형상의 영역) 일 수도 있다. 다른 구성들에서, 존은 사용자가 보고 있는 윈도우에 대응하는 이미지의 전체 영역일 수도 있다.
전자 디바이스 (1651) 는 하나 이상의 디스플레이들 (1673) 에 커플링될 수도 있다. 예를 들어, 전자 디바이스 (1651) 는 하나 이상의 디스플레이들 (1673) 을 포함할 수도 있고/있거나 하나 이상의 외부 (예를 들어, 원격) 디스플레이들 (1673) 에 커플링될 수도 있다. 디스플레이 (1673) 의 예들은 액정 디스플레이 (LCD) 패널들, 발광 다이오드 (LED) 패널들 (예를 들어, 유기 발광 다이오드 (OLED)) 패널들, 음극선관 (CRT) 디스플레이들, 모니터들, 텔레비전들, 프로젝터들, 플라즈마 디스플레이, 헤드-장착 디스플레이(들), 전자 잉크 디스플레이들, 등을 포함한다.
일부 구성들에서, 디스플레이(들)(1673) 은 하나 이상의 윈도우들 (예를 들어, 차량 윈도우들, 빌딩 윈도우들, 등) 상에 이미지들을 제시할 수도 있다. 예를 들어, 디스플레이(들)(1673) 은 하나 이상의 윈도우 프로젝터들 및/또는 하나 이상의 통합형 윈도우 디스플레이 패널들을 포함할 수도 있다. 멀티-존 렌더러 (1663) 는 다수의 존들을 렌더링할 수도 있다 (여기서, 예를 들어 2 이상의 존들은 상이한 레벨들의 디테일을 가질 수도 있다). 일부 구성들에서, 전자 디바이스 (1651)(예를 들어, 프로세서 (1661)) 는 상이한 윈도우들 상에 상이한 존들을 제시할 수도 있다. 예를 들어, 제 1 존은 제 1 윈도우 (예를 들어, 윈드실드) 상에 제시될 수도 있고, 제 2 존은 제 2 윈도우 (예를 들어, 차량 도어 윈도우(들)) 상에 제시될 수도 있고/있거나 제 3 존은 제 3 윈도우 (예를 들어, 차량 후방 윈도우) 상에 제시될 수도 있다. 일부 구성들에서, 상이한 존들은 동일한 윈도우의 상이한 섹션들 상에 제시될 수도 있다. 예를 들어, 제 1 존은 윈도우의 제 1 섹션 (예를 들어, 윈드실드의 운전자측 섹션) 상에 제시될 수도 있고 제 2 존은 윈도우의 제 2 섹션 (예를 들어, 윈드실드의 승객측 섹션) 상에 제시될 수도 있다. 다른 예에서, 존들은 윈도우 상에 바들 (예를 들어, 수평 또는 수직 바들) 로서 제시될 수도 있다. 예를 들어, 제 1 존은 윈도우 (예를 들어, 윈드실드) 상의 중간 수평 바 상에 제시될 수도 있는 한편, 제 2 존은 윈도우 (예를 들어, 윈드실드) 상의 하위 및 상위 수평 바들 상에 제시될 수도 있다. 일부 구성들에서, 상기 접근들의 조합이 이용될 수도 있다. 예를 들어, 제 1 존은 윈드실드의 운전자측 상에 제시될 수도 있고, 제 2 존은 윈드실드의 승객측 상에 제공될 수도 있으며 제 3 존은 차량 도어 윈도우들 상에 제시될 수도 있다. 다른 변형들이 구현될 수도 있다.
일부 구성들에서, 전자 디바이스 (1651) 는 비동기식 메모리 제어기 및/또는 불-균일 프레임 버퍼 제어기를 포함할 수도 있다. 예를 들어, 멀티-존 렌더러 (1663) 는 비동기식 메모리 제어기 및/또는 불-균일 프레임 버퍼 제어기를 포함하고/하거나 이들에 커플링될 수도 있다. 멀티-존 렌더러 (1663) 는 본원에 설명된 바와 같은 비동기식 메모리 제어기 및/또는 불-균일 프레임 버퍼 제어기와 연관되어 설명된 동작들, 기능들 및/또는 접근들에 따라 다수의 존들을 렌더링할 수도 있거나 또는 렌더링하지 않을 수도 있다. 예를 들어, 전자 디바이스 (1651) 는 본원에 설명된 바와 같이 단일-패스 멀티-LOD 렌더링을 수행할 수도 있거나 또는 수행하지 않을 수도 있다.
전자 디바이스 (1651) 는 하나 이상의 이미지들 (예를 들어, 디지털 이미지들, 이미지 프레임들, 비디오 등) 을 획득할 수도 있다. 하나 이상의 이미지들은 하나 이상의 사용자들의 이미지들 및/또는 장면 (예를 들어, 하나 이상의 객체들 및/또는 배경) 일 수도 있다. 예를 들어, 전자 디바이스 (1651) 는 하나 이상의 이미지 센서들 (1653) 및/또는 광학 시스템(들)(1655) 의 시야 내에 위치되는 객체들의 이미지들을 이미지 센서(들)(1653) 상으로 포커싱하는 하나 이상의 광학 시스템들 (1665)(예를 들어, 렌즈들) 을 포함할 수도 있다. 일부 구성들에서, 이미지 센서(들)(1653) 은 하나 이상의 이미지들을 캡처할 수도 있다. 이미지 센서(들)(1653) 및/또는 광학 시스템(들)(1655) 은 프로세서 (1661) 에 커플링되고/되거나 이에 의해 제어될 수도 있다.
부가적으로 또는 대안으로, 전자 디바이스 (1651) 는 다른 디바이스 (예를 들어, 전자 디바이스 (1651) 에 커플링된 외부 이미지 센서, 네트워크 서버, 트래픽 카메라, 드롭 카메라, 자동차 카메라, 웹 카메라, 등) 로부터 하나 이상의 이미지들을 요청 및/또는 수신할 수도 있다. 일부 구성들에서, 전자 디바이스 (1651) 는 통신 인터페이스 (1657) 를 통해 하나 이상의 이미지들을 요청 및/또는 수신할 수도 있다. 예를 들어, 전자 디바이스 (1651) 는 카메라 (예를 들어, 이미지 센서 (1653) 및/또는 광학 시스템 (1655)) 를 포함하거나 포함하지 않을 수도 있고, 원격 디바이스로부터 이미지들을 수신할 수도 있다.
일부 구성들에서, 전자 디바이스 (1651) 에 포함된 하나 이상의 이미지 센서들 (1653) 및/또는 전자 디바이스 (1651) 에 커플링된 하나 이상의 다른 이미지 센서들은 사용자의 하나 이상의 이미지들을 캡처하도록 배향될 수도 있다. 예를 들어, 스마트폰은 디스플레이 (예를 들어, 디스플레이 (1673)) 와 동일한 면 상에 장착된 카메라를 포함할 수도 있다. 이 방식에서, 카메라는, 사용자가 디스플레이를 보고 있는 동안 사용자의 이미지들을 캡처할 수도 있다. 다른 예에서, 카메라는 사용자 (예를 들어, 운전자) 의 이미지들을 캡처하도록 차량의 콘솔 및/또는 스티어링 휠에 장착될 수도 있다.
부가적으로 또는 대안으로, 전자 디바이스 (1651) 에 포함된 하나 이상의 이미지 센서들 (1653) 및/또는 전자 디바이스 (1651) 에 커플링된 하나 이상의 다른 이미지 센서들은 풍경을 캡처하도록 배향될 수도 있다. 예를 들어, 하나 이상의 카메라들은 스마트 폰의 뒷면에 장착될 수도 있다. 다른 예에서, 하나 이상의 카메라들은 차량의 외부에 장착될 수도 있다. 일부 구성들에서, 전자 디바이스 (1651) 는 증강 현실 (AR) 애플리케이션들, 가상 현실 (VR) 애플리케이션들 및/또는 다른 애플리케이션들 (예를 들어, 전망뷰 시각화, 운전자 보조, 진보된 운전자 보조 시스템들 (ADAS), 등) 에서 풍경의 이미지들을 이용할 수도 있다.
일부 구성들에서, 이미지 센서(들)(1653) 에 의해 캡처되고/되거나 통신 인터페이스(들)(1657) 을 통해 수신된 이미지(들)은 아이 추적을 위해 전자 디바이스 (1651) 에 의해 이용될 수도 있다. 예를 들어, 프로세서 (1661) 는 아이 추적기 (1665) 를 포함 및/또는 구현할 수도 있다. 아이 추적기 (1665) 는 하나 이상의 사용자들의 눈(들)의 시선 (예를 들어, 주시 방향) 을 추적할 수도 있다. 예를 들어, 아이 추적기 (1665) 는 이미지(들)에 하나 이상의 사용자들의 눈(들)을 위치시킬 수도 있고 사용자(들)의 시선 (예를 들어, 주시 방향) 을 추정할 수도 있다. 예를 들어, 아이 추적기 (1665) 는, 사용자가 디스플레이 (예를 들어, 디스플레이 (1673) 또는 외부 디스플레이) 상에서 보고 있는 곳 및/또는 사용자가 디스플레이에 의해 제시된 이미지 상에서 보고 있는 곳을 결정 (예를 들어, 추정) 할 수도 있다. 다시 말해, 아이 추적기 (1665) 는, 사용자의 시선이 이미지 및/또는 디스플레이에 대해 지향되는 곳을 결정 (예를 들어, 추정) 할 수도 있다. 일부 구성들에서, 아이 추적기 (1665) 는 도 3 과 연관되어 전술된 아이 추적기 (326) 와 유사하게 아이 추적을 수행할 수도 있다.
일부 구성들에서, 멀티-존 렌더러 (1663) 는 아이 추적에 기초하여 이미지의 하나 이상의 존들을 렌더링할 수도 있다. 이미지의 존들은 상이한 레벨들의 디테일을 가질 수도 있다. 예를 들어, 멀티-존 렌더러 (1663) 는 상이한 레벨들의 디테일을 갖는 다수의 존들을 렌더링할 수도 있고, 여기서 최고 레벨의 디테일을 갖는 존은 사용자가 현재 보고 있는 영역에서 렌더링된다. 일부 구성들에서, 이것은 포비에이티드 렌더링으로서 지칭될 수도 있다. 아이 추적기 (1665) 는 아이 추적 정보를 생성할 수도 있다. 아이 추적 정보는, 사용자의 시선이 디스플레이 및/또는 이미지에 대해 지향되는 (예를 들어, 사용자들의 시선이 지향되는) 곳을 나타낼 수도 있다. 일부 구성들에서, 프로세서 (1661) 및/또는 프로세서 (1661) 는 아이 추적 정보에 기초하여 하나 이상의 LOD 파라미터들을 결정할 수도 있다. LOD 파라미터(들)은 이미지의 하나 이상의 존들에 대해 렌더링될 LOD 를 나타낼 수도 있다. LOD 파라미터(들)은 메모리 (1667) 에 저장될 수도 있다. LOD 파라미터(들)은 프로세서 (1661) 에 의해 프로세싱되고 있는 데이터의 세트 (예를 들어, 드로우 콜) 와 관련하여 비동기식으로 업데이트될 수도 있거나 또는 업데이트되지 않을 수도 있다.
아이 추적기 (1665) 는, 사용자가 이미지의 상이한 부분을 살피도록 시선을 변화시키는 때를 검출할 수도 있다. 본원에 설명된 시스템들 및 방법들은 아이 추적 (예를 들어, 아이 추적 정보 및/또는 LOD 파라미터(들)) 에 기초하여 LOD 렌더링을 변화시킬 수도 있다. 예를 들어, 멀티-존 렌더러 (1663) 는 사용자가 시선을 변화시켜 보는 이미지의 영역에서 LOD 를 증가시킬 수도 있다. 부가적으로 또는 대안으로, 본원에 개시된 시스템들 및 방법들은, 사용자의 시선이 더 이상 지향되지 않는 이미지의 영역에서 LOD 를 감소시킬 수도 있다. 전술된 바와 같이, 상이한 존들은 일부 구성들에서 상이한 윈도우들에 대응할 수도 있다. 멀티-존 렌더러 (1663) 는, 어느 윈도우 상에서 사용자가 보고 있는지에 기초하여 윈도우 (및/또는 윈도우 섹션) 에 대응하는 존을 변화시킬 수도 있다. 예를 들어, 멀티-존 렌더러 (1663) 는 사용자 (예를 들어, 운전자) 가 윈드실드에서 (예를 들어, 이를 통해) 보고 있는 동안 차량의 윈드실드 상에서 고-LOD 존을 렌더링할 수도 있다. 사용자 (예를 들어, 운전자) 가 다른 윈도우를 보는 경우 (예를 들어, 블라인드 스폿을 체크하고/하거나 역으로 운전하도록 턴하는 경우), 멀티-존 렌더러 (1663) 는 사용자가 보고 있는 (예를 들어, 이를 통해) 윈도우 (예를 들어, 사이드 윈도우 및/또는 후방 윈도우) 로 고-LOD 존을 변화시킬 수도 있다.
일부 구성들에서, 아이 추적기 (1665) 는 다수의 사용자들 각각의 하나 이상의 눈 (예를 들어, 운전자의 눈 및 하나 이상의 승객들의 눈) 을 추적할 수도 있다. 본원에 개시된 시스템들 및 방법들은 아이 추적 (예를 들어, 아이 추적 정보 및/또는 LOD 파라미터(들)) 에 기초하여 존 렌더링 (예를 들어, LOD 렌더링) 을 우선순위화할 수도 있다. 일부 구성들에서, 멀티-존 렌더러 (1663) 는 하나의 사용자에 대응하는 존에 대해 (또는 예를 들어, 우선순위 사용자들의 세트에 대응하는 존들에 대해) 더 높은 LOD 를 그리고 하나 이상의 다른 사용자들에 대응하는 하나 이상의 존들에 대해 하나 이상의 더 낮은 LOD들을 제공할 수도 있다. 부가적으로 또는 대안으로, 멀티-존 렌더러 (1663) 는 먼저 하나의 사용자에게 대응하는 존을 먼저 렌더링할 수도 있고 하나 이상의 다른 사용자들에 대응하는 하나 이상의 다른 존들을 (예를 들어, 시퀀스에서) 나중에 렌더링할 수도 있다. 예를 들어, 멀티-존 렌더러 (1663) 는 운전자에 의해 보여지고 있는 이미지의 영역에서 증가된 LOD 를 제공할 수도 있고/있거나 운전자에 의해 보여지고 있는 이미지의 영역에서 이미지를 먼저 렌더링할 수도 있다. 멀티-존 렌더러 (1663) 는 승객에 의해 보여지고 있는 이미지의 영역에서 더 낮은 LOD 를 제공할 수도 있고/있거나 운전자의 그 뒤의 승객에 의해 보여지고 있는 이미지의 영역에서 이미지를 렌더링할 수도 있다. 일부 구성들에서, 우선순위가 미리결정될 수도 있고 (예를 들어, 제조자 및/또는 사용자가 우선순위를 설정할 수도 있고), 사용자 로케이션에 기초할 수도 있고 (예를 들어, 차량 운전자가 최고 우선순위를 얻고 승객(들)이 더 낮은 우선순위를 얻고) 및/또는 사용자 인식에 기초할 수도 있다 (예를 들어, 인식된 사용자가 상위 우선순위를 얻고, 다른 인식된 및/또는 비-인식된 사용자들은 더 낮은 우선순위 또는 우선순위들을 얻는다).
본원에 개시된 시스템들 및 방법들은 윈도우 디스플레이 기술에서 개선들을 제공할 수도 있다. 예를 들어, 차량에는 하나 이상의 윈도우 디스플레이들 (예를 들어, 윈도우 프로젝터(들) 및/또는 윈도우 디스플레이 패널(들)) 이 장착될 수도 있다. 윈도우 디스플레이(들)은 하나 이상의 애플리케이션들에서 동작하도록 구성될 수도 있다. 예를 들어, 차량 윈도우 디스플레이는 운전자에게 운전 방향들을 제시할 수도 있다. 예를 들어, 전자 디바이스 (1651) 는 사이드 스트리트에서 다가올 차례를 나타내는 화살표로 이미지를 렌더링할 수도 있다. 다른 이미지들이 렌더링 및/또는 제시될 수도 있다. 예를 들어, 전자 디바이스 (1651) 는 거리 표지판들, 정지 표지판들, 신호등들, 보행자들, 네비게이션 정보 (예를 들어, 운전 방향들, 지도들, 차량 위치, 목적지, 등), 장애물들, 경고들, 기타 안전 정보 (예를 들어, 전방의 다른 차량과의 거리, 현재 속도에서 충분한 정지 거리가 있는지 여부 등), 차량 정보 (예를 들어, 현재 속도, 연료 부족 표시자, 분당 회전수 (RPM)들, 이동 거리, 온도, 시간, 오일 교환 표시자, 엔진 체크 표시자, 엔진 온도, 온도 경고), 엔터테인먼트 정보 (예를 들어, 라디오 방송국, 음악 트랙 이름, 노래 길이, 재생된 노래 시간, 영화 이름, 영화 지속기간, 영화 재생 시간, 영화 콘텐트, 사진 콘텐트 등) 통신 정보 (예를 들어, 전화 정보, 근거리 통신망 (LAN) 상태, 블루투스 연결성 등) 등을 나타내고/나타내거나 강조하는 표시자(들) 및/또는 하이라이트(들)을 렌더링할 수도 있다.
이미지 콘텐트가 품질 (예를 들어, 더 상세한 지오메트리, 더 높은 레졸루션 텍스처들, 더 큰 디스플레이 영역들 등) 에서 계속해서 증가함에 따라, 매우 상세한 콘텐트를 디스플레이하는 것이 어려울 수도 있다. 이것은 특히, 프로세싱 대역폭 및/또는 전력 효율성 제한들이 관련되는 플랫폼들에 대해 사실일 수도 있다. 상이한 레벨들의 디테일 (예를 들어, 테슬레이팅된 레벨들의 디테일) 을 갖는 상이한 존들을 렌더링하는 것은 리소스들을 렌더링하는 것을 우선순위화하도록 도울 수도 있다. 따라서, 더 많은 디테일이 더 중요한 및/또는 사용자에게 관심 있는 정보에 제공될 수도 있다. 예를 들어, 더 높은 LOD 를 갖는 존은 사용자가 보고 있는 및/또는 볼 것 같은 곳 (예를 들어, 윈드실드의 중간 부분에서, 사용자의 눈이 응시하고 있는 곳, 경고가 디스플레이되고 있는 곳 등) 에서 렌더링될 수도 있다. 이것은, 관심 있는 및/또는 중요한 정보가 더 높은 디테일을 갖고 제시될 때 개선된 경험을 제공할 수도 있다. 부가적으로 또는 대안으로, 사용자가 (예를 들어, 주변 시야에서) 더 적은 디테일을 통지하지 않을 수도 있는 영역들 및/또는 통상적으로 덜 중요한 정보 (예를 들어, 사이드 윈도우) 를 포함하는 영역들은 프로세싱 및/또는 에너지 리소스들을 절감하도록 더 적은 디테일을 갖고 렌더링될 수도 있다.
테슬레이팅된 레벨의 디테일은 픽셀 레졸루션과 상이하다는 것이 주목되어야 한다. 예를 들어, 픽셀 레졸루션은 픽셀 밀도 및/또는 얼마나 많은 픽셀들이 소정의 이미지 (또는 이미지의 영역) 에 전용되는지를 지칭할 수도 있다. 테슬레이팅된 레벨의 디테일은, 미세하게 렌더링된 지오메트리가 어떻게 테슬레이팅 (예를 들어, 세분) 되는지를 지칭할 수도 있다. 예를 들어, 이미지의 영역 및/또는 지오메트리를 렌더링하는데 전용된 더 큰 수의 포인트들, 다각형들 및/또는 라인들은 테슬레이팅된 레벨의 디테일 (LOD) 을 반영할 수도 있다. 부가적으로 또는 대안으로, 상이한 레벨들의 디테일은 상이한 품질 셰이더들에 대응할 수도 있다 (예를 들어, 더 높은 LOD 는 더 높은 품질 셰이더에 대응할 수도 있고, 여기서 더 많은 상세한 및/또는 값비싼 프로세싱이 수행된다). 일부 구성들에서, 픽셀 레졸루션은 테슬레이션 레벨을 제약할 수도 있다는 것이 주목되어야 한다. 예를 들어, 1 픽셀은 100 개의 삼각형들을 필요로 하지 않을 수도 있고; 10x10 타일은 1,000 개의 삼각형들을 필요로 하지 않을 수도 있는 등이다.
일부 구성들에서, 전자 디바이스 (1651) 는 카메라 애플리케이션 및/또는 디스플레이 (1673) 를 포함할 수도 있다. 카메라 애플리케이션이 실행되고 있을 때, 광학 시스템 (1655) 의 시야 내에 위치되는 객체들의 이미지들은 이미지 센서 (1653) 에 의해 캡처될 수도 있다. 이미지 센서 (1653) 에 의해 캡처되고 있는 이미지들은 디스플레이 (1673) 상에 제시될 수도 있다. 일부 구성들에서, 이들 이미지들은, 임의의 시점에서, 광학 시스템 (1655) 의 시야 내에 위치되는 객체들이 디스플레이 (1673) 상에 제시되도록 상대적으로 높은 프레임에서 빠르게 연속적으로 디스플레이될 수도 있다.
전자 디바이스 (1651) 에 예시된 엘리먼트들 중 하나 이상은 선택적일 수도 있다는 것이 주목되어야 한다. 예를 들어, 전자 디바이스 (1651) 에 예시된 엘리먼트들 중 하나 이상이 포함 및/또는 구현되거나 그렇지 않을 수도 있다. 부가적으로 또는 대안으로, 프로세서 (1661) 에 예시된 엘리먼트들 중 하나 이상은 프로세서 (1661) 로부터 분리되어 (예를 들어, 다른 회로에서, 다른 프로세서 상에서, 별개의 전자 디바이스 상에서 등) 구현될 수도 있다. 예를 들어, 이미지 센서 (1653), 광학 시스템 (1655), 통신 인터페이스 (1657), 아이 추적기 (1665) 및/또는 디스플레이 (1673) 는 전자 디바이스 (1651) 상에서 구현되지 않을 수도 있다. 일부 구성들에서, 전자 디바이스 (1651) 는 다른 디바이스로부터 이미지들 및/또는 아이 추적 정보를 수신할 수도 있다. 부가적으로 또는 대안으로, 하나 이상의 디스플레이들은 별개의 디바이스들 상에서 구현될 수도 있다.
일부 구성들에서, 전자 디바이스 (1651) 는 디스플레이 (1673) 상에 사용자 인터페이스 (1675) 를 제시할 수도 있다. 예를 들어, 사용자 인터페이스 (1675) 는 사용자가 전자 디바이스 (1651) 와 상호작용하게 할 수도 있다. 일부 구성들에서, 디스플레이 (1673) 는 (예를 들어, 손가락, 스타일러스 또는 다른 툴에 의해) 물리적 터치로부터 입력을 수신하는 터치스크린일 수도 있다. 부가적으로 또는 대안으로, 전자 디바이스 (1651) 는 다른 입력 인터페이스를 포함하거나 이에 커플링될 수도 있다. 예를 들어, 전자 디바이스 (1651) 는 사용자를 대면하는 카메라를 포함할 수도 있고 사용자 제스처들 (예를 들어, 손 제스처들, 팔 제스처들, 아이 추적, 눈꺼풀 깜박거림 등) 을 검출할 수도 있다. 다른 예에서, 전자 디바이스 (1651) 는 마우스에 커플링될 수도 있고 마우스 클릭을 검출할 수도 있다. 일부 구성들에서는 사용자 입력이 필요하지 않을 수도 있다는 것이 주목되어야 한다.
일부 구성들에서, 전자 디바이스 (1651) 는 선택적으로, 모션 센서 (예를 들어, 자이로스코프(들), 가속계(들), 등) 을 포함할 수도 있다. 예를 들어, 모션 센서는 (예를 들어, 전자 디바이스 (1651) 의) 모션 및/또는 배향을 검출할 수도 있다. 일부 구성들에서, 렌더링되고 있는 이미지는 모션 및/또는 배향 정보에 기초할 수도 있다. 예를 들어, 전자 디바이스 (1651) 는 헤드-장착 디스플레이 (예를 들어, 가상 현실 (VR) 헤드셋, 증강 현실 (AR) 헤드셋, 등), 차량 (예를 들어, 자동차, 드론, 비행기 등), 모바일 디바이스 (예를 들어, 스마트폰) 또는 이미지를 렌더링하기 위해 모션 및/또는 배향 정보를 이용할 수도 있는 다른 디바이스일 수도 있다. 예를 들어, 모션 및/또는 배향 정보는 렌더링된 장면에서 일반적인 뷰잉 방향을 나타낼 수도 있다. 전자 디바이스 (1651) 는 일부 구성들에서 아이 추적 정보에 추가하여 또는 이로부터의 대안으로 이 뷰잉 정보에 기초하여 이미지를 렌더링할 수도 있다.
도 17 은 다수의 존들을 렌더링하는 방법 (1700) 을 예시하는 흐름도이다. 방법 (1700) 은 도 16 과 연관되어 설명된 전자 디바이스 (1651) 에 의해 수행될 수도 있다.
전자 디바이스 (1651) 는 이미지의 제 1 존을 렌더링할 수도 있다 (1702). 이것은 도 16 과 연관되어 전술된 바와 같이 달성될 수도 있다. 예를 들어, 전자 디바이스 (1651) 는 이미지의 제 1 존에 대응하는 지오메트리 페칭 (예를 들어, 정점 페칭), 정점 셰이딩, 테슬레이션 제어 셰이딩, 테슬레이션, 테슬레이션 평가 셰이딩, 지오메트리 셰이딩, 타일링, 래스터화 및/또는 프래그먼트 셰이딩 중 하나 이상을 수행할 수도 있다.
전자 디바이스 (1651) 는 이미지의 제 2 존을 렌더링할 수도 있다 (1704). 이것은 도 16 과 연관되어 전술된 바와 같이 달성될 수도 있다. 예를 들어, 전자 디바이스 (1651) 는 이미지의 제 2 존에 대응하는 지오메트리 페칭 (예를 들어, 정점 페칭), 정점 셰이딩, 테슬레이션 제어 셰이딩, 테슬레이션, 테슬레이션 평가 셰이딩, 지오메트리 셰이딩, 타일링, 래스터화 및/또는 프래그먼트 셰이딩 중 하나 이상을 수행할 수도 있다. 제 1 존은 제 2 존보다 더 높은 테슬레이팅된 레벨의 디테일을 가질 수도 있다. 예를 들어, 제 1 존은 제 2 존에 대한 테슬레이션 설정보다 더 높은 테슬레이션 설정 (예를 들어, 더 높은 지오메트리 밀도) 을 가질 수도 있다.
전자 디바이스 (1651) 는 적어도 하나의 차량 윈도우 상에 제 1 존 및 제 2 존을 제시할 수도 있다 (1706). 이것은 도 16 과 연관되어 전술된 바와 같이 달성될 수도 있다. 예를 들어, 제 1 존 및 제 2 존은 윈도우 (예를 들어, 윈드실드) 의 별개의 섹션들 상에 및/또는 상이한 윈도우들 상에 제시될 수도 있다.
도 18 은 윈도우 디스플레이들의 일부 예들 (1877a-b) 을 예시하는 다이어그램이다. 구체적으로, 실시예 A (1877a) 는 윈도우 A (1879a)(예를 들어, 윈드실드) 를 예시한다. 실시예 A (1877a) 에서, 프로젝터 (1881) 가 이미지를 윈도우 A (1879a) 상으로 프로젝팅하기 위해 장착된다. 예를 들어, 하나 이상의 프로젝터들 (1881) 은 차량의 대시보드, 도어, 천장 및/또는 벽들 (예를 들어, 프레이밍) 에 장착될 수도 있다. 일부 구성들에서, 단일의 프로젝터 (1881) 는 이미지들을 하나 이상의 윈도우들 상으로 프로젝팅하도록 구성될 수도 있다. 다른 구성들에서, 다수의 프로젝터들 (1881) 은 이미지들을 하나 이상의 윈도우들 상으로 프로젝팅하도록 구성될 수도 있다. 일부 구성들에서, 프로젝터 (1881) 는 착탈형 디바이스 및/또는 모바일 디바이스에 장착될 수도 있다.
실시예 B (1877b) 는 윈도우 B (1879b)(예를 들어, 윈드실드) 를 예시한다. 실시예 B (1877b) 에서, 통합형 디스플레이 (1883) 가 윈도우 B (1879) 에 부착될 수도 있다. 예를 들어, 통합형 디스플레이 (1883) 는 투명 또는 반투명할 수도 있다. 통합형 디스플레이 (1883) 는 윈도우 B (1879b) 상에 이미지들을 제시할 수도 있다. 예를 들어, 통합형 디스플레이 (1883) 는 LCD 패널, OLED 패널 등일 수도 있다. 일부 구성들에서, 단일의 프로젝터 통합형 디스플레이 (1883) 는 하나 이상의 윈도우들 상에 이미지들을 제시하도록 구성될 수도 있다. 다른 구성들에서, 다수의 통합형 디스플레이들 (1883) 은 하나 이상의 윈도우들 상에 이미지들을 제시하도록 구성될 수도 있다. 윈도우 프로젝터들 및/또는 통합형 디스플레이들은 많은 종류들의 윈도우들 (예를 들어, 차량, 빌딩, 비행기, 보트, 트램, 기차 등에서의 윈도우(들)) 에서 구현될 수도 있다는 것이 주목되어야 한다.
도 19 는 윈도우 (1979) 상의 존들 (1985a-b) 의 일 예를 예시하는 다이어그램이다. 이 예에서, 존 A (1985a) 는 윈도우 (1979)(예를 들어, 윈드실드) 의 사이드 섹션 (예를 들어, 좌측 섹션) 이고 존 B (1985b) 는 윈도우의 다른 사이드 섹션 (예를 들어, 우측 섹션) 이다. 윈도우 (1979) 가 차량에서의 윈드실드라고 가정하면, 예를 들어 전자 디바이스 (1651)(예를 들어, 멀티-존 렌더러 (1663)) 는 운전자 측에 대응하는 존 (예를 들어, 존 A (1985a)) 에서 더 높은 레벨의 디테일을 렌더링할 수도 있다. 더 낮은 레벨의 디테일은 승객 측에 대응하는 존 (예를 들어, 존 B (1985b)) 에서 렌더링될 수도 있다. 이 방식에서, 운전자는 운전자가 통상적으로 보는 영역에서 이미지의 더 높은 레벨의 디테일을 볼 수도 있다. 상이한 수의 존들이 렌더링될 수도 있다는 것이 주목되어야 한다. 부가적으로 또는 대안으로, 존들 (1985a-b) 은 각각 윈도우 (1979) 의 절반 또는 상이한 비율들 (예를 들어, 70% 대 30%) 을 차지할 수도 있다.
도 20 은 윈도우 (2079) 상의 존들 (2085a-c) 의 다른 예를 예시하는 다이어그램이다. 이 예에서, 존 A (2085a) 은 윈도우 (2079)(예를 들어, 윈드실드) 의 중간 부분을 가로지르는 수평 바이다. 존 B (2085b) 는 존 A (2085a) 를 경계 짓는 2 개의 수평 바들을 포함하고 존 C (2085c) 는 존 B (2085b) 를 경계 짓는 2 개의 수평 바들을 포함한다. 윈도우 (2079) 가 차량에서의 윈드실드라고 가정하면, 예를 들어 전자 디바이스 (1651)(예를 들어, 멀티-존 렌더러 (1663)) 는 존 A (2085a) 에서 더 높은 레벨의 디테일을 렌더링할 수도 있다. 더 낮은 레벨의 디테일은 존 B (2085b) 에서 렌더링될 수도 있다. 더욱 더 낮은 레벨의 디테일은 존 C (2085c) 에서 렌더링될 수도 있다. 이 방식에서, 운전자는, 윈드실드의 폭 (span) 을 살펴보는 경우 운전자가 보는 영역에서 이미지의 더 높은 레벨의 디테일을 볼 수도 있다. 상이한 수의 존들이 렌더링될 수도 있다는 것이 주목되어야 한다. 부가적으로 또는 대안으로, 존들 (2085a-c) 은 각각 윈도우 (2079) 의 동일한 또는 상이한 비율들 (예를 들어, 50%/30%/20%) 을 차지할 수도 있다.
도 21 은 다수의 윈도우들 (2179a-e) 상의 존들 (2185a-c) 의 다른 예를 예시하는 다이어그램이다. 이 예에서, 존 A (2185a) 는 윈도우 A (2179a) (예를 들어, 윈드실드) 상에서 렌더링된다. 존 B (2185b) 는 윈도우 B (2179b) 및 윈도우 C (2179c) (예를 들어, 전방 좌측 및 우측 윈도우들) 상에서 렌더링된다. 존 C (2185c) 는 윈도우 D (2179d) 및 윈도우 E (2179e) (예를 들어, 후방 좌측 및 우측 윈도우들) 상에서 렌더링된다. 윈도우 A (2179) 가 차량에서의 윈드실드라고 가정하면, 예를 들어 전자 디바이스 (1651)(예를 들어, 멀티-존 렌더러 (1663)) 는 존 A (2185a) 에서 더 높은 레벨의 디테일을 렌더링할 수도 있다. 더 낮은 레벨의 디테일은 존 B (2185b) 에서 렌더링될 수도 있다. 더욱 더 낮은 레벨의 디테일은 존 C (2185c) 에서 렌더링될 수도 있다. 이 방식에서, 운전자는, 윈드실드를 살펴보는 경우 운전자가 보는 영역에서 더 높은 레벨의 디테일의 이미지를 볼 수도 있다. 상이한 구성의 존들 및/또는 상이한 수의 존들이 렌더링될 수도 있다는 것이 주목되어야 한다. 예를 들어, 존 C (2185c)(또는 다른 존) 는 후방 윈도우 상에서 렌더링될 수도 있다.
도 22 는 다수의 존들을 렌더링하는 방법 (2200) 의 더 많은 특정 구성을 예시하는 흐름도이다. 방법 (2200) 은 도 16 과 연관되어 설명된 전자 디바이스 (1651) 에 의해 수행될 수도 있다.
전자 디바이스 (1651) 는 아이 추적을 수행할 수도 있다 (2202). 이것은 도 3, 도 5 및 도 16 중 하나 이상과 연관되어 설명된 바와 같이 달성될 수도 있다. 예를 들어, 전자 디바이스 (1651) 는 사용자 (예를 들어, 하나 이상의 사용자들) 의 하나 이상의 이미지들을 캡처할 수도 있다. 전자 디바이스 (1651) 는 이미지(들)에서 하나 이상의 사용자들의 하나 이상의 눈들을 식별할 수도 있다. 전자 디바이스 (1651) 는 그 후, 하나 이상의 사용자들의 눈(들)이 하나 이상의 디스플레이들 (예를 들어, 디스플레이 (1673)) 및/또는 디스플레이(들) 상의 이미지(들) 에 대해 지향되는 곳을 결정할 수도 있다.
전자 디바이스 (1651) 는 아이 추적에 기초하여 이미지의 제 1 존을 렌더링할 수도 있다 (2204). 이것은 도 1 내지 도 5 및 도 8 내지 도 17 중 하나 이상과 연관되어 설명된 바와 같이 달성될 수도 있다. 예를 들어, 전자 디바이스 (1651) 는 이미지의 제 1 존에 대응하는 지오메트리 페칭 (예를 들어, 정점 페칭), 정점 셰이딩, 테슬레이션 제어 셰이딩, 테슬레이션, 테슬레이션 평가 셰이딩, 지오메트리 셰이딩, 타일링, 래스터화 및/또는 프래그먼트 셰이딩 중 하나 이상을 수행할 수도 있다. 제 1 존의 로케이션은 아이 추적에 기초할 수도 있다. 예를 들어, 전자 디바이스 (1651) 는 사용자의 눈(들)이 지향되는 로케이션 주변의 이미지의 섹션으로서 제 1 존을 확립할 수도 있다. 일부 구성들에서, 제 1 존은 사용자가 보고 있는 디스플레이의 포인트 (예를 들어, 이미지) 상에 거의 센터링된 원형 영역 (또는 다른 형상의 영역) 일 수도 있다. 다른 구성들에서, 제 1 존은 사용자가 보고 있는 윈도우에 대응하는 이미지의 전체 영역일 수도 있다.
전자 디바이스 (1651) 는 아이 추적에 기초하여 이미지의 제 2 존을 렌더링할 수도 있다 (2206). 이것은 도 1 내지 도 5 및 도 8 내지 도 17 중 하나 이상과 연관되어 설명된 바와 같이 달성될 수도 있다. 예를 들어, 전자 디바이스 (1651) 는 이미지의 제 2 존에 대응하는 지오메트리 페칭 (예를 들어, 정점 페칭), 정점 셰이딩, 테슬레이션 제어 셰이딩, 테슬레이션, 테슬레이션 평가 셰이딩, 지오메트리 셰이딩, 타일링, 래스터화 및/또는 프래그먼트 셰이딩 중 하나 이상을 수행할 수도 있다. 제 1 존은 제 2 존보다 더 높은 테슬레이팅된 레벨의 디테일을 가질 수도 있다. 예를 들어, 제 1 존은 제 2 존에 대한 테슬레이션 설정보다 더 높은 테슬레이션 설정 (예를 들어, 더 높은 지오메트리 밀도) 을 가질 수도 있다. 제 2 존의 로케이션은 아이 추적에 기초할 수도 있다. 일부 구성들에서, 전자 디바이스 (1651) 는 제 1 존 주변의 이미지의 섹션으로서 제 2 존을 확립할 수도 있다. 예를 들어, 제 2 존은 제 1 존을 둘러싸는 원형 영역 (또는 다른 형상의 영역) 일 수도 있다. 다른 구성들에서, 제 2 존은 사용자가 보고 있지 않는 윈도우에 대응하는 이미지의 영역일 수도 있다. 또 다른 구성들에서, 제 2 존은 제 1 존을 제외한 전체 이미지일 수도 있다. 더 많은 수의 존들이 렌더링될 수도 있다는 것이 주목되어야 한다. 존들은 오버랩할 수도 있거나 또는 오버랩하지 않을 수도 있다. 일부 구성들에서, 존 렌더링은 도 16 과 연관되어 설명된 바와 같이 우선순위화될 수도 있다.
전자 디바이스 (1651) 는 적어도 하나의 차량 윈도우 상에 제 1 존 및 제 2 존을 제시할 수도 있다 (2208). 이것은 도 16 내지 도 21 중 하나 이상과 연관되어 전술된 바와 같이 달성될 수도 있다. 예를 들어, 제 1 존 및 제 2 존은 윈도우 (예를 들어, 윈드실드) 의 별개의 섹션들 상에 및/또는 상이한 윈도우들 상에 제시될 수도 있다.
도 23 은 윈도우 (2379) 상의 존들 (2385a-c) 의 다른 예를 예시하는 다이어그램이다. 이 예에서, 존 A (2385a) 는, 사용자가 아이 추적에 기초하여 보고 있는 윈도우 (2379)(예를 들어, 윈드실드) 의 원형 영역이다. 존 B (2385b) 는 존 A (2385a) 를 둘러싸는 원형 영역이다. 존 C (2385c) 는 존 A (2385a) 및 존 B (2385b) 을 포함하지 않는 윈도우 (2379) 의 영역이다. 윈도우 (2379) 가 차량에서의 윈드실드라고 가정하면, 예를 들어 전자 디바이스 (1651)(예를 들어, 멀티-존 렌더러 (1663)) 는 존 A (2385a) 에서 더 높은 레벨의 디테일을 렌더링할 수도 있다. 더 낮은 레벨의 디테일은 존 B (2385b) 에서 렌더링될 수도 있다. 더욱 더 낮은 레벨의 디테일은 존 C (2385c) 에서 렌더링될 수도 있다. 이 방식에서, 운전자는, 운전자가 현재 보고 있는 영역 (윈드실드 상의 어느 곳이든) 에서 이미지의 더 높은 레벨의 디테일을 볼 수도 있다. 상이한 수의 존들이 렌더링될 수도 있다는 것이 주목되어야 한다.
도 24 는 전자 디바이스 (2487) 내에 포함될 수도 있는 소정 컴포넌트들을 예시한다. 전자 디바이스 (2487) 는 카메라, 비디오 캠코더, 디지털 카메라, 셀룰러 폰, 스마트 폰, 컴퓨터 (예를 들어, 데스크톱 컴퓨터, 랩톱 컴퓨터, 등), 태블릿 디바이스, 미디어 플레이어, 텔레비전, 차량, 헤드셋 (예를 들어, 가상 현실 헤드셋, 증강 현실 헤드셋), 헤드-장착 디스플레이, 퍼스널 카메라, 액션 카메라, 방범 카메라, 장착 카메라, 접속형 카메라, 로봇, 에어크래프트, 드론, 무인 항공기 (UVA), 헬스케어 장비, 게이밍 콘솔, 개인 휴대 정보 단말 (PDA)들, 셋-톱 박스 등일 수도 있다 (또는 이들 내에 포함될 수도 있다). 전자 디바이스 (2487) 는 본원에 설명된 전자 디바이스들 (102, 302, 866, 902, 1066, 1102, 1266, 1302, 1466, 1502, 1651) 중 하나 이상에 따라 구현될 수도 있다.
전자 디바이스 (2487) 는 프로세서 (2407) 를 포함한다. 프로세서 (2407) 은 범용 단일칩 또는 다중칩 마이크로프로세서 (예를 들어, ARM), 특수 목적용 마이크로프로세서 (예를 들어, 디지털 신호 처리기 (DSP)), 마이크로제어기, 프로그램가능 게이트 어레이 등일 수도 있다. 프로세서 (2407) 는 중앙 처리 장치 (CPU) 및/또는 VLIW 회로 (예를 들어, GPU) 로서 지칭될 수도 있다. 프로세서 (2407) 는 본원에 설명된 VLIW 회로들 (104, 304, 868, 904, 1068, 1104, 1268, 1304, 1468, 1504) 및/또는 프로세서들 (324, 1015, 1124, 1661) 중 하나 이상에 따라 구현될 수도 있다. 전자 디바이스 (2487) 에 단지 단일 프로세서 (2407) 만이 도시되었지만, 대안의 구성에서, 프로세서들의 조합 (예를 들어, ARM 및 DSP, CPU 및 GPU, 등) 이 사용될 수 있다.
전자 디바이스 (2487) 는 또한, 메모리 (2489) 를 포함한다. 메모리 (2489) 는 전자 정보를 저장할 수 있는 임의의 전자 컴포넌트일 수도 있다. 메모리 (2489) 는 랜덤 액세스 메모리 (RAM), 판독-전용 메모리 (ROM), 자기 디스크 저장 매체, 광학 저장 매체, RAM의 플래시 메모리 디바이스, 프로세서와 함께 포함된 온-보드 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들 등, 및 이들의 조합을 포함하는 것으로서 구현될 수도 있다. 메모리 (2489) 는 본원에 설명된 메모리들 (110, 114, 310, 314, 803, 805, 910, 914, 1003, 1005, 1110, 1114, 1203, 1205, 1310, 1314, 1403, 1405, 1510, 1514, 1667) 중 하나 이상에 따라 구현될 수도 있다.
데이터 (2493a) 및 명령들 (2491a) 은 메모리 (2489) 에 저장될 수도 있다. 명령들 (2491a) 은 프로세서 (2407) 에 의해 실행 가능하여, 본원에 설명된 방법들 (200, 500, 600, 1700, 2200) 중 하나 이상을 구현할 수도 있다. 명령들 (2491a) 을 실행하는 것은 메모리 (2489) 에 저장되는 데이터 (2493a) 의 사용을 수반할 수도 있다. 프로세서 (2407) 가 명령들 (2491) 을 실행하는 경우, 명령들 (2491b) 의 여러 부분들이 프로세서 (2407) 상로 로딩될 수도 있고, 데이터 (2493b) 의 다양한 피스들이 프로세서 (2407) 상로 로딩될 수도 있다.
전자 디바이스 (2487) 는 또한, 전자 디바이스 (2487) 로 신호들의 송신 및 이로부터의 신호들의 수신을 허용하도록 송신기 (2497) 및 수신기 (2499) 를 포함할 수도 있다. 송신기 (2497) 및 수신기 (2499) 는 집합적으로 트랜시버 (2401) 로서 지칭될 수도 있다. 하나 또는 다수의 안테나들 (2409a-b) 은 트랜시버 (2401) 에 전기적으로 커플링될 수도 있다. 전자 디바이스 (2487) 는 또한, (도시되지 않은) 다수의 송신기들, 다수의 수신기들, 다수의 트랜시버들 및/또는 추가적인 안테나들을 포함할 수도 있다.
전자 디바이스 (2487) 는 디지털 신호 프로세서 (DSP)(2403) 를 포함할 수도 있다. 전자 디바이스 (2487) 는 또한, 통신 인터페이스 (2405) 를 포함할 수도 있다. 통신 인터페이스 (2405) 는 하나 이상의 종류들의 입력 및/또는 출력을 가능하게 할 수도 있다. 예를 들어, 통신 인터페이스 (2405) 는 전자 디바이스 (2487) 에 다른 디바이스들을 연결하는 하나 이상의 포트들 및/또는 통신 디바이스들을 포함할 수도 있다. 부가적으로 또는 대안으로, 통신 인터페이스 (2405) 는 하나 이상의 다른 인터페이스들 (예를 들어, 터치스크린, 키패드, 키보드, 마이크로폰, 카메라, 등) 을 포함할 수도 있다. 예를 들어, 통신 인터페이스 (2405) 는 사용자가 전자 디바이스 (2487) 와 상호작용하게 할 수도 있다.
전자 디바이스 (2487) 의 다양한 컴포넌트들은 하나 이상의 버스들에 의해 함께 커플링될 수도 있고, 이 버스들은 전력 버스, 제어 신호 버스, 상태 신호 버스, 데이터 버스 등을 포함할 수도 있다. 명확함을 위해, 다양한 버스들이 도 24 에서 버스 시스템 (2495) 으로서 예시된다.
용어 "결정하기" 는 광범위한 작동들을 망라하므로, "결정하기" 는 계산하기, 연산하기, 프로세싱하기, 도출하기, 조사하기, 검색하기 (예를 들어, 테이블, 데이터베이스, 또는 다른 데이터 구조에서 검색하기), 확인하기 등을 포함할 수 있다. 또한, "결정하기" 는 수신하기 (예를 들어, 정보 수신하기), 액세스하기 (예를 들어, 메모리 내의 데이터에 액세스하기) 등을 포함할 수도 있다. 또한, "결정하기" 는 해결하기, 선택하기, 고르기, 확립하기 등을 포함할 수 있다.
구절 "~에 기초하는" 은 다르게 명백히 명시되지 않는 한 "단지 ~에만 기초하는" 을 의미하지 않는다. 다시 말해, 구절 "~에 기초하는" 은 "단지 ~에만 기초하는" 및 "적어도 ~에 기초하는" 양자 모두를 설명한다.
용어 "프로세서"는 범용 프로세서, 중앙 처리 장치 (CPU), 마이크로프로세서, 디지털 신호 프로세서 (DSP), 그래픽 프로세싱 유닛 (GPU), 제어기, 마이크로제어기, 상태 머신 등을 망라하도록 광범위하게 해석되어야 한다. 일부 상황 하에서, "프로세서"는 주문형 집적 회로 (ASIC), 프로그래머블 로직 디바이스 (PLD), 필드 프로그래머블 게이트 어레이 (FPGA) 등을 지칭할 수도 있다. 용어 "프로세서" 는 컴퓨팅 디바이스들의 조합, 예를 들어 DSP 와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 연관되어 하나 이상의 마이크로프로세서들, CPU 와 GPU 의 조합 또는 임의의 다른 그러한 구성을 지칭할 수도 있다.
용어 "메모리"는 전자 정보를 저장할 수 있는 임의의 전자 컴포넌트를 망라하도록 광범위하게 해석되어야 한다. 용어 메모리는 다양한 유형들의 프로세서-판독가능 매체, 예컨대 랜덤 액세스 메모리 (RAM), 판독-전용 메모리 (ROM), 비휘발성 랜덤 액세스 메모리 (NVRAM), 프로그래머블 판독-전용 메모리 (PROM), 소거 가능한 프로그래머블 판독-전용 메모리 (EPROM), 전기적으로 소거가능한 PROM (EEPROM), 플래시 메모리, 자기 또는 광학 데이터 스토리지, 레지스터 등을 지칭할 수도 있다. 메모리는, 프로세서가 이 메모리로부터 정보를 판독하고/하거나 이 메모리로 정보를 기입할 수 있다면, 프로세서와 전자적으로 통신하고 있다고 말해진다. 프로세서에 일체형인 메모리는 프로세서와 전자적으로 통신한다.
용어, "명령들" 및 "코드"는 임의의 유형의 컴퓨터 판독가능 명령문(들)을 포함하도록 광범위하게 해석되어야 한다. 예를 들어, "명령들" 및 "코드"의 용어들은 하나 이상의 프로그램들, 루틴들, 서브-루틴들, 함수들, 프로시저들 등을 가리킬 수도 있다. "명령들" 및 "코드" 는 단일의 컴퓨터 판독가능 명령문 또는 많은 컴퓨터 판독가능 명령문을 포함할 수도 있다.
본원에서 설명된 기능들은 하드웨어에 의해 실행되는 소프트웨어 또는 펌웨어에서 구현될 수도 있다. 이 기능들은 컴퓨터 판독가능 매체 상에 하나 이상의 명령들로서 저장될 수도 있다. 용어 "컴퓨터 판독가능 매체" 또는 "컴퓨터 프로그램 제품"은 컴퓨터 또는 프로세서에 의해 액세스될 수 있는 임의의 유형의 저장 매체를 지칭한다. 비제한적인 예로서, 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장 디바이스, 자기 디스크 저장 디바이스 또는 다른 자기 저장 디바이스, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 반송 또는 저장하는데 사용될 수 있으며 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 본원에서 사용된 디스크 (disk) 와 디스크 (disc) 는, 컴팩트 디스크 (CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크, 및 블루-레이® 디스크를 포함하며, 여기서 디스크 (disk) 들은 통상 자기적으로 데이터를 재생하는 반면, 디스크 (disc) 들은 레이저들을 이용하여 광학적으로 데이터를 재생한다. 컴퓨터 판독가능 매체는 유형적이고 비-일시적일 수도 있다는 것이 주목되어야 한다. 용어 "컴퓨터 판독가능 제품" 은 컴퓨팅 디바이스 또는 프로세서에 의해 실행, 프로세싱, 또는 컴퓨팅될 수도 있는 코드 또는 명령들 (예를 들어, "프로그램") 과 조합하는 컴퓨팅 디바이스 또는 프로세서를 지칭한다. 본원에서 사용된 바와 같은 용어 "코드" 는 소프트웨어, 명령들, 코드, 또는 컴퓨팅 디바이스나 프로세서에 의해 실행될 수 있는 데이터를 지칭할 수도 있다.
소프트웨어 또는 명령들은 또한, 송신 매체를 통해 송신될 수도 있다. 예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 회선 (DSL), 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들을 사용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 송신되면, 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 무선, 및 마이크로파와 같은 무선 기술들은 송신 매체의 정의 내에 포함된다.
본원에 개시된 방법들은 설명된 방법을 달성하기 위한 하나 이상의 단계들 또는 액션들을 포함한다. 방법 단계들 및/또는 액션들은 청구항들의 범위를 벗어나지 않으면서 서로 상호 교환될 수도 있다. 다시 말해, 설명된 방법들의 적절한 동작을 위해 단계들 또는 액션들의 특정한 순서가 요구되지 않는다면, 특정한 단계들 및/또는 액션들의 순서 및/또는 사용은 청구항들의 범위를 벗어나지 않으면서 수정될 수도 있다.
또한, 본원에서 설명된 방법들 및 기법들을 수행하기 위한 모듈들 및/또는 다른 적합한 수단들은 다운로드될 수 있고/있거나 디바이스에 의해 다르게 획득될 수도 있음을 주지해야 한다. 예를 들어, 본원에서 설명된 방법들을 수행하기 위한 수단의 전송을 용이하게 하기 위해 서버에 디바이스가 커플링될 수도 있다. 대안으로, 본원에서 설명된 다양한 방법들은 저장 수단 (예를 들어, 랜덤 액세스 메모리 (RAM), 판독 전용 메모리 (ROM), 컴팩트 디스크 (CD) 또는 플로피디스크 등과 같은 물리적 저장 매체) 을 통해 제공될 수 있으므로, 저장 수단을 디바이스에 커플링 또는 제공 시에, 디바이스는 다양한 방법들을 획득할 수도 있다.
청구항들은 상기에서 예시된 정확한 구성 및 컴포넌트들로 제한되지 않는 것으로 이해되어야 한다. 청구 범위를 벗어나지 않으면서, 본원에서 설명된 시스템들, 방법들 및 장치들의 배치, 동작 및 세부사항들에서 다양한 수정들, 변경들 및 변형들이 행해질 수도 있다.

Claims (30)

  1. 전자 디바이스로서,
    이미지의 제 1 존을 렌더링하고;
    상기 이미지의 제 2 존을 렌더링하는 것으로서, 상기 제 1 존은 상기 제 2 존보다 더 높은 테슬레이팅된 (tessellated) 레벨의 디테일을 갖는, 상기 이미지의 제 2 존을 렌더링하며;
    상기 제 1 존 및 상기 제 2 존을 적어도 하나의 차량 윈도우 상에 제시하도록
    구성된 프로세서를 포함하는, 전자 디바이스.
  2. 제 1 항에 있어서,
    상기 전자 디바이스는 적어도 하나의 디스플레이를 포함하고,
    상기 프로세서는 상기 제 1 존 및 상기 제 2 존을 상기 적어도 하나의 디스플레이로 전송하여 상기 제 1 존 및 상기 제 2 존을 제시하도록 구성되는, 전자 디바이스.
  3. 제 2 항에 있어서,
    상기 적어도 하나의 디스플레이는 윈도우 프로젝터 또는 통합형 윈도우 디스플레이 패널인, 전자 디바이스.
  4. 제 1 항에 있어서,
    상기 프로세서는 상기 제 1 존을 제 1 윈도우 상에 제시하고 상기 제 2 존을 제 2 윈도우 상에 제시하도록 구성되는, 전자 디바이스.
  5. 제 4 항에 있어서,
    상기 제 1 윈도우는 전방 윈드실드이고 상기 제 2 윈도우는 차량의 다른 윈도우인, 전자 디바이스.
  6. 제 1 항에 있어서,
    상기 프로세서는 상기 제 1 존을 윈도우의 제 1 섹션 상에 제시하고 상기 제 2 존을 상기 윈도우의 제 2 섹션 상에 제시하도록 구성되는, 전자 디바이스.
  7. 제 6 항에 있어서,
    상기 제 1 섹션은 윈드실드의 사이드 섹션이고 상기 제 2 섹션은 상기 윈드실드의 다른 사이드 섹션인, 전자 디바이스.
  8. 제 6 항에 있어서,
    상기 제 1 섹션은 윈드실드를 가로지르는 제 1 수평 바이고 상기 제 2 섹션은 상기 윈드실드를 가로지르는 제 2 수평 바인, 전자 디바이스.
  9. 제 1 항에 있어서,
    상기 프로세서는,
    아이 (eye) 추적을 수행하며;
    상기 아이 추적에 기초하여 상기 제 1 존 및 상기 제 2 존을 렌더링하도록 구성되는, 전자 디바이스.
  10. 제 9 항에 있어서,
    상기 프로세서는,
    다수의 사용자들에 대한 아이 추적을 수행하며;
    상기 아이 추적에 기초하여 존 렌더링을 우선순위화하도록 구성되는, 전자 디바이스.
  11. 제 1 항에 있어서,
    상기 프로세서는 제 3 존을 렌더링하도록 구성되고,
    상기 제 3 존은 상기 제 1 존 및 상기 제 2 존보다 더 낮은 테슬레이팅된 레벨의 디테일을 갖는, 전자 디바이스.
  12. 제 1 항에 있어서,
    상기 프로세서는 상기 적어도 하나의 차량 윈도우 상에 제 3 존을 제시하도록 구성되는, 전자 디바이스.
  13. 제 1 항에 있어서,
    상기 전자 디바이스는 차량 내의 착탈형 모듈의 적어도 부분인, 전자 디바이스.
  14. 전자 디바이스에 의해 수행된 방법으로서,
    이미지의 제 1 존을 렌더링하는 단계;
    상기 이미지의 제 2 존을 렌더링하는 단계로서, 상기 제 1 존은 상기 제 2 존보다 더 높은 테슬레이팅된 레벨의 디테일을 갖는, 상기 이미지의 제 2 존을 렌더링하는 단계; 및
    상기 제 1 존 및 상기 제 2 존을 적어도 하나의 차량 윈도우 상에 제시하는 단계를 포함하는, 전자 디바이스에 의해 수행된 방법.
  15. 제 14 항에 있어서,
    상기 제 1 존 및 상기 제 2 존을 적어도 하나의 디스플레이로 전송하여 상기 제 1 존 및 상기 제 2 존을 제시하는 단계를 더 포함하는, 전자 디바이스에 의해 수행된 방법.
  16. 제 15 항에 있어서,
    상기 적어도 하나의 디스플레이는 윈도우 프로젝터 또는 통합형 윈도우 디스플레이 패널인, 전자 디바이스에 의해 수행된 방법.
  17. 제 14 항에 있어서,
    상기 제 1 존을 제 1 윈도우 상에 제시하고 상기 제 2 존을 제 2 윈도우 상에 제시하는 단계를 더 포함하는, 전자 디바이스에 의해 수행된 방법.
  18. 제 17 항에 있어서,
    상기 제 1 윈도우는 전방 윈드실드이고 상기 제 2 윈도우는 차량의 다른 윈도우인, 전자 디바이스에 의해 수행된 방법.
  19. 제 14 항에 있어서,
    상기 제 1 존을 윈도우의 제 1 섹션 상에 제시하고 상기 제 2 존을 상기 윈도우의 제 2 섹션 상에 제시하는 단계를 더 포함하는, 전자 디바이스에 의해 수행된 방법.
  20. 제 19 항에 있어서,
    상기 제 1 섹션은 윈드실드의 사이드 섹션이고 상기 제 2 섹션은 상기 윈드실드의 다른 사이드 섹션인, 전자 디바이스에 의해 수행된 방법.
  21. 제 19 항에 있어서,
    상기 제 1 섹션은 윈드실드를 가로지르는 제 1 수평 바이고 상기 제 2 섹션은 상기 윈드실드를 가로지르는 제 2 수평 바인, 전자 디바이스에 의해 수행된 방법.
  22. 제 14 항에 있어서,
    아이 추적을 수행하는 단계; 및
    상기 아이 추적에 기초하여 상기 제 1 존 및 상기 제 2 존을 렌더링하는 단계를 더 포함하는, 전자 디바이스에 의해 수행된 방법.
  23. 제 14 항에 있어서,
    제 3 존을 렌더링하는 단계를 더 포함하고,
    상기 제 3 존은 상기 제 1 존 및 상기 제 2 존보다 더 낮은 테슬레이팅된 레벨의 디테일을 갖는, 전자 디바이스에 의해 수행된 방법.
  24. 제 14 항에 있어서,
    상기 전자 디바이스는 차량 내의 착탈형 모듈의 적어도 부분인, 전자 디바이스에 의해 수행된 방법.
  25. 명령들을 갖는 비일시적 유형의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품으로서,
    상기 명령들은,
    전자 디바이스로 하여금 이미지의 제 1 존을 렌더링하게 하는 코드;
    상기 전자 디바이스로 하여금 상기 이미지의 제 2 존을 렌더링하게 하는 코드로서, 상기 제 1 존은 상기 제 2 존보다 더 높은 테슬레이팅된 레벨의 디테일을 갖는, 상기 이미지의 제 2 존을 렌더링하게 하는 코드; 및
    상기 전자 디바이스로 하여금 상기 제 1 존 및 상기 제 2 존을 적어도 하나의 차량 윈도우 상에 제시하게 하는 코드를 포함하는, 비일시적 유형의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품.
  26. 제 25 항에 있어서,
    상기 명령들은 상기 전자 디바이스로 하여금 상기 제 1 존 및 상기 제 2 존을 적어도 하나의 디스플레이로 전송하여 상기 제 1 존 및 상기 제 2 존을 제시하게 하는 코드를 포함하는, 비일시적 유형의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품.
  27. 제 25 항에 있어서,
    상기 제 1 존을 제 1 윈도우 상에 제시하고 상기 제 2 존을 제 2 윈도우 상에 제시하는 것을 더 포함하는, 비일시적 유형의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품.
  28. 장치로서,
    이미지의 제 1 존을 렌더링하기 위한 수단;
    상기 이미지의 제 2 존을 렌더링하기 위한 수단으로서, 상기 제 1 존은 상기 제 2 존보다 더 높은 테슬레이팅된 레벨의 디테일을 갖는, 상기 이미지의 제 2 존을 렌더링하기 위한 수단; 및
    상기 제 1 존 및 상기 제 2 존을 적어도 하나의 차량 윈도우 상에 제시하기 위한 수단을 포함하는, 장치.
  29. 제 28 항에 있어서,
    상기 제시하기 위한 수단은, 상기 제 1 존 및 상기 제 2 존을 적어도 하나의 디스플레이로 전송하여 상기 제 1 존 및 상기 제 2 존을 제시하기 위한 수단을 포함하는, 장치.
  30. 제 28 항에 있어서,
    상기 제 1 존을 제 1 윈도우 상에 제시하고 상기 제 2 존을 제 2 윈도우 상에 제시하기 위한 수단을 더 포함하는, 장치.
KR1020187019465A 2016-01-12 2016-12-02 다수의 레벨들의 디테일을 렌더링하기 위한 시스템들 및 방법들 KR20180102563A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/993,760 US10643381B2 (en) 2016-01-12 2016-01-12 Systems and methods for rendering multiple levels of detail
US14/993,760 2016-01-12
PCT/US2016/064769 WO2017123341A1 (en) 2016-01-12 2016-12-02 Systems and methods for rendering multiple levels of detail

Publications (1)

Publication Number Publication Date
KR20180102563A true KR20180102563A (ko) 2018-09-17

Family

ID=57590872

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187019465A KR20180102563A (ko) 2016-01-12 2016-12-02 다수의 레벨들의 디테일을 렌더링하기 위한 시스템들 및 방법들

Country Status (11)

Country Link
US (1) US10643381B2 (ko)
EP (1) EP3403236B1 (ko)
JP (1) JP6968803B2 (ko)
KR (1) KR20180102563A (ko)
CN (1) CN108463837B (ko)
BR (1) BR112018014012B1 (ko)
ES (1) ES2797150T3 (ko)
HK (1) HK1252843A1 (ko)
HU (1) HUE050455T2 (ko)
SG (1) SG11201804506RA (ko)
WO (1) WO2017123341A1 (ko)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9857871B2 (en) 2015-09-04 2018-01-02 Sony Interactive Entertainment Inc. Apparatus and method for dynamic graphics rendering based on saccade detection
US10643296B2 (en) 2016-01-12 2020-05-05 Qualcomm Incorporated Systems and methods for rendering multiple levels of detail
US10311540B2 (en) * 2016-02-03 2019-06-04 Valve Corporation Radial density masking systems and methods
US9990035B2 (en) * 2016-03-14 2018-06-05 Robert L. Richmond Image changes based on viewer's gaze
US10401952B2 (en) 2016-03-31 2019-09-03 Sony Interactive Entertainment Inc. Reducing rendering computation and power consumption by detecting saccades and blinks
US10169846B2 (en) * 2016-03-31 2019-01-01 Sony Interactive Entertainment Inc. Selective peripheral vision filtering in a foveated rendering system
US10192528B2 (en) 2016-03-31 2019-01-29 Sony Interactive Entertainment Inc. Real-time user adaptive foveated rendering
US10372205B2 (en) 2016-03-31 2019-08-06 Sony Interactive Entertainment Inc. Reducing rendering computation and power consumption by detecting saccades and blinks
GB2553744B (en) * 2016-04-29 2018-09-05 Advanced Risc Mach Ltd Graphics processing systems
US10748326B2 (en) 2016-08-19 2020-08-18 Movidius Ltd. Rendering operations using sparse volumetric data
GB2553353B (en) * 2016-09-05 2021-11-24 Advanced Risc Mach Ltd Graphics processing systems and graphics processors
US10332292B1 (en) * 2017-01-17 2019-06-25 Zoox, Inc. Vision augmentation for supplementing a person's view
US10242654B2 (en) 2017-01-25 2019-03-26 Microsoft Technology Licensing, Llc No miss cache structure for real-time image transformations
US9978118B1 (en) 2017-01-25 2018-05-22 Microsoft Technology Licensing, Llc No miss cache structure for real-time image transformations with data compression
US10514753B2 (en) * 2017-03-27 2019-12-24 Microsoft Technology Licensing, Llc Selectively applying reprojection processing to multi-layer scenes for optimizing late stage reprojection power
US10410349B2 (en) 2017-03-27 2019-09-10 Microsoft Technology Licensing, Llc Selective application of reprojection processing on layer sub-regions for optimizing late stage reprojection power
US10255891B2 (en) 2017-04-12 2019-04-09 Microsoft Technology Licensing, Llc No miss cache structure for real-time image transformations with multiple LSR processing engines
US10843686B2 (en) * 2017-06-08 2020-11-24 Envisics Ltd Augmented reality (AR) visualization of advanced driver-assistance system
US10853918B2 (en) * 2017-06-09 2020-12-01 Sony Interactive Entertainment Inc. Foveal adaptation of temporal anti-aliasing
US11521349B2 (en) * 2017-09-21 2022-12-06 Faro Technologies, Inc. Virtual reality system for viewing point cloud volumes while maintaining a high point cloud graphical resolution
US10395624B2 (en) 2017-11-21 2019-08-27 Nvidia Corporation Adjusting an angular sampling rate during rendering utilizing gaze information
US10559276B2 (en) 2018-02-03 2020-02-11 Facebook Technologies, Llc Apparatus, system, and method for mitigating motion-to-photon latency in head-mounted displays
US10706813B1 (en) 2018-02-03 2020-07-07 Facebook Technologies, Llc Apparatus, system, and method for mitigating motion-to-photon latency in head-mounted displays
GB2573543B (en) * 2018-05-09 2021-10-27 Advanced Risc Mach Ltd Graphics Processing
US10796407B2 (en) * 2018-05-11 2020-10-06 Samsung Electronics Co., Ltd. Foveated domain storage and processing
US11262839B2 (en) * 2018-05-17 2022-03-01 Sony Interactive Entertainment Inc. Eye tracking with prediction and late update to GPU for fast foveated rendering in an HMD environment
US10678325B2 (en) * 2018-05-22 2020-06-09 Facebook Technologies, Llc Apparatus, system, and method for accelerating positional tracking of head-mounted displays
US10764581B2 (en) 2018-05-24 2020-09-01 Lockhead Martin Corporation Multi-resolution regionalized data transmission
US10419738B1 (en) 2018-06-14 2019-09-17 Telefonaktiebolaget Lm Ericsson (Publ) System and method for providing 360° immersive video based on gaze vector information
US10841662B2 (en) 2018-07-27 2020-11-17 Telefonaktiebolaget Lm Ericsson (Publ) System and method for inserting advertisement content in 360° immersive video
US10712837B1 (en) * 2018-07-30 2020-07-14 David Douglas Using geo-registered tools to manipulate three-dimensional medical images
US10565689B1 (en) 2018-08-07 2020-02-18 Qualcomm Incorporated Dynamic rendering for foveated rendering
US11037271B2 (en) * 2018-08-07 2021-06-15 Qualcomm Incorporated Dynamic rendering for foveated rendering
US20200049946A1 (en) * 2018-08-10 2020-02-13 Varjo Technologies Oy Display apparatus and method of displaying using gaze prediction and image steering
US11099381B2 (en) * 2018-08-10 2021-08-24 Varjo Technologies Oy Synchronizing light sources and optics in display apparatuses
US10650568B2 (en) 2018-09-13 2020-05-12 Qualcomm Incorporated In-flight adaptive foveated rendering
US10757389B2 (en) 2018-10-01 2020-08-25 Telefonaktiebolaget Lm Ericsson (Publ) Client optimization for providing quality control in 360° immersive video during pause
GB2583061B (en) * 2019-02-12 2023-03-15 Advanced Risc Mach Ltd Data processing systems
JP2020177074A (ja) * 2019-04-16 2020-10-29 株式会社デンソー 車両用装置、車両用装置の制御方法
BR112022001434A2 (pt) * 2019-07-28 2022-06-07 Google Llc Métodos, sistemas e mídia para renderizar conteúdo de vídeo imersivo com malhas otimizadas
CN112799499A (zh) * 2019-10-24 2021-05-14 福特全球技术公司 一种机动车辆人机交互系统和方法
US11182970B1 (en) 2019-12-09 2021-11-23 Rockwell Collins, Inc. Augmented reality aircraft window and method
WO2021131023A1 (ja) * 2019-12-27 2021-07-01 マクセル株式会社 ヘッドマウント型情報出力装置
GB2598366B (en) * 2020-08-28 2023-03-08 Sony Interactive Entertainment Inc Image rendering system and method
GB2600763B (en) * 2020-11-10 2023-05-24 Sony Interactive Entertainment Inc Image rendering system and method
US11151774B1 (en) * 2020-11-20 2021-10-19 At&T Intellectual Property I, L.P. Adaptive immersive media rendering pipeline
US11722655B2 (en) 2021-11-30 2023-08-08 SoliDDD Corp. Low latency networking of plenoptic data
US11908079B2 (en) * 2022-04-08 2024-02-20 Qualcomm Incorporated Variable rate tessellation
CN115546154B (zh) * 2022-10-11 2024-02-06 数坤科技股份有限公司 图像处理方法、装置、计算设备及存储介质

Family Cites Families (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6879341B1 (en) * 1997-07-15 2005-04-12 Silverbrook Research Pty Ltd Digital camera system containing a VLIW vector processor
US6438516B1 (en) 1998-12-07 2002-08-20 International Business Machines Corporation Method and apparatus for optimizing unicode composition and decomposition
US6577329B1 (en) * 1999-02-25 2003-06-10 International Business Machines Corporation Method and system for relevance feedback through gaze tracking and ticker interfaces
US20020085497A1 (en) * 2000-12-28 2002-07-04 Phillips Robert C. Non-volatile data storage to cell-based switch fabric interface
US7068813B2 (en) 2001-03-28 2006-06-27 Koninklijke Philips Electronics N.V. Method and apparatus for eye gazing smart display
TW499818B (en) * 2001-03-29 2002-08-21 Winbond Electronics Corp Audio/video packet synchronous decoding method
US6677945B2 (en) 2001-04-20 2004-01-13 Xgi Cayman, Ltd. Multi-resolution depth buffer
US7075535B2 (en) 2003-03-05 2006-07-11 Sand Codex System and method for exact rendering in a zooming user interface
US8063916B2 (en) 2003-10-22 2011-11-22 Broadcom Corporation Graphics layer reduction for video composition
AU2003300514A1 (en) 2003-12-01 2005-06-24 Volvo Technology Corporation Perceptual enhancement displays based on knowledge of head and/or eye and/or gaze position
JP4038689B2 (ja) * 2004-01-21 2008-01-30 ソニー株式会社 表示制御装置および方法、記録媒体、並びにプログラム
US7436405B2 (en) 2004-05-14 2008-10-14 Microsoft Corporation Terrain rendering using nested regular grids
CN1993688B (zh) 2004-08-03 2012-01-18 西尔弗布鲁克研究有限公司 走近启动的打印
JP2006106254A (ja) 2004-10-04 2006-04-20 Denso Corp 車両用ヘッドアップディスプレイ
US8390874B2 (en) 2004-10-14 2013-03-05 Hewlett-Packard Development Company, L.P. Optimal resolution imaging system and method
US7209139B1 (en) * 2005-01-07 2007-04-24 Electronic Arts Efficient rendering of similar objects in a three-dimensional graphics engine
US7856602B2 (en) * 2005-04-20 2010-12-21 Apple Inc. Updatable menu items
US20070008333A1 (en) * 2005-07-07 2007-01-11 Via Technologies, Inc. Texture filter using parallel processing to improve multiple mode filter performance in a computer graphics environment
US20070141538A1 (en) 2005-07-08 2007-06-21 Quinn Edward W Simulator utilizing a high resolution visual display
US9250703B2 (en) * 2006-03-06 2016-02-02 Sony Computer Entertainment Inc. Interface with gaze detection and voice input
US8018472B2 (en) 2006-06-08 2011-09-13 Qualcomm Incorporated Blending multiple display layers
KR100745768B1 (ko) * 2006-08-29 2007-08-02 삼성전자주식회사 전력 소비를 감소시키기 위한 lod 값 계산 방법과이것을 이용한 3차원 렌더링 시스템
US7830381B2 (en) 2006-12-21 2010-11-09 Sectra Ab Systems for visualizing images using explicit quality prioritization of a feature(s) in multidimensional image data sets, related methods and computer products
US20080282050A1 (en) 2007-05-07 2008-11-13 On Demand Microelectronics Methods and arrangements for controlling memory operations
US7777960B2 (en) 2007-09-10 2010-08-17 Microvision, Inc. Wide field of view head-up display system
US20090195541A1 (en) * 2008-02-05 2009-08-06 Rambus Inc. Rendering dynamic objects using geometry level-of-detail in a graphics processing unit
GB2460411B (en) 2008-05-27 2012-08-08 Simpleware Ltd Image processing method
US8284197B2 (en) 2008-07-11 2012-10-09 Advanced Micro Devices, Inc. Method and apparatus for rendering instance geometry
CN101655993B (zh) * 2008-08-20 2012-01-11 武汉大学 复杂建筑物三维模型多分辨率建模方法
CN101369345B (zh) * 2008-09-08 2011-01-05 北京航空航天大学 一种基于绘制状态的多属性对象绘制顺序优化方法
US20100079454A1 (en) 2008-09-29 2010-04-01 Legakis Justin S Single Pass Tessellation
CA2748459C (en) * 2009-01-30 2014-06-03 Karl-Friedrich Stapelfeldt Adaptive voltage control for wind turbines
CN101872488B (zh) * 2009-04-27 2012-05-16 鸿富锦精密工业(深圳)有限公司 曲面渲染系统及方法
US8963931B2 (en) 2009-09-10 2015-02-24 Advanced Micro Devices, Inc. Tiling compaction in multi-processor systems
US8917271B2 (en) 2009-10-05 2014-12-23 Nvidia Corporation Redistribution of generated geometric primitives
US8493390B2 (en) * 2010-12-08 2013-07-23 Sony Computer Entertainment America, Inc. Adaptive displays using gaze tracking
CN102693065A (zh) * 2011-03-24 2012-09-26 介面光电股份有限公司 立体影像视觉效果处理方法
US8184069B1 (en) * 2011-06-20 2012-05-22 Google Inc. Systems and methods for adaptive transmission of data
US9897805B2 (en) * 2013-06-07 2018-02-20 Sony Interactive Entertainment Inc. Image rendering responsive to user actions in head mounted display
CN103077497B (zh) * 2011-10-26 2016-01-27 中国移动通信集团公司 对层次细节模型中的图像进行缩放的方法和装置
MY166675A (en) * 2011-12-28 2018-07-18 Halliburton Energy Services Inc Systems and methods for automatic weight on bit sensor calibration and regulating buckling of a drillstring (106)
US9423994B2 (en) * 2012-02-22 2016-08-23 Citrix Systems, Inc. Hierarchical display
US9105129B2 (en) * 2012-06-05 2015-08-11 Google Inc. Level of detail transitions for geometric objects in a graphics application
US9177351B2 (en) * 2012-10-09 2015-11-03 Qualcomm Incorporated Multi-primitive graphics rendering pipeline
EP2725323B1 (en) * 2012-10-29 2023-11-29 Harman Becker Automotive Systems GmbH Map viewer and method
US9558573B2 (en) * 2012-12-17 2017-01-31 Nvidia Corporation Optimizing triangle topology for path rendering
US9183609B2 (en) * 2012-12-20 2015-11-10 Nvidia Corporation Programmable blending in multi-threaded processing units
US9727991B2 (en) 2013-03-01 2017-08-08 Microsoft Technology Licensing, Llc Foveated image rendering
US20140347363A1 (en) 2013-05-22 2014-11-27 Nikos Kaburlasos Localized Graphics Processing Based on User Interest
US9395540B2 (en) 2013-06-11 2016-07-19 Honda Motor Co., Ltd. HUD fusion interface
US10269090B2 (en) 2013-08-16 2019-04-23 Nvidia Corporation Rendering to multi-resolution hierarchies
US9569886B2 (en) 2013-12-19 2017-02-14 Intel Corporation Variable shading
JP5917785B2 (ja) * 2014-02-26 2016-05-18 日通システム株式会社 人件費シミュレーションシステム、人件費シミュレーション方法及び人件費シミュレーションプログラム
KR102197064B1 (ko) 2014-10-10 2020-12-30 삼성전자 주식회사 Lod를 조절할 수 있는 그래픽스 프로세싱 유닛, 이의 작동 방법, 및 상기 그래픽스 프로세싱 유닛을 포함하는 장치들
US9704217B2 (en) 2015-04-20 2017-07-11 Intel Corporation Apparatus and method for non-uniform frame buffer rasterization
US10726619B2 (en) * 2015-10-29 2020-07-28 Sony Interactive Entertainment Inc. Foveated geometry tessellation
US10643296B2 (en) 2016-01-12 2020-05-05 Qualcomm Incorporated Systems and methods for rendering multiple levels of detail
US10192528B2 (en) * 2016-03-31 2019-01-29 Sony Interactive Entertainment Inc. Real-time user adaptive foveated rendering
KR20180051842A (ko) * 2016-11-09 2018-05-17 엘지전자 주식회사 디스플레이 장치 및 디스플레이 제어 방법

Also Published As

Publication number Publication date
CN108463837B (zh) 2022-05-24
CN108463837A (zh) 2018-08-28
US20170200308A1 (en) 2017-07-13
WO2017123341A1 (en) 2017-07-20
BR112018014012B1 (pt) 2023-11-07
HK1252843A1 (zh) 2019-06-06
EP3403236A1 (en) 2018-11-21
EP3403236B1 (en) 2020-03-11
US10643381B2 (en) 2020-05-05
JP2019510993A (ja) 2019-04-18
SG11201804506RA (en) 2018-07-30
BR112018014012A2 (pt) 2018-12-11
HUE050455T2 (hu) 2020-12-28
JP6968803B2 (ja) 2021-11-17
ES2797150T3 (es) 2020-12-01

Similar Documents

Publication Publication Date Title
EP3403236B1 (en) Systems and methods for rendering multiple levels of detail
US10643296B2 (en) Systems and methods for rendering multiple levels of detail
US11699404B2 (en) Glare and occluded view compensation for automotive and other applications
CN109564704B (zh) 虚拟现实/增强现实设备和方法
US9390547B2 (en) Untransformed display lists in a tile based rendering system
CN112085658A (zh) 用于非均匀帧缓冲器栅格化的装置和方法
US20200098165A1 (en) Dynamic rendering for foveated rendering
US20160358299A1 (en) Apparatus and method using subdivided swapchains for improved virtual reality implementations
US11631212B2 (en) Methods and apparatus for efficient multi-view rasterization
US11875452B2 (en) Billboard layers in object-space rendering
US20230101978A1 (en) Meshlet shading atlas
WO2023055655A1 (en) Meshlet shading atlas
KR20230149319A (ko) 프리미티브들의 배치들의 지오메트리 프로세싱을 위한 스케일러블 프리미티브 레이트 아키텍처

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal