CN108090943B - 渲染曲线的方法 - Google Patents
渲染曲线的方法 Download PDFInfo
- Publication number
- CN108090943B CN108090943B CN201711162811.1A CN201711162811A CN108090943B CN 108090943 B CN108090943 B CN 108090943B CN 201711162811 A CN201711162811 A CN 201711162811A CN 108090943 B CN108090943 B CN 108090943B
- Authority
- CN
- China
- Prior art keywords
- curve
- processing unit
- resource utilization
- rendering
- subdivision level
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000009877 rendering Methods 0.000 title claims abstract description 62
- 230000004044 response Effects 0.000 claims description 11
- 230000003247 decreasing effect Effects 0.000 claims description 8
- 238000000638 solvent extraction Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 19
- 230000007423 decrease Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 4
- 239000012634 fragment Substances 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- 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/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- 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
- 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/08—Volume rendering
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
Abstract
提供了一种渲染曲线的方法、一种渲染曲线的装置和一种渲染曲线的系统。所述方法包括:基于曲线的控制点来确定划分曲线的细分等级;基于细分等级产生与曲线对应的至少一个三角形和至少两个第一子曲线;渲染所述至少两个第一子曲线和所述至少一个三角形。
Description
本专利申请要求于2016年11月21日在韩国知识产权局提交的第10-2016-0154882号韩国专利申请的权益,该韩国专利申请的公开内容通过引用全部包含于此。
技术领域
发明构思涉及用于渲染曲线的方法、装置和系统。
背景技术
已经对改善图形处理单元(GPU)在矢量图形中的加速性能或路径渲染性能的方法进行了研究。关于路径渲染,输入数据可以包括顶点和命令的组合,而不会包括三角形。因此,在执行路径渲染的情况下,改善GPU的加速性能会是困难的。
发明内容
发明构思提供了用于渲染曲线的方法和装置。另外,发明构思提供了一种计算机可读记录介质,计算机可读记录介质存储这样一种程序:当计算机运行该程序时,该程序执行上述方法。然而,发明构思不限于此,并且还可以提供其它技术方案。
根据发明构思的示例实施例,提供了一种渲染曲线的方法,所述方法包括:基于曲线的控制点来确定划分曲线的细分等级;基于细分等级产生与曲线对应的至少一个三角形和至少两个第一子曲线;渲染所述至少两个第一子曲线和所述至少一个三角形。
根据发明构思的另一示例实施例,提供了一种渲染曲线的方法,所述方法包括:基于中央处理单元(CPU)的资源利用率和图形处理单元(GPU)的资源利用率来调整细分等级;响应于细分等级产生与曲线对应的图元数据;通过使用图元数据渲染曲线。
根据发明构思的另一示例实施例,提供了一种用于渲染曲线的装置,所述装置包括处理器。处理器被配置为基于曲线的控制点来确定划分曲线的细分等级,基于细分等级产生与曲线对应的至少一个三角形和至少两个第一子曲线。
根据发明构思的另一示例实施例,提供了一种用于渲染曲线的装置,所述装置包括处理器。处理器被配置为基于中央处理单元(CPU)的资源利用率和图形处理单元(GPU)的资源利用率来确定细分等级,基于细分等级产生与曲线对应的图元数据。
根据发明构思的另一示例实施例,提供了一种用于渲染曲线的系统,所述系统包括中央处理单元(CPU)和图形处理单元(GPU)。CPU被配置为基于CPU的资源利用率和GPU的资源利用率来确定细分等级,CPU和GPU中的至少一个被配置为基于细分等级产生与曲线对应的图元数据。GPU被配置为通过使用图元数据渲染曲线。
根据发明构思的另一示例实施例,提供了一种渲染曲线的方法,所述方法包括:响应于第一处理单元的资源利用率大于第二处理单元的资源利用率乘以缩放值的结果的情况来确定第一细分等级,缩放值为大于0的实数;不同于第一细分等级,响应于第一处理单元的资源利用率小于或等于第二处理单元的资源利用率乘以缩放值的结果的情况来确定第二细分等级。
附图说明
通过下面结合附图的详细描述将更清楚地理解发明构思的示例实施例,在附图中:
图1是示出根据实施例的图形处理系统的示例的框图;
图2是示出根据实施例的渲染曲线的方法的示例的流程图;
图3A和图3B是示出根据实施例的曲线的示例的图;
图4是示出根据实施例的细分等级的示例的图;
图5是示出根据实施例的其中处理器考虑中央处理单元(CPU)的资源利用率UCPU和图形处理单元(GPU)的资源利用率UGPU来确定细分等级的示例的图;
图6是示出根据实施例的当顺序地输入多条曲线时处理器确定细分等级的示例的图;
图7是示出根据示例实施例的其中处理器基于细分等级来划分曲线的示例的图;
图8A和图8B是示出根据实施例的其中处理器通过使用德卡斯特里奥(DeCasteljau)算法来划分曲线的示例的图;
图9是示出根据实施例的其中处理器渲染曲线(或子曲线)和三角形的示例的图;
图10是示出根据实施例的渲染曲线的方法的另一示例的流程图;
图11是示出根据实施例的处理器的示例的框图;以及
图12至图15是示出根据实施例的图形处理系统的各种示例的框图。
具体实施方式
虽然实施例中使用的术语是考虑到关于发明构思的功能而在本领域中当前被广泛使用的一般术语,但是术语可以根据本领域普通技术人员的意图、先例或本领域的新技术来改变。此外,在一些情况下,可以存在由申请人可选地选择的术语,并将在对发明构思的描述的对应部分中详细描述所述术语的含义。因此,在这里使用的术语不应该作为简单的名称来理解,而是应该基于术语的含义和发明构思的整体描述来理解。
贯穿说明书,当某物被称为“包含”一个组件时,除非另有说明,否则它还可以包括另一组件。此外,如这里使用的,术语“单元”和“模块”可以指执行至少一种功能或操作的单元,并且单元可以实现为硬件或软件或者硬件和软件的组合。
在下文中,将参照附图详细地描述发明构思的实施例,使得本领域的普通技术人员可以容易地实现实施例。对此,发明构思可以具有不同的形式并且不应该被理解为受限于这里阐述的描述。
在下文中,将参照附图详细地描述发明构思的实施例。
图1是示出根据示例实施例的图形处理系统的示例的框图。
参照图1,图形处理系统1可以包括处理单元5。处理单元5可以包括中央处理单元(CPU)10和图形处理单元(GPU)20。图形处理系统1可以包括外部存储器30。此外,CPU 10可以包括CPU内部存储器110,GPU 20可以包括GPU内部存储器120。
CPU 10可以通过使用路径数据产生将要传输到GPU 20的绘制调用或绘制命令。这里,路径可以指待渲染的物体的元素。例如,物体可以包括通过连接一条或更多条路径形成的闭合的路径或闭合的多边形。例如,路径可以对应于直线或曲线。
GPU 20可以接收绘制调用并通过使用存储在外部存储器30或CPU内部存储器110中的图元(primitive,也被称为基元)数据来执行路径渲染。例如,GPU 20可以通过使用图元数据来计算帧中包括的多个像素中的每个像素的颜色值。这里,帧可以对应于将要显示在屏幕上的图像,可以通过对帧中包括的每个像素设定颜色来形成图像。
例如,GPU 20可以包括顶点着色器、光栅器(rasterizer,也被称为栅格化器)、片元着色器(fragment shader,也被称为碎片着色器或片段着色器)、像素着色器和/或帧缓冲器。
图元可以指用于渲染的元素。例如,路径可以包括一个或更多个连续的图元,诸如曲线的图元可以被划分为几个图元。
外部存储器30可以存储对于CPU 10和GPU 20的操作所必需的信息或数据,并且存储CPU 10和GPU 20的数据处理结果。例如,外部存储器30可以包括动态随机存取存储器(DRAM)。
CPU内部存储器110和/或GPU内部存储器120可以存储预期要被CPU 10和GPU 20频繁使用或立即使用的数据。例如,CPU内部存储器110和/或GPU内部存储器120可以包括缓存存储器。
GPU 20可以通过使用Loop-Blinn方法来对曲线执行渲染。这里,Loop-Blinn方法可以是通过Loop-Blinn公式来确定包括在包括曲线的控制点的三角形中的每个像素是否被包括在曲线中的方法,并且所述方法可以指基于Charles Loop和Jim Blinn合著的“使用可编程图形硬件的分辨率无关曲线渲染(Resolution Independent Curve Renderingusing Programmable Graphics Hardware)”的内容的方法。因此,随着将要应用Loop-Blinn公式的像素的数目增大,GPU 20的操作量也会增大。
CPU 10可以对待渲染的曲线执行细分(tessellation,也可以被称为细分曲面或曲面细分)。这里,细分可以指将曲线分成多个子曲线的处理。因此,随着对曲线的细分的数量的增大,CPU 10的操作量也会增大。
在根据实施例渲染曲线的方法中,可以考虑CPU 10的资源利用率UCPU和GPU 20的资源利用率UGPU来调节(或适应性地确定)细分等级。这里,资源利用率可以指CPU 10和GPU20的当前使用的资源与总资源容量的比率。例如,在根据实施例的渲染曲线的方法中,可以根据CPU 10的资源利用率UCPU和GPU 20的资源利用率UGPU适应性地确定细分等级。因此,可以防止、减轻或减小CPU 10和GPU 20中的过载的发生的可能性,并且可以高速执行曲线渲染。
在下文中,将参照图2至图10描述渲染曲线的方法的示例。
图2是示出根据实施例的渲染曲线的方法的示例的流程图。
可以由CPU 10来执行和/或由GPU 20来执行图2中示出的渲染曲线的方法。此外,可以由硬件加速器来执行图2中示出的渲染曲线的方法。例如,硬件加速器可以嵌入CPU 10或GPU 20中,或者可以设置为与CPU 10或GPU 20分离的独立装置。
在下文中,为了便于描述,假设处理器执行图2的方法。处理器可以包括在CPU 10、GPU 20或硬件加速器中。
在操作210中,处理器可以基于曲线的控制点的来确定划分曲线的细分等级。
曲线可以通过多个控制点来实现。例如,曲线可以包括通过三个控制点实现的二次曲线或通过四个控制点实现的三次曲线。
细分等级可以对应于划分曲线的次数。例如,当细分等级为2时,处理器划分曲线两次。例如,处理器可以基于曲线的控制点划分曲线。例如,当细分等级为1时,曲线可以被划分为两个子曲线,因此,可以产生一个三角形。这里,三角形的顶点中的两个顶点可以等同于或者可以对应于曲线的控制点中的两个控制点。
处理器可以考虑CPU 10的资源利用率UCPU和GPU 20的资源利用率UGPU来确定细分等级。例如,考虑CPU 10的资源利用率UCPU和GPU 20的资源利用率UGPU来调整基于曲线的控制点所确定的细分等级。在实施例中,当CPU 10的资源利用率UCPU大于GPU 20的资源利用率UGPU时,处理器可以减小细分等级。例如,细分等级被减小预定值。或者CPU 10的资源利用率UCPU与GPU 20的资源利用率UGPU相差越大,细分等级被减小得越大。此外,当CPU 10的资源利用率UCPU小于或等于GPU 20的资源利用率UGPU时,处理器可以增加细分等级。例如,细分等级被增加预定值。或者CPU 10的资源利用率UCPU与GPU 20的资源利用率UGPU相差越大,细分等级被增加得越大。
当顺序输入多条曲线时,或者说如果顺序输入多条曲线,则处理器可以考虑先前输入的曲线的细分等级来确定下一个输入的曲线的细分等级。例如,当确定第一曲线的细分等级并随后确定第二曲线的细分等级时,处理器可以根据使第一曲线的细分等级增加或减小期望值(或可选择地,预定值)来确定第二曲线的细分等级。这里,期望值(或可选择地,预定值)可以是0或者是大于或等于1的自然数。
在下文中,将参照图3A至图6描述由处理器确定细分等级的示例。
图3A至图3B是示出根据实施例的曲线的示例的图。
图3A示出通过三个控制点实现的二次曲线310的示例。图3B示出通过四个控制点实现的三次曲线320的示例。
参照图3A,曲线310可以通过控制点P0、控制点P2和控制点P1来实现。控制点P0可以确定曲线310的起始点,控制点P2可以确定曲线310的终止点,控制点P1可以确定曲线310的形状。此外,参照图3B,曲线320可以通过确定曲线320的起始点的控制点P3、确定曲线320的终止点的控制点P6以及确定曲线320的形状的控制点P4和P5来实现。
路径数据可以包括关于路径的几何形状的数据和关于路径的类型的数据。例如,路径数据可以包括关于包括在路径中的多个顶点中的每个顶点的坐标的信息以及关于通过组合顶点来构建路径的命令的信息。这里,顶点可以包括与路径的起始点对应的顶点和与路径的终止点对应的顶点。当路径是曲线时,或者说如果路径是曲线,则还可以包括确定曲线的形状的控制点。路径数据可以包括与路径将要以其表示的颜色有关的信息。因此,通过参考路径数据,处理器可以确定路径是直线还是曲线,当路径是曲线时,处理器可以确定什么控制点实现曲线。
通过参考路径数据,处理器可以确定对应于曲线310和320的控制点。因此,处理器可以基于曲线310和320的控制点来划分曲线310和320。在示例实施例中,处理器可以划分曲线,使得通过划分曲线310和320产生的三角形的顶点中的两个顶点等同于曲线310和320的控制点中的两个控制点。
在下文中,将参照图4详细地描述由处理器确定的细分等级。
图4是示出根据实施例的细分等级的示例的图。
图4示出细分等级为0、1或2的情况的示例。细分等级可以对应于划分曲线C10的次数。例如,当细分等级为0时,或者如果细分等级为0,则可以不划分曲线C10;当细分等级为1时,或者如果细分等级为1,则曲线C10可以被划分一次;当细分等级为2时,或者如果细分等级为2,则曲线C10可以被划分二次。
参照图4,当细分等级为1时,曲线C10可以被划分一次。换而言之,曲线C10可以被划分成两个第一子曲线C20和C21。此外,根据曲线C10被划分,可以产生一个三角形T1。因此,三角形T1的两个顶点可以等同于曲线C10的控制点P3和P6。
当细分等级为2时,或者说如果细分等级为2,则曲线C10可以被划分两次。例如,曲线C10可以被划分成四个第二子曲线C30、C31、C32和C33。在实施例中,第一子曲线C20可以被划分成第二子曲线C30和C31,第一子曲线C21可以被划分成第二子曲线C32和C33。根据曲线C10被划分两次,可以产生三角形T1、T2和T3。因此,如上所述,三角形T1的两个顶点可以等同于曲线C10的控制点P3和P6。
尽管图4中未示出,但是当细分等级为3时,或者说如果细分等级为3,则曲线C10可以根据上面的方法而被划分三次,因此,可以产生八个第三子曲线和七个三角形。总之,当细分等级为N(N为大于或等于2的自然数)时,可以产生与每个第N-1子曲线对应的至少一个三角形和至少两个第N子曲线。
当由CPU 10执行细分时,或者如果由CPU 10执行细分,则CPU 10的操作量会随着细分等级的增加而增大。例如,CPU 10中可能发生过载。然而,GPU 20的操作量可以随着细分等级的减小而增大。因此,处理器可以考虑CPU 10的资源利用率UCPU和GPU 20的资源利用率UGPU来确定细分等级。
在下文中,将参照图5详细地描述由处理器确定细分等级的示例。
图5是示出根据实施例的其中处理器考虑CPU的资源利用率UCPU和GPU的资源利用率UGPU来确定细分等级的示例的图。
参照图5,当CPU 10的资源利用率UCPU大于GPU 20的资源利用率UGPU时,处理器可以减小细分等级。可选择地,当CPU 10的资源利用率UCPU小于或等于GPU 20的资源利用率UGPU时,处理器可以增加细分等级。
例如,处理器可以基于下面的公式1来增加细分等级或减小细分等级。即,当满足公式1时,处理器可以减小细分等级,当不满足公式1时,处理器可以增加细分等级。
公式1
UCPU>UGPU×α
在公式1中,UCPU指CPU 10的资源利用率,UGPU指GPU 20的资源利用率。此外,α指可以根据包括CPU 10和GPU 20的系统的应用和特性而确定的值和/或可以由用户设定的值。例如,α可以是缩放值(scaling value)。例如,UCPU和UGPU可以是0和1之间的实数,α可以是大于0的实数。
为了支持CPU 10中的实时处理,CPU 10的资源利用率可能需要或被期望保持在特定比率以下,因此,当α被设定为小于1的实数时,或者如果α被设定为小于1的实数,则CPU10的资源利用率可以保持为小于GPU 20的资源利用率。在另一方面,为了支持GPU 20中的3维(3D)图形的实时处理,GPU 20的资源利用率可能需要保持在特定比率以下。在这种情况下,当α被设定为大于或等于1的实数时,GPU 20的资源利用率可以保持为小于CPU 10的资源利用率。在系统中,α的值可以根据应用而动态地改变,而不是被固定或指定。
当满足公式1时,或者如果满足公式1,则处理器可以将细分等级从参考值减小1。可选择地,当不满足公式1时,或者如果不满足公式1,则处理器可以将细分等级从参考值增加1。在公式1中,当GPU 20的资源利用率UGPU快速减小时,或者如果GPU 20的资源利用率UGPU快速减小,则处理器可以将细分等级改变为0,而不是将细分等级从参考值减小1。这里,参考值可以指先前曲线的细分等级。
在下文中,将参照图6描述由处理器基于参考值来确定细分等级的示例。
图6是示出根据实施例的当顺序地输入多条曲线时处理器确定细分等级的示例的图。
图6示出其中首先输入第一曲线610并随后顺序地输入第二曲线620的示例。例如,假设处理器确定第一曲线610的细分等级,并随后确定第二曲线620的细分等级。
如上参照图5描述的,处理器可以根据从参考值增加或减小细分等级来确定曲线610和620的细分等级,参考值可以指先前曲线的细分等级。然而,因为第一曲线610是首先输入的曲线,所以参考值可以是特定值(或可选择地,预定值)(例如,0)。
假定处理器已经确定第一曲线610的细分等级为1,则第二曲线620的细分等级可以从1增加整数k或者减小整数k。例如,k可以是1。例如,当不满足公式1时,处理器可以确定第二曲线620的细分等级为2(=1+1),当满足公式1时,处理器可以确定第二曲线620的细分等级为0(=1-1)。
处理器可以存储曲线610和620的细分等级。例如,处理器可以将表示细分等级的数据传输到存储器以将该数据存储在存储器中。
参照图2,在操作220中,处理器可以基于细分等级产生与曲线对应的至少一个三角形和至少两个第一子曲线。
例如,处理器可以通过使用德卡斯特里奥(De Casteljau)算法划分曲线来产生至少两个第一子曲线和至少一个三角形。
在下文中,将参照图7、图8A和图8B描述由处理器基于细分等级来划分曲线的示例。
图7是示出根据示例实施例的其中处理器基于细分等级来划分曲线的示例的图。
图7示出当细分等级为0、1或2时划分曲线C0的示例。首先,当细分等级为0时,曲线C0不会被如上所述划分。
当细分等级为1时,或者如果细分等级为1,则曲线C0可以被划分一次,因此可以产生两个第一子曲线C1和C2与一个三角形T1。处理器可以产生包括关于第一子曲线C1和C2的信息的“Curve_list”并且可以产生包括关于三角形T1的信息的“Tri_list”。
当细分等级为2时,或者如果细分等级为2,则曲线C0可以被划分两次,因此可以产生四个第二子曲线C3、C4、C5和C6与三个三角形T1、T2和T3。在示例实施例中,处理器可以划分曲线C0以产生第一曲线C1和C2,并且可以划分第一曲线C1和C2以产生第二曲线C3、C4、C5和C6。处理器可以产生包括关于第二子曲线C3、C4、C5和C6的信息的“Curve_list”,并且可以产生包括关于三角形T1、T2和T3的信息的“Tri_list”。
处理器可以存储“Curve_list”和“Tri_list”。例如,处理器可以存储与曲线C0和子曲线C1、C2、C3、C4、C5和C6对应的数据“Curve_list”和与三角形T1、T2和T3对应的数据“Tri_list”。例如,处理器可以将“Curve_list”和“Tri_list”传输到存储器以将其存储在存储器中。
在下文中,与曲线(或子曲线)对应的数据“Curve_list”和与三角形对应的数据“Tri_list”将被称作为图元数据。
在下文中,将参照图8A和图8B描述由处理器划分曲线的示例。
图8A和图8B是示出根据实施例的其中处理器通过使用德卡斯特里奥算法来划分曲线的示例的图。
图8A示出划分前的曲线810。此外,图8B示出曲线810划分成的子曲线811和812。假设曲线810的细分等级为1。
处理器可以基于德卡斯特里奥算法将曲线810划分成子曲线811和812。这里,德卡斯特里奥算法可以指用于将一个贝塞尔曲线(Bezier curve)划分成两个或更多个贝塞尔曲线的算法。这里将省略对德卡斯特里奥算法的详细描述。
参照图2,在操作230中,处理器可以渲染至少两个第一子曲线和至少一个三角形。
处理器可以分别渲染曲线(或子曲线)和三角形。例如,处理器可以通过使用Loop-Blinn方法来渲染曲线(或子曲线),并且可以通过使用GPU 20的管线来渲染三角形。
在下文中,将参照图9描述由处理器渲染曲线(或子曲线)和三角形的示例。
图9是示出根据实施例的其中处理器渲染曲线(或子曲线)和三角形的示例的图。
如图9中示出的,根据处理器划分曲线C10(细分等级为1),假设产生两个第一子曲线C20和C21以及一个三角形T1。
处理器可以分别渲染第一子曲线C20和C21以及三角形T1。例如,处理器可以通过调用OpenGL API(即,绘制调用功能(draw call function,也可以被称为绘制调用函数))来渲染第一子曲线C20和C21以及三角形T1。处理器可以通过使用Loop-Blinn方法来渲染第一子曲线C20和C21,并且可以通过使用GPU 20的管线来渲染三角形T1。例如,可以并行地执行由处理器渲染第一子曲线C20和C21以及由处理器渲染三角形T1的处理。
参考图元数据中的“Curve_list”,处理器可以选择与第一子曲线C20对应的候选像素。例如,处理器可以选择由第一子曲线C20的控制点P0、P3和P4构建的三角形910中的像素来作为候选像素。然后,通过使用Loop-Blinn公式,处理器可以选择候选像素中的位于第一子曲线C20内的像素920。然后,处理器可以通过对像素920设定颜色来渲染第一子曲线C20,并将渲染结果存储在帧缓冲器中。
处理器可以以与渲染第一子曲线C20相同的方式来渲染第一子曲线C21。
处理器可以参考图元数据中的“Tri_list”来选择三角形T1中的像素940。然后,处理器可以通过对像素940设定颜色来渲染三角形T1,并且可以将渲染结果存储在帧缓冲器中。例如,可以以GL_TRIANGLE_STRIP的形式构建Tri_List,处理器可以通过调用绘制调用函数来渲染三角形T1。
图10是示出根据实施例的渲染曲线的方法的另一示例的流程图。
可以由CPU 10执行或者可以由GPU 20执行图10中示出的渲染曲线的方法。此外,可以由硬件加速器执行图10中示出的渲染曲线的方法。例如,硬件加速器可以嵌入在CPU10或GPU 20中,或者可以设置为与CPU 10或GPU 20分离的独立装置。
在下文中,为了便于描述,假设处理器执行图10的方法。处理器可以包括在CPU10、GPU 20或硬件加速器中。
在操作1010中,处理器可以考虑CPU 10的空闲资源和GPU 20的空闲资源来确定细分等级。
当CPU 10的资源利用率UCPU大于GPU 20的资源利用率UGPU时,或者如果CPU 10的资源利用率UCPU大于GPU 20的资源利用率UGPU,则处理器可以减小细分等级。当CPU 10的资源利用率UCPU小于或等于GPU 20的资源利用率UGPU时,或者如果CPU 10的资源利用率UCPU小于或等于GPU 20的资源利用率UGPU,则处理器可以增加细分等级。这里,细分等级可以对应于分割曲线的次数。处理器可以将细分等级传输到存储器以将其存储在存储器中。
由处理器确定细分等级的示例与如上面参照图4至图6描述的示例相同。
在操作1020中,处理器可以基于细分等级产生与曲线对应的图元数据。
处理器可以通过使用德卡斯特里奥算法划分曲线来产生子曲线和三角形。处理器可以产生包括关于曲线和子曲线的信息的“Curve_list”并可以产生包括关于三角形的信息的“Tri_list”。处理器可以将图元数据(“Curve_list”和“Tri_list”)传输到存储器以将其存储在存储器中。
由处理器产生图元数据的示例与如上面参照图7和图8描述的示例相同。
在操作1030中,处理器可以通过使用图元数据来渲染曲线。
处理器可以分别渲染子曲线和三角形。例如,处理器可以通过使用Loop-Blinn方法来渲染子曲线并且可以通过使用GPU 20的管线来渲染三角形。例如,可以并行地执行由处理器渲染子曲线和由处理器渲染三角形的处理。
由处理器渲染曲线的示例与如上面参照图9描述的示例相同。
如上面参照图1至图10描述的,处理器可以根据CPU 10的资源利用率UCPU和GPU 20的资源利用率UGPU来适应性地确定细分等级。因此,可以防止、减轻或减小CPU 10和GPU 20中的过载的发生的可能性,并且可以高速执行曲线渲染。
图11是示出根据实施例的处理器的示例的框图。
参照图11,处理器1100可以包括确定器单元1110和产生器单元1120。处理器1100。处理器1100可以通过逻辑门的阵列来实现,和/或可以通过通用微处理器以及存储可在该通用微处理器中运行的程序的存储器的组合来实现。此外,处理器1100可以通过其它类型的硬件来实现。
确定器单元1110可以基于曲线的控制点来确定划分曲线的细分等级。在示例实施例中,确定器单元1110可以考虑CPU 10的资源利用率UCPU和GPU 20的资源利用率UGPU来确定细分等级。确定器单元1110可以将细分等级传输到存储器。
产生器单元1120可以基于细分等级产生与曲线对应的至少一个三角形和至少两个第一子曲线。在实施例中,产生器单元1120可以基于细分等级产生对应于曲线的图元数据。然后,产生器单元1120可以将图元数据传输到存储器。
如上面参照图2至图10描述的,可以由处理器执行根据实施例的渲染曲线的方法;然而,发明构思不限于此。换而言之,可以由CPU 10和CPU 20执行渲染曲线的方法。
在下文中,将参照图12至图15描述由CPU 10和CPU 20渲染曲线的示例。
图12至图15是示出根据实施例的图形处理系统的各种示例的框图。
图12和图13示出由CPU 1210和1310产生图元数据的示例。图14和图15示出由GPU1420和1520产生图元数据的示例。
参照图12,CPU 1210的处理器1211可以参考存储在存储器1212中的路径数据来确定曲线数据。例如,处理器1211可以确定在路径中是否存在曲线。处理器1211可以考虑CPU1210的资源利用率UCPU和GPU 1220的资源利用率UGPU来确定细分等级。处理器1211可以通过根据细分等级划分曲线来产生图元数据(Tri_List、Curve_List)。在下文中,处理器1211可以将图元数据(Tri_List、Curve_List)存储在存储器1212中。在下文中,处理器1211可以通过使用图元数据(Tri_List、Curve_List)产生绘制调用,GPU 1220可以相应地渲染曲线。
参照图13,图元数据(Tri_List、Curve_List)可以存储在位于GPU 1320和CPU1310之外的存储器或GPU 1320和CPU 1310的外部的存储器中。在示例实施例中,由图13的处理器1311执行的操作可以与由图12的处理器1211执行的操作相同。然而,处理器1311可以将图元数据(Tri_List、Curve_List)存储在外部存储器1330中,并且可以通过使用存储在外部存储器1330中的图元数据来产生绘制调用或绘制命令以进行绘制。
参照图14和图15,由处理器1411和1511确定细分等级的操作可以与图12的处理器1211的操作相同。然而,处理器1411和1511可以请求GPU 1420和1520基于细分等级划分曲线(即,产生图元数据)。例如,GPU 1420和1520的处理器1421和1521可以通过根据细分等级划分曲线来产生图元数据(Tri_List、Curve_List)。
就存储图元数据(Tri_List、Curve_List)的位置而言,图14中示出的示例和图15中示出的示例可以相互不同。例如,图元数据(Tri_List、Curve_List)可以存储在CPU 1410的存储器1412中或者可以存储在GPU 1520的存储器1522中。当图元数据(Tri_List、Curve_List)存储在存储器1522中时,或者如果图元数据(Tri_List、Curve_List)存储在存储器1522中,则处理器1511可以通过使用存储在存储器1522中的图元数据(Tri_List、Curve_List)来产生绘制调用。
虽然图14和图15中未示出,但是图元数据(Tri_List、Curve_List)可以存储在位于GPU 1420和1520以及CPU 1410和1510之外的存储器中。
如上所述,可以根据CPU的空闲资源和GPU的空闲资源来适应性地确定细分等级。因此,可以防止、减轻或减小CPU和GPU中的过载的发生的可能性,并且可以高速执行曲线渲染。
上述方法可以被写为可由计算机执行的程序,并且可以在通过使用计算机可读记录介质运行该程序的通用数字计算机中实现。此外,上述方法中使用的数据结构可以通过各种方式写在计算机可读记录介质上。计算机可读记录介质的示例可以包括存储介质,诸如磁存储介质(例如,ROM、RAM、USB、软盘和硬盘)和光学记录介质(例如,CD-ROM和DVD)。
然而,本领域普通技术人员将理解,在不脱离如所附权利要求限定的发明构思的精神和范围的情况下,可以在形式和细节上进行各种改变。因此,所描述的实施例应仅在描述性意义上被考虑,而不是为了限制的目的。因此,发明构思的范围可以不由上述详细的描述限定而是由所附权利要求限定,并且所述范围内的所有差异将被解释为被包括在发明构思中。
虽然已经参照发明构思的实施例具体示出并描述了发明构思,但是将理解的是,在不脱离权利要求的精神和范围的情况下,可以在其中做出形式和细节上的各种改变。
Claims (18)
1.一种渲染曲线的方法,所述方法包括:
基于中央处理单元的资源来确定曲线的细分等级;
基于细分等级产生与曲线对应的至少一个三角形和至少两个第一子曲线;
渲染所述至少两个第一子曲线和所述至少一个三角形,
其中,所述渲染的步骤包括分别渲染所述至少两个第一子曲线和所述至少一个三角形,
其中,细分等级对应于划分曲线的次数。
2.根据权利要求1所述的方法,其中,所述确定的步骤包括考虑中央处理单元的资源利用率和图形处理单元的资源利用率来调整基于曲线的控制点所确定的划分曲线的细分等级。
3.根据权利要求2所述的方法,其中,所述确定的步骤包括响应于中央处理单元的资源利用率大于图形处理单元的资源利用率的情况来减小细分等级,响应于中央处理单元的资源利用率小于或等于图形处理单元的资源利用率的情况来增加细分等级。
4.根据权利要求1所述的方法,其中,所述产生的步骤包括响应于细分等级为N的情况产生与每个第N-1子曲线对应的至少一个三角形和至少两个第N子曲线,其中,N为大于或等于2的自然数。
5.根据权利要求1所述的方法,其中,所述产生的步骤包括通过使用德卡斯特里奥算法划分曲线来产生所述至少两个第一子曲线。
6.根据权利要求1所述的方法,所述方法还包括:
存储细分等级。
7.根据权利要求1所述的方法,其中,所述渲染的步骤包括通过使用Loop-Blinn方法来渲染所述至少两个第一子曲线并且通过使用图形处理单元的管线来渲染所述至少一个三角形。
8.根据权利要求1所述的方法,所述方法还包括:
存储与所述至少一个三角形和所述至少两个第一子曲线对应的数据。
9.一种渲染曲线的方法,所述方法包括:
基于中央处理单元的资源利用率和图形处理单元的资源利用率来确定细分等级;
响应于细分等级产生与曲线对应的图元数据;
通过使用图元数据渲染曲线,
其中,细分等级对应于划分曲线的次数。
10.根据权利要求9所述的方法,其中,所述确定的步骤包括响应于中央处理单元的资源利用率大于图形处理单元的资源利用率的情况来减小细分等级,响应于中央处理单元的资源利用率小于或等于图形处理单元的资源利用率的情况来增加细分等级。
11.根据权利要求9的方法,其中,所述确定的步骤包括通过增加或减小第一曲线的细分等级来确定第二曲线的细分等级,
其中,第一曲线包括具有在第二曲线之前确定的细分等级的曲线。
12.根据权利要求9所述的方法,其中,图元数据包括曲线数据和三角形数据中的至少一种数据。
13.根据权利要求9所述的方法,其中,所述产生的步骤包括通过使用德卡斯特里奥算法划分曲线来产生图元数据。
14.根据权利要求9所述的方法,其中,所述渲染的步骤包括通过使用图元数据基于图形处理单元的管线来执行的渲染步骤和基于Loop-Blinn方法来执行的渲染步骤中的至少一个渲染步骤。
15.根据权利要求9所述的方法,所述方法还包括:
存储细分等级。
16.根据权利要求9所述的方法,所述方法还包括:
存储图元数据。
17.一种渲染曲线的方法,所述方法包括:
响应于第一处理单元的资源利用率大于第二处理单元的资源利用率乘以缩放值的结果的情况来确定第一细分等级,缩放值为大于0的实数;
响应于第一处理单元的资源利用率小于或等于第二处理单元的资源利用率乘以缩放值的结果的情况来确定不同于第一细分等级的第二细分等级,
其中,第一细分等级和第二细分等级都对应于划分曲线的次数。
18.根据权利要求17所述的方法,其中,第一处理单元包括中央处理单元,第二处理单元包括图形处理单元。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2016-0154882 | 2016-11-21 | ||
KR1020160154882A KR102657587B1 (ko) | 2016-11-21 | 2016-11-21 | 커브 렌더링을 수행하는 방법 및 장치. |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108090943A CN108090943A (zh) | 2018-05-29 |
CN108090943B true CN108090943B (zh) | 2022-02-01 |
Family
ID=60244839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711162811.1A Active CN108090943B (zh) | 2016-11-21 | 2017-11-21 | 渲染曲线的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10297078B2 (zh) |
EP (1) | EP3324363B1 (zh) |
JP (1) | JP6936689B2 (zh) |
KR (1) | KR102657587B1 (zh) |
CN (1) | CN108090943B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6663468B1 (ja) * | 2018-10-15 | 2020-03-11 | Hapsモバイル株式会社 | 制御装置、プログラム、システム及び制御方法 |
KR20200073697A (ko) * | 2018-12-14 | 2020-06-24 | 삼성전자주식회사 | 경로를 포함하는 객체를 렌더링하는 장치, 이를 포함하는 컴퓨팅 장치 및 이의 렌더링 방법 |
US11010939B2 (en) * | 2019-09-12 | 2021-05-18 | Adobe Inc. | Rendering of cubic Bezier curves in a graphics processing unit (GPU) |
CN115272524B (zh) * | 2022-09-23 | 2023-01-03 | 安徽华云安科技有限公司 | 多曲线并行绘制方法、装置、设备以及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101894363A (zh) * | 2009-05-20 | 2010-11-24 | 新奥特(北京)视频技术有限公司 | 一种面片化的garbage mask边界渲染方法 |
US7868887B1 (en) * | 2007-10-18 | 2011-01-11 | Adobe Systems Incorporated | Rendering rational quadratic Bézier curves on a GPU |
CN101978393A (zh) * | 2008-03-20 | 2011-02-16 | 高通股份有限公司 | 用于图形渲染的多阶段细分 |
CN102117260A (zh) * | 2009-12-31 | 2011-07-06 | 英特尔公司 | 在cpu和gpu之间共享资源 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5995109A (en) * | 1997-04-08 | 1999-11-30 | Lsi Logic Corporation | Method for rendering high order rational surface patches |
JPH1166328A (ja) | 1997-08-19 | 1999-03-09 | Murata Mach Ltd | 曲線描画装置 |
US6147767A (en) * | 1997-09-05 | 2000-11-14 | Comtec Informations Systems, Inc. | Computer system for a printer which stores and operates multiple application programs |
EP0952554A3 (en) * | 1998-02-26 | 2003-01-08 | Canon Kabushiki Kaisha | Information processing apparatus and information processing method |
EP1116186A1 (en) * | 1998-09-24 | 2001-07-18 | Brigit Ananya | Computer curve construction system and method |
US6809738B2 (en) * | 2001-12-21 | 2004-10-26 | Vrcontext S.A. | Performing memory management operations to provide displays of complex virtual environments |
US8482559B2 (en) * | 2002-11-04 | 2013-07-09 | Ati Technologies Ulc | Method and apparatus for triangle tessellation |
US7038682B2 (en) * | 2002-11-05 | 2006-05-02 | Brigit Ananya | Computer curve construction system II |
US7212205B2 (en) * | 2002-11-12 | 2007-05-01 | Matsushita Electric Industrial Co., Ltd. | Curved surface image processing apparatus and curved surface image processing method |
US8471852B1 (en) * | 2003-05-30 | 2013-06-25 | Nvidia Corporation | Method and system for tessellation of subdivision surfaces |
US7564459B2 (en) | 2005-10-31 | 2009-07-21 | Microsoft Corporation | Resolution-independent curve rendering using programmable graphics hardware |
US8244051B2 (en) | 2006-03-15 | 2012-08-14 | Microsoft Corporation | Efficient encoding of alternative graphic sets |
US8072452B1 (en) | 2008-04-18 | 2011-12-06 | Adobe Systems Incorporated | Efficient multi-resolution curve rendering |
US8120607B1 (en) * | 2008-05-30 | 2012-02-21 | Nvidia Corporation | Boundary transition region stitching for tessellation |
US8854365B2 (en) * | 2010-01-15 | 2014-10-07 | Microsoft Corporation | Rendering parametric surface patches |
US9019277B2 (en) * | 2010-06-30 | 2015-04-28 | Panasonic Intellectual Property Management Co., Ltd. | Curve-dividing device, curve-dividing method, curve-dividing program and integrated circuit |
EP2523166B1 (en) | 2011-05-12 | 2013-11-27 | BlackBerry Limited | Method and device for rendering areas bounded by curves using a gpu |
JP5842601B2 (ja) * | 2011-12-26 | 2016-01-13 | 富士通株式会社 | プログラム、情報処理方法及び情報処理装置 |
US9240034B2 (en) * | 2012-06-08 | 2016-01-19 | Advanced Micro Devices, Inc. | Biomedical data analysis on heterogeneous platform |
US9922442B2 (en) * | 2012-07-18 | 2018-03-20 | Arm Limited | Graphics processing unit and method for performing tessellation operations |
US9105125B2 (en) | 2012-12-05 | 2015-08-11 | Advanced Micro Devices, Inc. | Load balancing for optimal tessellation performance |
EP2750108B1 (en) * | 2012-12-28 | 2019-05-01 | Dassault Systèmes | Parameterizing a 3D modeled object for tessellation |
US9401034B2 (en) | 2013-04-30 | 2016-07-26 | Microsoft Technology Licensing, Llc | Tessellation of two-dimensional curves using a graphics pipeline |
KR102219294B1 (ko) | 2014-02-13 | 2021-02-23 | 삼성전자 주식회사 | 커브 렌더링 방법 및 장치 |
KR102238651B1 (ko) | 2014-04-23 | 2021-04-09 | 삼성전자주식회사 | 경로 렌더링을 수행하는 방법 및 장치. |
EP2985735B1 (en) * | 2014-08-11 | 2019-12-04 | Samsung Electronics Co., Ltd | Method and apparatus for performing tile-based path rendering |
KR102329475B1 (ko) | 2014-08-27 | 2021-11-19 | 삼성전자주식회사 | 렌더링 퀄리티 제어 장치 및 방법 |
KR102197064B1 (ko) * | 2014-10-10 | 2020-12-30 | 삼성전자 주식회사 | Lod를 조절할 수 있는 그래픽스 프로세싱 유닛, 이의 작동 방법, 및 상기 그래픽스 프로세싱 유닛을 포함하는 장치들 |
-
2016
- 2016-11-21 KR KR1020160154882A patent/KR102657587B1/ko active IP Right Grant
-
2017
- 2017-07-18 US US15/652,610 patent/US10297078B2/en active Active
- 2017-10-12 JP JP2017198268A patent/JP6936689B2/ja active Active
- 2017-10-13 EP EP17196309.3A patent/EP3324363B1/en active Active
- 2017-11-21 CN CN201711162811.1A patent/CN108090943B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7868887B1 (en) * | 2007-10-18 | 2011-01-11 | Adobe Systems Incorporated | Rendering rational quadratic Bézier curves on a GPU |
CN101978393A (zh) * | 2008-03-20 | 2011-02-16 | 高通股份有限公司 | 用于图形渲染的多阶段细分 |
CN101894363A (zh) * | 2009-05-20 | 2010-11-24 | 新奥特(北京)视频技术有限公司 | 一种面片化的garbage mask边界渲染方法 |
CN102117260A (zh) * | 2009-12-31 | 2011-07-06 | 英特尔公司 | 在cpu和gpu之间共享资源 |
Also Published As
Publication number | Publication date |
---|---|
EP3324363A1 (en) | 2018-05-23 |
US20180144544A1 (en) | 2018-05-24 |
KR20180056932A (ko) | 2018-05-30 |
EP3324363B1 (en) | 2019-06-19 |
KR102657587B1 (ko) | 2024-04-15 |
JP6936689B2 (ja) | 2021-09-22 |
CN108090943A (zh) | 2018-05-29 |
JP2018085103A (ja) | 2018-05-31 |
US10297078B2 (en) | 2019-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4938850B2 (ja) | 拡張型頂点キャッシュを備えたグラフィック処理装置 | |
CN108090943B (zh) | 渲染曲线的方法 | |
US10311548B2 (en) | Scaling render targets to a higher rendering resolution to display higher quality video frames | |
KR102651126B1 (ko) | 그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법 | |
KR102646906B1 (ko) | 타일 기반 렌더링 방법 및 장치 | |
US9811940B2 (en) | Bandwidth reduction using vertex shader | |
US20180144538A1 (en) | Method and apparatus for performing tile-based rendering | |
JP2017505476A (ja) | タイルベースのアーキテクチャ上での最適化されたマルチパスレンダリング | |
KR102499397B1 (ko) | 그래픽스 파이프라인을 수행하는 방법 및 장치 | |
KR20190030174A (ko) | 그래픽 처리 | |
US9898838B2 (en) | Graphics processing apparatus and method for determining level of detail (LOD) for texturing in graphics pipeline | |
US9881392B2 (en) | Mipmap generation method and apparatus | |
US10262391B2 (en) | Graphics processing devices and graphics processing methods | |
US11978234B2 (en) | Method and apparatus of data compression | |
US10311627B2 (en) | Graphics processing apparatus and method of processing graphics pipeline thereof | |
US20210398349A1 (en) | Fine grained replay control in binning hardware |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |