具有虚线模式的路径的gpu加速再现的制作方法_5

文档序号:8207776阅读:来源:国知局
/windows/desktop/ff476882% 28v = vs. 85% 29. aspx,^ 从2012年11月26日起可用且以引用方式并入本文。关于DirectX 11图形管线的大体操 作的进一步信息可参见辛克(Zink)等人的"以Direct3D 11进行的实际再现和计算" CRC 出版社(2011年),其整个内容以引用的方式并入本文中。
[0111] 如图3中所不,在一些实例中,壳着色器48将椭圆形弧从端点表不转换到参数表 示。输入组装(IA)级产生末端盖和接合点。IA可产生两个路径片段会合的接合基元。IA 还可产生用于开放路径的起始和末端盖。开放路径是并不封闭区的路径。为了成功地产生 接合点,可使用接合位置和两个路径片段在接合位置的切线。对于盖,可使用路径的第一和 最后点处的位置和切线。可通过简单地减去控制点而发现路径片段的切线,然而,在重复的 控制点的情况下,可处理全部控制点以确定端点切线。在实例中,IA可必须将两个路径片 段的顶点放入接合点基元中。最差情况情境可为两个三次曲线会合,每一者具有4个顶点 (控制点)(1个共享),因此从IA需要总共7个顶点用于接合点基元。
[0112] 如上文所论述,所述两个主路径再现操作是:(1)填充路径片段;以及(2)来回划 动路径片段。现将描述用于以图形再现管线(例如,DirectX 11图形管线)执行这些操作 中的每一者的解决方案。
[0113] 在实例中,路径片段包括线且来回划动包括通过在垂直于所述线的两个方向中加 粗所述线而加宽所述线。或者,路径片段包括曲线且来回划动进一步可包含将所述曲线分 裂为线段,确定来回划线宽度,且产生经定位以加宽所述线段中的至少一者的一对三角形 条带。
[0114] 本发明的实例系统提供用于路径再现的近似100% GPU解决方案。使用当前GPU 架构(例如,根据DirectXll操作的架构),这可为低效的。使用经修改GPU架构可提供用 于路径再现的高效GPU解决方案。
[0115] 如本文所用,"路径"包括许多路径片段,其可(例如)为线、椭圆形弧、二次贝塞尔 曲线或三次贝塞尔曲线。贝塞尔曲线是可无限地按比例缩放的一类参数曲线。另外,路径 可或可不为"闭合的"。闭合路径是其中路径的最后顶点经由线连接到所述路径的第一顶点 且形式闭合形状的路径。路径可自身重叠多次。
[0116] 路径再现可划分成两个主任务,(1)填充和(2)来回划动。在一些实例中,这些任 务可单独地处置。填充路径经界定为通过填充颜色填充给定路径的内部区。来回划动路径 包括使用保持垂直于路径的直线笔"加宽"所述路径的边缘。
[0117] 当填充路径时,给定路径的内部区可由颜色填充。路径的内部区可使用奇偶或非 零填充规则中的任一者来界定。奇偶规则是在基于向量的图形软件中实施的算法,其确定 将如何填充具有一个以上闭合轮廓的图形形状。奇偶规则通过绘制在任一方向中从点到无 限远处的射线且对所述射线穿过的来自给定形状的路径片段的数目进行计数来确定所述 点的"内部性(insideness) "。如果此数目是奇数,那么所述点视为在曲线内部且将被填充; 如果为偶数,那么所述点视为在曲线外部且将不被填充。因此,曲线内部的区域是将经填充 以形成形状的区域,且曲线外部的区域是将不经填充以形成形状(至少针对所述特定形状 不填充)的区域。在二维计算机图形中,非零卷绕规则是确定给定点是否落在封闭曲线内 的手段。
[0118] 一些实例可使用预处理,而其它实例可不包含预处理。预处理中的质心枢轴点可 给出超过第一顶点枢轴点的填充性能的稍微增加。在GPU中确定限界框可需要一些硬件修 改。这壳着色器48中将椭圆形弧转换到参数形式将导致所述转换在每一帧处完成。在一帧 中椭圆形弧将需要通过壳着色器转换多达三次(弧自身和在弧端点处的两个接合点/盖)。
[0119] 顶点可界定由线段、三次片段、另一线段和二次片段组成的路径。其可为闭合路径 (即封闭区)。一些实例可进行以下API绘制调用:(I) drawNonlndexedPrimType (numlndic es = 7,闭合=真),(2)基元类型将为以下列表:[线、三次、线、二次],(3) IA将开始基于 基元类型产生基元。因为这是闭合路径,所以不存在盖。
[0120] 在实例中,输出可如下:(I)PrimType,索引;(2)线 0、1 ; (3) Join_Line_Cubic 0、 1、2、3、4 ; (4)三次 1、2、3、4 ; (5) Join_Cubic_Line 1、2、3、4、5 ; (6)线 4、5 ; (7) Join_Line_ 0皿(1四^。4、5、6、0;(8)二次5、6、0;(9)了〇111_0皿(1四^(3_1^116 5、6、0、1。因为我们具有4 个不同类型的路径片段(线、二次、三次、椭圆形),所以我们具有4和不同盖类型和4x4 = 16个不同接合点基元类型。
[0121] 在实例中,填充路径意味着通过给定填充颜色填充给定路径的内部区。内部区可 使用奇/偶或非零填充规则中的任一者来界定。处置填充路径的一个实例算法如下:(1) 将给定路径棋盘形布置为线段,(2)使用几何形状着色器54通过将枢轴点连接到线段同时 遵照卷绕次序而每线段产生三角形。随后将顺时针或逆时针三角形再现到模板缓冲器40。 对于奇/偶填充,不管卷绕次序如何,每个三角形将翻转内部区的模板值。对于非零填充, 顺时针三角形将增加内部区的模板值且逆时针三角形将减小内部区的模板值。对于两个规 贝1J,外部区保持不受影响。(3)遍次2:在模板测试启用的情况下再现限界框区域。模板传 递条件是模板值>〇,不管填充规则如何。随后将传递模板值复位到零(传递操作),因此 留下全部零的新鲜模板缓冲器40。
[0122] 填充的一个实例可包含以下流程:(1)以每路径的填充颜色和枢轴点加载恒定缓 冲器,(2)设定适当模板状态(奇偶或非零),以及(3)传递一个绘制调用[4控制点片]。 传递一个绘制调用可包含使用顶点着色器46来变换顶点,使用壳着色器48 [域:等值线,输 出类型:线]来确定最优棋盘形布置水平,或使用固定水平棋盘形布置,使用域着色器52来 计算经棋盘形布置顶点(仅位置),且使用几何形状着色器54来将输入线连接到来自恒定 缓冲器的枢轴点坐标以产生顺时针和逆时针三角形。在一些实例中,像素着色器可为空。
[0123] 实例可包含覆盖模板状态的设定。第二遍次绘制调用可使用顶点着色器46绕过 来自顶点着色器(VS) 46的输出。在此实例中,来自VS 46的输出与输入相同,VS 46中没有 操作正在进行。像素着色器可返回来自恒定缓冲器的填充颜色。另外,顶点着色器(VS)46 可使用世界、视图和投影矩阵变换顶点。壳着色器(HS)48可通过使用接合点和盖、具有 0. Of (丢失)的塌陷的三次曲线和退化的椭圆形以及线:1. Of来确定棋盘形布置水平。应 注意棋盘形布置水平〇指示基元丢失。举例来说,在某些情况下一些盖/接合点可丢失。对 于线基元,可使用棋盘形布置水平=1。线并不需要经棋盘形布置为多个新线。
[0124] 在实例中,HS 48执行变换。对于弧,顶点信息的一部分是避免对其应用变换矩阵 可为有利的椭圆参数。一些实例可计算用于三次曲线和椭圆形弧的最优棋盘形布置水平, 或使用固定棋盘形布置。
[0125] 在一些实例中,棋盘形布置引擎可为Dxll棋盘形布置器单元,具有等值线域、整 数分割、线输出。在实例中,域着色器52[v可忽略]。域着色器52可针对线、三次曲线和椭 圆形弧评估经棋盘形布置顶点的位置。对于线,u为0. Of或I. Of。在实例中,棋盘形布置 器可输出两个域坐标u和V。在一些实例中,坐标V可忽略且坐标u可用以棋盘形布置我们 的基元。坐标u是从0.0到1.0的参数化。如果棋盘形布置因数是n,那么u将为0/η、1/ η、2/η·…n/n〇
[0126] 端点可直接输出。对于曲线,u将以取决于棋盘形布置水平的相等增量从0. Of到 I. Of变动。对于全部U,将使用曲线表示方程式发现位置。对于椭圆形弧,U将以取决于棋 盘形布置水平的相等增量从0. Of到I. Of变动。对于全部u,将使用弧参数表示发现位置。 在实例中,几何形状着色器54将输入线连接到来自恒定缓冲器的枢轴点坐标以产生三角 形。卷绕次序将决定在非零填充模式是否增加或减小用于三角形覆盖范围的模板值。在奇 偶填充模式中,三角形覆盖范围将翻转模板值,不管三角形卷绕如何。在实例中,顶点着色 器46可被绕过且像素着色器可返回填充颜色。用于填充的一个实例2遍次流程是:
[0127] VS - HS - Tess - DS - GS
[0128] YS' ^PS
[0129] 如果目标独立再现(TIR)可用以将模板缓冲器40直接解析到帧缓冲器,那么可消 除对额外绕过顶点着色器46的需要。在预处理阶段可不再需要限界框计算。另外,可不需 要用于"覆盖"遍次的额外模板状态,因为将不存在"覆盖"遍次。在一些实例中这可增加 填充性能。实例流程如下:
[0130] VS - HS - Tess - DS - GS - PS
[0131] 路径的来回划动可包含沿着垂直于路径的直线"加宽"所述路径的边缘。一些实 例棋盘形布置且评估路径,在每一评估点我们根据在所述点处的法线加宽所述点且产生三 角测量以形成片段。全部片段的联合是来回划线。
[0132] 用于来回划动路径的实例算法如下,(1)以端点处的法线将路径棋盘形布置为线 段,(2)如果启用再棋盘形布置,那么再棋盘形布置端点法线在方向上偏离太多的线段以产 生新线段,(3)如果启用划虚线,那么根据虚线模式切断线段,(4)在切断位置处产生盖,棋 盘形布置圆形接合点和盖,(5)产生三角测量以表示来回划线的线、盖和接合点,(5)在启 用深度测试的情况下再现三角形。
[0133] 实例流程如下:⑴以来回划线颜色、来回划线宽度、斜接限制、接合点规则、盖规 则虚线模式、圆形棋盘形布置因数的倒数(可恒定)更新恒定缓冲器,(2)启用深度测试, (3)第一遍次,(4)第二遍次。第一遍次可为对顶点着色器46的绘制调用以变换顶点,对壳 着色器48的绘制调用以将塌陷的三次曲线和退化的椭圆转换为线(无预处理)且确定最 优棋盘形布置水平,或使用固定水平棋盘形布置。在第一遍次中,域着色器52可确定经棋 盘形布置顶点的位置且确定经棋盘形布置顶点的法线(转换到角度表示)。几何形状着色 器54可流式产生用于第二再现遍次的线。在一些实例中可不使用像素着色器。
[0134] 第二遍次可为绕过使用顶点着色器46和使用壳着色器48来计算用于棋盘形布置 差量、片段长度、长度的倒数和SV_PrimType的棋盘形布置器输入的绘制调用。实例可使用 经修改棋盘形布置器来棋盘形布置接合点,切割/再棋盘形布置线段,以及在切割位置处 产生盖棋盘形布置。域着色器52(SV_PrimType)可从原始线段/接合点线性内插位置和法 线且将法线从角度形式转换到坐标。几何形状着色器54可增加线段的宽度,产生用于接合 点/盖的三角形。像素着色器可返回来回划线颜色。
[0135] 在实例中,在确定单元缓冲器内容之后,如果填充规则是非零,那么采取所述内容 的绝对值且将每个值固定到样本计数。对于奇偶填充,采取每个值的(2*样本计数)模数, 且如果值大于样本计数,那么将其设定为距2*样本计数的距离。这在以下的代码摘录中说 明:
[0136]
【主权项】
1. 一种路径再现的方法,其包括: 以图形处理单元GPU接收指示待再现路径的路径片段的数据; 以所述GPU通过执行所述路径片段的填充而再现所述路径片段,填充所述路径片段包 含: 将所述路径片段棋盘形布置为第一多个基元,每基元包含三角形, 将第一多个基元存储在模板缓冲器中, 以及 绘制所述
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1