KR101964611B1 - 곡선 뷰포트 상으로 정점의 투영을 근접시키는 것에 의해 그래픽스를 처리할 때 스크린 위치에 따른 유효 해상도의 가변 - Google Patents

곡선 뷰포트 상으로 정점의 투영을 근접시키는 것에 의해 그래픽스를 처리할 때 스크린 위치에 따른 유효 해상도의 가변 Download PDF

Info

Publication number
KR101964611B1
KR101964611B1 KR1020167027105A KR20167027105A KR101964611B1 KR 101964611 B1 KR101964611 B1 KR 101964611B1 KR 1020167027105 A KR1020167027105 A KR 1020167027105A KR 20167027105 A KR20167027105 A KR 20167027105A KR 101964611 B1 KR101964611 B1 KR 101964611B1
Authority
KR
South Korea
Prior art keywords
sub
screen space
projection
vertices
gpu
Prior art date
Application number
KR1020167027105A
Other languages
English (en)
Other versions
KR20160130257A (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 KR20160130257A publication Critical patent/KR20160130257A/ko
Application granted granted Critical
Publication of KR101964611B1 publication Critical patent/KR101964611B1/ko

Links

Images

Classifications

    • 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
    • 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
    • G02B27/0172Head mounted characterised by optical features
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • 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/10Geometric effects
    • 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
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • 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
    • 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/0101Head-up displays characterised by optical features
    • G02B2027/0123Head-up displays characterised by optical features comprising devices increasing the field of view
    • 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

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

Abstract

그래픽스 처리에서 가상 공간 내 장면에 대한 하나 이상의 정점을 나타내는 데이터가 수신된다. 디스플레이 디바이스의 스크린 공간 상으로 상기 정점의 투영이 수행된다. 상기 투영은 곡선 뷰포트 상으로 상기 정점의 투영을 근접시킨다. 기본요소 조립이 상기 정점에 수행되어 상기 정점을 상기 스크린 공간 상으로 투영하는 것으로부터 스크린 공간에 하나 이상의 기본요소를 생성한다. 스캔 변환이 상기 하나 이상의 기본요소에 수행되어 상기 복수의 픽셀 중 어느 픽셀 또는 픽셀들이 상기 하나 이상의 기본요소 중 대응하는 기본요소의 일부인지를 결정한다. 완성된 프레임은 픽셀 값을 상기 대응하는 기본요소의 일부인 상기 픽셀 또는 픽셀들에 할당하는 픽셀 처리를 수행하는 것에 의해 생성된다. 일부 구현에서, 상기 완성된 프레임은 상기 메모리에 저장되거나 또는 상기 디스플레이 디바이스에 디스플레이될 수 있다.

Description

곡선 뷰포트 상으로 정점의 투영을 근접시키는 것에 의해 그래픽스를 처리할 때 스크린 위치에 따른 유효 해상도의 가변{VARYING EFFECTIVE RESOLUTION BY SCREEN LOCATION IN GRAPHICS PROCESSING BY APPROXIMATING PROJECTION OF VERTICES ONTO CURVED VIEWPORT}
관련 출원에 대한 상호 참조
본 출원은, 전체 내용이 본 명세서에 참조로 병합된, 본 출원과 동일자로 출원된, 공동 양도된, 공동-계류 중인 미국 특허 출원 번호 14/246,064(출원인: Tobias Berghoff, 발명의 명칭:"METHOD FOR EFFICIENT CONSTRUCTION OF HIGH RESOLUTION DISPLAY BUFFERS")(대리인 관리 번호 SCEA13055US00)에 관한 것이다.
본 출원은, 전체 내용이 본 명세서에 참조로 병합된, 2014년 4월 5일에 출원된, 공동 양도된, 공동-계류 중인 미국 특허 출원 번호 14/246,067 (출원인: Tobias Berghoff, 발명의 명칭: "GRAPHICS PROCESSING ENHANCEMENT BY TRACKING OBJECT AND/OR PRIMITIVE IDENTIFIERS")(대리인 관리 번호 SCEA13056US00)에 관한 것이다.
본 출원은, 전체 내용이 본 명세서에 참조로 병합된, 2014년 4월 5일에 출원된, 공동 양도된, 공동-계류 중인 미국 특허 출원 번호 14/246,068(출원인: Mark Evan Cerny, 발명의 명칭: "GRADIENT ADJUSTMENT FOR TEXTURE MAPPING TO NON-ORTHONORMAL GRID")(대리인 관리 번호 SCEA13057US00)에 관한 것이다.
본 출원은, 전체 내용이 본 명세서에 참조로 병합된, 2014년 4월 5일에 출원된, 공동 양도된, 공동-계류 중인 미국 특허 출원 번호 14/246,061(출원인: Tobias Berghoff, 발명의 명칭: "VARYING EFFECTIVE RESOLUTION BY SCREEN LOCATION BY CHANGING ACTIVE COLOR SAMPLE COUNT WITHIN MULTIPLE RENDER TARGETS")(대리인 관리 번호 SCEA13058US00)에 관한 것이다.
본 출원은, 전체 내용이 본 명세서에 참조로 병합된, 2014년 4월 5일에 출원된, 공동 양도된, 공동-계류 중인 미국 특허 출원 번호 14/246,063(출원인: Mark Evan Cerny, 발명의 명칭: "VARYING EFFECTIVE RESOLUTION BY SCREEN LOCATION BY ALTERING RASTERIZATION PARAMETERS")(대리인 관리 번호 SCEA13059US00)에 관한 것이다.
본 출원은, 전체 내용이 본 명세서에 참조로 병합된, 2014년 4월 5일에 출원된, 공동 양도된, 공동-계류 중인 미국 특허 출원 번호 14/246,062(출원인: Mark Evan Cerny, 발명의 명칭: "GRADIENT ADJUSTMENT FOR TEXTURE MAPPING FOR MULTIPLE RENDER TARGETS WITH RESOLUTION THAT VARIES BY SCREEN LOCATION")(대리인 관리 번호 SCEA13061US00)에 관한 것이다.
기술 분야
본 발명의 측면은 컴퓨터 그래픽스에 관한 것이다. 특히, 본 발명은 스크린 위치에 따라 해상도를 가변시키는 것에 관한 것이다.
그래픽스 처리는 일반적으로 2개의 프로세서, 중앙 처리 유닛(central processing unit: CPU)과 그래픽스 처리 유닛(graphics processing unit: GPU)을 조정하는 것을 수반한다. GPU는 디스플레이로 출력되도록 의도된 프레임 버퍼에서 이미지의 생성을 가속시키도록 설계된 전문화된 전자 회로이다. GPU는 매립된 시스템, 모바일 폰, 퍼스널 컴퓨터, 태블릿 컴퓨터, 휴대용 게임 디바이스, 워크스테이션, 및 게임 콘솔에 사용된다. GPU는 일반적으로 컴퓨터 그래픽스를 조작하는 것이 효율적이도록 설계된다. GPU는 대형 데이터 블록을 처리하는 것이 병렬로 수행되는 알고리즘을 위하여 GPU를 일반 목적 CPU보다 더 효율적으로 만드는 고속 병렬 처리 아키텍처를 종종 구비한다.
CPU는, 특정 그래픽스 처리 태스크를 구현하는 것, 예를 들어, 이미지에서 이전의 프레임에 대해 변화된 특정 텍스처를 렌더링할 것을 GPU에 명령하는, 일반적으로 드로우 커맨드(draw command)라고도 언급되는 GPU 명령어를 송신할 수 있다. 이 드로우 커맨드는 특정 애플리케이션의 가상 환경의 상태에 대응하는 그래픽스 렌더링 커맨드를 발행하기 위하여 그래픽스 애플리케이션 프로그래밍 인터페이스(application programming interface: API)를 갖는 CPU에 의해 조정될 수 있다.
특정 프로그램을 위한 텍스처를 렌더링하기 위하여, GPU는 "그래픽스 파이프라인"에서 일련의 처리 태스크를 수행하여 가상 환경 내 시각 자료를 디스플레이 상으로 렌더링될 수 있는 이미지로 변환할 수 있다. 일반적인 그래픽스 파이프라인은 가상 공간 내 가상 객체에 특정 렌더링 또는 셰이딩 동작을 수행하고, 장면 내 가상 객체에 변환(transformation) 및 래스터화(rasterization)를 수행하여 출력 디스플레이에 적절한 픽셀 데이터를 생성하고, 그리고 렌더링된 이미지를 디스플레이에 출력하기 전에 픽셀(또는 프래그먼트(fragment))에 추가적인 렌더링 태스크를 수행하는 것을 포함할 수 있다.
이미지의 가상 객체는 종종 가상 장면 내 객체의 형상(shape)을 함께 만드는 기본요소(primitive)로 알려진 형상으로 가상 공간에서 기술된다. 예를 들어, 렌더링될 3차원 가상 세계 내 객체는 3차원 공간 내 좌표로 한정된 정점(vertex)들을 갖는 일련의 별개의 삼각형 기본요소로 감소될 수 있고, 이에 의해 이 다각형은 객체의 표면을 구성한다. 각 다각형은 주어진 다각형을 다른 다각형들과 구별하기 위해 그래픽스 처리 시스템에 의해 사용될 수 있는 연관된 인덱스를 구비할 수 있다. 또한, 각 정점은 주어진 정점을 다른 정점과 구별하는데 사용될 수 있는 연관된 인덱스를 구비할 수 있다. 그래픽스 파이프라인은 이 기본요소에 특정 동작을 수행하여 가상 장면을 위한 시각 자료를 생성하고, 이 데이터를 디스플레이의 픽셀에 의해 재생되기에 적절한 2차원 포맷으로 변환할 수 있다. 그래픽스 기본요소 정보(또는 간단히 "기본요소 정보")라는 용어는, 본 명세서에 사용된 바와 같이, 그래픽스 기본요소를 나타내는 데이터를 말하는데 사용된다. 이러한 데이터는 정점 정보(예를 들어, 정점 위치 또는 정점 인덱스를 나타내는 데이터) 및 다각형 정보, 예를 들어, 다각형 인덱스, 및 특정 정점을 특정 다각형과 연관시키는 다른 정보를 포함하지만 이들로 제한되지 않다.
그래픽스 파이프라인의 일부로서, GPU는 일반적으로 셰이더로 알려진 프로그램을 구현하는 것에 의해 렌더링 태스크를 수행할 수 있다. 일반적인 그래픽스 파이프라인은 정점마다 기본 요소의 특정 특성을 조작할 수 있는 정점 셰이더(vertex shader), 및 그래픽스 파이프라인에서 정점 셰이더로부터 다운스트림에서 동작하고, 픽셀 데이터를 디스플레이로 전달하기 전에 픽셀마다 특정 값을 조작할 수 있는 픽셀 셰이더(pixel shader)("프래그먼트 셰이더"로도 알려짐)를 포함할 수 있다. 프래그먼트 셰이더는 텍스처를 기본요소에 적용하는 것과 관련된 값을 조작할 수 있다. 파이프라인은 파이프라인 내 여러 스테이지에 다른 셰이더, 예를 들어, 정점 셰이더의 출력을 사용하여 새로운 기본요소 세트를 생성하는 기하 셰이더(geometry shader), 및 특정 다른 일반적인 연산 태스크를 수행하기 위해 GPU에 의해 구현될 수 있는 연산 셰이더(compute shader: CS)를 더 포함할 수 있다.
넓은 시야(field of view: FOV)를 구비하는 그래픽 디스플레이 디바이스가 개발되었다. 이러한 디바이스는 헤드 마운트 디스플레이(head mounted display: HMD) 디바이스를 포함한다. HMD 디바이스에서, 작은 디스플레이 디바이스는 사용자의 헤드에 착용된다. 디스플레이 디바이스는 하나의 눈(monocular HMD) 또는 각 눈(binocular HMD)의 전방에 디스플레이 광학기기를 구비한다. HMD 디바이스는, 일반적으로 디바이스의 배향을 센싱하고, 사용자의 헤드가 이동할 때 디스플레이 광학기기에 의해 제시되는 장면을 변화시킬 수 있는 센서를 포함한다. 종래에, 넓은 FOV 디스플레이를 위한 장면을 렌더링하는 대부분의 스테이지는 스크린의 모든 부분이 유닛 영역마다 동일한 개수의 픽셀을 구비하는 평면 렌더링에 의해 수행된다.
현실감 있는 경험을 제공하기 위해 넓은 FOV 디스플레이 디바이스에 의해 표현되는 그래픽스는 고품질이면서 효율적으로 렌더링되는 것이 요구된다.
이런 상황에서 본 발명이 발생한다.
본 발명의 개시 내용은 첨부된 도면과 함께 다음 상세한 설명을 고려하는 것에 의해 용이하게 이해될 수 있을 것이다.
도 1a 및 도 1b는 넓은 시야(FOV) 디스플레이의 특정 파라미터를 간략히 도시하는 도면.
도 1c는 넓은 FOV 디스플레이의 상이한 부분들에 대한 상이한 입체각(solid angle)을 도시하는 도면.
도 2a 내지 도 2c는 본 발명의 측면에 따라 상이한 넓은 FOV 디스플레이의 상이한 구역들에 있는 픽셀의 상대적 중요성의 예를 도시하는 도면.
도 2d는 본 발명의 측면에 따라 FOV 디스플레이의 스크린의 상이한 구역들에 대한 상이한 픽셀 해상도의 예를 도시하는 도면.
도 3은 본 발명의 측면에 따라 동일한 입체각을 나타내는 스크린 서브구획들을 동일한 영역의 대응하는 서브구획으로 변환을 도시하는 개략도.
도 4a는 본 발명의 측면에 따른 그래픽스 처리 시스템의 블록도.
도 4b는 본 발명의 측면에 따른 그래픽스 처리 파이프라인의 블록도.
도 4c는 본 발명의 측면에 따라 스크린 위치에 따라 픽셀 해상도를 가변시키는 일 예를 도시하는 개략도.
도 4d는 본 발명의 측면에 따라 스크린 위치에 따라 픽셀 해상도를 가변시키는 대안적인 예를 도시하는 개략도.
도 5는 본 발명의 측면에 따라 그래픽스 기본요소의 정점을 정정하는 예를 도시하는 개략도.
다음 상세한 설명은 예시를 위하여 많은 특정 상세를 포함하지만, 이 기술 분야에 통상의 지식을 가진 자라면 다음 상세에 많은 변경과 변형이 본 발명의 범위 내에서 이루어질 수 있다는 것을 이해할 수 있을 것이다. 따라서, 후술되는 본 발명의 예시적인 실시예는 청구된 발명에 일반성을 상실함이 없이 그리고 본 발명을 제한함이 없이 제시된다.
서론
도 1a 내지 도 1c는 대형 FOV 디스플레이에서 이전의 인식되지 못한 문제를 도시한다. 도 1a는 90도의 FOV 디스플레이를 도시하고, 도 1b는 114도의 FOV 디스플레이를 도시한다. 종래의 대형 FOV 디스플레이에서, 3차원 기하는 평면 투영을 사용하여 뷰 평면(view plane)(101)으로 렌더링된다. 그러나, 기하를 높은 FOV 뷰 평면 상으로 렌더링하는 것은 매우 비효율적인 것으로 밝혀졌다. 도 1c에서 볼 수 있는 바와 같이, 뷰 평면(101)의 에지 구역(112)과 중심 구역(114)은 동일한 영역이지만, 뷰어(103)가 볼 때는 매우 상이한 입체각을 나타낸다. 그 결과, 스크린의 에지 부근의 픽셀은 중심 부근의 픽셀보다 훨씬 더 적은 의미 정보를 보유한다. 종래에 장면을 렌더링할 때, 이들 구역은 동일한 개수의 픽셀을 구비하고, 스크린에서 동일한 사이즈의 구역을 렌더링하는데 소비되는 시간도 동일하다.
도 2a 내지 도 2c는 상이한 사이즈의 FOV에 대해 2차원으로 대형 FOV 디스플레이의 상이한 부분들의 상대적인 중요성을 도시한다. 도 2a는, 평면 체커보드(planar checkerboard)가 114도의 각도에 이르는 경우, 시야 방향(direction of view)에 수직인 평면 체커보드의 각 정사각형에 대한 입체각의 분산(variance)을 표시한다. 다시 말해, 도 2a는 114도의 FOV 디스플레이에 종래의 평면 투영 렌더링을 하는 비효율성을 표현한다. 도 2b는 90도의 FOV 디스플레이에 대해 동일한 정보를 표현한다. 이러한 평면 투영 렌더링에서, 투영은 에지에 있는 이미지(201) 내 타일(202)과 코너에 있는 타일(203)을, 중심에 있는 타일(204)에 비해 더 작은 입체각으로 압축한다. 이 압축으로 인해, 그리고 이미지(201) 내 각 타일이 스크린 공간에서 동일한 개수의 픽셀을 구비하는 것으로 인해, 중심 타일(204)에 비해 에지 타일(202)을 렌더링하는데 대략 4X의 비효율 팩터(inefficiency factor)가 있다. 이는 에지 타일(203)의 종래의 렌더링이 중심 타일(204)에 대해서보다 단위 입체각마다 대략 4배 더 많은 처리를 수반한다는 것을 의미한다. 코너 타일(203)에 비해 비효율 팩터는 대략 8X이다. 전체 이미지(201)에 걸쳐 평균내면, 비효율 팩터는 대략 2.5X이다.
비효율은 FOV의 사이즈에 좌우된다. 예를 들어, 도 2b에 도시된 90도의 FOV 디스플레이에 대해, 비효율 팩터는 에지 타일(202)을 렌더링하는 것에 대해서는 대략 2X이고, 코너 타일(203)을 렌더링하는 것에 대해서는 대략 3X이고, 이미지(201)를 전체적으로 렌더링하는 것에 대해서는 대략 1.7X이다.
이런 상황을 보는 다른 방법은 도 2c에 도시되는데, 여기서 스크린(102)은 이루는 유닛 입체각마다 픽셀들이 거의 동일한 "중요성"을 갖는 직사각형으로 분할되었다. 각 직사각형은 디스플레이를 통해 볼 때 최종 이미지에 대략 동일한 기여를 한다. 평면 투영이 에지 직사각형(202)과 코너 직사각형(203)의 중요성을 왜곡하는 방식을 볼 수 있다. 사실, 코너 직사각형(203)은, (입체각당 픽셀로 표현된) 픽셀의 시각 밀도가 디스플레이의 중심 쪽으로 갈수록 더 높게 만들도록 선택할 수 있는 디스플레이 광학기기로 인해 중심 직사각형에 더 적은 기여를 할 수 있다.
상기 관찰에 기초하여, 도 2d에 도시된 바와 같이 넓은 FOV 디스플레이를 위한 이미지(210)는 그 픽셀 밀도가 중심 구역(205)에서보다 에지 구역(202, 204, 206, 208)에서 더 작고, 에지 구역(202, 204, 206, 208)에서보다 코너 구역(201, 203, 207,209)에서 더 작은 것이 유리할 수 있다. 또한 기본 그래픽 이미지 데이터 또는 데이터 포맷 또는 데이터 처리를 상당히 변경함이 없이 스크린에 걸쳐 픽셀 밀도를 가변시키는 것과 동일한 효과를 갖는 방식으로 넓은 FOV 디스플레이의 스크린 상으로 종래의 그래픽 이미지를 렌더링하는 것이 유리할 수 있다.
대안적으로, 스크린 공간의 에지와 코너에 있는 픽셀들이 중심에 있는 픽셀과 거의 동일한 입체각을 커버할 수 있도록, 정점들이 투영되고 기본요소들이 렌더링되는 스크린 공간이 구형(sphere)의 표면의 부분에 근접하는 경우 유리할 수 있다.
본 발명의 측면에 따라, 그래픽스 처리는 곡선 뷰포트(curved viewport) 상으로 정점의 투영을 근접시키는 래스터화 스테이지(rasterization stage)를 사용한다. 특정 구현에서, 근접된 반구형 스크린 공간 상으로 투영하는 것과 등가는, 그래픽스 파이프라인에서 평판 스크린 공간 상으로 종래와 같이 투영하고 나서 동일한 입체각을 나타내는 스크린 공간 서브구획들을 동일한 영역의 대응하는 서브구획으로 변환하는 것을 통해 획득될 수 있다. 도 3은 이러한 변환의 일례를 도시한다. 도 3의 좌측에는 평면 스크린 공간(1)이 거의 동일한 입체각의 직사각형 구역으로 분할된다. 대안적인 구현에서, 스크린 공간은 비-직사각형 구역들로 분할될 수 있다. 구형으로부터 뷰 평면으로 동심 투영은 (종종 노몬 투영(gnomonic projection)이라고도 언급되는) 직선 투영(rectilinear projection)으로 알려져 있고, 그래서 역(inverse) 직선 투영은 뷰 평면 상의 픽셀을 다시 구형 뷰포트 상의 동일한 입체각의 요소들로 정확히 맵핑할 수 있다. 진정한 역(inverse) 직선 투영은 수직 라인과 수평 라인을 직선 라인으로 맵핑하지 않을 수 있으므로, 본 발명의 측면의 특정 구현은 2축의 역(biaxial inverse) 직선 투영을 사용하는데, 여기서 각 스크린 축은 거의 동일한 입체각의 각 직사각형을, 도 3의 우측에 도시된 바와 같이 변환된 스크린 공간(2) 내 대응하는 정사각형 구역으로 맵핑하도록 아크탄젠트 수식(arctangent formula)에 의해 변환된다. 이 근접화에서, 변환된 스크린 공간(2) 내 정사각형 구역은 평판이다. 예로서, 및 비 제한적으로, 변환은, 좌표(H, V)에 있는 삼각형(3)의 정점을, 일정한 픽셀 밀도 공간 내 좌표(H', V')에 있는 변환된 삼각형(3')의 대응하는 정점으로 다음과 같이 맵핑한다:
예를 들어, FOVH, FOVV는 라디안(radian)으로 수평 FOV와 수직 FOV이고, H', V'는 역-투영된(de-projected) 일정한 픽셀 밀도 공간에서 정규화된 좌표(즉, 최대 FOV)에 걸쳐 범위 [-1 .. 1]에 있는 좌표)인 경우, H', V'는 다음 수식을 풀어서, H, V로부터 (각각 최대 FOV에 걸쳐 범위 [-FOVH/2 .. FOVH/2] 및 [-FOVV/2 ... FOVV/2]에 걸쳐 가변하는) θH, θV를 제거하는 것에 의해, 선형 공간에서 (즉, 최대 FOV에 걸쳐 범위 [-1 .. 1]에서) 정규화된 좌표가 획득될 수 있다:
H' = θH*2/FOVH
V' = θV*2/FOVV
H = tan(θH)/tan(FOVH/2)
V = tan(θV)/tan(FOVV/2)
H' 및 V'를 풀면, 다음과 같이 된다:
H' = arctan(H*tan(FOVH/2))*2/FOVH
V' = arctan(V*tan(FOVV/2))*2/FOVV
이 해법은 픽셀들 중에서 거의 이상적인 입체 영역 분배를 생성하지만, HMD 렌더링 구성에서, 물리적 광학기기는 가시적인 FOV에 걸쳐 HMD 디스플레이 픽셀을 균일하게 분배하지 못할 수 있다는 것이 주목된다. 그 결과, 이 구성에서 가장 효율적인 해법은 디스플레이 픽셀을 스크린 영역으로 이상적으로 맵핑을 결정할 때 광학기기에 의해 도입된 왜곡을 고려할 것이다.
종래의 래스터화는 평면 뷰포트만을 타깃으로 할 수 있으므로, 각 구역 내 정점은 선형 변환을 사용하여서만 재맵핑될 수 있다. 그리하여, 이 경우에 특정 구현은 다음과 같이 이 변환의 연속적인 구분적인 선형 근접화(continuous piecewise linear approximation)를 정점에 적용한다:
일정한 픽셀 밀도 공간에서 증가하는 순서로 스크린 영역 경계(H'[i] 및 V'[j])의 세트를 선택하고, 상기 변환의 역(inverse)을 사용하여 선형 스크린 공간에서 대응하는 경계(H[i] 및 V[j])를 계산한다:
H[i] = tan(H'[i]*FOVH/2)/tan(FOVH/2)
V[j] = tan(V'[j]*FOVV/2)/tan(FOVV/2)
이후 이들 경계를 보존하는 구분적인 선형 변환을 구성한다:
H' = (H[i] < H < H[i+1])인 i에 대해,
H'[i] + (H'[i+1] - H'[i]) * (H - H[i])/(H[i+1] - H[i])
V' = (V[j] < V < V[j +1])인 j에 대해,
V'[j] + (V'[j+1] - V'[j]) * (V - V[j])/(V[j +1] - V[j])
H, V로부터 H', V'로 맵핑하는 것은 (상기 ij로 인덱싱된) 상이한 서브구획들에 대해 약간 상이하기 때문에, 원래의 스크린 공간(1) 내 삼각형(3)은 벤딩된 측면을 구비하는 변환된 삼각형(3)으로서 이 변환된 스크린 공간(2)으로 맵핑된다. 그러나, 그 결과 이미지가 선형 또는 곡선 디스플레이로 분석(resolved)될 때, 변환은 분석의 일부로 반전(inverted)되어, 삼각형(3')의 벤딩된 측면이 다시 명백히 직선 라인으로 복원된다.
이러한 스크린 공간 변환의 장점은 상당하다. 예를 들어, 90도의 FOV에 대해 스크린 공간(1)의 영역이 1.00인 경우, 이 전략은 변환된 스크린 공간(2)이 대략 0.62의 영역을 갖는 것을 초래한다. 이와 달리, 스크린 공간(1)이 구형 표면으로 맵핑될 수 있다면, 변환된 스크린 공간(2)의 영역은 대략 0.46일 수 있다. 변환이 거의 구형만인 경우에도, 변환된 스크린 공간의 영역을 감소시키는 것에 의해, 그래픽스 처리는 변환이 없는 것보다 훨씬 더 고속으로 행해질 수 있다.
본 발명의 측면은 도 3에 대해 설명된 유형의 스크린 공간 변환을 사용하여 렌더링될 스크린 공간의 영역을 효과적으로 감소시키는 것에 의해 GPU의 연산 부하를 감소시킨다.
본 발명의 측면에 따라 그래픽스 처리 유닛과 메모리를 구비하는 그래픽스 처리 시스템은 다음과 같이 그래픽스 처리를 수행할 수 있다. 가상 공간 내 장면에 대한 하나 이상의 정점을 나타내는 데이터가 수신된다. 상기 정점을 디스플레이 디바이스의 스크린 공간 상으로 투영하는 것이 수행된다. 상기 투영은 곡선 뷰포트 상으로 상기 정점의 투영을 근접시킨다. 기본요소 조립이 상기 정점에 수행되어 상기 정점을 상기 스크린 공간 상으로 투영하는 것으로부터 스크린 공간에 하나 이상의 기본요소를 생성한다. 스캔 변환이 상기 하나 이상의 기본요소에 수행되어 복수의 픽셀 중 어느 픽셀 또는 픽셀들이 상기 하나 이상의 기본요소 중 대응하는 기본요소의 일부인지를 결정한다. 완성된 프레임이 픽셀 값을 상기 대응하는 기본요소의 일부인 픽셀 또는 픽셀들에 할당하는 픽셀 처리를 수행하는 것에 의해 생성된다. 일부 구현에서, 완성된 프레임은 메모리에 저장되거나 또는 디스플레이 디바이스 상에 디스플레이될 수 있다.
특정 구현에서 상기 정점의 투영은 가상 공간으로부터 정점을 상기 장면의 평면 뷰포트 상으로 초기에 투영하는 것에 의해 수행될 수 있다. 상기 평면 뷰포트는 상기 스크린 공간의 거의 동일한 입체각에 각각 대응하는 복수의 서브구획으로 서브 분할된다. 거친 래스터화(coarse rasterization)는 스크린 공간 좌표로 변환된 각 기본요소에 수행되어 상기 기본요소가 오버랩하는 서브구획 또는 서브구획들이 어느 것인지를 결정한다. 각 기본요소에 대해 스크린 공간 정정이 상기 기본요소가 오버랩하는 각 서브구획에 수행되어 상기 기본요소의 각 정점의 좌표를 상기 서브구획과 연관된 대응하는 정정된 정점 좌표로 맵핑하고, 상기 스크린 공간 정정은 상기 기본요소가 오버랩하는 각 서브구획을 상기 곡선 뷰포트의 복수의 평면 정정된 서브구획 중 대응하는 평면 정정된 서브구획으로 맵핑하는 것과 등가이고, 상기 곡선 뷰포트의 정정된 서브구획들은 동일한 영역을 구비한다.
이러한 구현에서, 상기 스크린 공간 정정을 수행하는 것은 아크탄젠트 수식에 기초하여 유도된 계수를 갖는 선형 변환을 상기 기본요소의 하나 이상의 정점의 스크린 공간 좌표에 적용하여 대응하는 정정된 정점을 생성하는 것을 포함할 수 있다.
이러한 구현에서, 상기 스캔 변환은 정정된 서브구획에 수행될 수 있고, 여기서 상기 복수의 서브구획 중 주어진 서브구획에서 상기 하나 이상의 기본요소 중 주어진 기본요소에 대해, 스캔 변환이 상기 주어진 서브구획과 연관된 상기 주어진 기본요소에 대해 상기 정정된 정점 좌표를 사용하여 상기 주어진 서브구획에 위치된 상기 주어진 기본요소의 부분에 수행된다.
본 발명의 측면의 일부 구현에서 상기 평면 뷰포트의 상기 복수의 서브구획의 서브 구획은 직사각형일 수 있다.
본 발명의 측면의 일부 구현에서 상기 정점의 투영, 기본요소 조립, 및 스캔 변환은 연산 셰이더에 의해 소프트웨어로 구현된다.
본 발명의 측면의 일부 대안적인 구현에서 상기 정점의 투영, 기본요소 조립, 및 스캔 변환은 하드웨어로 구현된다.
본 발명의 측면의 일부 구현에서, 상기 디스플레이 디바이스는 90도 이상의 FOV를 특징으로 한다.
본 발명의 측면의 일부 구현에서, 상기 디스플레이 디바이스는 헤드-마운트 디스플레이 디바이스이다.
본 발명의 측면은 전술한 측면에 따라 그래픽스 처리를 구현하도록 구성된 그래픽스 처리 유닛과 메모리를 구비하는 그래픽스 처리 시스템을 더 포함한다.
본 발명의 측면은, 실행될 때, 전술한 측면에 따른 그래픽스 처리를 구현하는 컴퓨터 실행가능한 명령어를 포함하는 비-일시적인 컴퓨터-판독가능한 매체를 더 포함한다.
시스템 및 장치
본 발명의 측면은 곡선 뷰포트 상으로 정점의 투영을 근접시키는 것에 의해 스크린 위치에 따라 유효 픽셀 해상도가 변하는 그래픽스 처리를 구현하도록 구성된 그래픽스 처리 시스템을 포함한다. 예로서, 및 비 제한적으로, 도 4a는 본 발명의 측면에 따라 그래픽스 처리를 구현하는데 사용될 수 있는 컴퓨터 시스템(400)의 블록도를 도시한다. 본 발명의 측면에 따라, 시스템(400)은 매립된 시스템, 모바일 폰, 퍼스널 컴퓨터, 태블릿 컴퓨터, 휴대용 게임 디바이스, 워크스테이션, 게임 콘솔 등일 수 있다.
시스템(400)은 일반적으로 중심 프로세서 유닛(CPU)(402), 그래픽스 프로세서 유닛(GPU)(404), 및 이 CPU와 GPU 모두에 액세스가능한 메모리(408)를 포함할 수 있다. CPU(402)와 GPU(404)는 하나 이상의 프로세서 코어, 예를 들어, 단일 코어, 2개의 코어, 4개의 코어, 8개의 코어, 또는 이를 초과하는 개수의 코어를 각각 포함할 수 있다. 메모리(408)는 어드레스지정가능한 메모리, 예를 들어, RAM, DRAM, 등을 제공하는 집적 회로 형태일 수 있다. 메모리(408)는, 그래픽스 자원을 저장하고 그래픽스 렌더링 파이프라인을 위한 데이터의 그래픽스 버퍼(405)를 일시적으로 저장할 수 있는 그래픽스 메모리(428)를 포함할 수 있다. 그래픽스 버퍼(405)는, 예를 들어, 정점 파라미터 값을 저장하는 정점 버퍼(VB), 정점 인덱스를 보유하는 인덱스 버퍼(IB), 그래픽스 내용의 깊이 값을 저장하는 깊이 버퍼(예를 들어, Z-버퍼)(DB), 스텐실 버퍼(stencil buffer)(SB), 디스플레이로 송신될 완성된 프레임을 저장하는 프레임 버퍼(FB), 및 다른 버퍼를 포함할 수 있다. 도 4a에 도시된 예에서, 그래픽스 메모리(428)는 메인 메모리의 일부로 도시된다. 대안적인 구현에서, 그래픽스 메모리(428)는 GPU(404)에 통합될 수 있는 별개의 하드웨어 컴포넌트일 수 있다.
예로서, 및 비 제한적으로, CPU(402)와 GPU(404)는 데이터 버스(409)를 사용하여 메모리(408)에 액세스할 수 있다. 일부 경우에, 시스템(400)은 2개 이상의 상이한 버스를 포함하는 것이 유리할 수 있다. 메모리(408)는 CPU(402)와 GPU(404)에 의해 액세스될 수 있는 데이터를 포함할 수 있다. GPU(404)는 그래픽스 처리 태스크를 병렬로 수행하도록 구성된 복수의 연산 유닛을 포함할 수 있다. 각 연산 유닛은 로컬 데이터 공유와 같은 자체 전용 로컬 메모리 저장매체를 포함할 수 있다. 대안적으로, 연산 유닛은 메모리(408) 또는 전용 그래픽스 메모리(428)에 각각 액세스할 수 있다.
CPU는, 그래픽스, 컴파일러 및 그래픽스 API를 사용하는 애플리케이션을 포함할 수 있는 CPU 코드(403 C )를 실행하도록 구성될 수 있다. 그래픽스 API는 GPU에 의해 구현된 프로그램에 드로우 커맨드를 발행하도록 구성될 수 있다. CPU 코드(403 C )는 물리적 시뮬레이션 및 다른 기능을 더 구현할 수 있다. GPU(404)는 전술한 바와 같이 동작하도록 구성될 수 있다. 특히, GPU는, 전술한 바와 같이, 연산 셰이더(CS), 정점 셰이더(VS), 및 픽셀 셰이더(PS)와 같은 셰이더를 구현할 수 있는 GPU 코드(403 G )를 실행할 수 있다. 연산 셰이더(CS)와 정점 셰이더(VS) 사이에 데이터를 용이하게 전달하기 위해 시스템은 프레임 버퍼(FB)를 포함할 수 있는 하나 이상의 버퍼(405)를 포함할 수 있다. GPU 코드(403 G )는 또한 다른 유형의 셰이더(미도시), 예를 들어, 픽셀 셰이더 또는 기하 셰이더를 선택적으로 구현할 수 있다. 각 연산 유닛은 로컬 데이터 공유와 같은 자체 전용 로컬 메모리 저장매체를 포함할 수 있다. GPU(404)는 텍스처를 그래픽스 파이프라인의 일부로 기본요소에 적용하는 특정 동작을 수행하도록 구성된 하나 이상의 텍스처 유닛(texture unit)(406)을 포함할 수 있다.
본 발명의 특정 측면에 따라, 시스템(400)의 CPU 코드(403 c )와 GPU 코드(403 g ) 및 다른 요소는 GPU(404)가 가상 공간 내 장면의 하나 이상의 객체에 대한 하나 이상의 정점을 나타내는 정점 데이터(432)를 수신하는 그래픽스 파이프라인을 구현하도록 구성된다. 정점 데이터(432)는 계산으로부터 생성될 수 있는데, 예를 들어, CPU(402)에 의해 CPU 코드(403 C )를 실행하는 것에 의해 구현된 물리적 시뮬레이션으로부터 생성될 수 있다. GPU(404)는 디스플레이 디바이스(416)의 스크린 공간 상으로 정점의 투영을 수행한다. 투영은 곡선 뷰포트 상으로 정점의 투영을 근접시킨다. GPU(404)는 정점에 기본요소 조립을 수행하여 정점을 스크린 공간 상으로 투영하는 것으로부터 스크린 공간에 하나 이상의 기본요소를 생성한다. 스캔 변환은 이후 하나 이상의 기본요소에 수행되어 스크린 공간의 어느 픽셀이 대응하는 기본요소의 일부인지를 결정한다. GPU(404)는 이후 픽셀 값을 대응하는 기본요소의 일부인 픽셀 또는 픽셀들에 할당하는 픽셀 처리를 수행하는 것에 의해 완성된 프레임(460)을 생성한다. 완성된 프레임은 메모리(408) 또는 그래픽스 메모리(428)에 (예를 들어, 프레임 버퍼(FB)에) 저장되거나 또는 디스플레이 디바이스(416)에 디스플레이될 수 있다.
정점을 그래픽스 파이프라인의 스크린 공간 및 다른 관련된 부분 상으로 투영하는 것은, 예를 들어, 연산 셰이더(CS)로 구현된 프론트 엔드(front end)에 의해, 소프트웨어로 수행될 수 있다. 대안적으로, 정점을 그래픽스 파이프라인의 스크린 공간 및 다른 관련된 부분 상으로 투영하는 것은 이들 기능을 구현하도록 구성된 특별히 설계된 하드웨어 컴포넌트(HW)에 의해 구현될 수 있다.
전술한 바와 같이 직선 역-투영은 연산 자원과 메모리 자원을 최적으로 사용하는 것에 의해 그래픽스 처리를 개선시킬 수 있다. 일부 구현에서, 직선 역-투영은 디스플레이(416)의 광학기기와 FOV에 대해 정적이다. 이 경우에, 투영은 스크린 서브구획마다 유효 픽셀 해상도가, 예를 들어, 도 4c에 도시된 바와 같이 가변되도록 구성될 수 있다. 도 4c에 도시된 예에서, 스크린(416)의 중심 서브구획은 최대 해상도를 가지도록 요구되고, 중심으로부터 더 먼 서브구획들은 점진적으로 더 낮은 해상도를 구비한다.
본 발명의 측면은 역-투영이 동적인 구현을 더 포함한다. 예를 들어, 렌더링 효율을 개선시키는 역-투영은 눈을 추적하는 것과 결합되어 중심의 해상도(foveal resolution)를 개선시킬 수 있다. 이러한 구현에서, 시스템(400)은 사용자의 시선, 즉, 사용자의 눈이 응시하는 사용자의 시선을 추적하고, 이 정보를 사용자가 응시하는 대응하는 스크린 위치와 관련시키는 하드웨어를 포함한다. 이러한 하드웨어의 일례는, 디스플레이 디바이스(416)의 스크린에 대해 알려진 위치에 있고 사용자의 일반적인 방향을 향하는 디지털 카메라를 포함할 수 있다. 디지털 카메라는 사용자 인터페이스(418) 또는 별개의 컴포넌트의 일부일 수 있다. CPU 코드(403C )는 카메라로부터 이미지를 분석하여, (a) 사용자가 이미지 내에 있는지; (b) 사용자가 카메라를 향하는지; (c) 사용자가 스크린을 향하는지; (d) 사용자의 눈이 보이는지; (e) 사용자의 헤드에 대해 사용자의 눈의 동공의 배향; 및 (f) 카메라에 대해 사용자의 헤드의 배향을 결정하는 이미지 분석 소프트웨어를 포함할 수 있다. 스크린에 대해 카메라의 알려진 위치와 배향, 사용자의 헤드에 대해 사용자의 눈의 동공의 배향, 및 카메라에 대해 사용자의 헤드의 배향으로부터 이미지 분석 소프트웨어는 사용자가 스크린을 응시하는지, 및 만약 그렇다면, 사용자가 응시하는 스크린 부분에 대한 스크린 공간 좌표를 결정할 수 있다. CPU 코드(403c )는 이 스크린 좌표를 GPU 코드(403G )에 전달할 수 있고, 이 GPU 코드는 중심와 부분(480)(즉, 사용자가 응시하는 부분)을 포함하는 서브구획 또는 서브구획들을 결정할 수 있다. GPU 코드(403g )는 도 4d에 도시된 바와 같이 픽셀 해상도가 중심와 부분(480)을 포함하는 서브구획 또는 서브구획들에서 가장 높고, 중심와 부분으로부터 더 멀리 있는 서브구획들에서 점진적으로 더 낮도록 직선 역-투영을 적절히 변경할 수 있다.
일부 구현에서, CPU 코드(403 c ), GPU 코드(403 g ), 및 텍스처 유닛(406)은 스크린 위치에 따라 가변하는 픽셀 해상도와 함께 텍스처 맵핑 동작에 변형을 구현하도록 더 구성될 수 있다. 예를 들어, 픽셀 셰이더(PS)와 텍스처 유닛(406)은 픽셀 위치(XY)마다 하나 이상의 텍스처 좌표(UV)를 생성하여 하나 이상의 텍스처 맵핑 동작에 대한 좌표 세트를 제공하고, 텍스처 좌표(UV)로부터 구배값(Gr)을 계산하고, 이 구배값을 사용하여 기본요소를 적용할 텍스처에 대해 상세 레벨(level of detail: LOD)을 결정하도록 구성될 수 있다. 이 구배값은 샘플 위치에서 직교 정규성(orthonormality)으로부터 편차뿐만 아니라 가변 해상도를 고려하도록 조절될 수 있다.
예로서, 및 비 제한적으로, 특별히 설계된 하드웨어(HW), 텍스처 유닛(들)(406), 특정 유형의 셰이더, 및 후술되는 그래픽스 파이프라인의 다른 부분들은 응용 특정 집적 회로(ASIC), 전계 프로그래밍가능한 게이트 어레이(FPGA), 또는 시스템 온 칩(SoC 또는 SOC)과 같은 특수 목적 하드웨어에 의해 구현될 수 있다.
본 명세서에 사용된 바와 같이 및 일반적으로 이 기술 분야에 통상의 지식을 가진 자라면 이해하는 바와 같이, 응용 특정 집적 회로(ASIC)는 일반 목적 사용에 의도된 것이 아니라 특정 사용을 위해 주문 제작된 집적 회로이다.
본 명세서에 사용된 바와 같이 및 일반적으로 이 기술 분야에 통상의 지식을 가진 자라면 이해하는 바와 같이, 전계 프로그래밍가능한 게이트 어레이(FPGA)는 제조 후 고객 또는 설계자에 의해 구성되도록 설계된 - 그리하여 "전계-프로그래밍가능한" 집적 회로이다. FPGA 구성은 ASIC에 사용된 것과 유사한 하드웨어 설명 언어(HDL)를 사용하여 일반적으로 지정된다.
본 명세서에 사용된 바와 같이 및 일반적으로 이 기술 분야에 통상의 지식을 가진 자라면 이해하는 바와 같이, 칩 상의 시스템 또는 시스템 온 칩(SoC 또는 SOC)은 컴퓨터 또는 다른 전자 시스템의 모든 컴포넌트를 단일 칩으로 통합한 집적 회로(IC)이다. 이 칩은 디지털, 아날로그, 혼합된-신호, 및 종종 무선-주파수 기능을 - 단일 칩 기판 상에 모두 포함할 수 있다. 일반적인 애플리케이션은 매립된 시스템 영역에 있다.
일반적인 SoC는 다음의 하드웨어 컴포넌트들을 포함한다:
하나 이상의 프로세서 코어(예를 들어, 마이크로제어기, 마이크로프로세서 또는 디지털 신호 프로세서(DSP) 코어.
메모리 블록, 예를 들어, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 전기적으로 소거가능한 프로그래밍가능한 판독 전용 메모리(EEPROM) 및 플래쉬 메모리.
발진기 또는 위상-동기 루프와 같은 타이밍 소스.
카운터-타이머, 실시간 타이머, 또는 전력-온 리셋 생성기와 같은 주변장치.
외부 인터페이스, 예를 들어, 산업 표준, 예를 들어, 범용 직렬 버스(universal serial bus: USB), 파이어와이어(FireWire), 이더넷, 범용 비동기 수신기/전송기(universal asynchronous receiver/transmitter: USART), 직렬 주변장치 인터페이스(serial peripheral interface: SPI) 버스.
아날로그-디지털 컨버터(ADC)와 디지털-아날로그 컨버터(DAC)를 포함하는 아날로그 인터페이스.
전압 레귤레이터와 전력 관리 회로.
이들 컴포넌트는 전용 버스 또는 산업-표준 버스에 의해 연결된다. 직접 메모리 액세스(DMA) 제어기는 외부 인터페이스와 메모리 사이에 데이터를 직접 라우팅하고, 프로세서 코어를 바이패스하여, 이에 의해 SoC의 데이터 처리량을 증가시킨다.
일반적인 SoC는 전술한 하드웨어 컴포넌트, 및 프로세서 코어(들), 주변장치, 및 인터페이스를 제어하는 실행가능한 명령어(예를 들어, 소프트웨어 또는 펌웨어)를 모두 포함한다.
일부 구현에서, 그래픽스 파이프라인의 부분들의 기능들 중 일부 또는 모든 기능은, 대안적으로 예를 들어, GPU(404)에 의해 실행되는 연산 셰이더(CS)로서, 소프트웨어 프로그래밍가능한 일반 목적 컴퓨터 프로세서에 의해 실행되는 적절히 구성된 소프트웨어 명령어에 의해 구현될 수 있다. 이러한 명령어는 컴퓨터-판독가능한 매체, 예를 들어, 메모리(408), 그래픽스 메모리(428) 또는 저장매체 디바이스(415)에 구현될 수 있다.
시스템(400)은 예를 들어, 버스(409)를 통해 시스템의 다른 컴포넌트들과 통신할 수 있는 잘 알려진 지원 기능(410)을 더 포함할 수 있다. 이러한 지원 기능은 입력/출력 (I/O) 요소(411), 전력 공급원(P/S)(412), 클록(CLK)(413) 및 캐시(414)를 포함할 수 있으나, 이들로 제한되지 않는다. 캐시(414)에 더하여, GPU(404)는 자체 GPU 캐시(314 G )를 포함할 수 있고, GPU는 GPU(404)에서 실행되는 프로그램이 GPU 캐시(414 G )를 리드스루(read-through) 또는 라이트스루(write-through)할 수 있도록 구성될 수 있다.
시스템(400)은 렌더링된 그래픽스(417)를 사용자에 제시하는 디스플레이 디바이스(416)를 포함할 수 있다. 대안적인 구현에서, 디스플레이 디바이스(416)는 시스템(400)과 함께 동작하는 별개의 컴포넌트이다. 디스플레이 디바이스(416)는 가시적인 텍스트, 숫자, 그래픽 심볼 또는 이미지를 디스플레이할 수 있는 평판 패널 디스플레이, 헤드 마운트 디스플레이(HMD), 음극선관(CRT) 스크린, 프로젝터, 또는 다른 디바이스 형태일 수 있다. 특히 유리한 구현에서, 디스플레이(416)는 90도 이상(예를 들어, 114도 이상)의 FOV를 갖는 스크린을 구비하는 넓은 시야(field of view)(FOV) 디바이스이다. 디스플레이 디바이스(416)는 본 명세서에 설명된 여러 기술에 따라 처리된 렌더링된 그래픽 이미지(417)(예를 들어, 완성된 프레임(460))를 디스플레이한다.
시스템(400)은 프로그램 및/또는 데이터를 저장하는 디스크 드라이브, CD-ROM 드라이브, 플래쉬 메모리, 테이프 드라이브 또는 등과 같은 대용량 저장매체 디바이스(415)를 선택적으로 포함할 수 있다. 시스템(400)은 또한 시스템(400)과 사용자 사이에 상호 작용을 수행하는 사용자 인터페이스 유닛(418)을 선택적으로 포함할 수 있다. 사용자 인터페이스(418)는 그래픽 사용자 인터페이스(GUI)와 함께 사용될 수 있는 키보드, 마우스, 조이스틱, 조명 펜, 게임 제어기, 또는 다른 디바이스를 포함할 수 있다. 시스템(400)은 디바이스가 네트워크(422)를 통해 다른 디바이스와 통신하게 하는 네트워크 인터페이스(420)를 더 포함할 수 있다. 네트워크(422)는, 예를 들어, 근거리 네트워크(LAN), 인터넷과 같은 광역 네트워크, 블루투스 네트워크 또는 다른 유형의 네트워크와 같은 사설 영역 네트워크일 수 있다. 이들 컴포넌트는 하드웨어, 소프트웨어, 또는 펌웨어, 또는 이들 중 2개 이상의 일부 조합으로 구현될 수 있다.
그래픽스 파이프라인
본 발명의 측면에 따라, 시스템(400)은 그래픽스 렌더링 파이프라인의 일부를 구현하도록 구성된다. 도 4b는 본 발명의 측면에 따른 그래픽스 렌더링 파이프라인(430)의 일례를 도시한다.
렌더링 파이프라인(430)은 (종종 "세계 공간"이라고 언급되는) 가상 공간에 2차원 또는 바람직하게는 3차원 기하를 구비하는 장면을 도시하는 이미지로서 그래픽스를 렌더링하도록 구성될 수 있다. 파이프라인의 초기 스테이지는, 장면이 래스터화되고 디스플레이 디바이스(416)에 출력되기에 적절한 별개의 화상 요소의 세트로 스크린 공간으로 변환되기 전에, 가상 공간에서 수행되는 동작을 포함할 수 있다. 파이프라인에 걸쳐, 그래픽스 메모리(428)에 포함된 여러 자원은 파이프라인 스테이지에서 사용될 수 있고, 스테이지에 입력과 출력은 이미지의 최종 값이 결정되기 전에 그래픽스 메모리에 포함된 버퍼에 일시적으로 저장될 수 있다.
렌더링 파이프라인은, 가상 공간에서 설정되고 장면 내 좌표에 대해 한정된 기하를 구비하는 정점 세트에 의해 한정된 하나 이상의 가상 객체를 포함할 수 있는 입력 데이터(432)에 동작할 수 있다. 파이프라인의 초기 스테이지는, 도 4b에서 정점 처리 스테이지(434)로 넓게 분류될 수 있는 것을 포함할 수 있고, 이것은 가상 공간 내 객체의 정점을 처리하는 여러 연산을 포함할 수 있다. 이것은 장면 내 정점의 여러 파라미터 값, 예를 들어, 위치 값(예를 들어, X-Y 좌표 및 Z-깊이 값), 컬러 값, 조명 값, 텍스처 좌표, 등을 조작할 수 있는 정점 셰이딩 연산(436)을 포함할 수 있다. 바람직하게는, 정점 셰이딩 연산(436)은 GPU(404)의 하나 이상의 프로그래밍가능한 정점 셰이더(VS)에 의해 수행된다. 정점 처리 스테이지는 가상 공간에서 새로운 정점과 새로운 기하를 생성하는데 선택적으로 사용될 수 있는 추가적인 정점 처리 연산, 예를 들어, 테셀레이션(tessellatiom) 및 기하 셰이더 연산(438)을 선택적으로 포함할 수 있다. 테셀레이션 연산은 CPU 코드(403 C )에 의해 구현된 애플리케이션에 초기에 설정된 것을 넘어 새로운 장면 기하를 생성하도록 장면 기하 및 기하 셰이딩 연산을 서브 분할한다. 정점 처리 스테이지(434)가 완료되면, 장면은 정점 파라미터 값(439)의 세트를 각각 구비하는 정점 세트에 의해 한정된다. 정점 파라미터 값은 텍스처 좌표, 탄젠트, 조명 값, 컬러, 위치, 등을 포함할 수 있다.
파이프라인(430)은 장면 기하를 스크린 공간과 별개의 화상 요소, 즉, 픽셀의 세트로 변환하는 것과 연관된 래스터화 처리 스테이지(440)로 진행할 수 있다. (3차원일 수 있는) 가상 공간 기하는 본질적으로 가상 공간으로부터 객체와 정점을 장면의 뷰 윈도우(또는 "뷰포트)로 투영을 연산할 수 있는 동작을 통해 (일반적으로 2차원인) 스크린 공간 기하로 변환된다. 정점의 서브셋은 스크린 공간에서 기본요소의 세트를 한정하도록 그룹화된다. 본 발명의 측면에 따라, 래스터화 스테이지(440)는 곡선 뷰포트 상으로 정점의 투영을 근접시킨다.
본 발명의 측면에 따라, 그래픽스 파이프라인(430)은 래스터화 스테이지에 프론트 엔드(441)를 포함한다. 프론트 엔드는 래스터화 스테이지의 일부로 구현되거나 또는 정점 처리(434)와 래스터화 스테이지(440) 사이에 중간 스테이지로 구현될 수 있다. 도 4b에 도시된 예에서, 프론트 엔드(441)는 래스터화 스테이지(440)의 일부로 도시된다. 그러나, 본 발명의 측면은 이러한 구현으로 제한되지 않는다. 특정 구현에서, 프론트 엔드(441)는 전체적으로 또는 부분적으로 GPU(404)에서 실행되는 연산 셰이더(CS)로 구현된다. 그러나, 본 발명의 측면은 이러한 구현으로 제한되지 않는다.
본 발명의 프론트 엔드(441) 및 관련된 측면의 동작은 도 4a 및 도 4b를 참조하여 이해될 수 있다.
도 4b에 도시된 래스터화 처리 스테이지(440)는 장면 내 각 정점 세트에 의해 한정된 기본요소들을 설정할 수 있는 기본요소 조립 동작(442)을 포함한다. 각 정점은 인덱스에 의해 한정될 수 있고, 각 기본요소는 그래픽스 메모리(428) 내 인덱스 버퍼(IB)에 저장될 수 있는 정점 인덱스에 대하여 한정될 수 있다. 기본요소는 바람직하게는 3개의 정점에 의해 한정된 삼각형을 각각 포함하지만, 또한 점 기본요소, 라인 기본요소, 및 다른 다각형 형상을 포함할 수도 있다. 기본요소 조립 스테이지(442) 동안, 특정 기본요소는 선택적으로 발췌(culled)될 수 있다. 예를 들어, 특정 감는 순서를 나타내는 인덱스를 갖는 이 기본 요소는 뒤를 향하는(back-facing) 것으로 고려되고, 장면으로부터 발췌될 수 있다.
예로서, 및 비 제한적으로, 기본요소들이 3차원 가상 공간에서 정점에 의해 한정된 삼각형 형태인 경우, 기본요소 조립은 디스플레이(416)의 스크린 상에서 각 삼각형이 위치된 곳을 결정한다. 클리핑(clipping) 동작과 스크린 공간 변환 동작은 일반적으로 기본요소 조립 유닛(442)에 의해 수행된다. 도 5에 도시된 예에서, 프론트 엔드(441)는 (502)에서 지시된 바와 같이 각 정점에 대한 스크린 공간 좌표를 결정한다. 특정 구현에서 스크린 공간 좌표는, 예를 들어, 가상 공간 내 정점의 위치를 장면의 평면 뷰포트 상으로 초기 투영을 연산하는 것에 의해 연산된다. 평면 뷰포트는 다수의 서브구획으로 서브 분할된다. 각 서브구획은, 예를 들어, 도 3에 도시된 바와 같이 스크린 공간의 거의 동일한 입체각에 대응한다. 이 뒤를 향한 기본요소(510)의 일부는 검출되어 제거될 수 있기 때문에, 프론트 엔드(441)는 스크린 공간 좌표로 변환된 각 기본 요소에 대해 거친 래스터화를 수행하여, 기본요소가 오버랩하는 서브구획 또는 서브구획들이 어느 것인지를 결정한다. 스크린 공간으로 변환된 각 기본요소에 대해, 프론트 엔드(441)는 기본요소가 오버랩하는 각 서브구획에 대해 스크린 공간 정정(506)을 수행하여, 기본요소의 각 정점의 좌표를 대응하는 정정된 정점 좌표로 맵핑한다. 스크린 공간 정정(506)은 기본요소가 오버랩하는 각 서브구획을 곡선 뷰포트의 복수의 평면 정정된 서브구획 중 대응하는 평면 정정된 서브구획으로 맵핑하는 것과 등가이고, 여기서 곡선 뷰포트의 정정된 서브구획들은 동일한 영역을 구비한다.
특정 구현에서, (502)에서 정점 좌표의 정정은 다음과 같이 좌표(H, V)의 정점을, 각 서브구획에 대한 대응하는 정정된 정점 좌표(H', V')로 구분적으로 선형 아크탄젠트 변환(arctangent transformation)하는 것을 수반한다:
H' = (H[i] < H < H[i+1])인 i에 대해,
H'[i] + (H'[i+1] - H'[i]) * (H - H[i])/(H[i+1] - H[i])
V' = (V[j] < V < V[j +1])인 j에 대해,
V'[j] + (V'[j+1] - V'[j]) * (V - V[j])/(V[j +1] - V[j])
여기서 H[i] 및 V[j]는, 증가하는 순서로 세트로 선택된 대응하는 일정한 픽셀 영역 공간 경계(H'[i] 및 V'[j])로부터 다음과 같이 유도된 선형 스크린 공간 경계이다:
H[i] = tan(H'[i]*FOVH/2)/tan(FOVH/2)
V[j] = tan(V'[j]*FOVV/2)/tan(FOVV/2)
물리적 광학기기를 갖는 HMD 및 유사한 디스플레이에 대한 특정 구현에서, 이들 스크린 경계에 대한 수식은 동일한 입체각을 각 디스플레이 픽셀로 이상적으로 맵핑하는 것으로부터 광학기기의 편차를 고려하도록 조절될 수 있다.
특정 구현에서, 정정된 정점 좌표는 정점 좌표를 서브구획과 연관시키는 정보를 주석으로 첨부된다. 이 구현에서, 기본요소 조립 스테이지(442)는 정정된 정점 좌표의 주석을 살펴보고, 기본요소만을 적절한 GPU 컴포넌트로 송신하고 이 GPU는 스캔 변환(444) 동작을 위해 이 서브구획을 처리한다. 스캔 변환(444)은 단지 서브구획마다 각 기본요소를 처리하는데, 예를 들어, 각 기본요소는 주석에 의해 지시된 서브구획에서만 처리된다.
스캔 변환 동작(444)은 각 픽셀에서 기본요소를 샘플링하고, 샘플이 기본요소에 의해 커버될 때 추가적인 처리를 위해 기본요소로부터 프래그먼트(종종 픽셀이라고 언급됨)를 생성한다. 스캔 변환 동작은, 스크린 공간 좌표로 변환된 기본요소를 취하고 어느 픽셀이 이 기본요소의 일부인지를 결정하는 동작을 포함한다. 일부 구현에서, 다수의 샘플이 앤티-에일리어싱(anti-aliasing)을 위해 사용될 수 있는 스캔 변환 동작(444) 동안 기본요소 내에 취해진다. 특정 구현에서, 상이한 픽셀들이 상이하게 샘플링될 수 있다. 예를 들어, 일부 에지 픽셀은 특정 유형의 디스플레이 디바이스(416), 예를 들어, 헤드 마운트 디스플레이(HMD)를 위해 특정 측면의 렌더링을 최적화하도록 중심 픽셀보다 더 낮은 샘플링 밀도를 포함할 수 있다. 스캔 변환(444) 동안 기본요소로부터 생성된 프래그먼트(또는 "픽셀")는 파라미터 값을 생성한 기본요소의 정점의 정점 파라미터 값(439)으로부터 픽셀의 위치로 보간될 수 있는 파라미터 값을 구비할 수 있다. 래스터화 스테이지(440)는 이 보간된 프래그먼트 파라미터 값(449)을 연산하는 파라미터 보간 동작(446) 스테이지를 포함할 수 있고, 이 보간된 프래그먼트 파라미터 값은 파이프라인의 나중 스테이지에서 추가적인 처리를 위한 입력으로 사용될 수 있다.
본 발명의 측면에 따라, 기본요소 조립(442)과 스캔 변환(444) 사이에는 스크린의 상이한 서브구획들이 상이한 픽셀 해상도를 구비하는 것을 고려하는 특정 동작들이 일어난다. 특히 구현에서, 기본요소의 정점에 대한 스크린 위치가 일단 알려지면, 거친 래스터화(443)가, 기본요소가 오버랩하는 모든 미리 한정된 스크린 서브구획(종종 본 명세서에서 거친 래스터화 타일 또는 수퍼타일이라고 언급됨)을 찾기 위해 수행될 수 있다. 기본요소가 오버랩하는 각 서브구획에 대해, 기본요소에 대한 정점 위치는 서브구획의 픽셀 해상도를 고려하도록 조절된다. 스캔 변환(444)과 후속 처리 스테이지들은 관련 서브구획 또는 서브구획들에 대한 지정된 개수의 활성 픽셀에 대해서만 픽셀 처리를 수행하는 것에 의해 최종 픽셀 값을 생성한다.
특정 구현에서, GPU(404)는 소프트웨어로 서브구획들 사이에 기본요소의 거친 분할, 및 정점의 투영, 기본요소 조립, 및 하드웨어로 스캔 변환을 구현하도록 구성된다. 일부 이러한 구현에서, GPU(404)는 소프트웨어로 서브구획 인덱스를 기본요소 정점과 연관시키도록 구성되고, 여기서 각 서브구획 인덱스는 하드웨어로 구현된 팔레트(palette)로부터 스크린 공간 투영과 뷰포트를 선택한다. 다른 이러한 구현에서, GPU(404)는 소프트웨어로 서브구획 인덱스를 기본요소 정점 인덱스와 연관시키도록 구성되고, 여기서 각 서브구획 인덱스는 하드웨어로 구현된 팔레트로부터 스크린 공간 투영과 뷰포트를 선택한다.
그래픽스 파이프라인(430)은 일반적으로, 보간된 파라미터 값(449)을 더 조작하고 프래그먼트들이 디스플레이(416)를 위한 최종 픽셀 값에 기여하는 방식을 결정하는 추가적인 동작을 수행하는, 도 4b에서 (450)으로 지시된 픽셀 처리 동작을 더 포함한다. 본 발명의 측면에 따라, 이 태스크는 종래의 방식으로 수행될 수 있다. 픽셀 처리 태스크는 프래그먼트의 보간된 파라미터 값(449)을 더 조작하는 픽셀 셰이딩 연산(452)을 포함한다. 픽셀 셰이딩 연산(452)은 GPU(404)에서 프로그래밍가능한 픽셀 셰이더 또는 목적 설정 하드웨어에 의해 수행될 수 있다. 픽셀 셰이더 호출(pixel shader invocation)(448)은 래스터화 처리 스테이지(440) 동안 기본요소의 샘플링에 기초하여 개시될 수 있다. 픽셀 셰이딩 연산(452)은, 종종 렌더링 타깃(render target: RT)이라고 언급되고 또는 만약 다수 개인 경우, 다수의 렌더링 타깃(MRT)이라고 언급되는, 그래픽스 메모리(428) 내 하나 이상의 버퍼(405)에 값을 출력할 수 있다. MRT에 의해 픽셀 셰이더는 하나를 초과하는 렌더링 타깃으로 선택적으로 출력할 수 있고, 여기서 각 타깃은 동일한 스크린 크기를 구비하지만 상이한 픽셀 포맷을 가질 수 있다.
픽셀 처리 동작(450)은 일반적으로, 하나 이상의 셰이더(예를 들어, 픽셀 셰이더(PS), 연산 셰이더(CS), 정점 셰이더(VS) 또는 다른 유형의 셰이더)에 의해 일부 범위에 및 텍스처 유닛(406)에 의해 일부 범위에 수행될 수 있는 텍스처 맵핑 동작(454)을 포함한다. 픽셀 셰이더 연산(452)은, 스크린 공간 좌표(XY)로부터 텍스처 좌표(UV)를 계산하고, 텍스처 좌표를 텍스처 동작(454)으로 송신하고, 텍스처 데이터(TX)를 수신하는 것을 포함한다. 텍스처 좌표(UV)는 임의의 방식으로 스크린 공간 좌표(XY)로부터 계산될 수 있으나, 일반적으로 보간된 입력 값으로부터 또는 종종 이전의 텍스처 동작의 결과로부터 계산된다. 구배(Gr)는 종종 텍스처 유닛(406)(텍스처 동작 하드웨어 유닛)에 의해 텍스처 좌표의 쿼드(quad)로부터 직접 계산되지만, 픽셀 셰이더 연산(452)에 의해 명시적으로 계산되고, 선택적으로 디폴트 계산을 수행하기 위해 텍스처 유닛(406)에 의존하는 것이 아니라 텍스처 동작(454)으로 전달될 수 있다.
텍스처 동작(456)은 일반적으로 픽셀 셰이더(PS)와 텍스처 유닛(406)의 일부 조합에 의해 수행될 수 있는 다음 스테이지를 포함한다. 먼저, 픽셀 위치(XY)마다 하나 이상의 텍스처 좌표(UV)가 생성되고 사용되어 각 텍스처 맵핑 동작에 대한 좌표 세트가 제공된다. 구배값(Gr)은 텍스처 좌표(UV)로부터 계산되고 사용되어 기본요소에 적용될 텍스처에 대한 상세 레벨(level of detail: LOD)이 결정된다.
픽셀 처리(450)는 일반적으로 래스터 동작(raster operation)(ROP)으로 알려진 것을 포함할 수 있는 일반적으로 렌더링 출력 동작(456)으로 종결된다. 래스터화 동작(ROP)은 간단히 다수의 렌더링 타깃(MRT) 중에서 각 렌더링 타깃에 대해 한번씩 픽셀당 다수회 실행된다. 출력 동작(456) 동안, 최종 픽셀 값(459)은, 프래그먼트를 병합하는 것, 스텐실을 적용하는 것, 깊이 테스트, 및 샘플마다 특정 처리 태스크를 적용하는 것을 선택적으로 포함할 수 있는 프레임 버퍼에서 결정될 수 있다. 최종 픽셀 값(459)은 모든 활성 렌더링 타깃(MRT)에 대해 수집된 출력을 포함한다. GPU(404)는 최종 픽셀 값(459)을 사용하여 완성된 프레임(460)을 구성하고, 이 완성된 프레임은 실시간으로 디스플레이 디바이스(416)의 픽셀에 선택적으로 디스플레이될 수 있다.
추가적인 측면
본 발명의 추가적인 측면은, 그래픽스 처리 방법으로서,
가상 공간에서 장면에 대한 하나 이상의 정점을 나타내는 데이터를 수신하는 단계;
복수의 픽셀을 구비하는 디스플레이 디바이스의 스크린 공간 상으로 상기 정점의 투영을 수행하는 단계로서, 상기 투영은 상기 정점을 곡선 뷰포트 상으로 투영을 근접시키는, 상기 투영을 수행하는 단계;
기본요소 조립을 상기 정점에 수행하여 상기 정점을 상기 스크린 공간 상으로 투영한 것으로부터 스크린 공간에 하나 이상의 기본요소를 생성하는 단계;
상기 하나 이상의 기본요소에 스캔 변환을 수행하여 상기 복수의 픽셀 중 어느 픽셀 또는 픽셀들이 상기 하나 이상의 기본요소 중 대응하는 기본요소의 일부인지를 결정하는 단계;
픽셀 값을 상기 대응하는 기본요소의 일부인 상기 픽셀 또는 픽셀들에 할당하는 픽셀 처리를 수행하는 것에 의해 완성된 프레임을 생성하는 단계를 포함하는 그래픽스 처리 방법을 포함한다.
상기 방법의 일부 구현에서 상기 완성된 프레임은 메모리에 저장되거나 또는 디스플레이 디바이스에 디스플레이된다.
다른 추가적인 측면은, 실행될 때, 상기 방법을 구현하는 컴퓨터 실행가능한 명령어를 포함하는 컴퓨터-판독가능한 매체이다.
또 다른 추가적인 측면은 통신 네트워크로부터 다운로드가능하고/하거나 컴퓨터-판독가능한 매체 및/또는 마이크로프로세서-실행가능한 매체에 저장된 컴퓨터 프로그램 제품으로서, 상기 방법을 구현하는 프로그램 코드 명령어를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품이다.
추가적인 측면은 상기 방법을 수행하는 컴퓨터-판독가능한 명령어를 운반하는 전자기 신호 또는 다른 신호이다.
본 발명의 다른 측면은 정점 및/또는 픽셀 데이터를 처리하여 2개의 상이한 서브구획에 있는 장면 부분들이 상이한 유효 픽셀 해상도를 가지는 방식으로 디스플레이 디바이스에 디스플레이되는 장면의 뷰포트를 위한 최종 픽셀 값을 생성하는 그래픽스 처리 방법이다.
일부 구현에서 상기 방법은 사용자가 응시하는 상기 디스플레이 디바이스의 스크린 부분을 결정하는 단계, 및 상기 사용자가 응시하는 부분을 포함하는 상기 서브구획 또는 서브구획들에서 상기 유효 픽셀 해상도가 가장 높도록 픽셀 해상도를 가변시키는 단계를 더 포함한다.
추가적인 측면은 전술한 방법을 구현하도록 구성된 컴퓨터 그래픽스 장치이다.
다른 추가적인 측면은, 실행될 때, 상기 방법을 구현하는 컴퓨터 실행가능한 명령어를 저장하는 컴퓨터-판독가능한 매체이다.
또 다른 추가적인 측면은 통신 네트워크로부터 다운로드가능하고/하거나 컴퓨터-판독가능한 매체 및/또는 마이크로프로세서-실행가능한 매체에 저장된 컴퓨터 프로그램 제품으로서, 상기 방법을 구현하는 프로그램 코드 명령어를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품이다.
추가적인 다른 측면은 상기 방법을 수행하는 컴퓨터-판독가능한 명령어를 운반하는 전자기 신호 또는 다른 신호이다.
상기는 본 발명의 바람직한 실시예의 전체 설명이지만, 여러 대안, 변형 및 균등물이 사용될 수 있다. 그러므로, 본 발명의 범위는 상기 설명에 의해 결정되어서는 안되고, 최대 균등범위와 함께 첨부된 청구범위에 의해 결정되어야 한다. 바람직하든 아니든 상관없이, 본 명세서에 설명된 임의의 특징은, 바람직한 것이든 아니든 상관없이 본 명세서에 설명된 다른 특징과 결합될 수 있다. 이후 청구범위에서, 단수 개체는 명시적으로 달리 언급된 것을 제외하고는 이 단수 개체 이후에 나오는 하나 이상의 항목의 양을 말한다. 첨부된 청구범위는, 수단 플러스 기능 한정이 어구 "~하는 수단"을 사용하여 주어진 청구항에서 명시적으로 언급되지 않는 한, 이 수단 플러스 기능 한정을 포함하는 것으로 해석되어서는 안 된다.

Claims (33)

  1. 그래픽스 처리 유닛과 메모리를 구비하는 그래픽스 처리 시스템으로 그래픽스를 처리하는 방법으로서,
    가상 공간에서 장면에 대한 하나 이상의 정점들을 나타내는 데이터를 수신하는 단계;
    복수의 픽셀들을 구비하는 디스플레이 디바이스의 스크린 공간 상으로 상기 정점들의 수학적인 투영을 수행하는 단계;
    기본요소 조립을 상기 정점들에 수행하여 상기 정점들을 상기 스크린 공간 상으로 투영하는 것으로부터 스크린 공간에 하나 이상의 기본요소를 생성하는 단계;
    스캔 변환을 상기 하나 이상의 기본요소에 수행하여 상기 복수의 픽셀들 중 어느 픽셀 또는 픽셀들이 상기 하나 이상의 기본요소 중 대응하는 기본요소의 일부인지를 결정하는 단계;
    픽셀 값을 상기 대응하는 기본요소의 부분인 상기 픽셀 또는 픽셀들에 할당하는 픽셀 처리를 수행하는 것에 의해 완성된 프레임을 생성하는 단계; 및
    상기 완성된 프레임을 상기 메모리에 저장하거나 또는 상기 완성된 프레임을 상기 디스플레이 디바이스에 디스플레이하는 단계를 포함하고,
    상기 수학적인 투영은, 상기 정점들을 평판 스크린 공간 상으로 수학적인 투영을 하고, 이어서 거의 동일한 입체각을 나타내는 상기 평판 스크린 공간의 서브구획들을 거의 동일한 영역의 대응하는 서브구획들로 변환함으로써, 상기 정점들의 투영을 곡선 뷰포트 상으로 근접시키는 구분적인 선형 투영(piecewise linear projection)을 포함하며,
    상기 서브구획들의 상기 변환은 렌더링되어야 할 상기 스크린 공간의 유효 영역을 감소시키는, 그래픽스를 처리하는 방법.
  2. 제1항에 있어서, 상기 정점의 투영을 수행하는 단계는,
    평면 뷰포트는 복수의 서브구획으로 서브 분할되고, 상기 복수의 서브구획의 각 서브구획은 상기 스크린 공간의 거의 동일한 입체각에 대응하는, 가상 공간으로부터 상기 장면의 평면 뷰포트 상으로 상기 정점의 초기 투영을 연산하는 단계;
    스크린 공간 좌표로 변환된 각 기본요소에 대한 거친 래스터화(coarse rasterization)를 수행하여 상기 기본요소가 오버랩하는 서브구획 또는 서브구획들이 어느 것인지를 결정하는 단계; 및
    상기 하나 이상의 기본요소의 각 기본요소에 대해 상기 기본요소가 오버랩하는 각 서브구획에 대해 스크린 공간 정정을 수행하여 상기 기본요소의 각 정점의 좌표를 상기 서브구획과 연관된 대응하는 정정된 정점 좌표로 맵핑하는 단계를 포함하고,
    상기 스크린 공간 정정은 상기 기본요소가 오버랩하는 각 서브구획을 상기 곡선 뷰포트의 복수의 평면 정정된 서브구획 중 대응하는 평면 정정된 서브구획으로 맵핑하는 것과 등가이고, 상기 곡선 뷰포트의 정정된 서브구획들은 동일한 영역을 구비하는, 그래픽스를 처리하는 방법.
  3. 제2항에 있어서, 상기 스크린 공간 정정을 수행하는 동작은 아크탄젠트 수식의 구분적인 선형 근접화(piecewise linear approximation)를 상기 기본요소의 하나 이상의 정점의 스크린 공간 좌표에 적용하여 대응하는 정정된 정점을 생성하는 것을 수반하는 연산을 수행하는 동작을 포함하는, 그래픽스를 처리하는 방법.
  4. 제2항에 있어서, 상기 스크린 공간 정정을 수행하는 동작은 디스플레이 디바이스 내 물리적 광학기기에 의해 생성된 이미지 왜곡의 구분적인 선형 근접화를 상기 기본요소의 하나 이상의 정점의 스크린 공간 좌표에 적용하여 대응하는 정정된 정점을 생성하는 것을 수반하는 연산을 수행하는 동작을 포함하는, 그래픽스를 처리하는 방법.
  5. 제2항에 있어서, 상기 스캔 변환은 정정된 서브구획마다 수행되고, 상기 복수의 서브구획 중 주어진 서브구획에서 상기 하나 이상의 기본요소 중 주어진 기본요소에 대해 스캔 변환은 상기 주어진 서브구획과 연관된 상기 주어진 기본요소에 대해 상기 정정된 정점 좌표를 사용하여 상기 주어진 서브구획에 위치된 상기 주어진 기본요소 부분에 수행되는, 그래픽스를 처리하는 방법.
  6. 제2항에 있어서, 상기 평면 뷰포트의 상기 복수의 서브구획의 서브구획은 직사각형인, 그래픽스를 처리하는 방법.
  7. 제1항에 있어서, 상기 정점의 투영, 기본요소 조립, 및 스캔 변환은 연산 셰이더에 의해 소프트웨어로 구현되는, 그래픽스를 처리하는 방법.
  8. 제1항에 있어서, 상기 정점의 투영, 기본요소 조립, 및 스캔 변환은 하드웨어로 구현되는, 그래픽스를 처리하는 방법.
  9. 제1항에 있어서, 사용자가 응시하는 상기 디스플레이 디바이스의 스크린 부분을 결정하는 단계를 더 포함하고, 상기 투영은 상기 사용자가 응시하는 부분을 포함하는 스크린의 하나 이상의 서브구획에 대해 유효 픽셀 해상도가 가장 높도록 유효 픽셀 해상도를 가변시키도록 구성되는, 그래픽스를 처리하는 방법.
  10. 제1항에 있어서, 상기 투영은 상기 디스플레이 디바이스의 주어진 광학기기와 FOV(field of view)에 대해 정적인, 그래픽스를 처리하는 방법.
  11. 제1항에 있어서, 상기 투영은 상기 디스플레이 디바이스의 주어진 광학기기와 FOV에 대해 정적이고, 상기 투영은, 상기 스크린의 하나 이상의 중심 서브구획이 최대 유효 픽셀 해상도를 구비하며, 상기 중심으로부터 먼 서브구획은 점진적으로 더 낮은 유효 픽셀 해상도를 구비하도록 구성된, 그래픽스를 처리하는 방법.
  12. 제1항에 있어서, 상기 디스플레이 디바이스는 90도 이상의 FOV를 특징으로 하는 그래픽스를 처리하는 방법.
  13. 제1항에 있어서, 상기 디스플레이 디바이스는 헤드-마운트 디스플레이 디바이스인, 그래픽스를 처리하는 방법.
  14. 그래픽스 처리 시스템으로서,
    그래픽스 처리 유닛(GPU); 및
    메모리를 포함하되,
    상기 그래픽스 처리 유닛은 가상 공간 내 장면에 대한 하나 이상의 정점들을 나타내는 데이터를 수신하도록 구성되고,
    상기 GPU는 복수의 픽셀들을 구비하는 디스플레이 디바이스의 스크린 공간 상으로 상기 정점들의 수학적인 투영을 수행하도록 구성되며,
    상기 수학적인 투영은, 상기 정점들을 평판 스크린 공간 상으로 수학적인 투영을 하고, 이어서 거의 동일한 입체각을 나타내는 상기 평판 스크린 공간의 서브구획들을 거의 동일한 영역의 대응하는 서브구획들로 변환함으로써, 상기 정점들의 투영을 곡선 뷰포트 상으로 근접시키고,
    상기 서브구획들의 상기 변환은 렌더링되어야 할 상기 스크린 공간의 유효 영역을 감소시키며,
    상기 GPU는 상기 정점에 기본요소 조립을 수행하여 상기 정점을 상기 스크린 공간 상으로 투영하는 것으로부터 스크린 공간에 하나 이상의 기본요소를 생성하도록 구성되고,
    상기 GPU는 상기 하나 이상의 기본요소에 스캔 변환을 수행하여 상기 복수의 픽셀 중 어느 픽셀 또는 픽셀들이 상기 하나 이상의 기본요소 중 대응하는 기본요소의 일부인지를 결정하도록 구성되며,
    상기 GPU는 픽셀 값을 상기 대응하는 기본요소의 일부인 상기 픽셀 또는 픽셀들에 할당하는 픽셀 처리를 수행하는 것에 의해 완성된 프레임을 생성하도록 구성되고;
    상기 GPU는 상기 완성된 프레임을 상기 메모리에 저장하거나 또는 상기 완성된 프레임을 상기 디스플레이 디바이스에 디스플레이하도록 구성된, 그래픽스 처리 시스템.
  15. 제14항에 있어서, 상기 GPU는,
    평면 뷰포트는 복수의 서브구획으로 서브 분할되고, 상기 복수의 서브구획의 각 서브구획은 상기 스크린 공간의 거의 동일한 입체각에 대응하는, 가상 공간으로부터 상기 장면의 평면 뷰포트 상으로 상기 정점의 초기 투영을 연산하는 동작;
    스크린 공간 좌표로 변환된 각 기본요소에 대해 거친 래스터화를 수행하여 상기 기본요소가 오버랩하는 서브구획 또는 서브구획들이 어느 것인지를 결정하는 동작; 및
    상기 하나 이상의 기본요소의 각 기본요소에 대해 상기 기본요소가 오버랩하는 각 서브구획에 대해 스크린 공간 정정을 수행하여 상기 기본요소의 각 정점의 좌표를 상기 서브구획과 연관된 대응하는 정정된 정점 좌표로 맵핑하는 동작에 의해 상기 정점의 투영을 수행하도록 구성되고,
    상기 스크린 공간 정정은 상기 기본요소가 오버랩하는 각 서브구획을 상기 곡선 뷰포트의 복수의 평면 정정된 서브구획 중 대응하는 평면 정정된 서브구획으로 맵핑하는 것과 등가인, 그래픽스 처리 시스템.
  16. 제15항에 있어서, 상기 GPU는 아크탄젠트 수식의 구분적인 선형 근접화를 상기 기본요소의 하나 이상의 정점의 스크린 공간 좌표에 적용하여 대응하는 정정된 정점을 생성하는 것을 수반하는 연산을 수행하는 것에 의해 상기 스크린 공간 정정을 수행하도록 구성된, 그래픽스 처리 시스템.
  17. 제15항에 있어서, 상기 GPU는 디스플레이 디바이스 내 물리적 광학기기에 의해 생성된 이미지 왜곡의 구분적인 선형 근접화를 상기 기본요소의 하나 이상의 정점의 스크린 공간 좌표에 적용하여 대응하는 정정된 정점을 생성하는 것을 수반하는 연산을 수행하는 것에 의해 상기 스크린 공간 정정을 수행하도록 구성된, 그래픽스 처리 시스템.
  18. 제15항에 있어서, 상기 GPU는 정정된 서브구획마다 스캔 변환을 수행하도록 구성되고, 상기 복수의 서브구획 중 주어진 서브구획에서 상기 하나 이상의 기본요소 중 주어진 기본요소에 대해 상기 GPU는 상기 주어진 서브구획과 연관된 상기 주어진 기본요소에 대한 상기 정정된 정점 좌표를 사용하여 상기 주어진 서브구획에 위치된 상기 주어진 기본요소 부분에 스캔 변환을 수행하는, 그래픽스 처리 시스템.
  19. 제15항에 있어서, 상기 평면 뷰포트의 상기 복수의 서브구획의 서브구획은 직사각형인, 그래픽스 처리 시스템.
  20. 제15항에 있어서, 상기 곡선 뷰포트의 상기 정정된 서브구획들은 동일한 영역을 구비하는, 그래픽스 처리 시스템.
  21. 제20항에 있어서, 상기 평면 뷰포트의 상기 복수의 서브구획의 서브구획은 직사각형인, 그래픽스 처리 시스템.
  22. 제14항에 있어서, 상기 GPU는 상기 정점의 투영, 기본요소 조립, 및 스캔 변환을 연산 셰이더로 소프트웨어로 구현하도록 구성된, 그래픽스 처리 시스템.
  23. 제14항에 있어서, 상기 GPU는 상기 정점의 투영, 기본요소 조립, 및 스캔 변환을 하드웨어로 구현하도록 구성된, 그래픽스 처리 시스템.
  24. 제14항에 있어서, 상기 GPU는 서브구획들 사이에 기본요소의 거친 분할을 소프트웨어로 구현하고, 상기 정점의 투영, 기본요소 조립, 및 스캔 변환을 하드웨어로 구현하도록 구성된, 그래픽스 처리 시스템.
  25. 제24항에 있어서, 상기 GPU는 서브구획 인덱스를 기본요소 정점과 소프트웨어로 연관시키도록 구성되고, 각 서브구획 인덱스는 하드웨어로 구현된 팔레트(palette)로부터 스크린 공간 투영과 뷰포트를 선택하는, 그래픽스 처리 시스템.
  26. 제24항에 있어서, 상기 GPU는 서브구획 인덱스를 기본요소 정점 인덱스와 소프트웨어로 연관시키도록 구성되고, 각 서브구획 인덱스는 하드웨어로 구현된 팔레트로부터 스크린 공간 투영과 뷰포트를 선택하는, 그래픽스 처리 시스템.
  27. 그래픽스 처리 시스템으로서,
    그래픽스 처리 유닛(GPU);
    디스플레이 디바이스; 및
    메모리를 포함하되,
    상기 그래픽스 처리 유닛은 가상 공간 내 장면에 대한 하나 이상의 정점들을 나타내는 데이터를 수신하도록 구성되고,
    상기 GPU는 복수의 픽셀을 구비하는 상기 디스플레이 디바이스의 스크린 공간 상으로 상기 정점들의 수학적인 투영을 수행하도록 구성되며,
    상기 수학적인 투영은, 상기 정점들을 평판 스크린 공간 상으로 수학적인 투영을 하고, 이어서 거의 동일한 입체각을 나타내는 상기 평판 스크린 공간의 서브구획들을 거의 동일한 영역의 대응하는 서브구획들로 변환함으로써, 상기 정점들의 투영을 곡선 뷰포트 상으로 근접시키고,
    상기 서브구획들의 상기 변환은 렌더링되어야 할 상기 스크린 공간의 유효 영역을 감소시키며,
    상기 GPU는 상기 정점에 기본요소 조립을 수행하여 상기 정점을 상기 스크린 공간 상으로 투영하는 것으로부터 스크린 공간에 하나 이상의 기본요소를 생성하도록 구성되고,
    상기 GPU는 상기 하나 이상의 기본요소에 스캔 변환을 수행하여 상기 복수의 픽셀 중 어느 픽셀 또는 픽셀들이 상기 하나 이상의 기본요소 중 대응하는 기본요소의 일부인지를 결정하도록 구성되며,
    상기 GPU는 픽셀 값을 상기 대응하는 기본요소의 일부인 상기 픽셀 또는 픽셀들에 할당하는 픽셀 처리를 수행하는 것에 의해 완성된 프레임을 생성하도록 구성된, 그래픽스 처리 시스템.
  28. 제14항에 있어서, 상기 디스플레이 디바이스는 90도 이상의 FOV를 특징으로 하는 그래픽스 처리 시스템.
  29. 제14항에 있어서, 상기 디스플레이 디바이스는 헤드-마운트 디스플레이 디바이스인, 그래픽스 처리 시스템.
  30. 제14항에 있어서, 상기 시스템은 사용자가 응시하는 상기 디스플레이 디바이스의 스크린 부분을 결정하도록 구성되고, 상기 투영은 상기 사용자가 응시하는 부분을 포함하는 상기 스크린의 하나 이상의 서브구획에 대해 유효 픽셀 해상도가 가장 높도록 상기 유효 픽셀 해상도를 가변시키도록 구성된, 그래픽스 처리 시스템.
  31. 제14항에 있어서, 상기 투영은 상기 디스플레이 디바이스의 주어진 광학기기와 FOV에 대해 정적인, 그래픽스 처리 시스템.
  32. 제14항에 있어서, 상기 투영은 상기 디스플레이 디바이스의 주어진 광학기기와 FOV에 대해 정적이고, 상기 투영은, 상기 스크린의 하나 이상의 중심 서브구획이 최대 유효 픽셀 해상도를 가지고, 중심으로부터 멀리 있는 서브구획이 점진적으로 더 낮은 유효 픽셀 해상도를 가지도록 구성된, 그래픽스 처리 시스템.
  33. 실행될 때, 제1항의 방법을 구현하는 컴퓨터 실행가능한 명령어들을 포함하는 비-일시적인 컴퓨터-판독가능한 매체.
KR1020167027105A 2014-04-05 2015-03-23 곡선 뷰포트 상으로 정점의 투영을 근접시키는 것에 의해 그래픽스를 처리할 때 스크린 위치에 따른 유효 해상도의 가변 KR101964611B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/246,066 US9836816B2 (en) 2014-04-05 2014-04-05 Varying effective resolution by screen location in graphics processing by approximating projection of vertices onto curved viewport
US14/246,066 2014-04-05
PCT/US2015/021984 WO2015153169A1 (en) 2014-04-05 2015-03-23 Varying effective resolution by screen location in graphics processing by approximating projection of vertices onto curved viewport

Publications (2)

Publication Number Publication Date
KR20160130257A KR20160130257A (ko) 2016-11-10
KR101964611B1 true KR101964611B1 (ko) 2019-04-02

Family

ID=54210196

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167027105A KR101964611B1 (ko) 2014-04-05 2015-03-23 곡선 뷰포트 상으로 정점의 투영을 근접시키는 것에 의해 그래픽스를 처리할 때 스크린 위치에 따른 유효 해상도의 가변

Country Status (6)

Country Link
US (2) US9836816B2 (ko)
EP (2) EP3716216A1 (ko)
JP (3) JP6333405B2 (ko)
KR (1) KR101964611B1 (ko)
TW (1) TWI578266B (ko)
WO (1) WO2015153169A1 (ko)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10068311B2 (en) 2014-04-05 2018-09-04 Sony Interacive Entertainment LLC Varying effective resolution by screen location by changing active color sample count within multiple render targets
US11302054B2 (en) 2014-04-05 2022-04-12 Sony Interactive Entertainment Europe Limited Varying effective resolution by screen location by changing active color sample count within multiple render targets
US9710881B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Varying effective resolution by screen location by altering rasterization parameters
US9495790B2 (en) 2014-04-05 2016-11-15 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping to non-orthonormal grid
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
US9865074B2 (en) 2014-04-05 2018-01-09 Sony Interactive Entertainment America Llc Method for efficient construction of high resolution display buffers
EP3872767A1 (en) 2014-04-05 2021-09-01 Sony Interactive Entertainment LLC Method for efficient re-rendering objects to vary viewports and under varying rendering and rasterization parameters
US9652882B2 (en) 2014-04-05 2017-05-16 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
US10783696B2 (en) 2014-04-05 2020-09-22 Sony Interactive Entertainment LLC Gradient adjustment for texture mapping to non-orthonormal grid
US9760113B2 (en) 2015-02-20 2017-09-12 Sony Interactive Entertainment America Llc Backward compatibility through use of spoof clock and fine grain frequency control
US9704217B2 (en) 2015-04-20 2017-07-11 Intel Corporation Apparatus and method for non-uniform frame buffer rasterization
US10235219B2 (en) 2015-07-27 2019-03-19 Sony Interactive Entertainment America Llc Backward compatibility by algorithm matching, disabling features, or throttling performance
US11403099B2 (en) 2015-07-27 2022-08-02 Sony Interactive Entertainment LLC Backward compatibility by restriction of hardware resources
US9857871B2 (en) 2015-09-04 2018-01-02 Sony Interactive Entertainment Inc. Apparatus and method for dynamic graphics rendering based on saccade detection
US10726619B2 (en) 2015-10-29 2020-07-28 Sony Interactive Entertainment Inc. Foveated geometry tessellation
US9892024B2 (en) 2015-11-02 2018-02-13 Sony Interactive Entertainment America Llc Backward compatibility testing of software in a mode that disrupts timing
KR102160414B1 (ko) 2016-01-22 2020-09-28 주식회사 소니 인터랙티브 엔터테인먼트 하위 호환성을 위한 레거시 버스 동작 시뮬레이션
JP6788017B2 (ja) 2016-01-22 2020-11-18 株式会社ソニー・インタラクティブエンタテインメント 後方互換性のためのなりすましcpuid
US9972066B1 (en) * 2016-03-16 2018-05-15 Gopro, Inc. Systems and methods for providing variable image projection for spherical visual content
US10303488B2 (en) 2016-03-30 2019-05-28 Sony Interactive Entertainment Inc. Real-time adjustment of application-specific operating parameters for backwards compatibility
US10275239B2 (en) 2016-03-30 2019-04-30 Sony Interactive Entertainment Inc. Deriving application-specific operating parameters for backwards compatiblity
US10915333B2 (en) 2016-03-30 2021-02-09 Sony Interactive Entertainment Inc. Deriving application-specific operating parameters for backwards compatiblity
US10401952B2 (en) 2016-03-31 2019-09-03 Sony Interactive Entertainment Inc. Reducing rendering computation and power consumption by detecting saccades and blinks
US10152819B2 (en) 2016-08-15 2018-12-11 Microsoft Technology Licensing, Llc Variable rate shading
GB2553353B (en) * 2016-09-05 2021-11-24 Advanced Risc Mach Ltd Graphics processing systems and graphics processors
KR102650215B1 (ko) * 2016-10-18 2024-03-21 삼성전자주식회사 영상 처리 방법 및 장치
WO2018134946A1 (ja) * 2017-01-19 2018-07-26 株式会社ソニー・インタラクティブエンタテインメント 画像生成装置、及び画像表示制御装置
US10147227B2 (en) * 2017-02-17 2018-12-04 Microsoft Technology Licensing, Llc Variable rate shading
US10546365B2 (en) * 2017-03-27 2020-01-28 Advanced Micro Devices, Inc. Single pass flexible screen/scale rasterization
CN107146274B (zh) * 2017-05-05 2021-06-22 上海兆芯集成电路有限公司 图像数据处理系统、纹理贴图压缩和产生全景视频的方法
US10685473B2 (en) * 2017-05-31 2020-06-16 Vmware, Inc. Emulation of geometry shaders and stream output using compute shaders
CN110770796B (zh) * 2017-06-05 2024-03-15 谷歌有限责任公司 平稳变化的中央凹型渲染
CN110891659B (zh) * 2017-06-09 2021-01-29 索尼互动娱乐股份有限公司 对注视点渲染系统中的粒子和模拟模型的优化的延迟照明和中心凹调适
US10515466B2 (en) 2017-06-09 2019-12-24 Sony Interactive Entertainment Inc. Optimized deferred lighting in a foveated rendering system
US10460509B2 (en) * 2017-11-07 2019-10-29 Dolby Laboratories Licensing Corporation Parameterizing 3D scenes for volumetric viewing
KR102547943B1 (ko) * 2018-01-05 2023-06-26 삼성디스플레이 주식회사 헤드 마운트 표시 장치
JP2021105749A (ja) * 2018-03-20 2021-07-26 ソニーグループ株式会社 情報処理装置、情報処理方法およびプログラム
US11145108B2 (en) * 2018-03-21 2021-10-12 Nvidia Corporation Uniform density cube map rendering for spherical projections
CN110324601A (zh) * 2018-03-27 2019-10-11 京东方科技集团股份有限公司 渲染方法、计算机产品及显示装置
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
US10942564B2 (en) 2018-05-17 2021-03-09 Sony Interactive Entertainment Inc. Dynamic graphics rendering based on predicted saccade landing point
JP7217206B2 (ja) 2019-07-10 2023-02-02 株式会社ソニー・インタラクティブエンタテインメント 画像表示装置、画像表示システムおよび画像表示方法
JP7377014B2 (ja) * 2019-07-10 2023-11-09 株式会社ソニー・インタラクティブエンタテインメント 画像表示装置、画像表示システムおよび画像表示方法
US11514549B2 (en) 2020-02-03 2022-11-29 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by generating information in one rendering phase for use in another rendering phase
US11120522B2 (en) 2020-02-03 2021-09-14 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by subdividing geometry
US12112394B2 (en) * 2020-02-03 2024-10-08 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by pretesting against screen regions using configurable shaders
US11321800B2 (en) 2020-02-03 2022-05-03 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by region testing while rendering
US11080814B1 (en) 2020-02-03 2021-08-03 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by pretesting against screen regions using prior frame information
US11170461B2 (en) 2020-02-03 2021-11-09 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by performing geometry analysis while rendering
US11263718B2 (en) 2020-02-03 2022-03-01 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by pretesting against in interleaved screen regions before rendering
US11508110B2 (en) 2020-02-03 2022-11-22 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by performing geometry analysis before rendering
CN112581580B (zh) * 2020-12-24 2024-08-13 西安翔腾微电子科技有限公司 一种基于sysML视图的GPU投影变换模块的TLM装置及操作方法

Family Cites Families (111)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4513317A (en) 1982-09-28 1985-04-23 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Retinally stabilized differential resolution television display
US5224208A (en) 1990-03-16 1993-06-29 Hewlett-Packard Company Gradient calculation for texture mapping
US5130794A (en) 1990-03-29 1992-07-14 Ritchey Kurtis J Panoramic display system
US5422653A (en) 1993-01-07 1995-06-06 Maguire, Jr.; Francis J. Passive virtual reality
US5602391A (en) 1995-02-23 1997-02-11 Hughes Electronics Quincunx sampling grid for staring array
US5777913A (en) 1995-12-27 1998-07-07 Ericsson Inc. Resolution enhancement of fixed point digital filters
USH1812H (en) * 1997-10-24 1999-11-02 Sun Microsystems, Inc. Method for encoding bounding boxes of drawing primitives to be rendered for multi-resolution supersampled frame buffers
US6496187B1 (en) 1998-02-17 2002-12-17 Sun Microsystems, Inc. Graphics system configured to perform parallel sample to pixel calculation
DE69901542T2 (de) 1998-02-17 2002-12-05 Sun Microsystems, Inc. Verfahren und vorrichtung zur abschätzung der leistung eines grafischen systems von polygonen
WO1999041706A1 (en) 1998-02-17 1999-08-19 Sun Microsystems, Inc. Graphics system with variable resolution super-sampling
US6469700B1 (en) 1998-06-24 2002-10-22 Micron Technology, Inc. Per pixel MIP mapping and trilinear filtering using scanline gradients for selecting appropriate texture maps
US6552723B1 (en) 1998-08-20 2003-04-22 Apple Computer, Inc. System, apparatus and method for spatially sorting image data in a three-dimensional graphics pipeline
JP2000155850A (ja) 1998-11-20 2000-06-06 Sony Corp テクスチャ・マッピング装置及びこれを具備したレンダリング装置、並びに情報処理装置
US6417861B1 (en) 1999-02-17 2002-07-09 Sun Microsystems, Inc. Graphics system with programmable sample positions
US6781606B2 (en) 1999-05-20 2004-08-24 Hewlett-Packard Development Company, L.P. System and method for displaying images using foveal video
US6731298B1 (en) 2000-10-02 2004-05-04 Nvidia Corporation System, method and article of manufacture for z-texture mapping
JP2002260003A (ja) 2001-03-02 2002-09-13 Hitachi Ltd 映像表示装置
US6906723B2 (en) 2001-03-29 2005-06-14 International Business Machines Corporation Generating partials for perspective corrected texture coordinates in a four pixel texture pipeline
US6731434B1 (en) 2001-05-23 2004-05-04 University Of Central Florida Compact lens assembly for the teleportal augmented reality system
US7555157B2 (en) 2001-09-07 2009-06-30 Geoff Davidson System and method for transforming graphical images
US7155698B1 (en) 2001-09-11 2006-12-26 The Regents Of The University Of California Method of locating areas in an image such as a photo mask layout that are sensitive to residual processing effects
US7081893B2 (en) 2001-10-10 2006-07-25 Sony Computer Entertainment America Inc. System and method for point pushing to render polygons in environments with changing levels of detail
US7046245B2 (en) 2001-10-10 2006-05-16 Sony Computer Entertainment America Inc. System and method for environment mapping
US6738069B2 (en) 2001-12-31 2004-05-18 Intel Corporation Efficient graphics state management for zone rendering
US6906714B2 (en) 2002-06-21 2005-06-14 Intel Corporation Accelerated visualization of surface light fields
US6891548B2 (en) 2002-08-23 2005-05-10 Hewlett-Packard Development Company, L.P. System and method for calculating a texture-mapping gradient
TWI238975B (en) 2003-02-20 2005-09-01 Via Tech Inc Method of performing cubic mapping with texturing
US7619626B2 (en) 2003-03-01 2009-11-17 The Boeing Company Mapping images from one or more sources into an image for display
US7336277B1 (en) * 2003-04-17 2008-02-26 Nvidia Corporation Per-pixel output luminosity compensation
JP3966832B2 (ja) 2003-04-28 2007-08-29 株式会社東芝 描画処理装置、及び、描画処理方法
US7495638B2 (en) 2003-05-13 2009-02-24 Research Triangle Institute Visual display with increased field of view
EP1496475B1 (en) * 2003-07-07 2013-06-26 STMicroelectronics Srl A geometric processing stage for a pipelined graphic engine, corresponding method and computer program product therefor
US6967663B1 (en) 2003-09-08 2005-11-22 Nvidia Corporation Antialiasing using hybrid supersampling-multisampling
US8085273B2 (en) 2003-11-19 2011-12-27 Lucid Information Technology, Ltd Multi-mode parallel graphics rendering system employing real-time automatic scene profiling and mode control
US8144156B1 (en) * 2003-12-31 2012-03-27 Zii Labs Inc. Ltd. Sequencer with async SIMD array
US8090383B1 (en) 2004-02-17 2012-01-03 Emigh Aaron T Method and system for charging for a service based on time spent at a facility
US7817829B2 (en) 2004-03-15 2010-10-19 Koninklijke Philips Electronics N.V. Image visualization
US7554538B2 (en) 2004-04-02 2009-06-30 Nvidia Corporation Video processing, such as for hidden surface reduction or removal
US7426724B2 (en) 2004-07-02 2008-09-16 Nvidia Corporation Optimized chaining of vertex and fragment programs
US7425966B2 (en) 2004-10-07 2008-09-16 Nvidia Corporation Pixel center position displacement
US7339594B1 (en) 2005-03-01 2008-03-04 Nvidia Corporation Optimized anisotropic texture sampling
JP4660254B2 (ja) 2005-04-08 2011-03-30 株式会社東芝 描画方法及び描画装置
US7289119B2 (en) 2005-05-10 2007-10-30 Sony Computer Entertainment Inc. Statistical rendering acceleration
US7511717B1 (en) 2005-07-15 2009-03-31 Nvidia Corporation Antialiasing using hybrid supersampling-multisampling
US20070018988A1 (en) 2005-07-20 2007-01-25 Michael Guthe Method and applications for rasterization of non-simple polygons and curved boundary representations
JP2007115293A (ja) * 2005-10-17 2007-05-10 Toshiba Corp 情報記憶媒体、プログラム、情報再生方法、情報再生装置、データ転送方法、及びデータ処理方法
US8300059B2 (en) 2006-02-03 2012-10-30 Ati Technologies Ulc Method and apparatus for selecting a mip map level based on a min-axis value for texture mapping
US8207975B1 (en) 2006-05-08 2012-06-26 Nvidia Corporation Graphics rendering pipeline that supports early-Z and late-Z virtual machines
US7907792B2 (en) 2006-06-16 2011-03-15 Hewlett-Packard Development Company, L.P. Blend maps for rendering an image frame
US7806083B2 (en) * 2006-07-05 2010-10-05 Boss Technology Systems, Inc. Livestock blow dryer with air deflectors
TWI411967B (zh) * 2006-08-11 2013-10-11 Geo Semiconductor Inc 用於顯示器幾何及色彩自動校準及校正之系統與方法
US8406562B2 (en) * 2006-08-11 2013-03-26 Geo Semiconductor Inc. System and method for automated calibration and correction of display geometry and color
EP2078229A2 (en) 2006-11-02 2009-07-15 Sensics, Inc. Systems and methods for a head-mounted display
US8232991B1 (en) 2006-11-03 2012-07-31 Nvidia Corporation Z-test result reconciliation with multiple partitions
US8233004B1 (en) 2006-11-06 2012-07-31 Nvidia Corporation Color-compression using automatic reduction of multi-sampled pixels
US8149242B2 (en) 2006-11-10 2012-04-03 Sony Computer Entertainment Inc. Graphics processing apparatus, graphics library module and graphics processing method
JP5063990B2 (ja) 2006-11-15 2012-10-31 任天堂株式会社 ゲームプログラムおよびゲーム装置
US7876332B1 (en) 2006-12-20 2011-01-25 Nvidia Corporation Shader that conditionally updates a framebuffer in a computer graphics system
JP5268271B2 (ja) 2007-03-23 2013-08-21 株式会社東芝 画像表示装置および画像表示方法
US20090033659A1 (en) 2007-07-31 2009-02-05 Lake Adam T Real-time luminosity dependent subdivision
US8044956B1 (en) 2007-08-03 2011-10-25 Nvidia Corporation Coverage adaptive multisampling
US8441497B1 (en) 2007-08-07 2013-05-14 Nvidia Corporation Interpolation of vertex attributes in a graphics processor
US7916155B1 (en) 2007-11-02 2011-03-29 Nvidia Corporation Complementary anti-aliasing sample patterns
JP5050786B2 (ja) 2007-11-05 2012-10-17 富士通セミコンダクター株式会社 描画処理装置、描画処理方法および描画処理プログラム
US8922565B2 (en) 2007-11-30 2014-12-30 Qualcomm Incorporated System and method for using a secondary processor in a graphics system
US8643644B2 (en) 2008-03-20 2014-02-04 Qualcomm Incorporated Multi-stage tessellation for graphics rendering
GB0810311D0 (en) 2008-06-05 2008-07-09 Advanced Risc Mach Ltd Graphics processing systems
US8605087B2 (en) 2008-07-03 2013-12-10 Nvidia Corporation Hybrid multisample/supersample antialiasing
DK2321643T3 (en) * 2008-07-16 2017-04-10 Radiometer Medical Aps DEVICE FOR HEMOLYZING A BLOOD SAMPLE AND MEASURING AT LEAST A PARAMETER THEREOF
US8428326B2 (en) 2008-10-23 2013-04-23 Immersion Corporation Systems and methods for ultrasound simulation using depth peeling
GB0819570D0 (en) 2008-10-24 2008-12-03 Advanced Risc Mach Ltd Methods of and apparatus for processing computer graphics
US8780131B2 (en) 2008-12-19 2014-07-15 Xerox Corporation Systems and methods for text-based personalization of images
US20100214294A1 (en) 2009-02-20 2010-08-26 Microsoft Corporation Method for tessellation on graphics hardware
US8330767B2 (en) 2009-03-24 2012-12-11 Advanced Micro Devices, Inc. Method and apparatus for angular invariant texture level of detail generation
US9697641B2 (en) 2009-10-15 2017-07-04 Nvidia Corporation Alpha-to-coverage using virtual samples
US8638342B2 (en) 2009-10-20 2014-01-28 Apple Inc. System and method for demosaicing image data using weighted gradients
US8803902B2 (en) 2009-12-03 2014-08-12 Intel Corporation Computing level of detail for anisotropic filtering
EP2510494B1 (en) 2009-12-11 2021-12-22 Leica Biosystems Imaging, Inc. Improved signal to noise ratio in digital pathology image analysis
US8606009B2 (en) 2010-02-04 2013-12-10 Microsoft Corporation High dynamic range image generation and rendering
US8619085B2 (en) 2010-03-08 2013-12-31 Broadcom Corporation Method and system for compressing tile lists used for 3D rendering
CN105847781B (zh) 2010-07-21 2018-03-20 杜比实验室特许公司 用于多层帧兼容视频传输的解码方法
US20130300740A1 (en) 2010-09-13 2013-11-14 Alt Software (Us) Llc System and Method for Displaying Data Having Spatial Coordinates
KR101719485B1 (ko) 2010-09-20 2017-03-27 삼성전자주식회사 그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법
US8593475B2 (en) 2010-10-13 2013-11-26 Qualcomm Incorporated Systems and methods for dynamic procedural texture generation management
US9122053B2 (en) 2010-10-15 2015-09-01 Microsoft Technology Licensing, Llc Realistic occlusion for a head mounted augmented reality display
US8982136B2 (en) 2011-05-16 2015-03-17 Qualcomm Incorporated Rendering mode selection in graphics processing units
JP5885398B2 (ja) 2011-05-20 2016-03-15 キヤノン株式会社 画像処理装置、画像処理方法
US9019280B2 (en) 2011-07-22 2015-04-28 Qualcomm Incorporated Area-based rasterization techniques for a graphics processing system
KR101926570B1 (ko) * 2011-09-14 2018-12-10 삼성전자주식회사 포스트 프레그먼트 쉐이더를 사용하는 그래픽 처리 방법 및 장치
US10089774B2 (en) 2011-11-16 2018-10-02 Qualcomm Incorporated Tessellation in tile-based rendering
CN105974587B (zh) 2011-11-24 2018-09-28 松下知识产权经营株式会社 头戴式显示器装置
GB2497302B (en) 2011-12-05 2017-04-12 Advanced Risc Mach Ltd Methods of and apparatus for processing computer graphics
US10559123B2 (en) 2012-04-04 2020-02-11 Qualcomm Incorporated Patched shading in graphics processing
US8581929B1 (en) 2012-06-05 2013-11-12 Francis J. Maguire, Jr. Display of light field image data using a spatial light modulator at a focal length corresponding to a selected focus depth
US9495781B2 (en) 2012-06-21 2016-11-15 Nvidia Corporation Early sample evaluation during coarse rasterization
US9424685B2 (en) 2012-07-31 2016-08-23 Imagination Technologies Limited Unified rasterization and ray tracing rendering environments
US9142005B2 (en) 2012-08-20 2015-09-22 Nvidia Corporation Efficient placement of texture barrier instructions
US10096079B2 (en) 2013-06-10 2018-10-09 Sony Interactive Entertainment Inc. Fragment shaders perform vertex shader computations
US10134102B2 (en) 2013-06-10 2018-11-20 Sony Interactive Entertainment Inc. Graphics processing hardware for using compute shaders as front end for vertex shaders
US10176621B2 (en) 2013-06-10 2019-01-08 Sony Interactive Entertainment Inc. Using compute shaders as front end for vertex shaders
US10102603B2 (en) 2013-06-10 2018-10-16 Sony Interactive Entertainment Inc. Scheme for compressing vertex shader output parameters
US10976986B2 (en) 2013-09-24 2021-04-13 Blackberry Limited System and method for forwarding an application user interface
US9652882B2 (en) 2014-04-05 2017-05-16 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
EP3872767A1 (en) 2014-04-05 2021-09-01 Sony Interactive Entertainment LLC Method for efficient re-rendering objects to vary viewports and under varying rendering and rasterization parameters
US9495790B2 (en) 2014-04-05 2016-11-15 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping to non-orthonormal grid
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
US9710881B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Varying effective resolution by screen location by altering rasterization parameters
US9760113B2 (en) 2015-02-20 2017-09-12 Sony Interactive Entertainment America Llc Backward compatibility through use of spoof clock and fine grain frequency control
US10235219B2 (en) 2015-07-27 2019-03-19 Sony Interactive Entertainment America Llc Backward compatibility by algorithm matching, disabling features, or throttling performance
US11403099B2 (en) 2015-07-27 2022-08-02 Sony Interactive Entertainment LLC Backward compatibility by restriction of hardware resources
US9892024B2 (en) 2015-11-02 2018-02-13 Sony Interactive Entertainment America Llc Backward compatibility testing of software in a mode that disrupts timing

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
USH0001812 H*

Also Published As

Publication number Publication date
KR20160130257A (ko) 2016-11-10
US20180089798A1 (en) 2018-03-29
JP2020091890A (ja) 2020-06-11
US9836816B2 (en) 2017-12-05
TWI578266B (zh) 2017-04-11
EP3716216A1 (en) 2020-09-30
JP6903183B2 (ja) 2021-07-14
EP3129975B8 (en) 2020-06-17
US20150287167A1 (en) 2015-10-08
EP3129975A4 (en) 2017-11-08
EP3129975A1 (en) 2017-02-15
US10438319B2 (en) 2019-10-08
TW201601115A (zh) 2016-01-01
EP3129975B1 (en) 2020-05-06
JP2018156666A (ja) 2018-10-04
WO2015153169A1 (en) 2015-10-08
JP6712366B2 (ja) 2020-06-24
JP2017515213A (ja) 2017-06-08
JP6333405B2 (ja) 2018-05-30

Similar Documents

Publication Publication Date Title
KR101964611B1 (ko) 곡선 뷰포트 상으로 정점의 투영을 근접시키는 것에 의해 그래픽스를 처리할 때 스크린 위치에 따른 유효 해상도의 가변
US11301956B2 (en) Varying effective resolution by screen location by altering rasterization parameters
JP7004759B2 (ja) 複数のレンダーターゲット内でアクティブカラーサンプルカウントを変更することによりスクリーンの位置によって有効解像度を変動させること
EP3748584B1 (en) Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
US11302054B2 (en) Varying effective resolution by screen location by changing active color sample count within multiple render targets

Legal Events

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