一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种硬件实现细节级别渐变精度优化的方法与流程

2022-04-30 17:37:11 来源:中国专利 TAG:


1.本发明涉及图形处理技术领域,特别涉及一种硬件实现细节级别渐变精度优化的方法。


背景技术:

2.多层级纹理细节lod(level of details),纹理单元通过该参数确定使用哪一个级别的贴图细化(mipmap)。应用场景为根据摄像机离对象的远近,切换不同细节级别的对象,使近处的对象细节丰富,远处的对象忽略很多细节,从而减少渲染计算,提高流畅度。
3.在opengl中,计算lod值公式如式1所示,下文用真实lod值代指公式1的lod值计算结果。
[0004][0005]
但是这种计算方法对于硬件来说开销非常大,因此通常硬件会采用式2进行lod值的计算,下文以硬件计算lod值代指公式2的计算结果。
[0006][0007]
显然式1与式2的计算结果之间存在一定的误差。当du与dv较为接近时,式2的绝对误差最大可达0.5。


技术实现要素:

[0008]
本发明提供一种硬件实现细节级别渐变精度优化的方法,旨在解决现有算法对lod值计算结果误差较大的问题。
[0009]
本发明提供一种硬件实现细节级别渐变精度优化的方法,包括以下步骤:
[0010]
s1.在opengl中,指定所需要的贴图对象,并指定贴图对象所需使用的多个顶点坐标(x,y)和多个顶点之间的纹理坐标(u,v);
[0011]
s2.对多个顶点坐标内,两两顶点坐标的差值取绝对值并求和运算得到dx和dy;
[0012]
s3.对多个纹理坐标内,两两纹理坐标的差值取绝对值并求和运算得到du和dv;
[0013]
s4.通过dx、dy、du、dv进行加法、乘法、对数、比较运算的到lod值:
[0014][0015]
s5.根据公式3得到的计算lod值确定贴图细化的纹理级别。
[0016]
作为本发明的进一步改进,所述步骤s5具体为:将公式3得到的计算lod值向零取整得到整数lod值进行使用。
[0017]
作为本发明的进一步改进,所述步骤s2中,dx的取值定义为:
[0018]
dx=|x
0-x1| |x
1-x2| |x
2-x0|;
[0019]
dy的取值定义为:
[0020]
dy=|y
0-y1| |y
1-y2| |y
2-y0|;
[0021]
其中x0~x2、y0~y2为三个顶点坐标的坐标值。
[0022]
作为本发明的进一步改进,所述步骤s3中,所述步骤s3中,du的取值定义为:
[0023]
du=|u
0-u1| |u
1-u2| |u
2-u0|;
[0024]
dv的取值定义为:
[0025]
dv=|v
0-v1| |v
1-v2| |v
2-v0|;
[0026]
其中u0~u3、v0~v3为三个纹理坐标的坐标值。
[0027]
本发明的有益效果是:通过增加一个加法运算,一个乘法运算和一个比较运算,使计算得到的lod值更接近真实lod值。计算得到的lod值精度提高,贴图细化(mipmap)功能获取的纹理级别更加精准。
附图说明
[0028]
图1是本发明硬件计算lod值公式2与真实lod值的对比图;
[0029]
图2是本发明公式4计算lod值与真实lod值的对比图;
[0030]
图3是本发明公式3计算lod值与真实lod值的对比图。
具体实施方式
[0031]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。
[0032]
本发明的一种硬件实现细节级别渐变精度优化的方法,其特征在于,包括以下步骤:
[0033]
s1.在opengl中,指定所需要的贴图对象,并指定贴图对象所需使用的多个顶点坐标(x,y)和多个顶点之间的纹理坐标(u,v);
[0034]
s2.对多个顶点坐标内,两两顶点坐标的差值取绝对值并求和运算得到dx和dy;
[0035]
s3.对多个纹理坐标内,两两纹理坐标的差值取绝对值并求和运算得到du和dv;
[0036]
s4.通过dx、dy、du、dv进行加法、乘法、比较运算的到lod值:
[0037][0038]
s5.根据公式3得到的计算lod值确定贴图细化的纹理级别。具体的,将公式3得到的计算lod值向零取整得到整数lod值进行使用。
[0039]
其中,步骤s2中,dx的取值定义为:
[0040]
dx=|x
0-x1| |x
1-x2| |x
2-x0|;
[0041]
dy的取值定义为:
[0042]
dy=|y
0-y1| |y
1-y2| |y
2-y0|;
[0043]
其中x0~x2、y0~y2为三个顶点坐标的坐标值。
[0044]
步骤s3中,du的取值定义为:
[0045]
du=|u
0-u1| |u
1-u2| |u
2-u0|;
[0046]
dv的取值定义为:
[0047]
dv=|v
0-v1| |v
1-v2| |v
2-v0|;
[0048]
其中u0~u3、v0~v3为三个纹理坐标的坐标值。
[0049]
本发明是基于硬件算法实现的细节层次精度优化,对现有硬件计算公式2进行优化,通过增加一个加法运算,一个乘法运算和一个比较运算,如公式3,使计算得到的lod值更接近式1的计算结果。
[0050]
如图1所示,对于硬件计算公式2,du与dv差值较大时,硬件计算lod值对真实lod值的拟合效果较好;du与dv较为接近时,硬件计算lod值对真实lod值的拟合效果较差。
[0051]
因此,如图2所示,使用公式4对真实lod值进行拟合。
[0052][0053]
其中,是对的拟合,两者之间最大的相差项为因此需要式4第二项作为拟合误差补正。则当du与dv差值较大时,式4对真实lod值的拟合效果较差;du与dv较为接近时,硬件计算lod值对真实lod值的拟合效果较好。
[0054]
如图3所示,综合两个公式的优点,选取式2和式4中结果值较大者作为最终lod值,最终得到优化公式3的运算过程。
[0055]
下面以具体的参数值对优化效果进行验证。
[0056]
将一张宽高为800x600的纹理贴到三角形上,使用一组常见的顶点坐标和纹理坐标,见式5。
[0057][0058]
通过变换三角形角度,得到的一组lod值计算结果对比如下:
[0059][0060]
对于式5这组纹理坐标,du与dv相等,此时硬件算法公式2与opengl算法得出的真实值具有稳定误差0.5。
[0061]
由于贴图细化(mipmap)在实际使用lod值时是将公式计算得到的lod值向零取整得到整数lod值再进行使用。因此使用失误率作为算法比较的标准,算法与opengl算法分别向零取整后得到的lod值不相同算作一次失误。与硬件算法(式2)实现相比,优化后的算法(式3)结果与opengl的实现算法(式1)由失误率25.87%降低到失误率5.73%,精度得到了提升。
[0062]
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献