一种松散圆锥步进贴图预处理优化方法与流程

文档序号:15390031发布日期:2018-09-08 01:01阅读:402来源:国知局

本发明涉及图像处理技术领域,特别是涉及一种松散圆锥步进贴图预处理优化方法。



背景技术:

游戏业内常用的增加模型表面细节的方法为法线贴图。法线贴图通过预计算表面的法线信息来增加表面的明暗区别,从而达到了增加细节的目的。但是法线贴图没有考虑表面的遮挡关系,还原出来的凹凸效果与真实的凹凸表面有较大差异,特别是当视角与表面的夹角比较小的时候。浮雕映射(reliefmapping)有效的解决了法线贴图的缺点。浮雕映射是在高度图上进行光线追踪,从而实现了表面的遮挡关系。但是浮雕映射由于没有单个高度数据的有效遮挡数据,光线追踪时需要步进的次数较多,运行期效率较低。松散圆锥步进贴图有效的解决浮雕映射的效率问题。松散圆锥步进贴图通过预计算单个高度数据的遮挡范围,在运行时使用该数据进行加速,可以有效减少需要步进的次数。但是松散圆锥步进贴图需要预计算每一个高度数据的圆锥范围,其计算量非常大,1024*1024的高度数据,使用松散圆锥步进贴图原工具进行预计算需要超过30分钟,且随着贴图的增大,计算时间成指数增长。松散圆锥步进贴图的预计算时间过长,导致其几乎不可能用于实际生产环境中。原工具在进行松散圆锥步进贴图预计算时,需要将每一个纹素与贴图的所有其他纹素进行检查,并在两个纹素之间进行128次步进,计算符合要求时的tan值。tan值的计算方法为使用满足条件时的uv的距离除以深度得到tan值,最大不超过1.0。每一个纹素与贴图上所有的纹素进行检查以后确定一个最小的tan值,从而确定了一个安全的可步进圆锥。以1024*1024的贴图为例,需要进行(1024^4)*128=140737488355328次检查与计算,所需要的计算量是极其庞大的。原工具使用gpu进行预计算,每次drawcall时,让所有纹素与指定偏移的纹素进行检查,总共需要1024*1024次drawcall。因此,目前亟需要一种加速松散圆锥步进贴图预计算的优化方法。



技术实现要素:

为了解决现有技术存在的不足,本发明的目的在于提供一种松散圆锥步进贴图预处理优化方法,能够减少步进的次数,提高计算速度。

为实现上述目的,本发明提供的松散圆锥步进贴图预处理优化方法,包括以下步骤:

对贴图进行分块,建立分块列表;

将分块的起始uv偏移按序传入像素着色器中,使用for循环遍历分块纹素;

检查uv偏移绝对值;

确定当前纹素的tan值,并存入结果中。

进一步地,所述对贴图进行分块,建立分块列表的步骤,是将贴图按照16×16建立分块,使用环绕的方式对分块进行排列,建立分块列表。

进一步地,所述建立分块列表的步骤,是使用撞墙拐弯的方式生成分块列表。

进一步地,所述使用for循环遍历分块纹素,是将传入的uv偏移作为相对于本像素的偏移进行寻址。

进一步地,所述检查uv偏移绝对值的步骤,进一步包括:

在像素着色器中,首先采样出上一次drawcall得到的tan值,然后乘以深度得到上一次结果的uv的距离;

计算目标纹素与当前纹素的uv距离,并比对与上一次结果的uv的距离;

如果目标纹素与当前纹素的uv距离大于上一次结果的uv的距离,则不进行tan值的计算;

如果目标纹素与当前纹素的uv距离小于上一次结果的uv的距离,则计算tan值,并与由其他纹素计算出来的tan值进行比较,取较小值。

更进一步地,所述确定当前纹素的tan值,并存入结果中的步骤,进一步包括:如果计算出来的当前纹素的tan值大于上一次结果的tan值,则将上一次的tan值存入结果中。

本发明提供的松散圆锥步进贴图预处理优化方法,可以在保证结果与原工具一致的前提下,极大的减少需要进行的计算量,有效的减少松散圆锥步进贴图的预计算时间,从而使松散圆锥步进贴图可以用于实际生产环境中。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中:

图1为根据本发明的松散圆锥步进贴图预处理优化方法的流程图;

图2为根据本发明的松散圆锥步进贴图预处理优化方法的分块列表排列示意图。

具体实施方式

以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

图1为根据本发明的松散圆锥步进贴图预处理优化方法的流程图,下面将参考图1,对本发明的松散圆锥步进贴图预处理优化方法进行详细描述。

首先,在步骤101,建立16*16的分块列表,并将64*64个分块按序排列。图2为根据本发明的松散圆锥步进贴图预处理优化方法的分块列表排列示意图,如图2所示,建立16*16的分块列表,该分块列表使用环绕的方式排列(可以使用撞墙拐弯的方式来生成该分块列表)。分块的目的是为了减少drawcall的次数,经过分块以后,只需要64*64次drawcall。

在步骤102,将分块的起始uv偏移,按序传入像素着色器中,使用for循环一次性遍历16*16个纹素。在该步骤中,在像素着色器,需要将传入的uv偏移作为相对于本像素的偏移来寻址。

在步骤103,检查uv偏移绝对值。在该步骤中,检查目标纹素与当前纹素的uv偏移绝对值是否大于上一次结果的uv的距离。在像素着色器中,首先采样出上一次drawcall得到的tan值,然后乘以深度得到上一次结果的uv的距离;然后,计算目标纹素与当前纹素的uv距离,并比对与上一次结果的uv的距离;如果目标纹素与当前纹素的uv距离大于上一次结果的uv的距离,则不进行tan值的计算;

如果目标纹素与当前纹素的uv距离小于上一次结果的uv的距离,则计算tan值,并与由其他纹素计算出来的tan值进行比较,取较小值。

在步骤104,确定当前纹素的tan值,并存入结果中。在该步骤中,如果计算出来的当前纹素的tan值大于上一次结果的tan值,则将上一次的tan值存入结果中。

经过本发明上述步骤,可以在保证结果与松散圆锥步进贴图原工具一致的前提下,极大的减少需要进行的计算量。1024*1024的高度数据,使用松散圆锥步进贴图原工具进行预计算需要超过30分钟,而使用本发明提供的方法,只需要不超过3分钟即可预计算完毕,速度比原工具提升了一个量级以上。

本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。



技术特征:

技术总结
一种松散圆锥步进贴图预处理优化方法,包括以下步骤:对贴图进行分块,建立分块列表;将分块的起始UV偏移按序传入像素着色器中,使用for循环遍历分块纹素;检查UV偏移绝对值;确定当前纹素的tan值,并存入结果中。本发明提供的松散圆锥步进贴图预处理优化方法,可以在保证结果与原工具一致的前提下,极大的减少需要进行的计算量,有效的减少松散圆锥步进贴图的预计算时间,从而使松散圆锥步进贴图可以用于实际生产环境中。

技术研发人员:刘礼葵;朱博;柳尧顺;陆利民
受保护的技术使用者:苏州蜗牛数字科技股份有限公司
技术研发日:2018.03.07
技术公布日:2018.09.07
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1