一种GPU压缩纹理处理方法与流程

文档序号:21444347发布日期:2020-07-10 17:33阅读:486来源:国知局
一种GPU压缩纹理处理方法与流程

本发明涉及图形处理相关技术领域,尤其是指一种gpu压缩纹理处理方法。



背景技术:

在计算机图形学中,纹理是通常指的是应用于物件表面材质或者绘制于画面上的图片资源,纹理贴图将图片资源按照特定的方式映射到物体表面,增强物体的真实感和视觉效果,是计算机图形学的基础技术之一,在图形渲染领域有着广泛应用。

因传统的图像压缩格式(jpg/png/webp)具有较高的压缩比和压缩质量,故纹理素材资源大多使用其进行文件存储和网络传输。虽然使用传统的图像压缩格式所需的存储和传输成本低,但因其解码算法计算复杂度高,无法满足纹理随机访问等gpu硬件需求,在应用纹理贴图前需要利用cpu进行解码再上传到gpu中,带宽和显存占用高。

为了尽可能节省带宽和计算资源,现代gpu支持压缩纹理方式,以满足大量纹理素材资源的游戏等交互式应用的需求。gpu压缩纹理格式(dxt/pvrtc/etc/astc等)使用固定比特率的压缩算法处理纹理图片,以降低硬件解码算法的复杂度和满足纹理随机访问需求,但文件存储和网络传输成本高。

为了平衡纹理素材的文件存储和所需的cpu/gpu计算资源,素材设计师和程序开发人员经常需要投入大量的时间和成本,按照不同应用和产品的具体需求进行调整。在移动互联盛行的时代,设备的品种丰富多样,cpu/gpu资源和计算能力相对有限,如何平衡纹理资源变成了一大难点和研究热点。



技术实现要素:

本发明是为了克服现有技术中存在上述的不足,提供了一种有效平衡纹理资源的gpu压缩纹理处理方法。

为了实现上述目的,本发明采用以下技术方案:

一种gpu压缩纹理处理方法,具体包括如下步骤:

(1)根据需要选择使用合适的gpu硬件压缩纹理生成方法处理贴图素材,生成gpu硬件压缩纹理资源文件;

(2)参考矢量量化方法,重新计算数据块的图像像素索引;

(3)组合全部数据块中的端点颜色值构成原始纹理图像的低分辨率表示,然后应用ycocg颜色空间变化解耦空间邻近rgb颜色值,对变换后的图像数据进行离散小波变换,修改数据概率分布曲线,为熵编码做准备;

(4)利用非对称数字系统方法进行熵编码,并交织熵编码结果数据,去除数据冗余度,生成gpu压缩纹理数据文件;

(5)利用gpu高效流水线和大规模数据处理能力,通过自定义解码处理过程,将纹理解码成硬件支持的压缩纹理格式对应的显存数据,满足纹理贴图需求。

gpu压缩纹理处理方法对dxt/3dc/atc/pvrtc/etc/astc等gpu压缩纹理资源进一步编码,使用类似矢量量化的方法处理数据块,通过控制均方误差重新计算像素调色盘索引,然后借鉴差分编码思想,去除空间冗余度并生成像素调色盘索引字典,对全部数据块中的像素进行ycocg变换和离散小波压缩,进一步去除数据冗余度,最后基于非对称数字系统的有限状态熵编码方法处理并交织数据流,生成高效压缩纹理资源。其中:采用非对称数字系统(asymmetricnumeralsystems,ans)的有限状态(finitestateentropy,fse)熵编码方法,对gpu压缩纹理资源进一步编码处理,逼近理论水平的香农信息熵,极大地降低压缩纹理资源的存储尺寸,获得接近传统图像压缩格式的压缩比;结合gpu强大的并行计算能力和硬件架构,编码时交织多个压缩数据流,支持多个压缩纹理数据块的并发解码,可充分利用gpu单指令多数据处理架构,有效降低数据冗余度并大大提高解码性能和加载效率;充分利用现代gpu硬件解码特性,在gpu中将素材资源解码为硬件所支持的压缩纹理格式,不但极大地降低了显存占用,同时可利用gpu高效的大规模数据处理能力,大大提高了素材资源的加载速度,有效降低cpu负载;支持单张纹理图片压缩和序列帧及视频纹理压缩,有效去除纹理素材资源的时间和空间冗余度,不仅大幅度降低了存储和网络传输成本,同时提高了素材资源的加载和解码速度,很好地解决了存储空间和解码效率矛盾;兼容主流的各种gpu压缩格式dxt/pvrtc/etc/astc,解决不同硬件平台压缩格式不一致的问题,降低开发成本。

作为优选,在步骤(1)中,具体操作方法为:根据需要选择选取合适的gpu硬件压缩纹理生成方法,对贴图纹理图片进行转码和压缩处理,根据处理纹理图片特点和功能要求,控制图片压缩质量,生成gpu硬件直接支持的压缩纹理格式资源文件;其中:gpu硬件压缩纹理生成方法指的是根据目标硬件gpu压缩纹理格式,选取特定的编码器。

作为优选,在步骤(2)中,具体操作方法为:对硬件压缩纹理数据块中的像素索引进行有损量化处理,选择和控制数据块的整体均方误差,重新计算数据块的图像像素索引值,按照逐行遍历方式逐行遍历像素索引并构建调色盘索引字典,确保整体压缩质量损失在给定的范围内;其中:gpu硬件纹理压缩方法使用分块方法处理素材图片,硬件压缩纹理数据块是所生成的压缩资源文件的数据组成部分。

作为优选,在步骤(2)中,以nxm数据块为例,其内部包含nxm个索引及两个端点颜色值ca和cb作为rgb索引调色盘,使用二进制位数b进行存储像素索引值,那么量化后的第i个像素颜色值ci按如下公式进行计算,

数据块的整体均方误差则按如下计算,

e=∑||ci-cx||

其中:cx表示压缩前图像的颜色像素值。

作为优选,构建调色盘索引字典具体为:按照逐行遍历方式逐行遍历并按照计算像素颜色值的公式计算mxn数据块的像素索引值,若字典中已存在相同的索引值,则将其作为该像素的调色索引值;反之,若字典中不存在相同的索引值,在字典中搜寻整体均方误差在给定的范围内的邻近的调色索引值,若找到,则将邻近值作为该像素的调色索引;反之,则将该索引值添加到字典中。

作为优选,在步骤(3)中,具体操作方法为:组合硬件压缩纹理图像的数据块中的端点颜色值,构成原始纹理图像的低分辨率表示,应用无损的ycocg颜色空间变换,解耦空间邻近rgb颜色值,对变换后的y通道和cocg通道图像数据进行离散小波变换和滤波处理,修改数据概率分布曲线,为熵编码做准备。

作为优选,在步骤(4)中,具体操作方法为:基于非对称数字系统的有限状态熵编码方法,对数据块像素调色盘索引字典和离散小波变换后的数据分别进行编码处理,去除数据冗余度,同时交织熵编码结果数据,为gpu并行解码做准备,存储交织结果以生成gpu压缩纹理数据文件。

作为优选,在步骤(4)中,对于动图纹理素材资源,借鉴视频编码思想,使用帧内/帧间编码和前向预测方式去除时域的信息冗余度。

作为优选,在步骤(5)中,具体操作方法为:利用gpu大规模数据平行处理能力,通过自定义处理过程着色器,反交织压缩数据流并同时解码,在显存中重新生成硬件支持的压缩纹理格式资源,对应gpu硬件压缩纹理资源应用纹理贴图方法,增强物体的真实感和视觉效果。

本发明的有益效果是:极大地降低压缩纹理资源的存储尺寸,获得接近传统图像压缩格式的压缩比;有效降低数据冗余度并大大提高解码性能和加载效率;不但极大地降低了显存占用,同时可利用gpu高效的大规模数据处理能力,大大提高了素材资源的加载速度,有效降低cpu负载;有效去除纹理素材资源的时间和空间冗余度,不仅大幅度降低了存储和网络传输成本,同时提高了素材资源的加载和解码速度,很好地解决了存储空间和解码效率矛盾;解决不同硬件平台压缩格式不一致的问题,降低开发成本。

附图说明

图1是本发明的方法流程图。

具体实施方式

下面结合附图和具体实施方式对本发明做进一步的描述。

该gpu压缩纹理处理方法利用现代图形处理器可编程管线的特点和强大的并行数据处理能力,在gpu中将纹理素材解码成gpu硬件支持的压缩纹理格式,大大提高了算法的处理效率,极大地减少cpu计算量和运算负载,可在移动设备中实时处理。

为了极大化渲染效率和最大化纹理解码算法的通用性,首先会根据具体gpu的能力和不同操作系统,选择最优gpu编程语言。在微软windows系统中使用direct3d/vulkan/cuda/opencl,在linux系统中使用vulkan/opengl/opencl/cuda,在谷歌android系统中使用vulkan/opengles,而在苹果ios和macosx系统中则使用metal/opengl/opengles/opencl,然后使用相应的gpu着色器编程语言具体实现纹理解码的具体数据处理过程。

如图1所述的实施例中,一种gpu压缩纹理处理方法,具体包括如下步骤:

(1)根据需要选择使用合适的gpu硬件压缩纹理生成方法处理图像、序列帧和视频等各种贴图素材,生成gpu硬件压缩纹理资源文件;具体操作方法为:根据需要选择选取合适的gpu硬件压缩纹理生成方法,对贴图纹理图片进行转码和压缩处理,根据处理纹理图片特点和功能要求,控制图片压缩质量,生成gpu硬件直接支持的压缩纹理格式资源文件;其中:gpu硬件压缩纹理生成方法指的是根据目标硬件gpu压缩纹理格式,选取特定的编码器。若目标压缩纹理格式为dxt,则选择dxt编码算法处理原始素材图片/视频,其他格式亦然。

(2)参考矢量量化方法,重新计算数据块的图像像素索引;具体操作方法为:对硬件压缩纹理数据块中的像素索引进行有损量化处理,选择和控制数据块的整体均方误差,重新计算数据块的图像像素索引值,按照逐行遍历方式逐行遍历像素索引并构建调色盘索引字典,确保整体压缩质量损失在给定的范围内;其中:gpu硬件纹理压缩方法使用分块方法处理素材图片,硬件压缩纹理数据块是所生成的压缩资源文件的数据组成部分。以nxm数据块为例,其内部包含nxm个索引及两个端点颜色值ca和cb作为rgb索引调色盘,使用二进制位数b进行存储像素索引值,那么量化后的第i个像素颜色值ci按如下公式进行计算,

数据块的整体均方误差则按如下计算,

e=∑||ci-cx||

其中:cx表示压缩前图像的颜色像素值。

构建调色盘索引字典具体为:按照逐行遍历方式逐行遍历并按照计算像素颜色值的公式计算mxn数据块的像素索引值,若字典中已存在相同的索引值,则将其作为该像素的调色索引值;反之,若字典中不存在相同的索引值,在字典中搜寻整体均方误差在给定的范围内的邻近的调色索引值,若找到,则将邻近值作为该像素的调色索引;反之,则将该索引值添加到字典中。

(3)组合全部数据块中的端点颜色值构成原始纹理图像的低分辨率表示,然后应用ycocg颜色空间变化解耦空间邻近rgb颜色值,对变换后的图像数据进行离散小波变换,修改数据概率分布曲线,为熵编码做准备;具体操作方法为:组合硬件压缩纹理图像的数据块中的端点颜色值,构成原始纹理图像的低分辨率表示,应用无损的ycocg颜色空间变换,解耦空间邻近rgb颜色值,对变换后的y通道和cocg通道图像数据进行离散小波变换和滤波处理,修改数据概率分布曲线,为熵编码做准备。

(4)利用非对称数字系统方法进行熵编码,并交织熵编码结果数据,去除数据冗余度,生成gpu压缩纹理数据文件;具体操作方法为:基于非对称数字系统的有限状态熵编码方法,对数据块像素调色盘索引字典和离散小波变换后的数据分别进行编码处理,去除数据冗余度,同时交织熵编码结果数据,为gpu并行解码做准备,存储交织结果以生成gpu压缩纹理数据文件。对于序列帧和视频等动图纹理素材资源,借鉴视频编码思想,使用帧内/帧间编码和前向预测等方式去除时域的信息冗余度。

(5)利用gpu高效流水线和大规模数据处理能力,通过自定义解码处理过程,将纹理解码成硬件支持的压缩纹理格式对应的显存数据,满足纹理贴图需求;具体操作方法为:利用gpu大规模数据平行处理能力,通过自定义处理过程着色器,反交织压缩数据流并同时解码,在显存中重新生成硬件支持的压缩纹理格式资源,对应gpu硬件压缩纹理资源应用纹理贴图方法,增强物体的真实感和视觉效果。

gpu压缩纹理处理方法对dxt/3dc/atc/pvrtc/etc/astc等gpu压缩纹理资源进一步编码,使用类似矢量量化的方法处理数据块,通过控制均方误差重新计算像素调色盘索引,然后借鉴差分编码思想,去除空间冗余度并生成像素调色盘索引字典,对全部数据块中的像素进行ycocg变换和离散小波压缩,进一步去除数据冗余度,最后基于非对称数字系统的有限状态熵编码方法处理并交织数据流,生成高效压缩纹理资源。采用非对称数字系统(asymmetricnumeralsystems,ans)的有限状态(finitestateentropy,fse)熵编码方法,对gpu压缩纹理资源进一步编码处理,逼近理论水平的香农信息熵,极大地降低压缩纹理资源的存储尺寸,获得接近传统图像压缩格式的压缩比;结合gpu强大的并行计算能力和硬件架构,编码时交织多个压缩数据流,支持多个压缩纹理数据块的并发解码,可充分利用gpu单指令多数据处理架构,有效降低数据冗余度并大大提高解码性能和加载效率;充分利用现代gpu硬件解码特性,在gpu中将素材资源解码为硬件所支持的压缩纹理格式,不但极大地降低了显存占用,同时可利用gpu高效的大规模数据处理能力,大大提高了素材资源的加载速度,有效降低cpu负载;支持单张纹理图片压缩和序列帧及视频纹理压缩,有效去除纹理素材资源的时间和空间冗余度,不仅大幅度降低了存储和网络传输成本,同时提高了素材资源的加载和解码速度,很好地解决了存储空间和解码效率矛盾;兼容主流的各种gpu压缩格式dxt/pvrtc/etc/astc,解决不同硬件平台压缩格式不一致的问题,降低开发成本。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1