CN106815800B - 用于在计算机系统中控制空间分辨率的方法和装置 - Google Patents
用于在计算机系统中控制空间分辨率的方法和装置 Download PDFInfo
- Publication number
- CN106815800B CN106815800B CN201610139511.0A CN201610139511A CN106815800B CN 106815800 B CN106815800 B CN 106815800B CN 201610139511 A CN201610139511 A CN 201610139511A CN 106815800 B CN106815800 B CN 106815800B
- Authority
- CN
- China
- Prior art keywords
- pixel
- resolution
- pixels
- poi
- rendering
- 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.)
- Active
Links
Images
Classifications
-
- 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
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/36—Level of detail
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Processing (AREA)
- Image Generation (AREA)
Abstract
一种在图形系统中产生用于显示的输出像素的计算机实现方法,其中步骤包括对一个或多个像素执行渲染操作,其中所述的渲染操作包括如下步骤:使用POI分析器确定下述一个或多个:(a)像素为信息像素POI还是非信息像素PNOI;(b)为POI和PNOI选择不同的分辨率。
Description
相关申请
本申请是于2015年1月14日提交的申请号为14/596,309的美国专利申请的部分连续申请,其全部内容在此通过引证全部并入本申请。
与本申请相关的是公开号为US2013/0176322,标题为“Application-TransparentResolution Control by Way of Command Stream Interception(通过命令流拦截方式的应用透明分辨率控制)”的美国专利申请,其全部内容在此通过引证并入本文。
技术领域
本发明涉及的是在成像应用程序中,提升与图像分辨率紧密相关的用户体验。
背景技术
公开号为US2013/0176322,题为“通过命令流拦截方式的应用透明分辨率控制(Application-Transparent Resolution Control by Way of Command StreamInterception)”(以下简称“分辨率控制”)的专利申请公开了一个独立的软件程序,该程序通过配置可以在基于CPU和GPU的图形化本地应用之间动态的、无缝的运行和切换,并且渲染图形化命令以达到在屏幕上或屏幕缓冲区创建一个图像的目的。上述分辨率控制申请中,在CPU和GPU之间的动态分辨率修正器如图4B所示。如果没有这样的软件程序,GPU将基于指令输入流和着色器流来渲染图像,就像由基于CPU的原生应用生成的图像一样。
通过设置CPU和GPU之间的动态分辨率修正器,它接收到一个由本地应用程序生成的指令和着色器流作为输入,而不是流向GPU的3D接口的本地数据流。然后对它们进行截取和分析并且基于不同的考虑,如用户体验、发热等级、帧速率、功耗或者电池电量,可以改变一些或所有这些命令和/或着色器,这些会以图形方式在图4B的右侧展示。修正后的指令和/或着色器流可以由一个空间分辨率控制器产生,然后被发送到GPU用来渲染,这代替了原来的由CPU上的本地应用所产生的传统指令和着色器流的方式。以这种方式,软件程序针对图像的每一帧、每个资源,动态地、实时地控制和修改分辨率。因此,其有能力在一种分辨率中采集某个资源样本,并将其写入不同的分辨率中。
本领域技术人员普遍认为源自/指向一个单一资源或者源自/指向多种资源中,读和写是必需的。对于整个应用是3D或者2D的情况,减少资源的分辨率可以通过修改API命令,只渲染这个资源的一部分来实现。由于本地应用的状态、本地应用运行的硬件或者其他系统资源产生了变化,那么这一帧或者资源的分辨率就可能会再次扩大。经过动态分辨率修正器修改过的资源将不再带有之前由本地应用产生的原始分辨率。等比例放大修改过的资源需要适当的抽样和渲染技术,以保持用户体验处于预定义的阈值之上。这对2D平视显示器(Heads Up Displays,HUD)资源及其他资源来说至关重要。
同时,在现有技术中,反锯齿(AA)机制是公知的,例如超级采样(SSAA)和多重采样(MSAA)等。正如本领域技术人员所知的,这种机制从资源的像素中至少采集一个点的样本,然后基于覆盖范围和遮挡准则对要渲染的原始多边形来计算已渲染资源中这些像素的可见性。三角形或线段等原始多边形具有固有的不连续性。不管采样率如何选择,都将导致不可避免的锯齿。AA软件在要采样的资源的像素中创建的一个网格状采样点。这样一个网格在每个像素中可能包括1,2,3,4,5,6,7,8或更多的采样点。此外,这些采样点的空间分布可能是沿着一个像素的x和y轴或任何旋转角度。例如,一种已知的技术,如MSAAX4,可能会采用每个像素4个样品点,并相对于像素主轴旋转45度角的网格。统计数据显示,通过使用一个旋转网格在实现检测几何边缘时有更好的敏感性。在本实施例的实践中,每个像素有四个样本点。这四个点的数据集接下来用来渲染这个样本像素。在原资源中的任何像素,都要渲染到一个新资源的新像素中。然而,请注意,最终资源的分辨率并不改变。这是一个简单的像素到像素转换。这种机制的唯一目的是减少锯齿。减少锯齿的方法是平均每个像素的采样数据点。一旦平均了数据点,原始采样数据就会消失,并且再也不会使用这些数据。SSMA增加了渲染的系统处理成本,现在它已经很少使用。另一方面,MSAA需要更少的系统资源并被广泛用于抗锯齿的目的。这里有一篇详细讨论了MSAA的文章叫“MSA简介(A QuickOverview of MSA)”,由Matt Pettineo所著,2012年10月24日出版。
发明内容
在一方面,由计算机实现的用于图形系统产生输出像素的方法,包括以下步骤:从图形系统接收一个或多个输入像素;在所述一个或多个像素上执行渲染操作,其中所述渲染包括如下步骤:选择一个或多个要增加分辨率的信息像素;定义一个采样网格或采样方向;对具有第一分辨率及多重采样点的所述一个或多个信息像素进行多次采样;收集来自每个采样点的信息;将每个采样点作为虚拟像素储存信息;定义一个或多个像素的分辨率,使其保持与从图形系统收到的分辨率一致,或者与要减少的分辨率一致;以及在可显示的帧或者画面外的缓冲区,通过将每一个虚拟像素渲染到物理像素中来实现渲染信息像素,以带来比其第一分辨率更高的分辨率。
在另一方面,上述的采用计算机实现的方法进一步包括:在第二分辨率中渲染所述一个或多个像素,其中所述的第二分辨率将所述一个或多个像素中的一个或多个像素渲染成分辨率增加的像素,将所述一个或多个像素中的其他像素渲染成分辨率降低或者相同的分辨率,其中所述一个或多个像素的总分辨率定于所述一个或多个像素的第一分辨率;评估所述第二分辨率中的一个或多个像素从而形成一个或多个输出像素;以及,在可显示的帧或者画面外的缓冲区中显示所述的一个或多个输出像素。
在另一方面,上述采用计算机实现的方法包括接收来自于图形系统的一个或多个输入像素;对所述一个或多个输入像素执行渲染操作。所述的渲染包括如下步骤:选择信息像素;定义一个样本点的网格;执行抽样;从每个样本点处收集抽样信息;将每个样本点的抽样信息存储到虚拟像素中;以及,在像素队列中将虚拟像素作为单独的像素来渲染。
在进一步的方面中,上述采用计算机实现的方法进一步包括如下步骤:在定义步骤之后,收集用户体验因素并未至少一个用户体验因素建立最小阈值;以及,基于所述至少一个阈值,使用户体验保持在已建立的阈值之上。
在一个方面,上述采用计算机实现的方法中,其中所述用于体验选自包括以下一个或多个因素:帧速率、发热等级、响应速度、电池电量以及电源等级。
此外,在另一方面,在图形系统中用于产生输出像素的一种计算机实现方法包括以下步骤:接收来自图形系统的一个或多个输入像素;对所述一个或多个像素执行渲染操作。所述的渲染包括以下步骤:定义一个或多个像素的样本点的第一网格;定义一个或多个像素的样本点的第二网格;在样本点的第二网格中队所述一个或多个像素取样;分析所述具有第一网格及第二网格的一个或多个像素,以便接收元数据(meta data)来进行渲染;以及渲染所述一个或多个像素。
在另一方面,采用计算机实现的方法,进一步包括以下步骤:在对样本点的第一网格进行取样的步骤之前旋转样本点的第一网格。所述旋转步骤指的是将第一网格旋转小于90°,优选为大约45°。
在进一步的方面中,在图形系统中用于产生输出像素的计算机实现方法包括以下步骤:从图形系统中接收一个或多个输入像素;对所述一个或多个像素执行渲染操作。所述的渲染包括以下步骤:选择一个或多个要增加分辨率的信息像素;定义一个样本网格或者样本方位;对具有第一分辨率及多重采样点的一个或多个信息像素进行多次采样;从每个样本点处收集信息;将每个样本点作为虚拟像素来存储其信息;定义一个或多个非信息像素;从一个单独样本点中对一个或多个非信息像素单独取样;以及,在可显示的帧或者画面外的缓冲区,通过将每一个虚拟像素渲染到物理像素中来实现渲染一个或多个信息像素,以带来比第一分辨率更高的分辨率。
在另一方面,采用计算机实现的方法,还包括将一个或多个非信息像素扩展到多个具有更高分辨率的信息像素中,使得每个非信息像素都能够复制到与其原像素一样的物理像素中。此外,所述方法还包括将一个或多个非信息像素扩展到多个具有更高分辨率的信息像素中,使得至少一个非信息像素能够通过反锯齿算法转化为与其原像素不同的物理像素。反锯齿算法包括下述中一个或多个算法:最近邻居算法(nearest neighbor),双线性算法,Lanczos算法,B样条算法,Mitchel算法或者高斯方法,同时反锯齿算法能够将临近的信息像素考虑在内。
在另一方面,一个非闪存计算机可读介质,其上存储一段程序,使得图像处理单元(GPU)被调用从而执行图像处理,所述的处理包括在一个或多个像素上执行渲染操作。所述的渲染包括如下步骤:从图形系统中接收一个或多个输入像素;对一个或多个像素执行渲染操作,其中渲染包括以下步骤:选择一个或多个要增加分辨率的信息像素;定义样本网格或者样本方位;对具有第一分辨率及多重采样点的一个或多个信息像素进行多次采样;从每个样本点处收集信息;将每个样本点作为虚拟像素来存储其信息;定义一个或多个像素的分辨率,使其保持与从图形系统收到的分辨率一致,或者与要减少的分辨率一致;以及,在可显示的帧或者画面外的缓冲区,通过将每一个虚拟像素渲染到物理像素中来实现渲染信息像素,以带来比第一分辨率更高的分辨率。
在另一方面,用于处理图形内容的系统包括:提供一个或多个像素的图形处理单元(GPU);非闪存的存储器,其包含指示,当其从图形处理单元接收到一个或多个像素时,所述指示用于处理所述的一个或多个像素从而产生一个或多个输出像素;所述的指示用于在一个或多个像素上执行渲染操作。所述的渲染包括如下步骤:选择一个或多个要增加分辨率的信息像素;定义样本网格或者样本方位;对具有第一分辨率及多重采样点的一个或多个信息像素进行多次采样;从每个样本点处收集信息;将每个样本点作为虚拟像素来存储其信息;定义一个或多个像素的分辨率,使其保持与从图形系统收到的分辨率一致,或者与要减少的分辨率一致;以及,在可显示的帧或者画面外的缓冲区,通过将每一个虚拟像素渲染到物理像素中来实现渲染信息像素,以带来比第一分辨率更高的分辨率。
在另一方面,在图形系统中用于产生用于显示的输出像素的计算机实现方法,其步骤包括:在一个或多个像素上执行渲染操作,以及所述的渲染包括如下步骤:使用信息像素(POI)分析器来确认一个或多个:(a)是否像素为信息像素POI或非信息像素PNOI;(b)为信息像素POI和为非信息像素PNOI选择不同的分辨率。
在另一方面,所述的方法进一步包括在渲染完成之后执行拉伸-重映射(stretcher-remapping)步骤。在被显示之前,在所需的最终分辨率的缓冲区进行渲染。
在另一方面,所述的信息像素POI分析器是固定的或可编程的中的一种。如果所述的POI分析器是固定的,可以调用来自参数列表中的一种或多种参数。如果所述的POI分析器是可编程的,可以调用像素分辨率着色器。
所述的方法可以使用非闪存计算机可读介质来实现,其上存储一段程序,使得图像处理单元来执行上述步骤。所述的方法可以使用专用计算机硬件单元实现,并可以在单一通道实现或在多个通道实现。所述的拉伸-重映射步骤可以是固定的或可编程的。
附图说明
附图1示出了本发明在实施过程中的一系列步骤。
附图2图形化的展示了本发明的采样方法。
附图2A和2B展示了基于本发明的拉伸功能。
附图3图形化的展示了本发明的样本网格分析过程。
附图3A展示了一个2×2的样本点阵列进行旋转的实施例。
附图4示出了本发明在实施过程中的更多步骤。
附图5示出了图像的动态分辨率缩放。
附图6示出了本发明的图像的空间分辨率。
附图7A到8B图形化的示出了动态分辨率和本发明的空间分辨率的比较结果。
附图9A示出了一个场景,其中增加了像素分辨率阶段,其通过模式和参数(或者仅开/关)的固定功能或可编程来控制。
附图9B示出的是拉伸-重映射器阶段,其通过模式和参数(或仅开/关)的固定功能或可编程实现。
附图10示出了本发明的POI分析器的操作过程的实施例。
附图11A、12A和13A示出了现有技术中硬件的实施过程。
附图11B到11E、12B到12D以及13A到13D示出的是现有技术的实施方案添加了本发明的POI分析器模块和/或拉伸/重映射器模块的改进方案。
具体实施方式
一个资源或帧的动态分辨率是即时的进行识别和渲染,正如上述的分辨率控制专利申请中披露的那样,其视为一个整体,例如资源分辨率或者帧分辨率,它不仅能够受到一些因素的影响,如整体用户体验、宜玩指数(playability)、节能、帧速率、响应性能、进行渲染的功耗、发热等级以及最主要的——视觉体验质量,而且它还能够影响上述这些因素。
相比之下,在本发明中,通过实施例的方式可以看到,资源或帧的信息区域(areasof interest)有很多边缘(这可以看做是颜色或亮度的相对快速变化),就会对视觉体验质量产生很大影响,因为边缘很明显的话,人们对边缘的感知就会超过图像渲染的内部,那么这些边缘就要以更高的分辨率进行即时的检测和分析以及动态的渲染。特别是几何边缘,因为要渲染的是一个多边形边缘,因此它是一个重要方面,在这些几何边缘部分最好能够提供相对较高的分辨率。在计算机或其他屏幕上观察几何图形的人可能会注意到边缘效应,这是由于沿着边缘显示的锯齿数量引起的。
本发明也包括,旨在提供一种改变分辨率的方法论,能够在单个像素的基础上来渲染相对锋利的边缘,同时还能像上面讨论的那样节约资源。因此,尽管所谓的本地应用程序以相同的分辨率等级来渲染整个图像,但是,本发明渲染边缘地区比渲染图像的剩余区域(如多边形的内部)使用更高的分辨率,因为,如前所述,在非边缘区域尖锐度的相对减少对观察者来说是不明显的,这将会在下文讨论,示范效果如图7A和8B所示。在本发明中,对于在边缘上的像素,将“投入”更多来渲染它,从而更高分辨率进行渲染。这种方式是通过对边缘像素进行多重采样,然后将每个采样点转换为一个单独的像素来实现的。另一个实施例是,在探测一个发光区域时,以较高的分辨率“投入”渲染较亮的区域,以较低的分辨率渲染较暗的区域。另一个实施例是,在一个虚拟现实(VR)装置中检测图像转动和观察方向变化,在玩家的移动方向上“投入”提高的分辨率,而在相反的方向上,以较低的分辨率进行渲染。
根据本发明的一个方面,信息像素POI是进行多重采样,然后以更高的分辨率进行渲染。这样的高分辨率,至少一部分是基于从至少一部分的采样点获取的信息。对于此申请的目的,作为一个非限制性的实施例,POI可能是亮区而不是暗区,反之亦然;边缘,不仅是几何形状,而且在多边形内部,如纹理边缘或复杂的片段着色器;POI可能是基于虚拟摄像机运动方向、角度、速度和/或加速度定义的,是渐变的和有角度的。举例来说,如果玩家向右转,那么POI可能是屏幕右边区域的像素;多个对象移动的区域可以被识别和定义为POI对抗域,其为更加静态的;屏幕或场景的中心域可以定义为POI;平视显示器(HUD)区域可以定义为POI,尽管边缘不是几何形状,也可以以高分辨率的形式展示;文本区域可以定义为POI;像素接近焦面或者虚拟摄像机;场景中的关键元素,例如,举例来说,选择的角色、手、枪或选择的对象,例如在CAD、医疗、教育或其他应用程序中,也可以被定义为POI。POI可以被选择作为与虚拟摄像机相对较近的物体;POI可以由对象被渲染时所占据屏幕的百分比决定的;POI可以作为用户的光标来选择;参考POI掩码(a reference POI mask)既可以是一个单独的资源,也可以是内部的渲染资源。该掩码可以被包含在渲染资源中的某些组件(例如α)或其他元数据中;在保持应用程序透明性的同时,它可以由空间分辨率控制器生成,或者打破应用程序的透明性,可以通过运行中的本地程序的API获得。POI也可以是上述的任意组合。
本发明使用来自资源像素中采集的样本信息,从而将该像素的分辨率扩展到渲染资源中。更为特别的是,本发明采取定向采样机制,例如MSAA中,多样本采样针对的只是被认定为如上定义的POI部分的像素,通过把资源的一个像素中的每个采样点转换为渲染资源中的单独像素,以增加多采样像素的分辨率。
根据本发明的另一方面,除了几何边缘以外,不同类型的像素可以被定向用于多重采样,然后以较高的分辨率进行渲染。渲染帧的特点是沿着几何边缘具有高分辨率,非几何边缘的区域具有较低分辨率,使得用户体验维持在预定义的阈值之上,这是本发明的另一个方面。根据本发明的另一方面,采样网格具有主轴线,其与采样像素的主轴线平行,可以利用这个特点来减少帧构件或计算负荷。
根据本发明的一个方面,如图1的流程图所示,被选择的资源像素的子集采用多重采样方式。这样的像素子集的选择可以基于本领域技术人员所熟知的算法完成,例如MSAA:一个抖动子像素的子像素样本,使用子像素偏移值程序来控制子像素样本数,子像素样本密度或空间分布。本领域技术人员所熟知的另一个MSAA技术就是:根据当前渲染的多边形,为所有采样点创建虚拟像素,然后计算虚拟像素中的样本覆盖范围。如果在该多边形内发现了至少一个样本,多边形外也有至少一个样本,它就属于需要多采样的一类。还有一个著名的技术,它将一般(透明)的渲染和特别的α-测试渲染结合在一起,可以有效的解决问题,被称为“阿尔法覆盖”,它能够仿真几何细节,因此树形的图像也可以使用这个技术。
MSAA算法能够识别位于几何边缘的像素子集。还有一个可替代的特殊算法可以用于识别POI的其他子集。为了检查和决定该像素是否是一个信息像素,这些算法能够解析全部或部分与像素有关的命令或着色器流。此外,这些测试可以基于一个预定义的固定参数执行,例如,为了确定一个像素的覆盖范围或遮挡区域,可以在某个预定点上解析命令。可替换的是,这些测试还可以以一个更动态的方式执行,例如,在决定是否需要一个额外的测试时,会用到第一次测试的结果。根据本发明的另一方面,当分辨率水平高于预定分辨率阈值时,屏幕、打印机、屏幕外的缓冲区和HUD中的图像可以通过GPU渲染。当考虑这些参数如帧速率、发热等级、延迟、用户输入、功耗水平或电量时,为了保证用户体验高于预定义的阈值,分辨率阈值可能是一个动态的阈值。此外,就像本领域技术人员所熟知的那样,为了渲染新的资源,可能要使用多个资源。另一个熟知的是:一个单一的资源或单一资源的一部分,需要经过多于一次的渲染,才能变成多重资源。因此,根据本发明的这个方面,从整个框架或一组资源的角度来看,当一个算法用于信息像素子集时,可以选择一个或多个资源的所有像素进行多重采样。
现在参考图2,一旦一个像素已被选定为多重采样,所述算法定义采样网格,在这个实施例中,与2×2网格中展示的一样,网格是平行于物理像素的主X轴和Y轴的。采样点的数目可能是任意的,如4、6、8、9、12、16等。采样点的数目可能由系统预先设定,或根据测试像素所有特征的结果来确定。此外,由于从先前的采样点收集了信息,信息采样点的数目可以根据采集结果即时的被定义或改变。例如,算法可能在像素中预先设定一个单独的采样点。这一点可能位于像素的中心、像素的方形中心或像素内的任何其他位置。基于采样收集的信息,为了进行第二个采样进程,算法可能会增加采样点的数量和/或扩大采样点或网格的方向范围。对于某一点来说,这个过程可能是不断重复的,直到系统对像素内的采样点数量及其空间分布作出最终决定。值得一提的是,通过比较和分析像素内或临近的像素间的采样信息,就能够做出这样的决定。一旦系统定义了采样点的数量和采样类型,系统就对这些点进行全部或部分采样。根据本发明的一个方面,决定一个像素是否必须进行多采样时,应该分析需要进行检查的参数和标准,也许会发现他们与实现系统下一步目标所需的信息并不相同。在这种情况下,为了收集更多的信息,系统至少会对这些点或其他点的一部分进行重新取样。然而,根据本发明的另一个方面,在确定哪个像素必须采取多采样的过程中,该系统通过分析其中收集的信息,可能会发现它足以满足接下来的目标,因此就不需要对他们进行重采样。系统将会保存元数据,它是从GPU内存缓冲区中虚拟像素的每个采样点收集的。可以从图2所示的实施例中看出,一个2×2尺寸的直线采样网格生成4个采样点。对于每一个采样点,使用一个虚拟像素,以保存从采样点中收集的元数据。在这个实施例中,可以发现第四方形的采样点被多边形的边覆盖,而1,2和3中的采样点没有被原始线段边缘覆盖。如上所示,与被多边形几何边的覆盖相比,未被覆盖的采样点相关元数据可以包含额外的信息。
根据本发明的另一个方面,还是参考图2,基于它们的元数据,至少有一部分虚拟像素被渲染成一个单独的物理像素,它处于与原始多采样像素相关的一组像素中。以这种方式,由系统根据不同的标准在上一个步骤选择的信息像素是多采样的,然后以高分辨率的形式渲染。根据图2所示的非限制的实施例,一个2×2的采样网格生成了4个采样点,当每个虚拟像素渲染到渲染图像中的一个单独的像素时,4个采样点就会转换成4个虚拟像素。值得一提的是,根据本发明的其他方面,如果该系统决定采样和丢弃数据或者不将单独虚拟像素提供给采样点,则采样点的数目可能与虚拟像素的数目不同。也有可能虚拟像素数量与图像中渲染或解析的物理像素数量是不同的。下面进一步的讨论将会考虑到,该系统可能选择放弃一个采样点,或将2个或多个虚拟像素组合成一个单一的虚拟像素。下面讨论是另一种可能性,该系统决定不将一个物理像素提供给现有的虚拟像素。
现在参考图2A,一个空间分辨率控制器的重映射-拉伸命令,这是本发明的两个方面,体现在非限制性实施例中,就是把2×2的像素数组动态地转换成4×4的高分辨率数组,就像本地应用程序生成的那样。在本例中,原始像素A被定义为POI,采取多重采样得到2×2的网格,分别是A1,A2,A3和A4点。对点A1,A2,A3和A4进行分析,并把他们存储在一个2×2的虚拟像素网格中。映射函数会把真实图像中的每个虚拟像素变成物理像素,如图2A中的4X4高分辨率网格A1,A2,A3和A4点。为了避免图像失真和伪影,拉伸函数对原始资源的像素B,C和D进行延伸和调整。这些像素被定义为非信息像素(Pixels Not Of Interest,PNOI)。作为PNOI像素,B,C和D没有采取多重采样。这些像素是由位于像素中心的单个采样点进行采样的。每个像素被渲染成新的分辨率,这个实施例里面是两倍分辨率——例如:每个1×1数组转换成2×2的高分辨率数组。因此,拉伸函数必须把每个PONI像素B,C和D分别转换为图2A的4×4数组中指定的2×2像素:B`,B``,B,,B,,,C`,C``,C,,C,,,D`,D``,D,,D,,。根据本发明的一个方面,PONI使用以下方式进行拉伸:每个拉伸的像素等同于它的原始像素,例如:像素B`,B``,B,,B,,是等价于他们的原始像素B的。然而,根据本发明的另一方面,例如,拉伸函数在拉伸像素B时使用的是这样的方式:不是所有的像素B`,B``,B,,B,,都等价于他们的原始像素B,或者甚至他们都不等价于像素B。此外,拉伸函数在处理像素B`,B``,B,,B,,时可能应用不同的规则,因此他们的相似性可能会遍历相同或不同的全排列。拉伸函数可能是一个具有不同参数的函数,这些参数可能会影响其拉伸规则。根据本发明的这方面的一个实施例,一个拉伸函数,还可以作为反锯齿函数,应用于POI和PNOI之间的边界区域。在这个实施例中,当需要考虑邻近像素A2特征的规则的时候,拉伸函数可能会渲染像素B`。根据另外一个规则制度,当考虑像素的二级联系(a second degree of contact),如像素A3,甚至是三级联系(a third degree of contact),如像素A1的时候,可能会渲染像素B`。具有不同级别联系的至少2个像素的串之间的关系能够通过分析,用于确定和保持图像的梯度或趋势,也可能基于空间语境被分解成拉伸函数,影响任何非信息的新像素的渲染特征。对于本发明的这一方面,本领域技术人员公知的非限定性的用于插值的方法包括近邻,双线性,Lanczos,B样条,Mitchel或高斯方法。
图2B表示的是另一个实施例,其具有3D资源,与图2A中的实施例类似,然而,在图2B这个实施例中,像素B被定义为POI,而像素A、C和D为PNOI。在这种情况下,3D资源的原始分辨率是2×2×2,选择的渲染分辨率是4×4×4。值得一提的是,本发明的任何方面都可以由不同的处理单元如GPU或CPU控制和实施。因此,为了改善或优化用户体验因素,这项发明可以应用于渲染后缓冲区;和/或为了分析资源特性或帧特性,可以通过对任何缓冲区的渲染,从而识别遮挡或其他因素。它可以对屏幕外缓冲区进行渲染,这个缓冲区有各种各样的用途,其中一个非限制的实施例是深度图,它从光线的角度来渲染场景,并且允许为最终图像添加阴影。另一个非限制性实施例是HDR效应,为了存储每个像素的大量信息,它用到了多个屏幕外缓冲区,通过后期处理生成最终场景图像。现在回到遮挡识别的实施例,通过了解哪些像素被遮挡,空间分辨率修改器可以更好地处理和优化系统资源,没有必要再对他们投入额外的计算。分析资源或帧特征的时候,可以将帧的资源渲染到任意缓冲区,例如,可以基于具有较低分辨率的本机应用程序分辨率来完成遮挡计算。在任何案例中,本发明在选择POI和PNOI的方面,为了提高由GPU、CPU或其他专用的图形处理单元完成的遮挡检测效果,可以采用能够获取更多像素信息的多重采样POI并且通过较高的分辨率进行渲染来实现。
如上所述,对每个采样点来说,为了收集和分析与采样点相关的元数据,该系统要解析或计算全部或部分像素(至少是在采样点的位置)的命令流和着色器流,而在其他情况下,只有部分命令流或着色器流(如果有的话)必须要解决。
为了增加用于生成图像的一个像素子组的分辨率,系统会选择性地投入计算和其他资源,因此发明的一个方面允许动态的和即时的管理资源,从而与其他用户体验影响因素结合在一起,以此保持整体用户体验高于预定义的阈值。
根据本发明的另一个方面,如图3所示,第一个采样网格用于分析资源的像素内的一个或多个区域,而第二个采样网格用于收集渲染所需的元数据。为了使多个采样点从一个单一像素渲染成一组像素,同时保持图像的完整性,在采样点及其相关渲染像素之间,必须有一个直接的几何和空间关系。根据这个实施例,第一个2×2采样网格相对于原始像素的主X轴和Y轴旋转了45°。因此,如果将这些旋转过的采样点直接渲染到2×2物理像素的直线阵列所在的最终图像中,将会造成图像的失真。然而,在某些情况下,为了分析像素,使用旋转的网格或其他网格,能够更好的测量像素的特性。然而,如上所述,当以较高的分辨率渲染像素的时候,这些信息可能是不够好的。因此,根据本发明的一个方面,系统用样本点的第一网格分析像素,然后使用样本点的第二网格收集信息,至少实现部分像素的渲染。图4中展示了这一过程的流程图。这只是著名的MSAA技术在本发明中应用和相结合的一个实施例。图3A就是上述结合的另一个实施例,其中块A`中显示了旋转的2×2的采样点阵列。根据本发明的这个实施例,使用这样的一个数组,首先为了采集一个像素样本,以达到使用公知的MSAA2×2方法来实现反锯齿的目的,第二,利用从采样点收集到的信息创建一个虚拟像素,然后通过空间分辨率系统来提高原始像素的分辨率,并将虚拟像素渲染成一个真正的像素。图3A中的块B`描述了另一个非限制性的实施例,它展示了另一种方式,采用公知的MSAA2×2直接采样阵列来应用新的空间分辨率系统。正如前面的实施例,第一个采样数据点被用于训练抗锯齿,然后使用相同的数据点创建一个虚拟像素,它可以被渲染成一个物理像素,以提高原始像素的分辨率。图3A中的块C`描述的是另一个非限制性的实施例:如何利用抗锯齿方法整合和实践目前的发明。在这个实施例中,有一个顶层的2×2采样点的直线阵列,而每个采样点由2×2采样点的另一子阵列的旋转子层采样阵列组成。根据这个实施例,正如该领域技术人员所熟悉的那样,所有采样点都能够用于抗锯齿,而每个采样点的旋转子级子阵列可以被平均,或者是被计算或被使用,以创建一个虚拟通用采样点作为顶层直线网格的一部分。如上所述,这样一个直线网格的通用采样点可以被用来创建一个虚拟像素,它能够渲染成一个物理像素以增强原始像素的分辨率。值得一提的是,可以将许多其他的阵列和子阵列组合起来,一、二、三或更多层的子阵列中每一个都可能有不同的采样点数量和空间分布。为了把采样点的子阵列转换成虚拟通用采样点,可以采用不同的方法。此外,与本发明的某些方面相关的空间分辨率系统可以应用一些公知的抗锯齿方法,比如超级采样法或其他的方法。
现在参照图5。作为本发明的主题,空间分辨率控制器可以在基于计算机的CPU和相关GPU的本地图形应用程序上运行,并能够在两者之间无缝的、动态的切换。本发明的一个方面是建立用户体验的最小阈值,并保持用户体验处于上述阈值之上。由于用户体验是上述多个参数所确定的因素,根据本发明的一个方面,系统可以在权衡各个参数时,动态地、根据实际情况改变其中至少一部分参数。在这个过程中,例如,该系统可以提高帧速率,同时降低分辨率。由于本机应用程序执行了应用程序的整个生态系统和/或应用程序运行的硬件环境可能会改变,为了在这样一个不断变化和苛刻的环境中优化用户体验,控制器可能会做出不同的决定。图5显示了原始帧中的一个资源将要在下一帧中进行渲染的实施例。这可能是该资源比其在以前的应用程序中使用了更高的分辨率,并且系统选择了减少分辨率。这个信息现在已丢失。这样的选择有可能是为了增加帧速率或消耗更少的电量。现在,系统需要重新调整这个资源以适应新的帧比例。正如本领域技术人员所知的以及在分辨率控制应用中所披露的,有多种方法可以将资源延展到更大的规模。这通常会降低资源的图像质量,可能会伤害整体用户体验。本发明在此方面采取了检测、多次采样、用更高分辨率渲染信息点这种方式,在动态的分辨率处理过程中延展资源。在这种方式中,系统可能会在边缘、明亮区域、向前方向等关键区域投入一些处理成本,以保持或改善整体用户体验处于用户体验集定义的阈值范围之内。
现在参照图6,在所述实施例中,前一帧中的资源可能在下一帧中进行渲染。与图5中的实施例不同,本例没有使用分辨率控制应用中所披露的动态分辨率算法。相反,在这个实施例中,原始资源的整体分辨率与其在新帧中渲染的整体分辨率是相等的。对于这个实施例,资源的整体分辨率是由对整个帧或者资源可用的全部像素中,资源所消耗的相关像素数量来定义的。在这个实施例中,由于屏幕上所有可用像素的数目是相等的,资源在前一帧和下一帧之间的物理尺寸没有变化。然而,根据本发明的这一方面,资源里的空间分辨率在不同区域之间可能是不同。基于本发明的这方面,系统可以将资源的整体分辨率保持不变(没有使用动态分辨率算法)。然而,该系统可能会以更高的分辨率来渲染某些信息区域(areas of interest)。为了保持资源的整体分辨率一致,系统还需要用类似的比例将其他区域的分辨率降低。在资源上的像素预算计算和补偿之间的零和博弈可以通过资源基础,或一组资源基础,或整个框架的基础来进行。上述零和(sum zero)像素预算计算和补偿的边界可以由任何数量或组合的用户体验因素及其最小值,或由其最大值,或由需要的或允许的值或范围来定义。上述范围的值可能由空间分辨率控制器,或由用户,或程序员通过控制面板来定义,这将作为本发明的另一个方面在下文进一步描述。
现在转到图7A,7B,8A和8B,这些图展示了使用原生高分辨率,动态分辨率和空间分辨率进行图像操作的示范性比较结果,其中空间分辨率是本发明的主题。如图7A和7B,高分辨率的图像相对的显示了“尖锐”边102以及小的“阶梯”104。采用动态分辨率算法处理这一图片的结果如图7B所示,其中边缘106比较模糊,“阶梯”108的数目也比图7A中相对的阶梯104要少。
现在转到图8A和8B。与图7A相似,图8A是原生高分辨率的结果。另一方面,图8B显示了使用本发明的空间分辨率算法处理图像的结果。值得注意的是,边缘110如图8A中一样尖锐,“阶梯”112的数目也与图8A相同。生动直观地说明了使用本发明所述空间分辨率算法的益处。
本发明的另一方面是使用以下描述的、由GPU将资源或者帧渲染到任意帧缓冲区或者直接显示的一个元件或任何元件组合,采用能够处理图形的CPU、或任何通用处理器、或专用处理器来渲染任何帧缓冲区或显示,例如专用于处理光线追踪或路径跟踪的处理器,或被配置为可以进行这种处理的任何处理器。本发明的另一方面是由多个处理器,如CPU,GPU,或者不同的组合方式进行处理,无论它们是独立或集成处理器。
本发明所述的发明可以由计算机程序在通用计算机上实现,可以设想,该发明旨在由不同的软件、固件或硬件的组合来实现,例如,用户界面和/或控制面板,并将其设计为使用图形系统的最终用户或使用图形系统的开发人员,或两者兼备。根据一个非限制性的实施例,本发明在下文展示了一个使用并修改由DirectX进行渲染的API的实施例。在这个实施例中的本地应用程序可以使用DirectX API,DirectX运行时会与GPU厂商(如NVIDIA或AMD)提供的驱动模块交流。在多重采样抗锯齿(MSAA)算法的D3D11_TEXTURE2D_DESC命令发送到CreateTexture2D()函数时,会包括SampleDesc类型的变量。这种SampleDesc类型包括两个参数:计数–定义每个像素的样本数量,质量–控制由供应商定义的其他行为确定,如不同的采样模式。根据本发明在下文所述的另一个非限制的实施例,一个本地应用程序使用OpenGL API,通常是通过一个非常薄的层,只是简单的对GPU厂商提供的驱动程序调用进行了重定向。新的功能可以通过添加OpenGL/GLES扩展包而添加到GPU。开发人员可以通过专用接口请求和调用,最终用户也可以通过专用接口修改、定义或控制这种可支持的扩展。本发明所述的非限制方法和实施例可以在全部或部分范围内进行改变或组合。
实施例A:
在DXGI_SAMPLE_DESC类型的上层,CreateTexture2D函数也会接受到一个新参数,DXGI_SPATIAL_SAMPLE_DESC类型如下所述:
实施例B:
将DXGI_SAMPLE_DESC类型扩展为:
选项C:
添加一种特殊格式,能够使用特殊分辨率:
CreateTexture2D(…,format=0xFFDD,…)
0xFFDD指的是使用特殊分辨率
更多的非限制性实施例如下所示,这些实施例是将本发明应用在在支持所有桌面操作系统的OpenGL中或是支持移动设备操作系统(Android或iPhone等)的GLES中。众所周知,对本领域技术人员,下面的实施例是将公知的抗锯齿算法(如MSAA)应用在OpenGL环境:
glGenTextures(1,&tex);
glBindTexture(GL_TEXTURE_2D_MULTISAMPLE,tex);
glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE,num_samples,GL_RGBA8,width,height,false);
以下是在OpenGL/GLES环境中应用空间分辨率系统的两个非限制性实施例,这是本发明在某些方面的主题:
选项A:
添加另外一个参数到glTexImage2DMultisample:
例如,添加另外一个传递空间分辨率请求的样本数量参数。
glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE,num_samples,num_spatial_samples,poi_type,GL_RGBA8,width,height,false);
类似的,使用glTextImage2D函数,这是不使用MSAA的版本。glTextImage2D函数将会变为:
glTexImage2D(GL_TEXTURE_2D,0,num_spatial_samples,poi_type,GL_RGBA8,width,height,…);
选项B:
添加另外一个函数,用来定义当前区域纹理的空间分辨率。
glGenTextures(1,&tex);
glBindTexture(GL_TEXTURE_2D_MULTISAMPLE,tex);
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA8,width,height,…);
glSpatialResolution(sample_count,poi_method);
另外一个实施例,将这个理论方法与MSAA结合在一起:
glGenTextures(1,&tex);
glBindTexture(GL_TEXTURE_2D_MULTISAMPLE,tex);
glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE,num_samples,GL_RGBA8,width,height,false);
glSpatialResolution(sample_count,poi_method);
其他的开发者级别的控制方法可采用通用选项的API,例如:
EnableSpatialResolution(sample_count,poi_method);
DisablePatialResolution()
在本发明的另一方面,渲染通道可能发生一点改变,其无需上述讨论的多采样。(如果需要的话,空间分辨率功能性可能,然而,仍然与“本地”多-采样-抗-锯齿功能性相接合)。
POI分析器(可以是图形管道API用户固定的或可编程的)样本像素值决定是否所述像素是POI或PNOI,这些术语如前定义和讨论,以及在被渲染图像的不同区域选择不同的分辨率。仅通过举例的方式,上述讨论的选择POI可能以若干种方式进行,正如本发明说明书的第7和8页讨论的那样。
渲染是在所需的最终分辨率的缓冲区进行的,根据所要显示的图片的区域,渲染为不同分辨率的像素。举例来说,一个由POI分析器选择的将被高细节/高分辨率的像素可能完全由”标准的”片段/像素着色器计算每个像素。然而,被分类为不重要的区域可能具有计算用于整个补丁的单一像素值,例如,尺寸为2×2。所计算的值可以被重映射到在该补丁中发现的所有像素的所计算的值的相同拷贝,或者所计算的单一像素值可以作为基础插值随着相邻像素(也可以来自于其他像素/补丁)使用。
所述的拉伸-重映射步骤可以在当前渲染图片的渲染完成之后作为额外步骤发生,也可以在任何渲染指令下发生,无需添加额外步骤。
在渲染指令级没有额外的步骤,以这种方式执行的优点是其可以更为友好的缓存,也可以避免调用“临时”缓冲区。另外一个重要的优点是,在透支(overdraw)(像素值在框架期间被更换,通常是由于物体的彼此遮蔽以及渲染顺序)的案件中,拉伸器-重映射器将不会被超过时间量激活,同时,在α-结合和/或α-测试和/或深度测试和/或模板测试或剪裁/测试以及其他光栅操作中,所述的拉伸器-重映射器将对后拉伸操作片段/像素起作用。
在另一方面,进行单独的拉伸-重映射步骤的优点是如果使用插值,其具有拉伸-重映射步骤已知的所有相邻像素。在这个图形管道的新的改变中,像素/片段着色器保持不变,或者需要很小的改变。这是十分重要的,因为它使得在设计硬件和/或支持建议的图形管道改变的固件时,技术方案更加容易实现。此外,移植(porting)现有内容方面也是非常重要的,通常有几十个,有时甚至上百个现有像素/片段着色器,要求对这些着色器没有改变,或者极小的改变。
在光栅化和片段/像素着色器中以典型的图形管道放大,其他的职责之中,在附图9A的框图中示出的光栅化负责决定如何以及在何处调用像素片段/着色器。在本发明中,哪个以及多少片段/像素着色器计算的选择实例的调用是基于(其他标准事件之中)所述的POI分析器。在应用了POI分析器的情况下,所述的光栅化可以使用所述的POI功能,或者可以以自身实现该功能。所述的POI分析器可以是固定的或可编程的。
在POI分析器为固定的情况下,其是一种伴随可能的参数列表的支持模式。作为一个实施例,一种模式可以是几何边缘,一个参数是多少可以“扩大”(延伸)检测到的边缘,从而防止在检测到的边缘的孔洞。这仅是一个实施例,然而,如前所述,还有更多其他可能的POI选择模式。除了前述的这些API改变的实施例(“gl空间分辨率”和本说明书前述的选择B等)之外,另外一种可能性是在所述的片段/像素着色器中添加关键词。一个简单的实施例可能是添加“POI GeomEdge dilate=3.7(POI几何边缘扩大=3.7)”,其配置所述的POI分析器被激活,并设置其模式从而为几何边缘发现的像素提供更高的分辨率,同时也使用参数3.7来扩大选择从而描述扩大了多少。
在所述的POI模块是可编程的情况下,一个新的着色器类型被引入所述的图形管道,即PixelResolutionShader(像素分辨率着色器)。该着色器的输入是决定在其中或随着标准可用资源而着色的像素区域,例如,缓冲区、纹理、着色器常量等,该着色器的输出是在问题区的像素区域的分辨率。作为本发明的多功能性的一个实施例,一个具有100片段着色器的现有内容可以保持全部片段着色器不变,或者几乎全部内容不变。开发人员可以编写PixelResolutionShader(像素分辨率着色器)的单一编码,并由API指令(例如上述选择B的“gl激活空间”)激活空间分辨率或者通过在片段着色器的顶部添加单独行,例如“POI on(开启POI)”。此操作可以自动完成编译所述的着色器并因此对所述像素着色器产生极小的变化,并且对其实际逻辑没有改变。另外一个实施例是添加一个指令,例如PRSSetShader(…)(其中PRS=PixelResolutionShader(像素分辨率着色器)),其设置了激活像素分辨率着色器,并且当需要关闭可编程的像素分辨率着色器时,通过PRSSetShader(NULL)。虽然上述相关的所有图形为导向的平台,其是特别有价值的移动设备,由于各种操作系统和设备的优势,其中容易移植和支持多种平台是一个强大的优势。
无论所述的POI是固定的还是可编程的,与现有技术文献相比,例如,由He等人所著的“Extending the Graphics Pipeline with Adaptive,Multi-Rate shading(采用自适应、多速率的图形管道的扩展)”(ACM Transaction on Graphics(TOG)-Proceedings ofACM Siggraph 2014,Vol.33,Issue 4,July 2014)(下文简称为“多速率文章(MultiratePaper)”),本技术具有一个效率上的大的优势。这可以很容易地通过一个简化的案例表明,即在附图10中示出的理论化的4×2的图片的两个2×2区域。在附图10中,左侧的2×2补丁是由POI分析器选择的要提高分辨率的区域。圆圈描述了POI模块调用,X标记片段/像素着色器调用,而箭头描述了拉伸-重映射操作。
在此图中很明显可以看出仅需要总数为5的片段/像素着色器调用。这比本地8片段/像素要少,也比在多速率文章中提到的8粗/稀疏(coarse/sparse)着色器调用要少。这是尤为重要的,因为每个可编程的着色器调用具有其成本,这个成本是很高的,因为其不能被充分提前优化。
所述的拉伸-重映射功能,如果超出固定的功能之外的功能是必需的,无论是在单一渲染操作内完全操作来实现的场景中,还是在作为单独步骤实施的场景中,也可能是作为可编程的着色器来实施,允许图形渲染API的用户/开发者的更多的控制。这会具有效率较低的缺点,然后是固定功能的缺点,但是会更为灵活。
在附图9A和9B中,所显示的箭头从像素分辨率阶段到其本身,从像素分辨率阶段到光栅化阶段,以及从像素着色阶段回到像素分辨率阶段,描述了一个迭代过程,其中区域分辨率根据需要逐渐增长。举例来说,在一个N×M的补丁区域,其像素分辨率阶段可以首先渲染k1片段/像素,进行计算(作为一个简单的实施例,检查不同的值),如果需要的话,将渲染的片段/像素的量增加到k2片段/像素中,达到(N×M)片段/像素的水平。所述的过程可以在模块之间进行来回的调用,或者可以在一个模块的内部发生。
我们现在提供非限定性的示范代码,其示出了所述像素分辨率着色器和拉伸重映射着色器的操作。
本文所描述的所有实施方案都可以在包含图形管道功能的硬件/固件中实施。统一的着色器如维基百科中所述的“统一着色器模型(Unified Shader model)”或者任何可以用于可编程着色器的过程任务的计算单元,例如像素分辨率着色器和/或重映射着色器。在所提及的着色器中的固定功能的情况下,可以更为有效的使用“硬编码/硬连线”功能来实现,对灵活性和效率(性能/热量/电池)进行折中。同时,可以创建固定的代码来支持固定的功能,而不是提供用户一种提供自定义着色器代码的方法。现有的光栅化模块可以被改进从而支持所述的像素分辨率阶段(固定的和/或可编程的)和/或重映射阶段(固定的/或可编程的)。它可以实现所述像素分辨率阶段和/或重映射阶段自身的等同功能。
我们现在将要讨论的是本发明中通过几个非限定性的实施例的使用的硬件实现。为了说明空间分辨率可以被添加到现有的GPU架构来利用其优点,附图11A、12A和13A视乎了现有技术中硬件实现,而附图11B-11E、12B-12D以及13B-13D示出了对已知硬件结构增加空间分辨率功能的示范性的硬件实现。值得注意的是,通过所述的POI分析器进行的实际过程可能发生在模块自身之内(最有可能的是固定功能,在几个预定模式之间选择)和/或通过发布决定的POI像素的任务和/或着色器单元的像素区域。所述的POI分析器模块可以是独立的模块或者被设置在像素任务发布/过程模块中和/或在光栅化阶段模块之内。本发明提供了移动和桌面领域的实施例。该技术可以应用于基于渲染和非基于渲染的设备(基于渲染的设备在移动设备中更为常见)。
附图11A示出的是现有技术中Mali GPU架构的实施例,ARM Holding(英国ARM公司)可用的移动GPU。附图11B如本发明所述的添加了POI分析器模块。附图11C同时添加了POI分析器和拉伸/重映射模块。附图11D示出了可替换的实施方案,其中的片段队列模块(Fragment Queue Module)包括POI分析器,以及附图11E与附图11D相似,但是同时添加了拉伸/重映射器。
附图12A示出了现有技术中PowerVR GPU架构的另一个实施例,在移动设备环境中,在Imagination Technologies公司可用。附图12B添加了POI分析器,而附图12C包括拉伸/重映射模块。附图12D示意性地示出了可以包含在负责请求内核处理像素/片段相关任务或负责自身处理的任何POI分析器和/或拉伸/重映射器。虽然在图中没有说明,但是也可能具有作为独立单元的拉伸/重映射模块,同时具有被置于片段化模块内部的POI分析器模块,反之亦然。
附图13A示出的是现有技术中GeForce GPU的一个实施例,可用于NVidia公司的桌面GPU。附图13B添加了POI分析器,而附图13C也添加了拉伸/重映射模块。附图13D示出的是POI分析器模块和/或拉伸/重映射模块,其可以包含在负责片段/像素处理的模块之内(无论是问题片段/像素处理请求或处理所述命令自身)。
如上所述,本发明的另一方面也能生成控制面板或用户界面并且使之生效,控制面板或用户界面可以通过本地应用程序或通过GPU图形用户界面来控制激活、或注销、或任何与空间分辨率系统的功能或操作有关的参数。这样的控制面板或用户接口可以让图形应用程序的程序员、开发者、最终用户实现下列功能:启用或禁用一个空间分辨率系统,选择POI或POI的类型,选择的采样点的数量或范围,选择所选的采样点的空间分布,采样点所使用的数组或子数组的数目,以及任何上述数组或子数组的方向。除了空间分辨率参数,这样的控制面板或用户界面可以提供对其他参数的访问控制。例如,用户可以选择一个抗锯齿的首选方法来应用到空间分辨率系统中。此外,这样的控制面板可以做到让使用者选择与整体用户体验相关的任何偏好的参数,或一组参数,或允许的参数范围。根据本发明的另一个方面,空间分辨率系统可以从一个能够收集用户体验因素相关信息的数据采集器得到输入数据,用户体验因素可以由用户选择或由一个自动模块进行动态的调整。这些数据是基于用户体验因素来进行空间分辨率的系统参数优化。
根据本发明的另一实施方案所公开的内容,开发人员或用户界面或控制面板可以通过空间分辨率控制器来激活或注销GPU。上文所述的任何一个或一系列的空间分辨率控制器的参数,都可由开发人员或用户采用这样的接口并通过专用的API来定义。这样的控制和定制过程可以由用户或开发人员用来定义偏好,例如POI的类型,采样点的数量和分布,算法的选择和用此算法进行递归采样的操作范围,虚拟像素到渲染像素(或类似)的转换率。如果由用户完成该操作,最有可能是在一个场景或应用程序级别上完成。如果由开发人员完成,很可能在帧级甚至在一个或一组资源的级别,通过标记GPU来实现。上述两种方案也可以进行任何组合。
所述主题的各种实现可以通过数字电子电路,集成电路,专门设计的ASIC(专用集成电路),计算机硬件,软件,固件,和/或它们的组合来完成。这些不同的实现应当包括一个或多个计算机程序,程序可以在可编程系统上执行和/或解释。所述可编程系统包含至少一个可编程处理器(专用的或通用的),并包含一个用于从处理器接收、传输数据和指令的存储系统,至少一个输入设备,和至少一个输出装置。
这些计算机程序(也被称为程序,软件,软件应用程序或代码)包括机器指令,由可编程的处理器进行处理,并可以使用高级语言和/或面向对象的编程语言,和/或汇编/机器语言来实现。本文所使用的术语“计算机可读介质”,是指任意计算机程序产品,装置和/或设备(例如,磁盘,光盘,存储器,可编程逻辑器件(PLD)),用来向可编程的处理器提供机器指令和/或数据,包括一个通过机器可读信号接收机器指令的机器可读介质。术语“机器可读信号”是指用来向可编程处理器提供机器指令和/或数据的任何信号。
为了与用户交互,所述主题应当在计算机上进行具体实现,计算机应当具有显示装置(例如,CRT(阴极射线管)或LCD(液晶显示)显示器)来为用户显示信息,键盘和指点设备(例如,鼠标或轨迹球)使用户可以给计算机提供输入。其他类型的设备也可用来与用户交互,例如,给用户提供任何形式的感觉反馈(例如,视觉反馈,听觉反馈,或触觉反馈);以任何形式从用户接收输入,包括声学,语音或触觉输入。
所述主题可以在包括后端组件(例如,数据服务器)的计算系统中实现,或者包括中间件组件(例如,应用服务器),或包括前端组件(例如,包含图形用户界面或网络浏览器的客户端计算机,使得用户可以与所述主题的一种实现进行互动),或任何上述后端,中间件或前端组件的组合。系统的组件可以通过任何形式的数字数据通信(例如,通信网络)互连。通信网络包括本地局域网(“LAN”)、广域网(“WAN”)和因特网。
计算系统包括客户端和服务器。客户端和服务器之间一般都是远程的,通常是通过通信网络进行交互的。客户端和服务器之间的关系是凭借在各自计算机上运行的计算机程序而产生的,相互之间是客户端-服务器的关系。
虽然一些变化已经在上文详细描述,其他的修改也是可能的。例如,上述的实施例可被引导到各种组合和所公开特征的子组合和/或组合和上述公开的若干进一步特征的子组合。此外,在附图和本发明中所描述的逻辑流程不要求按照所示的特定顺序,或连续顺序才能达到期望的结果。其他实施例也在以下权利要求的范围之内。
Claims (7)
1.一种在图形系统中产生用于显示的输出像素的计算机实现方法,该方法包括如下步骤:对一个或多个像素执行渲染操作,所述的渲染操作包括以下步骤:使用信息像素POI分析器确定:
(a)像素为要增加分辨率的POI像素还是非信息像素PNOI;
(b)为所述的POI像素和所述的PNOI像素选择不同的分辨率;
其中,所述的POI分析器是固定的或可编程的其中之一;
其中,如果所述的POI分析器是固定的,调用参数列表中的一个或多个参数;以及
其中,如果所述的POI分析器是可编程的,调用像素分辨率着色器。
2.根据权利要求1所述的计算机实现方法,其中所述的方法使用非闪存计算机可读介质执行,其上存储程序,使得所述的图形系统中的图像处理器单元执行权利要求1所述的步骤。
3.根据权利要求1所述的计算机实现方法,其中所述的方法使用专用计算机硬件单元实现。
4.根据权利要求1所述的计算机实现方法,其中所述的步骤在单一通道实现。
5.根据权利要求1所述的计算机实现方法,其中所述的步骤在多个通道实现。
6.一种在图形系统中产生用于显示的输出像素的计算机实现方法,该方法包括如下步骤:对一个或多个像素执行渲染操作,所述的渲染操作包括以下步骤:使用信息像素POI分析器确定:
(a)像素为要增加分辨率的POI像素还是非信息像素PNOI;
(b)为所述的POI像素和所述的PNOI像素选择不同的分辨率;
该方法进一步包括在渲染操作完成之后执行拉伸-重映射步骤;
其中所述的拉伸-重映射步骤是固定的或可编程的其中之一。
7.根据权利要求6所述的计算机实现方法,其中,在显示之前,以所需的最终分辨率在缓冲区执行渲染。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/956,976 US9536282B2 (en) | 2015-01-14 | 2015-12-02 | Method and apparatus for controlling spatial resolution in a computer system |
US14/956,976 | 2015-12-02 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106815800A CN106815800A (zh) | 2017-06-09 |
CN106815800B true CN106815800B (zh) | 2020-12-08 |
Family
ID=59106260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610139511.0A Active CN106815800B (zh) | 2015-12-02 | 2016-03-11 | 用于在计算机系统中控制空间分辨率的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106815800B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10395624B2 (en) * | 2017-11-21 | 2019-08-27 | Nvidia Corporation | Adjusting an angular sampling rate during rendering utilizing gaze information |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101866476A (zh) * | 2009-04-17 | 2010-10-20 | Arm有限公司 | 生成和解析图形处理流水线内的像素值 |
EP2383695A1 (en) * | 2010-04-28 | 2011-11-02 | Max-Planck-Gesellschaft zur Förderung der Wissenschaften e.V. | Apparent display resolution enhancement for moving images |
CN102651127A (zh) * | 2012-04-01 | 2012-08-29 | 深圳市万兴软件有限公司 | 一种超分辨率重建的图像处理方法及系统 |
US8619083B2 (en) * | 2009-01-06 | 2013-12-31 | Microsoft Corporation | Multi-layer image composition with intermediate blending resolutions |
CN104978738A (zh) * | 2014-04-09 | 2015-10-14 | 鹦鹉股份有限公司 | 检测数字图像中的兴趣点的方法 |
-
2016
- 2016-03-11 CN CN201610139511.0A patent/CN106815800B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8619083B2 (en) * | 2009-01-06 | 2013-12-31 | Microsoft Corporation | Multi-layer image composition with intermediate blending resolutions |
CN101866476A (zh) * | 2009-04-17 | 2010-10-20 | Arm有限公司 | 生成和解析图形处理流水线内的像素值 |
EP2383695A1 (en) * | 2010-04-28 | 2011-11-02 | Max-Planck-Gesellschaft zur Förderung der Wissenschaften e.V. | Apparent display resolution enhancement for moving images |
CN102651127A (zh) * | 2012-04-01 | 2012-08-29 | 深圳市万兴软件有限公司 | 一种超分辨率重建的图像处理方法及系统 |
CN104978738A (zh) * | 2014-04-09 | 2015-10-14 | 鹦鹉股份有限公司 | 检测数字图像中的兴趣点的方法 |
Non-Patent Citations (1)
Title |
---|
基于感兴趣区域的空域分辨率可调整方法;鲁书喜等;《平顶山学院学报》;20100430;第25卷(第2期);第96-99页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106815800A (zh) | 2017-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9508121B2 (en) | Method and apparatus for controlling spatial resolution in a computer system by rendering virtual pixel into physical pixel | |
US10885607B2 (en) | Storage for foveated rendering | |
US10362289B2 (en) | Method for data reuse and applications to spatio-temporal supersampling and de-noising | |
KR102475212B1 (ko) | 타일식 아키텍처들에서의 포비티드 렌더링 | |
US9747718B2 (en) | System, method, and computer program product for performing object-space shading | |
US9754407B2 (en) | System, method, and computer program product for shading using a dynamic object-space grid | |
US9536282B2 (en) | Method and apparatus for controlling spatial resolution in a computer system | |
US8111264B2 (en) | Method of and system for non-uniform image enhancement | |
CN110383337A (zh) | 可变速率着色 | |
CN104978760A (zh) | 映射多速率着色到单片程序 | |
US10140268B2 (en) | Efficient browser composition for tiled-rendering graphics processing units | |
US7605825B1 (en) | Fast zoom-adaptable anti-aliasing of lines using a graphics processing unit | |
US11089320B2 (en) | Adaptive pixel sampling order for temporally dense rendering | |
KR20210095914A (ko) | 가변 레이트 셰이딩과 슈퍼 샘플 셰이딩의 통합 | |
US11170566B2 (en) | Multi-rate shading using replayed screen space tiles | |
US11120609B2 (en) | Reconstruction for temporally dense ray trace rendering | |
WO2013142506A1 (en) | Methods and systems for enhanced quality anti-aliasing | |
US10417813B2 (en) | System and method for generating temporally stable hashed values | |
US12067649B2 (en) | Per-pixel variable rate shading controls using stencil data | |
CN106815800B (zh) | 用于在计算机系统中控制空间分辨率的方法和装置 | |
JP2023530309A (ja) | ビニングハードウェアにおけるきめ細かなリプレイ制御 |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20180808 Address after: American California Applicant after: Google limited liability company Address before: Israeli nanitania Applicant before: LUCIDLOGIX TECHNOLOGIES LTD. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |