CN102163337B - 用于使用至少一个半透明表面渲染像素的系统和方法 - Google Patents

用于使用至少一个半透明表面渲染像素的系统和方法 Download PDF

Info

Publication number
CN102163337B
CN102163337B CN201110040631.2A CN201110040631A CN102163337B CN 102163337 B CN102163337 B CN 102163337B CN 201110040631 A CN201110040631 A CN 201110040631A CN 102163337 B CN102163337 B CN 102163337B
Authority
CN
China
Prior art keywords
sample
pixel
subset
translucent surface
comprised
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
Application number
CN201110040631.2A
Other languages
English (en)
Other versions
CN102163337A (zh
Inventor
埃里克·B·恩德滕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN102163337A publication Critical patent/CN102163337A/zh
Application granted granted Critical
Publication of CN102163337B publication Critical patent/CN102163337B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/503Blending, e.g. for anti-aliasing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/62Semi-transparency

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Abstract

本发明提供了一种用于使用多个半透明表面来渲染像素的方法、系统和设备。使用中,识别像素。另外,执行操作,以为所述像素生成多个样本。此外,至少部分地以随机的方式为与所述像素相关联的至少一个半透明表面中的每一个选择所述样本的子集。而且,利用为所述至少一个半透明表面中的每一个选择的所述样本的所选子集来渲染所述像素。

Description

用于使用至少一个半透明表面渲染像素的系统和方法
技术领域
本发明涉及渲染像素,并且更具体地,涉及与半透明表面相关联的渲染像素。
背景技术
在许多情况下,可以利用至少部分透明的多个表面来渲染图像的像素。例如,可以利用至少部分透明的多个表面来渲染表示毛发、树叶、烟雾等的每个像素。遗憾的是,用于与多个半透明表面相关联的渲染像素的传统技术已经表现出各种局限性。
例如,这样的传统技术一般需要在渲染像素之前拣选与像素相关联的半透明表面。当对象在深度上重叠时,对象层级的拣选通常会导致不期望出现的伪影(artifact),同时,拣选像素的各种半透明表面也会导致很大的计算开销。因而,需要解决与现有技术相关联的这些和/或其他问题。
发明内容
本发明提供一种用于使用多个半透明表面来渲染像素的系统、方法和计算机程序产品。使用中,识别像素。另外,执行操作,以为所述像素生成多个样本。此外,至少部分地以随机的方式为与所述像素相关联的至少一个半透明表面中的每一个选择所述样本的子集。而且,利用为所述至少一个半透明表面中的每一个选择的所述样本的所选子集来渲染所述像素。
附图说明
图1示出了根据一个实施例的用于使用多个半透明表面来渲染像素的方法。
图2示出了根据另一实施例的为像素生成的多个样本。
图3示出了根据又一实施例的为半透明表面而针对样本的子集所进行的选择。
图4示出了根据又一实施例的为与像素相关联的多个半透明表面而针对样本的子集所进行的选择,其中,所述选择至少部分是随机地执行的。
图5示出了根据另一实施例的为多个半透明表面中的每一个所选择的样本子集,其中,至少一部分所选子集中包含的样本数是不同的。
图6示出了根据又一实施例的阿尔法修正的应用。
图7示出了根据又一实施例的用于确定与像素相关联的透明阴影图(transparentshadowmap)的系统。
图8图示出先前的各种实施例的各种架构和/或功能可以在其中加以实现的示例性系统。
具体实施方式
图1示出了根据一个实施例的用于使用多个半透明表面来渲染像素的方法。如操作102中所示,识别像素。对于本描述而言,所述像素包括能够被渲染并且与至少一个(例如,重叠的)半透明表面相关联的图像的任何子部分(subpart)。例如,像素可以包含呈现作为颜色值(即,红色、绿色和蓝色颜色值)的组合的图像的多个子部分中的一个。
在各种实施例中,至少部分由像素呈现的图像可以包括毛发、树叶、烟雾、阴影、窗口、半透明的布料等。例如,可以对与像素相关联的半透明表面加以组合,以形成由像素呈现的图像的子部分。然而,当然,图像可以包括至少一部分是利用至少一个半透明表面而生成的图像。为此目的,可选地,可以基于像素与半透明表面的联系来识别像素,用于执行下面所描述的操作以渲染像素,使得对于由图形处理器(例如,GPU)所识别的每个表面,都可以识别与其相关联的像素用于渲染,如下面所描述的。以此方式,可以对与至少一个半透明表面相关联的图像的多个像素中的每一个执行方法100。
另外,如操作104中所示,执行操作,以为像素生成多个样本。对于本描述而言,所述样本每一个均可以代表像素内或像素附近的不同点或区域。例如,可以为该像素生成至少一个区域(例如,线、点、面等),并且可以为每个区域生成多个样本。相应地,每个样本可以包含与像素所代表的点或区域相关联的信息,例如,颜色值(红色、绿色和蓝色颜色值)和深度(z)值。作为另一选择,一部分样本可以仅涉及另一样本的值(例如,其中该操作包括覆盖样本抗锯齿处理(coverage-sampleanti-aliasing))。为了显示该图像,可以对样本的颜色加以组合,以确定该像素的颜色(例如,通过平均值或加权平均值)。
在一个实施例中,每个样本可以由零个或多个上述半透明表面覆盖(相交)。因而,样本的颜色值和z值可以根据覆盖它的最前面的半透明表面来确定(即,通过每个半透明表面中的z值来确定)。仅通过示例的方式,每个样本可以是z缓冲器样本,所述z缓冲器样本进行z缓冲器比较使得其保留最接近的z值。这可以作为z缓冲器硬件来加以实现(例如,为了效率的目的)、利用与“最小”功能混合的硬件来仿真、或者在软件中仿真。
应予以注意的是,对于本描述而言,与像素相关联的半透明表面每一个均可以是该像素的至少一部分中所包含的不同基元的片段(fragment),使得该像素可以呈现半透明表面的组合。例如,表面可以包括计算机模拟的面、线、点、体积等。此外,半透明表面可以具有任何透明度级别(和互为倒数的不透明度级别)。仅通过示例的方式,当阿尔法(α)表示表面的不透明度级别时,α=0可以表明该表面是完全透明的,而α=1可以表明该表面是完全不透明的,这样,之间的任一值可以表明该表面具有中间的不透明度级别。半透明表面可以覆盖为像素生成的样本(S)的子集(R),使得半透明表面的不透明度级别(α)可以等于R/S。另外,对于不在前面的特定半透明表面,其对最后的像素的贡献比例可以是其自身的不透明度级别(α)与在特定半透明表面前面的所有其他半透明表面(i)的不透明度级别(1-αi)的乘积。
可选地,可以预先定义为像素生成的样本的数目。例如,为像素生成的样本的数目可以为4、8或者任何其他所期望的数目。作为另一选择,如果确定该像素具有大的变化,则可以增加为像素生成的样本的数目。应予以注意的是,当生成更多样本时,该像素可以提供图像呈现的较高准确度。当然,必须权衡用以生成样本并按以下操作中所描述的方式来处理样本所需的计算开销。
在一个实施例中,用以为像素生成样本所执行的操作可以包括多样本抗锯齿处理,其中由像素生成每个样本。因而,可以由像素上的各个点直接生成多个样本。在另一实施例中,用以为每个半透明表面生成样本所执行的操作可以包括超级样本抗锯齿处理,其中为所识别的像素生成多个像素(例如,通过增加图像的分辨率)并且为所生成的多个像素中的每一个生成样本(例如,单个样本)。可选地,用以为像素生成样本所执行的操作可以包括多样本抗锯齿处理和超级样本抗锯齿处理的组合。
在另一实施例中,用以为像素生成样本所执行的操作可以包括多通道采样(multi-passsampling)处理,其中,一次通过多个通道生成每像素一个样本。例如,同一像素可以被渲染若干次(如以下关于操作108所描述的),并且一起对这些结果求平均值。应予以注意的是,可以组合利用上述多样本抗锯齿处理、超级样本抗锯齿处理以及多通道采样处理,使得为像素生成的样本的总数等于多采样率、超级采样率和多通道采样的次数的乘积。
在又一实施例中,用以为像素生成样本所执行的操作可以包括对像素的边缘采样、从相邻像素借用样本、在整个像素上对线条采样等等。尽管以上已经描述了用以为像素生成样本的操作的各种实施例,但应予以注意的是,所述操作可以包括为像素生成(例如,从像素识别、提取等)多样本的任何操作(例如,功能等)。图2图示出根据另一实施例的其中已经生成(例如,利用任何上述技术)多个样本的像素的一个示例。
此外,如操作106中所示,至少部分地以随机的方式为与像素相关联的多个半透明表面中的每一个选择样本的子集。对于本描述而言,用于每个半透明表面的样本的子集可以包括为像素生成的样本中的仅一部分(例如,零个或多个)。换句话说,对于每个半透明表面,可以选择为像素生成的样本中的一部分作为子集。在一个实施例中,可选地,为每个半透明表面选择的样本的子集可以只包括被该半透明表面所覆盖的样本。
为此目的,为每个半透明表面所选的作为子集的样本可以是该半透明表面上的不同点(例如,每一个均与像素上的点相关)。相应地,可以存储由与半透明表面相关联的子集中的样本所呈现的、与半透明表面上的点相关联的信息,例如,半透明表面上的呈现点的颜色值(红色、绿色和蓝色颜色值)和深度值。图3图示出根据又一实施例的为半透明表面而针对样本的子集所进行的选择的一个示例。
在一个实施例中,可以通过使用阿尔法作为概率而针对每个样本判定其是被包含在子集中还是被排除在子集外来确定该子集。为此,每个子集中所包含的样本的数目可以是半透明表面的不透明度值的函数(例如,与该不透明度值成比例)。仅通过示例的方式,如以上提及的,阿尔法(α)表示表面的不透明度,则用于特定半透明表面的子集中所包含的样本的数目可以通过将α乘以为像素生成的样本的数目来确定。表1示出了用于确定形成用于特定半透明表面的子集中的样本的数目的等式的一个示例。应予以注意的是,表格1中所示的等式是仅出于例示性目的而加以阐释的,因而不应被解释为任何方式的限定。
表1
//当S=为像素生成的样本的数目时,
选为用于半透明表面的子集的所生成的样本的数目=α半透明表面*S
在另一实施例中,可以利用分层采样来对每个子集中所包含的样本的数目加以选择,其中,在依赖于阿尔法的多个数字之间随机地选择样本的数目(例如,其中,首先确定子集中的样本的数目,且随后选择此数目的样本,用于避免对每个样本做出独立的伪随机判定)。例如,对于其中不能基于阿尔法来均等地确定样本数的、具有相同阿尔法的表面(例如,当阿尔法落在可以获得4/8样本、5/8样本等的阿尔法之间时),对于每个这样的样本,可以为表面从与实际阿尔法最接近的均等的阿尔法(例如,4/8、5/8)中的一个随机地选择子集中的样本的数目。因而,对于阿尔法相同的、与像素相关联的至少一部分半透明表面,这些子集可以包含不同数目的样本。换句话说,为具有第一阿尔法的半透明表面中的第一半透明表面所选的第一样本子集的样本数可以与为具有第一阿尔法的半透明表面中的第二半透明表面所选的第二样本子集的样本数不同。
可选地,可以从一组数字中为这些子集随机地选择样本数,并且该组数字可以作为不透明度值、所生成的样本的数目和伪随机数的函数来生成。表2图示出用于确定可以从中对每个子集中所包含的样本的数目加以选择的预定数字的等式的一个示例。再者,应予以注意的是,表2中所示的等式是仅出于例示性目的而加以阐释的,因而不应被解释为任何方式的限定。
表2
//当α是半透明表面的透明度,
//S是为像素生成的样本的数目,
//R是用于半透明表面的子集中可以包含的样本的数目,
//ξ是标准随机数(均匀分布在[0,1)上),并且
//i是半透明表面时,
Ri=|(αi*S)+ξ|
在表2所示的等式的一个示例性实施方式中,如果S=4且α0=.45,则将存在20%的机会使用R0=1且80%的机会使用R0=2。作为另一选择,可以使R在整个瓦片(tile)上抖动(dither)。然后可以选择R样本的随机子集。这可以允许一个片段的误差随样本数更迅速地减少,从而避免减少返回。例如,其可以确保子集的设定大小在理想的非整数设定大小内。
当然,尽管已经描述了确定每个子集中所包含的样本数的各种实施例,但应予以注意的是,可以以任何所期望的方式来确定这样的每个子集中所包含的样本数。
如以上还提及的,至少部分地以随机的方式为每个半透明表面选择样本的子集。对于本描述而言,随机的可以包括变化的、伪随机的和/或由像素生成的单个样本藉此可以或者不可以被包含在为每个半透明表面所选的每个子集中的任何其他技术。通过至少部分地以随机的方式选择样本的子集,像素内的子集可以是“互不相关的”(即,相对于彼此是随机的)。图4示出了根据又一实施例的为与像素相关联的多个半透明表面而针对样本的子集所进行的、至少部分是随机地执行的选择。
在一个实施例中,可以以伪随机的方式来为每个半透明表面选择样本的子集。在另一实施例中,可以确定用于半透明表面的样本的多个可能的子集,其中,每个可能的子集包括为像素生成的一部分样本的不同组合(例如,不同的可能的组合)。可选地,对于每个可能的子集,其中所包含的该部分样本可以具有低偏差随机分布图案,使得每个可能的子集中所包含的为像素生成的该部分样本被分布在整个像素上,且因而分布在整个半透明表面上。此外,可以通过选择以上描述的经确定的子集中的一个来选择用于半透明表面的样本子集。
在又一实施例中,可以利用表格来为每个半透明表面选择样本的子集。可选地,表格可以被预先定义为含有多个不同子集,每一个均包含像素上的不同的可能点。作为另一选择,每个子集中所包含的可能点可以具有低偏差随机分布,使得它们被分布在整个像素上。这样,当每个可能的子集包含为像素生成的一部分样本的不同组合时,可以预先确定含有用于任一半透明表面的样本的多个可能子集的表格,并且对于每个半透明表面,可以从该表格中选择可能的子集中的一个。
例如,对于为第一半透明表面选择的第一样本子集,可以从表格中选择预定义子集中的第一个,使得其中所包含的点可以被用作第一样本子集。作为另一示例,对于为第二半透明表面选择的第二样本子集,可以从表格中选择预定义子集中的第二个,使得其中所包含的点可以被用作第二样本子集,等等。
作为另一选择,表格可以被预先定义为含有为像素生成的样本的多个可能的排列(排序)。这样,对于每个半透明表面,可以从表格中选择一个可能的排列,并且可以选择含有期望数目的子集样本的排列的区域。
在一个示例性实施例中,可以基于三个判定点的预先确定而至少部分地以随机的方式来选择用于每个半透明表面的样本的子集(其可以持续用于渲染与至少一个半透明表面相关联的全部像素)。首先,可以确定是否要使用温度计(thermometer)。如果使用温度计,则随着不透明度级别从0上升到1,样本一次增加一个。通过选择样本的排列(排序)来选择选择温度计。如果不用温度计,则可以为不同的不透明度级别选择完全不同的样本子集。
其次,可以确定是否要使用固定表格(例如,存储在存储器中或存储为逻辑门)或者计算(例如,“散列函数”)。再次,可以确定识别开始值所采用的方式。对于固定表格,开始值可以是对表格的索引。对于计算,开始值可以是输入,并且利用相同的输入,可以一直提供相同的输出。
作为选择,用于与像素相关联的每个半透明表面的开始值可以不同,同时,防止了每一帧的开始值之间发生变化(当物体移动时)以避免各帧的噪声图案之间出现偏移。例如,可选地,开始值可以为表5中所示的下列任一组合。
表5
1)屏幕上的像素的x、y地址
2)像素内的样本数目
3)深度值(z)
4)“基元ID”(例如,分配给每个三角形或其他基元的数目),其可以使噪声在对象移动时在各帧之间更加平稳。例如,为半透明表面所选的子集可以是与该半透明表面相关联的自动生成的数字(基元ID)的函数。
5)“对象ID”(例如,由诸如游戏引擎程序员这类用户分配给每个“对象”的数字,其可以使噪声在对象移动时在各帧之间更加平稳。所述“对象”可能是树或人物、树枝或人物的手臂)。例如,为半透明表面所选的子集可以是与半透明表面相关联的由用户提供的数字的函数。
6)表明基元是面向前还是面向后的额外位(例如,其可以用在对象的正面和背面都为透明的时候)
7)由着色器(shader)所确定的值(例如,硬件可以不必要求使用特定值作为开始值,而是可以代之以让程序员编写程序来确定开始值,并且这成为“着色器”的一部分,其中,为每个半透明表面执行所述“着色器”,使得程序员可以从以上列表中挑选或按照其自己的想法提出)。
而且,如操作108中所示,利用为每个半透明表面所选择的样本的子集来渲染像素。对于本实施例而言,可以利用为每个半透明表面所选的样本的子集而以任何能够生成由像素呈现的图像的一部分的方式来渲染像素。例如,可以利用图形处理器来渲染像素。此外,影响像素的多个半透明表面不必一起处理。此外,影响所述像素的对各种半透明表面进行的像素处理可以以任意顺序发生,而得到相同的结果。
在一个实施例中,至少可以利用这样的样本子集来渲染像素,所述样本子集是通过首先为全部所选样本子集中所包含的全部样本识别与其相关联的颜色值和z值而为每个半透明表面选择的。如以上关于操作104所提及的,至少一个所选样本子集中所包含的像素的每个样本均存储被该样本所覆盖的最前面的半透明表面的颜色值和z值。这样,可以识别由至少一个所述子集中包含的每个样本所存储的颜色值。然后,可以对为至少一个所述子集中包含的每个样本存储的颜色值求平均值,并且将该平均值用作渲染该像素所依据的颜色值。以此方式,未被选入至少一个所述子集中的该像素的任何样本可以不必对渲染该像素所依据的颜色值做出贡献。
应予以注意的是,像素也可以与任何数目的非透明(不透明)表面相关联。这样,像素的渲染也可以基于这样的非透明表面。例如,可以从非透明表面中选择样本并将其用于渲染像素。这样的样本可以是黑色的、背景颜色、半透明表面后面的不透明物体的颜色等。可选地,可以与用于半透明表面的样本分开渲染用于非透明表面的样本。在一个实施例中,出于效率的目的,当使用z缓冲器将用于半透明表面的样本拣选出并且随后再对其渲染时,可以首先渲染用于非透明表面的样本。
如上所述,可以利用为每个半透明表面所选的样本子集来提供图像的主要可见度。作为另一选择,可以利用为每个半透明表面所选的样本子集来计算屏幕外缓冲区(off-screenbuffer)或中间图像。例如,当利用中间图像来生成用于显示的另一图像(例如,最终图像)并且可以执行另一操作以为像素生成至少一个样本时,可以识别中间图像的像素。这样的操作可以包括以上关于操作104所描述的任何操作。此外,可以至少部分地以随机的方式来为与像素相关联的多个半透明表面中的每一个选择所述至少一个样本的子集(例如,如以上关于操作106所描述的),并且可以利用为每个半透明表面所选的样本子集来渲染像素(例如,如以上关于操作108所描述的)。
在另一实施例中,可以生成中间图像的每像素多样本(例如,如以上关于图1的方法100所描述的)。仅通过示例的方式,中间图像可以存储用于延迟遮影(shading)计算的标准向量。这样的中间图像的另一示例是阴影图。例如,可以通过利用为与像素相关联的每个半透明表面所选的为像素生成的样本的子集并且只存储深度来渲染透明阴影图。在一个实施例中,当“百分比渐近过滤(percentagecloserfiltering)”之后可以近似得到透明阴影图值时,可以以高分辨率生成每像素一个样本。在另一实施例中,在每个像素处可以存储若干深度。这可以被视为是深度阴影图,其使用S深度值z1、z2、…、zS来对每条射线的可见度函数进行编码。可选地,可见度可以通过表6中所示的等式而近似得出。
表6
vis(z)≈count(z≤zi)/S
为此,可以利用为每个半透明表面所选的样本子集来渲染像素,而不必对这些半透明表面进行排序、拣选等(从而提供随机的透明度)。在一个实施例中,方法100可以在硬件(例如,图形处理单元(GPU))、软件或其组合中加以实现。
此外,利用如上所述的方法100,可以利用任何数目的半透明层来很好地近似得到图像,并且不是必须在只有单个半透明层时才可以,同时,可选地,只要求对每个表面处理一次(例如,通过避免表面的拣选)。而且,不论半透明层是否全部都同样不透明、半透明层是否均等间隔等等,方法100均适用。
另外,可以利用固定存储器大小,以单个渲染通道或较低的固定数目(例如,对于每像素8个样本三个或者对于16个样本五个)的渲染通道对像素进行渲染。运行时间可以是基本上稳定的且与半透明表面的数目呈线性关系,并且其不会受半透明表面的不均匀空间分布的影响,而是受半透明表面之间的非均匀不透明度影响(例如,能够在不对特殊情形进行编码的情况下将毛发、烟雾、枝叶、窗口以及透明布料混合在一个场景中)。此外,可选地,方法100可以避免在像素层级分支以及使用除传统z缓冲器混合操作以外的读取-修改-写入循环(read-modify-writeloop)。
应予以注意的是,以上所描述的各种技术可以用于减小与像素的渲染相关联的噪声。例如,可以增加为每个半透明表面生成的样本数,从而增加被选作渲染像素所依据的、用于每一个半透明表面的子集的样本数。作为另一示例,分层采样可以用于减少噪声,其中用于每个半透明表面的子集中所包含的样本数被随机地选择为尽可能接近所期望的透明度级别α。
然而,当然也可以与上述方法100结合使用其他技术来减小噪声。在一个示例性实施例中,可以对以上描述的颜色值的平均值应用阿尔法修正。例如,半透明表面的总不透明度级别可以用作修正因子。此外,半透明表面的总不透明度级别可以被渲染到单独的缓冲器中(例如,在一个通道中),可选地,其可以是多次采样的。
表6图示出用于确定半透明表面的总不透明度的等式的一个示例。再者,应予以注意的是,表6中所示的等式是仅出于例示性目的而加以阐释的,因而不应被解释为任何方式的限定。
表6
//当α是半透明表面的不透明度级别,并且
//i是半透明表面时,
α=1–Π(1–αi)
由于表6中的等式是不依赖于半透明表面的次序的,所以其可以认为是以单一渲染通道进行评估而无需拣选的。如以上所提及的,半透明表面的总不透明度级别(例如,利用表6中所示的等式来确定的)可以用作修正因子。此修正可以在随后的一次合成通道期间实现,其中,1)将不透明背景乘以1减去每个样本处的总不透明度之差,2)将像素的平均透明颜色乘以(修正以)像素的平均总不透明度除以与半透明表面相关联的像素的至少一个所选子集中所含有的像素样本的比率之商,以及3)将(2)的结果与(1)的像素的平均结果合成。
应予以注意的是,上面提及的阴影图可以通过存储每像素总不透明度并且利用同一内核作为百分比渐近滤波器来修正。这可以消除量化影响,尤其是对于投射到不透明物体上的阴影。
在另一示例性实施例中,可以通过允许每个半透明表面与其可见度及其不透明度成比例地参与像素的渲染。首先,将不透明背景渲染到多采样z缓冲器中。然后,一次性将总不透明度渲染到单独的多采样缓冲器中。
此外,在一个通道中将半透明表面渲染到不透明z缓冲器中时,丢弃未被包含在为每个半透明表面所选的子集中的样本,并且只存储z。从相机的角度看,这形成了透明阴影图。再者,在累积通道中,渲染半透明表面,并且通过根据先前的操作与合成z缓冲器进行比较而将其按权重合计到单独的多采样颜色缓冲器中。在此通道中,以黑色开始,对于具有不透明度级别αi和颜色c i 的半透明表面的每个片段,将αi c i 添加到其中zfragment≥zbuffer的全部样本中。在随后的合成通道中,1)将不透明背景乘以1减去每个样本处的总不透明度级别之差,2)将像素的平均累积和乘以(修正以)像素的平均总不透明度级别除以像素的平均累积率α之商,以及3)将(2)的结果与(1)的像素的平均结果合成。这样,从相机的角度看,每个半透明表面的颜色对像素的总颜色的贡献可以至少部分通过利用所渲染的半透明阴影图来确定。应予以注意的是,以上描述的第一操作(即,渲染任何不透明几何图形和背景)可以提供速度和质量的优化。
作为用以减少噪声的另一选择,对于所支持的像素的样本数受到限制的硬件,可以模拟额外的样本。为了模拟更多样本,可以一同对使用不同随机值的多次处理求平均值。
作为用以减少噪声的另一选择,对于示出较大变化的像素,可以适应性地对多个通道进行渲染。这可以提供均一且在艺术家控制之下的噪声水平。作为用以减少噪声的又一选择,可以对图像进行后处理。例如,可以使用双边滤波器来减少噪声,同时保留边缘,其中,为了保留全部透明度可见层边缘,可以利用(非随机的)总阿尔法通道对透明图像交叉过滤。
现在,关于按照使用者的需要而可以用于或者不可以用于实现前述框架的各种可选架构和特征,将阐述更多例示性信息。应予以着重注意的是,以下信息是仅出于例示性目的而加以阐释的,因而不应被解释为任何方式的限定。任何下列特征都可以在排除或不排除所描述的其他特征的情况下被可选地包括在其中。
图5示出了根据另一实施例的为多个半透明表面中的每一个所选择的样本子集,其中,至少一部分所选子集中包含的样本数是不同的。作为选择,可以在图1-4的情境下实现样本子集选择500。然而,当然,可以在任何期望环境中实现样本子集选择500。还应予以注意的是,上面提及的定义在本描述过程中都适用。
如图所示,为不同半透明表面选择的每个子集中所包含的样本数是变化的。在本实施例中,每个子集中所包含的样本数在两个预定义值之间变化,即,在四个可用样本中的两个(50%)和三个(75%)之间变化。子集中所包含的样本数以随机的方式变化,使得本示例中的平均值(60%)匹配半透明表面的不透明度级别。
图6示出了根据又一实施例的阿尔法修正应用600。作为选择,可以在图1-5的情境中实现阿尔法修正应用600。然而,当然,可以在任何期望环境中实现阿尔法修正应用600。还应予以注意的是,上面提及的定义在本描述过程中都适用。
如图所示,通过一个无序通道,可以为该像素计算正确不透明度级别。在本实施例中,这样的正确不透明度级别为0.6。每个像素均可以按照真实阿尔法/估计阿尔法的比例缩放,其中,估算的阿尔法是被至少一个半透明表面覆盖的样本的比率(R/S)。
图7示出了根据又一实施例的用于确定与像素相关联的透明阴影图的系统700。作为选择,可以在图1-6的情境下实现系统700。然而,当然,可以在任何期望环境中实现系统700。还应予以注意的是,上面提及的定义在本描述过程中都适用。
如以上参照图1所描述的,每个像素(纹理元素)具有S个样本。在本实施例中,像素具有8个样本。按照查找表根据阴影-纹理元素进行S比较。如图所示,在每个像素处可以存储若干深度,一个对应于一个样本,其中,通过等式vis(z)≈count(z≤zi)/S近似得出可见度。例如,样本掩码中的深度设定定义深阴影函数,其通过对给定深度以上/以下的样本计数来估算。
深阴影图可以用以提高用于解析(resolve)利用随机的透明度渲染的对象的阿尔法的精确度。当根据眼睛的视点生成深阴影图时,其可以允许计算对象前方的衰减,并且在渲染阶段,相对于原本未经处理的随机透明度而言,可以以更准确的透明度使多边形光栅化至每个像素。
图8图示出先前的各种实施例的各种架构和/或功能可以在其中加以实现的示例性系统。如图所示,系统800包括连接至通信总线802的至少一个主处理器801。系统800还包括主存储器804。控制逻辑(软件)和数据被存储在主存储器804中,主存储器804可以采取随机存取存储器(RAM)的形式。
系统800还包括图形处理器806和显示器808,即,计算机监视器。在一个实施例中,图形处理器806可以包括多个着色器模块、光栅化模块等。前述模块中的每一个甚至都可以被设置在单个半导体平台上,以形成图形处理单元(GPU)。
在本描述中,“单个半导体平台”可以指基于单一(soleunitary)半导体的集成电路或芯片。应予以注意的是,术语“单个半导体平台”还可以指具有提高的连接性的多芯片模块,其模拟片上操作,并且利用常规的中央处理单元(CPU)和总线实现进行了实质上的改进。当然,各种模块也可以按照用户的需求分开设置或者被设置在半导体平台的各种组合中。
系统800还可以包括次存储器810。次存储器810包含例如硬盘驱动和/或表现为软盘驱动、磁带驱动、光盘驱动等的可移除存储器驱动。可移除存储器驱动可以以公知的方式对可移除存储单元进行读写。
可以将计算机程序或计算机控制逻辑算法存储在主存储器804和/或次存储器810中。这样的计算机程序在运行时使系统800能够执行各种功能。存储器804、存储器810和/或任何其他存储器都是计算机可读介质的可能示例。
在一个实施例中,可以在主处理器801、图形处理器806、能够实现主处理器801和图形处理器806的至少一部分功能的集成电路(未示出)、芯片组(即,被设计用来作为用于执行相关功能的单元工作和销售等的一组集成电路)和/或用于此的任何其他集成电路的情境下实现先前的各种图的架构和/或功能。
再者,可以在通用计算机系统、电路板系统、专用于娱乐目的的游戏控制台系统、专用系统和/或任何其他期望系统的情境下实现先前的各种图的架构和/或功能。例如,系统800可以采取台式计算机、便携式计算机和/或其他类型的逻辑的形式。再者,系统800可以采取各种其他设备的形式,包括但不限于个人数字助理(PDA)设备、移动电话设备、电视机等。
此外,尽管未示出,但系统800也可以连接至网络(例如,电信网、局域网(LAN)、无线网、诸如互联网的广域网(WAN)、对等网络、电缆网等),用于通信目的。
尽管以上已经描述了各种实施例,但应予以理解的是,这些实施例仅通过示例性的方式而非限制性的方式提出。因此,优选实施例的广度和范围不应受到任何上述示例性实施例的限制,而是应当仅根据随附的权利要求书及其等同物来限定。

Claims (18)

1.一种用于使用至少一个半透明表面渲染像素的方法,包括:
识别像素;
执行操作,以为所述像素生成多个样本;
从所述多个样本中至少部分地以随机的方式来为与所述像素相关联的至少一个半透明表面中的每一个选择所述样本的子集,其中每个子集中所包含的样本数是所述半透明表面的不透明度值的函数,其中每个子集中所包含的样本数在两个预定义值之间随机地变化,其中每个子集中所包含的样本数通过随机地选择与所述半透明表面的不透明度值最接近的均等不透明度值中的一个来确定;以及
利用为所述至少一个半透明表面中的每一个选择的所述样本的所选子集来渲染所述像素,其中所述渲染包括对为至少一个所述子集中包含的每个样本存储的颜色值求平均值,并且将所述平均值用作渲染所述像素所依据的颜色值。
2.根据权利要求1所述的方法,其特征在于,为所述像素生成的样本每一个均表示所述像素上的不同点。
3.根据权利要求2所述的方法,其特征在于,所述操作包括覆盖样本抗锯齿处理,其中为所述像素生成的所述样本中的一部分涉及另一样本的值。
4.根据权利要求1所述的方法,其特征在于,为所述像素生成至少一个区域,并且为每个区域生成多个样本。
5.根据权利要求1所述的方法,其特征在于,以伪随机的方式选择为每个所述半透明表面选择的所述样本的子集。
6.根据权利要求1所述的方法,其特征在于,为所述半透明表面选择的所述样本的子集通过下列步骤来选择:
预先确定含有用于任一半透明表面的多个可能的样本子集的表格,其中,每个所述可能子集包含为所述像素生成的所述样本中的一部分的不同组合;以及
为每个所述半透明表面,从所述表格中选择所述可能子集中的一个。
7.根据权利要求1所述的方法,其特征在于,为所述半透明表面选择的所述样本的子集通过下列步骤来选择:
预先确定含有为像素生成的所述样本的多个可能排列的表格;
为每个所述半透明表面,从所述表格中选择所述可能排列中的一个;以及
选择含有期望数目的用于所述子集的样本的所述排列的区域。
8.根据权利要求6所述的方法,其特征在于,对于用于所述半透明表面的所述样本的每个所述可能子集,所述样本中的所述一部分包括低偏差图案,使得包含在每个所述可能子集中的、为所述半透明表面生成的所述样本中的所述一部分分布在整个所述半透明表面上。
9.根据权利要求1所述的方法,其特征在于,用于所述半透明表面的所述样本的所述子集是利用分层采样来选择的,其中,首先确定所述子集中的所述样本的数目,并且随后选择此数目的样本,用于避免对每个样本做出独立的伪随机判定。
10.根据权利要求9所述的方法,其特征在于,每个子集中的样本数是作为不透明度值、所生成的样本的数目和伪随机数的函数而生成的。
11.根据权利要求1所述的方法,其特征在于,在渲染所述像素之前应用阿尔法修正。
12.根据权利要求1所述的方法,其特征在于,所述像素包括阴影图像素,并且所述渲染包括利用为每个所述半透明表面选择的样本的所选子集来渲染将要存储在阴影图中的深度值。
13.根据权利要求12所述的方法,其特征在于,从相机的角度看,每个半透明表面的颜色对所述像素的总颜色的贡献是至少部分通过利用所渲染的半透明阴影图来确定的。
14.根据权利要求1所述的方法,其特征在于,为半透明表面选择的子集是与所述半透明表面相关联的自动生成的数字的函数。
15.根据权利要求1所述的方法,其特征在于,为半透明表面选择的子集是与所述半透明表面相关联的由用户提供的数字的函数。
16.根据权利要求1所述的方法,其特征在于,如果像素被确定为具有大的变化,则增加为所述像素生成的样本的数目。
17.一种用于使用至少一个半透明表面渲染像素的设备,包括:
用于识别像素的装置;
用于执行操作以为所述像素生成多个样本的装置;
用于从所述多个样本中至少部分地以随机的方式来为与所述像素相关联的多个半透明表面中的每一个选择所述样本的子集的装置,其中每个子集中所包含的样本数是所述半透明表面的不透明度值的函数,其中每个子集中所包含的样本数在两个预定义值之间随机地变化,其中每个子集中所包含的样本数通过随机地选择与所述半透明表面的不透明度值最接近的均等不透明度值中的一个来确定;和
用于利用为每个所述半透明表面选择的所述样本的所选子集来渲染所述像素的装置,其中所述渲染包括对为至少一个所述子集中包含的每个样本存储的颜色值求平均值,并且将所述平均值用作渲染所述像素所依据的颜色值。
18.一种用于使用至少一个半透明表面渲染像素的方法,包括:
识别中间图像的像素,所述中间图像用于生成用于显示的另一图像;
执行操作,以为所述像素生成至少一个样本;
从所述至少一个样本中至少部分地以随机的方式来为与所述像素相关联的多个半透明表面中的每一个选择所述样本的子集,其中每个子集中所包含的样本数是所述半透明表面的不透明度值的函数,其中每个子集中所包含的样本数在两个预定义值之间随机地变化,其中每个子集中所包含的样本数通过随机地选择与所述半透明表面的不透明度值最接近的均等不透明度值中的一个来确定;以及
利用为每个所述半透明表面选择的所述样本的所选子集来渲染所述像素,其中所述渲染包括对为至少一个所述子集中包含的每个样本存储的颜色值求平均值,并且将所述平均值用作渲染所述像素所依据的颜色值。
CN201110040631.2A 2010-02-18 2011-02-18 用于使用至少一个半透明表面渲染像素的系统和方法 Active CN102163337B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/708,443 US8659616B2 (en) 2010-02-18 2010-02-18 System, method, and computer program product for rendering pixels with at least one semi-transparent surface
US12/708,443 2010-02-18

Publications (2)

Publication Number Publication Date
CN102163337A CN102163337A (zh) 2011-08-24
CN102163337B true CN102163337B (zh) 2016-01-20

Family

ID=44317459

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110040631.2A Active CN102163337B (zh) 2010-02-18 2011-02-18 用于使用至少一个半透明表面渲染像素的系统和方法

Country Status (3)

Country Link
US (1) US8659616B2 (zh)
CN (1) CN102163337B (zh)
DE (1) DE102011011641A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110279447A1 (en) * 2010-05-16 2011-11-17 Zebra Imaging, Inc. Rendering Transparent Geometry
US20110279448A1 (en) * 2010-05-16 2011-11-17 Zebra Imaging, Inc. Rendering Transparent Geometry
US8842931B2 (en) 2011-02-18 2014-09-23 Nvidia Corporation System, method, and computer program product for reducing noise in an image using depth-based sweeping over image samples
CN102496173A (zh) * 2011-12-06 2012-06-13 阳赛 一种用于采样点分离的数字偏移方法
US9672584B2 (en) * 2012-09-06 2017-06-06 Imagination Technologies Limited Systems and methods of partial frame buffer updating
CN102903131B (zh) * 2012-09-07 2015-04-15 清华大学 在球面高斯光源下半透明物体的渲染方法
US9495721B2 (en) * 2012-12-21 2016-11-15 Nvidia Corporation Efficient super-sampling with per-pixel shader threads
KR102223064B1 (ko) * 2014-03-18 2021-03-04 삼성전자주식회사 영상 처리 장치 및 방법
US9727392B2 (en) * 2014-09-16 2017-08-08 Nvidia Corporation Techniques for render pass dependencies in an API
JP6559077B2 (ja) * 2016-02-10 2019-08-14 キヤノン株式会社 情報処理装置及び情報処理方法
CN106600544A (zh) * 2016-11-10 2017-04-26 北京暴风魔镜科技有限公司 基于纹理贴图的抗锯齿方法及系统
CN106846450B (zh) * 2017-02-10 2020-03-31 腾讯科技(深圳)有限公司 实时渲染次表面散射的方法及相关装置
CN112652025B (zh) * 2020-12-18 2022-03-22 完美世界(北京)软件科技发展有限公司 图像渲染方法、装置、计算机设备及可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1898699A (zh) * 2003-12-19 2007-01-17 艾利森电话股份有限公司 阿尔法图像处理
CN101055645A (zh) * 2007-05-09 2007-10-17 北京金山软件有限公司 一种阴影实现的方法及装置
CN101136108A (zh) * 2007-09-26 2008-03-05 腾讯科技(深圳)有限公司 阴影绘制方法及渲染装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9925054D0 (en) * 1999-10-23 1999-12-22 Koninkl Philips Electronics Nv Display arrangement
US7038678B2 (en) * 2003-05-21 2006-05-02 Nvidia Corporation Dependent texture shadow antialiasing
US7333119B1 (en) * 2004-11-02 2008-02-19 Nvidia Corporation System and method for virtual coverage anti-aliasing
US20080143731A1 (en) * 2005-05-24 2008-06-19 Jeffrey Cheng Video rendering across a high speed peripheral interconnect bus
US20070070082A1 (en) 2005-09-27 2007-03-29 Ati Technologies, Inc. Sample-level screen-door transparency using programmable transparency sample masks
WO2008130992A1 (en) 2007-04-16 2008-10-30 Sunfish Studio, Llc Single-pass and order-independent transparency in computer graphics using constant memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1898699A (zh) * 2003-12-19 2007-01-17 艾利森电话股份有限公司 阿尔法图像处理
CN101055645A (zh) * 2007-05-09 2007-10-17 北京金山软件有限公司 一种阴影实现的方法及装置
CN101136108A (zh) * 2007-09-26 2008-03-05 腾讯科技(深圳)有限公司 阴影绘制方法及渲染装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Pixel Masks for screen door transparency;Mulder,J.D. et. al;《Visualization 98 Proceedings》;19981024;第2页右栏 *

Also Published As

Publication number Publication date
DE102011011641A1 (de) 2011-08-18
CN102163337A (zh) 2011-08-24
US20110199385A1 (en) 2011-08-18
US8659616B2 (en) 2014-02-25

Similar Documents

Publication Publication Date Title
CN102163337B (zh) 用于使用至少一个半透明表面渲染像素的系统和方法
US11386528B2 (en) Denoising filter
US9547931B2 (en) System, method, and computer program product for pre-filtered anti-aliasing with deferred shading
Maule et al. A survey of raster-based transparency techniques
CN103503032B (zh) 图形硬件中的纹理化
US9177413B2 (en) Unique primitive identifier generation
US7876332B1 (en) Shader that conditionally updates a framebuffer in a computer graphics system
US8547395B1 (en) Writing coverage information to a framebuffer in a computer graphics system
TW201737207A (zh) 藉由追蹤物件及/或基元識別符的圖形處理增強之方法及系統,圖形處理單元及非暫時性電腦可讀媒體
US7817165B1 (en) Selecting real sample locations for ownership of virtual sample locations in a computer graphics system
CN105122310B (zh) 用于基于瓦片的渲染的帧内时戳
CA2686121C (en) Single-pass and order-independent transparency in computer graphics using constant memory
CN108305228A (zh) 图像处理方法、装置、存储介质及处理器
Mara et al. Toward practical real-time photon mapping: Efficient gpu density estimation
Maule et al. Memory-efficient order-independent transparency with dynamic fragment buffer
JP2017076374A (ja) グラフィックス処理システム
US8681154B1 (en) Adaptive rendering of indistinct objects
Patney et al. Fragment‐Parallel Composite and Filter
US20170032566A1 (en) Decorrelation of low discrepancy sequences for progressive rendering
Guzek et al. Efficient rendering of caustics with streamed photon mapping
DE102011013584A1 (de) Hardwarebeschleunigte Simulation atmosphärischer Streuung
Almeida et al. Evaluation of antialiasing techniques on mobile devices
US9514566B2 (en) Image-generated system using beta distribution to provide accurate shadow mapping
US20130127855A1 (en) Stenciled Layer Peeling Graphics Processing
Beaudoin et al. Compressed Multisampling for Efficient Hardware Edge Antialiasing.

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant