KR102338831B1 - 구성가능한 변환 파라미터들을 갖는 다중 공간 렌더링 - Google Patents

구성가능한 변환 파라미터들을 갖는 다중 공간 렌더링 Download PDF

Info

Publication number
KR102338831B1
KR102338831B1 KR1020207008840A KR20207008840A KR102338831B1 KR 102338831 B1 KR102338831 B1 KR 102338831B1 KR 1020207008840 A KR1020207008840 A KR 1020207008840A KR 20207008840 A KR20207008840 A KR 20207008840A KR 102338831 B1 KR102338831 B1 KR 102338831B1
Authority
KR
South Korea
Prior art keywords
space
different
coordinates
parameters
virtual space
Prior art date
Application number
KR1020207008840A
Other languages
English (en)
Other versions
KR20200040883A (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 KR20200040883A publication Critical patent/KR20200040883A/ko
Application granted granted Critical
Publication of KR102338831B1 publication Critical patent/KR102338831B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/013Eye tracking input arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/60Shadow generation
    • 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
    • G06T3/4084Scaling of whole images or parts thereof, e.g. expanding or contracting in the transform domain, e.g. fast Fourier transform [FFT] domain scaling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/18Manufacturability analysis or optimisation for manufacturability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/12Bounding box
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • General Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Evolutionary Computation (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

그래픽 객체들을 렌더링하는 것과 관련된 기술들이 개시된다. 일부 실시예들에서, 그래픽 유닛은 제2 공간의 상이한 부분들에 대한 상이한 변환 파라미터들에 따라 가상 공간으로부터 제2 공간으로 그래픽 객체들을 변환하도록 구성된다. 이는 상이한 샘플 레이트들에서 가상 공간의 상이한 부분들을 샘플링하는 것을 도출할 수 있고, 이는 렌더링 프로세스의 다양한 스테이지들에서 요구되는 샘플들의 수를 감소시킬 수 있다. 개시된 기술들에서, 변환은 래스터화 및 섀이딩 이전에 발생할 수 있는데, 이는 그래픽 유닛에서의 계산 및 전력 소비를 추가로 감소시키고/시키거나, 사용자에게 디스플레이되는 바와 같은 이미지 품질을 개선하고/하거나 네트워크 상의 비디오 콘텐츠의 대역폭 사용 또는 레이턴시를 감소시킬 수 있다. 일부 실시예들에서, 변환된 이미지는 왜곡-보상 렌즈를 통해 뷰잉되거나 디스플레이 전에 리샘플링될 수 있다.

Description

구성가능한 변환 파라미터들을 갖는 다중 공간 렌더링
본 발명은 일반적으로 그래픽 프로세서들에 관한 것으로, 보다 구체적으로는 그래픽 객체들을 렌더링하기 위한 기술들에 관한 것이다.
그래픽 프로세서(GPU)들은 종종 셀룰러 폰들, 웨어러블 디바이스들 등과 같은 모바일 디바이스들에 포함되며, 여기서 전력 소비 및 프로세서 영역은 중요한 설계 관심사들이다. 현대의 그래픽 프로세서들은 더 빠른 속도, 더 적은 전력 소비, 및/또는 더 적은 프로세싱 하드웨어로 그래픽 객체들의 렌더링을 용이하게 하기 위해 다수의 기술을 이용한다. 예로서, 그래픽 프로세싱은 종종 상이한 그래픽 요소들(예컨대, 픽셀들 또는 정점들)에 대해 동일한 명령어를 병렬로 실행하는 것을 수반한다. 또한, (예컨대, 상이한 시간들에서 상이한 그래픽 요소들에 대해 또는 동일한 그래픽 요소들에 대해 특정 기능을 수행하기 위해) 그래픽 명령어들의 동일한 그룹이 종종 여러번 실행되기 때문에, 프로세싱된 그래픽 요소들의 수는 그래픽 프로세서들에서 계산 시간, 전력 소비, 및 하드웨어 요구들을 유도한다.
일반적으로 말해서, 정점 태스크들 및 픽셀 태스크들은 그래픽 프로세싱의 상당한 부분을 포함한다. 정점 프로세싱은 이미지들을 표현하기 위한 다각형들의 사용을 수반하는데, 여기서 정점들은 다각형들을 정의한다. 정점 프로세싱의 출력은 전형적으로 픽셀/단편 섀이더(shader)들에 의해 동작되어 디스플레이로의 출력을 위한 픽셀 데이터를 생성하는 단편 정보를 생성하도록 래스터화된다. 프로세싱된 정점 및/또는 픽셀 데이터의 양을 감소시키는 것은 전형적으로 그래픽 유닛에서 성능을 증가시키고/시키거나 전력 소비를 감소시킨다.
도 1은 일부 실시예들에 따른 상이한 공간들 사이의 그래픽 프리미티브(primitive)들의 예시적인 변환을 예시하는 블록도이다.
도 2a는 예시적인 그래픽 프로세싱 흐름을 예시하는 블록도이다.
도 2b는 그래픽 유닛의 일 실시예를 예시하는 블록도이다.
도 3은 일부 실시예들에 따른 변환 및 래스터화 스테이지들을 포함하는 예시적인 파이프라인을 예시하는 블록도이다.
도 4는 일부 실시예에 따른 가상 공간 내의 좌표들의 제2 공간 내의 좌표들로의 예시적인 변환을 예시하는 도면이다.
도 5는 일부 실시예에 따른 변환 파라미터들을 저장하도록 구성된 예시적인 데이터 구조들을 예시하는 도면이다.
도 6은 일부 실시예들에 따른 변환이 가상 공간의 상이한 부분들에 대해 상이한 샘플링 레이트들을 도출하는 예시적인 상황을 예시하는 도면이다.
도 7은 일부 실시예들에 따른 제2 공간으로의 변환 및 제2 공간을 디스플레이 공간 내로 리샘플링하는 것에 기인하는 예시적인 왜곡을 예시하는 도면이다.
도 8a는 일부 실시예들에 따른 단순화된 경계 박스를 포함하는, 가상 공간 내의 예시적인 이미지를 예시한다.
도 8b는 일부 실시예들에 따른 단순화된 경계 박스를 포함하는, 제2 공간으로의 변환 이후의 제2 공간 내의 예시적인 이미지를 예시한다.
도 9a 내지 도 9d는 일부 실시예들에 따른 예시적인 등각 렌더링 기술들을 그래픽으로 예시한다.
도 10은 일부 실시예들에 따른 다중 공간 렌더링을 위한 예시적인 방법을 예시하는 흐름도이다.
도 11은 그래픽 유닛을 포함하는 디바이스의 일 실시예를 예시하는 블록도이다.
도 12는 일부 실시예들에 따른 예시적인 컴퓨터 판독가능 매체를 예시하는 블록도이다.
이 명세서는 다양한 실시예들에 대한 참조를 포함하여, 본 개시내용이 하나의 특정 구현을 지칭하는 것이 아니라 오히려 첨부된 청구범위를 포함하는 본 개시내용의 사상 내에 포함되는 실시예들의 범위를 지칭하는 것으로 의도된다는 것을 나타낸다. 특정 특징들, 구조들 또는 특성들이 본 개시내용과 일관성을 유지하는 임의의 적합한 방식으로 조합될 수 있다.
본 개시내용 내에서, 상이한 엔티티들("유닛들", "회로들", 다른 컴포넌트들 등으로 다양하게 지칭될 수 있음)은 하나 이상의 태스크들 또는 동작들을 수행하도록 "구성된" 것으로 설명되거나 또는 청구될 수 있다. 이러한 설명은-[하나 이상의 태스크들을 수행]하도록 구성된 [엔티티]-본 명세서에서 구조(즉, 전자 회로와 같은 물리적인 것)를 지칭하는 데 사용된다. 더 상세하게는, 이러한 설명은 이 구조가 동작 시 하나 이상의 태스크들을 수행하도록 배열됨을 나타내는 데 사용된다. 구조가 현재 동작되고 있지 않더라도, 구조는 일부 태스크를 수행하도록 "구성된다"고 할 수 있다. "단편 데이터를 프로세싱하도록 구성된 섀이더 회로"는, 예를 들어, 문제의 회로가 현재 사용되고 있지 않더라도(예컨대, 전원 공급이 연결되어 있지 않음), 동작 시 이 기능을 수행하는 회로를 커버하도록 의도된다. 따라서, 일부 태스크를 수행하도록 "구성된" 것으로 설명된 또는 인용된 엔티티는 디바이스, 회로, 태스크를 구현하도록 실행가능한 프로그램 명령어들을 저장하는 메모리 등과 같은 물리적인 것을 지칭한다. 이러한 문구는 무형인 것을 지칭하기 위해 본 명세서에서 사용되지는 않는다.
용어 "구성된"은 "구성가능한"을 의미하도록 의도되지 않는다. 예를 들어, 프로그래밍되지 않은 FPGA는, 그것이 일부 구체적인 기능을 수행하도록 "구성가능"할 수 있지만, 그 기능을 수행하도록 "구성된" 것으로 고려되지 않을 것이다. 적절한 프로그래밍 후에, 이어서 FPGA는 그 기능을 수행하도록 구성될 수 있다.
구조가 하나 이상의 태스크들을 수행하도록 "구성"되었다고 첨부된 청구항들에 인용하는 것은 명백히 그 청구항 구성요소에 대하여 35 U.S.C. §(112)(f)를 적용하지 않도록 의도된다. 따라서, 출원된 본 출원서의 어떠한 청구항들도 수단+기능식 구성요소들을 갖는 것으로 해석되도록 의도되지 않는다. 출원인이 심사 시 Section(112)(f)의 적용을 바란다면, [기능을 수행]"하기 위한 수단" 구조를 이용하여 청구항 구성요소들을 열거할 것이다.
본 명세서에서 사용되는 바와 같이, 용어 "기초하여"는 결정에 영향을 주는 하나 이상의 인자들을 설명하기 위해 사용된다. 이러한 용어는 추가적인 요인들이 결정에 영향을 줄 수 있는 가능성을 배제하지 않는다. 즉, 결정은 단지 특정 요인들에 기초하거나 또는 그 특정 요인들뿐만 아니라 다른, 불특정 요인들에 기초할 수 있다. "B에 기초하여 A를 결정한다"라는 문구를 고려한다. 이러한 문구는 B가 A를 결정하는 데 사용되거나 A의 결정에 영향을 주는 인자라는 것을 명시한다. 이러한 문구는 A의 결정이 C와 같은 다른 인자에 또한 기초할 수 있음을 배제하지 않는다. 또한, 이 문구는 A가 B만에 기초하여 결정되는 실시예를 커버하도록 의도된다. 본 명세서에서 사용되는 바와 같이, "에 기초하여"라는 문구는 "적어도 부분적으로 기초하여"라는 문구와 동의어이다.
또한, 본 명세서에 사용되는 바와 같이, 용어들 "제1", "제2", "제3" 등은 반드시 요소들 사이의 순서화(예컨대, 시간적)를 암시하는 것은 아니다. 예를 들어, "제1" 그래픽 동작 및 "제2" 그래픽 동작에 대한 언급은 그래픽 동작의 순서를 암시하지 않아서, 이들 동작들 사이의 시간적 관계를 제약하는 추가 언어가 없다. 요약하면, "제1", "제2" 등과 같은 참조들은 상세한 설명 및 첨부된 청구항들에서 참조의 용이함을 위한 라벨들로서 사용된다.
그래픽 프리미티브들의 변환
도 1은 그래픽 유닛에 의해 활용되는 상이한 공간들 사이에서의 그래픽 프리미티브들의 변환을 예시하는 도면이다. 본 명세서에 사용되는 바와 같이, 용어 "공간"은 좌표계(예를 들어, 직교, 원통형, 구형)에 따라 정의되는 하나 이상의 차원들을 지칭한다. 예를 들어, 가상 장면 공간은 3차원일 수 있지만, 장면에 대한 시점에 기초하여 디스플레이를 위해 2차원 스크린 공간에 맵핑될 수 있다. 본 명세서에 사용되는 바와 같이, 용어들 "프리미티브"는 그래픽 유닛이 예를 들어 라인들, 삼각형들, 다른 유형들의 다각형들, 곡선들 등을 처리하도록 구성되는 간단한 기하학적 객체들을 지칭한다. 본 명세서에서 다양한 실시예들에서 삼각형들이 논의되지만, 다른 실시예들에서 사용되는 프리미티브들의 형상을 제한하고자 하는 것은 아니다.
일부 실시예들에서, 가상 공간(110)은 그래픽 프리미티브들을 포함하는 하나 이상의 차원들의 장면에 대응한다. 일부 실시예들에서, 가상 공간(110)은 예를 들어 섀이더 외부의 프로그램 또는 프로세스로부터 그래픽 섀이더에 의해 수신되는 프리미티브들의 좌표들에 기초하여, 프리미티브 데이터를 조직화하기 위해 사용될 수 있다. 가상 공간(110)은 그래픽 디스플레이로 렌더링하기 위한 임의의 수의 그래픽 프리미티브들을 포함할 수 있다. 일부 실시예들에서, 프리미티브 또는 정점 데이터를 조작하는 특정 유형들의 그래픽 프로세싱 동작들은 가상 공간(110)의 좌표들(예컨대, 테셀레이션(tessellation), 조명 등)을 사용하여 수행된다. 가상 공간(110) 내의 그래픽 프리미티브들은 가상 공간(110) 내의 공간 좌표들 뿐만 아니라 프리미티브와 연관된 추가적인 데이터(예컨대, 프리미티브의 불투명도, 프리미티브와 연관된 하나 이상의 텍스처들 등)에 기초하여 정의될 수 있다.
도 1에 예시된 실시예에서, 그래픽 유닛은 가상 공간(110) 내의 프리미티브들의 좌표들을 제2 공간(120) 내의 프리미티브들의 좌표들로 변환한다. 일부 실시예들에서, (전환으로 또한 지칭될 수 있는) 변환은 가상 공간의 상이한 부분들이 상이한 샘플링 레이트들로 샘플링되도록 장면을 "워프(warp)"시킨다. 따라서, 제2 공간은 워프 공간으로 지칭될 수 있다. 이는 가상 공간의 언더샘플링된 부분들에 필요한 섀이더 프로세싱을 감소시킬 수 있고, 이는 성능을 증가시키고/시키거나 전력 소비를 감소시킬 수 있다. 일부 실시예들에서, 그래픽 유닛은 제2 공간의 상이한 부분들에 대해 상이한 변환 파라미터들을 사용할 수 있다. 예를 들어, 제2 공간(120)의 일 부분에서, 프리미티브들은 x-차원에서 (가상 공간(110)에 비해) 크기가 3x만큼 감소될 수 있고, 제2 공간(120)의 다른 부분에서, 프리미티브들은 y-차원에서 2x만큼 크기가 감소될 수 있다. 일부 실시예들에서, 가상 공간(110)으로부터 제2 공간(120)으로의 이미지의 변환은 이미지의 일부 또는 전부를 왜곡시킬 수 있다(예컨대, 이미지 내의 다양한 프리미티브들의 상대적 크기는 변환으로 인해 변경된다).
일부 실시예들에서, 그래픽 유닛은 프리미티브들을 래스터화하고 제2 공간(120)에서의 래스터화로부터 (즉, 변환 후에) 생성된 단편 데이터를 섀이딩한다. 변환 후 균일한 샘플 레이트로 제2 공간(120)을 래스터화하는 것은 상이한 레이트들로 가상 공간(110)의 상이한 부분들을 효과적으로 샘플링할 수 있으며, 가상 공간에서의 상이한 샘플링 레이트들은 상이한 변환 파라미터들에 대응한다. 래스터화는 제2 공간 내의 프리미티브들의 좌표들에 기초하여 단편 데이터를 생성할 수 있다. 예를 들어, 정사각형 프리미티브는 가상 공간(110) 내의 좌표들 (0,0), (0,2), (2,2), (2,0)으로부터 제2 공간(120) 내의 좌표들 (0,0), (0,1), (1,1), (1,0)로 변환될 수 있고, 정수 좌표 당 픽셀을 적용하는 래스터화는 (가상 공간 좌표들이 사용된 경우 정사각형을 커버하는 9개의 단편들을 생성하는 것과는 대조적으로) 제2 공간(120) 내의 정사각형의 4개의 코너들 각각에 대해 하나의 단편을 생성할 수 있다. 이러한 예에서, 그래픽 유닛은 동일한 프리미티브를 표현하기 위해, 가상 공간(110)에서 9개보다는 제2 공간(120)에서 4개의 단편들을 섀이딩할 것이다. 이러한 개념의 보다 상세한 예들이 도 6 및 도 7을 참조하여 아래에서 논의된다.
일부 실시예들에서, 디스플레이 공간(130)은 렌더링된 그래픽 이미지들이 사용자에게 디스플레이되는(또는 디스플레이를 위해 전송되는) 공간이다(예컨대, 디스플레이를 위해 스크린으로 전송되는 그래픽 프레임). 디스플레이 공간(130)의 다른 예들은 홀로그래픽 및 체적 디스플레이들과 같은 3D 디스플레이들을 포함한다. 전통적으로, 그래픽 프로세서는 가상 공간(110)에서 프리미티브들을 래스터화함으로써 디스플레이 공간(130)에 디스플레이하기 위한 이미지를 생성할 수 있다. 대조적으로, 도 1에 예시된 실시예에서, 제2 공간(120) 내의 이미지들은 제2 공간(120)에서 래스터화 및 섀이딩이 발생한다. 일부 실시예들에서, 제2 공간(120) 내의 이미지는 수정 없이 디스플레이될 수 있다(즉, 제2 공간(120) 및 디스플레이 공간(130)은 동일하다). 다른 실시예들에서, 리샘플링 또는 렌즈 왜곡은 제2 공간(120) 내의 이미지를 디스플레이 공간(130)으로 변환할 수 있다. 예를 들어, 렌즈를 통해 제2 공간(120) 내의 이미지를 보는 것은 제2 공간으로의 변환에 의해 도입된 왜곡을 보정할 수 있어서, 사용자는 디스플레이 공간(130)에서 왜곡되지 않은 이미지를 볼 수 있다. 렌더링된 이미지들(예를 들어, 프레임 버퍼에 저장됨)은, 일부 실시예들에서, 다른 공간들로의 변환을 포함할 수 있는 추가적 프로세싱을 위해 GPU 파이프라인 내로 피드백될 수 있다는 것에 유의한다.
본 개시내용에서의 다양한 실시예들은 1D, 2D, 및 3D 공간들에 대한 가상, 제2 및 디스플레이 공간들을 설명하지만, 가상 공간(110), 제2 공간(120), 및 디스플레이 공간(130)은 그래픽 프리미티브들 및 그래픽 프리미티브들의 특성들(예컨대, 텍스처, 깊이, 조명, 불투명도 등)을 설명하는 관련 데이터를 포함하는 임의의 수의 차원들을 포함할 수 있다. 제2 공간에서 다양한 그래픽 렌더링 프로세스들을 수행하는 것은 성능을 개선하고, 그래픽 유닛에서 전력 소비를 감소시키고, 사용자에게 디스플레이되는 바와 같은 이미지 품질을 개선하고/하거나, 네트워크 상의 비디오 콘텐츠의 대역폭 사용 또는 레이턴시를 감소시키는 이점을 가질 수 있다. 도 2a 및 도 2b는 더 일반적인 맥락에서 그래픽 렌더링 프로세스 및 예시적인 그래픽 유닛의 개요를 도입하는 반면, 나머지 도면들은 예시적인 워프 공간 렌더링 기술들에 관한 추가적인 세부사항들을 제공한다.
그래픽 프로세싱 개요
도 2a를 참조하면, 그래픽 데이터를 프로세싱하기 위한 예시적인 프로세싱 흐름(200)을 예시하는 흐름도가 도시된다. 일 실시예에서, 변환 및 조명 단계(210)는 정의된 광원 위치들, 반사율 등에 기초하여 애플리케이션으로부터 수신된 정점들에 대한 조명 정보를 프로세싱하는 것, 정점들을 다각형들(예컨대, 삼각형들)로 어셈블하는 것, 및/또는 3차원 공간에서의 위치에 기초하여 다각형들을 정확한 크기 및 배향으로 변환하는 것을 수반할 수 있다. 클립 단계(215)는 가시성 영역 외부에 있는 다각형들 또는 정점들을 폐기하는 것을 수반할 수 있다. 래스터화 단계(220)는 각각의 다각형 내의 단편들을 정의하는 것 및 예를 들어 다각형의 정점들의 텍스처 좌표들에 기초하여 각각의 단편에 대한 초기 색상 값들을 할당하는 것을 수반할 수 있다. 단편들은 이들이 중첩되는 픽셀들에 대한 속성들을 특정할 수 있지만, 실제 픽셀 속성들은 (예컨대, 프레임 버퍼에서) 다수의 단편들을 조합하고/하거나 하나 이상의 단편들을 무시하는 것(예컨대, 그들이 다른 객체들에 의해 커버되는 경우)에 기초하여 결정될 수 있다. 섀이딩 단계(230)는 조명, 섀도우들, 범프 맵핑, 반투명도 등에 기초하여 픽셀 컴포넌트들을 변경하는 것을 수반할 수 있다. 섀이딩된 픽셀들은 프레임 버퍼(235)에서 어셈블될 수 있다. 현대의 GPU들은 전형적으로 애플리케이션 개발자들에 의한 섀이딩 및 다른 프로세싱 단계들의 맞춤화를 허용하는 프로그래밍가능 섀이더들을 포함한다. 따라서, 다양한 실시예들에서, 도 2a의 예시적인 단계들은 다양한 순서들로 수행되거나, 병렬로 수행되거나, 또는 생략될 수 있다. 추가적인 프로세싱 단계들이 또한 구현될 수 있다. 도 2a에 도시되어 있지 않지만 다양한 실시예들에 관하여 본 명세서에서 논의된 변환 단계는 래스터화 전에 프로세싱 흐름(200)에 포함될 수 있다. 변환 단계는 정점 좌표들을 새로운 좌표계로 변환하는 단계 및 래스터화 단계(220)에서 래스터화된 단편들의 양을 감소시키는 방식으로 정점 데이터를 수정하는 단계를 수반할 수 있다.
이제 도 2b를 참조하면, 그래픽 유닛(250)의 일 실시예를 예시하는 단순화된 블록도가 도시된다. 예시된 실시예에서, 그래픽 유닛(250)은 프로그래밍가능 섀이더(260), 정점 파이프(285), 단편 파이프(275), 텍스처 프로세싱 유닛(TPU)(265), 이미지 기록 유닛(270), 및 메모리 인터페이스(280)를 포함한다. 일부 실시예들에서, 그래픽 유닛(250)은 다수의 실행 파이프라인들 또는 인스턴스들을 사용하여 그래픽 데이터를 병렬로 프로세싱하도록 구성될 수 있는 프로그래밍가능 섀이더(260)를 사용하여 정점 및 단편 데이터 둘 모두를 프로세싱하도록 구성된다.
정점 파이프(285)는, 예시된 실시예에서, 정점 데이터를 프로세싱하도록 구성된 다양한 고정 기능 하드웨어를 포함할 수 있다. 정점 파이프(285)는 정점 프로세싱을 조정하기 위해 프로그래밍가능 섀이더(260)와 통신하도록 구성될 수 있다. 예시된 실시예에서, 정점 파이프(285)는 프로세싱된 데이터를 추가적 프로세싱을 위해 단편 파이프(275) 및/또는 프로그래밍가능 섀이더(260)에 전송하도록 구성된다.
단편 파이프(275)는, 예시된 실시예에서, 픽셀 데이터를 프로세싱하도록 구성된 다양한 고정 기능 하드웨어를 포함할 수 있다. 단편 파이프(275)는 단편 프로세싱을 조정하기 위해 프로그래밍가능 섀이더(260)와 통신하도록 구성될 수 있다. 단편 파이프(275)는 단편 데이터를 생성하기 위해 정점 파이프(285) 및/또는 프로그래밍가능 섀이더(260)로부터의 다각형들에 대한 래스터화를 수행하도록 구성될 수 있다. 정점 파이프(285) 및/또는 단편 파이프(275)는 그래픽 데이터에 액세스하기 위해 메모리 인터페이스(280)에 결합될 수 있다(결합은 도시되지 않음).
프로그래밍가능 섀이더(260)는, 예시된 실시예에서, 정점 파이프(285)로부터의 정점 데이터 및 단편 파이프(275) 및/또는 TPU(265)로부터의 단편 데이터를 수신하도록 구성된다. 프로그래밍가능 섀이더(260)는 정점 데이터의 다양한 변환들 및/또는 조정들을 포함할 수 있는 정점 데이터에 대해 정점 프로세싱 태스크들을 수행하도록 구성될 수 있다. 프로그래밍가능 섀이더(260)는 또한, 예시된 실시예에서, 예를 들어 텍스처화 및 섀이딩과 같은 픽셀 데이터에 대해 단편 프로세싱 태스크들을 수행하도록 구성된다. 프로그래밍가능 섀이더(260)는 데이터를 병렬로 프로세싱하기 위한 다수의 실행 인스턴스들을 포함할 수 있다.
TPU(265)는 예시된 실시예에서, 프로그래밍가능 섀이더(260)로부터 단편 프로세싱 태스크들을 스케줄링하도록 구성된다. 일부 실시예들에서, TPU(265)는 텍스처 데이터를 프리페치하고 (예를 들어, 메모리 인터페이스(280)를 통해) 프로그래밍가능 섀이더(260)에 의한 추가적 프로세싱을 위해 초기 색상들을 단편들에 할당하도록 구성된다. TPU(265)는 예를 들어 정규화된 정수 포맷들 또는 부동점 포맷들로 단편 컴포넌트들을 제공하도록 구성될 수 있다. 일부 실시예들에서, TPU(265)는 프로그래밍가능 섀이더(260) 내의 4개의 실행 파이프라인들의 그룹에 의해 프로세싱될 2x2 포맷인 4개의 ("단편 쿼드(fragment quad)") 그룹들로 단편들을 제공하도록 구성된다.
이미지 기록 유닛(IWU)(270)은, 일부 실시예들에서, 이미지의 프로세싱된 타일들을 저장하도록 구성되고, 렌더링된 이미지가 디스플레이를 위해 또는 저장을 위해 메모리에 전송되기 전에 그에 대한 동작들을 수행할 수 있다. 일부 실시예들에서, 그래픽 유닛(250)은 타일-기반 렌더링을 수행하도록 구성된다. 타일-기반 렌더링에서, 스크린 공간의 상이한 부분들(예컨대, 픽셀들의 정사각형들 또는 직사각형들)은 별개로 프로세싱될 수 있다. 메모리 인터페이스(280)는 다양한 실시예들에서 다양한 메모리 계층구조들 중 하나 이상과의 통신들을 용이하게 할 수 있다.
다양한 실시예들에서, 프로그래밍가능 섀이더(260)와 같은 프로그래밍가능 섀이더는 다양한 적절한 구성들 중 임의의 구성으로 그래픽 유닛 내의 다른 프로그래밍가능 및/또는 고정 기능 요소들에 결합될 수 있다. 도 2b의 예시적인 실시예는 예시적인 목적들을 위한 그래픽 유닛(250)의 하나의 가능한 구성을 도시한다.
단편 파이프 개요
도 3은 일부 실시예들에 따른 예시적인 단편 파이프(275)를 예시하는 블록도이다. 예시된 실시예에서, 단편 파이프(275)는 파라미터 페치 회로부(310), 변환 회로부(320), 스캔 컨버터(330), 정렬 회로부(340), 및 픽셀 데이터 마스터(350)를 포함한다. 예시된 실시예에서, 단편 파이프(275)의 다양한 요소들은 프로그래밍가능 섀이더(260)와 통신하도록 구성된다.
파라미터 페치 회로부(310)는, 예시된 실시예에서, 프로세싱되고 있는 현재 타일에 대한 타일 및 정점 데이터(305)를 수신하도록 구성된다. 이것은, 예를 들어 다양한 캐시 레벨들, 공유 메모리 구조들 등을 포함할 수 있는 그래픽 메모리 계층구조의 하나 이상의 요소들을 통해 획득될 수 있다. 정점 데이터는 프로세싱되고 있는 타일과 교차하는 프리미티브들의 목록에서 각각의 프리미티브에 대한 정점들의 좌표들을 특정할 수 있다. 그래픽 프리미티브들에 대한 정점 데이터는 프리미티브의 시각적 또는 다른 특성들(예컨대, 텍스처, 조명, 불투명도 등)을 설명하는 데이터를 포함할 수 있다. 데이터(305)는 또한 정점 정보를 프로세싱되고 있는 타일과 연관시키고/시키거나 프로세싱되고 있는 타일을 설명하는 다양한 정보를 포함할 수 있다.
변환 회로부(320)는, 예시된 실시예에서, 정점 데이터를 가상 공간으로부터 제2 공간으로 변환하도록 구성된다. 정점 데이터는 정점들의 좌표들을 특정할 수 있고, 변환 회로부(320)에서의 프로세싱 후에, 제2 공간 내의 정점들의 좌표들은 가상 공간 내의 정점들의 좌표들과 상이할 수 있다. 일부 실시예들에서, 변환 회로부(320)는 그래픽 유닛(250) 내의 다른 위치들(예컨대, 정점 파이프(285))에서 구현될 수 있는데, 이 경우에 단편 파이프(275) 내의 파라미터 페치 회로부(310)는 제2 공간(즉, 변환됨)과 연관된 타일 및 정점 데이터(305)를 수신할 것이다. 일부 실시예들에서, 변환 회로부(320)는 단편 데이터를 생성하기 위해 스캔 컨버터(330)가 정점 데이터를 래스터화하기 전에 (예컨대, 도 2a의 래스터화 단계(220) 전에) 정점 데이터를 변환한다. 이는, 그렇지 않으면 가상 공간에서 오버샘플링되었을 수 있는 타일들에 대한 프로세싱 복잡도(예컨대, 래스터화된 픽셀들의 수)를 감소시킴으로써 성능을 개선할 수 있다.
일부 실시예들에서, 변환 회로부(320)는 상이한 타일들에 대해 상이한 변환 파라미터들을 사용하도록 구성되고, 파라미터들은 그래픽 프로그램에 의해 또는 디폴트 값들을 사용하여 타일 단위로 특정될 수 있다.
스캔 컨버터(330)는, 예시된 실시예에서, 정점 데이터에 기초하여 단편 데이터를 생성하기 위해 래스터화를 수행하도록 구성된다. 용어 "단편"은 그의 잘 이해되는 의미에 따라 해석되도록 의도되며, 주어진 프리미티브에 기초하여 픽셀을 섀이딩하는 데 필요한 데이터(예를 들어, 단편에 대한 프로그래밍가능 섀이더(260)에 의해 실행될 하나 이상의 섀이더 프로그램들에 대한 참조, 단편에 대한 좌표들 등) 플러스 대응하는 픽셀의 속성들(깊이, 알파, 스텐실, 가위, 윈도우 ID 등)에 기여하기 위해 단편이 생존하는지 여부를 테스트하는 데 필요한 데이터를 특정할 수 있다. 일부 렌더링 모드들에서, 단편 데이터는 단편/픽셀 당 다수의 샘플들에 대한 데이터를 포함할 수 있다. 단편 데이터는 다양한 레벨의 입도(granularity) 중 하나 이상에서 특정될 수 있다(예를 들어, 단편 데이터는 샘플당 저장될 수 있거나, 또는 단편 당, 객체 당, 타일 당 등으로 집계될 수 있다). 일부 실시예들에서, 예를 들어, 하나의 단편이 부분적으로 투명할 때, 다수의 단편들로부터의 데이터가 특정 픽셀의 속성들을 결정하기 위해 사용될 수 있다.
예시된 실시예에서, 정렬 회로부(340)는 하나 이상의 타일 버퍼(들)(335)를 포함하고, 이들이 섀이딩될 때까지 어느 단편들이 현재 가시적인지를 추적하도록 구성된다. 예를 들어, 렌더링되고 있는 장면 내의 스크린에 더 가까운 불투명한 객체에 의해 커버되는 단편에 대한 데이터는 타일 버퍼(335)로부터 폐기될 수 있는데, 이는 가시적이지 않은 것으로 결정되기 때문이다. 다양한 실시예들에서, 이러한 폐색 기술들은 프로그래밍가능 섀이더(160)에 의해 요구되는 프로세싱을 감소시킬 수 있다. 일부 실시예들에서, 정렬 회로부(340)는 프로세싱되고 있는 각각의 타일에 대한 별개의 타일 버퍼를 포함하고, 이는 다수의 타일들의 렌더링을 병렬로 허용할 수 있다. 추가로, 단편 파이프(275)의 다수의 인스턴스들이 주어진 그래픽 유닛에 포함되어, 병렬 프로세싱을 위한 자원들을 추가로 증가시킬 수 있다. 본 명세서에 사용되는 바와 같이, 단편 데이터의 "폐색"은 단편 데이터가 그래픽 데이터의 프레임에서 픽셀 속성들에 실제로 기여하지 않을 것으로 결정되는 상황을 지칭한다. 예를 들어, 폐색은, 단편 데이터가 렌더링되고 있는 장면 내의 다른 객체 뒤에 있는 객체에 대한 것이고 그 다른 객체가 불투명할 때 발생한다.
예시된 실시예에서, 픽셀 데이터 마스터(350)는, 예를 들어, 타일 버퍼(들)(335)의 콘텐츠를 섀이딩하기 위해 섀이더 작업을 프로그래밍가능 섀이더(260)에 전송하도록 구성된다. 픽셀 데이터 마스터(340)는, 일부 실시예들에서, 다양한 이벤트들에 응답하여, 섀이딩을 위해 타일 버퍼(335)의 콘텐츠의 전부 또는 일부분을 플러싱하도록 구성될 수 있다. 일부 실시예들에서, 그래픽 유닛(250)은 프로그래밍가능 섀이더(260)에 정점 작업을 전송하도록 구성된 정점 데이터 마스터, 및 프로그래밍가능 섀이더(260)에 연산 작업을 전송하도록 구성된 연산 데이터 마스터를 포함할 수 있는 다수의 데이터 마스터들을 포함한다. 일부 실시예들에서, 프로그래밍가능 섀이더(260)는 다양한 데이터 마스터들로부터의 작업을 위해 프로그래밍가능 섀이더(260)에 하드웨어 자원을 할당하도록 구성된 스케줄링 회로부를 포함한다.
가상 공간으로부터 제2 공간으로 예시적인 변환
도 4는 일부 실시예들에 따른 가상 공간 이미지의 제2 공간 이미지로의 예시적인 1-D 변환을 예시하는 도면이다. 도 4는 제2 공간의 상이한 부분들에 대해 상이한 변환 파라미터들을 사용하는 것이 유용할 수 있는 예시적인 시나리오를 표현한다. 그러나, 개시된 기술은 결코 그러한 시나리오들로 제한되지 않으며, 다양한 유형들의 변환 기능들이 다양한 실시예들에서 구현될 수 있다.
일부 실시예들에서, 가상 공간(110)은 포스트-정점-변환 공간이다. 예를 들어, 가상 공간(110)은 프로그램 또는 프로세스로부터 그래픽 유닛에 의해 수신된 3-D 모델로부터 도출된 정점 데이터를 포함할 수 있다. 예시된 실시예에서, 상이한 변환 파라미터들이 제2 공간의 상이한 부분들에 대해 사용된다. 예를 들어, 3-대-1 스케일 팩터는 가상 0 내지 가상 2 부분들을 워프 0 부분으로 변환하는 반면, 1-대-1 스케일 팩터는 가상 7의 부분 및 가상 8의 부분을 워프 4로 변환하여, 워프 4의 가상 부분보다 워프 0의 가상 부분 당 3배 더 적은 단편들/픽셀들이 존재한다.
예시된 실시예에서, 전체 이미지의 크기는 1차원에서 2배만큼 감소된다(가상 공간(410)은 래스터화 후 512개의 픽셀들로 이루어진 이미지를 포함하고, 제2 공간(420)은 래스터화 후 256개의 픽셀들로 이루어진 이미지를 포함한다). 일부 실시예들에서, 가상 공간 내의 프리미티브들의 좌표들의 제2 공간 내의 프리미티브들의 좌표들로의 변환은 래스터화 이전에 발생할 수 있어서, 변환은 나중에 래스터화되는 프리미티브들의 정점 좌표들을 변경한다.
일부 실시예들에서, 가상 공간의 다수의 또는 부분적인 부분들이 제2 공간의 단일 부분으로 변환될 수 있다. 일례로서, 예시된 실시예에서, 다수의 가상 공간 부분들(가상 0 내지 가상 2)은 단일 제2 부분(워프 0)으로 변환되고, 상이한 가상 공간 부분들(가상 7 및 가상 8)의 부분들이 단일 제2 부분(워프 4)으로 변환된다.
일부 실시예들에서, 가상 공간 부분들을 분리하는 경계를 가로질러 놓인 프리미티브는 완전히 제2 공간의 단일 부분 내에 속할 수 있다(예를 들어, 도 4의 가상 1 및 가상 2의 경계를 가로질러 놓인 프리미티브는 완전히 워프 0 내에 속한다). 일부 실시예들에서, 완전히 가상 공간의 단일 부분 내에 속하는 프리미티브는 변환 후 제2 공간 부분들을 분리하는 경계를 가로지를 수 있다(예를 들어, 도 4의 가상 5 내에 속하는 프리미티브는 변환 후 워프 1과 Warp 2 사이의 경계를 가로지를 수 있다).
일부 실시예들에서, 가상 공간(410)의 모든 부분들, 또는 가상 공간(410) 내의 모든 프리미티브들이 제2 공간(420)으로 변환되는 것은 아니다. 예시된 실시예에서, 그래픽 유닛은 경계(415) 외부에 위치된 프리미티브를 가상 15 부분에서 워프 7로 변환하지 않는다. 유사하게, 프리미티브의 일부만이 제2 공간(420)으로 (예를 들어, 경계(415)의 양측 상에 정점들을 포함하는 프리미티브들에 대해) 변환될 수 있다. 일부 실시예들에서, 그래픽 렌더링 프로세스는 제2 공간(420)으로 변환된 후에 컬링(culling) 또는 클리핑 단계를 포함할 수 있다. 본 명세서에 사용되는 바와 같이, "컬(cull)"은 본 기술 분야에서 잘 이해되는 의미에 따라 사용되며, 이는 그래픽 프로세싱 단계들로부터 프리미티브를 생략하는 것을 포함한다. 본 명세서에 사용되는 바와 같이, "클립"은 본 기술 분야에서 잘 이해되는 의미에 따라 사용되며, 이는 새로운 프리미티브를 생성하기 위해 프리미티브로부터 데이터를 제거 또는 재정렬하는 것을 포함한다. 일부 실시예들에서, 그래픽 유닛은 변환 후에 (가시성 영역 외부의 프리미티브들을 컬링하는 것에 추가로) 소형-객체 컬링을 수행할 수 있으며, 여기서 이는 장면으로부터 충분히 작은 변환된 프리미티브들을 제거한다. 프리미티브들의 불필요한 변환을 피하기 위해, 그래픽 유닛은 정점 데이터를 가상 공간(410)으로부터 제2 공간(420) 내로 변환하기 전에 프리미티브들을 컬링할 수 있다. 그래픽 유닛은 정점 데이터를 가상 공간(410)으로부터 제2 공간(420) 내로 변환하기 전 또는 후에 프리미티브들을 클리핑할 수 있다.
변환 파라미터들을 저장하기 위한 예시적인 데이터 구조들
도 5는 일부 실시예들에 따른 제2 공간의 상이한 부분들에 대한 상이한 변환 파라미터들을 포함하는 데이터 구조들을 예시하는 도면이다. 일부 실시예들에서, 이들 데이터 구조들은 전용 하드웨어 레지스터들을 사용하여 구현된다. 예시된 실시예에서, 데이터 구조(500)는 표들(510A 내지 510Z)을 포함한다. 예시된 실시예에서 표들(510A 내지 510Z)은 변환 파라미터들을 포함한다. 도시된 바와 같이, 표(510A)는 제2 공간(예를 들어, 워프 공간)의 제1 부분(예를 들어, 타일)과 연관된 변환 파라미터들의 제1 세트를 포함하고, 표(510Z)는 제2 공간의 제2 부분과 연관된 변환 파라미터들의 제2 세트를 포함한다.
일부 실시예들에서, 변환 파라미터들은 가상 공간 내의 좌표들의 세트들을 제2 공간 내의 좌표들의 각자의 세트들로 변환하는 함수에 대한 입력들(예를 들어, 방정식의 계수들)을 특정할 수 있다. 일부 실시예들에서, 변환 파라미터들은 가상 공간 내의 좌표들의 세트들을 제2 공간 내의 좌표들의 각자의 세트들로 변환하는 함수의 유형(예를 들어, 선형 또는 2차 함수)을 특정할 수 있다. 그래픽 유닛은 일부 실시예들에서 상이한 기능들을 특정하기 위해 임의의 수의 변환 파라미터들을 사용할 수 있다. 변환 파라미터의 다른 예는 일부 실시예들에서, 완전 투사적 변환들을 용이하게 할 수 있는 회전 값이다. 보다 일반적으로, 투사적 변환들은 행렬들, 예를 들어 2차원 투사적 변환을 위한 3x3 행렬을 활용할 수 있다. 다른 예로서, 네거티브 스케일 팩터는 가상 공간 내의 프리미티브들이 스케일링될 뿐만 아니라 제2 공간 내로의 변환 동안 미러링되도록 적용될 수 있다. 다른 예로서, 그래픽 유닛은 투사적 변환을 사용하여 가상 공간의 일부분 내의 개별적인 샘플들/픽셀들/쿼드들을 제2 공간 내의 상이한 위치들에 맵핑할 수 있다. 다양한 실시예들에서, 제2 공간의 부분들에 대한 변환 파라미터들은 프로그래밍가능할 수 있다. 일부 실시예들에서, 변환 파라미터들은 변환 파라미터들을 직접 특정하는 그래픽 프로그램에서의 사용자 입력 또는 명령어들에 기초하여 직접 프로그래밍될 수 있다. 일부 실시예들에서, 변환 파라미터들은 사용자 또는 그래픽 프로그램에 의해 특정된 더 일반적인 기준들에 기초하여 프로그래밍될 수 있다.
다양한 실시예들에서, 상이한 표들(510A 내지 510Z)이 제2 공간의 상이한 부분들에 대한 변환 파라미터들을 별개로 특정하기 위해 사용된다. 일부 실시예들에서, 데이터 구조(500)는 고유 변환들을 요구하는 제2 공간 내의 부분들의 수에 기초하여 변환 파라미터들을 포함하는 더 많거나 더 적은 고유 표들을 활용할 수 있다. 일부 실시예들에서, 제2 공간의 부분들은 동일한 크기일 수 있다. 예를 들어, 제2 공간의 각각의 부분은 32 픽셀 × 32 픽셀의 정사각형 타일일 수 있다. 다른 실시예들에서, 제2 공간의 상이한 부분들은 상이한 크기들일 수 있다. 예를 들어, 이미지의 중심 근처의 부분은 8 픽셀 × 8 픽셀을 포함할 수 있고, 이미지의 에지 근처의 부분은 64 픽셀 × 64 픽셀을 포함할 수 있다. 일부 실시예에서, 부분들은 다양한 비-정사각형 형상들일 수 있다. 예를 들어, 제2 공간의 하나 이상의 부분들은 16 픽셀 × 32 픽셀을 포함할 수 있다. 상이한 부분 크기들 및/또는 형상들이 상이한 실시예들에서 사용될 수 있다. 제2 공간의 부분들은 다수의 그래픽 프로세싱 명명들(예컨대, 타일들, 슬라이스들, 블록들, 서브-타일들, 서브-슬라이스들, 서브-블록들)에 따라 라벨링될 수 있다.
일부 실시예들에서, 하나 이상의 표들은 제2 공간의 하나 초과의 부분과 연관될 수 있다. 예를 들어, 64개의 정사각형 타일들로 분할된 제2 공간에서, 표(510A) 내의 변환 파라미터들의 일 세트가 16개의 타일들에 적용될 수 있고, 표(510Z) 내의 변환 파라미터들의 다른 상이한 세트가 4개의 타일들에 적용될 수 있다. 일부 실시예들에서, 하나 이상의 표들은 제2 공간의 단일 부분과 연관될 수 있다. 일부 실시예들에서, 그래픽 유닛(150)은 어느 표(들)가 어느 타일(들)에 대한 변환 파라미터들을 저장하는지를 나타내는 메타데이터를 저장하도록 구성된다.
예시된 실시예에서, 데이터 구조(500)는 변환 파라미터들로서 사용하기 위한 스케일 팩터들 및 오프셋들을 포함한다. 예를 들어, 예시된 실시예에서, 표(510A)에서의 x1 차원은 2의 스케일 팩터 및 0.5의 오프셋을 특정한다. 예시된 실시예에서, 2의 스케일 팩터는 (변환 전의 샘플링에 비해) 가상 공간의 샘플링 레이트의 절반을 도출할 수 있고, 0.5의 오프셋은 가상 공간에서 샘플링을 시작하는 위치를 나타낼 수 있다. 일부 실시예들에서, 변환 파라미터들은 제2 공간의 다수의 부분들을 가로질러 구분적 연속 함수를 달성하기 위한 오프셋을 포함할 수 있다. 일부 실시예들에서, 제2 공간의 다양한 부분들에 대한 오프셋들은 공통 기준 포인트를 참조하여 정의될 수 있다. 일부 실시예들에서, 스케일 팩터들 및 오프셋들(또는 변환 파라미터로서 사용되는 임의의 다른 기능)은 래스터화 후에 픽셀 콘텐츠를 참조하여 정의될 수 있다. 다른 실시예들에서, 스케일 팩터들 및 오프셋들(또는 변환 파라미터로서 사용되는 임의의 다른 기능)은 좌표계를 참조하여 정의될 수 있다. 일부 실시예들에서, 좌표계는 다양한 프리미티브들의 정점들에 대한 좌표들을 정의하는 동일한 좌표계일 수 있다.
데이터 구조(500)는 일부 실시예들에서 제2 공간의 상이한 차원들에 대한 변환 파라미터들의 상이한 세트들을 포함할 수 있다. 예로서, 데이터 구조(500)는 사용자의 좌안 및 우안에 대한 상이한 변환 파라미터들을 특정할 수 있다. 예시된 실시예에서, 표(510A)는 제2 공간의 일부분에서 x1, x2, 및 y 차원 각각에 대해 상이한 스케일 팩터들 및 오프셋들을 포함한다. x1 차원에 대한 변환 파라미터들은 좌안에 적용될 수 있고, x2 차원에 대한 변환 파라미터들은 우안에 적용될 수 있다. 상이한 차원들에 대한 상이한 변환 파라미터들을 특정하는 기술들은, 일반적으로 렌더링된 그래픽 프레임에서 소정 효과들을 달성하기 위해, 입체 또는 계층화된 렌더링에서 또는 다수의 렌더링 패스(pass)들을 수행하는 데 이점들을 제공할 수 있다. 일부 실시예들에서, 데이터 구조(500)는 제2 공간과 연관된(예컨대, 정점 좌표들 이외의) 상이한 데이터에 대한 상이한 변환 파라미터들을 포함할 수 있다. 예를 들어, 변환 파라미터들은 불투명도 또는 텍스처 데이터를 상이한 타일들에 대해 상이하게 프로세싱하기 위해 사용될 수 있다.
일부 실시예들에서, 데이터 구조(500)는 제2 공간 내의 다수의 이미지들 또는 프레임들에 대해 사용되는 변환 파라미터들을 포함할 수 있다. 예를 들어, 데이터 구조(500)는 제2 공간 내의 다수의 프레임들에 대한 변환 파라미터들을 포함할 수 있어서, 그래픽 유닛은 데이터 구조(500)에서 변환 파라미터들을 업데이트함이 없이 비디오 콘텐츠를 제2 공간으로 변환할 수 있다. 다른 실시예들에서, 데이터 구조(500)는 제2 공간 내의 이미지 또는 프레임의 단일 인스턴스에 대한 변환 파라미터들을 포함할 수 있다(예컨대, 파라미터들은 비디오 데이터의 상이한 프레임들을 프로세싱하는 것 사이에서 업데이트될 수 있다). 일부 실시예들에서, 하나 이상의 프로세서들은 사용 조건들(예컨대, 사용자 위치, 디스플레이 유형) 또는 장면의 콘텐츠 또는 특성들(예컨대, 카메라 또는 광 위치)에 기초하여 변환 파라미터들을 업데이트하기 위해 데이터 구조(500)에 기록할 수 있다. 예를 들어, 그래픽 유닛은, 제2 공간이 사용자로부터 가장 많은 주의를 받는 이미지의 영역들에서 높은 해상도를 유지하도록, 사용자의 시선 방향에 대한 정보를 수신할 때 데이터 구조(500)에서 변환 파라미터들을 업데이트할 수 있다. 일부 실시예들에서, 그래픽 유닛은 장면 콘텐츠가 변함에 따라 제2 공간의 소정 영역들에서 더 크거나 더 적은 해상도를 달성하기 위해 데이터 구조(500)에서 변환 파라미터들을 업데이트할 수 있다. 다른 예로서, 그래픽 유닛은, 이미지의 상이한 부분들이 카메라로부터 더 가까워지거나 더 멀어지도록 장면 내의 카메라 위치가 변함에 따라 데이터 구조(500)에서 변환 파라미터들을 업데이트할 수 있다.
일부 실시예들에서, 데이터 구조(500)는 제2 공간의 상이한 부분들에 대한 상이한 변환 파라미터들을 특정하기 위해 그래픽 프로그램에 의해 프로그래밍가능할 수 있다. 일부 실시예들에서, 데이터 구조(500)는 다양한 캐시 레벨들, 공유 메모리 구조들 등을 포함할 수 있는 그래픽 메모리 계층구조의 하나 이상의 요소들로서 구현될 수 있다.
샘플링 레이트에 대한 변환의 예시적인 효과들
도 6은 일부 실시예들에 따른 제2 공간의 상이한 부분들에 대한 상이한 변환 파라미터들에 의해 야기될 수 있는 가상 공간의 상이한 부분들에 대한 상이한 샘플링 레이트들을 예시하는 도면이다. 예시된 실시예에서, 예시적인 동일한 프리미티브들(605 및 615)은 가상 공간에서 동일한 크기를 갖지만, 전환 후 제2 공간의 상이한 부분들(각각 A 및 B)에 위치된다. 가상 공간으로부터 제2 공간 내로의 전환 동안, 예시된 실시예에서, 그래픽 유닛은 상이한 전환 파라미터들이 제2 공간의 상이한 부분들에 맵핑되는 것에 기초하여 이들을 프리미티브(605) 및 프리미티브(615)에 적용한다. 도시된 바와 같이, 전환은 프리미티브(605)를 2배만큼 그리고 프리미티브(615)를 2.5배만큼 스케일링한다.
예시된 실시예에서, 제2 공간에 도시된 단편 좌표들은 가상 공간에 도시된 샘플 좌표들에 대응한다(따라서, 가상 공간 내의 샘플 위치들의 좌표들은 제2 공간 내의 단편들의 좌표들로 변환된다). 예시된 실시예에서, 프리미티브(605)는 프리미티브(615)보다 더 높은 해상도로 샘플링되는데, 그 이유는 그의 인가된 전환 파라미터들이 더 작은 스케일 팩터를 사용하기 때문이다. 달리 말하면, 가상 공간의 면적 당 제2 공간 내의 단편들의 수는 2.5:1 전환에 대해서보다 2:1 전환에 대해 더 크다. 도 6에 예시된 바와 같이, 상이한 샘플 레이트들을 사용하여 가상 공간의 부분들을 샘플링하기 위해, 가상 공간에서 동일한 크기를 갖는 프리미티브들은 제2 공간에서 상이한 크기들을 가질 수 있는데, 이는 이미지의 부분들이 워프된 것으로 보이게 할 수 있다. 예시된 실시예에서, 단편 데이터는 전환에 의해 야기된 상이한 샘플링 레이트들을 반영한다. 일부 실시예들에서, 전환은 일단 전환된 프리미티브들이 래스터화되면 가상 공간의 상이한 부분들에서 단편 데이터에서 상이한 샘플 레이트들을 도출할 수 있다.
일부 실시예들에서, 프리미티브들(605 및 615)은 디스플레이 상에서 동일한 크기, 그러나 상이한 해상도들을 가져야 한다. 일부 실시예들에서, 제2 공간 내의 이미지들은, 전환에 의해 도입된 왜곡을 제거하는 방식으로 이미지의 상이한 부분들에 상이한 배율을 적용하는 렌즈를 통해 뷰잉될 수 있다. 전환 파라미터들은 일부 실시예들에서 이미지의 디스플레이를 뷰잉하기 위해 사용될 렌즈에 기초하여 프로그래밍될 수 있다(예를 들어, 넓은 시야의 가상 현실 디스플레이는 공지된 렌즈 유형을 사용한다). 일부 실시예들에서, 전환 파라미터들은, 사용자에 의해 뷰잉되는 이미지가 왜곡을 거의 또는 전혀 포함하지 않도록 렌즈에 의해 도입된 왜곡에 대항하는 왜곡을 도입하도록 프로그래밍될 수 있다.
일부 실시예들에서, 제2 공간의 부분들은, 예컨대 제2 공간으로의 전환에 의해 야기되는 왜곡을 감소 또는 제거하기 위해 디스플레이 전에 리샘플링될 수 있다. 일부 실시예들에서, 디스플레이 공간 내로의 제2 공간의 리샘플링은 제2 공간의 상이한 부분들에 대해 상이한 리샘플링 레이트들을 사용할 수 있다. 제2 공간의 상이한 부분들에 대한 상이한 리샘플링 레이트들은, 일부 실시예들에서, 제2 공간의 상이한 부분들에 대한 상이한 전환 파라미터들에 기초할 수 있다. 제2 공간 내의 이미지의 리샘플링은, 일부 실시예들에서, (예컨대, 도 6의 프리미티브들(605 및 615)이 전환 및 리샘플링 후에 동일한 크기이도록) 이미지를 가상 공간으로부터 제2 공간으로 전환함으로써 도입되는 스케일링 또는 왜곡을 제거할 수 있다. 일부 실시예들에서, 리샘플링된 이미지는 전체 이미지에 걸쳐 균일한 샘플링 레이트를 가질 수 있다. 다른 실시예들에서, 리샘플링된 이미지는 상이한 부분들에서 상이한 샘플링 레이트들을 가질 수 있다. 워프 전환 후에 제2 공간 내의 더 적은 픽셀들을 래스터화하고 섀이딩하는 것의 성능 이점들은, 일부 실시예들에서, 디스플레이를 위해 제2 공간을 리샘플링하는 것의 임의의 성능 단점들을 넘어설 수 있다. 리샘플링은, 가상 공간 이미지와 동일한 해상도 및 장면 콘텐츠를 갖는 이미지를 디스플레이하면서 종래의 렌더링 방법들(예컨대, 도 2a에 논의된 것들) 및 그래픽 하드웨어(예컨대, 도 2b에 논의된 것)를 사용하여 제2 공간에서 이미지를 렌더링하는 것을 허용하지만, 그래픽 프로세서에 의한 더 적은 계산, 레이턴시, 및/또는 전력 소비를 도출할 수 있다. 달리 말하면, 래스터화 전에 워프 전환을 수행하는 것은 워프 기술들의 고려 없이 섀이더 프로그램들이 기록되도록 허용할 수 있고, 실제 섀이딩이 수행되도록 고려할 필요 없이 전환, 리샘플링 및/또는 렌즈 파라미터들이 선택될 수 있다.
변환 및 왜곡
도 7은 일부 실시예들에 따른 (예컨대, 섀이딩 후) 변환 및 예시적인 보정 리샘플링에 기인하는 왜곡을 예시하는 도면이다. 예시된 실시예에서, 동일한 프리미티브들(705 및 715)은 가상 공간에서 동일한 크기를 갖는다. 제2 공간 내로의 전환 동안, 예시된 실시예에서, 그래픽 유닛은 y 차원에서 프리미티브(705)에 2의 스케일 팩터(및 x 차원에서 1의 스케일 팩터)를 그리고 x 차원에서 프리미티브(715)에 2의 스케일 팩터(및 y 차원에서 1의 스케일 팩터)를 적용한다. 두 경우들 모두에서, 제2 공간 내의 프리미티브의 이미지는, 상이한 스케일 팩터들이 x 및 y 차원들에 적용되었기 때문에, 가상 공간에서의 원래 프리미티브에 비해 왜곡된다.
도시된 바와 같이, 가상 공간 내의 프리미티브들의 좌표들을 제2 공간 내의 프리미티브들의 좌표들로 전환하는 것은 가상 공간 내의 이미지에 비해 제2 공간 내의 이미지 내로 왜곡을 도입할 수 있다. 도 7에 예시된 실시예는 선형 왜곡을 예시하지만, 왜곡은 임의의 다양한 다른 비선형 기능들에 의해 도입될 수 있다. 위에서 논의된 바와 같이, 일부 실시예들에서, 디스플레이 전에 왜곡을 제거하기 위해 전환된 이미지에 렌즈가 적용될 수 있다.
일부 실시예들에서, 상이한 차원들에 대한 상이한 전환 파라미터들의 사용은 상이한 차원들에 대해 가상 공간에서 상이한 샘플링 레이트들을 도출할 수 있다. 도 7에 예시된 바와 같이, y 차원에서 2의 스케일 팩터에 의해 전환되는 프리미티브(705)는 가상 공간의 x 차원에서 더 큰 밀도로 샘플링되고, x 차원에서 2의 스케일 팩터에 의해 전환되는 프리미티브(715)는 가상 공간의 y 차원에서 더 큰 밀도로 샘플링된다. 도 6에 대해 위에서 논의된 바와 같이, 전환된 프리미티브들은 디스플레이 전에 리샘플링될 수 있다. 도 7에 예시된 실시예에서, 예를 들어, 전환된 프리미티브(705)는 y 차원에서 2x의 레이트로 리샘플링될 수 있고, 프리미티브(715)는 x 차원에서 2x의 레이트로 리샘플링될 수 있다. 예시된 실시예에서, 전환되고 리샘플링된 프리미티브들(705 및 715)은, 전환된 리샘플링 프리미티브들이 가상 공간에서와 동일한 크기이도록 동일한 해상도로 디스플레이될 수 있다.
도 8a 및 도 8b는 일부 실시예들에 따른 가상 공간 및 워프 전환 이후의 제2 공간에서의 예시적인 이미지를 각각 예시한다. 도시된 바와 같이, 가상 공간 이미지(805)는 모두 동일한 크기의 15 x 20개의 정사각형 부분들을 포함한다. 예시된 실시예에서의 제2 공간 이미지(815)는 유사하게 15 × 20개의 정사각형 부분들을 포함한다. 예시된 실시예에서, 장면 콘텐츠는 가상 공간으로부터 제2 공간으로의 전환 동안 시프트될 수 있다. 예를 들어, 가상 공간 이미지(805) 내의 행(10)의 최상부 근처에 위치된 수평선이 제2 공간 이미지(815) 내의 행(11)의 최상부로 시프트된다는 것에 유의한다. 유사하게, 가상 공간 이미지(805) 내의 행들(6 내지 10) 및 열들(G 내지 M)에 포함된 "OpenGL" 부호는 제2 공간 이미지(815)에서 행들(5 내지 11) 및 열들(E 내지 O)로 확장된다. 제2 공간 이미지(805)의 전체 이미지 크기는 가상 공간 이미지(815)의 전체 이미지 크기보다 작을 수 있다. 일부 실시예들에서, 전환 파라미터들(예를 들어, 오프셋 및 스케일링 팩터)은 어느 프리미티브들이 제2 공간 내의 어느 타일들과 중첩되는지를 결정하기 위해 사용될 수 있다(따라서 이들 타일들의 섀이딩을 위해 고려되어야 한다).
일부 실시예들에서, 그래픽 유닛(150)은 일부분(예를 들어, 타일, 이 경우, 프리미티브는 그 타일에 대해 프로세싱될 필요가 없음)과 교차하지 않는 것으로 공지된 프리미티브들을 대략 위드 아웃(weed out)하기 위해 "경계 박스"를 사용하도록 구성된다. 예를 들어, 삼각형 프리미티브들의 경우, X 및 Y 차원에서 프리미티브의 가장 먼 포인트들을 한정하기 위해 직사각형 경계 박스가 사용될 수 있다. 경계 박스는 각각의 타일에 대해 어느 프리미티브들이 고려되어야 하는지를 결정하기 위해 사용될 수 있으며, 이는 이어서 전환 후에 타일에 대해 래스터화된다. 상이한 타일들에 대한 상이한 전환 파라미터들을 갖는 일부 실시예들에서, 경계 박스들뿐만 아니라 프리미티브들이 전환될 필요가 있을 수 있다.
도 8a 및 도 8b는 또한 프리미티브 경계 박스의 개념을 예시한다. 이들 도면들은 실제로는 프리미티브가 아니더라도(그러나 오히려 많은 프리미티브들을 사용하여 표현됨), 예시를 위해 예로서 "OpenGL" 부호를 사용하는 것에 유의한다. 예시된 실시예에서, 가상 공간 이미지(805) 내의 "Open GL" 부호는 경계 박스(810) 내에 포함되고, 제2 공간 이미지(815) 내의 "Open GL" 부호는 전환된 경계 박스(820) 내에 포함된다. 도시된 바와 같이, 경계 박스(810)에 전환 파라미터들을 적용하는 것은 전환된 경계 박스(820)를 도출한다. 일부 실시예들에서, 그래픽 유닛(150)은 경계 박스 전환 및 프리미티브 전환에 대한 전환 파라미터들을 별개로 저장하도록 구성된다.
따라서, 일부 실시예들에서, 그래픽 유닛은 가상 공간 내의 하나 이상의 프리미티브들에 대한 경계 박스를 결정하고, 이어서 경계 박스의 좌표들을 제2 공간으로 전환할 수 있다. 경계 박스는 (예를 들어, 도 8a 및 도 8b의 "Open GL" 부호가 단일 프리미티브인 것처럼, 또는 "Open GL" 부호 내의 모든 프리미티브들이 공통 그룹에 할당된 것처럼) 하나의 프리미티브 또는 프리미티브들의 그룹을 한정할 수 있다. 일부 실시예들에서, 그래픽 유닛은 제2 공간의 어느 부분들이 전환된 경계 박스와 교차하는지를 결정하기 위해, 전환된 경계 박스를 제2 공간의 하나 이상의 부분들과 비교할 수 있다. 그래픽 유닛은, 전환된 경계 박스와 교차하는 제2 공간의 그러한 부분들에 대해서만 경계 박스 내에 포함된 하나 이상의 프리미티브들을 프로세싱(예를 들어, 래스터화 또는 전환)할 수 있다. 일부 실시예들에서, 주어진 프리미티브는 제2 공간의 하나 초과의 부분에 대한 상이한 전환 파라미터들을 사용하여 전환될 수 있다. 예를 들어, 그래픽 유닛은, 장면 콘텐츠를 가상 공간 이미지(805)로부터 행들(5 내지 11) 및 열들(E 내지 O) 외부에 놓인 제2 공간 이미지(815)의 부분들 내로 전환할 때 경계 박스(820) 내에 포함된 프리미티브들을 고려하지 않을 것이지만, 장면 콘텐츠를 행들(5 내지 11) 및 열들(E 내지 O) 내에 놓인 제2 공간 이미지(815)의 부분들 내로 전환할 때 이러한 프리미티브들을 고려할 것이다. 이는 제2 공간 내의 부분들 각각에 대해 프로세싱된 정점 데이터의 양을 제한함으로써 계산을 유리하게 감소시킬 수 있다.
타일 당 변환 파라미터들을 사용하는 예시적인 섀도우 맵핑
일부 실시예들에서, 개시된 워프 변환 기술들은 다양한 다른 예시적인 애플리케이션들 중에서 섀도우 맵핑에 적용될 수 있다. 본 명세서에 사용되는 바와 같이, 용어 "섀도우 맵핑"은 본 기술 분야에서 잘 이해되는 의미에 따라 사용되며, 이는 (예컨대, 객체들이 광원을 차단하고 그 광원으로부터의 광에 대한 섀도우들을 야기하는 영역들과는 대조적으로) 장면의 어느 부분들이 광원과 상호작용되는지 결정하기 위한 기술들을 포함한다. 섀도우 맵의 상이한 부분들에 상이한 변환 파라미터들을 적용하는 것은, 일부 실시예들에서, 섀도우 맵의 상이한 부분들에 대해 상이한 해상도들을 사용할 수 있다. 일부 실시예들에서, 변환 파라미터들은 상이한 해상도들에서 가상 공간 내의 섀도우 맵의 상이한 부분들을 샘플링하도록 프로그래밍가능할 수 있다. 예를 들어, 조명 뷰는 가상 스크린 공간에 렌더링될 수 있고, 카메라에 더 가까운 섀도우들은 높은 해상도로 워프 공간으로 변환될 수 있는 반면 카메라로부터 먼 섀도우들은 낮은 해상도로 워프 공간으로 변환될 수 있다(카메라의 위치에 추가로 또는 그 대신에 워프 공간의 상이한 부분들에 대한 변환 파라미터들을 결정하기 위해 다양한 기술들이 사용될 수 있다). 이는, 다수의 섀도우 맵들에 대한 필요성을 제거하는 것 및/또는 섀도우 앨리어싱(shadow aliasing)을 추가로 감소시키는 것과 같은 종래의 섀도우 맵핑 방법들(예컨대, 사시도 섀도우 맵들, 캐스케이드 섀도우 맵들, 광 공간 사시도 섀도우 맵들 등)과 함께 이득들 또는 개선들을 제공할 수 있다. 일부 실시예들에서, 상이한 변환 파라미터들이 상이한 광원들에 대해 사용될 수 있다.
추가적인 등각 렌더링 예들
도 9a 내지 도 9d는 일부 실시예들에 따른 등각 렌더링을 그래픽으로 예시한다. 특히, 도 9a 및 도 9b는 종래의 직선형 렌더링을 예시하고, 도 9c 및 도 9d는 등각 렌더링을 예시한다.
도 9a는 종래의 직선형 투사 방법을 사용하여 프레임(900)을 샘플링하기 위한 시점으로부터의 발사 광선들을 예시한다. 직선형 투사 방법에서, 광선들은 프레임(900)을 샘플링하기 위해 동일한 거리 d에서 시점으로부터 3D 가상 공간 내로 발사된다. 이어서, 샘플링된 프레임은 디스플레이를 위한 이미지를 생성하기 위해 렌더링 애플리케이션에 의해 렌더링된다. 도 9b에 도시된 바와 같이, 직선형 투사 방법은 디스플레이(902)를 가로질러 동일한 해상도(904)를 갖는 이미지를 생성한다. 거리 d는 사용자가 디스플레이(902)의 중심을 보고 있을 때 양호한 세부사항을 제공하도록 선택될 수 있다. 그러나, 인간의 눈(992)은 단지 소정 각도 해상도(994)에서만 세부사항을 해결할 수 있다. 도 9b에서 볼 수 있는 바와 같이, 사용자가 디스플레이(902)의 에지들을 향해 보고 있을 때, 이미지 해상도는 눈의 각도 해상도(994)보다 높다. 따라서, 직선형 투사 방법은 이미지의 에지들을 향해 오버샘플링하는 경향이 있다. 이는 넓은 FOV 디스플레이들에 대해 특히 그러하다.
도 9c는 등각 투사 방법을 사용하여 제2 공간 프레임(910)을 샘플링하기 위한 시점으로부터의 발사 광선들을 예시한다. 등각 투사 방법에서, 가상 공간 프레임(900)은 제2 공간 프레임(910)으로 전환되고, 광선들은 제2 공간 프레임(910)을 샘플링하기 위해 시점으로부터 3D 공간으로 등각 A로 발사된다. 일부 실시예들에서, 가상 공간 프레임(900) 내의 프리미티브들에 대한 좌표들의 제2 공간 프레임(910)으로의 전환은 래스터화 또는 샘플링 전에 발생할 수 있다. 이는 (예를 들어, 프로세싱된 픽셀들 또는 단편들의 수를 감소시키고/감소시키거나 래스터화 프로세스를 지연시킴으로써 리샘플링에 대한 필요성을 제거함으로써) 계산을 감소시키고/시키거나, 렌더링 속도를 증가시키고/시키거나, 전력 소비를 감소시키는 이점을 가질 수 있다.
일부 실시예들에서, 제2 공간 프레임(910)은 디스플레이(902) 상에서 뷰잉하기 위해 디스플레이 공간으로 전환된다. 일부 실시예들에서, 디스플레이 공간 내로의 전환은 래스터화 전에 발생할 수 있다. 이는 래스터화된 단편들 또는 픽셀들의 수를 감소시킴으로써 계산을 유리하게 감소시킬 수 있다. 광선들은 디스플레이 공간 프레임을 샘플링하기 위해 시점으로부터 3D 공간으로 등각 A로 발사될 수 있거나, 다른 실시예들에서 디스플레이 공간 프레임은 균일한 직선형 샘플 레이트로 샘플링될 수 있다. 이어서, 샘플링된 프레임은 디스플레이를 위한 이미지를 생성하기 위해 렌더링 애플리케이션에 의해 렌더링된다. 등각 투사 방법은, 도 9d에 도시된 바와 같이, 디스플레이(902)의 중심에서 더 높은 해상도 및 디스플레이(902)의 에지들을 향해 더 낮은 해상도를 갖는 이미지를 생성한다. 도 9d에서 볼 수 있는 바와 같이, 사용자가 디스플레이(902)의 에지들을 향해 보고 있을 때, 디스플레이(902)의 에지들이 디스플레이의 중심보다 눈(992)의 동공으로부터 더 멀리 있기 때문에, 에지들에서의 더 낮은 이미지 해상도는 디스플레이(902)의 중심에 제공되는 것과 유사한 해상도를 제공하고, 직선형 투사 방법에서와 같이 눈의 각도 해상도(994)에 대해 오버샘플링되지 않는다.
등각 렌더링 방법은, 해상도 및 그에 따른 프레임을 렌더링하는 데 소요되는 시간을 감소시키고, 이는 레이턴시를 감소시키며, 또한 네트워크 또는 다른 통신 링크를 통해 전송된 프레임들에 대해 송신될 필요가 있는 비트들의 수를 감소시키고, 이는 대역폭 사용 및 레이턴시를 감소시킨다. 등각 렌더링 기술들은 본 명세서에서 논의된 워프 전환 기술들의 하나의 비제한적인 예시적인 사용이다. 아래에서 더 상세히 논의되는 바와 같이, 사용자의 시선 방향의 추적 등에 기초하여, 유사한 기술들이 다수의 차원들로 사용될 수 있다.
예시적인 포비티드(foveated) 렌더링 기술들
일부 실시예들에서 사용될 수 있는 다른 기술은 포비티드 렌더링으로 지칭될 수 있는데, 이는 사용자로부터 주목을 덜 받는 프레임의 영역들에서 프레임들의 해상도를 감소시키고 따라서 계산, 전력 소비, 대역폭 사용, 및 레이턴시를 감소시키기 위해 사용될 수 있다. 포비티드 렌더링 방법에서, 그래픽 유닛은 시선 추적 카메라로부터의 시선 추적 정보(예를 들어, 하나 이상의 이미지들에서 캡처됨)를 사용하여, 사용자가 현재 보고 있는 방향(시선 방향으로 지칭됨)을 식별할 수 있다. 인간의 눈은 망막의 주변 영역에서보다 중심와에서 더 높은 해상도를 인지할 수 있다. 중심와에 대응하는 프레임의 영역(포비티드 영역으로 지칭됨)은 결정된 시선 방향 및 알려진 파라미터들(예컨대, 눈 파라미터들 및 눈으로부터 디스플레이까지의 거리)로부터 추정될 수 있다. 포비티드 영역은 더 높은 해상도로 렌더링될 수 있는 반면, 포비티드 영역 외부의 프레임(주변 영역으로 지칭됨)은 더 낮은 해상도로 렌더링될 수 있다. 일부 실시예들에서, 프레임은 상이한 샘플 레이트들로 포비티드 및 주변 영역들을 렌더링하기 위해 제2 공간으로 변환될 수 있다. 일부 실시예들에서, 상이한 변환 파라미터들이 포비티드 및 주변 영역에 적용될 수 있어서, 2개의 영역들은 상이한 레이트들로 샘플링된다(예를 들어, 포비티드 및 주변 영역은 예컨대 도 5에 대해 위에서 논의된 것들과 같은 상이한 변환 파라미터들을 사용하는 스크린의 상이한 부분들을 포함한다). 다른 실시예들에서, 주변 영역은 더 높은 해상도로 렌더링될 수 있고, 이후에 예를 들어 필터(예컨대, 대역 통과 필터)를 주변 영역에 적용함으로써 더 낮은 해상도로 변환될 수 있다. 일부 실시예들에서, 포비티드 렌더링 방법은 렌더링된 이미지에서 픽셀들의 수를 감소시키며, 이는 무선 또는 다른 네트워크 링크 송신 프레임 데이터를 통해 송신될 필요가 있는 비트들의 수를 감소시키고, 따라서 대역폭 사용 및 레이턴시를 감소시킨다.
일부 실시예들에서, 개시된 워프 공간 렌더링 기술들은 섀이더 프로그램을 변경하지 않으면서 포비티드 렌더링이 수행되게 할 수 있다. 예를 들어, GPU 드라이버는 시선 추적 정보를 수신하고 섀이더 프로그램에 대해 투명한 방식으로 시선 추적 정보에 기초하여 상이한 프레임들에 대한 변환 파라미터들을 구현할 수 있다. 이는 그래픽 개발자들에 대한 프로그래밍 부담을 증가시키지 않으면서 성능 증가들을 허용할 수 있다.
예시적인 방법
도 10은 일부 실시예들에 따른 다중 공간 렌더링을 위한 예시적인 방법(1000)을 예시하는 흐름도이다. 도 10에 예시된 방법은 다른 디바이스들 중에서도, 본 명세서에 개시되는 컴퓨터, 시스템들, 디바이스들, 요소들 또는 컴포넌트들 중 임의의 것과 공조하여 사용될 수 있다. 다양한 실시예들에서, 도시된 방법 요소들 중 일부는 동시에, 또는 도시된 바와는 상이한 순서로 수행될 수 있거나, 또는 생략될 수 있다. 추가 방법 요소들이 또한 원하는 대로 수행될 수 있다.
1010에서, 예시된 실시예에서, 그래픽 회로부(예컨대, 그래픽 유닛(250))는 가상 공간 내의 프리미티브들의 좌표들을 포함하는 프리미티브 데이터를 수신한다. 일부 실시예들에서, 그래픽 회로부는 그래픽 회로부 외부의 프로그램 또는 프로세스로부터 프리미티브 데이터를 수신한다. 일부 실시예들에서, 그래픽 회로부는 메모리로부터 프리미티브 데이터를 검색한다. 일부 실시예들에서, 가상 공간 내의 프리미티브들의 좌표들은, 프리미티브들이 디스플레이된 장면 내에서 어디에서 렌더링될 것인지를 결정하기 위해 사용된다.
1020에서, 예시된 실시예에서, 그래픽 회로부는 하나 이상의 좌표 변환들과 연관된 변환 파라미터들을 수신한다. 일부 실시예들에서, 변환 파라미터들은 가상 공간 내의 좌표들의 세트들을 제2 공간 내의 좌표들의 각자의 세트들로 변환하는 함수를 특정할 수 있다. 일부 실시예들에서, 그래픽 회로부는 제2 공간의 상이한 부분들에 대해 상이한 변환 파라미터들을 수신한다. 일부 실시예들에서, 변환 파라미터들은 좌표 변환에서 사용하기 위한 스케일 팩터들 및 오프셋들을 특정할 수 있다. 일부 실시예들에서, 수신된 변환 파라미터들은 소정 기준들(예를 들어, 파일 크기, 이미지 해상도, 성능 벤치마크들 등)을 달성하도록 특정될 수 있다.
1030에서, 예시된 실시예에서, 그래픽 회로부는 수신된 변환 파라미터들을 저장한다. 예를 들어, 그래픽 유닛은 데이터 구조(500)에 변환 파라미터들을 저장하고 메모리 인터페이스(280)를 통해 렌더링하는 데 사용하기 위한 변환 파라미터들을 검색할 수 있다. 일부 실시예들에서, 그래픽 회로부는 제2 공간의 상이한 부분들에 대해 상이한 변환 파라미터들을 저장할 수 있다. 일부 실시예들에서, 그래픽 회로부는 제2 공간의 상이한 차원들에 대해 변환 파라미터들의 상이한 세트들을 저장할 수 있다. 일부 실시예들에서, 그래픽 회로부는 상이한 그래픽 프레임들에 대해 변환 파라미터들의 상이한 세트들을 저장할 수 있다. 일부 실시예들에서, 그래픽 회로부는 사용 환경에서의 변화들 또는 렌더링되고 있는 그래픽 데이터에 응답하여 저장된 변환 파라미터들을 업데이트할 수 있다. 예를 들어, 그래픽 회로부는 장면 내의 카메라 뷰에서의 변화 또는 비디오 콘텐츠를 보는 사용자의 시선 방향에서의 변화에 기초하여 변환 파라미터들을 업데이트할 수 있다. 저장된 변환 파라미터들은 일부 실시예들에서 그래픽 회로부가 외부 프로그램 또는 프로세스로부터 정보를 수신하는 것에 응답하여 저장된 변환 파라미터들을 업데이트하도록 프로그래밍가능할 수 있다.
1040에서, 예시된 실시예에서, 그래픽 회로부(예컨대, 변환 회로부(320))는, 프리미티브들의 래스터화 이전에, 제2 공간의 상이한 부분들에 대한 상이한 변환 파라미터들을 사용하여 가상 공간 내의 프리미티브들의 좌표들을 제2 공간 내의 프리미티브들의 좌표들로 변환한다. 가상 및 제2 공간들의 상이한 부분들은 하나 이상의 크기들 및 형상들일 수 있다. 프리미티브들의 제2 공간 내로의 변환은 가상 공간 이미지에 비해 제2 공간 이미지에서의 왜곡을 도입할 수 있다(예를 들어, 프리미티브들의 상대적인 크기들이 변환 동안 변할 수 있다). 가상 공간 내의 프리미티브들의 좌표들을 제2 공간 내의 프리미티브들의 좌표들로 변환하는 것은, 일부 실시예들에서, 하나 이상의 프리미티브들에 대한 정점 좌표들을 포함하는 정점 데이터를 업데이트하는 것을 포함할 수 있다. 일부 실시예들에서, 변환은 가상 공간 이미지와는 상이한 크기(픽셀들 또는 좌표들로 표현됨)의 제2 공간 이미지를 도출할 수 있다.
1050에서, 예시된 실시예에서, 그래픽 회로부(예를 들어, 스캔 컨버터(330))는 단편 데이터를 생성하기 위해 제2 공간 내의 프리미티브 좌표들에 기초하여 프리미티브들을 래스터화하고, 여기서 변환 동안 상이한 변환 파라미터들의 사용은 가상 공간의 상이한 부분들이 상이한 샘플 레이트들에서 샘플링되게 한다. 가상 공간으로부터 제2 공간으로의 변환 동안 상이한 변환 파라미터들(예컨대, 스케일 파라미터)의 사용은 래스터화 동안 상이한 샘플 레이트들에서 가상 공간의 상이한 부분들을 샘플링하는 것을 도출할 수 있다. 예를 들어, 동일한 샘플링 레이트를 제2 공간의 2개의 부분들 - 제1 부분은 가상 공간으로부터 스케일링되지 않고, 제2 부분은 크기가 2배만큼 감소됨 - 에 적용하는 것은 가상 공간의 한 부분을 가상 공간의 다른 부분보다 2배만큼 많이 샘플링하는 것을 도출할 수 있다.
1060에서, 예시된 실시예에서, 그래픽 회로부(예컨대, 프로그래밍가능 섀이더(260))는 픽셀 속성들을 결정하기 위해 단편 데이터의 적어도 일부분을 프로세싱한다. 픽셀/단편 섀이더들은 픽셀 속성들(예컨대, 색상, 텍스처 등)을 결정하기 위해 래스터화된 데이터 상에서 동작할 수 있다.
예시적인 디바이스
이제, 도 11을 참조하면, 디바이스(1100)의 예시적인 실시예를 예시하는 블록도가 도시되어 있다. 일부 실시예들에서, 디바이스(1100)의 요소들은 시스템 온 칩 내에 포함될 수 있다. 일부 실시예들에서, 디바이스(1100)는 배터리-전력이 공급될 수 있는 모바일 디바이스 내에 포함될 수 있다. 따라서, 디바이스(1100)에 의한 전력 소비는 중요한 설계 고려사항일 수 있다. 예시된 실시예에서, 디바이스(1100)는 패브릭(1110), 연산 컴플렉스(1120), 입/출력(I/O) 브리지(1150), 캐시/메모리 제어기(1145), 그래픽 유닛(250) 및 디스플레이 유닛(1165)을 포함한다. 일부 실시예들에서, 디바이스(1100)는 예시된 컴포넌트들, 예컨대 비디오 프로세서 인코더들 및 디코더들, 이미지 프로세싱 또는 인식 요소들, 컴퓨터 비전 요소들 등에 추가로 및/또는 그 대신에 다른 컴포넌트들(도시되지 않음)을 포함할 수 있다.
패브릭(1110)은 다양한 상호접속부들, 버스들, MUX들, 제어기들 등을 포함할 수 있고, 디바이스(1100)의 다양한 요소들 사이의 통신을 용이하게 하도록 구성될 수 있다. 일부 실시예들에서, 패브릭(1110)의 부분들은 다양한 상이한 통신 프로토콜들을 구현하도록 구성될 수 있다. 다른 실시예들에서, 패브릭(1110)은 단일 통신 프로토콜을 구현할 수 있고 패브릭(1110)에 결합된 요소들은 단일 통신 프로토콜로부터 다른 통신 프로토콜들로 내부적으로 변환할 수 있다.
예시된 실시예에서, 연산 컴플렉스(1120)는 버스 인터페이스 유닛(BIU)(1125), 캐시(1130), 및 코어들(1135 및 1140)을 포함한다. 다양한 실시예들에서, 연산 컴플렉스(1120)는 다양한 수의 프로세서들, 프로세서 코어들 및/또는 캐시들을 포함할 수 있다. 예를 들어, 연산 컴플렉스(1120)는 1, 2, 또는 4개의 프로세서 코어, 또는 임의의 다른 적합한 수를 포함할 수 있다. 일 실시예에서, 캐시(1130)는 세트 연관 L2 캐시이다. 일부 실시예들에서, 코어(1135 및/또는 1140)는 내부 명령어 및/또는 데이터 캐시를 포함할 수 있다. 일부 실시예들에서, 패브릭(1110), 캐시(1130), 또는 디바이스(1100) 내의 다른 곳에서 코히어런시 유닛(도시되지 않음)은 디바이스(1100)의 다양한 캐시들 사이의 코히어런시를 유지하도록 구성될 수 있다. BIU(1125)는 연산 컴플렉스(1120)와 디바이스(1100)의 다른 요소들 사이의 통신을 관리하도록 구성될 수 있다. 코어들(1135 및 1140)과 같은 프로세서 코어들은 운영 체제 명령어들 및 사용자 애플리케이션 명령어들을 포함할 수 있는 특정 명령어 세트 아키텍처(ISA)의 명령어들을 실행하도록 구성될 수 있다.
캐시/메모리 제어기(1145)는 패브릭(1110)과 하나 이상의 캐시 및/또는 메모리 사이에서의 데이터의 전송을 관리하도록 구성될 수 있다. 예를 들어, 캐시/메모리 제어기(1145)는 L3 캐시에 결합될 수 있고, 이는 이어서 시스템 메모리에 결합될 수 있다. 다른 실시예들에서, 캐시/메모리 제어기(1145)는 메모리에 직접 결합될 수 있다. 일부 실시예들에서, 캐시/메모리 제어기(1145)는 하나 이상의 내부 캐시를 포함할 수 있다.
본 명세서에 사용되는 바와 같이, 용어 "에 결합된"은 요소들 사이의 하나 이상의 연결부를 나타낼 수 있고, 결합은 개재 요소들을 포함할 수 있다. 예를 들어, 도 11에서, 그래픽 유닛(250)은 패브릭(1110) 및 캐시/메모리 제어기(1145)를 통해 메모리에 "결합된"것으로 기술될 수 있다. 대조적으로, 도 11의 도시된 실시예에서, 그래픽 유닛(250)은 개재 요소들이 없기 때문에 패브릭(1110)에 "직접 결합"된다.
그래픽 유닛(250)은 하나 이상의 프로세서 및/또는 하나 이상의 그래픽 프로세싱 유닛(GPU)을 포함할 수 있다. 그래픽 유닛(250)은 예를 들어 OPENGL®, Metal, 또는 DIRECT3D® 명령어와 같은 그래픽-오리엔티드 명령어들을 수신할 수 있다. 그래픽 유닛(250)은 특수 GPU 명령어들을 실행하거나, 수신된 그래픽-오리엔티드 명령어들에 기초하여 다른 동작들을 수행할 수 있다. 그래픽 유닛(250)은 일반적으로 데이터의 큰 블록들을 병렬로 프로세싱하도록 구성될 수 있고, 디스플레이로의 출력을 위해 프레임 버퍼 내에 이미지들을 구축할 수 있다. 그래픽 유닛(250)은 하나 이상의 그래픽 프로세싱 파이프라인에서 변환, 조명, 삼각형, 및/또는 렌더링 엔진을 포함할 수 있다. 그래픽 유닛(250)은 디스플레이 이미지들에 대한 픽셀 정보를 출력할 수 있다. 일부 실시예들에서, 그래픽 유닛(250)은 하나 이상의 메모리 일관성, 중간 렌더링 연산, 로컬 이미지 블록, 및/또는 픽셀 자원 동기화 기술들을 수행하도록 구성된다.
디스플레이 유닛(1165)은 프레임 버퍼로부터 데이터를 판독하고 디스플레이를 위한 픽셀 값들의 스트림을 제공하도록 구성될 수 있다. 디스플레이 유닛(1165)은 일부 실시예들에서 디스플레이 파이프라인으로서 구성될 수 있다. 또한, 디스플레이 유닛(1165)은 출력 프레임을 생성하기 위해 다수의 프레임을 혼합하도록 구성될 수 있다. 또한, 디스플레이 유닛(1165)은 사용자 디스플레이(예컨대, 터치스크린 또는 외부 디스플레이)에 결합하기 위한 하나 이상의 인터페이스(예컨대, MIPI® 또는 임베디드 디스플레이 포트(eDP))를 포함할 수 있다.
I/O 브리지(1150)는, 예를 들어, 범용 직렬 버스(USB) 통신, 보안, 오디오, 및/또는 저전력 상시-온 기능을 구현하도록 구성된 다양한 요소들을 포함할 수 있다. I/O 브리지(1150)는 또한 예를 들어 펄스폭 변조(PWM), 범용 입/출력(GPIO), 직렬 주변 인터페이스(SPI), 및/또는 인터-집적 회로부(I2C)와 같은 인터페이스들을 포함할 수 있다. 다양한 유형의 주변기기 및 디바이스들이 I/O 브리지(1150)를 통해 디바이스(1100)에 결합될 수 있다.
일부 실시예들에서, 디바이스(1100)의 다양한 요소들은 클럭 신호들을 클럭 트리의 상이한 부분들에 전달하도록 결합된 다양한 계열들의 DET 클럭 게이터들을 포함하는, 계층적으로 배열된 클럭 게이터들을 포함할 수 있다. 개시된 기술들은 디바이스(1100)에서의 스위칭 전력 소비를 감소시고, 디바이스(1100)의 상이한 부분들에 대한 클럭 지연을 밸런싱하고, 디바이스(1100)에서의 에러들을 감소시키고, 더 높은 주파수를 달성하고, 더 낮은 전원 전압에서 요구되는 주파수를 달성하고, 사이클 당(또는 예를 들어, 태스크 당, 픽셀 당, 또는 바이트 당) 소산되는 에너지를 감소시키는 것 등을 할 수 있다.
예시적인 컴퓨터 판독가능 매체들
본 개시내용은 위에서 상세하게 다양한 예시적인 회로들을 기술하였다. 본 개시내용은 그러한 회로부를 포함하는 실시예뿐만 아니라, 그러한 회로부를 특정하는 설계 정보를 포함하는 컴퓨터 판독가능 저장 매체도 커버하고자 하는 것이다. 따라서, 본 개시내용은 개시된 회로부를 포함하는 장치뿐만 아니라 개시된 회로부를 포함하는 하드웨어(예컨대, 집적 회로)를 생성하도록 구성된 제조 시스템에 의해 인식되는 포맷으로 회로부를 특정하는 저장 매체를 커버하는 청구범위를 지원하도록 의도된다. 그러한 저장 매체에 대한 청구범위는, 예를 들어 회로 설계를 생성하지만 그 자체가 설계를 제조하지는 않는 엔티티(entity)를 커버하도록 의도된다.
도 12는 일부 실시예들에 따른, 회로 설계 정보를 저장하는 예시적인 비일시적 컴퓨터 판독가능 저장 매체를 예시하는 블록도이다. 예시된 실시예에서, 반도체 제조 시스템(1220)은 비일시적 컴퓨터 판독가능 매체(1210) 상에 저장된 설계 정보(1215)를 프로세싱하고 설계 정보(1215)에 기초하여 집적 회로(1230)를 제조하도록 구성된다.
비일시적 컴퓨터 판독가능 매체(1210)는 다양한 적절한 타입들의 메모리 디바이스들 또는 저장 디바이스들 중 임의의 것을 포함할 수 있다. 매체(1210)는, 설치 매체, 예를 들어, CD-ROM, 플로피 디스크들, 또는 테이프 디바이스; DRAM, DDR RAM, SRAM, EDO RAM, 램버스(Rambus) RAM 등과 같은 컴퓨터 시스템 메모리 또는 랜덤 액세스 메모리; 플래시, 자기 매체, 예를 들어, 하드 드라이브, 또는 광학 저장소와 같은 비휘발성 메모리; 레지스터들, 또는 다른 유사한 타입들의 메모리 요소들일 수 있다. 매체(1210)는 또한 다른 타입들의 비일시적 메모리 또는 이들의 조합들을 포함할 수 있다. 매체(1210)는 상이한 위치들, 예를 들어, 네트워크를 통해 접속되는 상이한 컴퓨터 시스템들에 상주할 수 있는 둘 이상의 메모리 매체들을 포함할 수 있다.
설계 정보(1215)는, 제한 없이, VHDL, Verilog, SystemC, Syste㎷erilog, RHDL, M, MyHDL 등과 같은 하드웨어 설명 언어들을 포함하는 다양한 적절한 컴퓨터 언어들 중 임의의 것을 사용하여 특정될 수 있다. 설계 정보(1215)는 집적 회로(1230)의 적어도 일부분을 제조하기 위해 반도체 제조 시스템(1220)에 의해 사용가능할 수 있다. 설계 정보(1215)의 포맷은 적어도 하나의 반도체 제조 시스템(1220)에 의해 인식될 수 있다. 일부 실시예들에서, 설계 정보(1215)는 또한 집적 회로(1230)의 합성 및/또는 레이아웃을 특정하는 하나 이상의 셀 라이브러리를 포함할 수 있다. 일부 실시예들에서, 설계 정보는 셀 라이브러리 요소들 및 그들의 접속성을 특정하는 넷리스트(netlist)의 형태로 전체적으로 또는 부분적으로 특정된다. 단독으로 취해진 설계 정보(1215)는 대응하는 집적 회로의 제조를 위한 충분한 정보를 포함할 수 있거나 포함하지 않을 수 있다. 예를 들어, 설계 정보(1215)는 제조될 회로 요소들을 특정할 수 있지만 그들의 물리적 레이아웃이 아닐 수 있다. 이러한 경우에, 설계 정보(1215)는 특정된 회로부를 실제로 제조하기 위해 레이아웃 정보와 조합될 필요가 있을 수 있다.
반도체 제조 시스템(1220)은 집적 회로들을 제조하도록 구성된 다양한 적절한 요소들 중 임의의 것을 포함할 수 있다. 이는, 예를 들어 반도체 재료들을 (예를 들어, 마스킹을 포함할 수 있는 웨이퍼 상에) 적층시키는 것, 재료들을 제거하는 것, 적층된 재료들의 형상을 변경시키는 것, 재료들을 (예를 들어, 재료들을 도핑하거나 또는 자외선 처리를 사용하여 유전 상수들을 변경함으로써) 변경시키는 것 등을 위한 요소들을 포함할 수 있다. 반도체 제조 시스템(1220)은 또한 정확한 동작을 위해 제조된 회로들의 다양한 테스트를 수행하도록 구성될 수 있다.
다양한 실시예들에서, 집적 회로(1230)는 설계 정보(1215)에 의해 특정된 회로 설계에 따라 동작하도록 구성되며, 이는 본 명세서에 기술된 기능 중 임의의 것을 수행하는 것을 포함할 수 있다. 예를 들어, 집적 회로(1230)는 도 2b 및/또는 도 3에 도시된 다양한 요소들 중 임의의 것을 포함할 수 있다. 추가로, 집적 회로(1230)는 다른 컴포넌트들과 함께 본 명세서에 기술된 다양한 기능들을 수행하도록 구성될 수 있다. 추가로, 본 명세서에 기술된 기능은 다수의 접속된 집적 회로들에 의해 수행될 수 있다.
본 명세서에 사용되는 바와 같이, "~하도록 구성된 회로의 설계를 특정하는 설계 정보"라는 형태의 문구는 요소가 충족되기 위해 해당 회로가 제조되어야 한다는 것을 의미하지 않는다. 오히려, 이 문구는 설계 정보가, 제조 시에, 표시된 액션들을 수행하도록 구성될 것이거나 특정된 컴포넌트들을 포함할 회로를 기술한다는 것을 나타낸다.
본 개시내용은 위에서 상세하게 다양한 예시적인 방법들을 기술하였다. 본 개시내용은 그러한 동작들을 포함하는 실시예들뿐만 아니라, 개시된 동작들을 수행하기 위해 컴퓨팅 디바이스에 의해 실행가능한 명령어들을 포함하는 컴퓨터 판독가능 저장 매체를 포함하는 것으로 의도된다. 일부 실시예들에서, 비일시적 컴퓨터 판독가능 저장 매체는 동작들을 수행하도록 컴퓨팅 디바이스에 의해 실행가능한 명령어들을 포함하고, 동작들은, 가상 공간 내의 프리미티브들의 좌표들을 포함하는 프리미티브 데이터를 수신하는 단계; 하나 이상의 좌표 변환들과 연관된 변환 파라미터들을 수신하는 단계; 수신된 변환 파라미터들을 저장하는 단계; 프리미티브들의 래스터화 이전에, 제2 공간의 상이한 부분들에 대한 상이한 변환 파라미터들을 사용하여, 가상 공간 내의 프리미티브들의 좌표들을 제2 공간 내의 프리미티브들의 좌표들로 변환하는 단계; 단편 데이터를 생성하기 위해 제2 공간 내의 프리미티브 좌표들에 기초하여 프리미티브들을 래스터화하는 단계 - 변환 동안 상이한 변환 파라미터들의 사용은 가상 공간의 상이한 부분들이 상이한 샘플 레이트들에서 샘플링되게 함 -; 및 픽셀 속성들을 결정하기 위해 단편 데이터의 적어도 일부분을 프로세싱하는 단계를 포함한다.
특정 실시예들이 위에서 설명되었지만, 이들 실시예들은 단일 실시예만이 특정 특징부에 대해 설명된 경우에도 본 개시내용의 범주를 제한하도록 의도되지 않는다. 본 개시내용에 제공된 특징부들의 예들은 달리 언급되지 않는 한 제한적인 것이 아니라 예시적인 것으로 의도된다. 위의 설명은 본 발명의 이익을 취하는 당업자에게 자명한 바와 같이 그러한 대안물들, 수정물들, 및 등가물들을 포괄하도록 의도된다.
본 개시내용의 범위는, 본 명세서에서 다뤄진 문제점들 중 임의의 것 또는 전부를 완화시키든 아니든, (명시적으로 또는 묵시적으로) 본 명세서에 개시된 임의의 특징 또는 특징들의 조합, 또는 그의 임의의 일반화를 포함한다. 따라서, 특징들의 임의의 그러한 조합에 대해 본 출원(또는 그에 대한 우선권을 주장하는 출원)의 심사 동안에 새로운 청구범위가 작성될 수 있다. 구체적으로, 첨부된 청구범위를 참조하면, 종속항들로부터의 특징부들은 독립항들의 특징부들과 조합될 수 있으며, 각자의 독립항들로부터의 특징부들은 첨부된 청구범위에 열거된 특정 조합들로 조합될 수 있을 뿐 아니라 임의의 적절한 방식으로 조합될 수 있다.

Claims (20)

  1. 장치로서,
    그래픽 회로부를 포함하고,
    상기 그래픽 회로부는:
    가상 공간 내의 프리미티브(primitive)들의 좌표들을 포함하는 프리미티브 데이터에 액세스하고;
    제2 공간의 상이한 부분들에 대한 상이한 스케일 팩터 값들 및 상이한 오프셋 값들을 포함하는, 상기 제2 공간의 상이한 부분들에 대한 상이한 변환 파라미터들을 특정하는 그래픽 프로그램의 하나 이상의 명령어들의 실행에 기초하여, 변환 파라미터들을 수신하고;
    상기 제2 공간의 각자의 부분들에 대응하는 하나 이상의 레지스터(register)들의 각자의 세트들에 상기 수신된 변환 파라미터들을 저장하고;
    상기 프리미티브들의 래스터화 이전에, 상기 제2 공간의 상이한 부분들에 대해 상기 레지스터들의 상이한 세트들에 저장된 상기 상이한 변환 파라미터들을 사용하는 것을 포함하여, 상기 저장된 변환 파라미터들에 기초하여 상기 가상 공간 내의 프리미티브들의 좌표들을 상기 제2 공간 내의 프리미티브들의 좌표들로 변환하고;
    단편(fragement) 데이터를 생성하기 위해 상기 제2 공간 내의 상기 프리미티브 좌표들에 기초하여 상기 프리미티브들을 래스터화하고 ― 상기 변환 동안 상기 상이한 변환 파라미터들의 사용은 상기 가상 공간의 상이한 부분들이 상이한 샘플 레이트들에서 샘플링되게 함 ―; 그리고
    픽셀 속성들을 결정하기 위해 상기 단편 데이터의 적어도 일부분을 프로세싱하도록
    구성되는, 장치.
  2. 제1항에 있어서,
    상기 장치는, 상기 장치가 사용되는 환경에 대한 환경 파라미터에서의 검출된 변화에 기초하여 상기 변환 파라미터들을 변경하도록 구성되는, 장치.
  3. 제1항에 있어서,
    상기 그래픽 회로부는:
    상기 가상 공간 내의 제1 프리미티브에 대한 경계 박스(bounding box)를 결정하고;
    상기 변환 파라미터들에 기초하여 상기 가상 공간 내의 상기 경계 박스의 좌표들을 상기 제2 공간 내의 변환된 경계 박스의 좌표들로 변환하고;
    상기 제2 공간의 상기 부분들 중 어느 부분이 상기 변환된 경계 박스와 교차하는지를 결정하고; 그리고
    상기 변환된 경계 박스와 교차하는 상기 제2 공간의 하나 이상의 부분들에 대해서만 상기 제1 프리미티브를 프로세싱하도록
    추가로 구성되는, 장치.
  4. 제1항에 있어서,
    상기 변환 파라미터들에 기초하여 그리고 상기 제2 공간의 상기 상이한 부분들에 대한 상이한 리샘플링 레이트들을 사용하여, 디스플레이 공간 내의 디스플레이를 위해 상기 단편 데이터를 리샘플링하도록 구성된 리샘플링 회로부를 추가로 포함하는, 장치.
  5. 제1항에 있어서,
    상기 변환 파라미터들은 투사적(projective) 변환을 위한 파라미터들인, 장치.
  6. 제1항에 있어서,
    상기 장치는 사용자의 시선 방향에 기초하여 상기 변환 파라미터들 중 하나 이상을 결정하도록 구성되는, 장치.
  7. 제1항에 있어서,
    상기 장치는 그래픽 장면 내의 카메라 위치에 기초하여 상깅 변환 파라미터들 중 하나 이상을 결정하도록 구성되는, 장치.
  8. 제1항에 있어서,
    상기 그래픽 회로부는, 타일-기반 지연 렌더링을 사용하여 그래픽 장면들을 렌더링하도록 구성되는, 장치.
  9. 제1항에 있어서,
    상기 그래픽 회로부는: 상기 가상 공간 내의 하나 이상의 섀도우(shadow) 맵들의 좌표들을 상기 제2 공간 내의 좌표들로 변환하도록 추가로 구성되고,
    상기 변환은 상기 가상 공간 내의 상기 하나 이상의 섀도우 맵들의 상이한 부분들이 상이한 샘플 레이트들을 갖도록 상기 제2 공간 내의 상기 하나 이상의 섀도우 맵들의 상이한 부분들에 대한 상이한 변환 파라미터들을 사용하는, 장치.
  10. 제1항에 있어서,
    하나 이상의 카메라들; 및
    하나 이상의 디스플레이 디바이스들을 더 포함하는, 장치.
  11. 방법으로서,
    그래픽 회로부에 의해, 가상 공간 내의 프리미티브들의 좌표들을 포함하는 프리미티브 데이터에 액세스하는 단계;
    상기 그래픽 회로부에 의해, 변환 파라미터들을 특정하는 그래픽 프로그램의 하나 이상의 명령어들을 실행하는 단계;
    상기 그래픽 회로부에 의해, 제2 공간의 상이한 부분들에 대한 상이한 스케일 팩터 값들 및 상이한 오프셋 값들을 포함하는, 상기 제2 공간의 상이한 부분들에 대한 상이한 변환 파라미터들을, 상기 제2 공간의 각자의 부분들에 대응하는 하나 이상의 레지스터들의 각자의 세트들에 저장하는 단계;
    상기 프리미티브들의 래스터화 이전에, 상기 그래픽 회로부가, 상기 제2 공간의 상이한 부분들에 대해 상기 레지스터들의 상이한 세트들에 저장된 상기 상이한 변환 파라미터들을 사용하는 것을 포함하여, 상기 저장된 변환 파라미터들에 기초하여 상기 가상 공간 내의 프리미티브들의 좌표들을 상기 제2 공간 내의 프리미티브들의 좌표들로 변환하는 단계;
    상기 그래픽 회로부에 의해, 단편 데이터를 생성하기 위해 상기 제2 공간 내의 상기 프리미티브 좌표들에 기초하여 상기 프리미티브들을 래스터화하는 단계 ― 상기 변환 동안 상기 상이한 변환 파라미터들의 사용은 상기 가상 공간의 상이한 부분들이 상이한 샘플 레이트들에서 샘플링되게 함 ―; 및
    상기 그래픽 회로부에 의해, 픽셀 속성들을 결정하기 위해 상기 단편 데이터의 적어도 일부분을 프로세싱하는 단계를 포함하는, 방법.
  12. 제11항에 있어서,
    상기 그래픽 회로부에 의해, 동작 환경에 대한 환경 파라미터에서의 검출된 변화에 기초하여 상기 변환 파라미터들을 변경하는 단계를 더 포함하는, 방법.
  13. 제11항에 있어서,
    상기 그래픽 회로부에 의해, 상기 가상 공간 내의 제1 프리미티브에 대한 경계 박스를 결정하는 단계;
    상기 그래픽 회로부에 의해, 상기 변환 파라미터들에 기초하여 상기 가상 공간 내의 상기 경계 박스의 좌표들을 상기 제2 공간 내의 변환된 경계 박스의 좌표들로 변환하는 단계;
    상기 그래픽 회로부에 의해, 상기 제2 공간의 상기 부분들 중 어느 부분이 상기 변환된 경계 박스와 교차하는지를 결정하는 단계; 및
    상기 그래픽 회로부에 의해, 상기 변환된 경계 박스와 교차하는 상기 제2 공간의 하나 이상의 부분들에 대해서만 상기 제1 프리미티브를 프로세싱하는 단계를 더 포함하는, 방법.
  14. 제11항에 있어서,
    상기 방법은, 상기 가상 공간 내의 하나 이상의 섀도우 맵들의 상이한 부분들이 상이한 샘플 레이트들을 갖도록, 상기 그래픽 회로부에 의해, 상기 제2 공간 내의 상기 하나 이상의 섀도우 맵들의 상이한 부분들에 대한 상이한 변환 파라미터들을 사용하여, 상기 가상 공간 내의 상기 하나 이상의 섀도우 맵들의 좌표들을 상기 제2 공간 내의 좌표들로 변환하는 단계를 더 포함하는, 방법.
  15. 설계에 따른 회로를 생성하기 위해 설계 정보를 사용하도록 구성되는 반도체 제조 시스템에 의해 인식되는 포맷으로 하드웨어 집적 회로의 적어도 일부분의 설계를 특정하는 상기 설계 정보를 저장하는 비일시적 컴퓨터 판독가능 저장 매체로서,
    그래픽 회로부를 포함하고,
    상기 그래픽 회로부는:
    가상 공간 내의 프리미티브들의 좌표들을 포함하는 프리미티브 데이터에 액세스하고;
    제2 공간의 상이한 부분들에 대한 상이한 스케일 팩터 값들 및 상이한 오프셋 값들을 포함하는, 상기 제2 공간의 상이한 부분들에 대한 상이한 변환 파라미터들을 특정하는 그래픽 프로그램의 하나 이상의 명령어들의 실행에 기초하여, 변환 파라미터들을 수신하고;
    상기 제2 공간의 각자의 부분들에 대응하는 하나 이상의 레지스터들의 각자의 세트들에, 상기 수신된 변환 파라미터들을 저장하고;
    상기 프리미티브들의 래스터화 이전에, 상기 제2 공간의 상이한 부분들에 대해 상기 레지스터들의 상이한 세트들에 저장된 상기 상이한 변환 파라미터들을 사용하는 것을 포함하여, 상기 저장된 변환 파라미터들에 기초하여 상기 가상 공간 내의 프리미티브들의 좌표들을 상기 제2 공간 내의 프리미티브들의 좌표들로 변환하고;
    단편 데이터를 생성하기 위해 상기 제2 공간 내의 상기 프리미티브 좌표들에 기초하여 상기 프리미티브들을 래스터화하고 ― 상기 변환 동안 상기 상이한 변환 파라미터들의 사용은 상기 가상 공간의 상이한 부분들이 상이한 샘플 레이트들에서 샘플링되게 함 ―; 그리고
    픽셀 속성들을 결정하기 위해 상기 단편 데이터의 적어도 일부분을 프로세싱하도록
    구성되는, 비일시적 컴퓨터 판독가능 저장 매체.
  16. 제15항에 있어서,
    상기 회로는, 상기 회로를 포함하는 디바이스가 사용되는 환경에 대한 환경 파라미터에서의 검출된 변화에 기초하여 상기 변환 파라미터들을 변경하도록 구성되는, 비일시적 컴퓨터 판독가능 저장 매체.
  17. 제15항에 있어서,
    상기 그래픽 회로부는:
    상기 가상 공간 내의 제1 프리미티브에 대한 경계 박스를 결정하고;
    상기 변환 파라미터들에 기초하여 상기 가상 공간 내의 상기 경계 박스의 좌표들을 상기 제2 공간 내의 변환된 경계 박스의 좌표들로 변환하고;
    상기 제2 공간의 상기 부분들 중 어느 부분이 상기 변환된 경계 박스와 교차하는지를 결정하고; 그리고
    상기 변환된 경계 박스와 교차하는 상기 제2 공간의 하나 이상의 부분들에 대해서만 상기 제1 프리미티브를 프로세싱하도록
    추가로 구성되는, 비일시적 컴퓨터 판독가능 저장 매체.
  18. 제15항에 있어서,
    상기 회로는:
    상기 변환 파라미터들에 기초하여 그리고 상기 제2 공간의 상기 상이한 부분들에 대한 상이한 리샘플링 레이트들을 사용하여, 디스플레이 공간 내의 디스플레이를 위해 상기 단편 데이터를 리샘플링하도록
    추가로 구성되는,
    비일시적 컴퓨터 판독가능 저장 매체.
  19. 제15항에 있어서,
    상기 회로는, 그래픽 콘텐츠가 렌더링되는 것에 기초하여 상기 변환 파라미터들 중 하나 이상을 결정하도록 구성되는, 비일시적 컴퓨터 판독가능 저장 매체.
  20. 제15항에 있어서,
    상기 그래픽 회로부는: 상기 가상 공간 내의 하나 이상의 섀도우 맵들의 좌표들을 상기 제2 공간 내의 좌표들로 변환하도록 추가로 구성되고,
    상기 변환은 상기 가상 공간 내의 상기 하나 이상의 섀도우 맵들의 상이한 부분들이 상이한 샘플 레이트들을 갖도록 상기 제2 공간 내의 상기 하나 이상의 섀도우 맵들의 상이한 부분들에 대한 상이한 변환 파라미터들을 사용하는, 비일시적 컴퓨터 판독가능 저장 매체.
KR1020207008840A 2017-09-29 2018-09-17 구성가능한 변환 파라미터들을 갖는 다중 공간 렌더링 KR102338831B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762565415P 2017-09-29 2017-09-29
US62/565,415 2017-09-29
US16/130,265 US10755383B2 (en) 2017-09-29 2018-09-13 Multi-space rendering with configurable transformation parameters
US16/130,265 2018-09-13
PCT/US2018/051325 WO2019067245A1 (en) 2017-09-29 2018-09-17 RENDERED ON MULTIPLE SPACES WITH CONFIGURABLE TRANSFORMATION PARAMETERS

Publications (2)

Publication Number Publication Date
KR20200040883A KR20200040883A (ko) 2020-04-20
KR102338831B1 true KR102338831B1 (ko) 2021-12-13

Family

ID=65896804

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207008840A KR102338831B1 (ko) 2017-09-29 2018-09-17 구성가능한 변환 파라미터들을 갖는 다중 공간 렌더링

Country Status (8)

Country Link
US (2) US10755383B2 (ko)
JP (1) JP7052023B2 (ko)
KR (1) KR102338831B1 (ko)
CN (1) CN111133475B (ko)
DE (1) DE112018004343T5 (ko)
GB (1) GB2581603B (ko)
TW (2) TWI771653B (ko)
WO (1) WO2019067245A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019082510A1 (ja) 2017-10-23 2019-05-02 ソニー株式会社 表示制御装置、ヘッドマウントディスプレイ、表示制御方法およびコンピュータプログラム
CN115842907A (zh) * 2018-03-27 2023-03-24 京东方科技集团股份有限公司 渲染方法、计算机产品及显示装置
US10553012B2 (en) * 2018-04-16 2020-02-04 Facebook Technologies, Llc Systems and methods for rendering foveated effects
US11113867B1 (en) * 2018-11-02 2021-09-07 Facebook Technologies, Llc Display engine for post-rendering processing
CN110335360B (zh) * 2019-05-24 2020-12-25 深圳大学 三维元素布局可视化方法和装置
KR20210012095A (ko) * 2019-07-23 2021-02-03 삼성전자주식회사 이미지 데이터의 레이어를 블렌딩하기 위한 전자 장치
JP7392105B2 (ja) * 2019-07-28 2023-12-05 グーグル エルエルシー 没入型ビデオコンテンツをフォービエイテッドメッシュを用いてレンダリングするための方法、システム、および媒体
US20210192681A1 (en) * 2019-12-18 2021-06-24 Ati Technologies Ulc Frame reprojection for virtual reality and augmented reality
WO2021182126A1 (ja) * 2020-03-09 2021-09-16 ソニーグループ株式会社 情報処理装置、情報処理方法、および記録媒体
US11423520B2 (en) * 2020-10-30 2022-08-23 Facebook Technologies, Llc. Distortion-corrected rasterization
GB2600944B (en) * 2020-11-11 2023-03-01 Sony Interactive Entertainment Inc Image rendering method and apparatus
US11562531B1 (en) * 2022-07-28 2023-01-24 Katmai Tech Inc. Cascading shadow maps in areas of a three-dimensional environment

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080309660A1 (en) * 2007-06-12 2008-12-18 Microsoft Corporation Three dimensional rendering of display information

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6717578B1 (en) 1998-02-17 2004-04-06 Sun Microsystems, Inc. Graphics system with a variable-resolution sample buffer
US6359619B1 (en) * 1999-06-18 2002-03-19 Mitsubishi Electric Research Laboratories, Inc Method and apparatus for multi-phase rendering
US8717423B2 (en) 2005-05-09 2014-05-06 Zspace, Inc. Modifying perspective of stereoscopic images based on changes in user viewpoint
IL174737A (en) * 2006-04-03 2014-12-31 Camero Tech Ltd Device and method for visualizing volume in broadband radar
US8217962B2 (en) * 2009-01-29 2012-07-10 Microsoft Corporation Single-pass bounding box calculation
CN101587596A (zh) * 2009-06-26 2009-11-25 上海大学 光刻胶显影过程三维模拟可视化方法
CN101763636B (zh) * 2009-09-23 2012-07-04 中国科学院自动化研究所 视频序列中的三维人脸位置和姿态跟踪的方法
US8669999B2 (en) * 2009-10-15 2014-03-11 Nvidia Corporation Alpha-to-coverage value determination using virtual samples
US9147270B1 (en) * 2011-06-24 2015-09-29 Nvidia Corporation Bounding plane-based techniques for improved sample test efficiency in image rendering
JP5921102B2 (ja) * 2011-07-19 2016-05-24 株式会社東芝 画像処理システム、装置、方法及びプログラム
KR101926570B1 (ko) * 2011-09-14 2018-12-10 삼성전자주식회사 포스트 프레그먼트 쉐이더를 사용하는 그래픽 처리 방법 및 장치
US10242481B2 (en) * 2012-03-15 2019-03-26 Qualcomm Incorporated Visibility-based state updates in graphical processing units
US8738826B2 (en) * 2012-06-08 2014-05-27 Apple Inc. System and method for display mirroring
US9830741B2 (en) * 2012-11-07 2017-11-28 Nvidia Corporation Setting downstream render state in an upstream shader
US9478066B2 (en) * 2013-03-14 2016-10-25 Nvidia Corporation Consistent vertex snapping for variable resolution rendering
WO2015144209A1 (en) * 2014-03-25 2015-10-01 Metaio Gmbh Method and system for representing a virtual object in a view of a real environment
US9905046B2 (en) * 2014-04-03 2018-02-27 Intel Corporation Mapping multi-rate shading to monolithic programs
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
US9710881B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Varying effective resolution by screen location by altering rasterization parameters
US10438312B2 (en) * 2014-04-05 2019-10-08 Sony Interactive Entertainment LLC Method for efficient re-rendering objects to vary viewports and under varying rendering and rasterization parameters
US9978171B2 (en) * 2014-07-29 2018-05-22 Nvidia Corporation Control of a sample mask from a fragment shader program
US10096086B2 (en) * 2014-09-10 2018-10-09 Nvidia Corporation Enhanced anti-aliasing by varying sample patterns spatially and/or temporally
US9508121B2 (en) * 2015-01-14 2016-11-29 Lucidlogix Technologies Ltd. Method and apparatus for controlling spatial resolution in a computer system by rendering virtual pixel into physical pixel
GB2534225B (en) * 2015-01-19 2017-02-22 Imagination Tech Ltd Rendering views of a scene in a graphics processing unit
US10684485B2 (en) 2015-03-06 2020-06-16 Sony Interactive Entertainment Inc. Tracking system for head mounted display
US20160284124A1 (en) * 2015-03-23 2016-09-29 Kenneth Todd Riddleberger Three-Dimensional Visual Functional Interactivity
US9607428B2 (en) 2015-06-30 2017-03-28 Ariadne's Thread (Usa), Inc. Variable resolution virtual reality display system
US10127725B2 (en) 2015-09-02 2018-11-13 Microsoft Technology Licensing, Llc Augmented-reality imaging
US10726619B2 (en) 2015-10-29 2020-07-28 Sony Interactive Entertainment Inc. Foveated geometry tessellation
GB2546286B (en) * 2016-01-13 2020-02-12 Sony Interactive Entertainment Inc Apparatus and method of image rendering
US10102668B2 (en) * 2016-05-05 2018-10-16 Nvidia Corporation System, method, and computer program product for rendering at variable sampling rates using projective geometric distortion

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080309660A1 (en) * 2007-06-12 2008-12-18 Microsoft Corporation Three dimensional rendering of display information

Also Published As

Publication number Publication date
CN111133475A (zh) 2020-05-08
JP7052023B2 (ja) 2022-04-11
TWI771653B (zh) 2022-07-21
TW201915937A (zh) 2019-04-16
US10755383B2 (en) 2020-08-25
KR20200040883A (ko) 2020-04-20
JP2020535521A (ja) 2020-12-03
GB2581603A (en) 2020-08-26
TWI686769B (zh) 2020-03-01
WO2019067245A1 (en) 2019-04-04
US20200388007A1 (en) 2020-12-10
US20190102865A1 (en) 2019-04-04
TW202046238A (zh) 2020-12-16
GB2581603B (en) 2022-08-03
US11113788B2 (en) 2021-09-07
GB202004798D0 (en) 2020-05-13
CN111133475B (zh) 2023-11-07
DE112018004343T5 (de) 2020-05-14

Similar Documents

Publication Publication Date Title
KR102338831B1 (ko) 구성가능한 변환 파라미터들을 갖는 다중 공간 렌더링
US11024007B2 (en) Apparatus and method for non-uniform frame buffer rasterization
US11823317B2 (en) Single pass rendering for head mounted displays
TWI592902B (zh) 來自片段著色器程式之樣本遮罩的控制
TWI645371B (zh) 在上游著色器內設定下游著色狀態
CN110998665B (zh) 用于图形处理的穿通技术
WO2011033696A1 (ja) 画像処理装置、及び画像処理方法
US11997306B2 (en) Adaptive pixel sampling order for temporally dense rendering
US9530237B2 (en) Interpolation circuitry and techniques for graphics processing
US6867778B2 (en) End point value correction when traversing an edge using a quantized slope value
US10621782B1 (en) Sub-patch techniques for graphics tessellation
JP4419480B2 (ja) 画像処理装置およびその方法

Legal Events

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