CN109413403A - 用于头戴式显示器的单通道渲染 - Google Patents
用于头戴式显示器的单通道渲染 Download PDFInfo
- Publication number
- CN109413403A CN109413403A CN201810897111.5A CN201810897111A CN109413403A CN 109413403 A CN109413403 A CN 109413403A CN 201810897111 A CN201810897111 A CN 201810897111A CN 109413403 A CN109413403 A CN 109413403A
- Authority
- CN
- China
- Prior art keywords
- image
- segment
- integrated circuit
- geometry
- transformation
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 97
- 230000009466 transformation Effects 0.000 claims abstract description 67
- 238000009877 rendering Methods 0.000 claims abstract description 52
- 230000003287 optical effect Effects 0.000 claims abstract description 17
- 238000012545 processing Methods 0.000 claims description 57
- 238000004519 manufacturing process Methods 0.000 claims description 55
- 230000008569 process Effects 0.000 claims description 21
- 238000003860 storage Methods 0.000 claims description 19
- 230000015654 memory Effects 0.000 description 38
- 230000006870 function Effects 0.000 description 14
- 230000004048 modification Effects 0.000 description 13
- 238000012986 modification Methods 0.000 description 13
- 230000008859 change Effects 0.000 description 8
- 238000013507 mapping Methods 0.000 description 8
- 239000011159 matrix material Substances 0.000 description 8
- 238000004590 computer program Methods 0.000 description 6
- 238000007781 pre-processing Methods 0.000 description 6
- 238000004040 coloring Methods 0.000 description 5
- 230000006872 improvement Effects 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 210000003128 head Anatomy 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000000844 transformation Methods 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 241000226585 Antennaria plantaginifolia Species 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011038 discontinuous diafiltration by volume reduction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000004886 head movement Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 201000003152 motion sickness Diseases 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000001259 photo etching Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000005086 pumping Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000036299 sexual function Effects 0.000 description 1
- 238000010008 shearing Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/04—Context-preserving transformations, e.g. by using an importance map
- G06T3/047—Fisheye or wide-angle transformations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/017—Head mounted
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/017—Head mounted
- G02B27/0172—Head mounted characterised by optical features
-
- G—PHYSICS
- G03—PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
- G03B—APPARATUS OR ARRANGEMENTS FOR TAKING PHOTOGRAPHS OR FOR PROJECTING OR VIEWING THEM; APPARATUS OR ARRANGEMENTS EMPLOYING ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ACCESSORIES THEREFOR
- G03B21/00—Projectors or projection-type viewers; Accessories therefor
- G03B21/14—Details
- G03B21/147—Optical correction of image distortions, e.g. keystone
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
- G06T15/205—Image-based rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/18—Image warping, e.g. rearranging pixels individually
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/11—Region-based segmentation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/30—Image reproducers
- H04N13/332—Displays for viewing with the aid of special glasses or head-mounted displays [HMD]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/30—Image reproducers
- H04N13/332—Displays for viewing with the aid of special glasses or head-mounted displays [HMD]
- H04N13/344—Displays for viewing with the aid of special glasses or head-mounted displays [HMD] with head-mounted left-right displays
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/0101—Head-up displays characterised by optical features
- G02B2027/014—Head-up displays characterised by optical features comprising information/image processing systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Optics & Photonics (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computing Systems (AREA)
- Geometry (AREA)
- Image Processing (AREA)
- Processing Or Creating Images (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
本申请公开了用于头戴式显示器的单通道渲染。描述了一种渲染3D场景的几何结构以用于在非标准投影显示器上显示的方法。该方法包括:将3D场景的几何结构投影到2D投影平面中,其中在投影平面中限定图像区域;使用变换将几何结构从投影平面映射到图像空间中,其中为每个图像区域定义相应的变换;以及在图像空间中渲染几何结构,以确定要在非标准投影显示器上显示的图像的图像值。这些变换被配置用于将几何结构映射到图像空间中,以便抵消由非标准投影显示器的光学装置引入的失真。
Description
背景
头戴式显示器(HMD)是可佩戴的显示设备,其提供靠近佩戴者的一个或两个眼睛的显示表面。它们通常用于为佩戴者提供沉浸式虚拟现实或增强现实体验。显示表面与佩戴者眼睛的紧密程度和/或显示器与用户头部的物理附接与在离观看者眼睛许多厘米(或更远)的监视器或电视屏幕上渲染图形相比引入了额外的挑战。例如,如果检测到头部运动和显示对应于新观看方向的更新的渲染图像之间的等待时间太长,则可能导致佩戴者经历晕动病。
第二个问题是由于希望为每只眼睛提供宽视场。为了以成本有效且符合人体工程学的方式实现这一点,并且也为了调整图像的感知聚焦深度距离,透镜或透镜系统通常放置在每只眼睛和HMD的显示屏之间。这通常导致需要将“失真的”图像(即,相对于通常由图形光栅化系统或者甚至例如消费者相机产生的图像失真)发送到显示器。透镜消除了这种失真,从而产生了由眼睛看到的图像。
下面描述的实施例仅作为示例被提供且不是解决对于头戴式显示器的已知图形处理系统的任何或所有缺点的实现的限制。
概述
提供本概述来以简化形式引入在以下详细描述中将进一步描述的精选的概念。本概述不旨在标识出要求保护的主题的关键特征或必要特征,亦不旨在用于限定要求保护的主题的范围。
描述了一种渲染3D场景的几何结构以用于在非标准投影显示器上显示的方法。该方法包括:将3D场景的几何结构投影到2D投影平面中,其中在投影平面中限定图像区域;使用变换将几何结构从投影平面映射到图像空间中,其中为每个图像区域定义相应的变换;以及在图像空间中渲染几何结构,以确定要在非标准投影显示器上显示的图像的图像值。这些变换被配置用于将几何结构映射到图像空间中,以便抵消由非标准投影显示器的光学装置引入的失真。
可选地,变换是线性变换。
可选地,图像区域是图块。
可选地,投影平面中的图像区域是失真图块,并且对于图像区域的每一个的相应变换将图像区域映射到图像空间中的未失真图块。
可选地,图像区域是半图块。
可选地,该方法还包括将所确定的图像的图像值输出到帧缓冲器。
可选地,非标准投影显示器是头戴式显示器。
可选地,将3D场景的几何结构投影到2D投影平面包括将图像空间中的像素细分成多个图像区域,每个图像区域包括一组像素。
可选地,使用变换将几何结构从投影平面映射到图像空间包括对图像区域中的每个顶点应用线性变换以将顶点位置从图像空间映射到投影平面。
可选地,对图像区域中的每个顶点应用线性变换以将顶点位置从图像空间映射到投影平面包括对图像区域中的每个顶点将线性变换应用到投影平面中的X坐标和Y坐标,并且保持其他顶点属性不变。
可提供一种图形处理系统,其被配置成渲染3D场景的几何结构以用于在非标准投影显示器上显示,该图形处理系统包括被布置为将3D场景的几何结构投影到2D投影平面中的平铺逻辑,其中在投影平面中限定图像区域。渲染逻辑,其可被布置成使用变换将几何结构从投影平面映射到图像空间,其中为每个图像区域定义相应的变换,并且在图像空间中渲染几何结构以确定要在非标准投影显示器上显示的图像的图像值。这些变换被配置用于将几何结构映射到图像空间中,以便抵消由非标准投影显示器的光学装置引入的失真。
可选地,对于图形处理系统,变换是线性变换。
可选地,对于图形处理系统,图像区域是图块。
可选地,对于图形处理系统,投影平面中的图像区域是失真图块,其中对于图像区域的每一个的相应变换将图像区域映射到图像空间中的未失真图块。
可选地,对于图形处理系统,图像区域是半图块。
可选地,图形处理系统还包括帧缓冲器,并且渲染逻辑还被布置为将所确定的图像的图像值输出到帧缓冲器。
可选地,非标准投影显示器是头戴式显示器。
可选地,图形处理系统还包括存储器,该存储器被布置成存储定义变换的多个变换参数,每个线性变换与图像空间中的一组像素相关联,并且定义图像空间和投影平面之间的像素的变换。
可选地,图形处理系统被配置为执行上述方法。
可以在集成电路上的硬件中体现本文描述的图形处理单元。可以提供一种在集成电路制造系统处制造图形处理单元和/或包括图形处理单元的图形处理系统的方法。可以提供集成电路定义数据集,当其在集成电路制造系统中处理时,将系统配置为制造图形处理单元和/或包括图形处理单元的图形处理系统。可以提供一种其上存储有图形处理单元和/或包括图形处理单元的图形处理系统的计算机可读描述的非暂时性计算机可读存储介质,当其在集成电路制造系统中处理时使得集成电路制造系统制造体现图形处理单元和/或包括图形处理单元的图形处理系统的集成电路。
可以提供一种集成电路制造系统,其包括:非暂时性计算机可读存储介质,其上存储有图形处理单元和/或包括图形处理单元的图形处理系统的计算机可读描述;布局处理系统,其被配置为处理计算机可读描述,以便生成体现图形处理单元和/或包括图形处理单元的图形处理系统的集成电路的电路布局描述;以及集成电路生成系统,其被配置为根据电路布局描述制造图形处理单元和/或包括图形处理单元的图形处理系统。
可以提供用于执行本文中所描述的任何方法的计算机程序代码。可提供其上储存有计算机可读指令的非暂时性计算机可读储存介质,该计算机可读指令在计算机系统处被执行时使计算机系统执行本文中所描述的任何方法。
如对技术人员将明显的是,以上特征可酌情进行组合,并且可与本文中所描述的示例的任意方面组合。
附图说明
现在将参照附图对示例进行详细描述,在附图中:
图1是示出标准非头戴式显示器和头戴式显示器之间的图形的投影的差异的示意图;
图2是对于头戴式显示器的图形处理系统的示意图;
图3A和图3B示出了图2中所示的图形处理系统中的渲染过程的图形表示;
图4示出图形处理系统和头戴式显示器的示意图;
图5是图4的图形处理系统中所示的图形处理单元的示意图;
图6是可以由图5所示的图形处理单元实现的基于图块的渲染的修改方法的流程图;
图7A-7F示出了根据图6的方法的渲染过程的图形表示;以及
图8示出了用于生成体现诸如图4和图5中所示的图形处理单元或系统的集成电路的集成电路制造系统。
附图图示了不同的示例。技术人员将认识到,图中所示出的元件边界(例如,框、框的组或其他形状)表示边界的一个示例。在一些示例中可以是,一个元件可以被设计为多个元件,或者多个元件可被设计为一个元件。在适当情况下,共同的参考数字在整个附图中用于指示类似的特征。
详细描述
以下的描述通过示例的方式来呈现,以使本领域技术人员能够做出和使用本发明。本发明不限于本文中所描述的实施例,并且对所公开的实施例的各种修改对于本领域技术人员将是明显的。
现在将仅通过示例来对实施例进行描述。
图1示出了标准非头戴式显示器(例如,监视器、电视机、智能手机或平板电脑)和头戴式显示器(HMD)之间的图形的投影的差异。对于标准的非HMD显示器,图形被投影到远离观看者的眼睛104的显示表面102上,并且由观看者直接观看。相反,在HMD 105中,显示表面106靠近观看者的眼睛104(例如,离观看者的眼睛小于10cm),并且通过光学装置108观看,该光学装置108是HMD 105的一部分并且包括一个或更多个透镜。光学装置108可以使所观看到的图像失真,使得在HMD的佩戴者看来,即使显示表面106可以是平面的并且在一些示例中相对较小(与佩戴者头部的尺寸相比),该图像也似乎填充了他们视场的相当一部分(如果不是全部)。
为了使图像在通过HMD的光学装置108观看时正确地显示(例如,使得图像提供广角视图),作为渲染操作的一部分,投影的图像(其也可称为显示的图像)被预失真,并且这可在由图形处理单元(GPU)执行的第二渲染通道中实现,如可参考图2(其示出图形处理系统200)和图3A和图3B(其示出渲染过程的图形表示)所描述的。如图2所示,由GPU 21接收的数据(箭头201)利用标准投影在第一通道中渲染(箭头202),例如,使得渲染的场景适于在标准的非HMD显示器上显示(例如,场景被渲染到表面102上),并且输出被存储在帧缓冲器存储器22中(箭头203)。图3A示出了在GPU 21中该第一通道渲染的结果301的图形表示,并且包括像素的区域的规则网格(在所示示例中编号为1-100)。然后,第二通道渲染使用从帧缓冲器存储器22读取(箭头204)的来自第一通道的数据由GPU执行(箭头205),并且该第二通道应用失真,并且失真结果303在图3B中图示。失真结果303的像素值可以通过采样中间帧缓冲器数据301并在采样的像素值之间滤波(例如内插)来确定。在图3B所示的示例中,所使用的失真是桶形失真(且因此第二通道结果303是桶形失真图像),并且当通过HMD的光学装置108观看时,它看起来没有失真304。第二通道渲染的输出存储在帧缓冲器存储器22中(箭头206)。显示供给器23(例如其可以实现为DAC)从帧缓冲器存储器22读出数据(箭头207)并将其输出到显示器(箭头208)。如果第一通道的结果301显示在显示器上并由HMD的佩戴者观看,则HMD中的光学装置108将产生广角结果302,如图3A中图示。图3A中所示的效果可以称为“枕形失真效应(pincushion effect)”。然而,当失真结果303显示在显示器上并由HMD的佩戴者观看时,(在第二通道渲染205中所应用的)失真和HMD中的光学装置108的组合产生未失真结果304,如图3B所示。如引入失真一样,第二通道渲染(箭头205)还可引入一些运动补偿(其由于两通道方法引起的额外等待时间可能是必需的)。
图2所示和上述的渲染方法可以被描述为对渲染过程的暴力方法,因为它使用GPU21,这是一个强大的处理设备,来实现两个渲染通道。然而,通过使用两个通道,GPU资源被占用更长时间以渲染单个帧,从而降低了图形处理系统的效率。此外,由于对中间帧缓冲器数据301的采样和(可能性能受限并且因此简单的)滤波,第二通道可能引入额外的不希望的图像退化,诸如模糊或混叠。
本文使用的术语“标准投影”是指用于在标准平面非HMD显示器上显示的像素数据的渲染,使得像素被布置在规则(x,y)网格上而没有任何失真(例如,如图3A中的示例301所示),例如针孔相机渲染的图像。在标准投影中,在世界空间中的直线投影到视图中的直线。
本文描述了一种为HMD或其他非标准投影显示器渲染失真图像的减少等待时间的方法。该方法导致在GPU上的单个渲染通道内自动引入几何失真(其也可描述为透镜补偿失真)。这减少了等待时间(因为没有执行第二渲染通道),并且提高了效率,这是因为a)GPU可以处理像素数据的下一帧而不是执行第二渲染通道,以及b)消除了对中间帧缓冲器的额外写入和读取。在GPU使用基于图块的渲染技术的情况下,本文描述的方法可以被认为是修改的基于图块的渲染方法;然而,如下所述,本文描述的方法也可以用于使用即时模式渲染的GPU。
在本文描述的修改的基于图块的渲染方法中,利用分段线性变化的坐标空间(例如,每个图块)来执行渲染,使得写入帧缓冲器的所得像素非常接近期望的失真结果303。在各种示例中,每个图块包含相同数量的像素(例如,32x32个像素),并且他们将显示器细分成规则网格;然而,在其他示例中,图块可以包含不同数量的像素和/或具有不同的尺寸和/或形状。然而,从世界空间到每个图块或图块的每个子集的映射(例如,一个或更多个线性变换)通常在图块之间变化。选择这些映射以便紧密匹配将由图2中的第二通道结果303产生的几何失真,而不需要在GPU中进行第二通道渲染,并且不需要显著的额外硬件。尽管图块在输出像素方面可以具有相同的尺寸,但是它们在投影平面(其可替代地称为相机投影平面或虚拟投影平面)中的覆盖区将不同。当失真结果图像(其类似于图3B中所示的结果303)显示在显示器上并由HMD的佩戴者观看时,(作为不同图块变换的结果引入的)失真和HMD中的光学装置的组合产生广角图像(例如,如图3B中图示)。
本文描述的修改的基于图块的渲染方法可以在图4所示的图形处理系统400中实现。图形处理系统400包括GPU 41、帧缓冲器存储器42和显示供给器43。GPU 41执行本文描述的修改的基于图块的渲染方法,并且由GPU 41生成的像素数据被存储在帧缓冲器存储器42中。显示供给器43从帧缓冲器存储器42读出数据并将其输出到显示器。图形处理系统400可以在头戴式显示器402内实现。HMD 402另外包括CPU 404、显示器406(在其上显示失真图像)、一个或更多个运动传感器408(用于检测用户头部的运动)、存储器410和光学装置108(例如,佩戴者通过其观看所显示的失真图像的一个或更多个透镜)。图4中的图形处理系统400中所示的显示供给器43可以是显示控制器(或显示流水线)的一部分。HMD 402还可以包括图4中未示出的其他设备,诸如输入(例如,手控制器、身体跟踪传感器和其他位置传感器、GPS传感器等),输出、扬声器和/或照相机。HMD的电子部件可以经由通信总线412彼此通信。由GPU 41用来执行坐标空间之间的映射的参数可以存储在存储器410中。
图5是更详细地示出了GPU 41的示意图。如图5所示,GPU 41利用存储器504的一部分,该部分可以是图4所示的存储器410的一部分或单独的存储器元件(图4中未示出)。GPU41包括预处理模块506、平铺单元508和渲染单元510。平铺单元508包括处理逻辑512和数据存储器514。图形处理系统400(且特别是GPU 41)被布置成使得在预处理模块506处接收描述由应用提供的图元(primitive)序列的图形数据。预处理模块506执行诸如几何处理的功能,包括剪切和剔除以去除不落入可见视图内的图元。预处理模块506还可以将图元投影到屏幕空间中。预处理模块506将图元输出到平铺单元508。
平铺单元508从预处理模块506接收图元,并确定在图形处理系统400的渲染空间的图块中的每个内存在哪些图元。图元可以在渲染空间的一个或更多个图块中。平铺单元508通过创建用于图块的显示列表来将图元分配给渲染空间的图块,其中用于图块的显示列表包括在图块中存在的图元的指示(即图元ID)。显示列表和图元从平铺单元508输出并存储在存储器504中。渲染单元510从存储器504中提取对于图块的显示列表和与该图块相关的图元,并对图元执行纹理化和/或着色,以确定可传递到帧缓冲器存储器42的渲染图像的像素颜色值。根据实现方式,渲染单元510可以在纹理化和/或着色之前执行隐藏表面移除(HSR),其移除在场景中隐藏的图元片段,或者对于也可以称为“Z测试”的隐藏图元(或其部分)的测试可以在纹理化和/或着色之后执行。在对图元片段执行纹理化和/或着色之前对图元片段执行HSR以便渲染场景的图形处理系统可以被称为“延迟渲染系统”;而在对图元片段执行纹理化和/或着色之后对图元片段执行HSR以便渲染场景的图形处理系统可以被称为“即时模式渲染系统”。
渲染单元510处理图块中每一个中的图元,并且当整个图像已经被渲染并存储在帧缓冲器存储器42中时,图像可以从图形处理系统400输出并显示在显示器406上(例如,数据由显示供给器43从帧缓冲器存储器42读出并输出到显示器406)。
图6是示出可以在图4和图5所示的图形处理系统400中实现的修改的基于图块的渲染方法的流程图。该方法包括标准几何处理和照明过程步骤,诸如在已知系统中的第一GPU通道202中出现的步骤,但是另外包括根据虚拟广角视图投影场景,确定对于给定显示器所需的映射失真,然后执行修改的平铺或像素组合过程(binning process)以及适配的渲染过程。该方法在下面参考图7A和图7B进行更详细地描述。
图6所示的修改的基于图块的渲染方法包括:将3D场景的几何结构投影到2D投影平面中,其中在投影平面中限定图像区域(块61),使用变换将几何结构从投影平面映射到图像空间中,其中为每个图像区域定义相应的变换(块62);以及在图像空间中渲染几何结构以确定要在非标准投影显示器上显示的图像的图像值(块63),其中,该变换被配置用于将几何结构映射到图像空间中,以便抵消由非标准投影显示器的光学装置引入的失真。该方法还可以包括将所确定的图像的图像值输出到帧缓冲器(块64)。
如图6所示,投影几何结构(在块61中)可以例如包括定义应用于几何结构,例如应用于图元的广角标准投影(块602)(其中术语“标准”是指投影类似于针孔透镜或直线透镜的事实)。该投影的两个示例在图7A和图7F中图示,其中图7A中所示的示例是比图7F中所示的更宽角度的示例。图像空间(或显示空间)702被分成多个图块(块603),并且在各种示例中且如图7B所示,图像空间702中的多个图块中的所有图块均具有相同的尺寸和形状(例如,32x32或32x16个像素)。然而,在其他示例中,图形空间702中的图块可以具有不同的形状和/或尺寸。然而,投影平面(或虚拟投影平面)704没有被分成相等形状或尺寸的图块(如图7B所示)。基于图像空间702和投影空间704之间的映射失真来确定投影平面中的图块的形状和尺寸。如上所述,映射失真被定义为紧密匹配使得图像当通过HMD的光学装置观看时被正确地显示(例如,未失真)而所需的几何失真。
图像空间702和投影平面704都被细分为相同数量的图块,并且图像空间中的图块和投影平面中的图块之间存在一一对应关系(如图7C所示)。
作为对图像空间和投影空间两者的细分的一部分(在块603中),通过应用映射失真的逆来确定投影平面704中的图像图块的边界。还为每个图块定义一个或更多个局部线性变换(如图7C中的箭头所示)。每个线性变换定义了在图像空间702和投影平面704之间如何修改(例如扭曲)图块或图块的一部分内的几何结构,并且取决于上述映射失真。在图7C所示的示例中,所有的图块都具有相同的尺寸;然而,在图7D所示的示例中,图像平面中的图块并非都具有相同的尺寸。
在图7C所示的示例中,存在对于每个图块定义的单个线性变换(如由图像空间702中的图块和投影平面704中的相应图块之间的单个箭头表示的),使得所应用的失真对于图块内的所有像素是相同的。然而,图7E中示出的示例对图块中的一个或更多个进行细分,使得存在多个不同的线性变换(例如,两个不同的线性变换),并且每个线性变换涉及图块的一部分(例如,图块的一半)。如图7E所示,在一些示例中,所有的图块都可以被细分(例如,示例710,其中在水平方向上有偶数个图块并且使用对称失真)。在其他示例中,可以存在一些未被细分的图块(例如,示例712、714,其中在水平方向上存在奇数个图块),例如,这是因为失真在那些图块中实际上是平面的(例如,由于对称性),和/或不是所有图块都可以以相同的方式被细分。
在确定了这些图像图块在虚拟投影平面中的边界(在块603中)之后,该方法还包括确定图元的投影是否与每个逆失真图块705(即投影平面704中的每个图块)相交(或可能相交),并且为每个图块形成指示在渲染给定图块时应该考虑哪些图元的显示列表(或其等效物)(块604)。图元可以与在虚拟广角视图(或虚拟广角投影)的坐标空间中指定的顶点坐标一起存储,从而允许相同的数据被图块中任一个引用,例如至少三个(x,y,深度)坐标。如上所述,图元可以在投影空间704的图块的一个或更多个中(例如,可以重叠),并且对于图块的显示列表(其可替换地称为控制列表或控制流)包括存在于图块中的图元的指示(即图元ID)。显示列表和图元从平铺单元508输出并存储在存储器504中。
可以以多种方式来执行对于哪些图元位于虚拟投影平面上的哪些失真图块的内部的确定(在块604中):第一示例是通过考虑失真框的角的最大值和最小值,并执行“完美平铺”方法,例如,如英国专利号GB2401522中所描述的来计算失真图块的轴对齐边界框。这是稍微保守的,因为边界框可能比原始失真图块稍大,但是在大多数情况下,a)尺寸的增加将会非常小,以及b)尺寸的这种增加导致不必要的图元被包括在列表中的概率很小。第二种非保守的示例方法是将失真图块视为凸四边形,并使用对于凸对象的相交的测试,诸如本领域已知的分离轴的方法。
在生成了显示列表(在块604中)之后,除了处理几何结构的方式之外,适配的渲染过程以与现有技术平铺(延迟或非延迟)系统近似相似的方式(例如,在块63-64或608-610中)处理图块。如图6所示,每个图块具有一个或更多个相关联的线性矩阵变换(例如,图7C的示例中的一个和图7E的示例中的两个),其采用在虚拟投影平面的坐标空间中指定(和存储)的几何结构,并且映射到对于图块的局部空间中(如在块603中生成的并且如图7C中的箭头所指示),使得对于图块内的像素,变换的几何结构与所需失真紧密匹配。在光栅化之前,将这些线性变换应用于给定图块中的任何几何结构(块62或606),例如,将图7A中所示的元素A和B变换到图块的屏幕坐标。
每图块(或每半图块,或更一般地,每图块部分)线性变换仅需要应用于几何结构的顶点的(在虚拟投影平面中的)X和Y坐标,例如,对于给定图块(或半图块或图块部分),可以对在虚拟投影平面704中表示的几何结构的顶点坐标[Xvpp,Yvpp]T执行以下矩阵乘法,以便确定显示空间702中的对应的顶点坐标[X图块_失真,Y图块_失真]T:
其中,六个“A”值定义了对于图块(或半图块或图块部分)执行几何失真以产生失真的几何结构的线性变换。其他顶点属性(例如投影的Z、逆W、纹理坐标、颜色等)不需要修改。存在为要变换的每个区域(例如,对于每个图块、半图块或图块部分)定义的A值的相应矩阵。对于每个图块(或更一般地,图块部分)的矩阵的A值可以存储在存储器(例如,查找表(LUT))中,诸如存储在存储器410或在GPU 41中。将A值存储在存储器中(例如存储在LUT中)意味着GPU可以通过将不同的A值加载到存储器中来适于调整所应用的失真,例如适应不同的光学装置。可选地,如果在设计时已知所需的变换(例如,如果在设计GPU时已知HMD的光学装置),则可以将对于每个图块(或更一般地,对于每个图块部分)的矩阵的A值硬编码到执行变换的固定功能电路中。
在替代方法中,可以存储完全变换的几何结果的每个图块部分列表。这样做的优点是,当数据被渲染系统读取时,消除了执行每图块部分变换的需要,但是缺点是存在于多个图块部分中的几何结构将被存储多次。
使用每图块单个变换方法(如图7C所示)导致比使用每图块多个线性变换(如图7E所示)更少的计算,例如存在于多个区域中的图元需要执行相应的多个计算;然而,如果分段失真太大,这可能产生一些可见的不连续性。为此,各种示例可以每图块使用两个(或更多个)不同的线性变换,其中每个线性变换应用于图块的分离的非重叠部分(例如,一半)内的几何结构。每图块使用多个线性变换以附加变换操作为代价来减少或消除几何不连续性;但是,由于变换过程只需要每顶点4次乘法和4次加法,因此在额外计算方面并不昂贵。
在各种示例中且如图7C所示,显示空间702中的每个图块具有相同的尺寸和形状,而在投影平面(也可称为渲染空间)704中,图块具有不同的尺寸和/或形状。然而,在其他示例中,显示空间702中的图块可以具有不同的尺寸和/或形状,如图7D所示。例如,在桶形失真示例中,图像的中心区域比外部更少失真,且因此如图7D所示可以在中心行和列中使用更大的图块(与朝向图像边缘使用的图块相比),从而减少所需的变换次数,而不会在图块边界处引入显著的几何不连续性。在各种示例中,包括图7C和图7D中所示的示例,图块的角部被共享以避免不连续性问题。
正是投影空间704和显示空间702之间的图块尺寸和/或形状的差异(例如,与显示空间702相比的投影空间704中的图块的拉伸和/或压缩)导致在GPU上的单个渲染通道内的失真的自动引入,而图7A-7E示出了投影空间704中的图块与显示空间702中的图块相比可以失真的方式的一个示例,在其他示例中,投影空间704中的图块可以以不同方式失真(当与显示空间702中的图块相比时)。
此外,虽然在图7A-F所示的示例中,引入的失真在垂直(y)方向和水平(x)方向上不同,但是在其他示例中,不同方向可以具有相同的失真。在细分投影空间704(在块603中)时使用的失真取决于HMD 402中的光学装置108的特性,使得HMD 402的佩戴者在通过光学装置108观看显示器406上的图像时看到(近似)未失真的广角图像。
投影空间704和显示空间702被细分成(在块603中)的图块的数量可以与在双渲染通道方法中使用的图块的数量相同(如上面参考图2所描述的)。然而,在其他示例中,投影空间704和显示空间702可以被细分成更大数量的图块(即,使得平均图块尺寸更小),并且这减少了在本文描述的修改的基于图块的渲染方法中的图块的拉伸/压缩的分段线性近似可能引入的任何失真。
在应用了变换之后(在块606中),例如在图5所示的渲染单元510中光栅化图块中的失真几何结构(块608)。
变换的应用(在块606中)可以被描述为坐标系之间的转换,例如在投影空间坐标(例如,投影空间704中的x,y坐标)和显示空间坐标(例如显示空间702中的x,y坐标)之间的转换。
变换(在块606中)可以例如是矩阵乘法,并且六个“A”值定义线性变换并且可以被称为缩放和偏移因子。可能存在因子中的一些(即,A值中的一些)为零的情况,且在这些情况下,可以通过消除冗余计算来实现适当的节省。例如,如果A01=A10=0,则对于每个图块有两个缩放因子(一个用于x轴,而一个用于y轴,在一些其他示例中,可以存在单个缩放因子Sg(即,在这样的示例中或者换句话说A00=A11和A01=A10=0),其中g是图块ID或索引,并且这些缩放因子可以例如存储在存储器410或另一个存储器元件中。偏移因子由A02和A12值给出。
在其中不使用矩阵乘法(如上所述)的各种示例中(在块606中),以下两个方程可替代地用于执行像素坐标的转换(在块606中):
其中,(xr,yr)是投影空间704中的像素的坐标,(xd,yd)是显示空间702中的像素的坐标,并且x0和y0是缩放常数(其可以为零)。这提供了其中投影空间704中的图块与显示空间702中的图块相比被线性拉伸/压缩的示例。
除了应用每图块或每图块部分变换(在块606中),在各种示例中,在此阶段可以另外应用附加的全局变换,例如通过在应用每图块或每图块部分变换之前将全局变换与它们中的每一个组合。这种全局变换可用于引入“晚期”运动补偿(例如,补偿当用户的头部在渲染几何结构所花费的时间中移动时的可能性),并且通过渲染比可显示的视场更大的视场,全局变换可基于输入到渲染单元510的更新的视图方向来调整实际显示的部分。另外,在失真位置(在投影平面704中)上的平铺操作(即,确定哪些对象,诸如图7A、图7F和图7B中所示的)以保守的方式实现,例如通过扩展失真图块的尺寸。
尽管在上述方法中,GPU 41中的平铺单元508生成显示列表,该显示列表包括对于存在于图块中的图元的一个或更多个图元标识符,但是在其他示例中,平铺单元508可以输出不同形式但可用于指示图元位于图块中的哪一个的数据。例如,对于每个图元,图块ID的列表可被生成并与指示图元所在的图块的列表一起存储。
通过使用本文所述的修改的基于图块的渲染方法,图形处理系统的总体效率得以提高,且渲染过程的等待时间得以减少,而不需要显著的额外硬件(例如,小的修改可在平铺单元和渲染单元中实现)或向计算中添加任何新顶点(例如,没有新的图元顶点和没有新的图块顶点)。此外,写入帧缓冲器存储器42的数据量减少(从图2和图4的比较中可以清楚地看出),这是因为GPU 41不将像素数据的相同帧两次写入帧缓冲器存储器,并且存储器总线上的数据量少得多,从而节省了功率。另外,通过使用本文描述的方法而不是通过GPU的两个通道,图像质量得到改善,例如这是因为通过GPU的第二通道应用滤波器来执行失真,并且这些滤波器将在一些区域中对图像进行过滤波(over filter)和/或在其他区域中对图像进行欠滤波(under filter),此外,通过使用本文描述的方法,实际渲染的分辨率更紧密匹配屏幕的任何部分中的期望分辨率(而不是在显示器的部分中具有太少或太多的分辨率,这影响图像质量和/或效率)。
图4中的图形处理系统400和图5中的GPU 41被示为包括多个功能块。这仅仅是示意性的,且并不旨在限定这些实体的不同逻辑元件之间的严格划分。能够以任何合适的方式提供每个功能块。应当理解,在本文描述为由GPU 41形成的中间值不需要在任何点处由GPU 41物理地生成,并且可以仅表示方便地描述由GPU 41在其输入端和输出端之间执行的处理的逻辑值。
尽管上面已经参考基于图块的渲染器描述了该方法,但是将该方法应用于更传统的“即时模式”渲染器也是可行的。在这样的系统中,每个引入的多边形像以前一样被变换成虚拟投影平面坐标。当每个多边形一次被处理一组像素(例如,扫描线跨度或矩形图块)时,首先将对于当前一组像素的适当变换(例如,基于上述矩阵乘法)应用于多边形,以产生针对该组像素进行光栅化的新的中间多边形。
此外,尽管不一定是有效的方法,但是也可以通过使用通过场景数据的多个通路来模拟该方法的行为,其中每个通路使用不同的变换并且使用模板测试和/或剪切平面来限制对图块或图块部分的渲染。
尽管以上参考HMD描述了图形处理系统和HDU,但是图形处理系统和HDU可替代地用于其他类型的投影系统,诸如包括引入某种失真的透镜的任何类型的投影系统。其他示例包括球幕(omnimax)投影或鱼眼投影系统。
可以在集成电路上的硬件中体现本文描述的图形处理系统。本文描述的图形处理系统可以被配置为执行本文所述的方法中的任一个。通常,以上所描述的功能、方法、技术或部件中的任一个都能够以软件、固件、硬件(例如,固定逻辑电路)或其任何组合来实现。本文可以使用术语“模块”、“功能”、“部件”、“元件”、“单元”、“块”和“逻辑”,以通常表示软件、固件、硬件或其任何组合。在软件实现的情况下,模块、功能、部件、元件、单元、块或逻辑表示程序代码,该程序代码当在处理器上执行时执行指定任务。本文中所描述的算法和方法可由执行代码的一个或更多个处理器执行,该代码使处理器执行该算法/方法。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器、以及可使用磁性、光学和其他技术来储存指令或其他数据的并可由机器访问的其他存储器设备。
如本文中所使用的术语计算机程序代码和计算机可读指令是指用于处理器的任何类型的可执行代码,包括以机器语言、解释语言或脚本语言表达的代码。可执行代码包括二进制代码、机器代码、字节码、定义集成电路的代码(诸如,硬件描述语言或网表)、以及以诸如C、Java或OpenCL的编程语言代码表达的代码。可执行代码可以是例如任何类型的软件、固件、脚本、模块或库,当其在虚拟机或其他软件环境下被适当地执行、处理、解释、编译、执行时,使支持可执行代码的计算机系统的处理器执行由代码指定的任务。
处理器、计算机或计算机系统可以是具有处理能力使得其可执行指令的任何类型的设备、机器或专用电路,或其集合或其部分。处理器可以是任何类型的通用处理器或专用处理器,诸如CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)、物理处理单元(PPU)、无线电处理单元(RPU)、数字信号处理器(DSP)、通用处理器(例如通用GPU)、微处理器、被设计为在CPU外部加速任务的任何处理单元等。计算机和计算机系统可以包括一个或更多个处理器。本领域中的技术人员将认识到,这样的处理能力被结合到很多不同的设备内,且因此术语“计算机”包括机顶盒、媒体播放器、数字无线电装置、PC、服务器、移动电话、个人数字助理和很多其它设备。
还旨在包含对如本文中所描述的硬件的配置进行限定的软件,诸如HDL(硬件描述语言)软件,如用于设计集成电路或用于配置可编程芯片所使用的,以执行期望功能。也就是说,可提供计算机可读存储介质,其具有在其上编码的以集成电路定义数据集的形式的计算机可读程序代码,其当在集成电路制造系统中被处理(例如,运行)时配置系统以制造配置成执行本文所述的任何方法的图形处理系统或制造包括本文所述的任何装置的图形处理系统。集成电路定义数据集可以例如是集成电路描述。
因此,可以提供在集成电路制造系统处制造如本文所述的图形处理系统的方法。此外,可以提供一种集成电路定义数据集,其在集成电路制造系统中被处理时使制造图形处理系统的方法被执行。
集成电路定义数据集可以是计算机代码的形式,例如,作为用于配置可编程芯片的网表、代码,作为定义适用于在任何等级的集成电路中制造的硬件的硬件描述语言,包括作为寄存器传送级(RTL)代码,作为诸如Verilog或VHDL的高等级电路表示,以及作为诸如OASIS(RTM)和GDSII的低等级电路表示。在逻辑上定义适用于在集成电路(诸如RTL)中的制造的硬件的较高等级的表示可在计算机系统处被处理,该计算机系统被配置成在软件环境的背景下生成集成电路的制造定义,包括电路元件的定义和用于将这些元件组合在一起以便生成由表示如此定义的集成电路的制造定义的规则。如软件在计算机系统处执行以便限定机器的通常情况,可以需要一个或更多个中间用户步骤(例如,提供命令、变量等),以便被配置为生成集成电路的制造定义的计算机系统执行对集成电路进行定义的代码,从而生成该集成电路的制造定义。
现在将参考图8描述在集成电路制造系统处理集成电路定义数据集以便配置该系统来制造如本文描述的图形处理单元或系统的示例。
图8示出被配置为制造如本文的任何示例中所描述的图形处理单元或系统的集成电路(IC)制造系统802的示例。具体地,IC制造系统802包括布局处理系统804和集成电路生成系统806。IC制造系统802配置成接收IC定义数据集(例如定义如在本文的任何例子中所述的图形处理系统),处理IC定义数据集,并根据IC定义数据集(例如其体现如在本文的任何示例子中所述的图形处理单元或系统)生成IC。对IC定义数据集的处理配置IC制造系统802以制造体现如在本文的任何例子中所述的图形处理单元或系统的集成电路。
布局处理系统804被配置为接收IC定义数据集并对其进行处理以确定电路布局。根据IC定义数据集确定电路布局的方法在本领域中是已知的,且例如可涉及合成RTL代码以确定例如在逻辑部件(例如,NAND、NOR、AND、OR、MUX和FLIP-FLOP部件)方面待生成的电路的门级表示。可通过确定逻辑部件的位置信息,根据电路的门级表示来确定电路布局。这可自动地或借助用户干预来完成,以便优化电路布局。当布局处理系统804确定电路布局时,它可将电路布局定义输出到IC生成系统806。电路布局定义可以是例如电路布局描述。
IC生成系统806根据电路布局定义生成IC,如在本领域中已知的。例如,IC生成系统806可实现半导体器件制造过程以生成IC,这可以涉及光刻和化学处理步骤的多步骤序列,在该多步骤序列期间,电子电路通常在由半导体材料制成的晶圆上被创建。电路布局定义可以是掩模的形式,该掩模可以在光刻过程中用于根据电路定义生成IC。可选地,被提供到IC生成系统806的电路布局定义可以是计算机可读代码的形式,IC生成系统806可使用该计算机可读代码来形成适当的掩模以在生成IC时使用。
由IC制造系统802执行的不同过程可以都在一个位置上例如由一方实现。可选地,IC制造系统802可以是分布式系统,使得过程中的一些可在不同的位置处被执行,并可由不同方执行。例如,步骤的一些:(i)合成表示IC定义数据集的RTL代码以便形成要生成的电路的门级表示;(ii)基于门级表示生成电路布局;(iii)根据电路布局形成掩膜;以及(iv)使用掩膜制造集成电路,可在不同位置和/或由不同方实施。
在其它示例中,在集成电路制造系统处对集成电路定义数据集的处理可配置系统以制造图形处理单元或系统,而无需处理IC定义数据集以便确定电路布局。例如,集成电路定义数据集可以定义可重配处理器(例如FPGA)的配置,且该数据集的处理可将IC制造系统配置为生成具有所定义的配置的可重配处理器(如,通过将配置数据加载到FPGA)。
在一些实施例中,集成电路制造定义数据集在集成电路制造系统中被处理时,可使集成电路制造系统生成如本文中所描述的设备。例如,集成电路制造系统以如上参照图8所描述的方式通过集成电路制造定义数据集的配置可使如本文中所描述的设备得以制造。
在一些示例中,集成电路定义数据集可包括软件,该软件在数据集中定义的硬件上运行或与在数据集处定义的硬件组合运行。在图8中所示的示例中,IC生成系统还可由集成电路定义数据集配置,以在制造集成电路时,根据在集成电路定义数据集中定义的程序代码将固件加载到该集成电路上,或以其他方式向集成电路提供程序代码用于与集成电路一起使用。
当与已知的实现进行比较时,在本申请中阐述的概念在设备、装置、模块和/或系统(以及本文中所实现的方法)中的实现可以引起性能改进。性能改进可以包括增加的计算性能、减少的延迟、增加的吞吐量和/或减少的功耗中的一个或更多个。在(例如,在集成电路中)制造这样的设备、装置、模块和系统期间,性能改进可以与物理实现相折衷,从而改进制造方法。例如,性能改进可以针对布局面积进行权衡,从而与已知的实现的性能匹配,但使用更少的硅。这可以例如通过以串行化方式重用功能块或在设备、装置、模块和/或系统的元件之间共享功能块来完成。相反,可以权衡在设备、装置、模块和系统的物理实现中产生改善(诸如减小的硅面积)的本申请中所阐述的概念以供改进性能。这可以通过例如在预定面积预算内制造模块的多个实例来完成。
本领域中的技术人员将认识到,用于存储程序指令的存储设备可分布在网络中。例如,远程计算机可存储被描述为软件的过程的示例。本地或终端计算机可访问远程计算机并下载软件的一部分或全部以运行程序。可选地,本地计算机可按需下载软件的片段或在本地终端处执行一些软件指令并在远程计算机(或计算机网络)处执行一些软件指令。本领域中的技术人员也将认识到,通过利用本领域中的技术人员已知的常规技术,软件指令的全部或一部分可由专用电路(例如DSP、可编程逻辑阵列等)实现。
本文所述的方法可以由配置有软件的计算机执行,软件是以存储在有形存储介质上的机器可读形式,例如以包括用于配置计算机来执行所述方法的组成部分的计算机可读程序代码的计算机程序的形式,或以包括适合于当程序在计算机上运行时执行本文所述的任何方法的所有步骤的计算机程序代码装置的计算机程序的形式,且其中计算机程序可以包括在计算机可读存储介质上。有形(或非暂时性)存储介质的示例包括磁盘、拇指驱动器、存储卡等,且并不包括传播的信号。软件可适合于在并行处理器或串行处理器上执行,使得方法步骤可以按任何适当的顺序或同时被执行。
本文所述的硬件部件可由具有在其上编码的计算机可读程序代码的非暂时性计算机可读存储介质生成。
存储在实现所公开的方面时使用的机器可执行数据的存储器可以是非暂时性介质。非暂时性介质可以是易失性的或非易失性的。易失性非暂时性介质的示例包括基于半导体的存储器,例如SRAM或DRAM。可用于实现非易失性存储器的技术的示例包括光学和磁性存储器技术、闪存、相变存储器、电阻式RAM。
对“逻辑”的特定提及指的是执行一种功能或多种功能的结构。逻辑的示例包括布置成执行那些功能的电路。例如,这样的电路可包括晶体管和/或在制造过程中可用的其它硬件元件。作为示例,这样的晶体管和/或其它元件可用于形成实现和/或包含存储器(例如寄存器、触发器或锁存器)、逻辑运算器(例如布尔运算)、数学运算器(例如加法器、乘法器或移位器)和互连的电路或结构。这样的元件可作为定制电路或标准单元库、宏或以其它抽象级被提供。可在特定的布置中将这样的元件互连。逻辑可包括固定功能的电路,且电路可被编程以执行一种功能或多种功能;这样的编程可从固件或软件更新或控制机构提供。被识别为执行一种功能的逻辑也可包括实现组成性功能或子过程的逻辑。在示例中,硬件逻辑具有实现固定函数运算或多个运算、状态机或过程的电路。
如对技术人员将明显的是,本文给出的任何范围或设备值可以被扩展或改变而不失去所寻求的效果。
将理解,上面描述的益处和优点可涉及一个实施例或可涉及多个实施例。实施例不限于解决任何或所有所陈述的问题的那些实施例或具有任何或全部所陈述的益处和优点的那些实施例。
对“一(a/an)”项目的任何提及指的是那些项目中的一个或更多个。术语“包括”在本文中用于意指包括所识别的方法块或元件,但这样的块或元件并不包括独有列表,且装置可包含额外的块或元件,并且方法可包含额外的操作或元件。此外,块、元件和操作本身并不是隐含地封闭的。
本文描述的方法的步骤可以按照任何适当的顺序被执行或在适当时同时被执行。在附图中的框之间的箭头示出方法步骤的一个示例顺序,但并不意欲排除其它顺序或多个步骤的并行执行。此外,单独的块可从任何方法删除而不偏离本文描述的主题的精神和范围。上面描述的任何示例的方面可以与所描述的其它示例中的任一个的方面组合以形成另外的示例,而不失去所寻求的效果。在附图的元件被示为由箭头连接的情况下,将认识到,这些箭头示出在元件之间的通信(包括数据和控制消息)的仅一个示例流。在元件之间的流可以在任一方向上或在两个方向上。
申请人特此独立地公开了本文中所描述的每个单独特征以及两个或更多个这样的特征的任何组合,公开的程度是使得这样的特征或组合能够基于本说明书依据本领域技术人员的公知常识作为整体来实现,而无论这样的特征或特征的组合是否解决了本文中所公开的任何问题。鉴于上述描述,对于本领域技术人员明显的是,可在本发明的范围内进行各种修改。
Claims (20)
1.一种渲染3D场景的几何结构以用于在非标准投影显示器上显示的方法,所述方法包括:
将所述3D场景的几何结构投影到2D投影平面中,其中图像区域被限定在所述投影平面中(61);
使用变换将所述几何结构从所述投影平面映射到图像空间,其中为每个图像区域定义相应的变换(62);和
在所述图像空间中渲染所述几何结构以确定要在所述非标准投影显示器上显示的图像的图像值(63),
其中,所述变换被配置用于将所述几何结构映射到所述图像空间中,以便抵消由所述非标准投影显示器的光学装置引入的失真。
2.根据权利要求1所述的方法,其中,所述变换是线性变换。
3.根据权利要求1所述的方法,其中,所述图像区域是图块。
4.根据权利要求3所述的方法,其中,所述投影平面中的所述图像区域是失真图块,并且其中,对于所述图像区域的每一个的相应变换将所述图像区域映射到所述图像空间中的未失真图块。
5.根据权利要求1所述的方法,其中,所述图像区域是半图块。
6.根据权利要求1所述的方法,还包括将所确定的图像的图像值输出到帧缓冲器(64)。
7.根据权利要求1所述的方法,其中,所述非标准投影显示器是头戴式显示器。
8.根据权利要求1所述的方法,其中,将所述3D场景的几何结构投影到2D投影平面中包括:
将图像空间中的像素细分成多个图像区域,每个图像区域包括一组像素。
9.根据任一前述权利要求所述的方法,其中,使用变换将所述几何结构从所述投影平面映射到图像空间包括:
对图像区域中的每个顶点应用线性变换以将顶点位置从所述图像空间映射到投影平面(606)。
10.根据权利要求9所述的方法,其中,对图像区域中的每个顶点应用线性变换以将顶点位置从所述图像空间映射到投影平面包括:
对于图像区域中的每个顶点,将所述线性变换应用于所述投影平面中的X坐标和Y坐标,而不修改其他顶点属性。
11.一种图形处理系统(400),其被配置为渲染3D场景的几何结构以用于在非标准投影显示器上显示,所述图形处理系统包括:
平铺逻辑(508),其被布置成将所述3D场景的几何结构投影到2D投影平面中,其中图像区域被限定在所述投影平面中;和
渲染逻辑(510),其被布置成使用变换将所述几何结构从所述投影平面映射到图像空间,其中为每个图像区域定义相应的变换,并且在所述图像空间中渲染所述几何结构以确定要在所述非标准投影显示器上显示的图像的图像值,
其中,所述变换被配置用于将所述几何结构映射到所述图像空间中,以便抵消由所述非标准投影显示器的光学装置引入的失真。
12.根据权利要求11所述的图形处理系统,其中,所述变换是线性变换。
13.根据权利要求11或12所述的图形处理系统,其中,所述图像区域是图块。
14.根据权利要求13所述的图形处理系统,其中,所述投影平面中的所述图像区域是失真图块,并且其中,对于所述图像区域的每一个的相应变换将所述图像区域映射到所述图像空间中的未失真图块。
15.根据权利要求11的任一个所述的图形处理系统,其中,所述图形处理单元体现在集成电路上的硬件中。
16.一种使用集成电路制造系统制造根据权利要求11所述的图形处理系统的方法,所述方法包括:
使用布局处理系统处理所述图形处理单元的计算机可读描述,以便生成体现所述图形处理系统的集成电路的电路布局描述;以及
使用集成电路生成系统根据所述电路布局描述来制造所述图形处理单元。
17.一种其上编码有计算机可读代码的计算机可读存储介质,所述代码被配置成使得当运行所述代码时执行权利要求1的方法。
18.一种集成电路定义数据集,所述集成电路定义数据集当在集成电路制造系统中被处理时,将所述集成电路制造系统配置为制造根据权利要求11所述的图形处理系统。
19.一种非暂时性计算机可读存储介质,其上存储有根据权利要求11所述的图形处理系统的计算机可读描述,当在集成电路制造系统中处理时,所述计算机可读描述使得所述集成电路制造系统:
使用布局处理系统处理所述图形处理系统的所述计算机可读描述,以便生成体现所述图形处理系统的集成电路的电路布局描述;以及
使用集成电路生成系统根据所述电路布局描述来制造所述图形处理系统。
20.一种集成电路制造系统,包括:
计算机可读存储介质,所述计算机可读存储介质在其上存储有根据权利要求1所述的图形处理系统的计算机可读描述;
布局处理系统,所述布局处理系统被配置为处理所述计算机可读描述,以便生成体现所述图形处理单元的集成电路的电路布局描述;以及
集成电路生成系统,所述集成电路生成系统被配置为根据所述电路布局描述来制造所述图形处理单元。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1713052.7 | 2017-08-15 | ||
GBGB1713052.7A GB201713052D0 (en) | 2017-08-15 | 2017-08-15 | Single pass rendering for head mounted displays |
GB1805677.0 | 2018-04-05 | ||
GB1805677.0A GB2565619B (en) | 2017-08-15 | 2018-04-05 | Single Pass Rendering For Head Mounted Displays |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109413403A true CN109413403A (zh) | 2019-03-01 |
CN109413403B CN109413403B (zh) | 2022-04-22 |
Family
ID=59895891
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810897111.5A Active CN109413403B (zh) | 2017-08-15 | 2018-08-08 | 一种渲染3d场景的几何结构的渲染方法和图形处理系统 |
Country Status (4)
Country | Link |
---|---|
US (3) | US10853988B2 (zh) |
EP (1) | EP3444775B1 (zh) |
CN (1) | CN109413403B (zh) |
GB (2) | GB201713052D0 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021185085A1 (zh) * | 2020-03-20 | 2021-09-23 | 华为技术有限公司 | 一种显示方法及控制显示的装置 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10401954B2 (en) * | 2017-04-17 | 2019-09-03 | Intel Corporation | Sensory enhanced augmented reality and virtual reality device |
US10643374B2 (en) * | 2017-04-24 | 2020-05-05 | Intel Corporation | Positional only shading pipeline (POSH) geometry data processing with coarse Z buffer |
GB201713051D0 (en) * | 2017-08-15 | 2017-09-27 | Imagination Tech Ltd | Low latency distortion unit for head mounted displays |
WO2020068960A1 (en) * | 2018-09-26 | 2020-04-02 | Coherent Logix, Inc. | Any world view generation |
US11610372B2 (en) | 2019-10-11 | 2023-03-21 | Qualcomm Incorporated | Methods and apparatus for multiple lens distortion correction |
US11423520B2 (en) * | 2020-10-30 | 2022-08-23 | Facebook Technologies, Llc. | Distortion-corrected rasterization |
US11654550B1 (en) | 2020-11-13 | 2023-05-23 | X Development Llc | Single iteration, multiple permutation robot simulation |
US11880924B2 (en) | 2021-03-26 | 2024-01-23 | Advanced Micro Devices, Inc. | Synchronization free cross pass binning through subpass interleaving |
US11915384B2 (en) * | 2021-04-22 | 2024-02-27 | Sony Interactive Entertainment Inc. | Estimation of optimal rasterization distortion function from image distortion property |
US11927757B1 (en) * | 2021-10-29 | 2024-03-12 | Apple Inc. | Electronic device display having distortion compensation |
GB2621119A (en) * | 2022-07-29 | 2024-02-07 | Advanced Risc Mach Ltd | Graphics processing |
CN115223516B (zh) * | 2022-09-20 | 2022-12-13 | 深圳市优奕视界有限公司 | 图形渲染与lcd驱动一体化芯片及相关方法和设备 |
CN117893692B (zh) * | 2024-03-12 | 2024-05-28 | 之江实验室 | 一种基于对称视图的三维重建方法、装置及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5319744A (en) * | 1991-04-03 | 1994-06-07 | General Electric Company | Polygon fragmentation method of distortion correction in computer image generating systems |
CN102722861A (zh) * | 2011-05-06 | 2012-10-10 | 新奥特(北京)视频技术有限公司 | 一种基于cpu的图形渲染引擎及实现方法 |
WO2014095480A1 (fr) * | 2012-12-17 | 2014-06-26 | Thales | Procede d'affichage et systeme d'aide a la navigation |
US20140320512A1 (en) * | 2013-04-29 | 2014-10-30 | Qualcomm Incorporated | Query processing for tile-based renderers |
US20150091892A1 (en) * | 2013-10-02 | 2015-04-02 | Samsung Electronics Co., Ltd | Method and apparatus for rendering image data |
CN106296790A (zh) * | 2010-03-19 | 2017-01-04 | 想象技术有限公司 | 用于对计算机图形图像进行阴影化和纹理化的方法及设备 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1987003980A2 (en) | 1985-12-19 | 1987-07-02 | General Electric Company | Comprehensive distortion correction in a real time imaging system |
US6249289B1 (en) * | 1996-11-27 | 2001-06-19 | Silicon Graphics, Inc. | Multi-purpose high resolution distortion correction |
US20020063807A1 (en) * | 1999-04-19 | 2002-05-30 | Neal Margulis | Method for Performing Image Transforms in a Digital Display System |
GB0307095D0 (en) | 2003-03-27 | 2003-04-30 | Imagination Tech Ltd | Improvements to a tiling system for 3d rendered graphics |
GB0410551D0 (en) * | 2004-05-12 | 2004-06-16 | Ller Christian M | 3d autostereoscopic display |
US8406562B2 (en) * | 2006-08-11 | 2013-03-26 | Geo Semiconductor Inc. | System and method for automated calibration and correction of display geometry and color |
US9077973B2 (en) * | 2012-06-29 | 2015-07-07 | Dri Systems Llc | Wide field-of-view stereo vision platform with dynamic control of immersive or heads-up display operation |
US20150187115A1 (en) * | 2013-12-27 | 2015-07-02 | Mark A. MacDonald | Dynamically adjustable 3d goggles |
US10228562B2 (en) * | 2014-02-21 | 2019-03-12 | Sony Interactive Entertainment Inc. | Realtime lens aberration correction from eye tracking |
JP6392370B2 (ja) * | 2014-04-05 | 2018-09-19 | ソニー インタラクティブ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー | 様々なレンダリング及びラスタライゼーション・パラメータ下でビューポートを変化させるための、オブジェクトの効率的再レンダリング方法 |
GB2537728B (en) * | 2015-03-03 | 2019-11-27 | Imagination Tech Ltd | Graphics rendering using directional representations of lighting at probe positions within a scene |
WO2016168913A1 (en) * | 2015-04-22 | 2016-10-27 | Esight Corp. | Methods and devices for optical aberration correction |
CN107924557B (zh) * | 2015-07-16 | 2022-04-15 | 数字标记公司 | 用于数字数据提取的估计图像的几何变换的信号处理器和方法 |
KR101953704B1 (ko) * | 2015-11-06 | 2019-03-04 | 페이스북 테크놀로지스, 엘엘씨 | 광학 흐름을 사용한 안구 추적 |
US10445860B2 (en) * | 2015-12-08 | 2019-10-15 | Facebook Technologies, Llc | Autofocus virtual reality headset |
US10043305B2 (en) * | 2016-01-06 | 2018-08-07 | Meta Company | Apparatuses, methods and systems for pre-warping images for a display system with a distorting optical component |
KR101785027B1 (ko) * | 2016-01-14 | 2017-11-06 | 주식회사 라온텍 | 화면 왜곡 보정이 가능한 디스플레이 장치 및 이를 이용한 화면 왜곡 보정 방법 |
US10156723B2 (en) * | 2016-05-12 | 2018-12-18 | Google Llc | Display pre-distortion methods and apparatus for head-mounted displays |
US10395349B1 (en) * | 2016-09-07 | 2019-08-27 | Apple Inc. | Display system with tunable lens distortion compensation |
US10360832B2 (en) * | 2017-08-14 | 2019-07-23 | Microsoft Technology Licensing, Llc | Post-rendering image transformation using parallel image transformation pipelines |
-
2017
- 2017-08-15 GB GBGB1713052.7A patent/GB201713052D0/en not_active Ceased
-
2018
- 2018-04-05 GB GB1805677.0A patent/GB2565619B/en active Active
- 2018-08-08 CN CN201810897111.5A patent/CN109413403B/zh active Active
- 2018-08-14 EP EP18189069.0A patent/EP3444775B1/en active Active
- 2018-08-15 US US15/998,389 patent/US10853988B2/en active Active
-
2020
- 2020-10-27 US US17/081,496 patent/US11823317B2/en active Active
-
2023
- 2023-11-20 US US18/515,153 patent/US20240087209A1/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5319744A (en) * | 1991-04-03 | 1994-06-07 | General Electric Company | Polygon fragmentation method of distortion correction in computer image generating systems |
CN106296790A (zh) * | 2010-03-19 | 2017-01-04 | 想象技术有限公司 | 用于对计算机图形图像进行阴影化和纹理化的方法及设备 |
CN102722861A (zh) * | 2011-05-06 | 2012-10-10 | 新奥特(北京)视频技术有限公司 | 一种基于cpu的图形渲染引擎及实现方法 |
WO2014095480A1 (fr) * | 2012-12-17 | 2014-06-26 | Thales | Procede d'affichage et systeme d'aide a la navigation |
US20140320512A1 (en) * | 2013-04-29 | 2014-10-30 | Qualcomm Incorporated | Query processing for tile-based renderers |
US20150091892A1 (en) * | 2013-10-02 | 2015-04-02 | Samsung Electronics Co., Ltd | Method and apparatus for rendering image data |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021185085A1 (zh) * | 2020-03-20 | 2021-09-23 | 华为技术有限公司 | 一种显示方法及控制显示的装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109413403B (zh) | 2022-04-22 |
GB201805677D0 (en) | 2018-05-23 |
GB201713052D0 (en) | 2017-09-27 |
EP3444775A1 (en) | 2019-02-20 |
US20210042984A1 (en) | 2021-02-11 |
GB2565619A (en) | 2019-02-20 |
US20240087209A1 (en) | 2024-03-14 |
GB2565619B (en) | 2022-04-13 |
US20190057536A1 (en) | 2019-02-21 |
US10853988B2 (en) | 2020-12-01 |
EP3444775B1 (en) | 2023-10-04 |
US11823317B2 (en) | 2023-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109413403A (zh) | 用于头戴式显示器的单通道渲染 | |
US11301956B2 (en) | Varying effective resolution by screen location by altering rasterization parameters | |
KR101922482B1 (ko) | 다수의 렌더 타겟들 내에서 활성 컬러 샘플 카운트를 변경함으로써 스크린 위치에 의한 변화하는 유효 분해능 | |
TWI578266B (zh) | 藉由近似頂點至彎曲視埠上的投影在圖形處理中隨螢幕位置變化有效解析度 | |
KR102338831B1 (ko) | 구성가능한 변환 파라미터들을 갖는 다중 공간 렌더링 | |
CN106204712B (zh) | 分段线性不规则光栅化 | |
US10102610B2 (en) | Dual fisheye images stitching for spherical video | |
US11740470B2 (en) | Low latency distortion unit for head mounted displays |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |