CN106575452A - 图形处理中的多边形的加速单平面剪切 - Google Patents
图形处理中的多边形的加速单平面剪切 Download PDFInfo
- Publication number
- CN106575452A CN106575452A CN201580027632.XA CN201580027632A CN106575452A CN 106575452 A CN106575452 A CN 106575452A CN 201580027632 A CN201580027632 A CN 201580027632A CN 106575452 A CN106575452 A CN 106575452A
- Authority
- CN
- China
- Prior art keywords
- summit
- distance
- polygonal
- shear
- module
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/203—Drawing of straight lines or curves
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/30—Clipping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/10—Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/60—Analysis of geometric attributes
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Computer Graphics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
Abstract
方法和硬件可以通过使用专门用于单平面剪切的流水线来处理单平面剪切操作。第二流水线可以被提供来处置多剪切平面情况中的剪切。通过围绕单平面剪切来优化硬件和方法,可以增强多边形吞吐量。
Description
对相关申请的交叉引用
本申请对2014年6月27日提交的申请号为14/316,895的美国非临时专利申请要求优先权的权益。
背景技术
图形处理和更具体地三维(3D)渲染通常依据多边形、诸如三角形(其有时被称为基元(primitive)来实现。随着在诸如与游戏相关联的那些之类的各种设备中针对图形性能的需求增加,可以用来处理这样的基元的速度可能是各种情境中的限制因素,诸如在图形处理单元(GPU)中的集成和手持式图形核中。
用于加速对诸如三角形之类的基元的处理的一种技术是仅仅在它们需要被处理的时候处理它们。如果三角形完全位于针对给定情境的视场(通常通过六边“视见平截头体(viewing frustum)”来限定)之外,那么它可以被省去,而没有任何进一步的处理。但是如果三角形与感兴趣的边界重叠,则它可以按形成视见平截头体的一个或多个平面来被切割,其中位于视见平截头体之外的三角形的部分从已知为“剪切”的途径中的进一步处理中被排除。
附图说明
通过阅读随后的说明书和所附权利要求,并且通过参考随后的附图,实施例的各种优点对于本领域技术人员而言将变得显而易见,在所述附图中:
图1是视见平截头体的示例,包括三角形的示例;
图2是具有重心坐标的三角形的示例;
图3是已经按多个剪切平面而切割的三角形的示例;
图4是已经按单剪切平面而切割的图3的三角形的示例;
图5图示了根据实施例的与经剪切的三角形的边相关联的某些变量的示例;
图6A是已经按单剪切平面而切割的三角形的示例,其中三角形的顶点位于外侧并且底边位于内侧;
图6B是已经按单剪切平面而切割的三角形的示例,其中三角形的顶点位于内侧、底边位于外侧;
图7是根据实施例的处置剪切操作的方法的示例的流程图;
图8是根据实施例的处理剪切操作的硬件的示例;以及
图9是根据实施例的系统的示例的框图。
具体实施方式
图1图示了从顶端12的视角所考虑的视见平截头体10。视见平截头体10具有近表面13、远表面14、顶表面15、底表面16、右表面17和左表面18。结合视见平截头体10还示出的是示例性的三角形19、20和21。3D图形流水线中的剪切可以被执行以丢弃位于视见平截头体外侧的场景部分。由于在完全位于视见平截头体外侧的三角形上执行图形操作可能是浪费的,因此这样的对象(例如三角形19)被称为是“被平凡地拒绝(trivially rejected)”,即被拒绝有进一步的处理。在另一方面,完全被包含在视见体积内的对象、诸如三角形20被处理,并且这些可以沿着流水线往下发送以用于进一步的处理,或换言之,被平凡地接受(TA)。此处关注的是诸如三角形21之类的对象,其具有在视见平截头体内的顶点、被视见平截头体的表面贯穿,以使得对象的部分位于视见平截头体内并且其它部分位于视见平截头体外。在图1中的三角形21的情况中,平截头体10的右表面17充当剪切平面,将三角形21划分成内部多边形部分22-23-24-25(其本身可以被进一步划分成三角形22-23-24和24-25-22)以及外部或外侧部分24-25-26。这样的三角形可以被剪切,生成具有在剪切平面处的新顶点的新三角形。如在此处所呈现的按照右表面17的剪切的图示是为了图示的清楚的目的。任何的其它表面13、14、15、16和18,要么单独地要么与彼此组合地(包括右表面17)可以充当给定三角形上的剪切平面。
剪切操作在循环时间和计算机使用的其它基准(诸如等待时间、吞吐量和功率使用)方面可能是成本高的,并且可能相当大地使图形子系统的性能降级。
虽然如六个那么多的视见平截头体剪切平面可以截断(intercept)一般的多边形,但是已经确定的是真实世界应用中的剪切平面的分布可能是非常不均匀的,并且事实上严重偏斜向单剪切平面的情况。在其中发生剪切的绝大多数情况中,仅仅涉及单剪切平面。
尽管其它种类的多边形能够在图形中使用,但是这些可能一般被缩减至三角形基元形式,并且因而随后的示例按照三角形来被呈现。然而,实施例能够供其它多边形、诸如矩形、五边形、六边形等等使用。
图2示出了具有顶点A、B和C的示例性三角形30,其可以具有各种属性,诸如颜色值(例如红色、绿色和蓝色强度)、透明度、纹理和位置。在此处所述的实施例中,这些值可以以重心坐标形式来表述。在三角形30的情况中,每个顶点具有属性b0、b1和b2,其如上所指出的,可以指示颜色值、纹理、强度或任何其它感兴趣的属性。可以存在更少或更多的这样的属性,但是在随后的示例中,三个属性(b0、b1和b2)被描绘用于说明性目的。
图3示出了在已经按三个剪切平面36、37和38而切割从而产生了外部部分39和内部部分41之后的三角形30。注意到,利用任何数目的平面来剪切三角形将导致凸多边形,此处为B-G-H-I-J-C,其形成在被排除的外部部分39和内部部分41之间的边界。如以上所指出的,外侧或外部区域在以下意义上被排除:它位于视见平截头体外侧并且因而不需要被进一步处理(即,它被“剪切”),而所包括的内部部分41可能一般需要进一步的图形处理。多边形B-G-H-I-J-C可以被分解成三角形B-G-H、B-H-I、B-I-J和B-J-C,或四个三角形以用于过程开始所用的那个。还注意到,在其中初始存在具有重心坐标的仅三个顶点并且这些已知的情况下,现在存在六个,其中的四个必须被计算(点B和C的重心坐标未改变)。这可能是计算上耗时的任务。
图4示出了更简单的情况,其中三角形30已经被单剪切平面43截断。在该情况下,区域45被排除,并且区域47被包括。在区域之间的边界是剪切平面43的线,其限定所包括的内部多边形B-D-E-C。该多边形可以被分解成两个三角形:B-D-E和B-E-C(或B-D-C和D-E-C)。在该单剪切平面情况中,系统可以为在该处单剪切平面43截断三角形的点找到重心坐标的值,所述点在图中是点D和E。
然而,许多剪切平面,对于在该处剪切平面截断三角形的三角形的每个边,存在交点,并且可以计算针对该点的重心值。这可以通过使用边的两个顶点的剪切距离来完成,因为距剪切平面的距离沿着边以线性方式改变。这样的途径在图5方面被图示,图5示出了已经被剪切平面50截断的示例性的边A-B。在所图示的示例中,顶点A是位于视见平截头体外侧的外部点,并且顶点B是位于视见平截头体内侧的内部点。随后的分析是一般性的,因为它可以适用于单剪切平面以及通过依次取每一个而适用于任意许多剪切平面。
首先,定义了多个变量:
Dout:从顶点A到剪切平面50的距离。
Din:从顶点B到剪切平面50的距离。
D:沿着A-B、在该处它被剪切平面50截断的点。
(阿尔法):
此外,在该示例中,沿着A-B的距离被归一化成1,以用于计算便利。
在图5中,Dist被示出为从沿着A-B定位的任意点E到剪切平面50的距离。设置Dist=0(其在图形上对应于将点E移动到点D)并且针对alpha求解导致剪切平面处的alpha的值。或(注意到,Din和Dout可以是有符号的量值与其相关联的距离。因而,如果Din为正,则Dout可以是负的,并且Din将不等于Dout,使得防止除以零)。
让beta(贝塔)被定义为等于1-alpha,将等式约简成形式:
一旦已经根据经剪切的边而计算了alpha和beta,就为出现在剪切平面和边的交点处的新顶点而内插其余的平面距离和重心项。
为所有的新顶点计算最终的重心坐标,并且在剪切操作的最后,新的定位和属性可以如下计算:
,
其中V(A)、V(B)和V(C)分别表示顶点A、B和C处的原始顶点属性值,P(D)表示新的顶点D处的属性(例如颜色、纹理),并且b0(D)、b1(D)和b2(D)是新的顶点D处的经计算的重心值。
对于单平面剪切,可以利用以下事实:即当利用单平面剪切时存在两个可能的结果。图6A和6B图示了这两个拓扑。每个拓扑展示了截断三角形的单剪切平面52。在图6A的拓扑中,三角形使其顶点B在外部,并且在图6B的拓扑中,顶点B位于剪切平面52的内侧。
在其中存在仅一个剪切平面的情况下,可以使用前述等式1-6来用于剪切和计算初始重心值,并且新的重心坐标是alpha和beta的简单组合。
在该示例中,可以使用针对图2的三角形的顶点定位所给出的初始重心值,从而产生:
通过将初始重心值代入等式(3)、(4)和(5)中,对于单剪切平面情况,针对新点D的重心坐标现在可以如下被求值:
针对点E的重心值可以类似地被求值。
显而易见的是,与针对多平面剪切的那些相比,针对单平面剪切操作的计算在计算上不太复杂。操作因而可以通过使用相对较少的处理器和存储器资源来被执行。
现在转到图7,示出了处理单平面剪切操作和多平面剪切操作二者的方法的一个示例的流程图。所述方法可以以使用电路技术(诸如例如专用集成电路(ASIC)、互补金属氧化物半导体(CMOS)或晶体管-晶体管逻辑(TTL)技术或其任何组合)的固定功能性逻辑硬件来被实现。
在所图示的块62处,给定输入三角形的顶点被输入,连同用来执行剪切操作的剪切平面。所图示的条件块64针对剪切平面的数目进行测试。如果存在单剪切平面,则控制转到流程图的左手半部,而如果存在多于一个剪切平面,则控制移动到流程图的右手半部。首先考虑的是通过流程图的左手半部所解决的单剪切平面情况。
在所图示的块66处,三角形的顶点被初始化并且列出,并且重心项也被初始化(即,归一化成0或1)。然后,在所图示的块68(例如“加载(LOAD)”块)处,顶点距该个剪切平面的距离被计算和存储。在块70处,内侧-外侧、外侧-内侧距离比,即如上所讨论的alpha和beta被计算(如,例如按照等式7、8和9)。接下来,在所图示的块72处,取决于输入拓扑而选择适当的4顶点或3顶点输出拓扑。在所图示的块74处,对于该拓扑的所有顶点,计算新剪切的位置处的重心值(如关于等式7、8和9所讨论的),并且在块104处,从剪切操作中产生的新顶点的感兴趣的变量值是可得到的(如,例如通过应用以上等式6)。
接下来考虑的是其中存在多个剪切平面的情况。尽管如以上所指出的,在其中必须进行剪切的绝大多数情况中,存在仅一个剪切平面,但是仍将存在其中必须考虑多个剪切平面的情况并且对此的方法的实施例被呈现在流程图的右手半部中。在所图示的块80处,三角形的顶点被初始化和列出,并且重心项也被初始化。然后,在所图示的块82、加载块处,顶点距考虑中的特定剪切平面的距离被计算和存储。在块84处,可以确定关于前述步骤是否已经考虑了所有剪切平面,并且如果不是,则控制循环回到前述的块并且再次,顶点距考虑中的特定剪切平面的距离被计算和存储。如果关于所有剪切平面已经完成了方法的该阶段,则在块86处开始用于关于特定平面而剪切的步骤。
在所图示的块88处,确定是否给定三角形的所有顶点都位于视见平截头体外侧,并且如果它们是,则所述三角形被省去(即平凡地排除)并且控制转到块104。如果不是所有顶点都在外侧,则方法在块90处确定是否所有顶点都在视见平截头体的内侧(即内部)。如果是这样,则在该三角形上没有要进行的实际剪切,并且控制转到块86,用于选择要考虑的下一个平面。如果不是所有顶点都在视见平截头体内侧,则在块92处,计算内侧-外侧、外侧-内侧距离比,即如上所讨论的alpha和beta,并且在块94处,方法为沿着三角形的已经被剪切平面截断的边的点而内插新的顶点重心、距离和其它坐标。
在块96处,可以确定是否已经对照所有平面进行了剪切,并且如果不是,则控制转回到所图示的块94。如果全部都已经被考虑,则块98,针对新顶点的标记可以被更新并且计算。标记可以用于指示关于对照着剪切的平面的顶点的拓扑(即,内侧相对于外侧)。在所图示的块100处,所述方法确定是否已经考虑了所有平面,并且如果不是,则控制循环回到块86。另一方面,如果已经考虑了所有剪切平面,则在块102处,可以为所生成的所有新的顶点计算新的顶点定位、值和重心项,其中所计算的定位、值和项在所图示的块104处变成可用的。
图8图示了可以用来实践方法的实施例的实施硬件120的示例。宽泛而言,所图示的实施例呈现两个流水线,所述两个流水线一般对应于图7中所呈现的流程图的两侧,其中流水线160对应于图7的左手侧,并且流水线130一般对应于图7的右手半部。使用实施硬件120来加速几何处理可以改进几何子系统的性能,特别是在结合本文中所述的单平面剪切技术而使用的时候。
三角形122可以到达解码器124,所述解码器124由单剪切控制信号126来管控,所述单剪切控制信号126向解码器124告知:该三角形是经受单平面剪切还是经受按多平面的剪切。在图的相对端,该相同的控制信号126可以由复用器125用于设置输出。
首先考虑的是其中已经确定了存在多个剪切平面的情况。在该实现方式中,存在多个ALU资源144、146和148(可以存在更多或更少的),其可以实现简单A*X+B*Y类别的线性操作,并且还存在除法器块150和寄存器文件152,所述寄存器文件152可以存储在剪切操作期间生成的输入、输出、和临时顶点。该实现方式还包含控制块132以在这些资源上调度多剪切操作。该控制块132可以通过相应的模块而在五个阶段上操作,所述模块即INIT(初始化)模块134、LOAD(加载)模块135、CALC(计算)模块136、CLIP(剪切)模块140和OUT(输出)模块142。在INIT(初始化)阶段中,顶点被加载到寄存器文件中并且顶点列表和重心值被指派到顶点。在所图示的LOAD(加载)阶段中,ALU资源用于计算顶点距所选平面的距离,并且为所有被启用的剪切平面而迭代该过程。然后,所计算的距离可以被检查以看看需要对照着哪些平面来剪切。在用于所选剪切平面的CALC(计算)阶段中,所图示的硬件使用ALU资源和除法器块来计算内侧-外侧和外侧-内侧距离定量(ration)(例如,按照等式1和2的alpha、beta)。
所图示的CLIP(剪切)对新剪切的定位处的重心值进行求值,如在等式3、4和5中所规定的。在此之后,可以确定另一平面是否仍需要被对照着剪切。
前述过程可以被迭代地重复直到没有任何平面剩下要被对照着剪切为止。在OUT(输出)阶段中,可以从寄存器文件中读取所有新的顶点重心值,并且ALU资源再次用于通过对等式6求值来计算新的定位和其它感兴趣的值(例如颜色、纹理等等)。可以为所有新生成的顶点进行该新的求值。当多剪切平面操作正在进行时,在先前提及的阶段中可以占用大多数ALU和其它资源,使得仅仅一个三角形将被调度用于在流水线130中处理直到已经生成针对它的最终输出为止。
如以上已经指出的,在大多数实例中,将仅仅存在单剪切平面,在所述情况中,采用分离的流水线160,所述分离的流水线160针对单剪切平面操作而被优化。与用于多剪切平面情况的流水线130相反,所图示的流水线160能够在相同的流水线中处置多个对象。在单平面剪切操作的情况中,每个ALU资源可以被关联到一个阶段并且该ALU可以仅仅用于该操作,这准许在流水线中对多个三角形的处理。在所图示的实施例中,可以在流水线160中处理五个三角形。该途径与多平面剪切(流水线130)的情况相反,在所述多平面剪切(流水线130)的情况中,每个ALU一般将被共享用于多个操作,所述多个操作涉及用于多个线道(lane)的更大量的计算。在该情况中,作为实际情况,计算需求是这样的使得一次可以处理仅一个三角形。
在SinglePlane_INIT(单平面_初始化)模块162中,顶点被加载并且重心值被指派给顶点。在SinglePlane_LOAD(单平面_加载)模块164中,一个ALU资源144被用于计算顶点距正被对照着剪切的单平面的距离,因此不需要对距多剪切平面的距离进行求值。在用于所选剪切平面的SinglePlane_CALC(单平面_计算)模块166中,另一ALU资源146连同除法器块150一起被使用以计算内侧-外侧和外侧-内侧距离比(即,如以上关于等式1和2所讨论的alpha和beta)。在SinglePlane_CLIP(单平面_剪切)模块168中,通过指派alpha和beta值来对新的重心值进行求值,如已经在以上等式7、8和9中所展示的那样。输入拓扑可以确定需要生成一个还是两个新的顶点。在所图示的SinglePlane_OUT(单平面_输出)模块170中,另一ALU资源(未示出)被用于通过执行如在等式6中所呈现的计算来对最终定位或其它期望的值(例如颜色、纹理等等)进行求值。
下表示出单平面和多平面情况的“必须剪切”剪切操作的吞吐量的示例:
“必须剪切”情况 | 没有单平面流水线的时钟循环 | 具有单平面流水线的时钟循环 |
单剪切平面 | S+M | SP_M |
N-剪切平面 | S+N*M | S+N*M |
其中:
S=在初始设置和最终输出和所有其它内务操作上花费的固定循环的数目;
N=被对照着剪切的平面的数目;
M=在对照着每个平面剪切上所花费的循环;
SP_M:单平面剪切操作的最坏情况阶段等待时间。
注意到,SP_M等待时间一般将基本上低于M并且事实上接近ALU等待时间。
通过实现本文中公开的实施例可以实现相当大的性能增益。对于大多数工作负载,诸如本文中所公开的之类的单平面实现方式可以产生良好的性能增益。此外,移除甚至ALU中的一半可能具有很少的性能影响,这意味着还可以存在面积益处,因为可以在设计中使用较少的晶体管或门,因而在总体芯片面积和成本上有节省。因而,在实现诸如此处所述的之类的用于单平面硬件剪切的分离流水线中,可以存在性能和面积益处二者。
图9是根据实施例的数据处理系统200的框图。数据处理系统200包括一个或多个处理器202和一个或多个图形处理器208,并且可以是单处理器台式系统、多处理器工作站系统、或具有大量处理器202或处理器核207的服务器系统。本文中所公开的实施例可以是一个或多个图形处理器208的部分。在一个实施例中,数据处理系统200是用于使用在移动、手持式、或嵌入式设备中的芯片上系统集成电路(SOC)。
数据处理系统200的实施例可以包括基于服务器的游戏平台、游戏控制台、包括游戏和媒体控制台、移动游戏控制台、手持式游戏控制台或在线游戏控制台或者被并入在所述各项之内。在一个实施例中,数据处理系统200是移动电话、智能电话、平板计算设备或移动因特网设备。数据处理系统200还可以包括可穿戴设备、与其耦合或被集成在其内,所述可穿戴设备诸如智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备。在一个实施例中,数据处理系统200是具有一个或多个处理器202以及由一个或多个图形处理器208所生成的图形接口的电视或机顶盒设备。
所述一个或多个处理器202各自包括一个或多个处理器核207以处理指令,所述指令在被执行时执行用于系统和用户软件的操作。在一个实施例中,所述一个或多个处理器核207中的每一个被配置成处理特定的指令集209。指令集209可以促进复杂指令集计算(CISC)、精简指令集计算(RISC)、或经由超长指令字(VLIW)的计算。多个处理器核207可以各自处理不同的指令集209,所述不同的指令集209可以包括指令来促进对其它指令集的仿真。处理器核207还可以包括其它处理设备,诸如数字信号处理器(DSP)。
在一个实施例中,处理器202包括高速缓存存储器204。取决于架构,处理器202可以具有单个内部高速缓存或多级内部高速缓存。在一个实施例中,在处理器202的各种组件之间共享高速缓存存储器。在一个实施例中,处理器202还使用外部高速缓存(例如第三级(L3)高速缓存或末级高速缓存(LLC))(未示出),所述外部高速缓存可以通过使用已知的高速缓存相干性技术而在处理器核207之间共享。寄存器文件206另外被包括在处理器202中,所述处理器202可以包括不同类型的寄存器以用于存储不同类型的数据(例如,整数寄存器、浮点寄存器、状态寄存器、和指令指针寄存器)。一些寄存器可以是通用寄存器,而其它寄存器可以特定于处理器202的设计。
处理器202耦合到处理器总线210以在处理器202和系统200中的其它组件之间传输数据信号。系统200使用示例性的“集线器”系统架构,包括存储器控制器集线器216和输入输出(I/O)控制器集线器230。存储器控制器集线器216促进在存储器设备和系统200的其它组件之间的通信,而I/O控制器集线器(ICH)230经由本地I/O总线而提供到I/O设备的连接。
存储器设备220可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪速存储器设备、或具有合适的性能以充当过程存储器的某种其它存储器设备。存储器220可以存储数据222和指令221以用于在处理器202执行过程的时候使用。存储器控制器集线器216还与可选的外部图形处理器212耦合,所述外部图形处理器212可以与处理器202中的所述一个或多个图形处理器108通信以执行图形和媒体操作。
ICH 230使得外围设备能够经由高速I/O总线而连接到存储器220和处理器202。I/O外围设备包括音频控制器246、固件接口228、无线收发器226(例如Wi-Fi、蓝牙)、数据存储设备224(例如硬盘驱动器、闪速存储器等等)、以及用于将遗留(例如个人系统2(PS/2))设备耦合到系统的遗留I/O控制器。一个或多个通用串行总线(USB)控制器242连接输入设备,诸如键盘和鼠标244组合。网络控制器234也可以耦合到ICH 230。在一个实施例中,高性能网络控制器(未示出)耦合到处理器总线210。
本文中所述的图形和/或视频处理技术可以实现在各种硬件架构中。例如,图形和/或视频功能性可以集成在芯片组内。可替换地,可以使用分立的图形和/或视频处理器。根据仍另一个实施例,图形和/或视频功能可以通过通用处理器、包括多核处理器来被实现。在另外的实施例中,功能可以被实现在消费性电子设备中。
附加的注解和示例:
示例1可以包括一种处理至少一个图形多边形的方法,包括确定将对照着来剪切多边形的剪切平面的数目并且如果仅仅存在单剪切平面则将所述多边形提交给专用于单平面剪切的流水线。
示例2可以包括示例1的方法,还包括加载多边形的顶点的坐标并且将重心值指派给所述顶点。
示例3可以包括示例2的方法,还包括计算单剪切平面到所述顶点中每一个的距离。
示例4可以包括示例3的方法,还包括计算距离比alpha和beta,其中,其中Dout是从一个顶点到剪切平面的距离并且Din是从相邻顶点到剪切平面的距离,并且beta=1-alpha。
示例5可以包括示例4的方法,还包括使相邻顶点之间的距离归一化。
示例6可以包括示例1-5的方法,还包括向位于所确定的剪切平面和多边形的相交处的点指派新的重心值。
示例7可以包括示例1-5的方法,还包括向位于所确定的剪切平面和多边形的相交处的点指派新的值。
示例8可以包括示例1-5的方法,其中所述多边形是三角形。
示例9可以包括示例1的方法,还包括如果存在多于一个剪切平面则将所述多边形提交给专用于多平面剪切的第二流水线。
示例10可以包括一种处理至少一个图形多边形的装置,包括确定将对照着来剪切多边形的剪切平面的数目的模块以及专用于单平面剪切的流水线。
示例11可以包括示例10的装置,还包括加载多边形的顶点的坐标并且将重心值指派给所述顶点的坐标的模块。
示例12可以包括示例11的装置,还包括计算单剪切平面到所述顶点中每一个的距离的模块。
示例13可以包括示例10-12的装置,还包括计算距离比alpha和beta的模块,其中,其中Dout是从一个顶点到剪切平面的距离并且Din是从相邻顶点到剪切平面的距离,并且beta=1-alpha。
示例14可以包括示例10-12的装置,还包括使相邻顶点之间的距离归一化的模块。
示例15可以包括示例13的装置,还包括向位于所确定的剪切平面和多边形的相交处的点指派新的重心值的模块。
示例16可以包括示例13的装置,还包括向位于所确定的剪切平面和多边形的相交处的点指派新的值的模块。
示例17可以包括示例11的装置,其中所述多边形是三角形。
示例18可以包括示例11的装置,还包括对其中存在多于一个剪切平面的情况进行处置的第二流水线。
示例19可以包括示例18的装置,其中所述模块可用于两种流水线。
示例20可以包括一种处理至少一个图形多边形的系统,包括:图形处理单元;确定将对照着来剪切多边形的剪切平面的数目的模块;专用于单平面剪切的第一流水线;以及专用于多平面剪切的第二流水线。
示例21可以包括示例20的系统,还包括与第一流水线相关联的、用以加载多边形的顶点的坐标并且将重心值指派给所述顶点的模块。
示例22可以包括示例21的系统,还包括与第一流水线相关联的、用以计算单剪切平面到所述顶点中每一个的距离的模块。
示例23可以包括示例22的系统,还包括与第一流水线相关联的、用以计算距离比alpha和beta的模块,其中,其中Dout是从一个顶点到剪切平面的距离并且Din是从相邻顶点到剪切平面的距离,并且beta=1-alpha。
示例24可以包括示例21-23的系统,还包括与第一流水线相关联的、用以向位于所确定的剪切平面和多边形的相交处的点指派新的重心值的模块。
示例25可以包括示例24的系统,还包括与第一流水线相关联的、用以向位于所确定的剪切平面和多边形的相交处的点指派新的值的模块。
示例26可以包括一种处理至少一个图形多边形的装置,包括用以确定将对照着来剪切多边形的剪切平面的数目的构件以及专用于单平面剪切的流水线。
示例27可以包括示例26的装置,还包括用以加载多边形的顶点的坐标并且将重心值指派给所述顶点的坐标的构件。
示例28可以包括示例27的装置,还包括用以计算单剪切平面到所述顶点中每一个的距离的构件。
示例29可以包括示例26-28的装置,还包括用以计算距离比alpha和beta的构件,其中,其中Dout是从一个顶点到剪切平面的距离并且Din是从相邻顶点到剪切平面的距离,并且beta=1-alpha。
示例30可以包括示例26-28的装置,还包括用以向位于所确定的剪切平面和多边形的相交处的点指派新的重心值的构件。
示例31可以包括示例26-28的装置,还包括用以向位于所确定的剪切平面和多边形的相交处的点指派新的值的构件。
示例32可以包括示例30的装置,其中所述值反映颜色值、纹理或强度中的一个或多个。
示例33可以包括示例26的装置,其中所述多边形是三角形。
示例34可以包括示例26-28的装置,还包括用以对其中存在多于一个剪切平面的情况进行处置的第二流水线。
示例35可以包括一种用于在图形渲染中剪切多边形的装置,包括:将在单剪切平面的情况中使用的第一流水线;以及将在多于一个剪切平面的情况中使用的第二流水线,其中将用单剪切平面来剪切的多边形被发送到第一流水线并且所有其它多边形被发送到第二流水线。
示例36可以包括示例35的装置,其中所述两个流水线共享算术逻辑单元。
可以通过使用硬件元件、软件元件或二者的组合来实现各种实施例或实施例的要素。硬件元件的示例可以包括处理器、微处理器、电路、电路元件(例如晶体管、电阻器、电容器、电感器等等)、集成电路、专用集成电路(ASIC)、可编程逻辑设备(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体设备、芯片、微芯片、芯片组等等。软件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号、或其任何组合。确定实施例是否通过使用硬件元件和/或软件元件来实现可以根据任何数目的因素而变化,所述因素诸如期望的计算速率、功率水平、耐热性、处理循环预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其它设计或性能约束。
实施例可适用于供所有类型的半导体集成电路(“IC”)芯片使用。这些IC芯片的示例包括但不限于处理器、控制器、芯片组组件、可编程逻辑阵列(PLA)、存储器芯片、网络芯片等等。另外,在一些附图中,用线来表示信号导体线。某些可以是不同的以指示多个组成信号路径,具有数字标签以指示数个组成信号路径,和/或在一端或多端具有箭头以指示主要信息流方向。然而,这不应以限制性方式来被解释。相反,这样添加的细节可以结合一个或多个示例性实施例来被使用以促进对电路的更容易的理解。任何所表示的信号线,无论是否具有附加信息,可以实际包括一个或多个信号,所述一个或多个信号可以在多个方向上行进并且可以利用任何合适类型的信号方案来被实现,例如,利用差分对实现的数字或模拟线、光纤线和/或单端线。
可能已经给出了示例性的尺寸/模型/值/范围,但是实施例不限于所述内容。当制造技术(例如光刻)随着时间而成熟时,预期可以制造更小尺寸的设备。另外,到IC芯片和其它组件的众所周知的功率/接地连接可以或可以不被示出在图内,以用于图示和讨论的简单,并且以便不使实施例的某些方面模糊不清。此外,可以以框图形式来示出布置,以便避免使实施例模糊不清,并且还鉴于以下事实:即关于这样的框图布置的实现方式的细节高度取决于实施例将被实现在其内的平台,即,这样的细节应当很好地在本领域技术人员的眼界范围内。在其中阐明了具体细节(例如电路)以便描述示例性实施例的情况下,对于本领域技术人员而言应当显而易见的是,可以在没有这些具体细节的情况下或在这些具体细节的变型的情况下实践实施例。描述因而要被视为说明性的而不是限制性的。
除非以其它方式特别陈述,否则可以领会到的是,诸如“处理”、“计算”、“推算”、“确定”等等之类的术语指代计算机或计算系统或类似的电子计算设备的动作和/或过程,其操纵计算系统的寄存器和/或存储器内的被表示为物理量(例如电子的)的数据和/或将其变换成计算系统的存储器、寄存器或其它这样的信息存储装置、传输或显示设备内的类似地被表示为物理量的其它数据。实施例不限于该上下文中。
术语“耦合的”可以在本文中用于指代所讨论的组件之间的任何类型的关系(直接的或间接的),并且可以适用于电学、机械、流体、光学、电磁、机电或其它连接。另外,术语“第一”、“第二”等等可以在本文中仅仅用于促进讨论,并且不承载任何特定的时间或时序意义,除非以其它方式指示。
本领域技术人员将从前述描述中领会到,可以以各种形式来实现实施例的广泛技术。因此,虽然实施例已经结合其特定示例被描述,但是实施例的真实范围不应被这样限制,因为在研习了附图、说明书和随后的权利要求时,其它修改对于技术从业者将变得显而易见。
Claims (25)
1.一种处理至少一个图形多边形的系统,包括:
图形处理单元;
确定将对照着来剪切多边形的剪切平面的数目的模块;
专用于单平面剪切的第一流水线;以及
专用于多平面剪切的第二流水线。
2.根据权利要求1所述的系统,还包括与第一流水线相关联的用以进行以下各项的模块:
加载多边形的顶点的坐标;以及
将重心值指派给所述顶点的坐标。
3.根据权利要求2所述的系统,还包括与第一流水线相关联的、用以计算单剪切平面到所述顶点中每一个的距离的模块。
4.根据权利要求3所述的系统,还包括与第一流水线相关联的、用以计算距离比alpha和beta的模块,
其中;
其中Dout是从一个顶点到剪切平面的距离并且Din是从相邻顶点到剪切平面的距离;并且
其中beta=1-alpha。
5.根据权利要求1-4所述的系统,还包括与第一流水线相关联的、用以向位于所确定的剪切平面和多边形的相交处的点指派新的重心值的模块。
6.根据权利要求5所述的系统,还包括与第一流水线相关联的、用以向位于所确定的剪切平面和多边形的相交处的点指派新的值的模块。
7.一种处理至少一个图形多边形的方法,包括:
确定将对照着来剪切多边形的剪切平面的数目;以及
如果仅仅存在单剪切平面则将所述多边形提交给专用于单平面剪切的流水线。
8.根据权利要求7所述的方法,还包括:
加载多边形的顶点的坐标;以及
将重心值指派给所述顶点的坐标。
9.根据权利要求8所述的方法,还包括计算单剪切平面到所述顶点中每一个的距离。
10.根据权利要求9所述的方法,还包括计算距离比alpha和beta,
其中;
其中Dout是从一个顶点到剪切平面的距离并且Din是从相邻顶点到剪切平面的距离;并且
其中beta=1-alpha。
11.根据权利要求10所述的方法,还包括使相邻顶点之间的距离归一化。
12.根据权利要求7-11所述的方法,还包括向位于所确定的剪切平面和多边形的相交处的点指派新的重心值。
13.根据权利要求7-11所述的方法,还包括向位于所确定的剪切平面和多边形的相交处的点指派新的值。
14.根据权利要求7-11所述的方法,其中所述多边形是三角形。
15.根据权利要求7所述的方法,还包括如果存在多于一个剪切平面则将所述多边形提交给专用于多平面剪切的第二流水线。
16.一种处理至少一个图形多边形的装置,包括:
确定将对照着来剪切多边形的剪切平面的数目的模块;以及
专用于单平面剪切的流水线。
17.根据权利要求16所述的装置,还包括用以进行以下各项的模块:
加载多边形的顶点的坐标;并且
将重心值指派给所述顶点的坐标。
18.根据权利要求17所述的装置,还包括计算单剪切平面到所述顶点中每一个的距离的模块。
19.根据权利要求16-18所述的装置,还包括计算距离比alpha和beta的模块,
其中;
其中Dout是从一个顶点到剪切平面的距离并且Din是从相邻顶点到剪切平面的距离;并且
其中beta=1-alpha。
20.根据权利要求16-18所述的装置,还包括使相邻顶点之间的距离归一化的模块。
21.根据权利要求19所述的装置,还包括向位于所确定的剪切平面和多边形的相交处的点指派新的重心值的模块。
22.根据权利要求21所述的装置,还包括向位于所确定的剪切平面和多边形的相交处的点指派新的值的模块。
23.根据权利要求17所述的装置,其中所述多边形是三角形。
24.根据权利要求17所述的装置,还包括对其中存在多于一个剪切平面的情况进行处置的第二流水线。
25.根据权利要求24所述的装置,其中所述模块可用于两种流水线。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/316,895 US20150379664A1 (en) | 2014-06-27 | 2014-06-27 | Accelerated single plane clipping of polygons in graphics processing |
US14/316895 | 2014-06-27 | ||
PCT/US2015/036319 WO2015200076A1 (en) | 2014-06-27 | 2015-06-18 | Accelerated single plane clipping of polygons in graphics processing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106575452A true CN106575452A (zh) | 2017-04-19 |
Family
ID=54931075
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580027632.XA Pending CN106575452A (zh) | 2014-06-27 | 2015-06-18 | 图形处理中的多边形的加速单平面剪切 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20150379664A1 (zh) |
EP (1) | EP3161801A4 (zh) |
JP (1) | JP6441963B2 (zh) |
KR (1) | KR20160148618A (zh) |
CN (1) | CN106575452A (zh) |
RU (1) | RU2656683C1 (zh) |
SG (1) | SG11201609371WA (zh) |
WO (1) | WO2015200076A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10235811B2 (en) | 2016-12-29 | 2019-03-19 | Intel Corporation | Replicating primitives across multiple viewports |
US10522113B2 (en) * | 2017-12-29 | 2019-12-31 | Intel Corporation | Light field displays having synergistic data formatting, re-projection, foveation, tile binning and image warping technology |
US10628910B2 (en) | 2018-09-24 | 2020-04-21 | Intel Corporation | Vertex shader with primitive replication |
US20210103852A1 (en) * | 2019-10-02 | 2021-04-08 | Qualcomm Incorporated | Resource based workload allocation for machine learning workloads |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6507348B1 (en) * | 2000-02-02 | 2003-01-14 | Ati International, Srl | Method and apparatus for clipping an object element in accordance with a clip volume |
US7292242B1 (en) * | 2004-08-11 | 2007-11-06 | Nvida Corporation | Clipping with addition of vertices to existing primitives |
US7439988B1 (en) * | 2005-12-05 | 2008-10-21 | Nvidia Corporation | Apparatus, system, and method for clipping graphics primitives with respect to a clipping plane |
US7705845B1 (en) * | 2006-06-01 | 2010-04-27 | Nvidia Corporation | Clipping graphics primitives with deferred derivation of vertex attributes |
US20120256921A1 (en) * | 2006-10-23 | 2012-10-11 | Qualcomm Incorporated | 3-d clipping in a graphics processing unit |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2372188B (en) * | 2001-02-08 | 2005-07-13 | Imagination Tech Ltd | Volume clipping in computer 3-D Graphics |
US7324116B2 (en) * | 2002-06-20 | 2008-01-29 | Microsoft Corporation | Systems and methods for providing controllable texture sampling |
US20050116948A1 (en) * | 2003-12-01 | 2005-06-02 | Lg Electronics Inc. | Line clipping method and method for displaying three-dimensional image using the same |
US8237739B2 (en) * | 2006-09-12 | 2012-08-07 | Qualcomm Incorporated | Method and device for performing user-defined clipping in object space |
CN102184572B (zh) * | 2011-05-19 | 2017-07-21 | 威盛电子股份有限公司 | 三维图形裁剪方法、呈现方法及其图形处理装置 |
-
2014
- 2014-06-27 US US14/316,895 patent/US20150379664A1/en not_active Abandoned
-
2015
- 2015-06-18 RU RU2016146356A patent/RU2656683C1/ru not_active IP Right Cessation
- 2015-06-18 SG SG11201609371WA patent/SG11201609371WA/en unknown
- 2015-06-18 WO PCT/US2015/036319 patent/WO2015200076A1/en active Application Filing
- 2015-06-18 CN CN201580027632.XA patent/CN106575452A/zh active Pending
- 2015-06-18 EP EP15812277.0A patent/EP3161801A4/en not_active Withdrawn
- 2015-06-18 KR KR1020167032521A patent/KR20160148618A/ko not_active Application Discontinuation
- 2015-06-18 JP JP2016567610A patent/JP6441963B2/ja not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6507348B1 (en) * | 2000-02-02 | 2003-01-14 | Ati International, Srl | Method and apparatus for clipping an object element in accordance with a clip volume |
US7292242B1 (en) * | 2004-08-11 | 2007-11-06 | Nvida Corporation | Clipping with addition of vertices to existing primitives |
US7439988B1 (en) * | 2005-12-05 | 2008-10-21 | Nvidia Corporation | Apparatus, system, and method for clipping graphics primitives with respect to a clipping plane |
US7705845B1 (en) * | 2006-06-01 | 2010-04-27 | Nvidia Corporation | Clipping graphics primitives with deferred derivation of vertex attributes |
US20120256921A1 (en) * | 2006-10-23 | 2012-10-11 | Qualcomm Incorporated | 3-d clipping in a graphics processing unit |
Also Published As
Publication number | Publication date |
---|---|
EP3161801A1 (en) | 2017-05-03 |
RU2656683C1 (ru) | 2018-06-06 |
KR20160148618A (ko) | 2016-12-26 |
JP2017522632A (ja) | 2017-08-10 |
SG11201609371WA (en) | 2016-12-29 |
US20150379664A1 (en) | 2015-12-31 |
WO2015200076A1 (en) | 2015-12-30 |
EP3161801A4 (en) | 2018-01-17 |
JP6441963B2 (ja) | 2018-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10210651B2 (en) | Allocation of tiles to processing engines in a graphics processing system | |
US10733691B2 (en) | Fragment shaders perform vertex shader computations | |
JP7421585B2 (ja) | 光線バンドルの光線に対する差分データを決定する方法及びグラフィックス処理ユニット | |
US10025879B2 (en) | Tree data structures based on a plurality of local coordinate systems | |
EP1665165B1 (en) | Pixel processing system and method | |
EP3249612B1 (en) | Generation of a control stream for a tile | |
CN103620641B (zh) | 最大化图形处理器中的并行处理 | |
US9224235B2 (en) | System, method, and computer program product for compression of a bounding volume hierarchy | |
US20160071313A1 (en) | Relative encoding for a block-based bounding volume hierarchy | |
CN109426519A (zh) | 线内数据检查以进行工作量简化 | |
US9245363B2 (en) | System, method, and computer program product implementing an algorithm for performing thin voxelization of a three-dimensional model | |
US20170004647A1 (en) | Rendering graphics data on demand | |
CN106575452A (zh) | 图形处理中的多边形的加速单平面剪切 | |
US20170365086A1 (en) | Multiple-pass rendering of a digital three-dimensional model of a structure | |
US9978176B2 (en) | Simplifying small mesh components with redundant backs | |
US9269179B2 (en) | System, method, and computer program product for generating primitive specific attributes | |
CN105144244A (zh) | 用于基于瓦片的渲染器的查询处理 | |
CN107077758A (zh) | 零覆盖光栅化剔除 | |
WO2016077025A1 (en) | Dynamic pipeline for graphics processing | |
US10937234B2 (en) | Multi-viewpoint transformation module for use in 3D rendering system | |
GB2585755A (en) | Multi-viewport transformation module for use in 3D rendering system | |
CN115115758A (zh) | 光线跟踪系统中的相交测试 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |