KR20190125515A - 단일 패스 유연 스크린/스케일 래스터화 - Google Patents

단일 패스 유연 스크린/스케일 래스터화 Download PDF

Info

Publication number
KR20190125515A
KR20190125515A KR1020197031701A KR20197031701A KR20190125515A KR 20190125515 A KR20190125515 A KR 20190125515A KR 1020197031701 A KR1020197031701 A KR 1020197031701A KR 20197031701 A KR20197031701 A KR 20197031701A KR 20190125515 A KR20190125515 A KR 20190125515A
Authority
KR
South Korea
Prior art keywords
pixels
space
window
window space
distortion
Prior art date
Application number
KR1020197031701A
Other languages
English (en)
Other versions
KR102410351B1 (ko
Inventor
마이클 맨토
로랑 르페브르
미카 투오미
키이아 칼리오
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
에이티아이 테크놀로지스 유엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드, 에이티아이 테크놀로지스 유엘씨 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20190125515A publication Critical patent/KR20190125515A/ko
Application granted granted Critical
Publication of KR102410351B1 publication Critical patent/KR102410351B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/80Geometric correction
    • G06T5/006
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/017Head mounted
    • 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/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/18Image warping, e.g. rearranging pixels individually
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/12Bounding box
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Optics & Photonics (AREA)
  • Image Generation (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Geometry (AREA)

Abstract

머리 장착 기기(HMD)(300, 125)와 같은 장치가 윈도우 스페이스(405, 510)에 비균등한 픽셀 간격으로 픽셀들을 렌더링하는 그래픽 파이프라인(100)을 구현하도록 구성된 하나 이상의 프로세서(335)를 포함한다. 상기 장치는 또한 상기 윈도우 스페이스에 비균등하게 이격된 상기 픽셀들을 래스터 스페이스(410, 520)에 균등하게 이격된 픽셀들에 매핑시키는 제1 왜곡 함수(109, 525)를 포함한다. 상기 장치는 상기 제1 왜곡 함수를 통해 윈도우 스페이스 내 상기 픽셀들을 샘플링하도록 구성된 스캔 컨버터(110, 1225)를 더 포함한다. 상기 스캔 컨버터는 상기 래스터 스페이스에 균등하게 이격된 픽셀들에 기초하여 사용자에게 디스플레이하기 위한 이미지를 생성하는 데 사용되는 디스플레이 픽셀들을 렌더링하도록 구성된다. 몇몇 경우, 상기 윈도우 스페이스 내 상기 픽셀들은 입호각당 픽셀 밀도가 상기 사용자의 시야에 걸쳐 일정하도록 렌더링된다.

Description

단일 패스 유연 스크린/스케일 래스터화
그래픽 프로세서들은 일련의 프로그래밍 가능한 셰이더 및 고정 기능 하드웨어 블록을 사용하여 증강 현실(AR) 및 가상 현실(VR) 애플리케이션들에서 머리 착용 디스플레이(HMD, Head Mounted Display)용 이미지들을 생성한다. 예를 들어, 프레임에서 볼 수 있는 객체의 3-D 모델은 사용자에 디스플레이할 픽셀들의 값들을 생성하기 위해 그래픽 파이프 라인에서 처리되는 삼각형들, 기타 다각형들 또는 패치들과 같은 기초 요소들(primitives)의 세트로 표현된다. 픽셀들은 통상적으로 윈도우에서 균등한 픽셀 간격으로 윈도우 스페이스에 렌더링된다. 결과적으로, HMD에서 사용자의 중심 시선 방향 또는 렌즈의 중심으로부터의 픽셀 거리에 따라 원호각당 픽셀 밀도가 증가한다. 픽셀들은 직사각형 이미지를 생성하기 위해 스캔 컨버터에 의해 일정한 간격으로 샘플링된다. 후 처리 단계는 사용자가 디스플레이 렌즈 세트를 통해 이미지를 볼 때, 예를 들어, 사용자가 HMD를 착용하고 있을 때 이미지가 균형 잡히게 보이도록 직사각형 이미지를 왜곡시킨다.
본 발명은 첨부 도면들을 참조하여 보다 양호하게 이해될 수 있고, 이의 많은 특징 및 이점이 해당 기술분야의 통상의 기술자들에게 분명해진다. 상이한 도면들에서의 동일한 참조 부호들의 사용은 유사하거나 동일한 항목들을 나타낸다.
도 1은 일부 실시 예에 따라 DX12 응용 프로그램 인터페이스(API)를 구현하는 그래픽 파이프라인의 블록도이다.
도 2는 일부 실시 예에 따라 실감형 가상 현실(VR) 또는 증강 현실(AR) 기능을 제공하도록 구성된 전자 기기를 포함하는 디스플레이 시스템을 도시한다.
도 3은 일부 실시 예에 따라 디스플레이를 통해 전자 기기를 착용한 사용자에 AR 또는 VR을 제공하도록 구성된 전자 기기를 포함하는 디스플레이 시스템을 도시한다.
도 4는 일부 실시 예에 따른 윈도우 스페이스에 비균등하게 이격된 픽셀들의 래스터 스페이스에 균등하게 이격된 픽셀들로의 매핑을 도시한다.
도 5는 일부 실시 예에 따라 HMD를 착용한 사용자의 눈에 디스플레이하기 위해 디스플레이 픽셀들의 렌더링 프로세스를 도시한 블록도이다.
도 6은 일부 실시 예에 따라 왜곡 함수를 구현하기 위해 사용되는 수평 왜곡 함수 및 수직 왜곡 함수를 나타내는 플롯 세트이다.
도 7은 일부 실시 예에 따라 수평 왜곡 함수 또는 수직 왜곡 함수를 나타내는 왜곡 곡선의 도해이다.
도 8은 일부 실시 예에 따라 매끄러운 곡선을 형성하기 위해 사용되는 조각마다의 곡선의 선택을 도시한다.
도 9는 일부 실시 예에 따른 왜곡 곡선의 중심와 변형(fovea modification)을 도시한 플롯 집합이다.
도 10은 일부 실시 예에 따라 균등하게 이격된 픽셀들의 래스터 스페이스 및 비균등하게 이격된 픽셀들의 윈도우 스페이스 내 기초 요소의 부분들을 나타내는 타일들의 비닝(binning)을 도시한다.
도 11은 일부 실시 예에 따라 기초 요소 경계 박스의 왜곡된 래스터 뷰와의 비교에 기초한 기초 요소들의 왜곡-인식 라우팅을 도시한다.
도 12는 일부 실시 예에 따른 기초 요소들의 비닝을 도시하는 그래픽 파이프라인의 일 부분의 블록도이다.
도 13은 일부 실시 예에 따라 왜곡 함수를 통해 윈도우 스페이스 내 비균등한 픽셀들을 샘플링 렌더링하기 위한 방법의 흐름도이다.
화면 중심에 양질의 이미지들을 생성하는 데 필요한 높은 픽셀 해상도가 윈도우 스페이스에서 모든 픽셀을 렌더링하는 데 사용되는 해상도를 나타내기 때문에 윈도우 스페이스에서 균일한 이격된 픽셀들을 렌더링하는 데 상당한 처리 능력이 낭비된다. 그러나, 원호각이 하나보다 많은 픽셀에 매핑되기 때문에 주변부의 이미지 품질은 화면 중심의 품질만큼 높을 필요는 없다. 예를 들어, 중심 시선 방향(또는 HMD 디스플레이 기기의 렌즈의 중심)을 둘러싸는 고시력 영역에 이미지들을 생성하기 위해서는 더 높은 해상도의 렌더링이 필요하지만, 시각적 주변부 또는 렌즈의 주변 영역들에서의 저시력 영역들에 충분한 품질의 이미지들을 생성할 필요는 없다. 고시력 영역은 통상적으로 중심 시선 방향의 어느 각도 거리 내에 있는 시야의 일 부분을 포함한다. 중심 시선 방향으로부터의 각거리는 편심(eccentricity)이라고도 한다. 저시력 영역들은 더 큰 편심에 있는 시야의 부분들을 포함한다. 예를 들어, 고시력 영역은 5-10°의 편심 내에 있는 시야의 일 부분을 포함할 수 있으며, 이는 중심와(fovea)라 불리는 사람 눈의 망막 영역으로 투영되는 시야의 일 부분에 대응한다.
HMD에 의해 디스플레이하기 위해 이미지들을 생성하는 데 소모되는 능력 및 컴퓨팅 자원들은 윈도우 스페이스에 비균등한 픽셀 간격으로 픽셀들을 렌더링함으로써 인지되는 이미지 해상도를 손상시키지 않으면 서 감소된다. 일부 실시 예들에서, 비균등한 픽셀 간격은 사용자의 시야를 가로지르는 원호각당 개략적으로 일정한 픽셀 밀도에 대응한다. 예를 들어, 원호각당 픽셀 밀도는 중심와 영역에서 상대적으로 높고 시각적 주변부 상에서는 상대적으로 낮다. 스캔 컨버터는 비균등한 픽셀들을 래스터 스페이스에 균일하게 이격된 픽셀들에 매핑시키는 제1 왜곡 함수를 통해 윈도우 스페이스 내 픽셀들을 샘플링한다. 스캔 컨버터는 래스터 스페이스에 균등하게 이격된 픽셀들의 값들에 기초하여 디스플레이 픽셀들을 렌더링하고 디스플레이 픽셀들은 사용자에 디스플레이하기 전에 제2 왜곡 함수를 통해 전달된다.
제1 왜곡 함수의 일부 실시 예는 비균등한 픽셀들의 제1 치수를 균등하게 이격된 픽셀들에 매핑시키는 수직 왜곡 함수 및 비균등한 픽셀들의 제2 치수를 균등하게 이격된 픽셀들에 매핑시키는 수평 왜곡 함수를 포함한다. 제1 및 제2 치수들은 서로 직교한다. 수직 및 수평 왜곡 함수들의 일부 실시 예는 윈도우 스페이스에 균등하게 이격된 픽셀들을 래스터 스페이스에서 균등하게 이격되는 픽셀들에 매핑시키는 선형 함수로부터의 대응하는 변위들의 집합에 의해 정의된다. 예를 들어, 수직 및 수평 왜곡 함수들에 대한 변위들의 집합은 제1 왜곡 함수를 나타내는 매끄러운 곡선으로 연결되는 점들의 집합을 정의한다. 수직 및 수평 왜곡 함수들의 일부 실시 예는 중심와 영역의 위치에 대응하는 윈도우 스페이스의 일 부분에서 픽셀들의 해상도를 증가시키도록 변형된다.
도 1은 일부 실시 예에 따라 DX12 응용 프로그램 인터페이스(API)를 구현하는 그래픽 파이프라인(100)의 블록도이다. 그래픽 파이프라인(100)은 미리 결정된 해상도로 3-차원(3-D) 장면들의 래스터화된 이미지들을 생성하기 위한 고차 지오메트리 기초 요소들을 처리할 수 있다. 그래픽 파이프라인(100)은 버퍼들을 구현하고 버텍스 데이터, 텍스처 데이터 등을 저장하는 데 사용되는 하나 이상의 메모리 또는 캐시의 계층과 같은 저장 자원들(101)에 액세스할 수 있다. 그래픽 파이프 라인(100)에서의 셰이더들의 일부 실시 예는 다수의 버텍스가 동시에 처리되도록 단일 명령 단일 데이터(SIMD, single-instruction-multiple-data) 처리를 구현한다. 그에 따라 그래픽 파이프라인(100)은그래픽 파이프라인(100)에 포함되는 셰이더들이 공유되는 SIMD 컴퓨터 유닛들 상의 동일한 실행 플랫폼을 갖도록 통합 셰이더 모델의 개념을 구현한다. 그에 따라 셰이더들은 하나 이상의 프로세서를 포함하는 자원들의 공통 집합을 사용하여 구현된다. 자원들의 공통 집합은 본 명세서에서 통합 셰이터 풀(104)이라 지칭된다.
통상적인 DX12 렌더링 파이프라인에서, 입력 어셈블러(102)는 장면의 모델의 부분들을 나타내는 객체들을 정의하는 데 사용되는 저장 자원들(101)로부터의 정보에 액세스하도록 구성된다. 일부 실시 예에서, 소프트웨어로 구현되는 버텍스 셰이더(103)는 논리적으로 입력 어셈블러(102)로부터 입력으로서 기초 요소의 단일 버텍스를 수신하고 단일 버텍스를 출력한다. 훌 셰이더(105)는 입력 패치들을 정의하는 데 사용되는 입력 고차 패치들 또는 제어 지점들을 조작한다. 훌 셰이더(105)는 테셀레이션 팩터들 및 기타 패치 데이터를 출력한다.
훌 셰이더(105)에 의해 생성되는 기초 요소는 임의적으로 테셀레이터(106)에 제공될 수 있다. 테셀레이터(106)는 훌 셰이더(105)로부터 객체들(패치들과 같은)을 수신하고 예를 들어, 훌 셰이더(105)에 의해 테셀레이터(106)에 제공되는 테셀레이션 팩터들에 기초하여 입력 객체들을 테셀레이팅함으로써, 입력 객체에 대응하는 기초 요소들을 식별하는 정보를 생성한다. 테셀레이션은 패치들과 같은 입력 고차 기초 요소들을 예를 들어, 테셀레이션 프로세스에 의해 생성되는 기초 요소들의 정밀도를 지정하는 테셀레이션 팩터들에 의해 나타나는 바에 따라, 보다 정밀한 세부 수준들을 나타내는 저차 출력 기초 요소들의 집합으로 세분한다.
도메인 셰이더(107)는 도메인 위치 및(임의적으로) 기타 패치 데이터를 입력한다. 도메인 셰이더(107)는 제공되는 정보를 조작하고 입력 도메인 위치 및 기타 정보에 기초하여 출력에 대한 단일 버텍스를 생성한다. 지오메트리 셰이더(108)는 입력 기초 요소를 수신하고 입력 기초 요소에 기초하여 지오메트리 셰이더(108)에 의해 생성되는 네 개까지의 기초 요소를 출력한다.
그 다음 기초 요소들은 예를 들어, 윈도우 대 뷰포트 변환을 사용하여, 장면을 포함하는 뷰 윈도우로부터 사용자에 디스플레이될 이미지를 나타내는 픽셀들의 그리드로 매핑된다. "윈도우 스페이스(window space)"라는 용어는 처리시 이 지점까지 그래픽 파이프라인(100)에 의해 생성되는 픽셀들을 지칭한다. 본 명세서에서 논의되는 바와 같이, 그래픽 파이프라인(100)에 의해 생성되는 윈도우 스페이스 내 픽셀들은 비균등하게 분산되고 픽셀들 간 비균등한 간격을 갖는다. 일부 실시 예에서, 그래픽 파이프라인(100)은 입호각당 픽셀 밀도가 사용자의 시야에 걸쳐 일정하도록 윈도우 스페이스에 픽셀들을 렌더링한다. 예를 들어, 윈도우 스페이스 내 픽셀들은 그래픽 파이프라인(100)을 구현하는 HMD를 착용한 사용자의 중심와 영역에서 상대적으로 고 픽셀 밀도를 갖게 렌더링된다. 윈도우 스페이스 내 픽셀들은 시각적 주변부에서는 상대적으로 저 픽셀 밀도를 갖게 렌더링된다.
왜곡 함수(109)는 윈도우 스페이스에 비균등하게 이격된 픽셀들을 스캔 컨버터(110)에 의해 사용될 래스터 스페이스에 균등하게 이격된 픽셀들로 변환하는 데 사용된다. 왜곡 함수(109)의 일부 실시 예는 윈도우 스페이스에 비균등하게 이격된 픽셀들의 제1 치수를 래스터 스페이스에 균등하게 이격된 픽셀들에 매핑시키는 수직 왜곡 함수 및 윈도우 스페이스에 비균등하게 이격된 픽셀들의 제2 치수를 래스터 스페이스에 균등하게 이격된 픽셀들에 매핑시키는 수평 왜곡 함수를 구현한다. 수직 및 수평 왜곡 함수들은 윈도우 스페이스에 균등하게 이격된 픽셀들로부터 래스터 스페이스에서 균등하게 이격되는 픽셀들로 매핑시키는 선형 왜곡 함수로부터의 변위들의 집합에 기초하여 정의된다. 스캔 컨버터(110)는 래스터 스페이스에 균등하게 이격된 픽셀들을 생성하기 위해 왜곡 함수(109)를 통해 윈도우 스페이스 내 픽셀들을 샘플링한다.
픽셀 셰이더(111)는 스캔 컨버터(110)로부터 픽셀 흐름을 수신하고 입력 픽셀 흐름에 응답하여 제로 또는 다른 픽셀 흐름을 출력한다. 출력 병합기 블록(112)은 픽셀 셰이더(111)로부터 수신되는 픽셀들에 관한 블렌딩, 깊이, 스텐실 또는 기타 동작들을 수행한다.
도 2는 일부 실시 예에 따라 실감형 VR 또는 AR 기능을 제공하도록 구성된 전자 기기(205)를 포함하는 디스플레이 시스템(200)을 도시한다. 전자 기기(205)는 도 1에 도시된 그래픽 파이프라인(100)의 일부 실시 예로부터의 출력이 픽셀들의 값들을 사용하여 이미지들을 디스플레이하는 데 사용된다. 본 발명의 적어도 일 실시예에 따른 HMD 폼 팩터의 전자 기기(205)의 예시적인 구현 예의 저면도가 도 2에 도시되어 있다. 그 외 다른 실시 예들에서, 전자 기기(205)는 도시된 것들과 유사한 구성들을 구현하는 기타 폼 팩터들, 이를테면 안경에 대한 폼 팩터, 스마트폰 폼 팩터, 태블릿 폼 팩터, 의료 이미징 기기 폼 팩터, 독립형 컴퓨터, 시스템 온 칩(SOC) 등으로 구현된다. 저면도에 의해 도시된 바와 같이, 전자 기기(205)는 전자 기기(205)를 사용자의 얼굴에 고정하기 위한(스트랩들 또는 하네스의 사용과 함께) 표면(215) 상에 장착되는 얼굴 가스킷(210)을 포함할 수 있다.
전자 기기(205)는 사용자에 제공되는 VR 이미지들 또는 AR 이미지들과 같은 이미지들을 생성하는 데 사용되는 디스플레이(220)를 포함한다. 디스플레이(220)는 사용자의 오른쪽 눈에 이미지들을 제공하기 위한 우측 부분 및 사용자의 왼쪽 눈에 이미지들을 제공하기 위한 좌측 부분의 두 실질적으로 동일한 부분으로 구분된다. 그 외 다른 실시 예들에서, 디스플레이(220)는 양쪽 눈에 전용되는 두 개의 상이한 디스플레이로서 구현된다. 전자 기기(205)를 착용한 사용자의 시력은 사용자의 시선 중심으로부터의 거리, 예를 들어 편심에 따른다. 예를 들어, 사용자의 왼쪽 눈에 대한 시야는 중심 시선 방향(230)을 둘러싸는 고시력 영역(225)으로 세분된다. 사용자의 왼쪽 눈에 대한 시야는 또한 시각적 주변부에서의 저시력 영역(240)도 포함한다. 유사하게, 사용자의 오른쪽 눈에 대한 시야는 중심 시선 방향(250)을 둘러싸는 고시력 영역(245) 및 시각적 주변부에서의 저시력 영역(260)으로 세분된다. 중심 시선 방향들(230, 250)은 현재 시야의 중심과 동일하게 설정되거나 또는 그것들은 사용나의 눈의 중심 시선 방향을 검출하는 시선 추척 측정치들을 기반으로 결정된다.
본 명세서에서 논의되는 바와 같이, 도 1에 도시된 왜곡 함수(109)와 같은 왜곡 함수는 윈도우 스페이스에 비균일하게 렌더링된 픽셀들을 래스터 스페이스에 균일하게 렌더링된 픽셀들에 매핑시키는 데 사용된다. 그에 따라 왜곡 함수를 구현하는 그래픽 파이프라인은 예를 들어, 디스플레이에 의해 지원되는 기본 해상도와 동일한 해상도로 픽셀들을 렌더링함으로써, 고시력 영역들(225, 245) 내에서 상대적으로 고해상도로 윈도우 스페이스 내 픽셀들을 렌더링할 수 있다. 그래픽 파이프라인은 저시력 영역들(240, 260) 내에서는 보다 낮은 해상도로 윈도우 스페이스 내 픽셀들을 렌더링함으로써, 윈도우 스페이스 내 픽셀들을 렌더링하는 데 필요한 능력 및 컴퓨팅 자원들을 감소시킨다. 그 후 렌더링된 윈도우 스페이스 내 픽셀들은 래스터 스페이스에 균등하게 이격된 픽셀들의 값들을 결정하기 위해 왜곡 함수를 통해 스캔 컨버터에 의해 샘플링된다.
도 3은 일부 실시 예에 따라 디스플레이를 통해 전자 기기(305)를 착용한 사용자에 AR 또는 VR을 제공하도록 구성된 전자 기기(305)를 포함하는 디스플레이 시스템(300)을 도시한다. 전자 기기(305)는 도 2에 도시된 전자 기기(205)의 일부 실시 예를 구현하기 위해 사용된다. 전자 기기(305)는 도 3에서 사용자의 머리(310) 상에 장착되는 것으로 도시되어 있다. 도시된 바와 같이, 전자 기기(305)는 사용자에 제시하기 위한 이미지를 생성하는 디스플레이(320)를 포함하는 하우징(315)을 포함한다. 디스플레이(320)는 도 2에 도시된 디스플레이(220)의 일부 실시 예를 사용하여 구현된다. 도시된 실시 예에서, 디스플레이(320)는 대응하는 왼쪽 눈 및 오른쪽 눈에 입체적인 이미지들을 디스플레이하기 위해 사용되는 좌측 디스플레이(321) 및 우측 디스플레이(322)로 형성된다. 그러나, 그 외 다른 실시 예들에서, 디스플레이(320)는 왼쪽 및 오른쪽 눈에 디스플레이하기 위한 별개의 입체적인 이미지들을 생성하는 단일 모노리식의 디스플레이(320)이다. 전자 기기(305)는 또한 하우징(315)의 사용자를 향하는 표면(332)에서의 대응하는 애퍼처들 또는 기타 개구들에 배치되는 대안 렌즈(325 및 330)를 포함한다. 디스플레이(320)는 하우징(315) 내에서 대안 렌즈(325 및 330)의 원위에 배치된다. 대안 렌즈(325)는 왼쪽 눈 디스플레이(321)와 정렬되고 접안 렌즈(330)는 오른쪽 눈 디스플레이(322)와 정렬된다.
입체 디스플레이 모드에서, 이미지는 왼쪽 눈 디스플레이(321)에 의해 디스플레이되고 대안 렌즈(325)를 통해 사용자의 왼쪽 눈에 의해 보여진다. 이미지는 동시에 오른쪽 눈 디스플레이(322)에 의해 디스플레이되고 대안 렌즈(325)를 통해 사용자의 오른쪽 눈에 의해 보여진다. 좌안 및 우안으로 보여지는 이미지는 사용자를 위한 입체 뷰를 생성하도록 구성된다. 디스플레이들(320, 321, 322)의 일부 실시 예는 디스플레이들(320, 321, 322)의 외측 에지들을 포함하는 베젤(도 3에 도시되지 않음)을 포함하도록 제조된다. 그 경우, 렌즈(325, 330) 또는 그 외 다른 광학 기기들은 디스플레이들(320, 321, 322)에 의해 생성된 이미지들을 조합하기 위해 사용되어 디스플레이들(320, 321, 322) 주위의 베젤이 사용자에게 보이지 않게 한다. 대신에, 렌즈(325, 330)는 디스플레이들(320, 321, 322) 사이의 경계들에 걸쳐 연속적으로 나타나도록 이미지들을 병합한다.
디스플레이(320)의 동작 및 전자 기기(305)의 그 외 다른 구성요소들을 제어 및 지원하는 일부 또는 모든 전자 부품은 하우징(315) 내에 구현된다. 전자 기기(305)의 일부 실시 예는 도 1에 도시된 그래픽 파이프 라인(100)과 같은 그래픽 파이프 라인의 일부 또는 전부를 구현하는 데 사용될 수 있는 프로세서(335) 및 메모리(340)(또는 그 외 다른 하드웨어, 펌웨어 또는 소프트웨어)와 같은 처리 유닛을 포함한다. 일부 실시 예에서, 실제 또는 가상 이미지들을 획득하고 디스플레이(320) 상에 디스플레이하기 위해 이러한 이미지들을 렌더링하는 것과 관련된 워크로드는 전자 기기(305) 외부에 구현되는 외부 처리 유닛들과 공유될 수 있다. 전자 기기(305)의 일부 실시 예는 사용자의 눈의 움직임을 추적하고 양쪽 눈에 대한 시선 중심을 실시간으로 결정하기 위한 시선 추적기(345)를 포함한다. 전자 기기(305)는 또한 하나 이상의 모션 센서(350)를 포함한다. 모션 센서들(350)의 예는 가속도계, 자이로스코픽 배향 검출기, 또는 전자 기기(305)의 모션을 검출할 수 있는 그 외 다른 기기들을 포함한다.
도 4는 일부 실시 예에 따른 윈도우 스페이스(405)에 비균등하게 이격된 픽셀들의 래스터 스페이스(410)에 균등하게 이격된 픽셀들로의 매핑(400)을 도시한다. 매핑(400)은 도 1에 도시된 그래픽 파이프라인(100), 도 2에 도시된 전자 기기(205) 및 도 3에 도시된 전자 기기(305)의 일부 실시 예에서 구현된다. 윈도우 스페이스(405) 내 픽셀들은 그래픽 파이프 라인의 지오메트리에 의해 생성되고, 스캔 컨버터(또는 래스터화기)는 왜곡 함수(415)를 통해 윈도우 스페이스(405) 내 픽셀들을 샘플링함으로써 래스터 스페이스(410) 내 픽셀들의 값들을 결정하며, 이는 도 1에 도시된 왜곡 함수(109)의 일부 실시 예를 구현하는 데 사용된다.
비균등하게 이격된 픽셀들은 왜곡 함수(415)에 따라 윈도우 스페이스(405)에 걸쳐 분산된다. 도시된 실시 예에서, 왜곡 함수(415)는 수직 왜곡 함수 및 수평 왜곡 함수를 사용하여 구현된다. 윈도우 스페이스(405) 내 픽셀들의 수평 경계들은 윈도우 스페이스(405)의 상단으로부터 윈도우 스페이스(405)의 중간으로 이동하는 거리를 감소시킴으로써 구분된 다음, 윈도우 스페이스(405)의 중간으로부터 윈도우 스페이스(405)의 하단으로 이동하는 거리를 증가시킴으로써 구분된다. 윈도우 스페이스(405) 내 픽셀들의 수직 경계들은 윈도우 스페이스(405)의 좌측으로부터 윈도우 스페이스(405)의 중간으로 이동하는 거리를 감소시킴으로써 구분된 다음, 윈도우 스페이스(405)의 중간으로부터 윈도우 스페이스(405)의 우측으로 이동하는 거리를 증가시킴으로써 구분된다. 그에 따라, 최고 해상도 픽셀들은 윈도우 스페이스(405)의 중심 부근에 있고 최저 해상도 픽셀들은 윈도우 스페이스(405)의 에지들 부근에 있다.
윈도우 스페이스(405)에 비균등하게 이격된 픽셀들은 왜곡 함수(415)에 의해 래스터 스페이스(410)에 균등하게 이격된 픽셀들에 매핑된다. 예를 들어, 래스터 스페이스(410) 내 픽셀(420)은 윈도우 스페이스(405) 내 픽셀(425)에 매핑된다. 그에 따라 스캔 컨버터는 렌더링된 픽셀(425)의 상대적으로 조밀한 샘플링을 수행하여 픽셀(420)의 값들을 결정한다. 다른 예로, 래스터 스페이스(410) 내 픽셀(430)은 윈도우 스페이스(405) 내 픽셀(435)에 매핑된다. 그에 따라 스캔 컨버터는 렌더링된 픽셀(435)의 상대적으로 희소 샘플링을 수행하여 픽셀(430)의 값들을 결정한다.
그에 따라 왜곡 함수(415)는 프로그램 가능한 방식으로 래스터화의 샘플링 밀도를 조절할 수 있으며, 이는 HMD에서 구현되는 VR 및 AR과 같은 애플리케이션들에 대한 불필요한 픽셀 셰이딩을 감소시키는 데 사용된다. 왜곡 함수(415)의 일부 실시 예는 포스트-뷰포트 변환된 지오메트리 윈도우 스페이스(윈도우 스페이스(405))과 예를 들어, 래스터 스페이스(410)에 렌더링되는 지오메트리의 스캔 컨버터 뷰 사이에 배치되는 상태 제어 2D 스페이스적 왜곡 변환으로서 구현된다. 도시된 실시 예에서, 수평 및 수직 왜곡 곡선들은 HMD의 광학의 정적 특성들 및 HMD를 착용하고 있는 사용자의 시선 변화와 같은 동적 특성들을 보상한다. 왜곡 함수(415)는 또한 프레임별 이미지 품질 대 성능의 동적 절충을 지원한다. 절충은 뷰포트 윈도우의 크기, 왜곡 함수(415)와 관련된 윈도우, 및 왜곡 함수(415)를 변경하지 않고 후 처리 샘플 윈도우를 변경함으로써 수행된다. 렌더링된 지오메트리는 또한 왜곡 함수(415)를 사용하여 선택된 렌더 타겟의 부분들에 유연하게 매핑될 수 있다.
도 5는 일부 실시 예에 따라 HMD를 착용한 사용자의 눈(505)에 디스플레이하기 위해 디스플레이 픽셀들의 렌더링 프로세스(500)를 도시한 블록도이다. 프로세스(500)는 도 1에 도시된 그래픽 파이프라인(100), 도 2에 도시된 전자 기기(205) 및 도 3에 도시된 전자 기기(305)의 일부 실시 예에서 구현된다.
지오메트리 파이프라인은 윈도우 스페이스(510)에 렌더링된 픽셀들을 제공한다. 윈도우 스페이스(510)의 시야는 HMD의 투영 매트릭스 및 광학 특성들에 의해 결정된다. 본 명세서에서 논의되는 바와 같이, 윈도우 스페이스(510) 내 픽셀들은 도 1에 도시된 왜곡 함수(109) 및 도 4에 도시된 왜곡 함수(415)와 같은 왜곡 함수(515)에 따라 비균등하게 렌더링된다. 왜곡 함수(515)의 일부 실시 예는 하드웨어, 펌웨어, 소프트웨어 또는 이들의 조합으로 구현된다. 왜곡 함수(515)는 후술될 바와 같이, 레지스터 값들에 기초하여 구성 가능하다. 윈도우 스페이스(510) 내 픽셀들은 HMD를 착용 한 사용자의 시야에 걸쳐 거의 일정한 원호각당 픽셀 밀도를 수립하도록 분산된다.
스캔 컨버터는 래스터 스페이스(520)에 균등하게 이격된 픽셀들의 값들을 생성하기 위해 왜곡 함수(515)를 통해 윈도우 스페이스(510) 내 비균등한 픽셀들을 샘플링한다. 일부 실시 예에서, 후처리는 왜곡-인식 셰이더들 및 기타 필터들에 의해 래스터 스페이스(520)에서 수행된다. 그 다음 래스터 스페이스(520) 내 픽셀들의 값들은 디스플레이 버퍼(525)에 제공되는 디스플레이 픽셀들의 값들을 생성하는 데 사용된다. 일부 실시 예에서, 렌더링되거나 재구성된 이미지는 색채 조정 또는 기타 필터링을 수행하기 위해 변형된 메쉬로 래스터 스페이스(520)으로부터 샘플링된다.
디스플레이 버퍼(525)에 저장된 디스플레이 픽셀들은 HMD에 구현된 디스플레이(530)에 제공된다. 디스플레이(530)는 디스플레이 픽셀들의 값들을 사용하여 대응하는 한 쌍의 렌즈(535, 540) 중 하나를 사용하여 눈(505)에 제시되는 이미지들을 생성한다. 따라서, 윈도우 스페이스(510)에서 비균등하게 이격된 픽셀들의 렌더링을 지원하기 위해 왜곡 함수(515)를 구현함으로써, 시각적 주변부의 픽셀들을 지나치게 높은 해상도로 렌더링하기 위해 지오메트리 파이프 라인에서 소비되는 자원들을 감소시키며, 이는 저해상도에서 고품질 렌더링을 가능하게 한다. 스캔 컨버터는 래스터 스페이스(520) 내 픽셀들을 렌더링하기 위해 윈도우 스페이스(510) 내 픽셀들의 거의 1 : 1 샘플링을 수행한다. 품질과 성능 간의 동적 절충은 윈도우 스페이스(510) 및 래스터 스페이스(520)의 해상도를 변경함으로써 달성된다.
2D 포스트 뷰포트 윈도우 스페이스(이를테면 윈도우 스페이스(510))과 2D 래스터 뷰(예를 들어, 래스터 스페이스(520)) 사이의 지오메트릭 변환은 래스터 스페이스의 모든 X, Y 지점을 왜곡된 x, y 윈도우 스페이스에 고유하게 그리고 양방향으로 매핑한다. 매핑의 일례가 다음에 의해 주어진다:
(x, y)ws = F [(X, Y)rs] 그리고(X, Y)rs = F’[(x, y)ws]
여기서 ws는 윈도우 스페이스, rs는 래스터 스페이스, F() 및 F'()는 두 2D 이미지 간의 스페이스 변환을 정의한다. 일부 실시 예는 수직 왜곡 함수 및 수평 왜곡 함수로서 왜곡 함수를 나타낸다. 예를 들어, 수평 및 수직 성분들의 왜곡이 다음과 같이 나타난다:
(x)ws = Fx [(X)rs] 그리고(X)rs = F’x[(x)ws] &
(y)ws = Fy [(Y)rs] 그리고(Y)rs = F’y[(y)ws]
상태 표들과 로직은 Fx, F'x, Fy, F'y를 사용하여 각 기초 요소에 사용되는 왜곡 맵을 샘플링한다.
양쪽 눈과 각 파이프의 수평 및 수직 방향들에 대한 상태 매개 변수들이 아래 표에 나열된다. 왜곡 곡선들을 정의하는 상태는 구성 상태로서 저장된다. 비닝과 협력하기위한 활성화 상태 및 상태를 "렌더링 상태"라고 지칭한다.
일부 실시 예에서, 왜곡 함수를 정의하기 위한 제어 방법은 예를 들어, 윈도우 스페이스(510)에서 윈도우의 좌측 상단 및 우측 하단 좌표들을 사용하여, 윈도우를 정의하는 단계를 포함한다. 수평 및 수직 방향들에 대한 상태 매개 변수들의 값들은 일련의 색인표(LUT)로부터 액세스된다. 예를 들어, 시스템은 총 8개의 LUT에 대해 2개의 그래픽 파이프라인, 양쪽 눈 및 두 방향(수평 및 수직)의 각 조합에 대해 하나의 LUT를 구현할 수 있다. 아래에서 상세히 논의될 바와 같이, LUT는 실제 수평 및 수직 왜곡 곡선을 생성하는 데 사용되는 지점들 사이에 알파 제어 RCP 곡선을 갖는 8개의 영역 곡선을 정의한다. 레지스터 상태 값들은 기초 요소 래스터화 동안 왜곡 프로세스를 제어하는 데 사용된다.
명칭 비트들 설명
TABLE[n].Window[m].TopLeftX 15 표의 시작에 대한 화면 x 좌표
TABLE[n].Window[m]. TopLeftY 15 표의 시작에 대한 화면 y 좌표
TABLE[n].Window[m].BottomRightX 15 표의 끝에 대한 화면 x 좌표
TABLE[n].Window[m].BottomRightY 15 표의 끝에 대한 화면 y 좌표
TABLE[n].RcpData[m].dir[2].YPosition[7] 8 중심 사선으로부터의 Y 위치 차 8b 2comp
TABLE[n].RcpData[m].dir[2].YPositionShift 4 y위치 차이에 대한 공통 지수
TABLE[n].RcpData[m].dir[2].XPosition[7] 8 중심 사선으로부터의 X 위치 차 8b 2comp
TABLE[n].RcpData[m].dir[2].XPositionShift 4 x위치 차이에 대한 공통 지수
TABLE[n].RcpData[m].dir[2].Alpha[8] 8 알파(1.7 부호 절대법)
RenderState[state_id].FbwRecursionsX 3 X에 대한 FBW 반복 제어
RenderState[state_id].FbwRecursionsY 3 Y에 대한 FBW 반복 제어
RenderState[state_id].FSR_EN[MAX_VIEWS] 16 뷰포트당 비트 - FSR 왜곡 사용
RenderState[state_id].OR_RED_FSR_EN 1 모든 뷰포트 FSR_EN의 논리합 감소
도 6은 일부 실시 예에 따라 왜곡 함수를 구현하기 위해 사용되는 수평 왜곡 함수(605) 및 수직 왜곡 함수(610)를 나타내는 플롯 세트(600)이다. 수평 왜곡 함수(605) 및 수직 왜곡 함수(610)는 도 1에 도시된 왜곡 함수(109), 도 2에 도시된 전자 기기(205), 도 3에 도시된 전자 기기(305), 도 4에 도시된 왜곡 함수(415) 및 도 5에 도시된 왜곡 함수(515)의 일부 실시 예에서 구현된다. 수평 왜곡 함수(605) 및 수직 왜곡 함수(610)는 하나 이상의 레지스터에 저장된 상태 정보에 기초하여 구성 가능한 하드웨어로 구현된다.양쪽 눈에 대해, 상태 데이터는 수평 왜곡 함수(605) 및 수직 왜곡 함수(610)를 정의하여 래스터 스페이스의 좌표들 X, Y를 윈도우 스페이스에서의 x, y 좌표들로 매핑한다. 일부 실시 예에서, 수직 방향 및 수평 방향의 광학 중심은 HMD 제조 사양 또는 응용 프로그램 인터페이스(API)에 기초하여 결정된다. 왜곡 함수는 통상적으로 2D 함수이고 API를 통해 HMD 드라이버로부터 질의될 수 있다. 광학 중심은 렌더 타겟에서 샘플링된 두 픽셀 사이의 거리가 가장 작은 위치에 대응한다. 중심이 발견되면, 수직 중심에서 수평 왜곡 함수(605)를 나타내는 곡선이 추출되고, 수평 중심에서 수직 왜곡 함수(610)를 나타내는 곡선이 추출된다. 왜곡 곡선이 수립되면, 시스템은 하드웨어에서 수평 왜곡 함수(605) 및 수직 왜곡 함수(610)를 나타내는 데 사용되는 8개의 세그먼트의 매끄러운 조각조각의 함수의 매개 변수들을 결정한다.
수평 왜곡 함수(605) 및 수직 왜곡 함수(610)는 화살표들(615, 620, 625, 630)로 나타낸 바와 같이, 이미지를 왜곡시키거나 이미지에 왜곡이 없게 하는 데 사용된다.
도 7은 일부 실시 예에 따라 수평 왜곡 함수 또는 수직 왜곡 함수를 나타내는 왜곡 곡선(705)의 도해(700)이다. 왜곡 곡선(705)은 도 1에 도시된 왜곡 함수(109), 도 2에 도시된 전자 기기(205), 도 3에 도시된 전자 기기(305), 도 4에 도시된 왜곡 함수(415) 및 도 5에 도시된 왜곡 함수(515)의 일부 실시 예에서 구현된다. 왜곡 곡선(705)은 하나 이상의 레지스터에 저장된 상태 정보에 기초하여 구성 가능한 하드웨어로 구현된다. 왜곡 곡선(705)은 좌표들을 윈도우 스페이스으로부터 래스터 스페이스으로 매핑하는 데 사용되는 왜곡 곡선의 표현의 일례를 도시한다. 그러나, 왜곡 곡선들의 그 외 다른 실시 예들이 그 외 다른 매개 변수화 또는 윈도우 대 래스터 스페이스 매핑의 기능적 표현들을 사용하여 표현된다.
왜곡 곡선(705)은 윈도우 스페이스로부터 래스터 스페이스으로의 하나의 좌표의 매핑을 나타낸다. 윈도우 스페이스 좌표는 수직축 상에 표현되고 래스터 스페이스 좌표는 수평축 상에 표현된다. 왜곡 곡선(705)이 X 좌표의 매핑을 나타내는 경우, 왜곡 곡선(705)은 수평 왜곡 함수를 나타낸다. 왜곡 곡선이 Y 좌표의 매핑을 나타내는 경우, 왜곡 곡선(705)은 수직 왜곡 함수를 나타낸다. 명확성을 위해, 이하의 논의는 왜곡 곡선(705)이 X 좌표를 윈도우 스페이스으로부터 래스터 스페이스으로 매핑하는 수평 왜곡 함수를 나타낸다고 가정한다. 왜곡 곡선(705)이 대각선(715)상의 위치 지점들(710)(명확성을 위해 참조 번호로 표시된 것만)에 매핑되는 경우, 왜곡이 없고 윈도우 스페이스의 x는 래스터 스페이스에서의 X와 동일하다.
도시된 실시 예에서, 왜곡 곡선(705) 상에서의 지점들(720)(명확성을 위해 참조 번호로 표시된 것만)의 위치는 상태 데이터에 의해 제어된다: YPosition, YPositionShift, XPosition, XPositionShift. 점들(720)의 위치들을 나타내는 위치 값들은 공통 PositionShift가 적용된 후 왜곡 표의 대각선(715) 상에 동일한 간격으로 배치된 7개의 점(710)으로부터 수평 및 수직 차이로서 저장된다. 그러나, 전술한 바와 같이, 왜곡 곡선(705)의 일부 실시 예는 상이한 개수의 점으로 표현되며, 이는 반드시 동일한 간격으로 배치될 필요는 없다. 또한, 일부 실시 예에서 스플라인, 다항식, 또는 다른 파라 메트릭 곡선과 같은 연속 함수 또는 단편 연속 함수가 포인트(720)의 위치를 식별하는 데 사용된다.
PositionShift 값은 대각선과 가장 큰 위치 차이를 포함하는 두 값의 다음 거듭 제곱의 지수를 찾아서 결정된다. 왜곡에 사용되는 기능이 단조 증가함에 따라 위치 값이 수평 및 수직으로 증가한다. 예를 들어, 포인트(710)의 좌표는 XPosition 및 YPosition의 대응하는 값에 의해 결정된다. 왜곡 곡선(705)상의 포인트(720)의 위치는 그 후 화살표(725, 730)로 표시된 YPositionShift 및 XPositionShift 값에 의해 포인트(710)에 대해 결정된다. 그런 다음 알파 값을 사용하여 가장 가까운 X, Y 위치 사이에서 곡선의 곡률을 수정하여 곡선이 점(720)의 원하는 위치를 통과하도록 한다. 점(720)의 위치가 결정되면, 매끄러운 왜곡 곡선(705)을 생성하기 위해(알파 값을 사용하여) 한 조각의 곡선이 선택된다.
도 8은 일부 실시 예에 따라 매끄러운 곡선(805)을 형성하기 위해 사용되는 조각마다의 곡선(800)의 선택을 도시한다. 왜곡 곡선(805)은 도 7에 도시된 왜곡 곡선(705)의 일부 실시 예를 나타낸다. 도시된 실시 예에서, 왜곡 곡선(805)을 결정하는 한 세트의 포인트는 예를 들어 대각선상의 포인트의 위치 및 대응하는 오프셋에 기초하여 구성되었다. 플롯(810)은 바운딩 박스(815)에 의해 식별된 섹션에서 평활 한 왜곡 곡선(805)을 형성하는데 사용되는 조각 별 곡선(800)으로서 선택될 수 있는 후보 조각 별 곡선 세트를 도시한다. 예시된 실시 예에서, 조각 별 곡선(800)은 후보 조각 별 곡선의 세트로부터 선택되었다.
후보 조각 별 곡선의 형태는 곡선이 경계 박스(815)의 좌측 하단에서 경계 박스(815)의 우측 상단으로 이동하는 방법을 정의하는 알파 값에 의해 결정된다. 위치 값 배치의 선택은 검색 스페이스를 사용하여 부드러운 왜곡 곡선(805)을 생성하여 실제 광학 곡선과 대각선을 캡슐화하여 언더 샘플링을 방지하는 최상의 조각 별 곡선 세트를 찾는다. 일 실시 예에서, 포인트는 동일한 수평 분리로 배치되고, 잠재적 인 수직 위치 및 알파 값이 검색된 후, 수평 간격의 이동 및 다른 값으로 조정되어 최상의 곡선 매칭을 찾는다. 구간 별 곡선(800)을 나타내는 알파 값은 샘플링 방법을 사용하여 선택된다. 예를 들어, 왜곡 곡선(805)은 세그먼트의 중간 점에서 샘플링되고 알파 값은 왜곡 곡선(805)의 샘플링된 지점에서(창 스페이스에서의) x 좌표 값에 기초하여 결정된다. 다른 예에서, 왜곡 곡선(805)상의 다수의 포인트가 샘플링되고 알파 값은 x 좌표 값의 평균에 기초하여 결정된다. 또 다른 예에서, 왜곡 곡선(805)상의 다수의 포인트가 샘플링되고 샘플링된 x 좌표 값에 대해 가장 작은 제곱 오차 합계를 갖는 알파 값이 선택된다.
도 9는 일부 실시 예에 따른 왜곡 곡선(905)의 중심와 변형(fovea modification)을 도시한 플롯 집합(900)이다. 그래프(910)는 중심 시선 방향(920) 및 중심 시선 방향(920)으로부터 편심이 증가함에 따라 시력의 감소를 나타내는 왜곡 곡선(905) 및 중심와 곡선(915)을 도시한다. 그래프(925)는 중심 시선 방향(920)에 대응하는 X, Y 위치에서 및 대응하는 경계 영역 내에서 해상도를 증가시키는 수정된 왜곡 곡선(930)을 도시한다. 수정된 왜곡 곡선(930)은 규정된 폴오프로 해상도를 높이기 위해 중심와 곡선(915)으로 변형된다. 일부 실시 예에서, 왜곡 곡선(905)의 중심와 변형은 포베 아 내부의 패킹을 감소시키기 위해 시각 주변부에서의 간격을 상응하는 양만큼 증가시키기 때문에 픽셀 셰이딩 비용을 증가시키지 않는다. 경우에 따라, 추가의 픽셀 렌딩이 포아 영역에 추가된다.
일부 실시 예에서, 윈도우의 경계를 나타내는 상태 정보, 예를 들어 윈도우의 우측 하단 및 좌측 상단의 좌표는 렌더링되는 픽셀의 수를 조정하도록 변경된다. 이 경우, 뷰포트 변환 폭/높이에 의해 사용되는 폭 및 높이뿐만 아니라 오프셋을 나타내는 상태 정보는 윈도우 크기의 백분율 변화에 대응하는 퍼센트만큼 변화된다. 뷰포트에서 전체 화면 뷰포트와 미러 또는 창 렌더링의 비율이 동일하다. 좌표가 0에서 1까지의 범위에 있고 텍스처 크기로만 크기를 조정하기 때문에 각 반음계 샘플에 대한 버퍼를 샘플링하는 삼각형/쿼드 메쉬 또는 계산 셰이더는 동일한 UV 메쉬를 사용한다.
도 10은 일부 실시 예에 따라 균등하게 이격된 픽셀들의 래스터 스페이스(1005) 및 비균등하게 이격된 픽셀들의 윈도우 스페이스(1010) 내 기초 요소(1000)의 부분들을 나타내는 타일들의 비닝(binning)을 도시한다. 비닝은 도 1에 도시된 그래픽 파이프라인(100)의 일부 실시 예에서 구현된다. 도시된 실시 예에서, 빈(1015)은 다수의 더 작은 빈으로 세분된다. 본 명세서에 개시된 바와 같은 왜곡 함수를 구현하기위한 최소 빈 크기는 일부 경우 32x32이며,이 크기는 도 1에 도시된 스캔 변환기(110)와 같은 스캔 변환기의 래스터 화 타일의 크기에 대응하기 때문이다. 그러나 최소 출력 함 크기를 포함한 크기는 디자인 선택의 문제이다. 그래픽스 파이프 라인의 일부 실시 예는 그래픽 처리 시스템의 타겟 비닝 특성들 또는 그 외 다른 특성들에 따라 더 크거나 더 작은 빈들, 예를 들어, 16x16 이하를 생성하는 비너(이를테면 기초 요소 배치 비너 또는 드로우 스트림 비닝 래스터화기)를 포함한다.
균일 래스터 스페이스(1005)에서의 비닝은 프리미티브(1000)에 의해 접촉된 서브-빈(1025)을 식별하기 위해 빈(1015) 내의 균일 픽셀(1020)(명확성을 위해 참조 번호로 표시된 것만)과 프리미티브(1000)의 교차점을 사용한다.
불균일 한 윈도우 스페이스(1010)에서, 추가 유닛(이하, 플렉서블 빈 워커(FBW)로 지칭 됨)은 더 큰 빈을 분할하고 왜곡 함수에 의해 결정된 목적지 해상도에서 왜곡된 빈 경계에 대한 질의를 수행하기 위해 사용된다. 예를 들어, 빈(1015)은 프리미티브(1000)에 의해 접촉된 서브 빈(1035)을 식별함으로써 왜곡된 픽셀(1030)에 기초하여 세분된다. 따라서 FBW는 출력 함 크기가 더 크게 구성된 경우 32x32 해상도에서 왜곡된 형상을 생성할 수 있다. 일부 구체 예에서, 분해도는 다수의 빈을 단일 왜곡된 빈로 조합함으로써 변형될 수 있으며, 이는 16 x 16 빈 해상도와 32 x 32 경사 입도를 가능하게한다. FBW의 일부 실시 예는 X 및 Y에 대해 별도로 2 개의 부호있는 3 비트 레지스터를 통해 제어된다. 양수 값은 빈(1015)이 뒤틀림을 위해 더 분할될 것임을 나타내고, 음수 값은 빈(1015)이 더 큰 날실을 위해 결합될 것임을 나타낸다. 3의 최대 스플릿 카운트는 빈(1015)이 8개의 왜곡된 빈으로 분할됨을 나타낸다. 실제로 이것은 256x256 빈 크기가 32x32 랩 빈 크기로 나눌 수 있는 가장 큰 빈 크기라는 것을 의미한다. 위에서 논의된 바와 같이, 본 명세서에서 논의된 특정 빈 크기는 예시적인 것이며 일부 실시 예는 그래픽 처리 시스템의 특성에 따라 더 크거나 작은 빈 크기를 구현한다.
FBW가 더 큰 빈(1015)을 세분 할 때, 프리미티브(1000)와 교차하는 각각의 서브 빈(1025, 1035)에 대해서만 출력이 생성된다. 닿지 않은 서브 빈을 유지하기 위해 클럭 사이클이 소비되지 않는다. 각 서브-기초 요소 출력은 스캔 컨버터에 의한 왜곡 기능에 따라 적절하게 왜곡된다. 비너의 일부 실시 예는 각각의 32x32 영역에 대한 왜곡 함수에 기초하여 고유 한 출력 왜곡을 지원하기 위해 최대 256x256 빈 크기로 제한된다. 비너가 더 큰 빈 크기를 사용하는 경우 왜곡 기능의 효과는 거친 입자이다. 비너, FBW 및 스캔 변환기는 균일 한 래스터 스페이스에서 동작하지만, 왜곡 기능을 포함하면 도 10에 도시된 불균일 한 윈도우 스페이스(1010)에 의해 도시된 바와 같이 기하 구조의 프리미티브/서브 프리미티브 왜곡된 윈도우 스페이스 뷰를 제공한다. 256x256 빈 크기 이하의 경우, 32x32 래스터 스페이스 영역 당 지오메트리에 왜곡 기능이 적용된다. 위에서 설명한 알파가 포함된 프로그램 가능한 8 세그먼트 LUT는 비너와 FBW에 모두 사용된다.
도 11은 일부 실시 예에 따라 기초 요소 경계 박스의 왜곡된 래스터 뷰와의 비교에 기초한 기초 요소들의 왜곡-인식 라우팅(1100)을 도시한다. 도 1에 도시된 입력 어셈블러(102)와 같은 프리미티브 어셈블러는 바운딩 박스(1105)를 사용하여 프리미티브(1110)를 적절한 셰이더 엔진 및 래스터 화를위한 스캔 컨버터로 라우팅한다. 그러나, 왜곡 함수는 래스터 스페이스에서 프리미티브(1110)의 균일 한 간격의 픽셀로의 매핑을 변경한다. 예를 들어, 왜곡되지 않은 래스터 스페이스(1115)에서 바운딩 박스(1105)는 전적으로 대응하는 셰이더 엔진 및 스캔 변환기로 라우팅되는 단일 픽셀 내에 있다. 그러나, 래스터 스페이스의 왜곡된 뷰(1120)에서, 바운딩 박스(1105)는 불균일하게 이격된 4 개의 픽셀과 중첩된다. 결과적으로, 프리미티브 어셈블러는 프리미티브(1110)를 적절한 셰이더 엔진 및 스캔 컨버터로 라우팅하기 위해 다른 라우팅 결정을 한다.
프리미티브 어셈블러의 일부 실시 예는 프리미티브(1110)의 라우팅을 수행하기 위해 왜곡 함수의 역을 사용한다. 예를 들어, 역 왜곡 함수는 프리미티브의 래스터 뷰를 생성하기 위해 바운딩 박스(1105)의 경계를 정의하는 4 개의 값(minx, miny, maxx, maxy)에 적용된다. 일부 실시 예들에서, 다음의 코드 단편은 바운딩 박스의 래스터 라이저/스캔 변환기(SC) 뷰를 생성하는데 사용된다.
//SC(s) 기초 요소 라우팅을 결정하기 위한 경계 박스의 래스터화기 뷰를 획득
def undistortBBox(x0,y0,x1,y1,x2,y2) :
minx = self.undistort_coord(min(x0,x1,x2))
miny = self.undistort_coord(min(y0,y1,y2))
maxx = self.undistort_coord(max(x0,x1,x2))
maxy = self.undistort_coord(max(y0,y1,y2))
return(minx, miny, maxx, maxy)
비너/수직 래스터 라이저의 일부 실시 예는 프리미티브 어셈블러가 셰이더 엔진을 선택하기 위해 사용하는 것과 동일한 바운딩 박스(1105)의 휨을 이용하여 수직 빈 행을 결정한다.
도 12는 일부 실시 예에 따른 기초 요소들의 비닝을 도시하는 그래픽 파이프라인의 일 부분(1200)의 블록도이다. 그래픽 파이프라인(100)의 일 부분(1200)은 도 1에 도시된 그래픽 파이프라인(100)의 일부 실시 예에서 구현된다. 도시된 실시 예에서, 기초 요소(1205)가 본 명세서에서 논의되는 바와 같이, 윈도우 스페이스에 비균등하게 이격된 픽셀들의 렌더링을 수행하는 지오메트리 셰이더(1210)에 제공된다. 지오메트리 셰이더(1210)는 렌더링된 윈도우 스페이스 픽셀들을 왜곡 함수(1215)에 제공하며, 이는 하드웨어로 구현되고 레지스터들의 값들을 기반으로 구성 가능하다.
비너(1220)는 지오메트리 셰이더(1210)로부터 왜곡 함수(1215)를 통해 삼각형들과 같은 기초 요소들의 배치를 수신한다. 비너(1220)의 일부 실시 예는 2 스테이지으로 동작한다: 수직 및 수평. 수직 스테이지는 다음 질문에 응답한다: "현재 배치 중 어느 삼각형들이 빈 로우 Y에 닿는지". 수평 스테이지는 다음 질문에 응답한다: "빈 로우 Y의 어느 삼각형들이 빈 X에 닿는지". 비너(1220)는 배치의 임의의 삼각형에 의해 닿아질 수 있는 각각의 빈에 대한 이러한 질문들에 응답한다. 각각의 빈에 대해, 비너(1220)는 스캔 컨버터(1225)쪽 빈에 닿는 각각의 삼각형을 전송한다. 비너(1220)는 스캔 컨버터(1225)가 단지 현재 빈 내만 래스터화하도록 현재 빈 주변에 시저 직사각형(scissor rectangle)을 셋팅한다. 몇몇 경우, 삼각형 버텍스 위치들은 고정 지점 24-비트 XY 좌표들이다. 그에 따라, 비너(1220)는 왜곡 함수(1215)에 기초하여 스캔 컨버터(1225)에 상이한 뷰의 지오메트리를 제시하며, 그에 따라 스캔 컨버터(1225)에 의해 처리되는 각각의 빈이 HMD(1235)와 같은 디스플레이 기기에 제공되는 디스플레이 픽셀들을 생성하기 위해 윈도우의 고유한 해상도를 처리할 수 있게 된다.
지오메트리 파이프라인의 일 부분(1200)의 일부 실시 예는 상술된 방식으로 동작하는 유연한 빈 워커(bin walker)(1230)를 포함한다. 유연한 빈 워커(1230)는 파선으로 나타낸 바와 같이, 지오메트리 파이프라인의 일 부분(1200)에 반드시 구현되지는 않아도 되는 임의적인 요소이다.
비너(1220)의 일부 실시 예는 도 6에 도시된 수직 및 수평 왜곡 함수들(605, 610)과 같은 수직 및 수평 왜곡 함수들에 따라 수직 및 수평 래스터화를 수행한다. 비너(1220)에서의 수직 래스터화는 각각의 삼각형의 수직 규모들을 계산 및 저장한다. 이러한 해상도 정보는 빈 로우들에 있다. 수직 규모의 계산은 다중 해상도 렌더링 없이, 그것이 정확한 수의 MSB 비트를 픽하는 것만을 필요로 함에 따라 매우 저렴하다. 다중 해상도 렌더링을 이용하면, 수직 래스터화기는 기초 요소 어셈블러가 셰이더 엔진 선택에 대해 그러한 바와 동일한 왜곡이 없는 경계 박스를 계산한다. 몇몇 경우, 수직 래스터화기는 경계 박스의 수직 규모들을 왜곡시키나, 경계 박스의 수평 부분이 또한 계산될 경우에는, 수직 래스터화기를 사용하여 좁고 긴 삼각형들에 대한 긍정 오류 빈 로우들이 제거된다. 다중 셰이터 엔진 구성들을 아용하면 각각의 빈 컬럼이 현재 비너(1220)에 속하지 않는 빈 로우들을 갖는 특정 패턴을 갖기 때문에 이러한 작업에 대해서는 수직 래스터화기가 바람직하다. 그에 따라, 수직 래스터화기는 왜곡이 없는 경계 박스의 계산을 추가하도록 변형된다. 다음 수도 코드는 삼각형에 의해 가로 막히는 빈들을 결정하기 위한 예시적인 기술이다.
삼각형이 가로 막는 처음과 마지막 범위 로우들을 결정
//경계 박스 상하단의 래스터화기 뷰를 획득
miny = self.undistort_coord(min(y0,y1,y2))
maxy = self.undistort_coord(max(y0,y1,y2))
// 삼각형이 닿는 처음과 마지막 빈 로우 정수를 획득
firstY = math.floor(miny * self.yBinCount)/self.yBinCount
lastY = math.ceil(maxy * self.yBinCount)/self.yBinCount
수평 래스터화기는 수직 래스터화기로부터의 현재 빈 로우 Y를 연속적인 클록 사이클 상에서 현재 빈 포우 Y에 닿는 모든 삼각형과 함께 수신한다. 수평 래스터화기가 각 삼각형을 수신한 것에 대한 응답으로, 수평 래스터화기는 삼각형이 빈 로우 상하단 경계들에 닿는 극좌 및 극우 교차점들을 계산한다. 다중 해상도 렌더링을 가능하게 하기 위해, 수평 래스터화기는 또한 수평 교차 지점들의 해를 구하기 위해 사용될 빈 로우 상하단 Y 좌표들을 왜곡시키도록(왜곡 함수를 기반으로) 그리고 계산된 수평 교차 지점들을 왜곡이 없게 하도록(왜곡 함수를 기반으로) 구성되어 수평 범위가 어떤 빈들을 커버하는지 결정한다. 다음 수도 코드는 수평 래스터화기에 의해 수행되는 처리의 일례이다.
//수평 처리
for i in range(self.yBinCount) :
# 왜곡 샘플 로우들을 사용
topY = self.distort_coord(sampleRows[i])
botY = self.distort_coord(sampleRows[i + 1])
binSpan = self.getBinRowExtents(topY, botY, x0, y0, x1, y1, x2, y2)
if binSpan :
# 왜곡이 없는 범위 좌우 종점들
lx, rx = binSpan
lx = self.undistort_coord(lx)
rx = self.undistort_coord(rx)
비너(1220)는 삼각형들을 스캔 컨버터(1225)에 현재 빈 경계들로 셋팅되는 시저 직사각형과 함께 출력한다. 다중 해상도 렌더링을 이용하여, 각각의 빈"을 통해" 보여지는 원래 뷰포트의 양이 상이하다. 이는 각각의 빈에 대한 고유한 스케일 및 오프셋을 계산하여 스캔 컨버터(1225)에 전송되기 전 삼각형 버텍스들에 적용함으로써 이루어진다. 더 큰 빈들의 경우, FBW(1230)이 빈들을 세분 또는 종합할 수 있는 그것의 능력 내에서 출력 빈 크기를 조절하도록 프로그래밍된다. 일부 실시 예에서, 스케일 및 오프셋은 시저 직사각형 좌표들을 래핑된 스페이스으로 래핑하고 원래와 래핑된 시저 직사각형들 간 크기 및 오프셋 차이를 계산함으로써 계산된다. 스케일 및 오프셋은 버텍스 XY 위치들을 변형시킨다. 이는 기울기 설정 계산을 기초 요소 어셈블러로부터 스캔 컨버터(1225)로 이동시킴으로써 구현된다. 그렇지 않으면, 비너(1220)의 출력은 또한 무게 중심 및 Z 기울기를 스케일링해야 할지 모르며, 이는 추가 산술을 필요로 할 것이다. 다음 수도 코드는 비너(1220) 및 FBW(1230)의 예시적인 동작을 도시한다.
//출력 및 FBW - 각 출력을 생성하기 위한 distortTriangleToBin 호출
def distortTriangleToBin(self, binX0, binY0, binX1, binY1, x0, y0, x1, y1, x2, y2) :
# 빈 직사각형을 왜곡된 샘플 스페이스로 왜곡
wx0 = self.xdistort_coord.get(binX0)
wy0 = self.ydistort_coord.get(binY0)
wx1 = self.xdistort_coord.get(binX1)
wy1 = self.ydistort_coord.get(binY1)
# 크기 차이로부터 X & Y 스케일 팩터들을 계산 
# 왜곡이 없는 그리고 왜곡된 빈 직사각형 사이
xScale =(binX1 - binX0)/(wx1 - wx0)
yScale =(binY1 - binY0)/(wy1 - wy0)
# 이는 다음과 같도록 삼각형을 변환하는 데 사용된다
# 왜곡된 빈 직사각형 코너가 원점에 오도록
preXTrans = -wx0
preYTrans = -wy0
# 이는 다음과 같도록 삼각형을 역변환하는 데 사용된다
# 삼각형이 빈에 관해 왜곡된다
postXTrans = binX0
postYTrans = binY0
# 삼각형을 변환
tx0 =(x0 + preXTrans) * xScale + postXTrans
ty0 =(y0 + preYTrans) * yScale + postYTrans
tx1 =(x1 + preXTrans) * xScale + postXTrans
ty1 =(y1 + preYTrans) * yScale + postYTrans
tx2 =(x2 + preXTrans) * xScale + postXTrans
ty2 =(y2 + preYTrans) * yScale + postYTrans
return(tx0, ty0, tx1, ty1, tx2, ty2)
요약하면, 기초 요소 어셈블러는 기초 요소를 획득하는 셰이더 엔진을 결정하기 위해 삼각형 경계 박스에 왜곡이 없게 하도록 구성된다. 비너(1220)에서 수직 래스터화기는 기초 요소에 대한 경계 박스에 왜곡이 없게 하고 수평 래스터화기는 빈 로우의 상하단 경계들을 왜곡시킨다. 수평 래스터화기는 또한 수평 범위 종점들에 왜곡이 없게 한다. 비너(1220), 그리고 몇몇 경우 FBW(1230)로부터의 출력은 현재 빈에 대한 스케일 및 오프셋을 계산하고 삼각형 버텍스 위치들에 스케일 및 오프셋을 적용하기 위해 사용된다. 그 다음 설정 함수는 비너(1220) 다음 그래픽 파이프라인에서의 지점으로 이동된다. 이는 설정 유닛이 비너(1220) 또는 FBW(1230)에 의한 새로운 그리고 변형된 삼각형 버텍스 위치들의 출력을 사용하여 정상적으로 삼각형 경사들을 계산하게 한다.
도 13은 일부 실시 예에 따라 왜곡 함수를 통해 윈도우 스페이스 내 비균등한 픽셀들을 샘플링 렌더링하기 위한 방법(1300)의 흐름도이다. 방법(1300)은 도 1에 도시된 그래픽 파이프라인(100), 도 2에 도시된 전자 기기(205) 및 도 3에 도시된 전자 기기(305)의 일부 실시 예에서 구현된다.
블록 1305에서, 지오메트리 파이프라인은 윈도우 스페이스에 비균등한 픽셀 간격으로 픽셀들을 렌더링한다. 블록 1310에서, 윈도우 스페이스에 비균등하게 이격된 픽셀들이 왜곡 함수를 통해 샘플링된다. 블록 1315에서는, 스캔 컨버터가 래스터 스페이스에 균등하게 이격된 픽셀들에 기초하여 디스플레이 픽셀들을 렌더링한다. 균등하게 이격된 픽셀은 왜곡 함수를 통해 비균등하게 이격된 픽셀을 샘플링함으로써 결정된다. 블록 1320에서, 디스플레이 픽셀들에 기초하여 사용자에게 디스플레이하기 위한 이미지가 생성된다.
일부 실시 예에서, 상술된 장치 및 기술들은 도 1 내지 도 13을 참조하여 상술된 그래픽 파이프라인과 같이 하나 이상의 집적 회로(IC) 기기(또한 집적 회로 패키지들 또는 마이크로 칩들이라고도 지칭됨)를 포함하는 시스템으로 구현된다. 전자 설계 자동화(EDA) 및 컴퓨터 이용 설계(CAD) 소프트웨어 툴들이 이들 IC 기기의 설계 및 제조를 위해 사용될 수 있다. 이들 설계 툴은 통상적으로 하나 이상의 소프트웨어 프로그램으로서 표현된다. 하나 이상의 소프트웨어 프로그램은 회로를 제조하도록 제조 시스템을 설계 또는 적응시키기 위한 프로세스의 적어도 일부를 수행하기 위해 하나 이상의 IC 기기의 회로를 나타내는 코드 상에서 작동하기 위해 컴퓨터 시스템을 조작하도록 컴퓨터 시스템에 의해 실행가능한 코드를 포함한다. 이러한 코드는 명령들, 데이터, 또는 명령들 및 데이터의 조합을 포함한다. 설계 툴 또는 제조 툴을 나타내는 소프트웨어 명령들은 통상적으로 컴퓨팅 시스템에 액세스가능한 컴퓨터 판독가능한 저장 매체에 저장된다. 마찬가지로, IC 기기의 설계 또는 제조의 하나 이상의 단계를 나타내는 코드가 동일한 컴퓨터 판독가능한 저장 매체 또는 상이한 컴퓨터 판독가능한 저장 매체에 저장되고 그것으로부터 액세스될 수 있다.
컴퓨터 판독 가능한 저장 매체는 컴퓨터 시스템에 명령들 및/또는 데이터를 제공하기 위해 사용 중 컴퓨터 시스템에 의해 액세스 가능한 임의의 비일시적 저장 매체 또는 비일시적 저장 매체들의 조합을 포함할 수 있다. 그러한 저장 매체들은 이에 제한되지는 않으나, 광 매체들(예를 들어, 컴팩트 디스크(CD), 디지털 다목적 디스크(DVD), 블루-레이 디스크), 자기 매체들(예를 들어, 플로피 디스크, 자기 테이프 또는 자기 하드 드라이브), 휘발성 메모리(예를 들어, 랜덤 액세스 메모리(RAM) 또는 캐시), 비휘발성 메모리(예를 들어, 판독 전용 메모리(ROM) 또는 플래시 메모리) 또는 미세 전자 기계 시스템들(MEMS)-기반 저장 매체들을 포함할 수 있다. 컴퓨터 판독 가능한 저장 매체는 컴퓨팅 시스템(예를 들어, 시스템 RAM 또는 ROM)에 내장되거나, 컴퓨팅 시스템(예를 들어, 자기 하드 드라이브)에 고정적으로 부착되거나, 컴퓨팅 시스템(예를 들어, 광 디스크 또는 유니버셜 시리얼 버스(USB)-기반 플래시 메모리)에 착탈 가능하게 부착되거나, 또는 유선 또는 무선 네트워크(예를 들어, 네트워크 액세스 가능 저장 장치(NAS))를 통해 컴퓨터 시스템에 결합될 수 있다.
일부 실시 예에서, 상술한 기술들의 특정 양태들은 소프트웨어를 실행하는 프로세싱 시스템의 하나 이상의 프로세서에 의해 구현될 수 있다.  소프트웨어는 비 일시적 컴퓨터 판독 가능한 저장 매체 상에 저장된 또는 그 외 다르게 유형으로 구현된 실행가능한 명령들의 하나 이상의 세트를 포함한다.  소프트웨어는 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서를 상술한 기술들의 하나 이상의 양태를 수행하도록 조작하는 명령들 및 특정 데이터를 포함한다. 비 일시적 컴퓨터 판독 가능한 저장 매체는 예를 들어, 자기 또는 광 디스크 저장 장치, 플래시 메모리와 같은 고체 상태 저장 장치들, 캐시, 랜덤 액세스 메모리(RAM) 또는 다른 비 휘발성 메모리 장치 또는 장치들 등을 포함할 수 있다. 비일시적 컴퓨터 판독 가능한 저장 매체 상에 저장되 실행 가능한 명령들은 소스 코드, 어셈블리 언어 코드, 객체 코드 또는 하나 이상의 프로세서에 의해 해석되거나 그 외 다르게 실행 가능한 그 외 다른 명령 포맷을 가질 수 있다.
일반적인 설명으로 상술된 모든 동작 또는 요소가 필수적인 것은 아니라는 것, 특정 동작 또는 기기의 일 부분이 요구되지 않을 수 있다는 것, 그리고 설명된 것들에 더하여, 하나 이상의 추가 동작이 수행되거나 요소들이 포함될 수 있다는 것을 유념한다. 더 나아가, 동작들이 나열된 순서는 반드시 그것들이 수행되는 순서는 아니다. 또한, 개념들은 구체적인 실시 예들을 참조하여 설명되었다. 그러나, 해당 기술분야의 통상의 기술자는 아래 청구범위에 제시된 바에 따라 본 발명의 범위에서 벗어나지 않고 다양한 변경 및 변화가 이루어질 수 있다는 것을 이해한다. 따라서, 본 명세서 및 도면들은 제한적인 의미가 아니라 예시적인 의미로 해석되어야 하고, 모든 그러한 변경이 본 발명의 범위 내에 포함되는 것으로 의도된다.
혜택들, 다른 이점들, 및 문제들에 대한 솔루션들이 구체적인 실시 예들에 관하여 상술되었다. 그러나, 혜택들, 이점들, 문제들에 대한 솔루션들, 및 임의의 혜택, 이점, 또는 솔루션이 발생하거나 보다 현저해지게 할 수 있는 임의의 특징(들)이 임의의 또는 모든 청구항의 임계적, 필수적 또는 본질적 특징인 것으로 간주되지는 않아야 한다. 또한, 위에서 개시된 특정 실시 예들은 개시된 주제가 본 명세서에서의 교시 내용의 혜택을 받는 해당 기술분야의 통상의 기술자들에게 분명한 상이하나 균등한 방식들로 변경 및 실시될 수 있음에 따라 단지 예시적인 것이다. 아래 청구범위에서 설명되는 것 이외에, 제시되는 본 명세서에서의 구성 또는 설계의 세부 사항에 어떠한 제한도 의도되지 않는다. 따라서 위에서 개시된 특정 실시 예들이 대체 또는 변경될 수 있고 모든 그러한 변형 예가 개시된 주제의 범위 내로 고려된다는 것이 명백하다. 따라서, 본 명세서에서 추구되는 보호는 아래 청구범위에 제시된 바에 따른다.

Claims (20)

  1. 방법으로서,
    그래픽 파이프라인(100)에서, 윈도우 스페이스에 비균등한 픽셀 간격으로 픽셀들을 렌더링하는 단계;
    스캔 컨버터(110, 1225)를 이용하여, 윈도우 스페이스(405, 510) 내 상기 픽셀들을 윈도우 스페이스에 비균등하게 이격된 상기 픽셀들을 래스터 스페이스(410, 520)에 균등하게 이격된 픽셀들에 매핑시키는 왜곡 함수(109, 515)를 통해 샘플링하는 단계; 및
    상기 래스터 스페이스에 균등하게 이격된 픽셀들에 기초하여 상기 스캔 컨버터에 의해 렌더링되는 디스플레이 픽셀들을 사용하여 사용자에게 디스플레이하기 위한 이미지를 생성하는 단계를 포함하는, 방법.
  2. 청구항 1에 있어서, 상기 윈도우 스페이스에 상기 비균등한 픽셀 간격으로 상기 픽셀들을 렌더링하는 단계는 입호각당 픽셀 밀도가 상기 사용자의 시야에 걸쳐 일정하도록 상기 윈도우 스페이스에 상기 픽셀들을 렌더링하는 단계를 포함하는, 방법.
  3. 청구항 2에 있어서, 상기 윈도우 스페이스에 상기 픽셀들을 렌더링하는 단계는 상기 입호각당 픽셀 밀도가 상기 사용자와 연관된 중심와 영역(225, 240)에서 상대적으로 높고 상기 사용자와 연관된 시각적 주변부(230, 250) 상에서는 상대적으로 낮도록 상기 윈도우 스페이스에 상기 픽셀들을 렌더링하는 단계를 포함하는, 방법.
  4. 청구항 1에 있어서, 상기 윈도우 스페이스 내 상기 픽셀들을 상기 왜곡 함수를 통해 샘플링하는 단계는 상기 윈도우 스페이스 내 상기 픽셀들을, 윈도우 스페이스에 비균등하게 이격된 픽셀들의 제1 치수를 래스터 스페이스에 균등하게 이격된 픽셀들에 매핑시키는 수직 왜곡 함수(610) 및 상기 윈도우 스페이스에 비균등하게 이격된 픽셀들의 제2 치수를 상기 래스터 스페이스에 균등하게 이격된 픽셀들에 매핑시키는 수평 왜곡 함수(605)를 통해 샘플링하는 단계를 포함하는, 방법.
  5. 청구항 4에 있어서, 상기 수직 및 수평 왜곡 함수들은 윈도우 스페이스에 균등하게 이격된 픽셀들을 상기 래스터 스페이스에서 균등하게 이격되는 픽셀들에 매핑시키는 선형 함수로부터의 대응하는 변위들의 집합에 의해 정의되는, 방법.
  6. 청구항 5에 있어서,
    상기 사용자에 대한 중심와 영역(225, 240)을 결정하는 단계; 및
    상기 수직 및 수평 왜곡 함수들을 상기 중심와 영역의 위치에 대응하는 상기 윈도우 스페이스의 일 부분에서 픽셀들의 해상도를 증가시키도록 변형시키는 단계를 더 포함하는, 방법.
  7. 청구항 1에 있어서,
    기초 요소(1000)에 대한 경계 박스(1105)를 상기 윈도우 스페이스에 비균등하게 이격된 픽셀들의 경계들과 비교하는 단계; 및
    상기 비교에 기초하여 상기 그래픽 파이프라인을 통해 상기 기초 요소를 라우팅하는 단계를 더 포함하는, 방법.
  8. 청구항 7에 있어서,
    상기 윈도우 스페이스에 비균등하게 이격된 픽셀들과 상기 기초 요소의 교차 부분들에 기초하여 상기 기초 요소에 대한 샘플들을 비닝(binning)하는 단계를 더 포함하는, 방법.
  9. 장치로서,
    윈도우 스페이스에 비균등한 픽셀 간격으로 픽셀들을 렌더링하는 그래픽 파이프라인을 구현하도록 구성된 적어도 하나의 프로세서(335);
    윈도우 스페이스(405, 510)에 비균등하게 이격된 상기 픽셀들을 래스터 스페이스(410, 520)에 균등하게 이격된 픽셀들에 매핑시키는 왜곡 함수(109, 515); 및
    스캔 컨버터(110, 1225)로서,
    상기 왜곡 함수를 통해 윈도우 스페이스 내 상기 픽셀들을 샘플링하도록; 그리고
    상기 래스터 스페이스에 균등하게 이격된 픽셀들에 기초하여 사용자에게 디스플레이하기 위한 이미지를 생성하는 데 사용되는 디스플레이 픽셀들을 렌더링하도록 구성된 스캔 컨버터를 포함하는, 장치.
  10. 청구항 9에 있어서, 상기 적어도 하나의 프로세서는 입호각당 픽셀 밀도가 상기 사용자의 시야에 걸쳐 일정하도록 상기 윈도우 스페이스에 상기 픽셀들을 렌더링하도록 구성되는, 장치.
  11. 청구항 10에 있어서, 상기 적어도 하나의 프로세서는 상기 입호각당 픽셀 밀도가 상기 사용자와 연관된 중심와 영역(225, 240)에서 상대적으로 높고 상기 사용자와 연관된 시각적 주변부(230, 250) 상에서는 상대적으로 낮도록 상기 윈도우 스페이스에 상기 픽셀들을 렌더링하도록 구성되는, 장치.
  12. 청구항 9에 있어서, 상기 스캔 컨버터는 윈도우 스페이스 내 상기 픽셀들을, 상기 윈도우 스페이스에 비균등하게 이격된 픽셀들의 제1 치수를 상기 래스터 스페이스에 균등하게 이격된 픽셀들에 매핑시키는 수직 왜곡 함수(610) 및 윈도우 스페이스에 비균등하게 이격된 픽셀들의 제2 치수를 래스터 스페이스에 균등하게 이격된 픽셀들에 매핑시키는 수평 왜곡 함수(605)를 통해 샘플링하도록 구성되는, 장치.
  13. 청구항 12에 있어서, 상기 수직 및 수평 왜곡 함수들은 윈도우 스페이스에 균등하게 이격된 픽셀들을 상기 래스터 스페이스에서 균등하게 이격되는 픽셀들에 매핑시키는 선형 함수로부터의 대응하는 변위들의 집합에 의해 정의되는, 장치.
  14. 청구항 13에 있어서, 상기 적어도 하나의 프로세서는:
    상기 사용자에 대한 중심와 영역(225, 240)을 결정하도록; 그리고
    상기 수직 및 수평 왜곡 함수들을 상기 중심와 영역의 위치에 대응하는 상기 윈도우 스페이스의 일 부분에서 픽셀들의 해상도를 증가시키도록 변형시키도록 구성되는, 장치.
  15. 청구항 9에 있어서, 상기 적어도 하나의 프로세서는:
    기초 요소(1000)에 대한 경계 박스(1005)를 윈도우 스페이스에 비균등하게 이격된 픽셀들의 경계들과 비교하도록; 그리고
    상기 비교에 기초하여 상기 그래픽 파이프라인을 통해 상기 기초 요소를 라우팅하도록 구성되는, 장치.
  16. 청구항 15에 있어서, 상기 적어도 하나의 프로세서는:
    상기 윈도우 스페이스에 비균등하게 이격된 픽셀들과 상기 기초 요소의 교차 부분들에 기초하여 상기 기초 요소에 대한 샘플들을 비닝하도록 구성되는, 장치.
  17. 머리 장착 기기(HMD)(300, 1235)로서,
    상기 HMD를 착용한 사용자에 이미지들을 제시하기 위한 디스플레이(320);
    윈도우 스페이스(405, 510)에 비균등한 픽셀 간격으로 픽셀들을 렌더링하는 그래픽 파이프라인(100)을 구현하도록 구성된 적어도 하나의 프로세서(335); 및
    스캔 컨버터(110, 1225)로서,
    윈도우 스페이스 내 상기 픽셀들을, 상기 윈도우 스페이스에 비균등하게 이격된 상기 픽셀들을 래스터 스페이스(410, 520)에 균등하게 이격된 픽셀들에 매핑시키는 제1 왜곡 함수(109, 105)를 통해 샘플링하도록; 그리고
    상기 래스터 스페이스에 균등하게 이격된 픽셀들에 기초하여, 상기 사용자에게 제시하기 위한 이미지들을 생성하기 위한 상기 디스플레이에 제공되는 디스플레이 픽셀들을 렌더링하도록 구성된, 상기 스캔 컨버터를 포함하는, HMD.
  18. 청구항 17에 있어서, 상기 적어도 하나의 프로세서는 입호각당 픽셀 밀도가 상기 사용자의 시야에 걸쳐 일정하도록 상기 윈도우 스페이스에 상기 픽셀들을 렌더링하도록 구성되는, HMD.
  19. 청구항 17에 있어서, 상기 적어도 하나의 프로세서는 상기 디스플레이에 제공하기 전 렌더링된 상기 디스플레이 픽셀들에 적용되는 제2 왜곡 함수를 구현하도록 구성되는, HMD.
  20. 청구항 17에 있어서, 상기 적어도 하나의 프로세서는:
    상기 사용자에 대한 중심와 영역(225, 240)을 결정하도록; 그리고
    상기 제1 함수를 상기 중심와 영역의 위치에 대응하는 상기 윈도우 스페이스의 일 부분에서 픽셀들의 해상도를 증가시키도록 변형시키도록 구성되는, HMD.
KR1020197031701A 2017-03-27 2018-03-15 단일 패스 유연 스크린/스케일 래스터화 KR102410351B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762477149P 2017-03-27 2017-03-27
US62/477,149 2017-03-27
US15/843,968 US10546365B2 (en) 2017-03-27 2017-12-15 Single pass flexible screen/scale rasterization
US15/843,968 2017-12-15
PCT/US2018/022693 WO2018182989A1 (en) 2017-03-27 2018-03-15 Single pass flexible screen/scale rasterization

Publications (2)

Publication Number Publication Date
KR20190125515A true KR20190125515A (ko) 2019-11-06
KR102410351B1 KR102410351B1 (ko) 2022-06-17

Family

ID=63583513

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197031701A KR102410351B1 (ko) 2017-03-27 2018-03-15 단일 패스 유연 스크린/스케일 래스터화

Country Status (6)

Country Link
US (1) US10546365B2 (ko)
EP (1) EP3602484A4 (ko)
JP (1) JP7050085B2 (ko)
KR (1) KR102410351B1 (ko)
CN (1) CN110462677A (ko)
WO (1) WO2018182989A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11087644B2 (en) 2015-08-19 2021-08-10 E Ink Corporation Displays intended for use in architectural applications
EP3465628B1 (en) 2016-05-24 2020-07-08 E Ink Corporation Method for rendering color images
GB2569574B (en) * 2017-12-20 2021-10-06 Sony Interactive Entertainment Inc Head-mountable apparatus and methods
CN115842907A (zh) * 2018-03-27 2023-03-24 京东方科技集团股份有限公司 渲染方法、计算机产品及显示装置
WO2020152754A1 (ja) * 2019-01-21 2020-07-30 株式会社ソニー・インタラクティブエンタテインメント 画像生成装置および画像生成方法
US11120591B2 (en) * 2019-05-31 2021-09-14 Apple Inc. Variable rasterization rate
US11954789B2 (en) 2019-07-02 2024-04-09 Interdigital Vc Holdings, Inc. System and method for sparse distributed rendering
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
GB2589325B (en) * 2019-11-26 2021-12-22 Sony Interactive Entertainment Inc Image rendering method and apparatus
GB2600944B (en) 2020-11-11 2023-03-01 Sony Interactive Entertainment Inc Image rendering method and apparatus
US11915384B2 (en) * 2021-04-22 2024-02-27 Sony Interactive Entertainment Inc. Estimation of optimal rasterization distortion function from image distortion property
GB2615362B (en) * 2022-02-08 2024-03-13 Sony Interactive Entertainment Inc Image processing system and method

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150287166A1 (en) * 2014-04-05 2015-10-08 Sony Computer Entertainment America Llc Varying effective resolution by screen location by altering rasterization parameters

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7385612B1 (en) 2002-05-30 2008-06-10 Adobe Systems Incorporated Distortion of raster and vector artwork
GB0710795D0 (en) 2007-06-05 2007-07-18 Arm Norway As Method of and apparatus for processing graphics
US9478066B2 (en) * 2013-03-14 2016-10-25 Nvidia Corporation Consistent vertex snapping for variable resolution rendering
US9443355B2 (en) 2013-06-28 2016-09-13 Microsoft Technology Licensing, Llc Reprojection OLED display for augmented reality experiences
US9836816B2 (en) * 2014-04-05 2017-12-05 Sony Interactive Entertainment America Llc Varying effective resolution by screen location in graphics processing by approximating projection of vertices onto curved viewport
US9495790B2 (en) * 2014-04-05 2016-11-15 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping to non-orthonormal grid
US9818201B2 (en) * 2014-12-22 2017-11-14 Lucasfilm Entertainment Company Ltd. Efficient lens re-distortion
US9704217B2 (en) 2015-04-20 2017-07-11 Intel Corporation Apparatus and method for non-uniform frame buffer rasterization
US10037620B2 (en) * 2015-05-29 2018-07-31 Nvidia Corporation Piecewise linear irregular rasterization
KR102465969B1 (ko) 2015-06-23 2022-11-10 삼성전자주식회사 그래픽스 파이프라인을 수행하는 방법 및 장치
DE102015217993A1 (de) * 2015-09-18 2017-03-23 Bayerische Motoren Werke Aktiengesellschaft Pixelbasierte Anzeigevorrichtigung

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150287166A1 (en) * 2014-04-05 2015-10-08 Sony Computer Entertainment America Llc Varying effective resolution by screen location by altering rasterization parameters

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ROBERT TOTH et al., 'Comparison of Projection Methods for Rendering Virtual Reality', Intel Software Developer Zone [Online], 17 June 2016(2016.06.17.) 1부.* *

Also Published As

Publication number Publication date
JP2020515968A (ja) 2020-05-28
KR102410351B1 (ko) 2022-06-17
JP7050085B2 (ja) 2022-04-07
US10546365B2 (en) 2020-01-28
EP3602484A1 (en) 2020-02-05
EP3602484A4 (en) 2021-01-13
WO2018182989A1 (en) 2018-10-04
US20180276790A1 (en) 2018-09-27
CN110462677A (zh) 2019-11-15

Similar Documents

Publication Publication Date Title
KR102410351B1 (ko) 단일 패스 유연 스크린/스케일 래스터화
US11748840B2 (en) Method for efficient re-rendering objects to vary viewports and under varying rendering and rasterization parameters
KR102455696B1 (ko) 그래픽 처리 시스템
CN107392988B (zh) 利用投影几何失真用于以可变采样率渲染的系统、方法和计算机程序产品
EP3444775B1 (en) Single pass rendering for head mounted displays
TWI570665B (zh) 電腦圖形系統及圖形處理方法
US8059119B2 (en) Method for detecting border tiles or border pixels of a primitive for tile-based rendering
TW201601115A (zh) 藉由近似頂點至彎曲視埠上的投影在圖形處理中隨螢幕位置變化有效解析度
JP2018537755A (ja) 中心窩ジオメトリテッセレーション
US10593096B2 (en) Graphics processing employing cube map texturing
US20080198163A1 (en) Drawing Method, Image Generating Device, And Electronic Information Apparatus
US8072456B2 (en) System and method for image-based rendering with object proxies
ITMI20090876A1 (it) Metodo di renderizzazione di un edge di una primitiva grafica
CN114450717A (zh) 用于增强现实应用的遮挡和碰撞检测
CN114758051A (zh) 一种图像渲染方法及其相关设备
US20180213215A1 (en) Method and device for displaying a three-dimensional scene on display surface having an arbitrary non-planar shape
JP4987890B2 (ja) 立体画像描画装置、立体画像描画方法、立体画像描画プログラム
US20070008316A1 (en) Computer graphics rendering method and apparatus
KR20120138185A (ko) 저해상도 그래픽 영상을 고해상도 그래픽 영상으로 실시간 변환하는 그래픽 영상 처리 장치 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant