3D图形渲染方法和设备与流程

文档序号:11922530阅读:747来源:国知局
3D图形渲染方法和设备与流程

技术领域

以下描述涉及执行三维(3D)渲染的图像处理技术。



背景技术:

在三维(3D)计算机图形中,图形管线(graphics pipeline)或渲染管线(rendering pipeline)表示被配置为通过分阶段或管线方法将3D图像产生为二维(2D)光栅图像或光栅化图像信息的一个或更多个处理器。

图形管线包括被配置为对3D对象的顶点信息执行数学运算以向3D对象提供特殊效果的顶点着色器以及被配置为计算每个像素的颜色的像素着色器。顶点着色器可基于顶点信息执行例如将3D对象改变到特殊位置和改变纹理或颜色的操作。像素着色器可应用例如从纹理读取颜色、施加光以及对阴影、反射光或透明度进行处理的复杂操作。



技术实现要素:

提供本发明内容以用简化的形式介绍对在下面的具体实施方式中进一步描述的构思的选择。本发明内容不是旨在确定所要求保护主题的关键特征或必要特征,也不是意图被用作帮助确定所要求保护主题的范围。

在一个总体的方面,一种用于渲染三维(3D)场景的3D渲染方法,所述方法包括:确定3D场景中将被执行着色的所选着色点,对所确定的着色点执行着色,并基于对所确定的着色点执行着色的结果来确定3D场景的着色信息。

确定3D场景中将被执行着色的所选着色点的步骤可以基于针对3D场景的区域的所确定的着色级别,并且与确定针对3D场景的另一区域的所选着色点的步骤不同。

确定3D场景中将被执行着色的所选着色点的步骤导致不同数量的着色点可根据以下事项而被确定:代表不同着色复杂度的多个着色级别中的哪个着色级别根据对3D场景的区域的时间分析和/或空间分析被确定为所述针对3D场景的区域的所确定的着色级别。

确定3D场景中将被执行着色的所选着色点的步骤可包括:将少于3D场景的区域的全部顶点的顶点确定为被执行着色的着色点。

将少于3D场景的区域的全部顶点的顶点确定为被执行着色的着色点的步骤还可包括:将3D场景的区域中的3D对象上的至少一个非顶点点确定为也被执行着色的着色点。

将少于3D场景的区域的全部顶点的顶点确定为被执行着色的着色点的步骤可包括:确定3D场景的区域中没有顶点被选为着色点。

将少于3D场景的区域的全部顶点的顶点确定为被执行着色的着色点的步骤可包括:确定着色点包括3D场景的区域的至少一个顶点。

确定着色点包括3D场景的区域的至少一个顶点的步骤可包括:确定着色点包括3D场景的区域的全部顶点。

所述方法还可包括:基于对少于3D场景的区域的全部顶点的所述顶点的一个或更多个着色的结果,针对除少于3D场景的区域的全部顶点的所述顶点之外的3D场景的区域的其余顶点对着色值进行插值,并通过从所确定的3D场景的着色信息确定像素颜色值来渲染图像。

确定3D场景中将被执行着色的所选着色点的步骤可包括:将3D场景中的3D对象的全部顶点和3D对象上另外的点确定为将被执行着色的所选着色点。

确定3D场景中将被执行着色的所选着色点的步骤可基于对3D场景的空间特征和时间特征的多个分析中的至少一个分析。

确定3D场景中将被执行着色的所选着色点的步骤还可包括:基于以下项中的至少一项来确定所选着色点:与虚拟光源关联的信息、与虚拟相机关联的信息、与3D场景中的3D对象关联的信息以及对先前图像帧执行着色的结果。

与虚拟光源关联的信息可包括与虚拟光源的位置、颜色、亮度、方向、角度和移动速度中的至少一个相关的信息,与虚拟相机关联的信息可包括与虚拟相机的位置、方向、角度和移动速度中的至少一个相关的信息,与3D对象关联的信息可包括与3D对象的形状、颜色和材料中的至少一个相关的信息。

确定3D场景中将被执行着色的所选着色点的步骤还可包括:将3D场景中的顶点分组成不同的顶点组,并针对每个顶点组确定至少一个所选着色点。

将3D场景中的顶点分组成不同的顶点组的步骤可包括:基于以下项中的至少一项将顶点分组成不同的顶点组:顶点各自的位置、顶点各自的法线、对先前图像帧执行着色的结果以及哪些顶点用于相同的3D对象。

确定3D场景中将被执行着色的所选着色点的步骤还可包括基于以下项中的至少一项针对所述不同的顶点组中的每个顶点组确定着色级别:虚拟光源的移动、虚拟相机的移动、3D对象的移动、邻近顶点之间的亮度差以及顶点组中的顶点的位置。

确定3D场景中将被执行着色的所选着色点的步骤还可包括:基于针对每个顶点组分别确定的着色级别,确定每个顶点组的将被执行着色的各个着色点。

将3D场景中的顶点分组成不同的顶点组的步骤可包括:针对每个顶点组确定与顶点关联的各自的层次结构信息,其中,每个层次结构信息表示针对每个顶点组的多个不同复杂度级别,针对每个顶点组确定至少一个所选着色点的步骤可包括:基于从所述各自的层次结构信息分别确定了哪个复杂度级别来对每个顶点组进行着色,针对每个顶点组选择各自不同的着色点。

确定3D场景的着色信息的步骤可包括:通过对被执行着色以确定它们各自的着色值的着色点的各自的着色值之中的着色值进行插值,来确定与被执行着色以确定它们各自的着色值的着色点邻近的顶点的着色值,而无需执行着色。

所述方法还可包括:通过对所确定的着色点的着色值进行插值来确定通过渲染3D场景所获得的图像中的像素的颜色值,作为在确定三维场景的着色信息的步骤中所确定的。

确定三维场景的着色信息的步骤可包括:将着色点各自的着色值和顶点的着色值存储在纹理缓冲器中。

所述方法还可包括:使用存储在纹理缓冲器中的着色值来执行像素着色操作,以确定图像中的像素的颜色值从而渲染图像。

对确定的着色点执行着色的步骤可包括:基于直接光源和间接光源中的至少一个的照明效果,确定所选着色点的颜色值,其中,照明效果可包括遮挡的阴影效果。

在另一总体的方面,一种非暂时性计算机可读存储介质可存储当被处理器执行时使得处理器执行这里描述的一个或更多个或全部方法的指令。

在另一总体的方面,一种三维(3D)渲染设备可包括至少一个处理器,所述至少一个处理器被配置为:确定3D场景中将被执行着色的所选着色点;对所确定的着色点执行着色;并基于对所确定的着色点执行着色的结果来确定3D场景的着色信息。

所述设备还可包括:至少一个存储器,存储用于使所述至少一个处理器实施以下操作的计算机可读指令:确定3D场景中将被执行着色的所选着色点的操作、对所确定的着色点执行着色的操作以及基于对所确定的着色点执行着色的结果来确定三维场景的着色信息的操作,其中,所述至少一个处理器被配置为执行指令。

处理器可被配置为执行指令,使得处理器还被配置为:基于当前顶点与屏幕之间的距离以及当前顶点是否位于阴影区域内中的至少一项,确定是否在后续图像帧中更新当前顶点的着色值。

确定3D场景中将被执行着色的所选着色点的操作可包括:在不对与均被执行着色以确定它们各自的着色值的所确定的着色点和另一非顶点着色点邻近的至少一个顶点执行着色的情况下,通过对所述各自的着色值中的着色值进行插值,确定所述至少一个顶点的着色值。

确定3D场景中将被执行着色的所选着色点的操作可包括;将3D场景中的顶点分组成顶点组,并基于着色级别,针对每个顶点组确定至少一个着色点。

在另一总体的方面,一种三维(3D)渲染设备可包括:图形管线,包括顶点着色器和像素着色器;着色点着色器,被配置为:确定3D场景中将被执行着色的所选着色点,对所确定的着色点执行着色,并基于对所确定的着色点执行着色的结果来确定3D场景的着色信息。

着色点着色器可将着色信息存储在纹理缓冲器中,像素着色器可基于存储在纹理缓冲器中的着色信息产生像素颜色信息以渲染图像。

着色点着色器可从3D场景的由顶点着色器针对着色点着色器所识别的顶点之中确定所选着色点。

通过下面的具体实施方式、附图和权利要求书,其他特征和方面将是清楚的。

附图说明

图1是示出用于解释一个或更多个实施例的三维(3D)场景和3D场景中的顶点结构的示例的示图。

图2是示出3D渲染方法的示例的流程图。

图3是示出确定着色点的方法的示例的流程图。

图4是示出确定着色点的示例的示图。

图5是示出基于着色级别来确定着色点的示例的示图。

图6是示出基于对着色点执行着色的结果来确定顶点的着色值的示例的示图。

图7是示出基于着色点的着色值确定渲染后的图像的像素值的示例的示图。

图8A和图8B是示出直接光源与间接光源之间的关系的示例的示图。

图9是示出3D渲染设备的示例的示图。

图10A和图10B是示出3D渲染设备的的示例的示图。

贯穿附图和具体实施方式,相同的附图参考标记表示相同或相似的元件。附图可不按比例,并且为了清楚、说明和方便,附图中的元件的相对大小、比例和描述可被夸大。

具体实施方式

提供以下具体描述以帮助读者获得对这里描述的方法、设备和/或系统的全面理解。然而,在理解本申请的公开之后,这里描述的方法、设备和/或系统的各种变形、修改和等同形式将是显而易见的。例如,这里描述的操作顺序仅仅是示例,并不限于这里阐述的这些,而是除了必须以特定顺序发生的操作以外,可如在理解本申请的公开之后将显而易见的那样被改变。此外,为了更加清楚和简明起见,对本领域已知的功能的描述可被省略。

这里描述的特征可以以不同的形式实现,并且不被解释为受限于这里所描述的示例。相反,已经提供了这里描述的示例仅为了示出在理解本申请的公开之后将显而易见的实施这里描述的方法、设备和/或系统的多种可行方式中的一些方式。

这里使用的术语仅是用于描述特定示例的目的,而不是用于限制本公开。如这里所使用,除非上下文明确地另有指示,否则单数形式也意图包括复数形式。如这里所使用,术语“和/或”包括相关列出项中的任意一项或任意两项或更多项的任意组合。如这里所使用,术语“包括”、“包含”和“具有”表明描述的特征、数字、操作、元件、组件和/或其组合的存在,但不排除一个或更多个其他特征、数字、操作、元件、组件和/或其组合的存在或添加。

此外,诸如第一、第二、A、B、(a)和(b)等的术语可在这里用来描述组件。这些术语中的每一个术语不用于定义相应组件的本质、顺序或次序,而是仅用于将相应组件与其他组件区分开。

这里描述的示例的特征可如在理解本申请的公开之后将显而易见的那样以各种方式进行组合。此外,虽然这里描述的示例具有各种各样的配置,但是其他配置如在理解本申请的公开之后将显而易见的那样是可能的。

可应用以下将进行描述的示例,以通过使用相应配置的一个或更多个处理器渲染(即,渲染处理)三维(3D)场景来从3D信息(诸如虚拟对象或捕获的真实世界的对象)产生、创建或转换渲染后的图像或渲染后的图像的信息。3D场景的渲染可包括基于从向3D场景提供照明效果的虚拟光源辐射的光来确定3D对象的颜色的着色(shading)处理。

图1是示出3D场景110和3D场景110的顶点结构140的示例的示图。

在基于顶点的光着色中,仅作为示例,当例如按照顶点级别对3D对象的顶点执行着色时,可通过在执行着色之后对顶点的着色值进行插值来随后确定3D对象的像素的颜色值。仅作为示例,一个或更多个实施例的图形管线可包括顶点着色器(例如,在图形管线中的可选光栅化器前面),所述顶点着色器被配置为对或为3D对象的顶点或顶点信息执行数学运算,并还可例如用于按照顶点级别向最终渲染的3D对象提供特殊效果。3D图形信息可被顶点着色器获得或被提供给顶点着色器,顶点着色器可被配置为产生或确定顶点,或者顶点信息中的一些或全部顶点信息可被顶点着色器获得/被提供给顶点着色器。图形管线还可包括被配置为计算每个像素(例如,诸如由这样的光栅化器产生、识别或输出的像素或从3D对象的顶点信息识别/确定的像素)的颜色的像素着色器。图形管线可以是处理器或硬件处理元件或者处理器或硬件处理元件的组合。此外,根据实施例,可能存在可同步和/或异步运行的许多图形管线。图形管线中的一些或全部图形管线还可被并行地配置。

顶点着色器可被配置为基于顶点信息执行例如按照顶点级别将3D对象的位置改变到诸如归一化空间的空间中的特殊位置中的操作。通常,顶点着色器可被配置为执行一个或更多个另外的计算操作(诸如,添加和/或改变3D对象的纹理或颜色,或者针对按照顶点级别进行光着色的选择性的照明计算)。同样,通常像素着色器可被配置为基于图形管线中的先前运算的结果,实现例如按照像素级别从设置或确定的纹理读取颜色的一个或更多个复杂运算,以最终计算场景、帧、地区、区域、对象或对象部分中的每个像素的颜色。例如,典型像素着色器还可被配置为从定义的光源选择性地施加光,并对阴影、反射光或透明度进行处理,以最终计算每个像素的颜色。此外,根据实施例,图形管线还可包括光栅化器,或者相同的操作可通过图形管线的另一着色器阶段或者顶点着色器或像素着色器二者择一来实现。光栅化是指计算机或计算技术中的表示图像信息的类型或方式,并可包括产生和/或输出例如以预设间隔组织或排序的二维布置的像素。作为示例,可对3D图形信息执行光栅化以产生或输出这样的像素,使得随后能够按照像素级别执行另外的操作,其中,3D图形信息可能不是像素格式的。在一个或更多个实施例中,图形管线中的光栅化器可对因由例如至少一个顶点着色器所执行的操作而产生的顶点信息或顶点执行光栅化。仅作为非限制性的示例,图9示出示例顶点着色器910和像素着色器920。

针对典型顶点着色器,由顶点着色器产生的顶点结构的复杂度可得自于原始或输入的3D图形信息的每个区域的几何复杂度,所以当通常由顶点着色器执行光着色或按照顶点级别执行光着色时,所得着色复杂度可因着色的复杂度或因是否施加了特殊效果(例如,镜面反射和漫反射)而产生。因此,在这样的典型的基于顶点的着色或按照顶点级别执行的光着色中,图1的3D场景110中的每个区域的几何复杂度可不对应于着色复杂度。例如,当执行这样的典型的基于顶点的着色时,尽管需要或期望高着色复杂度(诸如基于典型发光效果的数量或位置),但由于所得顶点的数量因低几何复杂度而较少,因此图像质量可能在区域120中发生劣化。这可被称为作为结果的顶点复杂度方面的欠采样。可选择地,在顶点的数量因高几何复杂度而较大且需要或期望低着色复杂度的区域130中,典型的另外的每个顶点着色操作可能是不必要的。这可被称为作为结果的顶点复杂度方面的过采样。这还与当由典型像素着色器执行典型着色操作时的情况类似,其中,在该情况下,由于可按照像素级别执行着色,因此可能存在不必要数量的被执行的典型着色操。这里,仅作为示例,不必要术语可表示被典型执行的下述一些操作或处理量:如果所述一些操作或处理量未被执行,则整体处理能够耗费更少的时间或更少的处理功率,能够使用更少的能量消耗而被执行,或者能够实现整体增加的渲染帧率。

一个或更多个实施例包括3D渲染方法和设备,所述3D渲染方法和设备可基于3D场景110的空间特征或时间特征适应性地确定将被执行着色的所选着色采样点(也被称为着色点),并对确定的着色采样点执行着色以在不降低渲染后的图像的质量的情况下促使更快的着色(诸如,具有使上述过采样和欠采样最小化的自适应能力)。例如,在顶点的数量与着色复杂度相比较大的区域(例如,区域130)中,3D渲染方法和/或设备的一个或更多个实施例可降低或选择降低着色采样点的密度,以例如与典型地针对每个顶点执行着色相比降低执行着色的次数,并由此提高渲染处理的速度。此外,在顶点的数量与着色复杂度相比较低的区域(例如,区域120)中,3D渲染方法和/或设备的一个或更多个实施例可增加或选择增加着色采样点的密度,以例如与典型地仅针对每个顶点执行着色相比增加执行着色的次数,并由此提高渲染处理的图像质量。

如上面所提到的,可与图形管线结合(诸如,与任意的着色器处理器结合)例如作为单个处理器,或作为分开的自适应着色器处理元件或处理器,来执行自适应着色。在示例中,诸如图9中所示出的,可通过作为与一个或更多个图形管线并行的另一处理器或处理元件的一个或更多个着色点着色器来执行自适应着色。在示例中,图9的一个或更多个着色点着色器930和/或图形管线可被配置为单个处理器、具有多个核的单个处理器或可被可变地设计为包括着色点着色器930和图形管线的这样的处理元件的一个或更多个这样的处理器。关于图9,一个或更多个顶点着色器910和/或一个或更多个像素着色器920可如上所述被配置并与着色点着色器930的自适应光着色相协作地分别进行操作。在示例中,一个或更多个顶点着色器910和/或一个或更多个像素着色器920可被配置或通过例如固件而被控制以如这里所描述的与一个或更多个相应着色点着色器930相协作地进行操作。

例如,正如下面将进一步更详细地解释的那样,当着色复杂度使得例如在顶点中的一个或更多个顶点或全部顶点被用作着色采样点的情况下需要或期望比顶点更多的着色采样点,或者在顶点中的一个或更多个顶点之间的区域中或顶点中的一个或更多个顶点附近的区域中期望更多的着色采样点时,例如,所述一个或更多个着色点着色器930可确定顶点之间或除顶点以外的另外着色采样点,从而单独或者结合全部或所选顶点着色采样点使用以执行光着色。这里,这样的示例需要或期望相同、更多还是更少的着色复杂度可基于3D场景的所确定的空间特征和/或所确定的时间特征,或帧内或帧之间的相应比较,因而场景、帧、地区、区域、对象或对象部分的渲染可被自适应执行以促进更有效的渲染(诸如,与前述仅典型顶点着色器或仅典型像素着色器着色方法相比,在不降低渲染后的图像的质量的情况下渲染更快)。

虽然上面已经讨论了特定实施例或示例,但是应充分主张这样的实施例或示例仅为了示例目的,并不意图限制本公开,另外和/或可选实施例也是可用的。

图2是示出3D渲染方法的示例的流程图。3D渲染方法可由3D渲染设备(例如,图9中示出的3D渲染设备900以及图10A和图10B中示出的3D渲染设备1010和3D渲染设备1015)执行,注意实施例不限于此。因此。下面虽然将通过参照各个3D渲染设备对图2的方法以及图3至图8B的各个方法进行解释,但是实施例可包括(但不限于)这里描述的3D渲染设备中的任意设备或任意组合。

参照图2,在操作210中,3D渲染设备确定3D场景中将被执行着色的着色点(即,上述着色采样点)。3D渲染设备可将3D场景中的任意点确定为着色点。例如,3D渲染设备可将3D场景中的3D对象的顶点所位于的点还有顶点所不位于的点确定为将被执行着色的着色点。着色点可基于3D场景的空间特征和时间特征中的至少一个来确定。将被执行着色的点可基于3D场景的空间特征或时间特征而变化。例如,在一些地区或区域中,着色点可被确定为仅与诸如由顶点着色器在当前帧或先前帧中预定义或确定的相应顶点中的一个或更多个顶点或者全部顶点对应,着色点可被确定为与另外的非顶点着色点和顶点中的一些或全部对应,或者着色点可被确定为仅与另外的非顶点着色点对应。

3D渲染设备可基于例如与被配置为提供照明效果的一个或更多个虚拟光源关联的信息、与被配置为确定观看3D对象的各个视点的一个或更多个虚拟相机关联的信息、与3D场景中的3D对象关联的信息以及先前图像帧的着色信息来确定这样的着色点。例如,与虚拟光源关联的这样的信息可包括与例如虚拟光源的位置、颜色、方向和移动速度、虚拟光源与3D场景中的3D对象之间的距离以及在虚拟光源与3D对象之间形成的角度相关的信息。例如,与虚拟相机关联的这样的信息可包括与例如虚拟相机的位置、方向和移动速度以及在虚拟相机与3D场景中的3D对象之间形成的角度相关的信息。例如,与3D对象关联的这样的信息可包括与例如3D对象的形状、颜色和材料相关的信息,并且先前图像帧的这样的着色信息可包括先前图像帧中使用的顶点的着色值。

在示例中,3D渲染设备可将顶点分组成多个顶点组,并针对将被分别执行着色的每个顶点组确定一个或更多个着色点。例如,所述方法可包括:基于3D场景的空间特征或时间特征确定当前场景、帧、地区、区域、对象、对象部分或相应顶点组的着色复杂度。确定着色复杂度的步骤可包括:对这样的场景、帧、地区、区域、对象、对象部分或相应顶点组内和/或之间的空间特征和/或时间特征进行比较,以确定是期望细着色还是粗着色,或者是期望较大的着色复杂度还是较小的着色复杂度。例如,当确定期望细着色时,例如,除了包括在相应顶点组中的顶点之外,3D渲染设备还可通过将3D场景中的另外的着色点另外确定为着色点来增加将被执行着色的着色点的数量。当确定期望粗着色或较小的着色复杂度时,无论着色点是否是顶点,3D渲染设备都可将包括在相应顶点组中的顶点之中的仅仅一个或仅仅一些顶点或者3D场景中的至少一个着色点确定为着色点。当被确定为必要的或所期望的时,除3D场景中的3D对象的例如相应顶点组的顶点之中的一些顶点之外,3D渲染设备还可将3D场景中的非顶点点确定为着色点。因此,例如,在无需如通过典型顶点着色器光着色方法或典型像素着色器光着色方法会分别执行的那样对3D场景中的3D对象的全部顶点或像素执行着色的情况下,3D渲染设备可通过基于3D场景的空间特征或时间特征确定着色点来更加有效地执行着色。将参照图3提供对通过3D渲染设备确定着色点的更加详细的描述。

在操作220中,例如,在已经确定了着色点之后,3D渲染设备对确定的着色点执行着色。3D渲染设备可通过对着色点执行着色来确定作为着色点的着色值的着色点的颜色值。例如,着色可基于至少一个虚拟光源的照明效果。照明效果可基于从虚拟光源发出的光的特征(例如,光的颜色和方向)和3D场景中的3D对象的特征(例如,3D对象的颜色和材料),并可包括遮挡的阴影效果。虚拟光源可包括被配置为直接向3D对象发出光的直接光源和被配置为从自直接光源发出的光被反射、衍射或折射的区域发出光的间接光源。

例如,图8A和图8B是示出直接光源与间接光源之间的关系的示例的示图。直接光源和间接光源是向计算机图形中的3D对象提供照明效果的虚拟光源。直接光源是被配置为直接向3D对象发出光的虚拟光源,间接光源是被配置为从自直接光源发出的光被反射、衍射或折射的区域发出光的虚拟光源。

图8A示出3D模型中的3D对象820和3D对象830以及直接光源810。虽然出于描述的方便而在图8A中示出单个直接光源,但是多个直接光源可出现在3D模型中。参照图8A,直接光源810直接向3D对象820发出光。基于直接光源810与3D对象820之间的位置关系,在3D对象820将被渲染的虚拟空间中确定亮区域和暗区域。从直接光源810发出的光可被3D对象820反射、衍射或折射。例如,如图8A中所示,从直接光源810输出的光840可被3D对象820反射,并再次被作为另一3D对象的3D对象830(例如,包围3D对象820的墙)反射。可按照虚拟相机815的视点渲染3D对象820和3D对象830,并可将渲染后的图像提供给用户。

除从直接光源810输出的光的直接照明效果之外,3D渲染设备还可施加从间接光源输出的光的照明效果,并产生精细的渲染后的图像。

在另一实施例中,3D渲染设备可通过在3D空间中除布置直接光源之外还布置间接光源来获得更加逼真的照明效果。

例如,图8B示出例如位于从直接光源810输出的光840将被3D对象820反射的区域的间接光源855以及例如位于光840将被3D对象830反射的区域的间接光源850和间接光源860。在渲染3D对象820和3D对象830的操作中,除直接光源810的照明效果之外,间接光源850、间接光源855和间接光源860的照明效果可被施加到3D对象820和3D对象830。间接光源850、间接光源855和间接光源860可受直接光源810的影响,并还受间接光源850、间接光源855和间接光源860所位于的区域的特征的影响。例如,间接光源850、间接光源855和间接光源860的照明效果可受间接光源850、间接光源855和间接光源860中的每一个所位于的3D对象的表面的颜色或材料影响。

回到图2,在操作230中,3D渲染设备基于操作220中执行的着色的结果确定3D场景的着色信息。3D渲染设备可使用插值来确定3D场景的整体着色信息。例如,3D渲染设备可通过对操作220中确定的着色点的着色值进行插值来确定与着色点邻近的顶点(即,在操作220中未执行着色的顶点)的着色值。虽然将顶点与一个或更多个着色点中的每个着色点之间的距离应用作为权值并执行插值的重心插值(barycentric interpolation)可在这里被使用,但是插值不限于这样的重心插值,而且各种类型的插值可被使用。

如上所述,3D渲染设备可存储所确定的操作220中被执行着色的着色点的着色值,并存储通过操作230中的插值确定的顶点的着色值。着色点的着色值和顶点的着色值可被分别存储在例如一个或更多个实施例的图形处理器(GPU)的纹理缓冲器中,并且存储的着色值可用于对后续图像帧执行的着色以及用于针对后续管线操作确定像素的颜色值。此外,着色点和顶点的位置和属性可被存储在纹理缓冲器中。使用存储的着色值,3D渲染设备可减少用于着色操作的计算量或运算量并减少闪烁的发生。在一个或更多个实施例中,作为非限制性的示例,GPU可由图9的顶点着色器910和/或像素着色器920以及着色点着色器930中的一个或更多个的组合或图10A或图10B的处理器1020或处理器1020和存储器1030的组合表示。这里,还注意到,图9的顶点着色器910、像素着色器920和着色点着色器930中的每一个可分别或共同包括用于存储或缓存操作之间的信息的存储器(即,高速缓冲存储器),CPU还可包括或访问可存储例如针对不同场景、帧或对象的用于图形处理并由GPU的图形管线输出的多种3D图形信息的外部存储器。

在示例中,3D渲染设备可自适应地或选择性地更新3D场景的连续图像帧中的顶点的着色值。因此,图像帧中的相应顶点的着色值可根据不同的时间间隔来更新。着色值的更新可包括通过执行着色来确定顶点的着色值。例如,3D渲染设备可通过对每个图像帧执行着色来更新靠近屏幕的顶点(例如,具有表示更加显著或明显的顶点的较小的深度或靠近的位置)的颜色值,并按照预设数量的图像帧的间隔更新距屏幕远或阴影区域中出现的顶点(例如,具有表示不太显著或明显的顶点的远处位置或阴影区域位置)的颜色值,而不是针对每个图像帧更新颜色值。按这种方式,与为了图像质量的目的而不管顶点的显著度或明显度将同时更新所有顶点的着色信息的典型顶点级别着色方法相比,通过观察而可能更加显著或明显的顶点的着色值可比不太显著或明显的顶点的着色值被更频繁地更新。

3D渲染方法还可基于3D场景的着色信息产生渲染后的图像。3D渲染设备可基于着色点的着色值和通过插值确定的顶点中的任意一个顶点的着色值来确定包括在渲染后的图像中的像素的颜色值。例如,3D渲染设备的着色点着色器或像素着色器可通过对一个或更多个着色点的着色值以及与正被渲染的特定像素邻近的一个或更多个顶点的着色值进行插值来确定当前像素的像素值。可对包括在渲染后的图像中的每个像素重复地执行这样的插值,并可通过重复执行插值来产生渲染后的图像。在像素着色器为颜色值确定而执行插值的示例中,由着色点着色器存储到仅作为示例的纹理缓冲器中的着色值可被像素着色器访问或被提供给像素着色器,或者所述着色值可在没有存储在这样的纹理缓冲器中的情况下直接由着色点着色器提供。

图3是示出确定着色点的方法的示例的流程图。

参照图3,在操作310中,3D渲染设备可将3D场景中的顶点分组成多个顶点组。3D渲染设备可基于顶点各自的位置和属性(例如,仅作为示例,基于顶点的法线和颜色,基于对先前图像帧执行的相应着色的结果或基于顶点是否包括在同一3D对象中)将顶点分组成顶点组。作为示例,3D渲染设备可将顶点之中被估计为具有相似属性的顶点设置为顶点组。

在示例中,3D渲染设备可将位置彼此邻近并具有相似属性(例如,法线、深度和颜色)的顶点分组到同一顶点组。3D渲染设备可基于初步的估计或对先前图像帧执行的着色的结果来确定被估计为具有相似属性的顶点。例如,3D渲染设备可将先前图像帧中具有相似颜色的顶点分组成当前帧的同一顶点组。

在另一示例中,3D渲染设备可将包括在相同3D对象中的顶点或具有相似形状特征的顶点分组成相同的顶点组。在又另一示例中,3D渲染设备可基于顶点的颜色随时间(例如,在帧之间)的变化将颜色随时间(例如,在帧之间)变为彼此相似的顶点分组成相同的顶点组,而不管彼此之间的空间分离。

3D渲染设备可针对每个顶点组确定与一个或更多个着色点关联的层次结构信息。层次结构信息可基于将在操作320中被确定的着色级别来定义将被执行着色的着色点的层次结构。例如,层次结构信息可以是将顶点组的顶点组织成一个或更多个不同的级别,其中,所述一个或更多个不同的级别基于确定的着色级别分别限定哪个顶点或非顶点点被确定为着色点或者顶点或非顶点点是否被确定为着色点。在实施例中,还可将层次结构信息视为树结构,例如,在所述树结构中,根据顶点被布置在树结构的哪个级别,可针对顶点和/或可能的一个或更多个非顶点着色点中的一个或更多个的最终着色确定着色采样。因此,在下面,当讨论着色级别时,正如低级别被理解为包括比另一级别更多的着色点的那样,可理解高级别表示包括比另一级别更少的着色点的顶点着色点和/或非顶点着色点的着色采样/集合。例如,当着色级别被调高时,顶点组中将确定的着色点的数量会减少。当着色级别被调低时,顶点组中将确定的着色点的数量会增加。作为供替代的选择,一些高级别和低级别可表示采样点的整体数量相同,但被确定为着色点的顶点的数量分别更少或更多,或者采样点的整体数量相同但非顶点着色点的数量分别更少或更多。

在操作320中,3D渲染设备基于与着色点关联的层次结构信息针对每个顶点组确定着色级别。将被执行着色的顶点组中的至少一个着色点可基于着色级别来确定。这里,包括在顶点组中的顶点中的一些顶点可被确定为着色点,或者3D场景中不是顶点所位于的点的另一点可被确定为示例非顶点着色点。

3D渲染设备可基于所分析出的3D场景的时间特征(例如,虚拟光源、虚拟相机和3D对象基于时间的移动)或所分析出的3D场景的空间特征(例如,顶点的位置和相邻顶点之间的亮度差)确定着色级别或着色级别的变化。这里,基于3D场景的时间特征和/或空间特征分析,可针对顶点组确定不同的着色级别,或可针对顶点组确定转换到更高级别或更低级别的期望。

在时域中,当虚拟光源、虚拟相机或3D对象的移动速度大于各自的阈值时,3D渲染设备可将着色级别调高以例如减少着色点的数量。因此,用于根据典型着色级别执行着色所将花费的时间量可被减少。当选择、需要或确定期望快速的渲染处理时,3D渲染设备可将整体着色级别调高。相反地,当虚拟光源、虚拟相机或3D对象的移动速度小于这样的阈值时,3D渲染设备可为了更精细的表达而将着色级别调低以例如增加着色点的数量。这里,这样的各自的移动速度阈值可相同或不同,并可随着移动速度不同而线性或非线性地改变。

可基于3D场景的时间特征来自适应地确定着色级别。例如,当虚拟相机或3D对象的移动速度较高时(例如,诸如在虚拟相机或3D对象被确定为与在先前帧之间相比在最新帧之间已经移动了更大的量的情况下),着色级别可被调高。相反地,当虚拟相机或3D对象的移动速度较低时,着色级别可被调低。

3D渲染设备可使用先前图像帧的颜色信息估计每个区域基于时间的亮度变化,并将亮度变化大的区域的着色级别调低且将亮度变化小的区域的着色级别调高。为了识别将着色级别调低或调高的充分度,所确定的亮度变化可与各自的可相同或不同并可随着亮度级别不同而线性或非线性地改变的较低/较高的亮度变化阈值进行比较。

当顶点在空间域中位于屏幕的所确定的中心区域中或所确定的或用户选择的感兴趣区域(ROI),或者当相邻顶点之间的亮度变化被确定为大时,3D渲染设备可为了更精细的表达而将着色级别调低。相反,当顶点被确定为位于屏幕的外围,或相邻顶点之间的亮度变化被确定为小时,3D渲染设备可例如为了减少着色点的数量而将着色级别调高,并提高渲染处理的速度。这里,例如,在对当前帧中的相邻顶点执行着色之前,3D渲染设备可使用先前图像帧的着色信息估计当前帧中的相邻顶点之间的亮度差。

3D渲染设备还可针对例如自动地或基于用户交互或选择而被确定或设置为聚焦的区域以及其余区域设置不同的着色级别,或者针对模糊效果被自动设置或被用户设置为应用到的区域以及其余区域设置不同的着色级别。例如,在诸如头戴式显示器(HMD)的基于镜头的装置中,通过用户的眼睛看到的像素的大小和密度可不同。在这样的示例中,3D渲染设备可在将被自动聚焦的中心区域或检测到目光的区域中将着色点的密度设置得相对较高,并针对包括中心区域或检测到目光的区域的地区或区域将着色级别调低。在这个示例中,3D渲染设备可在除中心区域或检测到目光的区域之外的其余区域中将密度设置得相对低,并针对其余区域将着色级别调高。

在示例中,3D渲染设备可例如从最高着色级别开始确定每个顶点组的最佳着色级别,并按照降序贯穿着色级别向最低着色级别进行,其中,最高着色级别是最粗的着色级别。3D渲染设备可贯穿全部着色级别进行或在到达最低着色级别之前在确定的最佳级别停止。例如,3D渲染设备可基于与着色点关联的层次结构信息,将基于第一着色级别执行第一着色的结果与基于第二着色级别执行第二着色的结果进行比较,并可根据比较的结果基于第一着色与第二着色之间的着色级别的差来计算颜色值的差,其中,第一着色级别是最高着色级别,第二着色级别低于第一着色级别。由于根据与着色点关联的层次结构信息,第二着色级别低于第一着色级别,所以在第二着色级别,着色点的数量可大于在第一着色级别的着色点的数量。响应于所计算的颜色值的差小于阈值,3D渲染设备可将作为当前着色级别的第一着色级别确定为当前顶点组的着色级别。相反地,响应于所计算的颜色值的差大于或等于阈值,3D渲染设备可基于第二着色级别和第三着色级别计算颜色值的差,并可确定所计算的差是否小于阈值,其中,第三着色级别是低于第二着色级别的着色级别。响应于所述差小于阈值,3D渲染设备可将第二着色级别确定为当前顶点组的着色级别。3D渲染设备可用更低着色级别重复地执行所计算出的颜色值的差的比较处理,直到将颜色值的差变得小于阈值的着色级别确定为将被应用到当前顶点组的最终着色级别为止,或者直到到达最低着色级别(在这种情况下,最低着色级别被设置为将被应用到当前顶点组的最终着色级别)为止。

从最高着色级别开始确定将被应用到顶点组的最佳着色级别的操作可每当图像帧被渲染时被执行,或可每当相机视点、光源的位置或对象的位置改变时被执行。在另一实施例中,从最高着色级别开始确定将被应用到顶点组的最佳着色级别的操作可不每当图像帧被渲染时执行,而可仅在相机视点、光源的位置或对象的位置改变时或当预定数量的帧或时段已经过去时被执行。然而,示例的范围不限于这里描述的示例。当3D渲染设备确定相机视点、光源的位置或对象的位置的变化在连续图像帧之间不够大时,针对当前图像帧确定着色级别的操作可被省略,并且在先前图像帧中确定的着色级别可被应用在当前帧的着色中。变化的充分性可基于变化是否满足变化阈值。

在操作330中,3D渲染设备可基于着色级别针对每个顶点组确定至少一个着色点,例如,在实施例中,每个着色级别可包括至少一个着色点,一些实施例使每个较低级别比较高级别具有更多数量的可确定的着色点。3D渲染设备可基于每个顶点组的层次结构信息确定根据着色级别将被实际执行着色操作的着色点。

更具体地,针对顶点组的每个着色级别,可根据以下项中的任意一项确定着色点:(1)着色点可包括仅包括在当前顶点组中的全部顶点;(2)着色点可包括全部顶点以及一个或更多个另外的非顶点点;(3)着色点可包括当前顶点组的顶点中的仅一些顶点;(4)着色点可包括顶点中的仅一些顶点以及一个或更多个另外的非顶点点;(5)着色点可包括一个或更多个非顶点点而不包括顶点;(6)针对当前顶点组可不设置或确定着色点,所以可能针对当前顶点组可不执行相应的着色。例如,在整个3D场景中,针对对应于顶点组的区域,包括在顶点组中的全部顶点可根据选项(1)被确定为着色点。针对对应于另一顶点组的区域,不是包括在其他顶点组中的顶点的至少一个点可被确定为着色点。此外,如上面此所提到的,针对不同的顶点组可有所不同的确定着色级别。此外,作为示例,虽然在上面的选项(3)和选项(4)中,顶点中的仅一些顶点可被确定为着色点,但是针对用于不同顶点组的选项(3)和选项(4),确定的顶点的数量或相对位置可不同,这正如针对用于不同顶点组的选项(2)、选项(4)和选项(5)中的任意一个,选项(2)、选项(4)和选项(5)的非顶点点的数量或相对位置可不同。

图4是示出确定着色点的示例的示图。在图4的示例中,参考标记410表示包括多个顶点(例如,顶点422、顶点424、顶点426、顶点428、顶点430、顶点432和顶点434)的3D对象,参考标记440表示针对3D对象410确定的多个着色点(例如,着色点422、着色点424、着色点430、着色点434、着色点450、着色点452、着色点454和着色点456)。

在典型的基于顶点的渲染方法中(例如,在仅在顶点着色器中典型地执行光着色的情况下),将对3D对象410的顶点422至顶点434中的每个顶点执行着色。然而,在一个或更多个实施例中,3D渲染设备可基于3D场景的时间特征和/或空间特征自适应地确定将被执行着色操作的那些点。如在图4中所示,3D渲染设备确定3D对象410的顶点422至顶点434中的仅一些顶点将是将被执行着色的着色点,例如,将仅对顶点422、顶点424、顶点430和顶点434执行着色,此外,3D渲染设备还确定也将对另外的非顶点点(例如,点450、点452、点454和点456)执行着色。相应地,根据所确定的这样的所选顶点和另外的非顶点点的相应着色级别,3D渲染设备可仅对点422、点424、点430、点434、点450、点452、点454和点456执行着色。此后,3D渲染设备可使用来自对着色点422、着色点424、着色点430、着色点434、着色点450、着色点452、着色点454和着色点456执行着色的结果来确定未被执行着色的其余顶点(例如,顶点426、顶点428和顶点432)的着色值。例如,3D渲染设备可通过对已经确定的着色点430、着色点452和着色点454的着色值进行插值来确定顶点432的着色值。插值可基于设置或预定数量的最近相邻着色点或将被插值的点的设置距离内的那些最近相邻着色点,或者二者方法的结合。

图5是示出基于着色级别确定着色点的示例的示图。

在图5的示例中,参考标记510表示包括多个顶点515的3D对象。3D渲染设备可产生与3D对象510的顶点515关联的层次结构信息(例如,将顶点515区分成代表不同的相应着色复杂度和增量着色复杂度的两个或更多个层次的着色级别),并基于层次结构信息中所表示的层次着色级别中被确定的着色级别来确定执行着色的着色点。将被执行着色的着色点可在3D对象510中基于着色级别来确定。例如,当着色级别被调低时,将被执行着色的着色点的数量可增加。

参照图5,在第一着色级别520,3D对象510的顶点515中的一些顶点522可被确定为着色点。在第一着色级别520,仅顶点522将被确定为着色点,而顶点525将不会被确定为着色点。3D渲染设备可对作为着色点的顶点522执行着色,以确定它们各自的着色值,然后通过分别使用顶点522的所选着色值进行插值来确定其余顶点525的着色值/对其余顶点525的着色值进行插值。在着色级别520的这个示例中,3D渲染设备可仅对顶点522执行着色操作,而不是对全部顶点525执行着色操作,这可造成比在全部顶点515被着色处理的情况下更快地执行渲染。

仅作为插值的示例,3D渲染设备可对确定的着色点执行Delaunay三角化,将区域分割成具有三角形形状的子区域,并通过使用确定的着色点的着色值进行插值确定非着色点顶点的着色值。

在另一示例中,3D渲染设备可基于地图集(atlas)确定顶点点和/或非顶点着色点,并对确定的顶点着色点和确定的非顶点着色点执行着色,并通过使用确定的顶点着色点和确定的非顶点着色点的着色值进行插值来对任意的其余非着色点顶点的着色值进行确定/插值,其中,地图集可以是相应3D对象的未折叠的网格。

在第二着色级别530,3D对象510的顶点515都不被确定为着色点,而是,非顶点点535被确定为着色点。3D渲染设备可对被确定为着色点的点535执行着色,并通过对非顶点点535的着色的结果值进行插值来确定顶点532的着色值。

在第三着色级别540,与第一着色级别520类似,3D对象510的顶点515之中的顶点542被确定为着色点,导致顶点545不被确定为着色点。此外,3D对象510的区域中的非顶点点546可被另外地确定为着色点。

例如,非顶点点546的位置可被确定为与3D对象510中或3D对象510上的位置对应,或可基于使用3D对象510的区域的亮度值分布的概率值来确定。例如,当3D对象510中或3D对象510上的点的亮度值增加时,该点被确定为着色点的概率或概率值可增加。仅作为示例,如果亮度增加而超过阈值,或概率值大于阈值,则该点可被确定为着色点。亮度增加或概率值可基于例如来自先前帧的信息。3D渲染设备可对顶点542和非顶点点546执行着色,然后通过对顶点542的着色和非顶点点546的着色的结果值进行插值来对其余的非着色点顶点545的着色值进行确定和插值。

在第四着色级别550,3D对象510的全部顶点515可被确定为着色点,可对顶点515中的每个顶点执行着色。在这个示例中,可不存在确定的非顶点着色点。

在第五着色级别560中,除3D对象510的顶点515之外,3D对象510的非顶点点565可被另外地确定为着色点。3D渲染设备可基于3D场景的代表3D对象510的时间特征或空间特征分别确定非顶点点565。例如,当确定需要更精细的着色效果时(例如,当确定照明效果复杂时),3D渲染设备可另外地确定3D对象510的区域中/上的将被执行着色的非顶点点565。在示例中,非顶点点565可在3D对象510的区域中/上被随机确定。3D渲染设备可随后对顶点515以及非顶点点565执行着色。在这个示例和第四着色级别550的示例中,由于对全部顶点515执行着色,对其它点的进一步的插值不是必要的。

图6是示出基于对着色点执行着色的结果确定顶点的着色值的示例的示图。

在图6的示例中,假设3D对象610包括多个顶点612至626。在示出的阶段630中,3D渲染设备将将被执行着色的着色点确定为包括顶点612至顶点622中的一些顶点(例如,顶点614、顶点616、顶点622和顶点624),并还包括3D对象610中的非顶点点(例如,非顶点点632、非顶点点634和非顶点点626)。3D渲染设备随后对确定的着色点614、着色点616、着色点622、着色点624、着色点632、着色点634和着色点636执行着色。3D渲染设备还基于着色值(例如,在执行着色的操作中确定的着色点614、着色点616、着色点622、着色点624、着色点632、着色点634和着色点636的颜色值)确定非着色点顶点(例如,顶点612、顶点618、顶点620和顶点626)的着色值。例如,在示出的阶段640中,3D渲染设备通过对与顶点626邻近的着色点622、着色点624、着色点634和着色点636的着色值进行插值来确定顶点626的着色值。类似地,3D渲染设备使用类似的上述插值处理来确定未被执行着色的其余非着色点顶点(例如,顶点612、顶点618和顶点620)的着色值。着色点614、着色点616、着色点622、着色点624、着色点632、着色点634和着色点636的着色值以及通过插值确定的顶点612、顶点618、顶点620和顶点626的着色值可被存储在诸如存储器或纹理缓冲器中。存储的着色值可随后用于将对后续图像帧执行的着色。

图7是示出基于着色点的着色值确定渲染后的图像的像素值的示例的示图。

在图7的示例中,假设在示出的阶段710中分别确定3D对象中/上的顶点(例如,顶点715、顶点720和顶点725)和非顶点点(例如,非顶点点730和非顶点点735)的着色值。在示出的阶段740中,3D渲染设备通过针对每个像素基于顶点715、顶点720和顶点725以及非顶点点730和非顶点点735的着色值执行颜色插值来确定像素的着色值。例如,如在图7中所示,3D渲染设备通过对与像素750邻近的顶点725的着色值以及点730和点735的颜色值进行插值来确定像素750的颜色值。3D渲染设备可重复执行上述内容中描述的类似处理,并确定包括在渲染后的图像中的像素的颜色值。

这里,在实施例中并仅作为示例,诸如基于由图形管线的顶点着色器或图形管线的可被布置在顶点着色器之后的细分曲面着色器(tessellation shader)确定的顶点,3D渲染设备的光栅化器可从3D渲染设备的相应图形管线操作的先前阶段的信息结果确定这样的像素。诸如通过着色点着色器将顶点715、顶点720和顶点725以及非顶点点730和非顶点点735的着色值结果存储在纹理存储器或其他存储器或缓冲器中,图形管线的像素着色器可随后被提供或获得顶点715、顶点720和顶点725以及非顶点点730和非顶点点735的着色值结果,其中,所述着色点着色器与图形管线分离且与图形管线并行运行并且执行了确定顶点715、顶点720和顶点725以及非顶点点730和非顶点点735的着色值的操作。所述着色点着色器可实施确定着色点的步骤。这里,对顶点着色器、细分曲面着色器、光栅化器和/或像素着色器的这样的引用仅是示例,实施例不限于此。

图9是示出3D渲染设备900的示例的示图。参照图9,3D渲染设备900可包括顶点着色器910、像素着色器920和着色点着色器930。在一个或更多个实施例中,顶点着色器910和像素着色器920可以是图形管线的元件。例如,3D渲染设备900可包括多个这样的图形管线,其中,所述多个这样的图形管线中的一些或全部图形管线还可被配置为并行运行。此外,如上面提到的,这样的图形管线还可在顶点着色器910与像素着色器920之间包括细分曲面阶段并在这样的细分曲面阶段(或细分曲面阶段不存在时的顶点着色器910)与像素着色器920之间包括光栅化器。此外,为了说明的目的,简单陈述以下关于顶点着色器910、像素着色器920和着色点着色器930的讨论,注意到上述关于图1至图8B的这样的顶点着色器、像素着色器以及着色点和着色值确定的讨论通过引用而被包含并类似地应用到图9的顶点着色器910、像素着色器920和着色点着色器930。

因此,顶点着色器910可基于获得的或提供的诸如顶点属性信息的3D图形数据对3D场景中的顶点执行顶点变换,其中,顶点属性信息可包括针对3D场景和针对3D场景中的一个或更多个对象的顶点的空间位置、颜色、法向量和纹理。仅作为非限制性的示例,顶点变换可包括变换顶点的位置、变换顶点的法向量、以及产生和变换纹理坐标中的至少一个。在示例中,顶点变换可包括将顶点的位置变换到归一化的坐标空间(诸如与可最终显示渲染后的图像的屏幕坐标空间对应的归一化坐标空间)。

着色点着色器930执行参照图1至图8B描述的操作中的与着色处理关联的操作。例如,着色点着色器930可将3D场景中的顶点分组成多个顶点组,并确定每个顶点组各自的着色级别。着色点着色器930可针对每个顶点组基于确定的着色级别确定将被执行着色的一个或更多个着色点,并对确定的着色点执行着色。着色点着色器930还可通过经由对被执行着色的着色点的结果着色值执行插值确定未经着色处理的顶点(即,未被执行着色的顶点)的着色值来确定3D场景的着色信息。

着色点着色器930执行顶点-单元颜色着色,这样的颜色着色可与顶点着色器910和像素着色器920各自的渲染处理分开执行。例如,由着色点着色器930执行的着色可作为与顶点着色器910和像素着色器920的图形管线分开的处理而被执行。因此,顶点和着色点的着色值可被着色点着色器930存储在诸如3D渲染设备900的纹理缓冲器或其他存储器中以用于图形管线的随后使用,或者着色点着色器930可在不进行存储的情况下将确定的着色值发送到图形管线的一个或更多个阶段。诸如当着色点着色器930确定顶点组中的一些顶点不需要每帧被更新时,存储的着色值还可被用于确定后续图像帧的着色信息,因此,与针对每帧单独在顶点着色器中对全部顶点典型地执行光着色的典型方法相比,图像帧之间的相关性可增加,闪烁的发生可被降低,并且计算量可被降低。

在示例中,例如,着色点着色器930可基于先前帧中的顶点组或另一顶点组的着色结果确定每个顶点组的着色级别。着色点着色器930还可基于按不同的着色级别提供的所确定的颜色值的差来确定将被应用到每个顶点组的最佳着色级别。例如,着色点着色器930可通过对基于当前着色级别执行着色的结果与基于低于当前着色级别的着色级别执行着色的结果进行比较,来计算基于着色级别差的颜色值的差,并可响应于颜色值的差大于或等于阈值而调整当前着色级别。着色点着色器930可针对不同的着色级别(例如,随着着色复杂度增加的着色级别递增)重复地执行这个处理,并可将基于着色级别差的颜色值的差小于阈值的着色级别最终确定为将被应用到顶点组的最佳着色级别。仅作为示例,最佳着色级别确定处理可持续直到颜色的差第一次小于阈值为止,或者最佳级别确定处理可持续至超出颜色的差小于阈值的第一着色至少一个着色级别。

在一个或更多个实施例中,当3D场景的着色信息被确定时,着色点着色器930可将着色信息传递到像素着色器920,或仅将着色信息存储在可用于像素着色器920的纹理缓冲器中。像素着色器920可随后基于获得或提供的着色信息对每个像素执行颜色插值。像素着色器920诸如通过图形管线的光栅化器阶段或像素着色器920的光栅化操作,使用形成像素被确定为所属的多边形(例如,三角形)的顶点的颜色值和被执行着色的着色点的颜色值来执行颜色插值,因此,渲染后的图像中的每个像素的颜色值被确定。此外,像素着色器920可执行纹理映射来表现3D对象的纹理,其中,在纹理映射中,纹理被施加到虚拟3D对象。

在另一示例中,3D渲染设备900还包括被配置为对诸如上面关于图8B描述的间接光源进行采样的间接光源采样器940,其中,在图8B中,至少反射或折射是用间接光源表示。着色点着色器930可除使用直接光源的照明信息之外还使用间接光源的照明信息执行上述着色,因此,间接光源被间接光源采样器940采样。将对间接光源执行的采样可包括在3D空间布置间接光源。间接光源采样器940通过调节间接光源将被布置的区域或调节将被布置在3D空间中的间接光源的数量来控制将被施加到3D对象的间接照明效果。

例如,间接光源采样器940对因光视图渲染(light view rendering)而产生的图像中的间接光源进行采样,或使用被应用到光的光线追踪方法对间接光源进行采样。例如,间接光源采样器940可基于因光视图渲染而产生的图像的亮度分布来产生与亮度成比例的概率图,并将间接光源布置在基于概率图确定的位置。针对另一示例,间接光源采样器940可基于光线追踪方法确定光与3D对象碰撞的区域,并将间接光源布置在确定的区域中。

图10A是示出3D渲染设备1010的示例的示图。参照图10A,3D渲染设备1010包括至少一个处理器1020和至少一个存储器1030。

处理器1020执行参照图1至图9描述的至少一个或更多个操作或全部操作。例如,处理器1020可包括图9的3D渲染设备900中的一个或更多个,并能够执行另外的操作。例如,处理器1020确定3D场景中将被执行着色的所选着色点,并对所确定的着色点执行选择性的着色以及选择性地不对一个或更多个顶点执行着色。确切地说,未被执行着色的顶点的着色值可通过基于确定的着色点的着色结果的插值来确定。处理器1020将3D场景中的顶点分组成顶点组,并可基于由处理器1020针对每个顶点组分别确定的着色级别来确定一个或更多个着色点。处理器1020基于对着色点执行着色的结果来确定3D场景的着色信息,并基于着色信息产生渲染后的图像。渲染后的图像可作为像素信息而被存储在存储器中和/或被输出到与3D渲染设备1010连接的显示器。用户接口还被提供连接到3D渲染设备1010。

处理器1020可被实现为本领域普通技术人员所理解的逻辑门的阵列或另一类型的硬件。例如,处理器1020可代表被配置为实施上面描述的操作中的任意操作或任意组合以及固定或移动装置的另外操作的一个或更多个处理器。例如,为了实施上面描述的着色操作中的任意操作或任意组合,处理器1020可包括用于对3D对象执行渲染的至少一个GPU。与顶点和着色点关联的着色信息可被存储在GPU的纹理缓冲器中,存储的着色信息可用于对后续图像帧执行着色。

存储器1030存储用于执行参照图1至图9描述的至少一个操作的指令,和/或存储在3D渲染设备正运行的同时获得的数据和结果。在一些示例中,存储器1030可包括非暂时性计算机可读介质(例如,高速随机存取存储器)和/或非易失计算机可读介质(例如,至少一个盘存储装置、闪速存储器装置和其他非易失性固态存储器装置)。

图10B是示出3D渲染设备1015的示例的示图。参照图10B,3D渲染设备1015与图10A类似地包括至少一个处理器1020和至少一个存储器1030,并还包括至少一个显示器1040和用户接口1050。例如,处理器1020可代表被配置为实施上面描述的操作中的任意操作或任意组合以及固定或移动装置的另外操作的单个处理器。例如,处理器1020可代表包括图形处理器(GPU)的两个或更多个处理器以及被配置为执行固定或移动装置的另外操作的至少一个其他处理器,其中,图形处理器(GPU)包括图9的图形管线、着色点着色器和间接光源采样器中的一个或更多个。处理器1020可即基于上面的着色操作将确定的像素颜色信息提供给显示器1040。显示器1040上的渲染后的图像可响应于通过用户接口1050与3D渲染设备1015进行的交互而被改变或自动改变。

通过被配置为执行本申请中描述的由硬件组件执行的操作的硬件组件来实现使用图1至图10B描述的执行本申请中的描述的操作的顶点着色器和顶点着色器910、像素着色器和像素着色器920、光栅化器、着色点着色器和着色点着色器930、间接光源采样器940、处理器、核、处理元件和处理器1020、存储器、高速缓冲存储器和存储器1030、显示器1040、用户接口1050以及3D渲染设备、3D渲染设备1010和3D渲染设备1015。可用于执行本申请中描述的操作的硬件组件的示例在适当情况下包括控制器、传感器、生成器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器以及被配置为执行本申请中描述的操作的任意其他电子组件。在其他示例中,通过计算硬件(例如,通过一个或更多个处理器或计算机)来实现执行本申请中描述的操作的一个或更多个硬件组件。可通过一个或更多个处理元件(诸如,逻辑门的阵列、控制器和算术逻辑单元、数字信号处理器、微型计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器或被配置为以限定的方式响应并执行指令以获得期望结果的任意其他装置或装置的组合)来实现处理器或计算机。在一个示例中,处理器或计算机包括或被连接到存储由处理器或计算机执行的指令或软件的一个或更多个存储器。通过处理器或计算机实现的硬件组件可执行指令或软件(诸如,操作系统(OS))和在OS上运行的一个或更多个软件应用,以执行本申请中描述的操作。硬件组件也可响应于指令或软件的执行而访问、操控、处理、创建和存储数据。为了简单,单数术语“处理器”或“计算机”可用于本申请中描述的示例的描述,但在其他示例中,多个处理器或计算机可被使用,或者处理器或计算机可包括多个处理元件或多种类型的处理元件或二者。例如,可通过单个处理器或者两个或更多个处理器或者处理器和控制器来实现单个硬件组件或者两个或更多个硬件组件。可通过一个或更多个处理器或者处理器和控制器来实现一个或更多个硬件组件,可通过一个或更多个其他处理器或者另一处理器和另一控制器来实现一个或更多个其他硬件组件。一个或更多个处理器或者处理器和控制器可实现单个硬件组件或者两个或更多个硬件组件。硬件组件可具有不同处理配置中的任意一个或多个,其示例包括单个处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理和多指令多数据(MIMD)多处理。

通过计算硬件(例如,通过一个或更多个处理器或计算机)来执行图1至图8中示出的执行本申请中描述的操作的方法,其中,计算硬件被实现为如上面描述的执行指令或软件以执行本申请中描述的由方法执行的操作。例如,可通过单个处理器或者两个或更多个处理器或者处理器和控制器来执行单个操作或者两个或更多个操作。可通过一个或更多个处理器或者处理器和控制器来执行一个或更多个操作,可通过一个或更多个其他处理器或者另一处理器和另一控制器来执行一个或更多个其他操作。一个或更多个处理器或者处理器和控制器可执行单个操作或者两个或更多个操作。

用于控制计算硬件(例如,一个或更多个处理器或计算机)实现硬件组件并且执行如上面描述的方法的指令或软件可被写为计算机程序、代码段、指令或其任意组合,以单独地或共同地指示或配置所述一个或更多个处理器或计算机如机器或专用计算机那样操作,以执行由硬件组件执行的操作和如上面描述的方法。在一个示例中,所述指令或软件包括直接由所述一个或更多个处理器或计算机执行的机器代码(诸如,由编译器产生的机器代码)。在另一示例中,所述指令或软件包括由一个或更多个处理器或计算机使用解释器执行的更高级代码。可基于附图中示出的框图和流程图以及说明书中的相应描述使用任意的编程语言来编写指令或软件,其中,说明书中的相应描述公开了用于执行由硬件组件执行的操作和如上所述的方法的算法。

用于控制计算硬件(例如,一个或更多个处理器或计算机)实现硬件组件并且执行如上所述的方法的指令或软件以及任何相关联的数据、数据文件以及数据结构可被记录、存储或固定在一个或更多个非暂时性计算机可读存储介质中,或被记录、存储或固定在一个或更多个非暂时性计算机可读存储介质上。非暂时性计算机可读存储介质的示例包括:只读存储器(ROM)、随机存取存储器(RAM)、闪存、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘和被配置为进行以下操作的任意其它装置:以非暂时性的方式存储指令或软件以及任何相关联的数据、数据文件以及数据结构,并将指令或软件以及任何相关联的数据、数据文件以及数据结构提供给一个或更多个处理器或计算机,以便所述一个或更多个处理器或计算机能执行指令。在一个示例中,所述指令或软件以及任何相关联的数据、数据文件以及数据结构被分布在联网的计算机系统上,使得所述指令和软件以及任何相关联的数据、数据文件以及数据结构通过一个或更多个处理器或计算机以分布式的方式被存储、访问和执行。

仅作为非穷举的示例,如这里所述以及如在图9和图10A至图10B中所示的3D渲染设备可代表移动装置(诸如,蜂窝电话、智能电话、可穿戴智能装置(诸如,戒指、手表、一副眼镜、手镯、脚镯、腰带、项链等)、便携式个人计算机(PC)(诸如,膝上型计算机、笔记本电脑、小型笔记本电脑、上网本或超移动PC(UMPC)、平板PC(平板电脑)、平板手机、个人数字助理(PDA)、数码相机、便携式游戏机、MP3播放器、便携式/个人多媒体播放器(PMP)、手持电子书、全球定位系统(GPS)导航装置)或传感器或固定装置(诸如,台式PC、高清电视(HDTV)、DVD播放器、蓝光播放器、机顶盒、或家电)、或被配置为执行无线通信或网络通信的任意其他移动或固定装置。在一个示例中,可穿戴装置是被设计为可直接安装在用户的身体上的装置(诸如,一副眼镜或手镯)。在另一示例中,可穿戴装置是使用附接装置安装在用户的身体上的任意装置(诸如,使用臂带附着到用户的胳膊或使用系索环挂在用户的脖子的智能电话或平板电脑)。

虽然本公开包括特定示例,但是在理解本申请的公开之后将清楚的是:在不脱离权利要求和它们的等同物的范围的情况下,可对这些示例进行形式和细节上的各种改变。在此描述的示例应仅在描述意义上考虑,而非为了限制的目的。在每个示例中的特征或方面的描述将被视为可被应用于其它示例中的相似特征或方面。如果以不同的顺序执行描述的技术,和/或如果描述的系统、架构、装置或电路中的组件以不同方式被组合和/或被其它组件或其等同物替代或补充,则可实现合适的结果。因此,本公开的范围并非由具体实施方式限定,而是由权利要求和它们的等同物所限定,并且在权利要求和它们的等同物的范围内的所有变化将被解释为被包括在本公开中。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1