CN104050704A - 用于可变分辨率渲染的一致性顶点捕捉 - Google Patents

用于可变分辨率渲染的一致性顶点捕捉 Download PDF

Info

Publication number
CN104050704A
CN104050704A CN201310746584.2A CN201310746584A CN104050704A CN 104050704 A CN104050704 A CN 104050704A CN 201310746584 A CN201310746584 A CN 201310746584A CN 104050704 A CN104050704 A CN 104050704A
Authority
CN
China
Prior art keywords
viewport
pixel
spacing
dimensions
seizure
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.)
Pending
Application number
CN201310746584.2A
Other languages
English (en)
Inventor
埃里克·布雷恩·卢姆
亨利·帕尔德·莫尔顿
凯勒·派瑞·罗敦
沃尔特·罗伯特·斯坦纳
济亚德·赛米·哈库拉
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 CN104050704A publication Critical patent/CN104050704A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/14Transformations for image registration, e.g. adjusting or mapping for alignment of images
    • G06T3/153Transformations for image registration, e.g. adjusting or mapping for alignment of images using elastic snapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2004Aligning objects, relative positioning of parts

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Architecture (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Image Generation (AREA)

Abstract

本公开提供用于可变分辨率渲染的一致性顶点捕捉。提供用于调整顶点位置的系统、方法和计算机程序产品。接收一个或多个视口维度并基于一个或多个视口维度确定捕捉间距。根据捕捉间距将顶点位置调整到网格。顶点调整的精度可随着视口的至少一个维度的减少而增加。顶点调整的精度可随着视口的至少一个维度的增加而减少。

Description

用于可变分辨率渲染的一致性顶点捕捉
技术领域
本发明涉及三维(3D)图形处理,并且,更具体地,涉及将顶点捕捉(snap)到坐标。
背景技术
图形处理管线将典型地与三维对象相关联的输入图形数据转换成与二维表面相关联的像素数据。在常规实现方案中,图形处理管线的世界空间部分负责在当数据转换成像素数据之前处理输入图形数据,其通常包括三角形和相关顶点的合集。图形处理管线的屏幕空间部分负责处理被转换的像素数据并生成用于显示的最终像素值。
图形处理管线中的级(stage)中的一个是光栅化级,其典型地涉及将由管线的世界空间部分所处理的图形数据转换成屏幕空间中的像素数据。光栅化可涉及生成描述在管线的世界空间部分中处理的三角形边的边等式、确定那些三角形的覆盖信息、以及计算由三角形所覆盖的像素和片段(fragment)的属性值。光栅化中所涉及的计算一般是采用固定分数像素(fractional-pixel)精度所正常地实施的定点(fixed point)计算。因此,可认为定点光栅化计算的结果被“捕捉”到网格,其中网格框与分数像素大小的框相对应。
在许多实现方案中,图形处理管线可以以不同分辨率将相同三维对象光栅化。例如,可首先以低分辨率将三角形光栅化以做出关于三角形的某些确定,诸如表面的什么通用部分被三角形所覆盖。随后可以以较高分辨率将三角形光栅化以生成用于显示的图像数据。然而,与以较高分辨率所进行的光栅化相比较,以较低分辨率所进行的光栅化一般提供“捕捉”到较粗略网格的结果。因此,较低分辨率的光栅化可产生未正确地与较高分辨率的光栅化的覆盖结果对齐的覆盖结果。例如,如果基于低分辨率光栅化的结果将帧缓冲区存储器分配用于稀疏渲染,那么由于较低分辨率光栅化的结果被捕捉到较粗略网格的事实,存储器可能是过度分配或分配不足的。更具体地,可能针对分配对其是不必要的块分配存储器,或可能没有针对分配对其是必要的块分配存储器。
因此,存在对于解决以不同分辨率将图形数据光栅化中的问题和/或与现有技术相关联的其他问题的需求。
发明内容
提供用于调整顶点位置的系统、方法和计算机程序产品。接收一个或多个视口(viewport)维度并基于一个或多个视口维度确定捕捉间距。根据捕捉间距将顶点位置调整到网格。
附图说明
图1A和1B示出将基元顶点位置捕捉到网格的现有技术;
图2示出根据一个实施例的、用于基于捕捉间距调整顶点位置的方法的流程图;
图3A和3B示出根据一个实施例的、基于依赖分辨率的捕捉间距所调整的基元顶点位置;
图4A示出根据一个实施例的图形处理管线;
图4B示出根据一个实施例的、用于基于捕捉间距调整顶点位置的方法的另一流程图;
图5示出根据一个实施例的并行处理单元(PPU);
图6示出根据一个实施例的、图5的流多处理器;以及
图7示出在其中可实现各先前实施例的各架构和/或功能性的示例性系统。
具体实施方式
常规地,通过以两个不同分辨率针对对象应用视口变换、计算用于两个不同分辨率的相应的边等式、以及以两个不同分辨率将对象光栅化来以两个不同分辨率将对象光栅化。第一视口变换以第一分辨率产生用于对象的顶点的二维屏幕空间坐标,第二视口变换以第二分辨率产生用于对象的顶点的二维屏幕空间坐标。
然而,常规方法的一个缺点是,以不同分辨率应用视口变换致使对象的顶点的坐标被“捕捉”到不同网格,因为对于不同分辨率,固定分数像素大小是不同的。对不同分辨率的该“捕捉”意味着,与针对对象以第二分辨率对顶点进行重新定位相比较,针对相同对象以第一分辨率顶点被不同地重新定位,致使对象的形状随分辨率的改变而改变。
由于分数像素捕捉的量与像素大小相关,所以捕捉的投影到高分辨率显示表面的顶点要小于(与表面大小相关)投影到低分辨率显示表面的顶点。例如,当顶点被捕捉到宽度或高度是1/16的像素以及10x10像素的显示表面,顶点被捕捉到总显示表面宽度和/或高度的(1/16)/(10)=1/160(即网格间距在总显示表面的每个维度上实际是1/160)。另一方面,对于80x80像素的较高分辨率显示表面,当顶点被捕捉到1/16的像素时,顶点被捕捉到总显示表面宽度和/或高度的(1/16)/(80)=1/1280(即网格间距实际是总显示表面维度的1/640)
图1A示出将基元顶点位置捕捉到网格100的现有技术。包括三个顶点的基元105被捕捉到与2x2像素显示表面相对应的网格100。网格100中的每个单元格与1/4个像素相对应并且大小是1/2个像素的平方。基元105的三个顶点以像素的1/2被捕捉到网格单元格以产生被捕捉的基元110。基元的形状由于捕捉的结果而改变。
图1B示出将基元顶点位置捕捉到网格120的现有技术。基元105被捕捉到与较高分辨率4x4像素显示表面相对应的网格120。网格120中的每个单元格与1/4个像素相对应并且大小是1/2像素的平方。基元105的三个顶点以相同的1/2像素精度被捕捉以产生被捕捉的基元115。基元的形状由于捕捉的结果而改变,并且被捕捉的基元110的形状与被捕捉的基元115相比不同,使得基元105的表示的形状随着显示表面分辨率的改变而改变。
对于不同显示表面分辨率相同基元的表示的形状中的该不一致性,使得产生的较低分辨率的光栅化结果与较高分辨率的光栅化结果相比在坐标位置方面不一致。因此,如果要基于低分辨率捕捉的基元110的光栅化结果、针对高分辨率捕捉的基元115的光栅化分配帧缓冲区存储器,那么可能不正确地分配帧缓冲区存储器,因为低分辨率捕捉的基元110的光栅化结果不是必定与高分辨率捕捉的基元115的光栅化结果对齐的。
针对一些类型的算法,期望的是在不同分辨率级别具有一致的光栅化结果。当光栅化用于合并(binning)或分配(针对屏幕的哪些部分包含几何体做出确定)时尤其如此。例如,用于场景的基元可被渲染到低分辨率表面,其中每个像素表示用于较高分辨率图像的像素组。保守的光栅化语义要求“如果像素的任何部分(边界)与基元相交,那么像素被覆盖。”在光栅化期间,如果由保守的粗略像素所表示的任何精细像素被基元所覆盖,那么该粗略像素应总是指示为被覆盖。因为对于不同的显示表面分辨率,常规顶点捕捉使用相同捕捉精度,所以常规顶点捕捉不是必定遵循保守的光栅化语义的。
图2示出根据一个实施例的、用于调整顶点位置的方法200的流程图。在步骤205,接收视口维度。视口维度可以与显示表面的像素维度相对应。在一个实施例中,像素维度与配置为对显示表面进行显示的显示屏的分辨率相对应。在步骤210,基于视口维度确定捕捉间距。在步骤215,调整顶点位置以对齐到与捕捉间距相对应的网格。在一个实施例中,捕捉精度基于视口维度而变化以维持对于不同视口分辨率的一致性。
现在将关于各种可选架构和特征阐述更示例性的信息,前述框架根据用户意愿可以采用或可以不采用所述各种可选架构和特征来实现。应强烈注意的是,下面的信息出于示例性目的而被阐述,并且不应视为以任何方式加以限制。任何下面的特征可被可选地包含,排斥或不排斥所描述的其他特征。
可通过使捕捉量变化来针对不同视口分辨率产生一致的光栅化,使得“世界空间”中的顶点运动的量统一。无论显示表面的分辨率何时降低一半,将捕捉间隔减少一半,这产生一致的光栅化结果。视口是显示表面的二维区域,场景的观测体投影到视口上。视口的维度以像素来提供,使得随着视口的高度和/或宽度减少,显示表面的分辨率也减少(假定像素大小恒定)。相反,随着视口的高度和/或宽度增加,显示表面的分辨率增加。
图3A示出根据一个实施例的、基于视口300的依赖分辨率的捕捉间距所调整的基元顶点位置。16x16像素的视口300使用1/256像素的捕捉间距(即网格单元格的宽度和高度是像素宽度和高度的1/256)以将顶点位置调整到子像素网格。因此,顶点捕捉精度是像素的1/256。注意,子像素网格单元格具有比图3A示出的像素网格更精细的分辨率。图3B示出根据一个实施例的、基于视口350的依赖分辨率的捕捉间距所调整的基元顶点位置。4x4像素的视口350使用1/1024像素的捕捉间距(即网格单元格的宽度和高度是像素宽度和高度的1/1024)以将顶点位置调整成子像素网格。注意,子像素网格单元格具有比图3B示出的像素网格更精细的分辨率。当视口的维度降低1/4时,捕捉间距也降低(1/256x1/4=1/1024),增加了顶点捕捉的精度以产生一致的光栅化结果。因此,基元的形状针对不同的像素分辨率得到维持,如图3A和3B所示。
网格350可用来通过光栅化来捕捉基元顶点并实施合并以确定基元覆盖显示表面的哪些区域(即面元(bin))。当实施保守光栅化时,如果像素的任何边界与基元相交,那么认为像素被基元所覆盖。当实施常规光栅化时,当基元覆盖像素中的样本位置(例如像素中心)时认为像素被覆盖。在合并完成后,被合并的基元的顶点可被捕捉到网格300并光栅化。
分辨率不变的边规格化
为了针对准度有限(即定点算法)的光栅化器的硬件实现方案产生具有较精细捕捉间距的精确解,光栅化器需要具有足够的精度以表示捕捉间距。例如光栅化器应能够支持小于1/256的像素的捕捉间距。通过用于光栅化的边等式的规格化(normalization),可达成由较小捕捉间距所需的精度增加,而不用增加光栅化器的定点精度。
光栅化器通过对边等式求值(evaluate)来确定覆盖以确定像素内的样本位置是在基元的边之内还是之外,其中三角形具有由三个顶点所定义的三条边。边等式集可表现为:
E0=e0_start+delta_x*edge_slope_x1_mns_x0+delta_y*edge_slope_y0_mns_y1
E1=e1_start+delta_x*edge_slope_x1_mns_x2+delta_y*edge_slope_y1_mns_y2
E2=e2_start+delta_x*edge_slope_x2_mns_x0+delta_y*edge_slope_y2_mns_y0
起始值(例如e0_start、e1_start和e2_start)是边等式在某一固定锚点位置的位置,delta_x和delta_y是与固定锚点位置的距离,基于顶点对之间的距离(即边长)计算边斜率(例如edge_slope_x1_mns_x0、edge_slope_y0_mns_y1等)。以某一样本位置来说,当边值E0、E1或E2大于或等于零时,样本在各自的边之内。当样本在基元的所有三个边之内时,样本在基元之内。
在一个实施例中,将边斜率规格化以将用于至少部分地在视口之外的大基元的精度最大化。光栅化器接收顶点差的对(例如edge_slope_x1_mns_x0和edge_slope_y0_mns_y1),并且指数中的差用来产生距离的定点表示以将斜率比的精度最大化。定点表示还提供用于不同视口分辨率的、即用于不同级别的层次光栅化的一致的光栅化结果。当使用具有较大顶点位置精度的较低分辨率视口进行渲染时,每边的差(例如edge_slope_x1_mns_x0和edge_slope_y0_mns_y1)的尾数不改变,但边差的指数随视口大小的减小而缩放。例如,随着视口的分辨率降低2的幂,指数减量1。由于指数之间的差是恒定的,所以当视口的分辨率增加(基更精细)或减少(即更粗略)时规格化的边等式是恒定的。因此诸如下面的总体边等式:
E0=e0_start+delta_x*edge_slope_x1_mns_x0+delta_y*edge_slope_y0_mns_y1
具有当视口分辨率变化时保持恒定的定点斜率值,并且e0_start值随着视口分辨率的增加而减少(即向右移位)。边在样本之内还是之外的最终确定基于E值大于还是等于0来计算。因此,通过将e0_start向右移位而被截短的位不影响覆盖的确定,并且一致的光栅化结果随着视口大小的减小而产生,并且捕捉间距也减小(即顶点捕捉精度增加)。
图4A示出根据一个实施例的示意性图形处理管线400。可使用可编程处理单元或使用用于一个或多个功能的专用处理单元来实现图形处理管线400。顶点处理单元406是可编程执行单元,其配置为执行顶点着色器程序,对由顶点着色器程序所指定的顶点数据进行光照和变换。例如,顶点处理单元406可被编程以将顶点数据从基于对象的坐标表示(对象空间)变换到可替代地基于诸如世界空间或规格化设备坐标(NDC)空间的坐标系。
曲面细分和几何处理单元408是可编程执行单元,其配置为执行曲面细分着色器程序。曲面细分和几何处理单元408处理由顶点处理单元406所产生的顶点,并可配置为生成称为面片(patch)的图形基元和各种面片属性。在一些实施例中,曲面细分和几何处理单元408还可实施拓扑配置、将顶点编入索引、包括与面片相关联的顶点,并计算与顶点相对应的纹理坐标。曲面细分和几何处理单元408还可配置为执行几何着色器程序,从而对图形基元进行变换。顶点被分组以构建用于处理的图形基元,其中图形基元包括三角形、线段、点等等。例如,曲面细分和几何处理单元408可被编程为将图形基元细分成一个或多个新图形基元并计算用来将新图形基元光栅化的参数,诸如平面等式系数。在一些实施例中,曲面细分和几何处理单元408还可在几何流中添加或删除元素。曲面细分和几何处理单元408输出将新图形基元指定到视口缩放、剔除和裁剪单元412的参数和顶点。
视口缩放、剔除和裁剪单元412接收与对象相关的几何数据并在几何数据上执行视口变换,以产生用于二维屏幕空间中的对象的顶点的坐标。视口缩放、剔除和裁剪单元412内的视口处理单元可配置为实施视口变换、基于视口分辨率变化捕捉间距。针对视口变换指定一般与二维网格或空间相对应的某个分辨率(例如以像素的宽度和高度)。二维空间中的对象的顶点坐标具有与该分辨率相对应的值。因此,对于320x240像素的分辨率,对象的顶点的水平坐标范围可以从0到320,垂直坐标的范围可以从0到240。对于其他分辨率,坐标可具有不同范围。
用于视口变换的计算典型地包括某一舍入。即产生自视口变换的坐标具有所应用的某个量的舍入,意味着用于生成屏幕空间顶点的计算结果被舍入到某个精度。视口变换还将用于对象顶点的坐标“捕捉”到指定的子像素网格。换句话说,应用有视口变换的、对象顶点的屏幕空间位置与网格对齐,其中网格的单元格(或“子像素”)具有等于像素的指定分数的大小(例如,网格中的所有单元格可具有等于像素的1/4或1/64的大小)。捕捉间距将精度控制到顶点相对于视口的分辨率进行捕捉的精度。顶点间距是网格中的单元格的维度(高度或宽度),并被指定为像素的分数。“捕捉”致使对象的坐标与子像素网格对齐。视口变换的结果包括捕捉和舍入的效果并且一般包括对齐到子像素网格的、每个对象的每个顶点的屏幕空间坐标。
视口缩放、剔除和裁剪单元412配置为基于视口分辨率确定捕捉间距。当视口分辨率改变时,捕捉间距可能增加或减少以调整捕捉精度。更具体地,随着视口大小(以像素)的增加,捕捉精度减少(即被指定为捕捉间距的像素的分数增加)。类似地,随着视口大小(以像素)的减少,捕捉精度增加(即被指定为捕捉间距的像素的分数减少)。可由应用程序将捕捉间距提供到视口缩放、剔除和裁剪单元412,或者视口缩放、剔除和裁剪单元412可配置为计算用于每个视口的捕捉间距。在一个实施例中,可限定多于一个视口,并可针对视口中的每一个指定(或计算)捕捉间距。当支持层次光栅化时,可限定与不同级别的光栅化层次相对应的两个或更多个视口。视口缩放、剔除和裁剪单元412实施裁剪、剔除和视口缩放并将所处理的图形基元输出到基元设定单元414。
基元设定单元414计算用于每个基元的每边的边等式系数(例如边起始值、delta_x、delta_y),其中边由基元的所调整(即捕捉)的顶点中的两个来限定。如先前所说明的,边等式典型地处于E(x,y)=Ax+By+C的形式,其中A、B和C是由设定单元计算的系数,x和y是要由边等式求值的像素或样本的坐标,并且E(x,y)表示对用于x-y坐标的一个集合的边等式求值的结果。即使当x、y顶点位置由于捕捉而改变时,当边斜率被规格化时系数A和B(与delta x和delta y相对应)也是跨不同分辨率一致的,如先前所述。C是边起始值,并且如果分辨率减少2的幂,那么C将向右移位。基本上的,当分辨率折半时,x、y和C折半,A和B保持相同。E(x,y)折半,但E(x,y)的符号(正/零或负)不受影响。因此,基元的形状在两个不同分辨率之间得到维持。
光栅化器416从基元设定单元414接收对象顶点的屏幕空间坐标和边等式系数。光栅化器416从设定单元取得基元和边等式并对由基元设定单元414所提供的边等式求值以确定用于对象的样本或像素的覆盖。光栅化器416扫描转换新图形基元并将片段和覆盖数据输出到片段处理单元422。另外,光栅化器416可配置为实施z剔除(z-culling)和其他基于z的优化。在一个实施例中,光栅化器416可实现为计算粗略覆盖信息的粗略光栅化器以及以子像素粒度计算覆盖信息的精细光栅化器。
片段处理单元422是可编程的执行单元,其配置为执行片段着色器程序、按片段着色器程序所指定的来变换从光栅化器416所接收的片段。例如,片段处理单元422可被编程以实施诸如透视校正、纹理映射、着色、混合等操作,以产生输出到光栅操作单元424的经着色的片段。可以以像素、样本、或其他粒度对片段着色,这取决于所编程的采样率。
光栅操作单元424是处理单元,其实施诸如模板(stencil)、z测试、混合等的光栅操作,并输出像素数据作为所处理的图形数据用于存储在图形存储器中。所处理的图形数据可存储在存储器中,用于显示或用于进一步处理。在本发明的一些实施例中,光栅操作单元424配置为压缩被写入到存储器的z或颜色数据以及解压缩从存储器读取的z或颜色数据。
图4B示出根据一个实施例的、用于调整顶点位置的方法430的另一流程图。在一个实施例中,方法430中示出的步骤可由诸如由图形处理器所执行的顶点着色器的应用程序来实施。在另一实施例中,方法430中示出的步骤可由诸如视口缩放、剔除和裁剪单元412的、图形处理器内的处理单元来实施。在步骤435,应用程序或处理单元接收视口维度。在步骤440,应用程序或处理单元确定视口维度是否已减少使得捕捉精度应改变,并且如果是,那么在步骤445,捕捉间距精度增加。否则,在步骤450,应用程序或处理单元确定视口维度是否已增加使得捕捉精度应改变,并且如果是,那么在步骤455,捕捉间距精度减少。否则,捕捉间距不变。
在步骤460,根据依赖视口的捕捉间距,将基元顶点位置调整到子像素网格以产生被捕捉的顶点位置。在步骤465,将由被捕捉的顶点位置所限定的基元光栅化。
图5示出根据一个实施例的并行处理单元(PPU)500。虽然本文提供并行处理器作为PPU500的示例,但应特别注意的是,这类处理器仅出于示例性目的而阐述,并且可出于相同目的采用任何处理器以对其进行补充和/或替换。在一个实施例中,PPU500配置为在两个或更多个流多处理器(SM)550中并发地执行多个线程。线程(即执行的线程)是在特定SM550内执行的指令集的实例化。下文结合图6更详细描述的每个SM550可包括但不限于一个或多个处理核心、一个或多个加载/存储单元(LSU)、一级(L1)高速缓存、共享存储器等。
在一个实施例中,PPU500包括输入/输出(I/O)单元505,其配置为通过系统总线502传送和接收来自中央处理单元(CPU)(未示出)的通信(即命令、数据等)。I/O单元505可实现用于高速外围部件互连(PCIe)总线上的通信的PCIe接口。在可替代实施例中,I/O单元505可实现其他类型的公知总线接口。
PPU500还包括主机接口单元510,其将命令解码并将命令传送到PPU500的网格管理单元515或如命令可指定的其他单元(例如存储器接口580)。在网格管理单元515的上下文中,网格是一些处理工作。主机接口单元510配置为路由PPU500的各逻辑单元之间的通信。
在一个实施例中,由CPU将被编码为命令流的程序写入缓冲区。缓冲区是例如存储器504或系统存储器的存储器中的区域,其可由CPU和PPU500二者访问(即读/写)。CPU将命令流写入缓冲区并随后将指向命令流开始的指针传送到PPU500。主机接口单元510为网格管理单元(GMU)515提供指向一个或多个流的指针。GMU515选择一个或多个流并配置为将所选择的流组织成挂起网格池。挂起网格池可包括尚未被选择用于执行的新网格和已被部分地执行并且已被暂停的网格。
耦连在GMU515和SM550之间的工作分布单元520管理活动网格池,选择并分派活动网格用于由SM550执行。当挂起的网格有资格执行、即不具有未解决的数据依赖时,挂起的网格由GMU515转移到活动网格池。当活动网格的执行被依赖阻塞时,活动网格被转移到挂起池。当网格的执行完成时,网格被工作分布单元520从活动网格池移除。除了接收来自主机接口单元510和工作分布单元520的网格以外,GMU510还接收在网格的执行期间由SM550所动态生成的网格。这些动态生成的网格加入挂起网格池中的其他挂起的网格。
在一个实施例中,CPU执行实现应用编程接口(API)的驱动程序内核,该应用编程接口使能在CPU上执行的一个或多个应用以调度用于在PPU500上执行的操作。应用可包括使驱动程序内核生成一个或多个网格用于执行的指令(即API调用)。在一个实施例中,PPU500实现SIMD(单指令、多数据)结构,其中由线程块中的不同线程对不同数据集并发地执行网格中的每个线程块(即线程束(warp))。驱动程序内核定义包含k个相关线程的线程块,使得相同线程块中的线程可通过共享存储器交换数据。在一个实施例中,线程块包括32个相关线程,并且网格是执行相同流的一个或多个线程块的阵列,并且不同的线程块可通过全局存储器交换数据。
在一个实施例中,PPU500包括X个SM550(X)。例如,PPU500可包括15个不同的SM550。每个SM550是多线程的并配置为并发地执行来自特定线程块的多个线程(例如32个线程)。SM550中的每一个经由交叉开关560(或其他类型的互连网络)连接到二级(L2)高速缓存565。
L2高速缓存565连接到一个或多个存储器接口580。存储器接口580实现16、32、64、128位数据总线等等,用于高速数据转移。在一个实施例中,PPU500包括U个存储器接口580(U),其中每个存储器接口580(U)连接到相对应的存储器设备504(U)。例如,PPU500可连接到多达6个存储器设备504,诸如图形双数据速率、版本5、同步动态随机存取存储器(GDDR5SDRAM)。
在一个实施例中,PPU500实现多级存储器层次。存储器504位于耦连到PPU500的SDRAM的片外。来自存储器504的数据可被获取并存储在L2高速缓存565中,该L2高速缓存565位于片上并在各SM550之间共享。在一个实施例中,SM550中的每一个还实现L1高速缓存。L1高速缓存是专用于特定SM550的私有存储器。L1高速缓存中的每一个耦连到共享的L2高速缓存565。来自L2高速缓存565的数据可被获取并存储在L1高速缓存中的每一个中用于SM550的功能单元中的处理。
在一个实施例中,PPU500包括图形处理单元(GPU)。PPU500配置为接收指定用于处理图形数据的着色器程序的命令。图形数据可被定义为诸如点、线、三角形、四边形、三角形条带等基元的集合。典型地,基元包括指定用于(例如在模型空间坐标系中的)基元的若干顶点以及与基元的每个顶点相关联的属性的数据。PPU500可配置为处理图形基元以生成帧缓冲区(即用于显示器的像素中的每一个的像素数据)。驱动程序内核实现图形处理管线,诸如由OpenGL API定义的图形处理管线。
应用将用于场景的模型数据(即顶点和属性的合集)写到存储器。模型数据定义在显示器上可见的对象中的每一个。应用随后对驱动程序内核做出请求模型数据被渲染和显示的API调用。驱动程序内核读取模型数据并将命令写到缓冲区以实施一个或多个操作来处理模型数据。命令可将包括顶点着色器、外壳着色器、几何着色器、像素着色器等中的一个或多个的不同着色器程序编码。
GMU515可配置一个或多个SM550以实施图4A中示出的处理单元中的一个或多个的功能,处理单元例如顶点处理单元、曲面细分处理单元、几何处理单元和片段处理单元。视口缩放、剔除和裁剪处理单元、粗略光栅化器、精细光栅化器和光栅操作单元的功能也可由GMU515内的其他处理引擎来实施。
例如,GMU515可配置一个或多个SM550为执行处理由模型数据所定义的若干顶点的顶点着色器程序。在一个实施例中,GMU515可配置不同SM550为并发地执行不同着色器程序。例如,SM550的第一子集可配置为执行顶点着色器程序,而SM550的第二子集可配置为执行像素着色器程序。SM550的第一子集处理顶点数据以产生经处理的顶点数据并将经处理的顶点数据写到L2高速缓存565和/或存储器504。在经处理的顶点数据被光栅化(即从三维数据变换成屏幕空间中的二维数据)以产生片段数据之后,SM550的第二子集执行像素着色器以产生经处理的片段数据,其随后与其他经处理的片段数据混合并被写到存储器504中的帧缓冲区。顶点着色器程序和像素着色器程序可并发地执行,以管线的方式处理来自同一场景的不同数据直到用于场景的所有模型数据已被渲染到帧缓冲区为止。随后,帧缓冲区的内容被传送到显示控制器用于在显示设备上显示。
PPU500可包括在台式计算机、膝上型计算机、平板计算机、智能电话(例如无线、手持设备)、个人数字助理(PDA)、数字相机、手持电子设备等等中。在一个实施例中,PPU500具体化在单个半导体衬底上。在另一实施例中,PPU500连同一个或多个其他逻辑单元被包括在片上系统(SoC)中,所述一个或多个其他逻辑单元诸如精简指令集计算机(RISC)CPU、存储器管理单元(MMU)、数模转换器(DAC)等。
在一个实施例中,PPU500可被包括在包括诸如GDDR5SDRAM的一个或多个存储器设备504的图形卡上。图形卡可配置为与包括例如北桥芯片集和南桥芯片集的、台式计算机的主板上的PCIe槽相接。在又一实施例中,PPU500可以是被包括在主板的芯片集(即北桥)中的集成图形处理单元(iGPU)。
图6示出根据一个实施例的、图5的流多处理器550。如图6所示,SM550包括指令高速缓存605、一个或多个调度器单元610、寄存器堆620、一个或多个处理核心650、一个或多个双精度单元(DPU)651、一个或多个特殊功能单元(SFU)652、一个或多个加载/存储单元(LSU)653、互连网络680、共享存储器/L1高速缓存670以及一个或多个纹理单元690。
如上文所述,工作分布单元520分派活动网格用于在PPU500的一个或多个SM550上执行。调度器单元610从工作分布单元520接收网格并管理用于每个活动网格的一个或多个线程块的指令调度。调度器单元610调度线程用于在并行线程的组中执行,其中每个组称为线程束。在一个实施例中,每个线程束包括32个线程。调度器单元610可管理多个不同线程块,在每个时钟周期期间将线程块分配到线程束用于执行并随后调度来自各功能单元(即核心650、DPU651、SFU652以及LSU653)上的多个不同线程束的指令。
在一个实施例中,每个调度器单元610包括一个或多个指令分派单元615。每个分派单元615配置为将指令传送到功能单元中的一个或多个。在图6示出的实施例中,调度器单元610包括两个分派单元615,其使能来自同一线程束的两个不同指令在每个时钟周期期间被分派。在可替代实施例中,每个调度器单元610可包括单个分派单元615或附加的分派单元615。
每个SM550包括寄存器堆620,其提供用于SM550的功能单元的寄存器的集合。在一个实施例中,寄存器堆620在功能单元中的每一个之间被划分,使得每个功能单元被分配寄存器堆620的专用部分。在另一实施例中,寄存器堆620在正由SM550执行的不同线程束之间被划分。寄存器堆620为连接到功能单元的数据路径的操作数提供暂时存储。
每个SM550包括L个处理核心650。在一个实施例中,SM550包括大数目的(例如192个等)不同的处理核心650。每个核心650是完全管线(fully-pipelined)的单精度处理单元,其包括浮点运算逻辑单元和整数运算逻辑单元。在一个实施例中,浮点运算逻辑单元实现用于浮点运算的IEEE754-2008标准。每个SM550还包括实现双精度浮点运算的M个DPU651、实施特殊功能(例如拷贝矩形、像素混合操作等)的N个SFU652以及在共享存储器/L1高速缓存670和寄存器堆620之间实现加载和存储操作的P个LSU653。在一个实施例中,SM550包括64个DPU651、32个SFU652以及32个LSU653。
每个SM550包括互连网络680,其将功能单元中的每一个连接到寄存器堆620和共享存储器/L1高速缓存670。在一个实施例中,互连网络680是交叉开关,其可配置为将任何功能单元连接到寄存器堆620中的任何寄存器或共享存储器/L1高速缓存670中的任何存储器位置。
在一个实施例中,SM550实现在GPU内。在这类实施例中,SM550包括J个纹理单元690。纹理单元690配置为从存储器504加载纹理图(即纹理元素的2D阵列)并对纹理图采样以产生经采样的纹理值用于在着色器程序中使用。纹理单元690使用mip-map(即变化细节层级的纹理图)实现诸如抗锯齿操作的纹理操作。在一个实施例中,SM550包括16个纹理单元690。
上文所述的PPU500可配置为实施比常规CPU快得多的高度并行计算。并行计算在图形处理、数据压缩、计量生物学、流处理算法等方面具有优势。
图7示出在其中可实现各先前实施例的各架构和/或功能性的示例性系统700。如所示,提供了系统700,其包括至少一个连接到通信总线702的中央处理器701。通信总线702可使用任何合适的协议来实现,诸如外围部件互连(PCI)、PCI-Express、AGP(加速图形端口)、超传输、或任何其他总线或点对点通信协议。系统700还包括主存储器704。控制逻辑(软件)和数据存储在可采取随机存取存储器(RAM)形式的主存储器704中。
系统700还包括输入设备712、图形处理器706以及显示器708,所述显示器708即常规CRT(阴极射线管)、LCD(液晶显示器)、LED(发光二极管)、等离子显示器等等。可从输入设备712例如键盘、鼠标、触摸板、扩音器等接收用户输入。在一个实施例中,图形处理器706可包括多个着色器模块、光栅化模块等。前述模块中的每一个实际上可布置于单个半导体平台上以形成图形处理单元(GPU)。
在本描述中,单个半导体平台可以指单独一个的基于半导体的集成电路或芯片。应注意的是,术语单个半导体平台还可以指具有增强的连通性的多芯片模块,其仿真片上操作,并通过利用常规中央处理单元(CPU)和总线实现方案做出实质的改进。当然,各模块还可根据用户的期望分开地或以半导体平台的各种组合来布置。
系统700还可包括二级存储710。二级存储710包括例如硬盘驱动器和/或表示软盘驱动器、磁带驱动器、压缩光盘驱动器、数字通用光盘(DVD)驱动器、记录设备、通用串行总线(USB)闪存的可移动存储驱动器。可移动存储驱动器以公知的方式从可移动存储单元读取和/或写入到可移动存储单元。
计算机程序或计算机控制逻辑算法可存储在主存储器704和/或二级存储710中。这类计算机程序当被执行时使得系统700能够实施各种功能。编译器程序可由中央处理器701或图形处理器706执行。主存储器704、存储710和/或任何其他存储是计算机可读介质的可能的示例。
在一个实施例中,可在以下内容的上下文中实现各先前示图的架构和/或功能性:中央处理器701、图形处理器706、能够具有中央处理器701和图形处理器706二者的能力的至少一部分的集成电路(未示出)、芯片集(即设计为作为用于实施相关功能的单元来工作和出售的集成电路组等)和/或用于此的任何其他集成电路。
还有就是,可在以下内容的上下文中实现各先前示图的架构和/或功能性:通用计算机系统、电路板系统、专用于娱乐目的的游戏机系统、特定于应用的系统和/或任何其他所期望的系统。例如,系统700可采取台式计算机、膝上型计算机、服务器、工作站、游戏机、嵌入式系统和/或任何其他类型的逻辑的形式。还有就是,系统700可采取各种其他设备的形式,包括但不限于个人数字助理(PDA)设备、移动电话设备、电视机等。
进一步地,虽然未示出,但系统700可耦连到网络(例如电信网络、局域网(LAN)、无线网、诸如互联网的广域网(WAN)、对等网络、电缆网络等等)用于通信目的。
虽然上文已描述了各实施例,但应理解的是它们通过仅示例而非限制的方式加以呈现。因此,优选实施例的宽度和范围不应被上文所述的示例性实施例中的任何一个所限制,而应仅根据下面的权利要求和其等同物来加以限定。

Claims (20)

1.一种调整顶点位置的方法,包括:
接收视口的一个或多个维度;
基于所述一个或多个维度确定捕捉间距;以及
调整图形基元的所述顶点位置以对齐到与所述捕捉间距相对应的子像素网格。
2.根据权利要求1所述的方法,其中所述捕捉间距随所述视口的所述一个或多个维度中的至少一个维度的减少而减少。
3.根据权利要求1所述的方法,其中所述捕捉间距随所述视口的所述一个或多个维度中的至少一个维度的增加而增加。
4.根据权利要求1所述的方法,其中所述捕捉间距小于像素的1/256。
5.根据权利要求1所述的方法,其中所述视口的所述一个或多个维度以像素来指定。
6.根据权利要求1所述的方法,其中用以调整所述顶点位置的精度随所述视口的所述一个或多个维度中的至少一个维度的减少而增加。
7.根据权利要求1所述的方法,其中用以调整所述顶点位置的精度随所述视口的所述一个或多个维度中的至少一个维度的增加而减少。
8.根据权利要求1所述的方法,进一步包括将所述图形基元光栅化。
9.根据权利要求8所述的方法,其中所述光栅化包括如果像素的任何边界与所述图形基元相交则确定所述图形基元覆盖所述像素。
10.根据权利要求1所述的方法,进一步包括针对所述图形基元的、由所调整的顶点位置中的两个所限定的每个边计算边等式。
11.根据权利要求10所述的方法,其中所述边等式的计算包括计算规格化的边斜率值。
12.一种非暂时性计算机可读存储介质,其存储指令,当所述指令由处理器所执行时,使所述处理器调整顶点位置,包括:
接收视口的一个或多个维度;
基于所述一个或多个维度确定捕捉间距;以及
调整图形基元的所述顶点位置以对齐到与所述捕捉间距相对应的子像素网格。
13.根据权利要求12所述的非暂时性计算机可读存储介质,所述捕捉间距随所述视口的所述一个或多个维度中的至少一个维度的减少而减少。
14.根据权利要求12所述的非暂时性计算机可读存储介质,所述捕捉间距随所述视口的所述一个或多个维度中的至少一个维度的增加而增加。
15.根据权利要求12所述的非暂时性计算机可读存储介质,其中所述捕捉间距小于像素的1/256。
16.一种系统,包括:
视口处理单元,其配置为:
接收视口的一个或多个维度;
基于所述一个或多个维度确定捕捉间距;以及
调整图形基元的顶点位置以对齐到与所述捕捉间距相对应的子像素网格。
17.根据权利要求16所述的系统,进一步包括光栅化器,所述光栅化器配置为如果像素的任何边界与所述图形基元相交则确定所述图形基元覆盖所述像素。
18.根据权利要求16所述的系统,进一步包括设定单元,所述设定单元耦连到所述视口处理单元并配置为针对所述基元的、由所调整的顶点位置中的两个所限定的每个边计算边等式。
19.根据权利要求18所述的系统,其中所述设定单元进一步配置为计算规格化的边斜率值。
20.根据权利要求16所述的系统,其中所述捕捉间距随所述视口的所述一个或多个维度中的至少一个维度的减少而减少。
CN201310746584.2A 2013-03-14 2013-12-30 用于可变分辨率渲染的一致性顶点捕捉 Pending CN104050704A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/830,987 2013-03-14
US13/830,987 US9478066B2 (en) 2013-03-14 2013-03-14 Consistent vertex snapping for variable resolution rendering

Publications (1)

Publication Number Publication Date
CN104050704A true CN104050704A (zh) 2014-09-17

Family

ID=51418671

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310746584.2A Pending CN104050704A (zh) 2013-03-14 2013-12-30 用于可变分辨率渲染的一致性顶点捕捉

Country Status (4)

Country Link
US (2) US9478066B2 (zh)
CN (1) CN104050704A (zh)
DE (1) DE102013114373A1 (zh)
TW (1) TW201435795A (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112012003243T5 (de) * 2011-08-05 2014-04-30 Caustic Graphics, Inc. Systeme und Verfahren für die Erzeugung und Aktualisierung für 3D-Szenenbeschleunigungsstrukturen
US9633469B2 (en) 2013-03-15 2017-04-25 Nvidia Corporation Conservative rasterization of primitives using an error term
KR102275712B1 (ko) * 2014-10-31 2021-07-09 삼성전자주식회사 렌더링 방법, 렌더링 장치 및 전자 장치
US10535114B2 (en) * 2015-08-18 2020-01-14 Nvidia Corporation Controlling multi-pass rendering sequences in a cache tiling architecture
EP4040395A1 (en) * 2016-01-18 2022-08-10 Advanced Micro Devices, Inc. Performing anti-aliasing operations in a computing system
US10062139B2 (en) 2016-07-25 2018-08-28 Qualcomm Incorporated Vertex shaders for binning based graphics processing
US10535121B2 (en) * 2016-10-31 2020-01-14 Adobe Inc. Creation and rasterization of shapes using geometry, style settings, or location
US10546365B2 (en) * 2017-03-27 2020-01-28 Advanced Micro Devices, Inc. Single pass flexible screen/scale rasterization
GB2561557B (en) * 2017-04-13 2020-08-12 Advanced Risc Mach Ltd Graphics processing method and apparatus in which modified edge positions are used in rasterisation
US10726514B2 (en) * 2017-04-28 2020-07-28 Intel Corporation Compute optimizations for low precision machine learning operations
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US10872473B2 (en) 2017-05-09 2020-12-22 Microsoft Technology Licensing, Llc Edge welding of geometries having differing resolutions
US10755383B2 (en) * 2017-09-29 2020-08-25 Apple Inc. Multi-space rendering with configurable transformation parameters
CN112534405A (zh) 2019-03-15 2021-03-19 英特尔公司 用于脉动阵列上的块稀疏操作的架构
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
US12007935B2 (en) 2019-03-15 2024-06-11 Intel Corporation Graphics processors and graphics processing units having dot product accumulate instruction for hybrid floating point format
EP4130988A1 (en) 2019-03-15 2023-02-08 INTEL Corporation Systems and methods for cache optimization
US11076151B2 (en) 2019-09-30 2021-07-27 Ati Technologies Ulc Hierarchical histogram calculation with application to palette table derivation
US11663746B2 (en) 2019-11-15 2023-05-30 Intel Corporation Systolic arithmetic on sparse data
US11861761B2 (en) 2019-11-15 2024-01-02 Intel Corporation Graphics processing unit processing and caching improvements
US11915337B2 (en) 2020-03-13 2024-02-27 Advanced Micro Devices, Inc. Single pass downsampler
US11138786B1 (en) * 2020-05-19 2021-10-05 Arm Limited Vertex attribute representation in graphics processing systems for executing a graphics processing pipeline
US11423520B2 (en) * 2020-10-30 2022-08-23 Facebook Technologies, Llc. Distortion-corrected rasterization

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6219070B1 (en) * 1998-09-30 2001-04-17 Webtv Networks, Inc. System and method for adjusting pixel parameters by subpixel positioning
CN1774727A (zh) * 2003-04-15 2006-05-17 诺基亚有限公司 为像素确定覆盖掩模
CN101093578A (zh) * 2006-06-23 2007-12-26 辉达公司 光栅化的方法和系统
CN101689306A (zh) * 2007-02-16 2010-03-31 高通股份有限公司 有效的二维及三维图形处理
CN102447901A (zh) * 2010-09-01 2012-05-09 微软公司 用于改进的高速缓存和图像分类的自适应网格生成
US8390645B1 (en) * 2005-12-19 2013-03-05 Nvidia Corporation Method and system for rendering connecting antialiased line segments

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7015920B2 (en) * 2003-04-30 2006-03-21 International Business Machines Corporation Method and system for providing useable images on a high resolution display when a 2D graphics window is utilized with a 3D graphics window
US8115783B2 (en) 2008-01-31 2012-02-14 Arm Norway As Methods of and apparatus for processing computer graphics
US8411107B2 (en) 2009-08-18 2013-04-02 Autodesk, Inc. Adaptive snapping
US9947084B2 (en) 2013-03-08 2018-04-17 Nvidia Corporation Multiresolution consistent rasterization
US9633469B2 (en) 2013-03-15 2017-04-25 Nvidia Corporation Conservative rasterization of primitives using an error term

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6219070B1 (en) * 1998-09-30 2001-04-17 Webtv Networks, Inc. System and method for adjusting pixel parameters by subpixel positioning
CN1774727A (zh) * 2003-04-15 2006-05-17 诺基亚有限公司 为像素确定覆盖掩模
US8390645B1 (en) * 2005-12-19 2013-03-05 Nvidia Corporation Method and system for rendering connecting antialiased line segments
CN101093578A (zh) * 2006-06-23 2007-12-26 辉达公司 光栅化的方法和系统
CN101689306A (zh) * 2007-02-16 2010-03-31 高通股份有限公司 有效的二维及三维图形处理
CN102447901A (zh) * 2010-09-01 2012-05-09 微软公司 用于改进的高速缓存和图像分类的自适应网格生成

Also Published As

Publication number Publication date
US9478066B2 (en) 2016-10-25
US20140267232A1 (en) 2014-09-18
US9747661B2 (en) 2017-08-29
US20170046812A1 (en) 2017-02-16
TW201435795A (zh) 2014-09-16
DE102013114373A1 (de) 2014-09-18

Similar Documents

Publication Publication Date Title
CN104050704A (zh) 用于可变分辨率渲染的一致性顶点捕捉
CN104050626A (zh) 基元的使用误差项的保守光栅化
US10229529B2 (en) System, method and computer program product for implementing anti-aliasing operations using a programmable sample pattern table
US9177351B2 (en) Multi-primitive graphics rendering pipeline
TWI514315B (zh) 取樣階層式深度地圖的系統、方法,及電腦程式產品
CN105321143A (zh) 来自片段着色程序的采样掩膜的控制
EP3489907B1 (en) Shader program execution techniques for use in graphics processing
CN104036537A (zh) 多分辨率一致光栅化
CN104050632A (zh) 使用一个样本的多样本表面处理
US9245363B2 (en) System, method, and computer program product implementing an algorithm for performing thin voxelization of a three-dimensional model
US9305324B2 (en) System, method, and computer program product for tiled deferred shading
US20150178961A1 (en) System, method, and computer program product for angular subdivision of quadratic bezier curves
CN109034385A (zh) 用稀疏数据训练神经网络的系统和方法
US9269179B2 (en) System, method, and computer program product for generating primitive specific attributes
US9905037B2 (en) System, method, and computer program product for rejecting small primitives
CN103871019B (zh) 用于处理路径图像以促进光栅化的方法和设备
CN110675480A (zh) 用于获取纹理操作的采样位置的方法和装置
US20150084952A1 (en) System, method, and computer program product for rendering a screen-aligned rectangle primitive
CN104050633A (zh) 使用样本子集的多样本表面处理
DE102023119191A1 (de) Verbesserung der anfänglichen kandidaten bei der räumlich-zeitlichen neuabtastung
Koskija Metropolitan City Night Light Rendering

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20140917