一种基于IBL的兼容处理方法技术

技术编号:19636351 阅读:53 留言:0更新日期:2018-12-01 16:54
本发明专利技术公开了一种基于IBL的兼容处理方法,根据6个等级的粗糙程度生成6个等级的立方体图数据;将立方体图数据存放在6个立方体纹理中;计算粗糙度数值R(0到1之间)的IBL反射信息,依次对1至6号立方体纹理进行采样,采样值分别记为C0、C1、C2、C3、C4、C5,并存入到一个6个长度的数组中C数组;将R值乘以5得到R5,用R5进行取整运算得到R起始,用R起始加1得到R结束;用R起始作为下标取得C起始=C数组【R起始】,用R结束作为下标取得C结束=C数组【R结束】,计算差值比例值alpha=(R5‑R起始)/(R结束‑R起始);插值后的最终数据C=C起始*(1‑alpha)+C结束*alpha。本发明专利技术的方法能够在GPU不支持texturecubelod扩展的情况下来实现IBL技术的处理,极大的提高了3D图形渲染效果和通用性。

A Compatibility Processing Method Based on IBL

The invention discloses a compatible processing method based on IBL, which generates six levels of cube image data according to six levels of roughness, stores cube image data in six cube textures, calculates IBL reflection information of roughness value R (0-1), sampled cube texture 1-6 in turn, and divides the sampling value into points. Remember as C0, C1, C2, C3, C4, C5, and store them in a 6-length array of C arrays; multiply R value by 5 to get R5, use R5 for integer operation to get R start, use R start plus 1 to get R end; use R start as subscript to get C start = C array [R start], use R end as subscript to get C end = C array [R end] Calculate the difference ratio alpha= (R5 R start)/(R end R start); the final data after interpolation C = C start * (1 alpha) +C end * alpha. The method of the invention can realize the processing of IBL technology without supporting the extension of texturecubelod in GPU, and greatly improves the rendering effect and generality of 3D graphics.

【技术实现步骤摘要】
一种基于IBL的兼容处理方法
本专利技术涉及计算机图形
,更具体地说,涉及一种三维渲染中IBL在硬件不支持某种特性时的兼容处理方法。
技术介绍
(IBL)是一种3D渲染技术,它通过捕捉现实世界中的光影信息,并把这些光影信息保存在图片上,通常这个图片是一个由6个2维图片包围成的立方体,这个图片中通常储存着高动态的光影信息。几乎所有的现代渲染引擎都提供了基于图像的照明,在IBL技术中,当在一个视角来观察一个物体时,所渲染物体的粗糙度决定它所需要反射的入射光线的锥的范围,例如在一个绝对光滑的物体上所反射的入射光线应该是一条直线(入射锥趋近一条直线),当一个绝对粗糙的物体时,所反射的入射光线锥就会为一个半球椎体。所以越粗糙的物体需要采样的入射锥范围越大。为了提高运算效率,通常会根据粗糙度生成好很多等级的预处理立方体图,这样在实时运算过程中就不需要做锥采样(大量运算开销),但是粗糙度是可以无限细分的,通常为了速度与数据上的平衡,只对粗糙度分为6个等级来做预处理,并把这些图片以不同的mipmap等级存储在一个立方体纹理中,当一个粗糙度处于2个相邻等级之间时,gpu可以使用texturecubeLod的函数来在两个相邻的mipmap数据中进行线性差值,来取得当前粗糙度所对应的插之后近似的数据。但不是每个gpu都支持这个texturecubeLod扩展,或者是由于平台的原因导致不支持此扩展。那么对于任意粗糙度如何在不支持此扩展的情况下来实现IBL技术就成了一个关键问题。
技术实现思路
为了解决上述问题,本专利技术提供一种基于IBL的兼容处理方法,根据待处理物体的粗糙程度生成若干预处理立方体图,将粗糙度分为6个等级来做预处理,所述基于IBL的兼容处理方法包括如下步骤:S1、根据6个等级的粗糙程度生成6个等级的立方体图数据;S2、将6个等级的立方体图数据以mipmaplevel为0的方式分别存放在6个立方体纹理中;S3、计算粗糙度数值R(0到1之间)的IBL反射信息,依次对1至6号立方体纹理进行采样,采样值分别记为C0、C1、C2、C3、C4、C5,将该立方体纹理采样值存入到一个6个长度的数组中C数组;S4、将R值乘以5得到R5,用R5进行取整运算得到R起始,用R起始加1得到R结束;S5、用步骤S4中的R起始作为下标取得C起始=C数组【R起始】,用步骤S4中的R结束作为下标取得C结束=C数组【R结束】,计算差值比例值alpha=(R5-R起始)/(R结束-R起始);S6、用步骤S5中的差值比例alpha计算插值后的最终数据C,C=C起始*(1-alpha)+C结束*alpha;S7、重复步骤S3至S6,计算每一粗糙度数据的IBL反射信息,得到所有粗糙度数据对应的插值后的最终数据。本专利技术的基于IBL的兼容处理方法能够在GPU不支持texturecubelod扩展的情况下来实现IBL技术的处理,极大的提高了3D图形渲染效果和通用性。具体实施方式为了更好的理解本专利技术,下面详细介绍本专利技术。一种基于IBL的兼容处理方法,根据待处理物体的粗糙程度生成若干预处理立方体图,将粗糙度分为6个等级来做预处理,所述基于IBL的兼容处理方法包括如下步骤:S1、根据6个等级的粗糙程度生成6个等级的立方体图数据;S2、将6个等级的立方体图数据以mipmaplevel为0的方式分别存放在6个立方体纹理中;S3、计算粗糙度数值R(0到1之间)的IBL反射信息,依次对1至6号立方体纹理进行采样,采样值分别记为C0、C1、C2、C3、C4、C5,将该立方体纹理采样值存入到一个6个长度的数组中C数组;S4、将R值乘以5得到R5,用R5进行取整运算得到R起始,用R起始加1得到R结束;S5、用步骤S4中的R起始作为下标取得C起始=C数组【R起始】,用步骤S4中的R结束作为下标取得C结束=C数组【R结束】,计算差值比例值alpha=(R5-R起始)/(R结束-R起始);S6、用步骤S5中的差值比例alpha计算插值后的最终数据C,C=C起始*(1-alpha)+C结束*alpha;S7、重复步骤S3至S6,计算每一粗糙度数据的IBL反射信息,得到所有粗糙度数据对应的插值后的最终数据。本专利技术的基于IBL的兼容处理方法能够在GPU不支持texturecubelod扩展的情况下来实现IBL技术的处理,极大的提高了3D图形渲染效果和通用性。以上所述,仅为本专利技术较佳的具体实施方式,但本专利技术的保护范围并不局限于此,任何熟悉本
的技术人员在本专利技术披露的技术范围内,根据本专利技术的技术方案及其专利技术构思加以等同替换或改变,都应涵盖在本专利技术的保护范围之内。本文档来自技高网
...

【技术保护点】
1.一种基于IBL的兼容处理方法,根据待处理物体的粗糙程度生成若干预处理立方体图,将粗糙度分为6个等级来做预处理,其特征在于,所述基于IBL的兼容处理方法包括如下步骤:S1、根据6个等级的粗糙程度生成6个等级的立方体图数据;S2、将6个等级的立方体图数据以mipmap level为0的方式分别存放在6个立方体纹理中;S3、计算粗糙度数值R的IBL反射信息,依次对1至6号立方体纹理进行采样,采样值分别记为C0、C1、C2、C3、C4、C5,将该立方体纹理采样值存入到一个6个长度的数组中C数组;S4、将R值乘以5得到R5,用R5进行取整运算得到R起始,用R起始加1得到R结束;S5、用步骤S4中的R起始作为下标取得C起始=C数组【R起始】,用步骤S4中的R结束作为下标取得C结束=C数组【R结束】,计算差值比例值alpha=(R5‑R起始)/(R结束‑R起始);S6、用步骤S5中的差值比例alpha计算插值后的最终数据C,C=C起始*(1‑alpha)+C结束*alpha;S7、重复步骤S3至S6,计算每一粗糙度数据的IBL反射信息,得到所有粗糙度数据对应的插值后的最终数据。

【技术特征摘要】
1.一种基于IBL的兼容处理方法,根据待处理物体的粗糙程度生成若干预处理立方体图,将粗糙度分为6个等级来做预处理,其特征在于,所述基于IBL的兼容处理方法包括如下步骤:S1、根据6个等级的粗糙程度生成6个等级的立方体图数据;S2、将6个等级的立方体图数据以mipmaplevel为0的方式分别存放在6个立方体纹理中;S3、计算粗糙度数值R的IBL反射信息,依次对1至6号立方体纹理进行采样,采样值分别记为C0、C1、C2、C3、C4、C5,将该立方体纹理采样值存入到一个6个长度的数组中C数组;S4、将R值乘以5得到R5,用R5进行取整运算...

【专利技术属性】
技术研发人员:程正
申请(专利权)人:成都明镜视觉科技有限公司
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1