CN114565708A - 一种选择抗锯齿算法的方法、装置、设备及可读存储介质 - Google Patents
一种选择抗锯齿算法的方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN114565708A CN114565708A CN202011273391.6A CN202011273391A CN114565708A CN 114565708 A CN114565708 A CN 114565708A CN 202011273391 A CN202011273391 A CN 202011273391A CN 114565708 A CN114565708 A CN 114565708A
- Authority
- CN
- China
- Prior art keywords
- models
- vertex
- algorithm
- target
- aliasing
- 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
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 262
- 238000000034 method Methods 0.000 title claims abstract description 137
- 238000003860 storage Methods 0.000 title claims abstract description 18
- 238000009877 rendering Methods 0.000 claims abstract description 113
- 238000012545 processing Methods 0.000 claims abstract description 43
- 230000009466 transformation Effects 0.000 claims description 15
- 239000011159 matrix material Substances 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 6
- 230000000694 effects Effects 0.000 abstract description 33
- 230000008569 process Effects 0.000 description 50
- 238000004891 communication Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 15
- 244000025254 Cannabis sativa Species 0.000 description 12
- 230000006870 function Effects 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 11
- 238000005070 sampling Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 230000001413 cellular effect Effects 0.000 description 5
- 238000013507 mapping Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004040 coloring Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 239000013598 vector Substances 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000007123 defense Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000001788 irregular Effects 0.000 description 2
- 238000003062 neural network model Methods 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 238000011555 rabbit model Methods 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000010924 continuous production Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000006735 deficit Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000010079 rubber tapping Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000010897 surface acoustic wave method Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 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
- G06T15/50—Lighting effects
- G06T15/503—Blending, e.g. for anti-aliasing
-
- 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/20—Perspective computation
- G06T15/205—Image-based rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/70—Denoising; Smoothing
-
- 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
- G06T7/62—Analysis of geometric attributes of area, perimeter, diameter or volume
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/12—Bounding box
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computing Systems (AREA)
- Image Generation (AREA)
Abstract
本申请实施例公开了一种选择抗锯齿算法的方法、装置、设备及可读存储介质,用于动态选择适合当前图像场景的抗锯齿算法,以提高抗锯齿效果,提高画质。本申请实施例方法包括:CPU获取用于调用应用程序接口API的至少一个指令,该至少一个指令中携带M个模型各自的渲染信息,且M个模型属于同一帧图像,M为正整数;然后基于M个模型各自的渲染信息从多种抗锯齿算法中选择一种抗锯齿算法作为目标抗锯齿算法;CPU向图形处理器GPU发送指示信息,使得GPU基于目标抗锯齿算法对至少一帧图像进行渲染。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种选择抗锯齿算法的方法、装置、设备及可读存储介质。
背景技术
在信号处理以及相关领域中,走样(Aliasing)是指在对不同的信号进行采样时,采样结果显示信号相同的现象。
在图像领域,走样可以包括几何体走样、着色走样以及时间走样。以几何体走样为例,几何体走样通常表现为锯齿现象。锯齿现象是指显示器中显示的图像边缘会出现凹凸锯齿。例如,一条直线如图1所示,将图1所示的直线放大,放大后的直线图像如图2所示,可以看出,这条直线两侧均出现了凹凸锯齿。
由于锯齿现象会影响图像的显示效果,所以诞生了抗锯齿(Anti-Aliasing,AA)技术。抗锯齿也可以称为反走样边缘柔化、消除混叠、抗图像折叠有损等,是一种能够消除图像边缘出现的凹凸锯齿的技术。例如,在渲染直线的过程中采用抗锯齿技术进行处理,则直线的显示结果如图3所示。对比图2和图3可知,抗锯齿技术将锯齿柔化,使得直线显示地更加平滑。
抗锯齿技术有很多算法。但在现有的游戏中,通常会选择一种固定的抗锯齿算法对游戏中的所有图像进行抗锯齿处理。由于每种抗锯齿算法都有不同的适用场景,所以以固定的一种抗锯齿算法进行处理,会导致部分图像的抗锯齿效果较差。
发明内容
本申请实施例提供了一种选择抗锯齿算法的方法、装置、设备及可读存储介质,该方法能够动态选择适合当前图像场景的抗锯齿算法,从而可以提高抗锯齿效果,提高画质。
本申请实施例第一方面提供了一种选择抗锯齿算法的方法,可以应用于中央处理器CPU,包括:获取用于调用应用程序接口API的至少一个指令,至少一个指令中携带M个模型各自的渲染信息,该渲染信息包括但不限于顶点数据、模型的标识、模型对应的VBO的ID以及模型对应的EBO的ID,M个模型属于同一帧图像,M为正整数;基于M个模型各自的渲染信息从多种抗锯齿算法中选择一种抗锯齿算法作为目标抗锯齿算法,多种抗锯齿算法可以包括SSAA算法、MSAA算法、CSAA算法、CFAA算法、FXAA算法、TXAA算法和DLAA算法中的至少两种;向图形处理器GPU发送指示信息,指示信息指示GPU基于目标抗锯齿算法对至少一帧图像进行渲染。
应理解的是,这里选择出来的抗锯齿算法应用的所述“至少一帧图像”可以包括所述M个模型所属的那一帧,也可能来不及应用于这一帧,而是应用于这一帧后续的一帧或多帧。
由于M个模型属于同一帧图像,所以M个模型各自的渲染信息能够反映出该帧图像的具体场景,那么基于M个模型各自的渲染信息确定目标抗锯齿算法则能够实现对目标抗锯齿算法的动态选择,且能得到适用于当前图像场景的目标抗锯齿算法,以提高抗锯齿效果,提高画质。
作为一种实现方式,多种抗锯齿算法包括快速近似抗锯齿FXAA算法,相应地,基于M个模型各自的渲染信息从多种抗锯齿算法中选择一种抗锯齿算法作为目标抗锯齿算法包括:从M个模型中确定渲染信息包含纹理信息的N个模型,纹理信息指示在渲染模型的过程中使用纹理数据,N为小于或等于M的正整数;计算N个模型各自的顶点重复度,顶点重复度可以采用顶点重复使用的次数表示,也可以用顶点的总数与顶点重复使用的次数表示,具体地,顶点重复度可以等于模型中顶点重复使用的次数与和的比值,该和为顶点的总数与顶点重复使用的次数的和;基于N个模型中顶点重复度小于目标重复度的K个模型满足条件,选择FXAA算法作为目标抗锯齿算法,条件可以的内容可以有多种,例如可以包括模型的数量阈值,K为小于或等于N的正整数。
基于FXAA算法适用于通过纹理贴图绘制且顶点重复度较小的模型的渲染过程,所以在该实现方式中,从M个模型中先筛选得到通过纹理贴图绘制的N个模型,再从N个模型中筛选得到顶点重复度小于目标重复度的K个模型,最终当K个模型满足目标条件时选择FXAA算法,从而保证FXAA算法适用于M个模型所属的图像的场景。
作为一种实现方式,条件包括K个模型在屏幕空间中的投影面积与屏幕面积的比例大于目标比例,目标比例的取值可以根据经验、游戏应用程序的种类以及具体的游戏场景进行设定,例如,目标比例可以设置为1/3、2/5或1/2。
该实现方式提供了条件的另一种示例,由于FXAA算法适用于通过纹理贴图绘制且顶点重复度较小的模型的渲染过程,所以当通过纹理贴图绘制且顶点重复度较小的K个模型占屏幕面积的比例较大时,选择FXAA算法作为目标抗锯齿算法,能够保证当前帧图像具有较好的抗锯齿效果。
作为一种实现方式,在计算N个模型各自的顶点重复度之后,在基于N个模型中顶点重复度小于目标重复度的K个模型满足条件,选择FXAA算法作为目标抗锯齿算法之前,方法还包括:计算K个模型在屏幕空间中的投影面积与屏幕面积的比例,计算比例的方法有多种。
计算K个模型在屏幕空间中的投影面积与屏幕面积的比例,当该比例大于目标比例时,选择FXAA算法作为目标抗锯齿算法,能够保证当前帧图像具有较好的抗锯齿效果。
作为一种实现方式,计算K个模型在屏幕空间中的投影面积与屏幕面积的比例包括:获取包围K个模型的P个包围盒,每个包围盒为包围K个模型中至少一个模型的几何体,一个包围盒可以对应一个模型,也可以对应多个模型;包围盒的形状可以有多种,例如为长方体、正方体、球体等;基于转换矩阵计算P个包围盒在屏幕空间中的投影面积,转换矩阵用于将P个包围盒从模型空间投影到屏幕空间,不同包围盒可以对应不同的转换矩阵;计算P个包围盒在屏幕空间中的投影面积与屏幕面积的比例,并将P个包围盒在屏幕空间中的投影面积与屏幕面积的比例,作为K个模型在屏幕空间中的投影面积与屏幕面积的比例。
由于模型本身通常为不规则几何体,因此如果直接计算模型在屏幕空间中的投影面积与屏幕面积的比例,则计算过程会较为繁琐;所以在该实现方式中,先获取包围K个模型的P个包围盒,然后计算P个包围盒在屏幕空间中的投影面积与屏幕面积的比例,并将P个包围盒在屏幕空间中的投影面积与屏幕面积的比例,作为K个模型在屏幕空间中的投影面积与屏幕面积的比例的近似值,能够简化比例的计算过程,提高比例的计算效果,从而可以提高确定出目标抗锯齿算法的效率。
作为一种实现方式,M个模型各自的渲染信息还包括M个模型各自对应的顶点缓冲对象VBO,相应地,获取包围K个模型的P个包围盒包括:从K个模型各自对应的顶点缓冲对象VBO中获取K个模型各自对应的顶点数据,其中,顶点数据可以包括顶点坐标、顶点法向量;基于K个模型各自对应的顶点数据确定P个包围盒,具体地,可以基于K个模型各自的顶点坐标,便可以确定每个模型在各个方向对应的最大坐标值和最小坐标值,然后再确定P个包围盒。
在该实现方式中,基于K个模型各自对应的顶点数据确定P个包围盒,使得确定出的包围盒的体积与模型的实际体积相差不大,这样,P个包围盒在屏幕空间中的投影面积与屏幕面积的比例便可以近似等于K个模型在屏幕空间中的投影面积与屏幕面积的比例,从而保证条件的准确性,进而使得选择出的FXAA算法适用于M个模型所属的图像的场景。
作为一种实现方式,N个模型包含目标模型,目标模型的渲染信息还包括目标模型对应的索引缓冲对象EBO,相应地,计算N个模型各自的顶点重复度包括:从目标模型对应的EBO中获取目标模型对应的顶点索引的数量和顶点索引键值的数量,其中,顶点索引可以理解为顶点的存储位置的索引,顶点索引键值是指索引的取值;基于顶点索引的数量和顶点索引键值的数量计算目标模型的顶点重复度,目标模型的顶点重复度为目标差值与顶点索引的数量的比值,目标差值等于于顶点索引的数量与顶点索引键值的数量的差值。
利用顶点索引的数量和顶点索引键值的数量计算顶点重复度,相比于利用顶点数据计算顶点重复度,计算量较小,计算过程简化,能够提高选择目标抗锯齿算法的效率。
作为一种实现方式,M个模型为所属图像中的所有模型,多种抗锯齿算法还包括多重采样抗锯齿MSAA算法;基于M个模型各自的渲染信息从多种抗锯齿算法中选择一种抗锯齿算法作为目标抗锯齿算法还包括:基于N个模型中顶点重复度小于目标重复度的K个模型不满足条件,选择MSAA算法作为目标抗锯齿算法,K为小于或等于N的正整数。
由于FXAA算法和MSAA算法属于适用性较高的两种抗锯齿算法,因此在该实现方式中,先根据M个模型的渲染信息判断FXAA算法是否适用于当前图像的场景,若适用,则选择FXAA算法作为目标抗锯齿算法;若不适用,则选择MSAA算法作为目标抗锯齿算法;根据不同的场景对FXAA算法和MSAA算法进行不断切换,可以提高游戏应用程序的抗锯齿效果。
作为一种实现方式,在基于N个模型中顶点重复度小于目标重复度的K个模型满足条件,选择FXAA算法作为目标抗锯齿算法之前,方法还包括:获取多种特定的场景下的多帧图像,每种特定的场景可以根据游戏应用程序的种类设定且对应至少一帧图像,多种特定的场景可以包含游戏应用程序中的所有的主要场景;计算多帧图像中特定的至少一个模型的顶点重复度,该特定的至少一个模型可以是适用于FXAA算法的模型,例如,可以是通过纹理贴图绘制的模型,也可以是顶点重复度小的模型;基于特定的至少一个模型的顶点重复度确定目标重复度。
选取特定场景下的多帧图像,使得确定出的目标重复度适用于游戏应用程序中所有场景下的目标抗锯齿算法的选择;并且,根据多帧图像中特定的至少一个模型的顶点重复度确定目标重复度,例如当该特定的至少一个模型适用于FXAA算法的模型时,使得最终确定出的目标重复度可以用于FXAA算法的选择。
本申请实施例第二方面提供了一种选择抗锯齿算法的装置,包括:
获取单元,用于获取用于调用应用程序接口API的至少一个指令,至少一个指令中携带M个模型各自的渲染信息,M个模型属于同一帧图像,M为正整数;
选择单元,用于基于M个模型各自的渲染信息从多种抗锯齿算法中选择一种抗锯齿算法作为目标抗锯齿算法;
发送单元,用于向图形处理器GPU发送指示信息,指示信息指示GPU基于目标抗锯齿算法对至少一帧图像进行渲染。
作为一种实现方式,多种抗锯齿算法包括快速近似抗锯齿FXAA算法;选择单元,用于从M个模型中确定渲染信息包含纹理信息的N个模型,纹理信息指示在渲染模型的过程中使用纹理数据,N为小于或等于M的正整数;计算N个模型各自的顶点重复度;基于N个模型中顶点重复度小于目标重复度的K个模型满足条件,选择FXAA算法作为目标抗锯齿算法,K为小于或等于N的正整数。
作为一种实现方式,条件包括K个模型在屏幕空间中的投影面积与屏幕面积的比例大于目标比例。
作为一种实现方式,选择单元还用于计算K个模型在屏幕空间中的投影面积与屏幕面积的比例。
作为一种实现方式,选择单元用于获取包围K个模型的P个包围盒,每个包围盒为包围K个模型中至少一个模型的几何体;基于转换矩阵计算P个包围盒在屏幕空间中的投影面积,转换矩阵用于将P个包围盒从模型空间投影到屏幕空间;计算P个包围盒在屏幕空间中的投影面积与屏幕面积的比例,并将P个包围盒在屏幕空间中的投影面积与屏幕面积的比例,作为K个模型在屏幕空间中的投影面积与屏幕面积的比例。
作为一种实现方式,M个模型各自的渲染信息还包括M个模型各自对应的顶点缓冲对象VBO;选择单元,用于从K个模型各自对应的顶点缓冲对象VBO中获取K个模型各自对应的顶点数据;基于K个模型各自对应的顶点数据确定P个包围盒。
作为一种实现方式,N个模型包含目标模型,目标模型的渲染信息还包括目标模型对应的索引缓冲对象EBO;选择单元,用于从目标模型对应的EBO中获取目标模型对应的顶点索引的数量和顶点索引键值的数量;基于顶点索引的数量和顶点索引键值的数量计算目标模型的顶点重复度,目标模型的顶点重复度为目标差值与顶点索引的数量的比值,目标差值等于于顶点索引的数量与顶点索引键值的数量的差值。
作为一种实现方式,M个模型为所属图像中的所有模型,多种抗锯齿算法还包括多重采样抗锯齿MSAA算法;选择单元还用于基于N个模型中顶点重复度小于目标重复度的K个模型不满足条件,选择MSAA算法作为目标抗锯齿算法,K为小于或等于N的正整数。
作为一种实现方式,该装置还包括:确定单元,用于获取多种场景下的多帧图像,每种场景对应至少一帧图像;计算多帧图像中特定的至少一个模型的顶点重复度;基于特定的至少一个模型的顶点重复度确定目标重复度。
其中,以上各单元的具体实现、相关说明以及技术效果请参考本申请实施例第一方面的描述。
本申请实施例第三方面提供了一种终端设备,包括:一个或多个处理器和存储器;其中,所述存储器中存储有计算机可读指令;所述一个或多个处理器读取所述计算机可读指令,以使所述计算机设备实现如第一方面任一实现方式所述的方法。
本申请实施例第四方面提供了一种计算机可读存储介质,包括计算机可读指令,当所述计算机可读指令在计算机上运行时,使得所述计算机执行如第一方面任一实现方式所述的方法。
本申请实施例第五方面提供了一种芯片,包括一个或多个处理器。所述处理器中的部分或全部用于读取并执行存储器中存储的计算机程序,以执行上述第一方面任意可能的实现方式中的方法。
可选地,该芯片该包括存储器,该存储器与该处理器通过电路或电线与存储器连接。进一步可选地,该芯片还包括通信接口,处理器与该通信接口连接。通信接口用于接收需要处理的数据和/或信息,处理器从该通信接口获取该数据和/或信息,并对该数据和/或信息进行处理,并通过该通信接口输出处理结果。该通信接口可以是输入输出接口。
在一些实现方式中,所述一个或多个处理器中还可以有部分处理器是通过专用硬件的方式来实现以上方法中的部分步骤,例如涉及神经网络模型的处理可以由专用神经网络处理器或图形处理器来实现。
本申请实施例提供的方法可以由一个芯片实现,也可以由多个芯片协同实现。
本申请实施例第六方面提供了一种计算机程序产品,该计算机程序产品包括计算机软件指令,该计算机软件指令可通过处理器进行加载来实现上述第一方面中任意一种实现方式所述的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
获取用于调用应用程序接口API的至少一个指令,至少一个指令中携带M个模型各自的渲染信息,M个模型属于同一帧图像,M为正整数;基于M个模型各自的渲染信息从多种抗锯齿算法中选择一种抗锯齿算法作为目标抗锯齿算法;向图形处理器GPU发送指示信息,指示信息指示GPU基于目标抗锯齿算法对至少一帧图像进行渲染;
由于M个模型属于同一帧图像,所以M个模型各自的渲染信息能够反映出该帧图像的具体场景,那么基于M个模型各自的渲染信息确定目标抗锯齿算法则能够实现对目标抗锯齿算法的动态选择,且能得到适用于当前图像场景的目标抗锯齿算法,以提高抗锯齿效果,提高画质。
附图说明
图1为直线未经抗锯齿处理的图像示意图;
图2为将图1中的直线放大后的图像示意图;
图3为直线经抗锯齿处理后的图像示意图;
图4为本申请实施例中的系统架构示意图;
图5为包含抗锯齿开关选项的显示设置界面的示意图;
图6为本申请实施例提供的选择抗锯齿算法的方法的一个实施例示意图;
图7为本申请实施例提供的选择抗锯齿算法的方法的另一个实施例示意图;
图8为本申请实施例中一个模型的示意图;
图9为本申请实施例中草的模型的示意图;
图10为本申请实施例中人的模型的示意图;
图11为本申请实施例中鞋子的模型的示意图;
图12为本申请实施例中计算K个模型的投影面积与屏幕面积的比例示意图;
图13为本申请实施例中包围盒的一个实施例示意图;
图14为本申请实施例中包围盒的另一个实施例示意图;
图15为本申请实施例中应用例的示意图;
图16为本申请实施例第一场景下的第一种抗锯齿效果示意图;
图17为本申请实施例第一场景下的第二种抗锯齿效果示意图;
图18为本申请实施例第二场景下的第一种抗锯齿效果示意图;
图19为本申请实施例第二场景下的第二种抗锯齿效果示意图;
图20为本申请实施例中选择抗锯齿算法的装置的示意图;
图21为本申请实施例中终端设备的结构示意图。
具体实施方式
下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。在本申请中出现的对步骤进行的命名或者编号,并不意味着必须按照命名或者编号所指示的时间或逻辑先后顺序执行方法流程中的步骤,已经命名或者编号的流程步骤可以根据要实现的技术目的变更执行次序,只要能达到相同或者相类似的技术效果即可。
本申请实施例可以应用于如图4所示的系统架构中。该系统架构包括应用程序层、图形应用程序接口(Application Program Interface,API)层、内核层和硬件层。其中,该系统框架可以应用于任意能够渲染图像的终端设备中,例如,该系统框架可以应用的终端设备包括但不限于手机、平板电脑、笔记本电脑和车载电脑。
如图4所示,应用程序层包括三个游戏应用程序。需要说明的是,在该实施例中,应用程序层中的应用程序主要是指游戏应用程序,即本申请实施例主要应用于游戏中的图像渲染场景。但在本申请其它实施例中,应用程序层中的应用程序也可以是其他适用的应用程序,本申请对此不做具体限定;另外,游戏应用程序的数量也不限于三个,更少或更多都可以。
图形API层包括但不限于开放图形库(Open Graphics Library,OpenGL)、OpenGLES(OpenGL for Embedded Systems)和Vulkan这三种图形API。其中,图形API层可以用于将2D或3D场景渲染至终端设备的屏幕上;例如,OpenGL用于渲染2D场景,OpenGL ES和Vulkan用于渲染3D场景。
内核层包括系统内核以及驱动等。
硬件层包括但不限于中央处理器CPU、图形处理器GPU和内部存储器等,其中,内部存储器可以是双倍速率SDRAM(Double Data Rate Synchronous Dynamic Random-accessMemory,DDR SDRAM),也可以是其他类型的内部存储器。
基于图4所示的系统框架,当游戏应用程序运行时,以一帧图像为例,图像的渲染流程Pipe Line包括:
第一步,游戏应用程序中的游戏引擎对游戏场景进行遍历,裁剪、剔除游戏场景中的不可见物体。
第二步,对应游戏场景中的每个可见物体,游戏引擎准备数据资源,并发送用于调用图形API的指令,该用于调用图形API的指令会经过图形API层到达内核层。
第三步,内核层的驱动在接收到用于调用图形API的指令后,会将数据资源传递到GPU的内部存储器中,并向GPU发送渲染指令,以指示GPU进行渲染。
第四步,GPU在接收到渲染指令后,会从内部存储器中读取数据资源,并执行顶点着色器Vertex shader、片段着色器Fragment shader或者Compute shader等操作,以得到渲染后的一帧图像。
其中,渲染后的图像中的每个物体都是一个网格Mesh模型,每个Mesh模型由大量的三角形组成,每个三角形都具有三个顶点。不同的三角形的顶点可以重叠。
顶点着色器是指在GPU上处理顶点变换的程序片段。对应Mesh模型的每个顶点,均会执行一次顶点着色器。
片段着色器是指在GPU上处理像素着色的程序片段。Mesh模型经过顶点变换后,对屏幕上每个被Mesh模型覆盖的像素点执行一次像素着色器。
Compute shader是指在GPU上执行的程序片段,可用于图像渲染之外的计算。具体地,可通过OpenGL ES或者Vulkan API将Compute shader传输至GPU,以被GPU执行。
然而,由于渲染得到的图像存在锯齿现象,而锯齿现象会影响图像的显示效果,所以会在图像渲染的过程中,采用抗锯齿技术进行抗锯齿处理,以降低锯齿现象对图像的显示效果的影响,提高画质。例如,如图5所示,游戏应用程序会在显示设置界面中提供一个抗锯齿开关选项,用户可以在游戏游行前或游戏运行过程中选择是否开启抗锯齿;在用户选择开始抗锯齿后,终端设备将在后续图像渲染的过程中,采用抗锯齿技术进行抗锯齿处理。
抗锯齿技术有多种,具体包括超级采样抗锯齿(Super-Sampling Anti-aliasing,SSAA)、多重采样抗锯齿(Multisampling Anti-Aliasing,MSAA)、覆盖采样抗锯齿(Coverage Sampling Anti-Aliasing,CSAA)、可编程过滤抗锯齿(Custom Filter Anti-Aliasing,CFAA)、快速近似抗锯齿(Fast Approximate Anti-Aliasing,FXAA)、时间混叠抗锯齿(Temporal Anti-Aliasing,TXAA)和深度学习抗锯齿(Deep Learning Anti-Aliasing,DLAA)。
下面具体介绍上述抗锯齿技术中适用性较好的两种抗锯齿技术。
MSAA:MSAA来自于OpenGL,只对Z缓存(Z-Buffer)和模板缓存(Stencil Buffer)中的数据进行超级采样抗锯齿的处理;这可以简单理解为,MSAA只对多边形的边缘进行抗锯齿处理。这样的话,相比SSAA对图像中所有数据进行处理,MSAA对资源的消耗需求大幅减少,并能够实现较好的抗锯齿效果。因此,MSAA的应用范围广泛,几乎所有游戏都支持MSAA。
FXAA:FXAA是一种后处理Post-Processing抗锯齿技术,其中,后处理是指在普通场景渲染结束后对结果进行处理,即对一张或多张纹理图像进行处理,得到一张新的纹理图像。所以,FXAA是对初步渲染的图像进行处理,不依赖于任何图形处理器GPU计算接口,对显卡没有特殊要求。FXAA通过分析图像中的像素,提取并平滑图像的锯齿边缘,只需消耗很小的计算资源,就能获得不错的抗锯齿效果。但是FXAA也会对图像产生一定的模糊效果,同时还可能加剧边缘闪烁的问题。
基于上述说明可知,MSAA适用于对Mesh模型中多边形的边缘进行抗锯齿处理;由于FXAA是对初步渲染的图像进行处理,所以FXAA适用于对纹理贴图绘制的Mesh模型进行抗锯齿处理。
其他抗锯齿技术同上述两种抗锯齿技术一样,都具有各自的适用场景。这里的场景可以理解为游戏中的场景,随着游戏中场景的不断变化,场景中物体种类、物体数量以及物体的渲染方法等都会发生变化。所以,在游戏运行过程中,若仅采用一种抗锯齿技术进行抗锯齿处理,当游戏场景变为抗锯齿技术不适用的场景,抗锯齿效果则会变差。
为此,本申请实施例在图4所示的系统框架中增加了算法选择层,该算法选择层能从图形API层实时获取到调用图形API的指令,然后从获取到的调用图形API的指令提取Mesh模型的渲染信息,然后基于Mesh模型的渲染信息动态地从多种抗锯齿算法中选择抗锯齿算法,使得选择出的抗锯齿算法能够适应当前的场景,从而可以提高抗锯齿效果,提高画质。其中,一种抗锯齿算法可以对应一种抗锯齿技术。
需要说明的是,本申请实施例可以应用于任意能够应用抗锯齿技术的终端设备,例如,可以应用于手机、平板电脑、台式电脑、笔记本电脑和车载电脑等终端设备。
然而,由于抗锯齿算法通常由GPU执行,不同终端设备的GPU架构不同,所以当本申请实施例应用于不同的终端设备时,可能需要进行适应性调整,适应性调整后的方案也属于本申请实施例的保护范围。
应理解,手机和平板电脑等移动终端的GPU架构与台式电脑等固定终端的GPU架构不同;并且,由于移动终端需要考虑硬件资源以及功耗等因素,所以通常只能选择一种抗锯齿技术进行抗锯齿处理,而固定终端由于不需要考虑硬件资源以及功耗等因素,所以可以同时选择多种抗锯齿技术进行抗锯齿处理。因此,本申请实施例尤其适用于手机和平板电脑等移动终端,具体可用于移动终端的游戏应用程序中。
下面对本申请实施例提供的选择抗锯齿算法的方法进行介绍。为了便于描述,下文用模型代替Mesh模型。
具体地,请参阅图6,本申请实施例提供了一种选择抗锯齿算法的方法的一个实施例,该实施例可以应用于中央处理器CPU;在游戏运行过程中,该实施例包括:
步骤101,获取用于调用应用程序接口API的至少一个指令,至少一个指令中携带M个模型各自的渲染信息,M个模型属于同一帧图像,M为正整数。
基于图1的相关说明可知,应用程序会向图形应用程序接口API发送指令,该指令用于调用图形API;而在本申请实施例中,可以从图形API获取到该指令。
在本申请实施例中,获取到调用图形API的至少一个指令,该至少一个指令可以包括一个指令,也可以包括多个指令。
下面对至少一个指令与M个模型的对应关系进行说明。
一个指令可以对应多个模型。例如,一个指令可以指示对同一种物体的多个模型进行渲染;具体地,当前游戏场景中包含多棵相同的树,那么便可以通过一个指令指示对这多棵树的模型进行渲染。
一个模型可以对应多个指令。通常情况下,一个模型的渲染过程需要发送多个指令,该多个指令从类型上可以被划分准备指令和Drawcall指令。
其中,准备指令可以用于将模型渲染所需的资源数据存入相应的buffer缓冲器;具体地,准备指令可以用于将模型与纹理数据绑定,可以用于将模型的顶点数据等存入顶点缓冲对象(Vertex Buffer Object,VBO),还可以用于将顶点索引存入索引缓冲对象(Element Buffer Object,EBO)。
VBO是在显卡内存(简称显存)中开辟出的一块内存缓存器,用于存储顶点的各类属性数据,顶点数据包括顶点坐标、顶点法向量、顶点颜色数据等。在渲染时,GPU可以直接从VBO中读取顶点的各类属性数据,由于VBO在显存而不是在内存中,不需要从CPU传输数据,处理效率更高。在显存中可以开辟很多个VBO,每个VBO对应唯一标识ID,这个ID对应着具体的显存地址,通过这个ID可以对特定的VBO内的数据进行存取操作。
EBO与VBO类似,也是在显存中的一块内存缓冲器,只是EBO保存的是顶点索引,顶点索引可以理解为顶点的存储位置的索引。EBO相当于OpenGL中的顶点数组的概念,可以解决同一个顶点多次重复调用的问题,从而减少内存空间浪费,提高执行效率。当需要使用重复的顶点时,可以通过顶点索引来调用顶点,而不是对重复的顶点数据重复记录和重复调用。
Drawcall指令可以用于指令GPU对模型进行渲染,其中,Drawcall指令中可以包含模型的标识、模型对应的VBO的ID以及模型对应的EBO的ID等。
因此,本申请实施例对至少一个指令的数量、种类以及至少一个指令与M个模型的对应关系均不做具体限定。
模型的渲染信息可以包括多种信息,本申请实施例对此不做具体限定。基于前述说明可知,渲染信息包括但不限于顶点数据、模型的标识、模型对应的VBO的ID以及模型对应的EBO的ID。
M个模型属于同一帧图像,这一帧图像属于待渲染的图像,所以M个模型各自的渲染信息能够反映出这一帧图像的具体场景。其中,M个模型可以是一个模型,也可以包括多个模型;M个模型可以是该帧图像中的部分模型,也可以是该帧图像中的全部模型。
需要说明的是,渲染一帧图像的过程包括渲染该帧图像中所有模型的过程,所以在渲染一帧图像的过程中,通常会持续发送几十甚至几百个调用图形API的指令。因此,步骤101可以是一次获取,得到至少一个指令;当至少一个指令的数量为多个时,步骤101还可以是通过多次获取,得到多个指令。
步骤102,基于M个模型各自的渲染信息从多种抗锯齿算法中选择一种抗锯齿算法作为目标抗锯齿算法。
基于步骤101的相关说明可知,M个模型各自的渲染信息能够反映出M个模型所属的待渲染的图像的具体场景,所以基于M个模型各自的渲染信息选择目标抗锯齿算法,可以理解为基于待渲染的图像的具体场景选择目标抗锯齿算法。
本申请实施例对多种抗锯齿算法的种类不做具体限定,包括但不限于SSAA算法、MSAA算法、CSAA算法、CFAA算法、FXAA算法、TXAA算法和DLAA算法中至少两种。
由于M个模型各自的渲染信息可以包括多种信息,所以对应不同的渲染信息,选择目标抗锯齿算法的方法也不同。
因此,在步骤102中,选择目标抗锯齿算法的方法有多种,本申请实施例对此不做具体限定。
步骤103,向图形处理器GPU发送指示信息,指示信息指示GPU基于目标抗锯齿算法对至少一帧图像进行渲染。
在确定目标抗锯齿算法后,CPU向GPU发送指示信息,使得GPU基于目标抗锯齿算法进行抗锯齿处理。
需要说明的是,假设M个模型所属的图像为当前帧图像,本申请实施例在确定目标抗锯齿算法的同时,GPU也在渲染该当前帧图像中的模型;所以在确定目标抗锯齿算法后,已经完成了当前帧图像中部分模型的渲染,或已经完成了当前帧图像的渲染。
在游戏渲染过程中,一秒内需要多帧图像,相邻帧图像的场景相差不大。
因此,当在确定目标抗锯齿算法后,已经完成了当前帧图像中部分模型的渲染时,可以利用目标抗锯齿算法对当前帧图像进行处理,也可以利用目标抗锯齿算法对当前帧图像后的一帧或多帧图像进行渲染;当在确定目标抗锯齿算法后,已经完成了当前帧图像的渲染时,也可以利用目标抗锯齿算法对当前帧图像后的一帧或多帧图像进行渲染。
综上,指示信息可以指示GPU基于目标抗锯齿算法对至少一帧图像进行渲染。
在本申请实施例中,由于M个模型各自的渲染信息能够反映出M个模型所属的待渲染的图像的具体场景,所以基于至少一个指令中携带M个模型各自的渲染信息确定目标抗锯齿算法,能够实现对目标抗锯齿算法的动态选择,且得到适用于当前图像场景的目标抗锯齿算法,以提高抗锯齿效果,提高画质。
基于上述实施例可知,选择目标抗锯齿算法的方法有多种,下面以一具体实施例对此进行说明。
请参阅图7,本申请实施例提供了一种选择抗锯齿算法的方法的另一个实施例,该实施例也可以应用于中央处理器CPU,该实施例包括:
步骤201,获取多种场景下的多帧图像,每种场景对应至少一帧图像。
需要说明的是,多种场景可以是预先设定的,本申请实施例对多种场景的具体内容不做具体限定;多种场景的具体内容可以与游戏应用程序相关,不同的游戏应用程序,对应的多种场景不同。
由于多种场景下的多帧图像是用于确定目标重复度,所以为了保证确定出的目标重复度适用于游戏应用程序中所有场景下的目标抗锯齿算法的选择,多种场景是游戏应用程序中具有代表性的场景,可以包含游戏应用程序中的所有的主要场景。
通常情况下,对于一款特定的游戏应用程序,主要场景的数量是有限的,因此可以将游戏应用程序的几种主要场景设置为步骤201中的多种场景。
下面以具体的示例对多种场景进行说明。例如,对于一款野外枪击类的游戏应用程序,多种场景可以包括山上的场景、水中的场景、桥上的场景以及房间内的场景等;对于一款塔防类的游戏应用程序,多种场景可以包括基地的场景、对线小兵的场景、防御塔的场景以及对线玩家的场景等。
每种场景对应至少一帧图像,示例性地,每种场景对应关键帧图像,其中关键帧图像可以理解为角色或者物体在运动或变化中的关键动作所处的那一帧图像。
步骤202,计算多帧图像中特定的至少一个模型的顶点重复度。
需要说明的是,计算特定的至少一个模型的顶点重复度是为了确定目标重复度,而目标重复度是用于选择目标抗锯齿算法,所以可以根据所需选择的目标抗锯齿算法,并结合人工经验预先选择特定的至少一个模型。
例如,为了确定选择FXAA算法的条件,所以根据FXAA算法适用的模型选择特定的至少一个模型。具体地,FXAA算法适用于贴图绘制的模型,所以可以选择渲染过程中通过纹理贴图绘制的模型,作为特定的至少一个模型,例如可以选择草的模型、栅栏的模型以及树叶的模型中的一种或多种作为特定的至少一个模型。
模型的顶点重复度越高,模型的三角形数量就越多,边也就越多;基于此,由于MSAA算法适用于对多边形的边缘进行抗锯齿处理,且FXAA算法会对图像产生模糊的效果,因此对比来看,MSAA算法比FXAA算法更适用于顶点重复度高的模型的渲染过程,而FXAA算法更适用于顶点重复度低的模型的渲染过程。为此,可以选择通常情况下顶点重复度低的模型作为特定的至少一个模型;例如,草的模型、栅栏的模型以及树叶的模型的顶点重复度通常较低,所以可以选择草的模型、栅栏的模型以及树叶的模型中的一种或多种作为特定的至少一个模型。
其中,顶点重复度指示一个模型中顶点重复使用的情况。假设一模型如图8所示,该模型由两个三角形构成,这两个三角形的一条边重合,所以该模型包含的顶点的数量为4,有两个顶点分别重复使用一次。
顶点重复度的形式可以有多种,本申请实施例对此不做具体限定。作为一种实现方式,顶点重复度可以为模型中顶点重复使用的次数,但这对于顶点数量较多的模型来说,顶点重复度必然较高。因此,作为另一种实现方式,顶点重复度可以等于模型中顶点重复使用的次数与和的比值,该和为顶点的总数与顶点重复使用的次数的和。
下面以具体的示例说明草的模型、栅栏的模型以及树叶的模型的顶点重复度通常较低。
如图9、图10和图11所示,分别示出了草的模型、人物的模型以及鞋子的模型,对比三张图可以明显地看出草的模型的顶点重复度较低。
步骤203,基于特定的至少一个模型的顶点重复度确定目标重复度。
需要说明的是,基于特定的至少一个模型的顶点重复度确定目标重复度的方法有多种,本申请实施例对此不做限定。作为一种实现方式,将目标重复度设置为大于特定的至少一个模型中任一模型的顶点重复度。例如,特定的至少一个模型包括两个模型,且顶点重复度分别为30%和31%,则目标重复度可以设置为35%。
步骤201至步骤203提供了一种确定目标重复度的具体方案,即基于选择的特定的还少一个模型的顶点重复度确定目标重复度,该目标重复度用于步骤207中确定目标抗锯齿算法的过程。
相应地,步骤201至步骤203需要在步骤207之前执行;具体地,可以在游戏离线状态下执行步骤201至步骤203,也可以在用户选择抗锯齿之前但在游戏运行过程中执行步骤201至步骤203,本申请实施例对此不做具体限定。
需要说明的是,除了上述确定目标重复度的方法外,还可以使用直接设定目标重复度等其他方法确定目标重复度,因此在本申请实施例中,步骤201至步骤203是可选地。
下面的步骤204至步骤207是在游戏运行过程中执行。
步骤204,获取用于调用应用程序接口API的至少一个指令,至少一个指令中携带M个模型各自的渲染信息,M个模型属于同一帧图像,M为正整数。
基于步骤101的相关说明可知,获取到的指令可以把包括将模型与纹理数据绑定的指令。
可以理解的是,在模型的渲染过程中,通常可以通过两种方法对该模型进行着色。
第一种着色方法:使用纹理数据对模型进行着色,也可以称为通过纹理贴图绘制;相应地,在渲染前,需要发送将纹理数据与模型绑定的指令。当该指令被获取到时,渲染信息则包含纹理信息,纹理信息指示在渲染模型的过程中使用纹理数据。
第二种着色方法:通过设置像素点的颜色来对模型进行着色,即将模型中的每个像素点都设置为一种颜色;相应地,在CPU发送给GPU的资源数据中会包含模型中各顶点以及各像素点的颜色数据。这种情况下,CPU便不会发送将纹理数据与模型绑定的指令,因此也无法获取到将纹理数据与模型绑定的指令,相应地,模型的渲染信息中则不会包含纹理信息。
本申请实施例中的步骤204的其他内容与前一实施例中的步骤101类似,具体可参数前述实施例中步骤101的相关说明对本申请实施例中的步骤204进行理解。
下面通过步骤204至步骤207介绍选择目标抗锯齿算法的具体过程,在本申请实施例中,多种抗锯齿算法包括快速近似抗锯齿FXAA算法,相应地,前述实施例中的步骤102可以包括步骤204至步骤207。
步骤205,从M个模型中确定渲染信息包含纹理信息的N个模型,纹理信息指示在渲染模型的过程中使用纹理数据,N为小于或等于M的正整数。
基于步骤204的相关说明可知,若模型需要通过纹理数据进行着色,该模型的渲染信息中则会包含纹理信息;若模型不需要通过纹理数据进行着色,该模型的渲染信息中则不会包含纹理信息。
因此,可以从M个模型中筛选出包含纹理信息的N个模型;其中,N个模型可以是全部M个模型,此时,N等于M;N个模型也可以是M个模型中的一部分,此时,N小于M。
步骤206,计算N个模型各自的顶点重复度。
基于步骤202的相关说明可知,模型的顶点重复度可以采用顶点重复使用的次数表示,也可以基于顶点的总数与顶点重复使用的次数计算,即顶点重复度=顶点重复使用的次数/(顶点的总数+顶点重复使用的次数)。
可以理解的是,若通过模型的顶点数据来确定被重复使用的顶点以及每个被重复使用的顶点的重复使用的次数,则计算量将会较大。为了,本申请实施例提供了计算顶点重复度的另外一种方式,下面对此进行介绍。
示例性地,N个模型包含目标模型,即目标模型为N个模型中的一个,目标模型的渲染信息还包括目标模型对应的索引缓冲对象EBO。其中,EBO可参照步骤101的相关说明进行理解。
基于上述条件,计算N个模型各自的顶点重复度包括:
从目标模型对应的EBO中获取目标模型对应的顶点索引的数量和顶点索引键值的数量;基于顶点索引的数量和顶点索引键值的数量计算目标模型的顶点重复度,目标模型的顶点重复度为目标差值与顶点索引的数量的比值,目标差值等于于顶点索引的数量与顶点索引键值的数量的差值。
下面结合图9至图11对模型的顶点重复度的计算过程进行说明。
对于图9所示的模型,EBO中的顶点索引包括:[0,1,2,3,4,5,6,4,3,7,8,9,8,7,10,11,12,13,12,11,14,15,16,17,17,18,15,19,20,21,22,20,19,23,24,25,24,23,26,27,28,29,29,30,27,31,32,33,33,34,31],其中每个索引值又可以称为顶点索引键值,表示顶点的存储位置,根据该顶点索引值可以从相应的VBO中获取顶点数据。
对于图9所示模型的顶点索引,顶点索引的数量为51,顶点索引键值可以为0至34,所以顶点索引键值的数量为35;相应地,顶点重复使用的次数为51-35=16,该模型的顶点重复度=16/51=31.4%。
使用相同的方法对图10以及图11所示的模型的顶点重复度进行计算。
对于图10所示的模型,顶点索引的数量为4669,顶点索引键值的数量为877;相应地,该模型的顶点重复度=(4669-877)/4669=81.2%。
对于图11所示的模型,顶点索引的数量为1002,顶点索引键值的数量为254;相应地,该模型的顶点重复度=(1002-254)/4669=74.6%。
基于上述数据可以看出,图9所示的草的模型的顶点重复度明显低于图10和图11所示的模型的顶点重复度。
在本申请实施例中,利用顶点索引的数量和顶点索引键值的数量计算顶点重复度,相比于利用顶点数据计算顶点重复度,计算量较小,计算过程简化,能够提高选择目标抗锯齿算法的效率。
步骤207,基于N个模型中顶点重复度小于目标重复度的K个模型满足条件,选择FXAA算法作为目标抗锯齿算法,K为小于或等于N的正整数。
基于步骤203中对特定的至少一个模型的相关说明可知,FXAA算法适用于通过纹理贴图绘制且顶点重复度较小的模型的渲染过程。
因此,在本申请实施例中,从M个模型中先筛选得到通过纹理贴图绘制的N个模型,然后再从N个模型中筛选得到顶点重复度小于目标重复度的K个模型;最终,基于K个模型以及预设的条件来选择目标抗锯齿算法。
其中,预设的条件可以有多种,本申请实施例对此不做具体限定。
作为一种实现方式,预设的条件可以为模型的数量阈值。
可以理解的是,即使K个模型的数量很多,但若K个模型在屏幕空间中的尺寸很小,那么即使无论选择哪种抗锯齿算法对K个模型进行处理,对K个模型的抗锯齿效果影响都不大。
作为另一种实现方式,条件包括K个模型在屏幕空间中的投影面积与屏幕面积的比例大于目标比例。
可以理解的是,K个模型在屏幕空间中的尺寸越大,那么对K个模型所属的该帧图像的显示效果影响就越大;而K个模型的渲染过程适用于FXAA算法,所以当K个模型在屏幕空间中的投影面积与屏幕面积的比例大于目标比例时,选择FXAA算法作为目标抗锯齿算法,对整帧图像的抗锯齿效果提高较大。
其中,目标比例可以根据经验、游戏应用程序的种类以及具体的游戏场景进行设定,例如,目标比例可以设置为1/3、2/5或1/2。
相应地,在步骤206之后,在步骤207之前,方法还包括:计算K个模型在屏幕空间中的投影面积与屏幕面积的比例。
计算K个模型在屏幕空间中的投影面积与屏幕面积的比例的方法有多种,本申请实施例对此不做具体限定,下面对次进行具体介绍。
作为一种实现方式,如图12所示,计算K个模型在屏幕空间中的投影面积与屏幕面积的比例包括:
步骤301,获取包围K个模型的P个包围盒,每个包围盒为包围K个模型中至少一个模型的几何体。
对于一个模型来说,包围盒则为在模型空间中包围该模型的几何体。其中,对于同一模型,包围盒的种类可以有多种,只要能够包围该模型即可。因此,本申请实施例对P个包围盒的结构不做具体限定。
例如,对于一个兔子的模型来说,包围盒可以如图13所示,即包围盒为一个球体;包围盒也可以如图14所示,即包围盒为一个正方体。
下面对K个模型和P个包围盒的对应关系进行说明。
一个包围盒可以对应一个模型,即一个包围盒包围一个模型。如图12和图13所示,该包围盒仅包围一个兔子的模型。
一个包围盒也可以对应多个模型。例如,在模型空间中,两个模型距离比较近甚至有重叠,此时则可以确定包围这两个模型的一个包围盒。
需要说明的是,模型可以对应多种包围盒,所以获取P个包围盒的方法有多种。示例性地,M个模型各自的渲染信息还包括M个模型各自对应的顶点缓冲对象VBO,具体可参照前述实施例中的步骤101的相关说明对VBO进行理解。
基于此,获取包围K个模型的P个包围盒包括:
从K个模型各自对应的顶点缓冲对象VBO中获取M个模型各自对应的顶点数据,基于K个模型各自对应的顶点数据确定P个包围盒。
其中,顶点数据可以包括顶点坐标、顶点法向量。
可以理解的是,基于K个模型各自的顶点坐标,便可以确定每个模型在各个方向对应的最大坐标值和最小坐标值,这相当于确定了模型的边缘,基于每个模型在各个方向对应的最大坐标值和最小坐标值便可以获取到P个包围盒。
步骤302,基于转换矩阵计算P个包围盒在屏幕空间中的投影面积,转换矩阵用于将P个包围盒从模型空间投影到屏幕空间。
模型空间也称对象空间或者局部空间,在模型空间中,每个模型都有自己独立的坐标空间,当模型移动或者旋转时,模型空间也跟着它移动和旋转。
屏幕空间是一个二维空间,可以将模型的顶点坐标投影到屏幕空间,以得到对应的二维坐标。
其中,转换矩阵则用于将模型空间中的模型投影(也可以称为转换)到屏幕空间。
P个包围盒中任意两个包围盒可以对应相同的转换矩阵,也可以对应不同的转换矩阵,因此可以基于一个或多个转换矩阵将P个包围盒从模型空间投影到屏幕空间。
需要说明的是,计算P个包围盒在屏幕空间中的投影面积为较成熟的技术,本申请实施例在此不做详述。
步骤303,计算P个包围盒在屏幕空间中的投影面积与屏幕面积的比例,并将P个包围盒在屏幕空间中的投影面积与屏幕面积的比例,作为K个模型在屏幕空间中的投影面积与屏幕面积的比例。
可以理解的是,模型本身通常为不规则几何体,因此如果直接计算模型在屏幕空间中的投影面积与屏幕面积的比例,则计算过程会较为繁琐。
本申请实施例先获取包围K个模型的P个包围盒,然后计算P个包围盒在屏幕空间中的投影面积与屏幕面积的比例,并将P个包围盒在屏幕空间中的投影面积与屏幕面积的比例,作为K个模型在屏幕空间中的投影面积与屏幕面积的比例的近似值,能够简化比例的计算过程,提高比例的计算效果,从而可以提高确定出目标抗锯齿算法的效率。
基于前述各个实施例的说明可知,对于一帧图像来说,只要该帧图像包含的所有的模型中,存在使用纹理数据且顶点重复度小于目标重复度的K个模型,且这K个模型满足预先设定的条件,则可以选择FXAA算法作为目标抗锯齿算法。
而获取调用图形API的指令的过程是一个持续的过程,所以可以在获取到一部分指令后,便可以根据这一部分指令中包含的模型的信息判断,是否存在满足预先设定的条件K个模型。若存在,则可以选择FXAA算法作为目标抗锯齿算法,若不存在,则可以继续获取调用图形API的指令,并继续进行判断。
因此,M个模型可以是所属图像中的所有模型,也可以是所属图像中的所有模型的一部分模型。
例如,渲染一帧图像需要渲染100个模型;则可以在获取到20个模型的渲染信息后,通过这20个模型的渲染信息判断是否存在满足预先设定的条件K个模型,此时M为20;若不满足,则可以继续获取模型的渲染信息,在获取到30个模型的渲染信息后,通过这30个模型的渲染信息判断是否存在满足预先设定的条件K个模型,此时M为30;重复上述过程,直到当M为100时,再进行一次判断,此时,若存在满足预先设定的条件K个模型,则选择FXAA算法作为目标抗锯齿算法。
可以理解的是,当M个模型为所属图像中的所有模型时,若仍不存在满足条件的K个模型,则可以不选择FXAA算法作为目标抗锯齿算法,而选择其他算法作为目标抗锯齿算法,下面对此进行具体介绍。
示例性地,M个模型为所属图像中的所有模型,多种抗锯齿算法还包括多重采样抗锯齿MSAA算法。
基于M个模型各自的渲染信息从多种抗锯齿算法中选择一种抗锯齿算法作为目标抗锯齿算法还包括:
基于N个模型中顶点重复度小于目标重复度的K个模型不满足条件,选择MSAA算法作为目标抗锯齿算法,K为小于或等于N的正整数。
可以理解的是,若N个模型中顶点重复度小于目标重复度的K个模型不满足条件,则意味着使用纹理数据且顶点重复度较小的K个模型不满足条件,则FXAA算法不适用于当前图像的场景;相应地,说明M个模型中存在较多的重复度较高的模型或不适用纹理数据的模型,基于前述步骤202的相关说明可知,此时可以选择MSAA算法作为目标抗锯齿算法。
由于FXAA算法和MSAA算法属于适用性较高的两种抗锯齿算法,因此在本申请实施例中,先基于M个模型的渲染信息判断FXAA算法是否适用于当前图像的场景,若适用,则选择FXAA算法作为目标抗锯齿算法;若不适用,则选择MSAA算法作为目标抗锯齿算法;根据不同的场景对FXAA算法和MSAA算法进行不断切换,可以提高游戏应用程序的抗锯齿效果。
为了便于理解本申请实施例提供的选择抗锯齿算法的方法,下面提供一具体应用例。
如图15所示,该应用例的场景中游戏运行阶段,具体包括:
第一步,获取M个模型的渲染信息,具体的获取过程可参阅步骤101和步骤204的相关说明;
第二步,基于M个模型的渲染信息从M个模型中识别出使用纹理信息的N个模型,具体识别过程可参阅步骤205的相关说明;
第三步,从N个模型中识别出顶点重复度小于目标重复度的K个模型,具体识别过程可参阅步骤206的相关说明;
第四步,通过遍历K个模型对应的VBO,获取K个模型对应的P个包围盒,具体可参阅步骤301的相关说明;
第五步,基于P个包围盒和转换矩阵计算K个模型在屏幕空间的投影面积,具体可参阅步骤302的相关说明;
第六步,判断K个模型在屏幕空间的投影面积与屏幕面积的比例是否大于1/3,当大于1/3时,选择FXAA算法作为目标抗锯齿算法;当小于1/3时,选择MSAA算法作为目标抗锯齿算法。
下面通过游戏中具体的图像说明本申请实施例中选择抗锯齿算法的方法的效果。
具体地,将本申请实施例中选择抗锯齿算法的方法应用于一款游戏应用程序,对于第一种场景,由于草等通过贴图绘制且顶点重复度低的模型占屏幕的比例较大,因此选择了FXAA算法作为目标抗锯齿算法,利用FXAA算法进行抗锯齿处理后的图像如图16所示;对于第二种场景,由于草等通过贴图绘制且顶点重复度低的模型占屏幕的比例较小,因此选择了MSAA算法作为目标抗锯齿算法,利用MSAAA算法进行抗锯齿处理后的图像如图17所示。
为了体验本申请实施例的抗锯齿效果,申请人做了对比试验:采用MSAA算法对第一种场景进行抗锯齿处理,得到如图18所示的图像;采用FXAA算法对第二种场景进行抗锯齿处理,得到如图19所示的图像。
对比图16和图18可以看出,在本申请实施例选择FXAA算法进行抗锯齿处理得到的图像中,草的边缘的锯齿较小,画质更好;而在选择MSAA算法进行抗锯齿处理得到的图像中,草的边缘的锯齿较大,画质更差。
同样地,对比图17和图19可以看出,在本申请实施例选择MSAA算法进行抗锯齿处理得到的图像中,电线的边缘的锯齿较小,画质更好;而在选择FXAA算法进行抗锯齿处理得到的图像中,电线的边缘的锯齿较大,画质更差。
请参阅图20,本申请实施例还提供了一种选择抗锯齿算法的装置的一个实施例,包括:
获取单元401,用于获取用于调用应用程序接口API的至少一个指令,至少一个指令中携带M个模型各自的渲染信息,M个模型属于同一帧图像,M为正整数;
选择单元402,用于基于M个模型各自的渲染信息从多种抗锯齿算法中选择一种抗锯齿算法作为目标抗锯齿算法;
发送单元403,用于向图形处理器GPU发送指示信息,指示信息指示GPU基于目标抗锯齿算法对至少一帧图像进行渲染。
作为一种实现方式,多种抗锯齿算法包括快速近似抗锯齿FXAA算法;选择单元402,用于从M个模型中确定渲染信息包含纹理信息的N个模型,纹理信息指示在渲染模型的过程中使用纹理数据,N为小于或等于M的正整数;计算N个模型各自的顶点重复度;基于N个模型中顶点重复度小于目标重复度的K个模型满足条件,选择FXAA算法作为目标抗锯齿算法,K为小于或等于N的正整数。
作为一种实现方式,条件包括K个模型在屏幕空间中的投影面积与屏幕面积的比例大于目标比例。
作为一种实现方式,选择单元402还用于计算K个模型在屏幕空间中的投影面积与屏幕面积的比例。
作为一种实现方式,选择单元402用于获取包围K个模型的P个包围盒,每个包围盒为包围K个模型中至少一个模型的几何体;基于转换矩阵计算P个包围盒在屏幕空间中的投影面积,转换矩阵用于将P个包围盒从模型空间投影到屏幕空间;计算P个包围盒在屏幕空间中的投影面积与屏幕面积的比例,并将P个包围盒在屏幕空间中的投影面积与屏幕面积的比例,作为K个模型在屏幕空间中的投影面积与屏幕面积的比例。
作为一种实现方式,M个模型各自的渲染信息还包括M个模型各自对应的顶点缓冲对象VBO;选择单元402,用于从K个模型各自对应的顶点缓冲对象VBO中获取K个模型各自对应的顶点数据;基于K个模型各自对应的顶点数据确定P个包围盒。
作为一种实现方式,N个模型包含目标模型,目标模型的渲染信息还包括目标模型对应的索引缓冲对象EBO;选择单元402,用于从目标模型对应的EBO中获取目标模型对应的顶点索引的数量和顶点索引键值的数量;基于顶点索引的数量和顶点索引键值的数量计算目标模型的顶点重复度,目标模型的顶点重复度为目标差值与顶点索引的数量的比值,目标差值等于于顶点索引的数量与顶点索引键值的数量的差值。
作为一种实现方式,M个模型为所属图像中的所有模型,多种抗锯齿算法还包括多重采样抗锯齿MSAA算法;选择单元402还用于基于N个模型中顶点重复度小于目标重复度的K个模型不满足条件,选择MSAA算法作为目标抗锯齿算法,K为小于或等于N的正整数。
作为一种实现方式,该装置还包括:确定单元404,用于获取多种场景下的多帧图像,每种场景对应至少一帧图像;计算多帧图像中特定的至少一个模型的顶点重复度;基于特定的至少一个模型的顶点重复度确定目标重复度。
其中,以上各单元的具体实现、相关说明以及技术效果请参考本申请实施例方法部分的描述。
本申请实施例还提供了另一种终端设备,如图21所示,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。该终端可以为包括手机、平板电脑、个人数字助理(英文全称:Personal Digital Assistant,英文缩写:PDA)、销售终端(英文全称:Point of Sales,英文缩写:POS)、车载电脑等任意终端设备,以终端为手机为例:
图21示出的是与本申请实施例提供的终端相关的手机的部分结构的框图。参考图21,手机包括:射频(英文全称:Radio Frequency,英文缩写:RF)电路1010、存储器1020、输入单元1030、显示单元1040、传感器1050、音频电路1060、无线保真(英文全称:wirelessfidelity,英文缩写:WiFi)模块1070、中央处理器CPU1080、图形处理器GPU1090以及电源等部件。本领域技术人员可以理解,图21中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图21对手机的各个构成部件进行具体的介绍:
RF电路1010可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给CPU1080处理;另外,将设计上行的数据发送给基站。通常,RF电路1010包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(英文全称:LowNoise Amplifier,英文缩写:LNA)、双工器等。此外,RF电路1010还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(英文全称:Global System of Mobile communication,英文缩写:GSM)、通用分组无线服务(英文全称:General Packet Radio Service,GPRS)、码分多址(英文全称:CodeDivision Multiple Access,英文缩写:CDMA)、宽带码分多址(英文全称:Wideband CodeDivision Multiple Access,英文缩写:WCDMA)、长期演进(英文全称:Long TermEvolution,英文缩写:LTE)、电子邮件、短消息服务(英文全称:Short Messaging Service,SMS)等。
存储器1020可用于存储软件程序以及模块,CPU1080通过运行存储在存储器1020的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器1020可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1020可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元1030可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元1030可包括触控面板1031以及其他输入设备1032。触控面板1031,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1031上或在触控面板1031附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板1031可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给CPU1080,并能接收CPU1080发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1031。除了触控面板1031,输入单元1030还可以包括其他输入设备1032。具体地,其他输入设备1032可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元1040可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元1040可包括显示面板1041,可选的,可以采用液晶显示器(英文全称:Liquid Crystal Display,英文缩写:LCD)、有机发光二极管(英文全称:Organic Light-Emitting Diode,英文缩写:OLED)等形式来配置显示面板1041。进一步的,触控面板1031可覆盖显示面板1041,当触控面板1031检测到在其上或附近的触摸操作后,传送给CPU1080以确定触摸事件的类型,随后CPU1080根据触摸事件的类型在显示面板1041上提供相应的视觉输出。虽然在图21中,触控面板1031与显示面板1041是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板1031与显示面板1041集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器1050,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1041的亮度,接近传感器可在手机移动到耳边时,关闭显示面板1041和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路1060、扬声器1061,传声器1062可提供用户与手机之间的音频接口。音频电路1060可将接收到的音频数据转换后的电信号,传输到扬声器1061,由扬声器1061转换为声音信号输出;另一方面,传声器1062将收集的声音信号转换为电信号,由音频电路1060接收后转换为音频数据,再将音频数据输出CPU1080处理后,经RF电路1010以发送给比如另一手机,或者将音频数据输出至存储器1020以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块1070可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图21示出了WiFi模块1070,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
CPU1080是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器1020内的软件程序和/或模块,以及调用存储在存储器1020内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,CPU1080可包括一个或多个处理单元;优选的,CPU1080可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到CPU1080中。
GPU1090主要用于将存储器1020中的数据渲染成图像,在显示单元1040中显示。
手机还包括给各个部件供电的电源(比如电池),优选的,电源可以通过电源管理系统与CPU1080逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本申请实施例中,该终端所包括的CPU1080还具有以下功能:
获取用于调用应用程序接口API的至少一个指令,所述至少一个指令中携带M个模型各自的渲染信息,所述M个模型属于同一帧图像,M为正整数;
根据所述M个模型各自的渲染信息从多种抗锯齿算法中选择一种抗锯齿算法作为目标抗锯齿算法;
向图形处理器GPU发送指示信息,所述指示信息指示所述GPU基于所述目标抗锯齿算法对至少一帧图像进行渲染。
在本申请实施例中,该终端所包括的GPU1090还具有以下功能:
接收来自CPU1080的指示信息,并基于该指示信息采用目标抗锯齿算法在图像渲染过程中进行抗锯齿处理。
本申请实施例还提供一种芯片,包括一个或多个处理器。所述处理器中的部分或全部用于读取并执行存储器中存储的计算机程序,以执行图6、图7和图12对应的各实施例的方法。
可选地,该芯片该包括存储器,该存储器与该处理器通过电路或电线与存储器连接。进一步可选地,该芯片还包括通信接口,处理器与该通信接口连接。通信接口用于接收需要处理的数据和/或信息,处理器从该通信接口获取该数据和/或信息,并对该数据和/或信息进行处理,并通过该通信接口输出处理结果。该通信接口可以是输入输出接口。
在一些实现方式中,所述一个或多个处理器中还可以有部分处理器是通过专用硬件的方式来实现以上方法中的部分步骤,例如涉及神经网络模型的处理可以由专用神经网络处理器或图形处理器来实现。
本申请实施例提供的方法可以由一个芯片实现,也可以由多个芯片协同实现。
本申请实施例还提供了一种计算机存储介质,该计算机存储介质用于储存为上述计算机设备所用的计算机软件指令,其包括用于执行为计算机设备所设计的程序。
该计算机设备可以如前述图15所描述的运行应用程序的装置。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机软件指令,该计算机软件指令可通过处理器进行加载来实现前述图6、图7和图12所示的方法中的流程。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (13)
1.一种选择抗锯齿算法的方法,其特征在于,包括:
获取用于调用应用程序接口API的至少一个指令,所述至少一个指令中携带M个模型各自的渲染信息,所述M个模型属于同一帧图像,M为正整数;
基于所述M个模型各自的渲染信息从多种抗锯齿算法中选择一种抗锯齿算法作为目标抗锯齿算法;
向图形处理器GPU发送指示信息,所述指示信息指示所述GPU基于所述目标抗锯齿算法对至少一帧图像进行渲染。
2.根据权利要求1所述的方法,其特征在于,所述多种抗锯齿算法包括快速近似抗锯齿FXAA算法;
所述基于所述M个模型各自的渲染信息从多种抗锯齿算法中选择一种抗锯齿算法作为目标抗锯齿算法包括:
从所述M个模型中确定渲染信息包含纹理信息的N个模型,所述纹理信息指示在渲染模型的过程中使用纹理数据,N为小于或等于M的正整数;
计算所述N个模型各自的顶点重复度;
基于所述N个模型中顶点重复度小于目标重复度的K个模型满足条件,选择所述FXAA算法作为目标抗锯齿算法,K为小于或等于N的正整数。
3.根据权利要求2所述的方法,其特征在于,所述条件包括所述K个模型在屏幕空间中的投影面积与屏幕面积的比例大于目标比例。
4.根据权利要求2或3所述的方法,其特征在于,在所述计算所述N个模型各自的顶点重复度之后,在基于所述N个模型中顶点重复度小于目标重复度的K个模型满足条件,选择所述FXAA算法作为目标抗锯齿算法之前,所述方法还包括:
计算所述K个模型在屏幕空间中的投影面积与屏幕面积的比例。
5.根据权利要求4所述的方法,其特征在于,所述计算K个模型在屏幕空间中的投影面积与屏幕面积的比例包括:
获取包围K个模型的P个包围盒,每个包围盒为包围所述K个模型中至少一个模型的几何体;
基于转换矩阵计算所述P个包围盒在屏幕空间中的投影面积,所述转换矩阵用于将所述P个包围盒从模型空间投影到所述屏幕空间;
计算所述P个包围盒在所述屏幕空间中的投影面积与屏幕面积的比例,并将所述P个包围盒在所述屏幕空间中的投影面积与屏幕面积的比例,作为所述K个模型在屏幕空间中的投影面积与屏幕面积的比例。
6.根据权利要求5所述的方法,其特征在于,所述M个模型各自的渲染信息还包括所述M个模型各自对应的顶点缓冲对象VBO;
获取包围K个模型的P个包围盒包括:
从所述K个模型各自对应的顶点缓冲对象VBO中获取所述K个模型各自对应的顶点数据;
基于所述K个模型各自对应的顶点数据确定P个包围盒。
7.根据权利要求2至6中任一项所述的方法,其特征在于,所述N个模型包含目标模型,所述目标模型的渲染信息还包括所述目标模型对应的索引缓冲对象EBO;
所述计算所述N个模型各自的顶点重复度包括:
从所述目标模型对应的EBO中获取所述目标模型对应的顶点索引的数量和顶点索引键值的数量;
基于所述顶点索引的数量和所述顶点索引键值的数量计算所述目标模型的顶点重复度,所述目标模型的顶点重复度为目标差值与所述顶点索引的数量的比值,所述目标差值等于于所述顶点索引的数量与所述顶点索引键值的数量的差值。
8.根据权利要求2至7中任一项所述的方法,其特征在于,所述M个模型为所属图像中的所有模型,所述多种抗锯齿算法还包括多重采样抗锯齿MSAA算法;
所述基于所述M个模型各自的渲染信息从多种抗锯齿算法中选择一种抗锯齿算法作为目标抗锯齿算法还包括:
基于所述N个模型中顶点重复度小于目标重复度的K个模型不满足所述条件,选择所述MSAA算法作为目标抗锯齿算法,K为小于或等于N的正整数。
9.根据权利要求2至8中任一项所述的方法,其特征在于,在所述基于所述N个模型中顶点重复度小于目标重复度的K个模型满足条件,选择所述FXAA算法作为目标抗锯齿算法之前,所述方法还包括:
获取多种场景下的多帧图像,每种场景对应至少一帧图像;
计算所述多帧图像中至少一个模型的顶点重复度;
基于所述至少一个模型的顶点重复度确定所述目标重复度。
10.一种选择抗锯齿算法的装置,其特征在于,包括:
获取单元,用于获取用于调用应用程序接口API的至少一个指令,所述至少一个指令中携带M个模型各自的渲染信息,所述M个模型属于同一帧图像,M为正整数;
选择单元,用于基于所述M个模型各自的渲染信息从多种抗锯齿算法中选择一种抗锯齿算法作为目标抗锯齿算法;
发送单元,用于向图形处理器GPU发送指示信息,所述指示信息指示所述GPU基于所述目标抗锯齿算法对至少一帧图像进行渲染。
11.一种终端设备,其特征在于,包括:一个或多个处理器和存储器;其中,所述存储器中存储有计算机可读指令;
所述一个或多个处理器读取所述计算机可读指令,以使所述计算机设备实现如权利要求1至9中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,包括计算机可读指令,当所述计算机可读指令在计算机上运行时,使得所述计算机执行如权利要求1至9中任一项所述的方法。
13.一种计算机程序产品,其特征在于,包括计算机可读指令,当所述计算机可读指令在计算机上运行时,使得所述计算机执行如权利要求1至9中任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011273391.6A CN114565708A (zh) | 2020-11-13 | 2020-11-13 | 一种选择抗锯齿算法的方法、装置、设备及可读存储介质 |
PCT/CN2021/130070 WO2022100663A1 (zh) | 2020-11-13 | 2021-11-11 | 一种选择抗锯齿算法的方法、装置、设备及可读存储介质 |
EP21891183.2A EP4231244A4 (en) | 2020-11-13 | 2021-11-11 | METHOD, DEVICE AND APPARATUS FOR SELECTING AN ANTI-ALIASING ALGORITHM AND READABLE STORAGE MEDIUM |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011273391.6A CN114565708A (zh) | 2020-11-13 | 2020-11-13 | 一种选择抗锯齿算法的方法、装置、设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114565708A true CN114565708A (zh) | 2022-05-31 |
Family
ID=81600778
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011273391.6A Pending CN114565708A (zh) | 2020-11-13 | 2020-11-13 | 一种选择抗锯齿算法的方法、装置、设备及可读存储介质 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP4231244A4 (zh) |
CN (1) | CN114565708A (zh) |
WO (1) | WO2022100663A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115330626A (zh) * | 2022-08-18 | 2022-11-11 | 北京拙河科技有限公司 | 一种基于mesh网格网络分解的画面变换方法及装置 |
CN115691434A (zh) * | 2022-11-08 | 2023-02-03 | 广州文石信息科技有限公司 | 一种基于墨水屏的文字显示方法、装置、设备及存储介质 |
CN115712580A (zh) * | 2022-11-25 | 2023-02-24 | 格兰菲智能科技有限公司 | 内存地址分配方法、装置、计算机设备和存储介质 |
CN116228593A (zh) * | 2023-03-27 | 2023-06-06 | 北京拙河科技有限公司 | 一种基于分级抗锯齿的图像完善方法及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240078949A1 (en) * | 2022-09-06 | 2024-03-07 | Apple Inc. | Dynamic arbitrary border gain |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7173631B2 (en) * | 2004-09-23 | 2007-02-06 | Qualcomm Incorporated | Flexible antialiasing in embedded devices |
CN102708585B (zh) * | 2012-05-09 | 2015-05-20 | 北京像素软件科技股份有限公司 | 一种渲染模型轮廓边缘的方法 |
CN105574817A (zh) * | 2014-10-17 | 2016-05-11 | 华为技术有限公司 | 图像的抗锯齿方法和装置 |
GB2531936A (en) * | 2014-10-21 | 2016-05-04 | Samsung Electronics Co Ltd | Graphic processing unit, a graphic processing system including the same, and an anti-aliasing method using the same |
CN108022218A (zh) * | 2017-11-24 | 2018-05-11 | 中国航空工业集团公司西安航空计算技术研究所 | 一种自适应纹理字库抗锯齿方法 |
CN108846815B (zh) * | 2018-06-19 | 2023-03-24 | 腾讯科技(深圳)有限公司 | 图像抗锯齿处理方法、装置和计算机设备 |
CN109712225B (zh) * | 2018-12-29 | 2023-07-07 | 北京超图软件股份有限公司 | 一种面对象的渲染方法、装置、设备及存储介质 |
-
2020
- 2020-11-13 CN CN202011273391.6A patent/CN114565708A/zh active Pending
-
2021
- 2021-11-11 WO PCT/CN2021/130070 patent/WO2022100663A1/zh unknown
- 2021-11-11 EP EP21891183.2A patent/EP4231244A4/en active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115330626A (zh) * | 2022-08-18 | 2022-11-11 | 北京拙河科技有限公司 | 一种基于mesh网格网络分解的画面变换方法及装置 |
CN115691434A (zh) * | 2022-11-08 | 2023-02-03 | 广州文石信息科技有限公司 | 一种基于墨水屏的文字显示方法、装置、设备及存储介质 |
CN115712580A (zh) * | 2022-11-25 | 2023-02-24 | 格兰菲智能科技有限公司 | 内存地址分配方法、装置、计算机设备和存储介质 |
CN115712580B (zh) * | 2022-11-25 | 2024-01-30 | 格兰菲智能科技有限公司 | 内存地址分配方法、装置、计算机设备和存储介质 |
CN116228593A (zh) * | 2023-03-27 | 2023-06-06 | 北京拙河科技有限公司 | 一种基于分级抗锯齿的图像完善方法及装置 |
CN116228593B (zh) * | 2023-03-27 | 2023-10-10 | 北京拙河科技有限公司 | 一种基于分级抗锯齿的图像完善方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP4231244A1 (en) | 2023-08-23 |
EP4231244A4 (en) | 2024-05-29 |
WO2022100663A1 (zh) | 2022-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111292405B (zh) | 一种图像渲染的方法以及相关装置 | |
CN114565708A (zh) | 一种选择抗锯齿算法的方法、装置、设备及可读存储介质 | |
KR101980990B1 (ko) | 중간-분류 아키텍처에서 프레임 대 프레임 일관성의 활용 | |
CN109993823A (zh) | 阴影渲染方法、装置、终端及存储介质 | |
CN110211218B (zh) | 画面渲染方法和装置、存储介质及电子装置 | |
US11711563B2 (en) | Methods and systems for graphics rendering assistance by a multi-access server | |
US9626795B2 (en) | Reducing shading by merging fragments from the adjacent primitives | |
JP2014533382A (ja) | グラフィックス処理ユニットにおけるレンダリングモード選択 | |
CN104050634B (zh) | 丢弃过滤器抽头的纹理地址模式 | |
CN112245926B (zh) | 虚拟地形的渲染方法、装置、设备及介质 | |
CN108830923B (zh) | 图像渲染方法、装置及存储介质 | |
CN111445563B (zh) | 一种图像生成的方法以及相关装置 | |
CN105550973B (zh) | 图形处理单元、图形处理系统及抗锯齿处理方法 | |
CN104756150A (zh) | 深度缓冲 | |
US20240257436A1 (en) | Image rendering method and apparatus, electronic device, and storage medium | |
CN112884874A (zh) | 在虚拟模型上贴花的方法、装置、设备及介质 | |
CN116206041A (zh) | 一种渲染方法及其相关设备 | |
CN117218273A (zh) | 图像渲染方法以及装置 | |
US20240153051A1 (en) | Tone mapping method and apparatus for panoramic image | |
CN114511438A (zh) | 一种控制负载的方法、装置及设备 | |
CN116672706B (zh) | 光照渲染方法、装置、终端和存储介质 | |
CN118537467A (zh) | 渲染方法和电子设备 | |
CN116934932A (zh) | 图像渲染方法、装置、电子设备及计算机可读存储介质 | |
CN117670651A (zh) | 一种图形泛光效果的处理方法、装置以及存储介质 | |
CN116993889A (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 |