纹理处理方法和装置制造方法及图纸

技术编号:18785293 阅读:186 留言:0更新日期:2018-08-29 07:31
本发明专利技术涉及图像处理领域,公开了一种纹理处理方法和装置,其方法包括以下步骤:获取项目中所有纹理的获取步骤;设置压缩参数,从所有纹理中挑选出需要进行压缩处理的待处理纹理的挑选步骤;根据压缩参数,判断每个待处理纹理是否需要分离alpha信息,对于不需要分离alpha信息的每个待处理纹理,进行自适应纹理压缩,对于需要分离alpha信息的每个待处理纹理,生成包含了alpha信息的对应的alpha纹理之后再进行纹理压缩的压缩步骤;以及将压缩步骤所得到的所有纹理进行打包的打包步骤。通过判断每个待处理纹理是否需要分离alpha信息来进行对应的压缩处理,从而无论是哪个平台下都可定制纹理压缩方案,提高了纹理压缩效率,节约了开发成本。

【技术实现步骤摘要】
纹理处理方法和装置
本专利技术涉及图像处理领域,特别涉及一种纹理处理方法和装置。
技术介绍
在图像处理的3D渲染中,一般都会通过大量应用大纹理来提升表现力,但精细的纹理也相应带来大的内存开销。目前纹理的常用格式主要有bmp,tga,png,jpg,dds,tif,gif,exr等等,这些数据需要通过CPU软解压成相应的像素格式(如A8R8G8B8),转送到GPU端来进行使用。一张1024*1024大小的A8R8G8B8纹理格式,一般需要4M容量(设置Mipmap,会增加33%大小)。Mipmap是在三维图形的贴图渲染中的一个常用的技术,为了加快渲染速度和减少图像锯齿,贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为Mipmap。Mipmap需要占用一定的内存空间,同时也遵循小波压缩规则。为了丰富3D模型表现,同时保证最小失真,压缩纹理格式应运而生。基于OpenglES的压缩纹理格式主要有ETC1和PVRTC,分别为安卓设备和ios设备所支持,由于ETC1压缩纹理不支持alpha通道,这给压缩纹理的使用带来很大的麻烦。对于这个技术问题,现有的解决方案主要有:(1).对于一些小规模应用,因为本身对内存要求就不高,所以无需处理。(2).对于一些中等或大规模的应用,为了展现丰富的画面,会大量的使用高精度的纹理.在这种情况,有些应用会选择性的对不带alpha通道的纹理,即不透明纹理,进行压缩,但对透明的纹理就无能为力。下面对仅处理不透明纹理,忽略对透明纹理的处理进行说明。在应用中,往往包含大量的透明纹理,因为如果不使用透明纹理的话,意味着,美术要做更多的工作。按3d渲染的纹理混合方式分,1)AlphaTest一个模型mesh(比如铁丝网),用alphatest混合方式,一张纹理(texture)和一个四边形模型网格(mesh)就可以实现.镂空和铁丝部分用不同的alpha值标识出来,如果不使用alpha通道,那么美术需要认真勾边,需要对铁丝建模,这显然没必要的。2)AlphaBlend模型网格Mesh的一小部分或整体,需要和背景去混合,比如一块毛玻璃,本专利技术人眼可以看到其背后的模糊的物体,就是相当于毛玻璃和后面物体产生混合后的效果。常用的混合效果是blendsrcAlpha1-scrAlpha,即如果毛玻璃a=0.3,颜色是(r,g,b),背景颜色是(r’,g’,b’),则最终颜色是(r,g,b)*0.3+(r’,g’,b’)*(1–0.3)。而美术建模时,是没办法对这种透明效果进行建模的。(3).同上,但对透明的纹理进行处理,通过修改着色器(shader),将一张RGBA(透明纹理),分离出RGB纹理和Alpha纹理.处理时,对两张图进行采样,从而得到原透明纹理的所有信息。着色器又叫shader,指一组供计算机图形资源在执行渲染任务时使用的指令,用于计算图像的颜色或明暗。下面对支持考虑了透明纹理的处理进行说明,现有的方法中,主要的做法是:RGB和alpha纹理分离处理,然后安卓和ios设备都使用相同策略,该方法下,ios设备内存开销增加一倍。RGB和alpha分离,分离出的RGB是以png格式保存的。这里所存在的问题在于,其一,png格式有其局限性。在3D渲染的实践中,进行混合测试中发现,对于blendsrcAlpha,One的模式下,png和tga在应用纹理压缩后,差异不大,但对于之外的混合方式,tga得到最终效果要远好于png纹理。比如,应用中如果运用了相当部分的粒子效果,使用alphablend模式的粒子shader,使用png来压缩,最终会明显降低画面表现。其二,由于分离出的alpha纹理以固定的纹理格式保存,客观上限定了纹理的命名规则。同一目录文件下,如果存在T.png和T.tga,那么分离出的alpha纹理,最终只存在一张T_Alpha.png。客观上造成T.png和T.tga有一张alpha纹理被覆盖,必然造成渲染错误。如果项目处于开发中后期,要修正这个问题,可能最容易想到的处理方案,是去改名,但这种代价是很大的,因为纹理的加载不仅仅是静态加载的,也可能是通过动态加载的。这种RGB和alpha分离,其采样方法的修改大致如下:由于该方法在修改时,是对纹理采样分成2次来做,这意味着对于复杂的shader,在做这样的修改时,需要去主动解读shader,进行拆解,以完对该纹理的正确采样。比如:half4c=lerp(tex2D(diffuseTex,uv),half4(0.3,0.5,0.2,1.0),0.3)*_TintColor;最后,现有技术下,遇到无法解决的渲染错误,事实上会导致shader数量的增加.比如一份A.shader是对RGB纹理采用且对alpha纹理采样并取alpha信息,另一份相同功能的A_1.shader是因为RGBA纹理不压缩纹理,这是很常见的,比如某纹理X在应用时可以采用RGB和A分离技术,这时会使用A.shader,如果有纹理Y用作RTT等渲染技术,这时就会用回A_1.shader,其纹理将不进行压缩。所以这种情况下,会对shader的使用带来一定的混乱,更重要的是,过多的shader执行对应用整体的渲染效率带来负面影响。在现有技术方案中,由于增加了不必要的I/O操作,同时容错性差,也无法进行试错,加大流水线操作难度。在安卓下,由于RGBA被分离成RGB和Alpha,然后压缩处理,此时shader是读取两张纹理来进行采样的。如果ios或其它平台使用支持alpha通道的压缩方式,可能有两种解决方法:第一种方法,需要进行纹理合成,同时修改shader。这种方式下首先RGB和A合并为RGBA,同时需要删除Alpha操作,且操作严格按照次序,容错性差;另外如果想查看支持Alpha通道的压缩纹理的效果,无法实现,因为Alpha被分离出去了。第二种方法,分别维护两个工程,代价更大,需要处理好同步问题,维护麻烦。在纹理压缩之后,后续也存在着一些问题,在应用的后期开发过程中,UI界面改动很频繁,当一张纹理贴图集(纹理atlas)压缩为ETC1格式后,其alpha信息丢失了,以后更新或是增加其它图标后,生成的纹理atlas不正确,Unity的atlas生成工具主要有Ngui和ugui,后者是引擎接管该工作,通过程序给纹理带上标识,然后自动生成纹理atlas。其他第3方工具,如texturepack,因为资源更新没有和引擎结合起来,操作自然麻烦些。tga文件的压缩后,在用于alpha混合时,效果好过png格式,也需要有相应的工具来完成批量替换,让材质球指向替换后的tga纹理。这些解决方案都存在着巨大的问题,只能对部分纹理做些局部应用。一方面由于没做全盘考量,无法形成流水性操作,只能进行固化操作,对压缩方案也没有可选择性;另一方面因为没有考虑到纹理压缩对应用开发的影响,对于应用纹理压缩后,常规技术失效(比如RTT,rendertotexture,渲染到纹理技术),以及渲染出错,这就极大限制了纹理压缩的使用,最后,由于不正确的处理方法,也会给纹理管理带来很大的混乱。
技术实现思路
本专利技术的目的在于提供纹理处理方法和装置,通过判断每个待处理纹理是否需要分离alpha信息来本文档来自技高网
...

【技术保护点】
1.一种纹理处理方法,其特征在于,包括以下步骤:获取项目中所有纹理的获取步骤;设置压缩参数,从所有纹理中挑选出需要进行压缩处理的待处理纹理的挑选步骤;根据压缩参数,判断每个待处理纹理是否需要分离alpha信息,对于不需要分离alpha信息的每个待处理纹理,进行自适应纹理压缩,对于需要分离alpha信息的每个待处理纹理,生成包含了alpha信息的对应的alpha纹理之后再进行纹理压缩的压缩步骤;以及将压缩步骤所得到的所有纹理进行打包的打包步骤。

【技术特征摘要】
1.一种纹理处理方法,其特征在于,包括以下步骤:获取项目中所有纹理的获取步骤;设置压缩参数,从所有纹理中挑选出需要进行压缩处理的待处理纹理的挑选步骤;根据压缩参数,判断每个待处理纹理是否需要分离alpha信息,对于不需要分离alpha信息的每个待处理纹理,进行自适应纹理压缩,对于需要分离alpha信息的每个待处理纹理,生成包含了alpha信息的对应的alpha纹理之后再进行纹理压缩的压缩步骤;以及将压缩步骤所得到的所有纹理进行打包的打包步骤。2.如权利要求1所述的纹理处理方法,其特征在于,在各运行平台都进行压缩步骤,在打包步骤之前,纹理处理方法还包括对压缩步骤所得到的所有纹理进行检测的检测步骤,该检测步骤包括以下子步骤:遍历每个被压缩后的纹理;搜索包含了alpha信息的alpha纹理;搜索与每个alpha纹理对应的待处理纹理;查看与每个alpha纹理对应的待处理纹理的赋值是否正确;查看是否存在未被压缩的纹理;根据打包的运行平台删除多余的alpha纹理;以及统计所有出错信息。3.如权利要求1所述的纹理处理方法,其特征在于,在挑选步骤中,不将有特定画质要求的纹理选为待处理纹理。4.如权利要求1所述的纹理处理方法,其特征在于,在挑选步骤中,不将涉及渐变效果的纹理选为待处理纹...

【专利技术属性】
技术研发人员:杨志敏
申请(专利权)人:上海银河数娱网络科技有限公司
类型:发明
国别省市:上海,31

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

1