单遍表面溅射的制作方法

文档序号:11288967阅读:352来源:国知局
单遍表面溅射的制造方法与工艺

本发明涉及三维表面的基于点的渲染。



背景技术:

用于显示的视觉内容(例如用于图形用户接口和视频游戏的内容)可由图形处理单元(gpu)产生。gpu可将二维或三维(3d)物体转换成可显示的二维(2d)像素表示。

三维表面的基于点的渲染是一种图形渲染技术,其中三维表面可以由一组点图元(也被称作点云)组成。对于三维表面,点云可能是表面的不均匀的分布样本。不同于利用三角形图元的渲染技术,基于点的渲染中利用的点图元并不包含点图元之间的任何连接信息。

基于点的渲染可以用于三维扫描的情境。三维扫描装置可以生成大型点云(例如数百万个点),这个点云可能难以转换或者要以很高的计算成本转换成一组连接的三角形图元(例如三角形网格),这些三角形图元接着用作后续渲染的输入。相反,基于点的渲染技术可以利用三维扫描装置产生的原始数据作为输入。以此方式,在某些应用中,基于点的渲染技术可以比基于三角形的渲染技术更高效。



技术实现要素:

总地来说,本发明的方面针对一种对点云执行单遍表面溅射以渲染三维表面和物体的技术。所述单遍表面溅射技术可以忽略在积累遍次之前执行将深度图像再现到帧缓冲器的可见性遍次,由此提高图形处理单元的渲染性能。在这个意义上,所述技术不是实施表面溅射的可见性遍次和积累遍次,而是可以单遍实施表面溅射。

在一个方面中,本发明涉及一种用于将片段渲染到帧缓冲器的方法。所述方法包含通过至少一个处理器从帧缓冲器中检索与像素相关联的深度值。所述方法进一步包含通过至少一个处理器确定与溅射贴图的片段相关联的片段深度值是否在与像素相关联的深度值的非零偏移量以内。所述方法进一步包含响应于确定与溅射贴图的片段的片段深度值在与像素相关联的深度值的非零偏移量以内,通过至少一个处理器至少部分地基于与像素的片段相关联的数据向帧缓冲器输出像素的经过更新的数据。

在另一方面中,本发明针对一种装置。所述装置可包含帧缓冲器。所述装置可进一步包含至少一个处理器,其经配置以:从所述帧缓冲器中检索与像素相关联的深度值;确定与溅射贴图的片段相关联的片段深度值是否在与所述像素相关联的所述深度值的非零偏移量以内;以及响应于确定与所述溅射贴图的所述片段相关联的所述片段深度值在与所述像素相关联的所述深度值的所述非零偏移量以内,至少部分地基于与所述溅射贴图的所述片段相关联的数据向所述帧缓冲器输出所述像素的经过更新的数据。

在另一方面,本发明涉及一种上面存储有指令的计算机可读存储媒体,所述指令当被执行时致使一或多个处理器:从帧缓冲器中检索与像素相关联的深度值;确定与溅射贴图的片段相关联的片段深度值是否在与所述像素相关联的所述深度值的非零偏移量以内;以及响应于确定与所述溅射贴图的所述片段相关联的所述片段深度值在与所述像素相关联的所述深度值的所述非零偏移量以内,至少部分地基于与所述溅射贴图的所述片段相关联的数据向所述帧缓冲器输出所述像素的经过更新的数据。

在另一方面,本发明涉及一种装置,其包括:用于从帧缓冲器中检索与像素相关联的深度值的装置;用于确定与溅射贴图的片段相关联的片段深度值是否在与所述像素相关联的所述深度值的非零偏移量以内的装置;以及用于响应于确定与所述溅射贴图的所述片段相关联的所述片段深度值在与所述像素相关联的所述深度值的所述非零偏移量以内,至少部分地基于与所述溅射贴图的所述片段相关联的数据向所述帧缓冲器输出所述像素的经过更新的数据的装置。

在附图及以下描述中阐述本发明的一或多个方面的细节。本发明的其它特征、目标和优点将从所述描述和图式以及权利要求书中显而易见。

附图说明

图1是示出可经配置以实施本发明的一或多个方面的实例计算装置的框图。

图2是示出图1的实例处理器、实例gpu和实例系统存储器的实例实施方案的框图。

图3是进一步详细示出图形处理管线的正向映射级的实例操作的框图。

图4是进一步详细示出图形处理管线的过滤/着色级的实例操作的框图。

图5a和5b是进一步详细示出图形处理管线的图像重构级的实例操作的框图。

图6是示出gpu的实例操作的流程图。

具体实施方式

总地来说,本发明的方面针对一种对点云执行单遍表面溅射以渲染三维表面和物体的技术。

从点云渲染三维物体可以包含获得一组点图元作为输入,将所述点图元从三维空间映射到二维空间,构造由来自点图元的表面样本组成的连续表面,包含生成额外表面样本以防止表面样本之间的例如孔的假影,过滤连续表面,以及在输出位置取样连续表面以从点云渲染三维物体的表示。

类似于其它用于渲染三维物体的技术,为了从点云渲染三维物体,图形处理单元(gpu)可以执行深度测试以确定在三维物体被渲染成二维图像空间时,三维物体的哪些部分是可见的,而三维物体的哪些部分是隐藏的(例如被遮挡)。为了确定三维物体的特定片段是否被渲染成像素,gpu可以将特定片段的深度与已经渲染成像素的任何其它片段的深度比较,并且只有在特定片段比先前被渲染成像素的任何其它片段离指定视点更近时,gpu才可以将特定片段渲染成像素。以此方式,gpu可以隐藏任何从指定视点看在其它三维表面后面的三维表面。

执行此深度测试可以用于利用三角形图元的渲染技术,因为在这些渲染技术中,相同表面的邻近三角形图元不重叠而是彼此连接。相反,基于点的渲染技术利用可以是不含有任何连接信息的圆盘形及/或椭圆形的图元的点图元。相同表面的邻近点图元可以重叠,这是因为它们有非均匀分布和非连接的性质,并且为了防止邻近点图元之间有不连续部分(例如孔)。

因此,如果相同表面的多个点图元的片段重叠,则gpu可以掺混这些重叠片段以防止表面的渲染表示发生潜在的假影。然而,因为这多个重叠片段可具有稍微不同的深度值,所以如果gpu执行前述深度测试以作为执行基于点的渲染的一部分,则gpu可以对于像素仅仅渲染表面的最前面的片段,并且可以防止渲染相同表面的任何其它重叠片段,从而潜在地向渲染的表面引入假影。换句话说,gpu不是掺混点图元,而是仅仅渲染一个点图元,由此潜在地在渲染的表面中引入假影。

在用于基于点的渲染的一种实例性深度测试技术中,gpu可以通过如下方式执行可见性遍次:离视点以偏移量ε将三维物体作为深度图像渲染到帧缓冲器中,使得所渲染的三维物体与它在三维空间中的指定位置相比离视点更远偏移量ε。gpu在将三维物体渲染成深度图像时,可以不将深度图像的任何色彩值写入到帧缓冲器的色彩缓冲器中,并且可以将深度图像的深度值写入到帧缓冲器的深度缓冲器中。在执行可见性编次之后,gpu执行积累编次,其将三维物体的色彩和α值积累到帧缓冲器的色彩缓冲器中,但是不用图像的深度值更新深度缓冲器。以此方式,在积累编次期间gpu可以通过如下方式对三维物体执行前述深度测试:将它的深度与可见性遍次期间生成的深度图像的深度比较,使得gpu丢弃渲染的三维物体的在帧缓冲器中的深度图像的对应部分后面的部分。然而,这种技术可能是低效,因为gpu对三维物体执行两个单独的渲染遍次:可见性遍次和积累遍次。

在执行积累遍次之后,gpu可以执行标准化遍次以使帧缓冲器中的像素的色彩值标准化从而消除视觉假影。这些视觉假影,例如色彩亮度的变化,可能发生在特定像素的积累色彩值的α值的总和不到1的时候。因此,在标准化遍次期间,gpu可以对于帧缓冲器中的每个像素,将积累的色彩值除以α值中存储的权重的总和,以产生每个目的地像素的最终色彩值。例如,假设每个积累色彩值包含rgb值以及α值,gpu可以执行根据相关联的α值加权的rgb值的加权和。gpu可以用rgb值的加权和除以积累的色彩值的α值的总和,以产生最终的一组rgb值,使得每个目的地像素的最终色彩值是针对目的地像素和α值1计算的最终的所述组rgb值。

在这个实例中,gpu可以对于帧缓冲器中的每个像素执行可见性遍次。在对于帧缓冲器中的每个像素执行可见性遍次之后,gpu可以对于帧缓冲器中的每个像素执行积累遍次。在对于帧缓冲器中的每个像素执行积累遍次之后,gpu可以对于帧缓冲器中的每个像素执行标准化遍次。

根据本发明的方面,gpu可以能够在从点云渲染图像时通过能够从帧缓冲器的深度缓冲器中读取深度值而消除可见性遍次。例如,gpu可以作为积累遍次的一部分执行深度测试。如更详细地描述,当渲染对于像素的溅射的片段时,gpu可以从帧缓冲器中读取与所述像素相关联的深度值。gpu可以将有待呈现的片段的深度与从帧缓冲器中检索的深度值比较,以基于片段的深度是否在与所述像素相关联的深度值的非零偏移量以内,来确定是否将所述像素的色彩值和α值渲染到帧缓冲器中。因此,gpu可以从帧缓冲器中检索与像素相关联的深度值。gpu可以确定与片段相关联的片段深度值是否在与所述像素相关联的深度值的非零偏移量以内。响应于确定与片段相关联的片段深度值在与像素相关联的深度值的非零偏移量以内,gpu可以至少部分地基于与片段相关联的数据向帧缓冲器输出像素的经过更新的数据。

图1是示出可经配置以实施本发明的一或多个方面的实例计算装置的框图。如图1中所示,计算装置2可以是计算装置,包含(但不限于)视频装置、媒体播放器、机顶盒、无线手持机(例如移动电话及所谓的智能电话)、个人数字助理(pda)、台式计算机、膝上型计算机、游戏控制台、视频会议单元、平板计算装置等等。在图1的实例中,计算装置2可包含中央处理单元(cpu)6、系统存储器10和gpu12。计算装置2还可包含显示处理器14、收发器模块3、用户接口4及显示器8。收发器模块3和显示处理器14两者可为与cpu6及/或gpu12相同的集成电路(ic)的部分,两者可在包含cpu6及/或gpu12的一或多个ic的外部,或可形成于在包含cpu6及/或gpu12的ic外部的ic中。

计算装置2可包含为清楚起见未在图1中展示的额外模块或单元。举例来说,计算装置2可在其中计算装置2为移动无线电话的实例中包含扬声器和麦克风(两者均未在图1中示出)来实现电话通信,或在计算装置2为媒体播放器的情况下包含扬声器。计算装置2还可包含摄像机。此外,计算装置2中所示的各种模块和单元可能不是在计算装置2的每个实例中都是必需的。举例来说,在计算装置2为台式计算机或经装备以与外部用户接口或显示器介接的其它装置的实例中,用户接口4及显示器8可在计算装置2外部。

用户接口4的实例包含(但不限于)轨迹球、鼠标、键盘和其它类型的输入装置。用户接口4也可为触摸屏并且可并入为显示器8的一部分。收发器模块3可包含允许计算装置2与另一装置或网络之间的无线或有线通信的电路。收发器模块3可包含调制器、解调器、放大器及其它用于有线或无线通信的此类电路。

cpu6可为经配置以处理用于执行的计算机程序的指令的微处理器,例如中央处理单元(cpu)。cpu6可包括控制计算装置2的操作的通用或专用处理器。用户可将输入提供到计算装置2以致使cpu6执行一或多个软件应用程序。在cpu6上执行的软件应用程序可包含(例如)操作系统、字处理器应用程序、电子邮件应用程序、电子数据表应用程序、媒体播放器应用程序、视频游戏应用程序、图形用户接口应用程序或另一程序。另外,cpu6可执行用于控制gpu12的操作的gpu驱动程序22。用户可经由一或多个输入装置(未展示)(例如,键盘、鼠标、麦克风、触摸垫或经由用户接口4耦合到计算装置2的另一输入装置)将输入提供到计算装置2。

在cpu6上执行的软件应用程序可包含指示cpu6向显示器8渲染图形数据的一或多个图形渲染指令。在一些实例中,所述软件指令可符合图形应用程序编程接口(api),比如(例如)开放图形库api、开放图形库嵌入系统(opengles)api、direct3dapi、x3dapi、rendermanapi、webglapi、开放计算语言(opencltm)或任何其它公共或专有标准gpu计算api。为了处理图形渲染指令,cpu6可将一或多个图形渲染命令发布到gpu12(例如,经由gpu驱动程序22)以使得gpu12执行图形数据渲染中的一些或全部。在一些实例中,待渲染的图形数据可包含例如点、线、三角形、四边形、三角形带等的一系列图形图元。

gpu12可配置成执行图形操作,从而将一或多个图形图元渲染到显示器8。因此,当cpu6上执行的软件应用程序中的一个需要图形处理时,cpu6可提供图形命令和图形数据到gpu12以用于向显示器8渲染。图形数据可包含(例如)绘图命令、状态信息、图元信息、纹理信息等。在一些情况下,gpu12可内置有高度并行结构,所述高度并行结构提供比cpu6更高效的复杂图形相关操作的处理。举例来说,gpu12可包含经配置成以并行方式对多个顶点或像素进行操作的多个处理元件,诸如着色器单元。在一些情况下,gpu12的高度并行性质允许gpu12比使用cpu6直接将场景绘制到显示器8更快速地将图形图像(例如,gui及二维(2d)及/或三维(3d)图形场景)绘制到显示器8上。

在一些情况下,可将gpu12集成到计算装置2的主板中。在其它情况下,gpu12可存在于图形卡上,所述图形卡安装在计算装置2的主板中的端口中或可以其它方式并入经配置以与计算装置2交互操作的外围装置内。在一些实例中,gpu12可与cpu6在芯片上,例如在芯片上系统(soc)中,gpu12可包含一或多个处理器,例如一或多个微处理器、专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)或其它等效集成或离散逻辑电路。gpu12还可包含一或多个处理器核心,使得gpu12可被称作多核处理器。

在一些实例中,图形存储器40可为gpu12的一部分。因此,gpu12可在不使用总线的情况下从图形存储器40读取数据且将数据写入到图形存储器40。换句话说,gpu12可使用本地存储装置而非芯片外存储器在本地处理数据。此类图形存储器40可称为芯片上存储器。这允许gpu12通过消除对gpu12经由总线读取和写入数据的需要来以更高效方式操作,经由总线读取和写入数据可经历较重的总线业务以及相关联的对带宽的争用。然而,在一些情况下,gpu12可能不包含单独的存储器,而是经由总线利用系统存储器10。图形存储器40可包含一或多个易失性或非易失性存储器或存储装置,例如,随机存取存储器(ram)、静态ram(sram)、动态ram(dram)、可擦除可编程rom(eprom)、电可擦除可编程rom(eeprom)、闪存、磁性数据媒体或光学存储媒体。

在一些实例中,gpu12可将完全形成的图像存储在系统存储器10中。显示处理器14可以从系统存储器10及/或帧缓冲器16检索图像,并且输出使显示器8的像素发光以显示图像的值。显示器8可为显示由gpu12产生的图像内容的计算装置2的显示器。显示器8可为液晶显示器(lcd)、有机发光二极管显示器(oled)、阴极射线管(crt)显示器、等离子显示器或另一类型的显示装置。

根据本发明的方面,gpu12可以从帧缓冲器16中检索与像素相关联的深度值。gpu12可以确定与片段相关联的片段深度值是否在与所述像素相关联的深度值的非零偏移量以内。响应于确定与片段相关联的片段深度值在与像素相关联的深度值的非零偏移量以内,gpu12可以至少部分地基于与片段相关联的数据向帧缓冲器16输出像素的经过更新的数据。

图2是示出图1的cpu6、gpu12和系统存储器10的实例性实施方案的框图。如图2中所示,cpu6可执行至少一个软件应用程序18和gpu驱动程序22,其中的每一者可为一或多个软件应用程序或服务。

可用于cpu6和gpu12的存储器可包含系统存储器10和帧缓冲器16。帧缓冲器16可为系统存储器10的一部分或可与系统存储器10分开。帧缓冲器16可存储经过渲染的图像数据,例如像素数据,以及任何其它数据。在一些实例中,帧缓冲器16可以存储与有待输出到显示器8的每个像素相关联的一组数据。对于每个像素,相关联的所述组数据可以包含一或多个色彩值,例如红色、绿色、蓝色和α分量、一或多个深度值等等。

软件应用程序18可为利用gpu12的功能性的任何应用程序。举例来说,软件应用程序18可为gui应用程序、操作系统、便携式制图应用程序、用于工程或艺术应用的计算机辅助设计程序、视频游戏应用程序,或使用2d或3d图形的另一类型的软件应用程序。

软件应用程序18可包含指示gpu12渲染图形用户接口(gui)及/或图形场景的一或多个绘图指令。例如,绘图指令可以包含定义有待通过gpu12渲染的一组例如点的一或多个图形图元的指令。在一些实例中,绘图指令可共同地定义用于gui中的多个开窗表面中的全部或部分。在额外实例中,所述绘图指令可共同地定义图形场景的全部或部分,所述图形场景包含在由应用程序定义的模型空间或世界空间内的一或多个图形物体。

软件应用程序18可调用gpu驱动程序22,以向gpu12发出一或多个命令,来将一或多个图形图元渲染到可显示图形图像中。举例来说,软件应用程序18可调用gpu驱动程序22,以向gpu12提供图元定义。在一些情况下,可以用构成点云的一系列点图元的形式向gpu12提供图元定义。点云中的每个点图元可以是描述较小邻域中的表面的表面元素(面元)。面元具有位置和色彩。在一些实例中,面元也可以具有法线、半径等等。因此,每个点的图元定义可以指明相关联的点的位置、色彩、法线、半径等等。

基于软件应用程序18发布到gpu驱动程序22的指令,gpu驱动程序22可制订指定供gpu12执行的一或多个操作以便渲染所述组点图元的一或多个命令。当gpu12从cpu6接收到命令时,着色器单元46的一或多个着色器处理器可以执行图形处理管线50以解码命令,并且可以配置图形处理管线50以执行所述命令中指定的操作。例如,图形处理管线50可以读取数据并且将数据重组成点图元。在执行指定操作之后,图形处理管线50可以处理、光栅化并且渲染点图元,并且可以向与显示装置相关联的帧缓冲器16输出经过渲染的数据。在一些实例中,图形处理管线50可以在例如着色器单元46的可编程着色器核心上执行。

帧缓冲器16可以包含存储gpu12的目的地像素的一或多个缓冲器,例如深度缓冲器24、色彩缓冲器26和积累缓冲器28中的一或多个。每一目的地像素可与唯一的屏幕像素位置相关联。在一些实例中,帧缓冲器16可以包含色彩缓冲器26,其存储每个目的地像素的色彩值。对于每个目的地像素,色彩值可以包含色彩分量和目的地α值。例如,帧缓冲器16的色彩缓冲器26可以存储每个像素的红色、绿色、蓝色、α(rgba)分量,其中“rgb”分量分别对应于红色、绿色和蓝色色彩值,并且“a”分量对应于目的地α值。帧缓冲器16还可包含深度缓冲器24,其存储每个目的地像素的深度值。深度缓冲器24存储的深度值可以指示对于特定视点的目的地像素的相对距离。例如,深度值可以是0与1之间的浮点数,其中相对较小的深度值指示目的地像素离视点相对更近。

帧缓冲器16还可包含积累缓冲器28,其积累对于每个目的地像素写入到帧缓冲器16中的多个rgba分量。例如,如上文所论述,因为表示相同表面的多个点的片段可能重叠相同像素,所以积累缓冲器28可以对于每个目的地像素存储来自表示相同表面并且重叠相同目的地像素的多个点的每个片段的rgba分量。尽管将帧缓冲器16和系统存储器10示出为单独的存储器单元,但在其它实例中,帧缓冲器16可为系统存储器10的部分。此外,在一些实例中,帧缓冲器16还可能能够存储除了像素之外的任何合适的数据。

图形存储器40可包含芯片上存储装置或存储器,其物理上集成到gpu12的集成电路芯片中。如果图形存储器40是在芯片上,那么与经由系统总线从系统存储器10读取值或将值写入到系统存储器10相比,gpu12可能够更快速地从图形存储器40读取值或将值写入到图形存储器40。

在一些实例中,图形处理管线50可以包含正向映射级52、过滤/着色级54和图像重构级56中的一或多个。在一些实例中,图形处理管线的这些级可以被视为着色器级。这些着色器级可实施为在gpu12中的着色器单元46上执行的一或多个着色器程序。着色器单元46可配置成处理组件的可编程管线。在一些实例中,着色器单元46可被称为“着色器处理器”或“统一着色器”并且可以作为正向映射级52、过滤/着色级54及/或图像重构级56的一部分执行几何形状、顶点、片段或其它着色操作以渲染图形。着色器单元46可以包含一或多个着色器处理器,其中的每一个可以是专门的微处理器,其包含用于获取和解码操作的一或多个组件、用于执行算术计算的一或多个alu、一或多个存储器、高速缓冲存储器和寄存器。

通过将命令发送至着色器单元46以执行顶点着色器程序、外壳着色器程序、域着色器程序、几何形状着色器程序和片段着色器程序中的一或多者,gpu12可指定着色器单元46执行多种着色操作,例如顶点着色、外壳着色、域着色、几何形状着色、片段着色等等。在一些实例中,gpu驱动程序22可致使在cpu6上执行的编译器编译一或多个着色器程序,且将经编译的着色器程序下载到包含于gpu12内的一或多个可编程着色器单元上。可以用高级着色语言来编写着色器程序,例如opengl着色语言(glsl)、高级着色语言(hlsl)、用于图形的c(cg)着色语言、openclc内核等。经过编译的着色器程序可以包含一或多个指令,其控制gpu12内的着色器单元46执行图形处理管线50和执行各种其它图形相关操作的操作。

根据本发明的一方面,着色器单元46可以执行图形处理管线50以从一组点图元渲染三维表面。图形处理管线50可以包含正向映射级52、过滤/着色级54和图像重构级56。在一些实例中,图形处理管线50可以包含图2中未示出的额外级。在一些实例中,图形处理管线50也可以省略正向映射级52、过滤/着色级54和图像重构级56中的一或多个。在一些实例中,着色器单元46可以执行一或多个着色器程序,例如顶点着色器、片段着色器等等以执行正向映射级52、过滤/着色级54和图像重构级56以从一组点图元渲染三维表面。

为了执行正向映射级52,着色器单元46可以执行点云中的每个点的透视投影,以将每个点从三维物体空间映射到二维屏幕空间,以便产生通过点云表示的三维物体的二维表示。点云从三维物体空间到二维屏幕空间的这种映射可以类似于将三角形顶点投影到图像空间。相对于图3进一步详细论述正向映射级52。

为了执行过滤/着色级54,着色器单元46可以将作为正向映射级52的结果的每个经过映射的点图元着色和过滤。例如,着色器单元46可以向每个经过映射的点图元施加α光罩以生成溅射图元。着色器单元46还可过滤溅射图元以防止抗混叠。相对于图4进一步详细论述过滤/着色级54。

为了执行图像重构级56,着色器单元46可以从溅射图元重构连续三维表面。例如,着色器单元46可以填充所述组溅射图元之间的不连续部分,并且可以使所述组溅射图元光栅化。着色器单元46可以执行积累遍次以逐个片段地将所述组点图元渲染到帧缓冲器16。执行积累遍次可以包含对于每个片段执行可见性测试并且在帧缓冲器16中积累通过可见性测试的片段的色彩值。换句话说,不是分开实施可见性遍次和积累遍次,而是可将可见性测试并入到积累遍次中,从而允许单遍溅射技术。相对于图5a和5b进一步详细论述图像重构级56。

图3是进一步详细示出图形处理管线50的正向映射级52的实例操作的框图。如图3中所示,在图形处理管线50的正向映射级52中,着色器单元46可以执行点云中的每个点的透视投影以将每个点从三维物体空间58映射到二维屏幕空间70。在将三维表面表示为点云时,点云中的每个点可以由表面元素(面元)表示,表面元素是描述三维表面的较小邻域的点渲染图元。因此,每个面元可以与表面区域相关联。例如,三维表面60可以由一组表示一组点的圆盘形面元59表示。每个面元可以与至少位置和色彩相关联。例如,所述组面元59中的面元62可以与位置64和色彩相关联。在一些实例中,每个面元还可与法线和半径相关联。例如,面元62还可与法线66和半径68相关联。

着色器单元46可以至少部分地基于面元的位置、半径及/或法线,将从视点72查看的面元从物体空间58投影到屏幕空间70。例如,着色器单元46可以基于面元62的位置64、法线66及/或半径68将面元62从物体空间投影屏幕空间70,使得屏幕空间70中的面元62可以是椭圆形。

图4是进一步详细示出图形处理管线50的过滤/着色级54的实例操作的框图。如图4中所示出,着色器单元46可以对从着色器单元46执行正向映射级52产生的所述组面元执行逐点着色。这些着色可以包含常规着色模型,例如冯氏着色等等。着色器单元46可以对于每个面元通过组合α光罩与色彩而创建溅射图元。例如,鉴于面元80具有色彩值c,着色器单元46可以向面元80施加α光罩82,例如二维高斯函数,其具有一组α值w(x,y),从而得到具有色彩和c*w(x,y)的α值的溅射贴图84。因为α值与位置相关,使得α光罩82的α值可能基于α光罩82上的特定(x,y)位置是不同的,所以相应地,溅射贴图84还可基于溅射贴图84的特定(x,y)位置而具有不同的α值。因此,着色器单元46可以将通过执行正向映射级52得到的一组面元变换成具有色彩和一组α值的一组溅射贴图。此外,着色器单元46还可对溅射贴图执行抗混叠以消除混叠假影。

图5a和5b是进一步详细示出图形处理管线50的图像重构级56的实例操作的框图。在图像重构级56中,着色器单元46可以从作为在正向映射级52和过滤/着色级54中处理的结果的溅射贴图在图像空间中重构连续表面,并且可以将重构的表面渲染到帧缓冲器16。

因为点云中的点在空间中不均匀地分布,并且因为二维屏幕空间中的溅射贴图可以是椭圆形的,所以溅射贴图之间可存在不连续部分。因此,在图像重构级56中,着色器单元46可以生成额外的溅射贴图以遮盖溅射贴图之间的这些不连续部分,使得所述组溅射贴图可以表示连续表面。如图5a的实例中所示,溅射贴图90可以包含不连续部分92。在图像重构级56中,着色器单元46可以确定溅射贴图90包含不连续部分92,并且,作为响应,可以生成具有指定半径并且在指定位置的溅射贴图94,使得溅射贴图94遮盖不连续部分92,从而让所述组溅射贴图可以表示连续表面。

在渲染三维表面时,不同表面或表面的不同部分可以相对于视点处在不同深度,使得表面的一部分可能会被表面的更接近视点的另一部分遮挡。因此,在图像重构级56中,着色器单元46还可确定图像空间中的溅射贴图的可见性,以对于每个像素确定位于图像空间中的像素上的溅射贴图的片段是否被渲染到帧缓冲器16中,或者是否应当丢弃溅射贴图的片段不做进一步处理。

因为所述组溅射贴图不是基于深度排序的,所以着色器单元46有时可能会首先遇到位于图像空间中的特定像素上的第一溅射贴图,然后遇到也位于图像空间中的与第一溅射贴图相同的特定像素上但是深度离当前视点比第一溅射贴图更远的第二溅射贴图。如果着色器单元46不对第一溅射贴图和第二溅射贴图执行深度测试,则着色器单元46可以在帧缓冲器16中的特定像素上渲染第二溅射贴图而不是第一溅射贴图,即使第二溅射贴图的深度离当前视点比特定像素的第一溅射贴图更远,并且因而应当被第一溅射贴图从当前视点遮挡。

如图5b中所示,表面96和98可能都由一组溅射贴图构成。从视点100的角度看,构成表面98的所有溅射贴图都可以在表面96的后面。此外,从视点100的角度看,溅射贴图102、104和106每个可以与同一个特定像素相交。具体地说,对于视点100而言,溅射贴图102的片段103、溅射贴图104的片段105和溅射贴图106的片段107每个可以潜在地被渲染到同一个像素。因为着色器单元46可能会按任何次序遇到并且处理溅射贴图102、104和106,所以着色器单元46可以对于与片段103、105和107相交的特定像素执行深度测试,以确定溅射贴图102、104和106中的每一个如何对像素的色彩值做出贡献。

在一些实例中,对于像素,着色器单元46可以确定离最前面的片段的深度偏移量,使得在最前面的片段后面不超过深度偏移量的片段不会被遮挡而无法看到。实情为,深度离最前面的片段的深度在深度偏移量以内的片段与最前面的片段一起可以对像素的色彩值做出贡献,即使这些片段从视点100看在最前面的片段后面也是如此。举例来说,如上文所述,在一些情况下,重叠片段的色彩值可以掺混,而非丢弃在更后面的片段。通过确定两个片段是否在深度偏移量以内,着色器单元46可以能够确定哪些片段要掺混,哪些片段要丢弃不做进一步处理。

在图5b的实例中,着色器单元46可以确定片段103是片段105和107当中处在最前面的片段。着色器单元46还可确定深度偏移量108,使得从视点100看在片段103后面的深度小于或等于深度偏移量108的片段仍然可能对像素的色彩值有贡献。如图5b的实例中所示,片段107从视点100看在片段103后面,并且不在离片段103的深度偏移量108以内。因此,着色器单元46可以丢弃片段107,使得片段107对像素的色彩值没有贡献。同时,片段105从视点100看在片段103后面,但是离片段103在深度偏移量108以内。因此,片段105可以对像素的色彩值有贡献。例如,着色器单元46可以向帧缓冲器16输出像素的片段105的色彩值。具体地说,着色器单元46可以将像素的片段103和105的色彩值积累到积累缓冲器28中。

着色器单元46可以通过使一组溅射贴图光栅化并且执行片段着色器代码以将所述组溅射贴图逐个片段地渲染到帧缓冲器16中来执行图像重构级56。经过着色器单元46处理的每个片段可以是溅射贴图的一部分并且可以包含构成溅射贴图的所述部分的像素中的一或多个。在一些实例中,每个片段可以是溅射贴图的单一像素部分。

着色器单元46可以对于每个片段确定是否将片段渲染到帧缓冲器16中,并且,响应于确定将片段渲染到帧缓冲器16中,基于所述片段来更新帧缓冲器16中的一或多个相关联的像素。将片段渲染到帧缓冲器16中,可以包含修改与片段相关联的一或多个像素的帧缓冲器16中的一或多个数据值。例如,着色器单元46可以更新色彩缓冲器中的与所述一或多个像素相关联的色彩值,深度缓冲器中的与所述一或多个像素相关联的深度值,等等。

如上文所论述,由于溅射贴图可能彼此重叠,例如由于着色器单元46生成溅射贴图以遮盖溅射贴图之间的不连续部分(例如孔),所以多个溅射贴图片段可能与图像空间中重叠单一像素。因此,在确定是否将片段渲染到帧缓冲器16中时,着色器单元46可以对片段执行深度测试以确定特定片段的深度是否在已经被渲染到帧缓冲器16中的对应于片段的目的地像素的片段的深度偏移量以内,并且,如果是,则修改帧缓冲器16的色彩缓冲器中的与目的地像素相关联的色彩值。

可以在先前未以偏移深度将三维物体作为深度图像渲染到帧缓冲器16中并且对照深度图像执行深度测试的情况下执行此深度测试,使得只有通过对照深度图像的深度测试的溅射贴图的片段才被认为是可见的并且被渲染到帧缓冲器16中。实情为,着色器单元46可以执行片段着色器代码,其从帧缓冲器16的深度缓冲器中读取深度值以对于目的地像素确定对应于目的地像素的特定片段的深度是否在与着色器单元46从帧缓冲器16的深度缓冲器中检索的目的地像素相关联的深度值的偏移量以内。

根据本发明的方面,着色器单元46可以作为确定是否将溅射贴图的片段渲染到帧缓冲器16中的像素的一部分,从帧缓冲器16中检索与对应于溅射贴图的片段的像素相关联的深度值。例如,着色器单元46可以从帧缓冲器16中包含的深度缓冲器24中检索与对应于溅射贴图的片段的目的地像素相关联的深度值。检索与像素相关联的深度值可以包含检索最近被渲染到所述像素的溅射贴图的片段的深度值,着色器单元46可以通过执行gl_lastfragdepth()函数来检索所述深度值,其中所述函数使得在着色器单元46上执行的片段着色器代码能够从帧缓冲器16中读取最近被渲染到所述像素的溅射贴图的片段的深度值。在一些实例中,深度值可以在0与1之间,并且深度值可以指示像素的色彩与视点之间的相对距离。例如,深度值越小,相关联的像素可能离视点越近。

着色器单元46可以确定与溅射贴图的片段相关联的片段深度值是否在与所述像素相关联的深度值的非零偏移量以内。所述片段可以是位于二维图像空间中的像素上的溅射贴图的至少一部分。以此方式,溅射贴图的片段可能对应于帧缓冲器16中的目的地像素位置。例如,在给定非零偏移量为ε的情况下,并且在给定从0到1的深度值范围的情况下(其中0表示相关联像素最靠近视点),如果深度值小于或等于与从帧缓冲器16检索的像素相关联的深度值与ε的总和,则着色器单元46可以确定与溅射贴图的片段相关联的片段深度值在偏移量以内。相反,如果深度值大于与从帧缓冲器16检索的像素相关联的深度值与ε的总和,则着色器单元46可以确定与溅射贴图的片段相关联的片段深度值不在偏移量以内。

响应于确定与溅射贴图的片段相关联的片段深度值在与像素相关联的深度值的偏移量以内,着色器单元46可以至少部分地基于与片段相关联的数据向帧缓冲器输出与像素相关联的经过更新的数据。例如,如果着色器单元46确定与片段相关联的片段深度值小于当前存储于深度缓冲器24中的深度值,由此指示所述片段比任何其它先前被渲染到相同像素的片段相对更接近视点,则着色器单元46可以向帧缓冲器16输出与所述片段相关联的片段深度值,以替换当前与所述像素相关联并且存储于深度缓冲器24中的深度值。着色器单元46还可向帧缓冲器16输出与所述片段相关联的色彩值(例如红色、绿色和蓝色分量值以及α值),从而使得帧缓冲器16可以将色彩值积累到积累缓冲器28中。以此方式,帧缓冲器16可以对于每个目的地像素积累通过深度测试的每个片段的rgba值。

在一些实例中,着色器单元46可以通过至少部分地基于与片段相关联的色彩值生成经过更新的色彩值,借此向帧缓冲器输出与像素相关联的经过更新的数据。着色器单元46可以将与片段相关联的色彩值跟与从帧缓冲器16检索的像素相关联的色彩值掺混,以使像素的色彩值标准化以消除视觉假影。着色器单元46可以从帧缓冲器16中的色彩缓冲器26或者与帧缓冲器16相关联的色彩缓冲器26中检索与像素相关联的色彩值。

例如,着色器单元46可以通过执行gl_lastfragdata()函数从帧缓冲器16中检索色彩值,所述函数使得在着色器单元46上执行的片段着色器代码能够从帧缓冲器16中读取存储于帧缓冲器16中的像素的色彩值(例如rgba值)。着色器单元46可以将与片段相关联的色彩值与从帧缓冲器16检索的像素的色彩值掺混以产生经过掺混的色彩值,并且可以向帧缓冲器16中的色彩缓冲器26或与帧缓冲器16相关联的色彩缓冲器26输出经过掺混的值,以作为所述像素的色彩值。例如,在给定每个积累的色彩值包含rgb值以及α值的情况下,着色器单元46可以对根据相关联的α值经过加权的片段的rgb值和从帧缓冲器16中检索的像素的rgb值执行加权和。着色器单元46可以用rgb值的加权和除以片段的色彩值与像素的色彩值的α值的总和以产生经过更新的一组rgb值,使得目的地像素的经过更新的色彩值是针对目的地像素和α值1计算的经过更新的所述组rgb值。着色器单元46可以将所述像素的rgba值存储到帧缓冲器16中。

以此方式,着色器单元46可以将所述片段的色彩值与通过特定像素的深度测试的其它片段贡献的像素色彩掺混,并且可以将所述像素的经过掺混的色彩值存储到帧缓冲器中。此外,通过使用本文所公开的技术,着色器单元46可以对于特定片段,确定与溅射贴图的片段相关联的片段深度值在与像素相关联的深度值的偏移量以内,并且,如果是,则依次地向帧缓冲器输出与所述像素相关联的色彩值。以此方式,着色器单元46可以响应于确定与溅射贴图的片段相关联的片段深度值在与像素相关联的深度值的偏移量以内,向帧缓冲器输出与像素相关联的色彩值,并且着色器单元46不对其它片段执行任何干预性深度测试。

响应于确定与片段相关联的片段深度值不在与像素相关联的深度值的非零偏移量以内,着色器单元46可以丢弃所述片段,从而使得着色器单元46不将片段渲染到帧缓冲器16中。如果例如与片段相关联的片段深度值大于与像素相关联的深度值和非零偏移量的总和,则着色器单元46可以确定与片段相关联的片段深度值不在与像素相关联的深度值的非零偏移量以内。

图6是进一步详细示出gpu12的实例操作的流程图。如图6中所示,gpu12可以从帧缓冲器16中检索与像素相关联的深度值(602)。gpu12可以进一步确定与溅射贴图的片段相关联的片段深度值是否在与所述像素相关联的深度值的非零偏移量以内(604)。响应于确定与溅射贴图的片段相关联的片段深度值在与像素相关联的深度值的非零偏移量以内,gpu12可以至少部分地基于与溅射贴图的片段相关联的数据向帧缓冲器16输出与像素相关联的经过更新的数据(606)。

在一些实例中,gpu12可以进一步通过确定与溅射贴图的片段相关联的片段深度值是否小于或等于与像素相关联的深度值和非零偏移量的总和,借此确定与溅射贴图的片段相关联的片段深度值是否在与像素相关联的深度值的非零偏移量以内。在一些实例中,gpu12可以响应于确定与溅射贴图的片段相关联的片段深度值不在与像素相关联的深度值的非零偏移量以内,丢弃溅射贴图的片段不做进一步处理。在一些实例中,gpu12可以通过从帧缓冲器16中的深度缓冲器24检索与像素相关联的深度值,借此从帧缓冲器16中检索与像素相关联的深度值。

在一些实例中,gpu12可以基于与溅射贴图的片段相关联的色彩值确定像素的经过更新的色彩值,并且可以向帧缓冲器16输出所述像素的经过更新的色彩值。在一些实例中,gpu12可以基于与溅射贴图的片段相关联的片段深度值确定像素的经过更新的深度值,并且可以向帧缓冲器16输出像素的经过更新的深度值。

在一或多个实例中,所描述功能可用硬件、软件、固件或其任何组合来实施。如果用软件实施,则可将功能作为一或多个指令或代码存储在计算机可读媒体上或经由计算机可读媒体传输。计算机可读媒体可包含计算机数据存储媒体或通信媒体,所述通信媒体包含方便将计算机程序从一处传递至另一处的任何媒体。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本发明中描述的技术的指令、代码及/或数据结构的任何可用媒体。借助于实例而非限制,这些计算机可读媒体可包括ram、rom、eeprom、cd-rom或其它光盘存储装置、磁盘存储装置或其它磁性存储装置。如本文所使用的磁盘及光盘包含压缩光盘(cd)、激光光盘、光学光盘、数字多功能光盘(dvd)、软磁盘及蓝光光盘,其中磁盘通常是以磁性方式再现数据,而光盘是用激光以光学方式再现数据。上述的组合应包含于计算机可读媒体的范围内。

代码可以由一或多个处理器执行,所述一或多个处理器例如是一或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)或其它等效的集成或离散逻辑电路。因此,如本文中所使用的术语“处理器”可指代上述结构或适用于实施本文中所描述的技术的任何其它结构中的任一者。另外,在一些方面中,本文中所描述的功能性可在经配置以用于编码和解码的专用硬件及/或软件模块内提供,或并入在组合编解码器中。并且,所述技术可完全在一或多个电路或逻辑元件中实施。

本发明的技术可在广泛多种装置或设备中实施,所述装置或设备包含无线手持机、集成电路(ic)或一组ic(即,芯片组)。本发明中描述各种组件、模块或单元是为了强调经配置以执行所揭示的技术的装置的功能方面,但未必需要通过不同硬件单元实现。实际上,如上文所描述,各种单元可以配合合适的软件及/或固件组合在编解码器硬件单元中,或者通过互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一或多个处理器。

已经描述了本发明的各个方面。这些及其它方面在所附权利要求书的范围内。

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