发明内容
为了提高纹理映射的效率,避免对数运算及倒数运算,减少浮点运算次数, 以实现上述发明目的,本发明提供了如下技术方案:
一种纹理细节级别的获取方法,包括如下步骤:
S1、判断纹理空间实际坐标的第一个分量针对屏幕空间特定方向的求导值 A是否大于或等于纹理空间的实际坐标的第二个分量针对屏幕空间特定方向的求导值B,如果A≥B,进入步骤S2;如果A<B,进入步骤S7;
S2、通过定点加法运算计算A的以2为底的对数值log2A;
S3、将纹理空间的实际坐标的第一个分量针对屏幕空间特定方向的求导值分为尾数A
man和指数A
exp,计算A
man的倒数
S4、将纹理空间的实际坐标的第二个分量针对屏幕空间特定方向的求导值分为尾数B
man和指数B
exp,基于定点乘法运算计算
的值;
S6、基于定点加法运算计算
的值,并右移1位获取屏幕空间特定方向的纹理细节级别的值,完成计算;
S7、通过定点加法运算计算B的以2为底的对数值log2B;
S8、将纹理空间的实际坐标的第二个分量针对屏幕空间特定方向的求导值分为尾数B
man和指数B
exp,计算B
man的倒数
并基于定点乘法运算计算
的值;
将纹理空间的实际坐标的第一个分量针对屏幕空间特定方向的求导值分为尾数Aman和指数Aexp;
S10、基于定点加法运算计算
的值,并右移1位获取屏幕空间特定方向的纹理细节级别的值,完成计算;
其中,以(x,y)表示屏幕空间的坐标,以(s,t)表示纹理空间的规范化坐标,以(u,v)表示纹理空间的实际坐标,以A表示
B表示
并分别用
及
表示,其中A
man及B
man的区间为[1.0,2.0);
及
分别用
及
表示,其中A
sman及A
tman的区间为[1.0,2.0)。
优选地,其中步骤S2包括:
S21:计算纹理图像的宽度的以2为底的对数值log2width;
S22、将纹理空间的规范化坐标的第一个分量针对屏幕空间特定方向的求导值分为尾数Asman和指数Asexp,计算Asman的以2为底的对数值log2(Asman);
S23、基于定点加法运算将步骤S21获得的log2width、步骤S22获得的 log2(Asman)及Asexp相加计算A的以2为底的对数值log2A;
其中,width为纹理图像的宽度。
优选地,步骤S7包括:
S71、计算纹理图像的高度的以2为底的对数值log2height;
S72、将纹理空间的规范化坐标的第二个分量针对屏幕空间特定方向的求导值分为尾数Atman和指数Atexp,计算Atman的以2为底的对数值log2(Atman);
S73、基于定点加法运算将步骤S71获得的log2height、步骤S72获得的 log2(Atman)及Atexp相加计算B的以2为底的对数值log2B;
其中,height为纹理图像的高度。
优选地,纹理细节级别的值为定点数,格式为SM.N,即包含M位整数位, N位小数位,S表示有符号数。
优选地,log2width的结果预先计算好,并以常数形式存储。
优选地,log2height的结果预先计算好,并以常数形式存储。
优选地,log2(Asman)的结果通过查表获取,该结果的格式为U0.(N+2),即整数为0,小数位数为(N+2)位,U表示无符号数,同时将Asman的精度截取到(N+2)位,以此作为查表的索引。
优选地,log2(Atman)的结果通过查表获取,该结果的格式为U0.(N+2),即整数为0,小数位数为(N+2)位,U表示无符号数,同时将Atman的精度截取到(N+2)位,以此作为查表的索引。
优选地,
及
的结果通过查表获取,该结果的格式为U0.(N+2),同时将A
man及B
man的精度截取到(N+2)位,以此作为查表的索引。
本发明一种纹理细节级别的获取装置,包括以下几个模块:
判断模块:用于判断纹理空间实际坐标的第一个分量针对屏幕空间特定方向的求导值A是否大于或等于纹理空间的实际坐标的第二个分量针对屏幕空间特定方向的求导值B,如果A≥B,则开始第一纹理细节级别计算模块;如果A<B,则开始进入第二纹理细节级别计算模块;
第一纹理细节级别计算模块:分别计算倒数
基于定点乘法运算计算
基于右移运算计算
的值,再计算
的值后,基于定点加法运算计算
的值,并右移1位获取屏幕空间特定方向的纹理细节级别的值,以完成计算;
第二纹理细节级别计算模块:分别计算倒数
基于定点乘法运算计算
基于右移运算计算
再计算
的值后,基于定点加法运算计算
的值,并右移1位获取屏幕空间特定方向的纹理细节级别的值,以完成计算;
其中,以(x,y)表示屏幕空间的坐标,以(s,t)表示纹理空间的规范化坐标,以(u,v)表示纹理空间的实际坐标,以A表示
B表示
并分别用
及
表示,其中A
man及B
man的区间为[1.0,2.0);
及
分别用
及
表示,其中A
sman及A
tman的区间为[1.0,2.0)。
本发明一种纹理细节级别的获取方法及获取装置,其优点是:本发明利用定点数运算及查找表技术,避免了对数运算及倒数运算,大大减少了浮点运算次数,能有效提高细分层级的计算效率。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
假设widths为屏幕的宽度,heights为屏幕的高度,width为纹理图像的宽度,height为纹理图像的高度。以(x,y)表示屏幕空间的坐标,x的取值范围为[0,widths),y的取值范围为[0,heights)。以(s,t)表示纹理空间的规范化坐标,s和t的取值范围均为[0.0,1.0)。以(u,v)表示纹理空间的实际坐标,u的取值范围为[0,width),v的取值范围为[0,height)。
如图1所示,示意了一个2x2的像素块,其中:
像素P0对应的屏幕空间坐标和纹理空间规范化坐标分别为(x0,y0)、(s0,t0);
像素P1对应的屏幕空间坐标和纹理空间规范化坐标分别为(x1,y0)、(s1,t0);
像素P2对应的屏幕空间坐标和纹理空间规范化坐标分别为(x0,y1)、(s0,t1);
像素P3对应的屏幕空间坐标和纹理空间规范化坐标为(x1,y1)、(s1,t1)。
对于二维纹理,LOD的计算公式为:
以A表示
B表示
基于LOD计算公式,通过一系列变换即可得到x方向的纹理细节级别LODx的计算方法:
如果A大于或等于B,
否则,
将LODx预先设置为1个定点数,格式为SM.N,即包含M位整数位,N位小数位,S表示有符号数。
及
均为单精度浮点数,依据单精度浮点数的标准,可以分别用
及
表示
及
其中,A
sman及A
tman的区间均为[1.0,2.0)。
LODx的获取流程如下(如图-3所示):
S1、判断纹理空间实际坐标的第一个分量针对屏幕空间特定方向的求导值 A是否大于或等于纹理空间的实际坐标的第二个分量针对屏幕空间特定方向的求导值B,如果A≥B,log2A的计算可进一步变换为log2A=log2width+Asexp+ log2(Asman)。
S2、计算log2width的值,其结果可以预先计算好,并以常数形式存储;
计算log2(Asman)的值,由于LODx的精度为N,Asman的精度可以截取为(N+2) 位,以此为索引查表获取log2(Asman)的值,该结果的格式为U0.(N+2),即整数为 0,小数位数为(N+2)位,U表示无符号数。
基于上述结果作一个定点加法即可完成log2A的计算。
其中,A与B均为单精度浮点数,可以分别用
及
表示,其中A
man及B
man的区间为[1.0,2.0)。如此,
的计算可进一步变换为
S3、计算
的值,由于LODx的精度为N,A
man的精度可以截取为(N+2)位,以此为索引查表获取
的值,该结果的格式为U0.(N+2),即整数为0,小数位数为(N+2)位,U表示无符号数;
S4、计算
的值,将B
man的精度截取到(N+2)位,将其与
作定点乘法,得到结果
将该结果的精度截取到(N+2)位;
S5、计算
的值,在
的基础上右移(A
exp-B
exp)位即可,将该结果的精度截取到(N+2)位;计算
的值,以前述结果为索引查表获取
的结果,该结果的格式为U0.(N+2);
如果A<B,log2B的计算可进一步变换为log2B=log2height+Atexp+log2(Atman);
S7、计算log2height的值,其结果可以预先计算好,并以常数形式存储;
计算log2(Atman)的值,由于LODx的精度为N,Atman的精度可以截取为(N+2) 位,以此为索引查表获取log2(Atman)的值,该结果的格式为U0.(N+2),即整数为 0,小数位数为(N+2)位,U表示无符号数;
基于上述结果作一个定点加法即可完成log2B的计算;
S8、计算
的值,由于LODx的精度为N,B
man的精度可以截取为(N+2)位,以此为索引查表获取
的值,该结果的格式为U0.(N+2),即整数为0,小数位数为(N+2)位,U表示无符号数;再将A
man的精度截取到(N+2)位,将其与
作定点乘法,得到结果
将该结果的精度截取到(N+2)位;
将纹理空间的实际坐标的第一个分量针对屏幕空间特定方向的求导 值分为尾数Aman和指数Aexp;
S9、计算
的值,在
的基础上右移(B
exp-A
exp)位即可,将该结果的精度截取到(N+2)位,以该结果作为索引查表获取
的结果,该结果的格式为U0.(N+2);
具体地,y方向的纹理细节级别LODy的计算方法与LODx类似,得出LODy 的结果后,将其与LODx作比较,选取较大的值作为最终的LOD值。
如图3所示为本实施例中计算过程示意图。
本发明提供的一种纹理细节级别的获取装置,包括以下几个模块:
判断模块:用于判断纹理空间实际坐标的第一个分量针对屏幕空间特定方向的求导值A是否大于或等于纹理空间的实际坐标的第二个分量针对屏幕空间特定方向的求导值B,如果A≥B,则开始第一纹理细节级别计算模块;如果A<B,则开始进入第二纹理细节级别计算模块;具体进行上述步骤S1的运算。
第一纹理细节级别计算模块:分别计算倒数
基于定点乘法运算计算
基于右移运算计算
的值,再计算
的值后,基于定点加法运算计算
的值,并右移1位获取屏幕空间特定方向的纹理细节级别的值,以完成计算;该模块具体施行上述实施例中步骤S2至步骤S6的运算过程。
第二纹理细节级别计算模块:分别计算倒数
基于定点乘法运算计算
基于右移运算计算
再计算
的值后,基于定点加法运算计算
的值,并右移1位获取屏幕空间特定方向的纹理细节级别的值,以完成计算。该模块具体施行上述实施例中步骤S7至步骤S10的运算过程。
其中,以(x,y)表示屏幕空间的坐标,以(s,t)表示纹理空间的规范化坐标,以(u,v)表示纹理空间的实际坐标,以A表示
B表示
并分别用
及
表示,其中A
man及B
man的区间为[1.0,2.0);
及
分别用
及
表示,其中A
sman及A
tman的区间为[1.0,2.0)。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。