MIP映射压缩的制作方法

文档序号:13558068阅读:448来源:国知局
MIP映射压缩的制作方法

背景

在3d计算机图形中,场景中包含的大部分信息被编码为3d几何体的表面属性。因此,为将该信息编码为位图的有效技术的纹理映射是渲染图像的过程的主要部分。纹理通常在渲染流水线中消耗大量带宽,并因此通常使用各种可用的硬件加速压缩方案的其中一个进行压缩。

直接从纹理中读取通常是不可能的,因为3d几何体的投影通常需要某种形式的重采样。包括一系列纹理的mip映射被用于通过允许离线执行该重采样的一些来提高渲染速度,其中每个纹理是给定基础纹理的逐渐降低的分辨率表示。这又通过促进相邻采样之间的参考位置来减少纹理读取的带宽。在图1中示出mip映射100的原理图。纹理101-106序列中的每个连续纹理是先前2d纹理的宽度和高度的一半(即分辨率的一半),并且结果可以被认为是仅具有最高分辨率的纹理的4/3个采样的三维金字塔结构。这些纹理101-106中的每一个可以被称为“mip映射级别”,并且每个都是相同基础纹理、但是以不同的分辨率的表示。尽管图1中所示的mip映射级别是正方形的,mip映射不一定是正方形的(例如,mip映射级别可以是矩形),也不需要是二维的,尽管通常情况下是这样的。然后可以使用各种可用的硬件加速纹理压缩方案(例如,自适应可扩展纹理压缩、astc、或powervr纹理压缩、pvrtc)的其中一个来单独压缩这些mip映射级别。

当使用mip映射渲染图像时,可以使用三线性滤波。三线性滤波包括两个双线性滤波操作的组合,随后是线性内插(或混合)。为了以特定分辨率(或细节级别)渲染图像,双线性滤波被用于重构来自两个最接近的mip映射级别中的每一个的连续图像(即,一个以比所需分辨率稍高的分辨率,且一个以比所需分辨率略低的分辨率),然后线性内插(或混合)被用于以中间和所需的分辨率生成图像。三线性滤波是所有现代图形硬件上支持的最佳重采样解决方案。可互换地使用术语“滤波”和“重采样”。可选地,每个混合操作可以用“最近邻”采样代替,当其应用时,中间mip映射级别仅需要每个采样的单个mip映射级别。这种形式的mip映射采样生成所需纹理重采样的不良近似,并引入了不连续性。

返回参考图1所示的示例,为了以高于纹理103的分辨率但低于纹理102的分辨率的分辨率渲染图像,使用双线性滤波来从两个纹理(或mip映射级)102、103中的每一个重构图像,并然后通过在两个重构纹理之间进行线性内插来生成合成纹理。

下面所述的实施方式仅作为示例被提供且不是解决对纹理数据进行编码和/或解码的已知方法的任何或所有缺点的实现的限制。

概述

这个概述被提供来以简化的形式介绍概念的选择,这些概念在下面在详细描述中被进一步描述。这个概述并不打算识别所主张的主题的关键特征或必要特征,也不打算用作在确定所主张的主题的范围时的帮助。

描述用于对图像数据进行压缩的方法和装置以及用于对压缩图像数据进行解压缩的相应方法和装置。生成压缩图像数据的编码器单元包括:输入端,其被布置成接收第一图像和第二图像,其中,第二图像是第一图像的宽度和高度的两倍;预测生成器,其被布置为用自适应内插器从第一图像生成预测纹理;差分纹理生成器,其被布置为从预测纹理和第二图像生成差分纹理;以及编码器单元,其被布置成对差分纹理进行编码。

第一方面提供了一种用于对图像数据进行编码的编码器,该编码器包括:输入端,其被布置成接收第一图像和第二图像,其中,第二图像是第一图像的宽度和高度的两倍;预测生成器,其被布置为用自适应内插器从第一图像使生成预测图像;差分纹理生成器,其被布置为从预测图像和第二图像生成差分图像;以及编码器单元,其被布置成对差分图像进行编码。

在各种示例中,第一图像是第一纹理,第二图像是第二纹理,预测图像是预测纹理,且差分图像是差分纹理。

在各种示例中,编码器还包括交织器,交织器被配置为交织来自编码的第一图像和编码的差分图像的数据块,以生成压缩图像数据。在各种示例中,压缩图像数据是压缩纹理。

在各种示例中,编码器还包括被布置为对第一图像进行编码的另外的编码器单元。

在各种示例中,对由输入端接收的第一图像进行编码,并且编码器还包括:解码器单元,其被布置成在差分图像的生成之前对第一图像进行解码。

在各种示例中,编码器还包括被布置成存储多个矢量查找表的数据存储器,并且其中,编码器单元被布置为使用多个矢量查找表中的至少一个对差分图像进行编码。在各种示例中,编码器单元被布置成通过以下方式对差分图像进行编码:将差分图像子分割成多个子块;并且对于与编码的第一图像中的块相对应的每个子块组,使用来自多个矢量查找表的单个矢量查找表来对组中的所有子块进行编码,并根据预测模式记录在预测图像中的自适应内插的形式。

第二方面提供了一种被配置为对压缩图像数据进行采样的解码器单元,该压缩图像数据包括交织的对第一图像进行编码的数据块和对第一图像与第二图像之间的差分进行编码的数据块,其中,第二图像是第一图像的宽度和高度的两倍,解码器单元包括:提取单元,其被布置为基于采样位置的坐标来识别四个相邻像素,并且针对四个像素中的每一个从压缩图像数据提取编码数据,所提取的编码数据对于每个像素包括第一图像的编码块和来自第一图像和第二图像之间的差分的编码块的子块以及关于如何从第一图像预测第二图像的信息;第一解码器,其被布置为对第一图像的所提取的编码块进行解码;差分解码器,其被布置为对第一图像和第二图像之间的差分的所提取的编码子块进行解码,并输出四个像素中的每一个的差分四元组和预测值;以及滤波器子单元,其被布置成使用第一图像的解码块、差分四元组和预测值来生成采样位置处的图像的重构。

在各种示例中,第一图像和第二图像是纹理,且像素是纹素。

在各种示例中,解码器还包括一个或多个矢量查找表,并且其中,所提取的编码子块包括用于第一矢量的标识符和用于第二矢量(713)的标识符,并且其中,差分解码器被布置成,对于每个像素,通过组合从矢量查找表中的一个中使用标识符选择的第一矢量和第二矢量来对第一图像和第二图像之间的差分的所提取的编码子块进行解码,以形成解码子块。在各种示例中,对于每个像素,所提取的编码数据还包括用于所提取的子块的预测模式位,并且其中差分解码器还被布置成,对于每个像素,通过基于预测模式位选择要使用的矢量查找表来对第一图像和第二图像之间的差分的所提取的编码子块进行解码。在各种示例中,所提取的编码子块还包括一个或多个附加位,并且其中,差分解码器还被布置成当组合第一矢量和第二矢量时,基于一个或多个附加位翻转第一和/或第二矢量和/或旋转第一矢量和第二矢量。在各种示例中,差分解码器还被布置为,对于每个像素,使用预测模式位和附加位之一来识别用于第一矢量和第二矢量中的每一个的预测模式,以及使用用于每个矢量的预测模式和附加位中的至少另一个来生成预测值。在各种示例中,差分解码器还被布置为,对于每个像素,使用采样位置的坐标的一个或多个最低有效位来从解码子块中选择差分四元组。

在各种示例中,滤波器子单元包括:预滤波器,其被布置成对于四个相邻像素中的每一个使用第一图像的解码块、差分四元组和预测值来生成高分辨率贴片(patch)和低分辨率贴片,并使用采样位置的坐标的第一部分在两个贴片之间进行线性内插;以及双线性滤波单元,其被布置成使用采样位置的坐标的第二部分对预滤波器的线性内插输出执行双线性滤波,以生成采样位置处的图像的重构。在各种示例中,预滤波器还被布置成通过以下方式生成高分辨率贴片和低分辨率贴片:通过应用边界条件将四个像素中的每一个的差分四元组组合成单个更大的差分四元组。在各种示例中,预滤波器还被布置成通过以下方式生成高分辨率贴片和低分辨率贴片:对第一图像的解码块和预测值子分割两次;以及对单个更大的差分四元组子分割一次。在各种示例中,预滤波器还被布置为通过以下方式来生成高分辨率贴片:选择每个子分割的解码块和预测值的一部分;对所选择的部分进行线性内插;以及添加从子分割的单个较大差分四元组中选择的部分。

第三方面提供了一种被配置为对压缩图像数据进行采样的解码器单元,该压缩图像数据包括交织的对第一图像进行编码的数据块和对第一图像与第二图像之间的差分进行编码的数据块,其中,第二图像是第一图像的宽度和高度的两倍,解码器单元包括:解码器子单元,其被配置为基于采样位置的坐标对来自压缩图像数据的编码的数据进行提取和解码;以及滤波器子单元,其被配置为使用第一图像的解码块、解码器子单元输出的差分四元组和预测值来生成采样位置处的图像的重构,其中,滤波器子单元包括:预滤波器,其被布置为对于基于采样位置的坐标识别的四个相邻像素中的每一个使用第一图像的解码块、差分四元组和预测值来生成高分辨率贴片和低分辨率贴片,并使用采样位置的坐标的第一部分在两个贴片之间进行线性内插;以及双线性滤波单元,其被布置成使用采样位置的坐标的第二部分对预滤波器的线性内插输出执行双线性滤波,以生成采样位置处的图像的重构。

在各种示例中,第一图像和第二图像是纹理。

在各种示例中,预滤波器还被布置成通过以下方式生成高分辨率贴片和低分辨率贴片:通过应用边界条件将四个像素中的每一个的差分四元组组合成单个更大的差分四元组。在各种示例中,预滤波器还被布置成通过以下方式生成高分辨率贴片和低分辨率贴片:对第一图像的解码块和预测值子分割两次;以及对单个更大的差分四元组子分割一次。在各种示例中,预滤波器还被布置为通过以下方式来生成高分辨率贴片:选择每个子分割的解码块和预测值的一部分;对所选择的部分进行线性内插;以及添加从子分割的单个较大差分四元组中选择的部分。

在各种示例中,解码器子单元包括:提取单元,其被布置为基于采样位置的坐标来识别四个相邻像素,并且针对四个像素中的每一个从压缩图像数据提取编码数据,所提取的编码数据对于每个像素包括第一图像的编码块和来自第一图像和第二图像之间的差分的编码块的子块以及关于如何从第一图像预测第二图像的信息;第一解码器,其被布置为对第一图像的所提取的编码块进行解码;以及差分解码器,其被布置为对第一图像和第二图像之间的差分的所提取的编码子块进行解码,并输出四个像素中的每一个的差分四元组和预测值。

在各种示例中,解码器子单元还包括一个或多个矢量查找表,并且其中,所提取的编码子块包括用于第一矢量的标识符和用于第二矢量的标识符,并且其中,差分解码器被布置成,对于每个像素,通过组合从矢量查找表中的一个中使用标识符选择的第一矢量和第二矢量来对第一图像和第二图像之间的差分的所提取的编码子块进行解码,以形成解码子块。在各种示例中,对于每个像素,所提取的编码数据还包括用于所提取的子块的预测模式位,并且其中差分解码器还被布置成,对于每个像素,通过基于预测模式位选择要使用的矢量查找表来对第一图像和第二图像之间的差分的所提取的编码子块进行解码。在各种示例中,所提取的编码子块还包括一个或多个附加位,并且其中,差分解码器还被布置成当组合第一矢量和第二矢量时,基于一个或多个附加位翻转第一和/或第二矢量和/或旋转第一矢量和第二矢量。在各种示例中,差分解码器还被布置为,对于每个像素,使用预测模式位和附加位之一来识别用于第一矢量和第二矢量中的每一个的预测模式,以及使用用于每个矢量的预测模式和附加位中的至少另一个来生成预测值。在各种示例中,差分解码器还被布置为,对于每个像素,使用采样位置的坐标的一个或多个最低有效位来从解码子块中选择差分四元组。

在各种示例中,第一图像和第二图像是不同的纹理,并且其中,像素是纹素。

第四方面提供一种对图像数据进行编码的方法,包括:在输入端处接收第一图像和第二图像,其中,第二图像是第一图像的宽度和高度的两倍;在预测生成器中,使用自适应内插器从第一图像生成预测图像,在差分纹理生成器中,从预测图像和第二图像生成差分图像;以及在编码器单元中,对差分图像进行编码。

在各种示例中,第一图像是第一纹理,第二图像是第二纹理,预测图像是预测纹理,且差分图像是差分纹理。

在各种示例中,该方法还可以包括:交织来自编码的第一图像和编码差分图像的数据块,以生成压缩图像数据。在各种示例中,压缩图像数据是压缩纹理。

在各种示例中,该方法还可以包括:对第一图像进行编码。

在各种示例中,对由输入端接收的第一图像进行编码,并且该方法还包括:在解码器单元中,在差分图像的生成之前对第一图像进行解码。

在各种示例中,该方法还可以包括:访问存储在数据存储器中的一个或多个矢量查找表;并且其中,使用多个矢量查找表中的至少一个来对差分图像进行编码。在各种示例中,通过以下方式对差分图像进行编码:将差分图像子分割成多个子块;并且对于与编码的第一图像中的块相对应的每个子块组,使用来自多个矢量查找表的单个矢量查找表来对组中的所有子块进行编码,并根据预测模式记录在预测图像中的自适应内插的形式。

第五方面提供了一种对压缩图像数据进行采样的方法,压缩图像数据包括交织的对第一图像进行编码的数据块和对第一图像和第二图像之间的差分进行编码的数据块,其中,第二图像是第一图像的宽度和高度的两倍,该方法包括:基于采样位置的坐标在提取单元中识别四个相邻像素;由提取单元从四个像素中的每一个的压缩图像数据提取编码数据,所提取的编码数据对于每个像素包括第一图像的编码块和来自第一图像和第二图像之间的差分的编码块的子块以及关于如何从第一图像预测第二图像的信息;在第一解码器中,对第一图像的提取的编码块进行解码;在差分解码器中,对第一图像和第二图像之间的差分的所提取的编码子块进行解码;从差分解码器输出四个像素中的每一个的差分四元组和预测值;以及使用第一图像的解码块、差分四元组和预测值,在滤波器子单元中,生成在采样位置处的图像的重构。

在各种示例中,第一图像和第二图像是纹理,且像素是纹素。

在各种示例中,提取的编码子块包括用于第一矢量的标识符和用于第二矢量的标识符,并且对于每个像素,对第一图像和第二图像之间的差分的所提取的编码子块进行解码包括:通过组合从多个矢量查找表中的一个中使用标识符选择的第一矢量和第二矢量来对第一图像和第二图像之间的差分的所提取的编码子块进行解码,以形成解码子块。在各种示例中,对于每个像素,所提取的编码数据还包括用于所提取的子块的预测模式位,并且对于每个像素,对第一图像和第二图像之间的差分的所提取的编码子块进行解码还包括:通过基于预测模式位选择要使用的矢量查找表来对第一图像和第二图像之间的差分的所提取的编码子块进行解码。在各种示例中,所提取的编码子块还包括一个或多个附加位,并且对第一图像和第二图像之间的差分的所提取的编码子块进行解码还包括:当组合第一矢量和第二矢量时,基于一个或多个附加位翻转第一和/或第二矢量和/或旋转第一矢量和第二矢量。在各种示例中,对第一图像和第二图像之间的差分的所提取的编码子块进行解码还包括,对于每个像素:使用预测模式位和附加位之一来识别用于第一矢量和第二矢量中的每一个的预测模式;以及使用用于每个矢量的预测模式和附加位中的至少另一个来生成预测值。在各种示例中,对第一图像和第二图像之间的差分的所提取的编码子块进行解码还包括,对于每个像素:使用采样位置的坐标的一个或多个最低有效位从解码子块中选择差分四元组。

在各种示例中,使用第一图像的解码块、差分四元组和预测值生成采样位置处的图像的重构包括:对于四个相邻像素中的每一个使用第一图像的解码块、差分四元组和预测值来生成高分辨率贴片和低分辨率贴片;使用采样位置的坐标的第一部分在两个贴片之间进行线性内插;以及使用采样位置的坐标的第二部分对线性内插输出执行双线性滤波,以生成采样位置处的图像的重构。在各种示例中,对于四个相邻像素中的每一个使用第一图像的解码块、差分四元组和预测值来生成高分辨率贴片和低分辨率贴片包括:通过应用边界条件将用于四个像素中的每一个的差分四元组组合成单个较大的差分四元组。在各种示例中,对于四个相邻像素中的每一个使用第一图像的解码块、差分四元组和预测值来生成高分辨率贴片和低分辨率贴片包括:将第一图像的解码块和预测值子分割两次;以及将单个较大的差分四元组子分割一次。在各种示例中,生成高分辨率贴片进一步包括:选择每个子分割的解码块和预测值的一部分;对所选择的部分进行线性内插;以及添加从子分割的单个较大差分四元组中选择的部分。

第六方面提供一种对压缩图像数据进行采样的方法,压缩图像数据包括交织的对第一图像进行编码的数据块和对第一图像和第二图像之间的差分进行编码的数据块,其中,第二图像是第一图像的宽度和高度的两倍,该方法包括:基于采样位置的坐标对压缩图像数据的编码数据进行提取和解码;以及使用第一图像的解码块,解码器子单元输出的差分四元组和预测值,生成在采样位置处的图像的重构,其通过以下步骤:对于基于采样位置的坐标识别的四个相邻像素中的每一个使用第一图像的解码块、差分四元组和预测值来生成高分辨率贴片和低分辨率贴片;使用采样位置的坐标的第一部分在两个贴片之间进行线性内插,以生成线性内插输出;以及使用采样位置的坐标的第二部分对线性内插输出执行双线性滤波,以生成采样位置处的图像的重构。

在各种示例中,第一图像和第二图像是纹理。

在各种示例中,生成高分辨率贴片和低分辨率贴片包括:通过应用边界条件将四个像素中的每一个的差分四元组组合成单个更大的差分四元组。在各种示例中,生成高分辨率贴片和低分辨率贴片还包括:将第一图像的解码块和预测值子分割两次;以及将单个较大的差分四元组子分割一次。在各种示例中,生成高分辨率贴片进一步包括:选择每个子分割的解码块和预测值的一部分;对所选择的部分进行线性内插;以及添加从子分割的单个较大差分四元组中选择的部分。

在各种示例中,基于采样位置的坐标对来自压缩图像数据的编码数据进行提取和解码包括:基于采样位置的坐标来识别四个相邻像素;从用于四个像素中的每一个的压缩图像数据提取编码数据,所提取的编码数据对于每个像素包括第一图像的编码块和来自第一图像和第二图像之间的差分的编码块的子块以及关于如何从第一图像预测第二图像的信息;对第一图像的所提取的编码块进行解码;对第一图像和第二图像之间的差分的所提取的编码子块进行解码;以及输出四个像素中的每一个的差分四元组和预测值。在各种示例中,提取的编码子块包括用于第一矢量的标识符和用于第二矢量的标识符,并且其中,对于每个像素,对第一图像和第二图像之间的差分的所提取的编码子块进行解码包括:通过组合从矢量查找表中的一个中使用标识符选择的第一矢量和第二矢量来对第一图像和第二图像之间的差分的所提取的编码子块进行解码,以形成解码子块。在各种示例中,对于每个像素,所提取的编码数据还包括用于所提取的子块的预测模式位,并且其中,对于每个像素,对第一图像和第二图像之间的差分的所提取的编码子块进行解码还包括:通过基于预测模式位选择要使用的矢量查找表来对第一图像和第二图像之间的差分的所提取的编码子块进行解码。在各种示例中,所提取的编码子块还包括一个或多个附加位,并且其中,对第一图像和第二图像之间的差分的所提取的编码子块进行解码还包括:当组合第一矢量和第二矢量时,基于一个或多个附加位翻转第一和/或第二矢量和/或旋转第一矢量和第二矢量。在各种示例中,对于每个像素,对第一图像和第二图像之间的差分的所提取的编码子块进行解码还包括:使用预测模式位和附加位之一来识别用于第一矢量和第二矢量中的每一个的预测模式;以及使用用于每个矢量的预测模式和附加位中的至少另一个来生成预测值。

在各种示例中,对于每个像素,对第一图像和第二图像之间的差分的所提取的编码子块进行解码还包括:使用采样位置的坐标的一个或多个最低有效位从解码子块中选择差分四元组。

在各种示例中,第一图像和第二图像是不同的纹理,并且其中,像素是纹素。

第七方面提供了一种集成电路制造系统,包括:非临时计算机可读存储介质,其上存储有描述如本文所述的编码器和/或解码器单元的集成电路的计算机可读描述;布局处理系统,其被配置为处理集成电路描述,以便生成实现编码器和/或解码器单元的集成电路的电路布局描述;以及集成电路生成系统,其被配置为根据电路布局描述来制造编码器和/或解码器单元。

另外的方面提供:编码器,其被配置为执行本文所述的任何编码方法,其中,在各种示例中,编码器被实现在集成电路上的硬件中;以及解码器单元,其被配置为执行本文所述的任何解码方法,其中,在各种示例中,解码器单元被实现在集成电路的硬件中。其他方面提供了一种制造如本文所述的编码器和/或解码器单元的方法,并且计算机可读代码(其在各种示例中可在计算机可读介质上被编码)被配置为使得当代码运行时执行本文所述的任何方法。其他方面提供了一种集成电路定义数据集,其在集成电路制造系统中被处理时,将集成电路制造系统配置为制造如本文所述的编码器和/或解码器单元,以及提供了其上存储有集成电路的计算机可读描述的非临时计算机可读存储介质,当在集成电路制造系统中被处理时,使得集成电路制造系统制造如本文所述的编码器和/或解码器单元。其他方面提供了一种被配置为制造如本文所述的编码器和/或解码器单元的集成电路制造系统。

本文描述的编码器单元和解码器单元可以在集成电路上的硬件中实现。可以提供在集成电路制造系统中制造如本文所述的编码器单元和/或解码器单元的方法。可以提供集成电路定义数据集,其在集成电路制造系统中被处理时,将系统配置为制造如本文描述的编码器单元和/或解码器单元。可提供非临时计算机可读存储介质,其具有存储在其上的集成电路的计算机可读描述,其当被处理的时候,使得布局处理系统生成在集成电路制造系统中使用的电路布局描述,以便制造本文描述的编码器单元和/或解码器单元。

可以提供了集成电路制造系统,包括:非临时计算机可读存储介质,其上存储有描述如本文所述的编码器单元和/或解码器单元的计算机可读集成电路描述;布局处理系统,其被配置为处理集成电路描述,以便生成实现如本文所述的编码器单元和/或解码器单元的集成电路的电路布局描述;以及集成电路生成系统,其被配置为根据电路布局描述来制造如本文所述的编码器单元和/或解码器单元。

可以提供用于执行如本文所述的方法的计算机程序代码。可提供非临时计算机可读存储介质,其具有存储其上的计算机可读指令,当在计算机系统上被执行时,该计算机可读指令使得计算机系统实施如本文描述的方法。

优选特征可在适当时被组合,如对技术人员将明显的,并可与本发明的任何方面组合。

附图简述

现在将参照附图详细描述本发明的实施方式,其中:

图1是mip映射的原理图;

图2是示出生成单个dtc纹理的示例方法的原理图;

图3是示出128位6×6(astc)压缩块纹素占用面积(footprint)的原理图;

图4示出两个示例矢量查找表的图形表示;

图5示出示例编码器和示例解码器/滤波器的原理图;

图6是示出示例dtc解码器流水线的流程图;

图7是来自图6的第一示例提取操作的图形表示;

图8是来自图6的第二示例提取操作的图形表示;

图9是来自图6的示例解码操作的第一级的图形表示;

图10是来自图6的示例解码操作的第二级的图形表示;

图11是来自图6的示例解码操作的第三级的图形表示;

图12是来自图6的示例解码操作的第四级的图形表示;

图13是由图6的流水线生成的数据的图形表示;

图14是示出示例差分滤波器流水线的流程图;

图15是如图14中的边界条件的应用的图形表示;

图16是如图14中的低分辨率参数子分割的图形表示;

图17是如图14中的差分生成的图形表示;

图18是如图14中的高分辨率贴片生成的图形表示;

图19是如图14中的中分辨率贴片生成的图形表示;以及

图20示出用于生成实现编码器或解码器单元的集成电路的集成电路制造系统。

附图示出了各种示例。技术人员将理解,附图中的所示元件边界(例如,框、多个框或其他形状)代表边界的一个示例。可能的是,在一些示例中,一个元件可被设计为多个元件或多个元件可被设计为一个元件。在合适处,共同的参考数字在全部附图中用于指示类似的特征。

详细描述

通过示例的方式提出以下描述,以便使得本领域的技术人员能够制造并使用该发明。本发明不限于本文描述的实施方式,且对于本领域的技术人员,对于所公开的实施方式的各种修改将是明显的。

现在仅仅以示例的方式描述实施方式。

现有的纹理压缩格式不能解决纹理映射中可变速率采样的常见用法。mip映射促进了可变速率采样(如上所述),但是由独立压缩纹理组成,独立压缩纹理不利用相邻mip映射级别之间的信息中的固有冗余。实际上,正是这种冗余使得人们能首先将计算与存储进行权衡。然而,在三线性滤波的情况下,这意味着必须与存储器的非本地区域分开地对相邻的mip映射级别进行解码,其具有这所需的性能和带宽影响。发明人已经认识到,在考虑纹理压缩的影响之后,可以从单个映射导出所有数据,而不导致不必要的开销。通常,图像压缩格式经常利用某种形式的基于尺度的表示来模拟图像统计,因此人们应该能够有效地组合解码和重采样。

这里描述的是称为差分纹理压缩(dtc)的有损纹理压缩格式和称为差分纹理滤波器(dtf)的新的滤波算法。差分纹理压缩将两个不同的2d纹理编码为单个、组合的压缩格式(以下称为差分纹理或dtc纹理)。要求第二编码纹理为第一编码纹理的宽度和高度的两倍,并且它们分别被称为“高”和“低”分辨率纹理,但是它们其他方面是独立的。除了用于将纹理参数化的正常空间坐标之外,差分纹理还以与mip映射类似的方式具有“细节级别”(dlod)参数(由区间[0,1]界定,其中“0”和“1”分别表示高分辨率和低分辨率纹理)。使用这个额外的dlod参数作为输入,差分纹理滤波器提供了一种有效的方法来加速dtc纹理对的三线性滤波。通过选择要压缩在一起的合适对的细节级别,可以从多个dtc纹理构建mip映射。dtc编码的mip映射然后提供将常规mip映射采样与dtf采样相结合的灵活性,其允许在一定范围的细节级别上执行三线性滤波,而不需要从多于一个mip映射级别读取。还描述了生成dtc纹理的方法和执行这些方法的相应的硬件。

使用dtc有许多效果:它可以增加mip映射中的纹理的有效数量,而不需要额外的存储成本,它允许通过操纵附加细节(dlod)参数来设计潜在的更高质量的重构滤波器,并且它减少或完全消除对常规三线性滤波的需求。通过减少或消除常规的三线性滤波,dtc的使用减少整个图形引擎(包括到主存储器/来自主存储器)的带宽,并提高采样吞吐量(因为独立滤波操作的总数减少)。

图2是示出生成单个dtc纹理的示例方法的原理图。如图2所示,使用诸如astc或etc(爱立信纹理压缩)的编码方案,直接对低分辨率纹理202(即,低分辨率位图图像)进行编码(框204)。不直接对高分辨率纹理206进行编码,而是将低分辨率纹理202用作预测器,并且生成差分纹理(框208),其对于高分辨率纹理的每个纹素,包括该预测与其实际值之间的差分。更具体地说,该方法的预测级采用低分辨率纹理并生成宽度和高度为低分辨率纹理的宽度和高度的两倍(从而与高分辨率纹理匹配)的预测纹理(框207)。由低分辨率纹理使用自适应内插器来形成预测纹理(其也可被称为预测图像)。然后,从预测纹理和高分辨率纹理生成(在框208中)的差分纹理(其也可以被称为差分图像)与数据一起被编码(框210)以确定自适应内插器。在本文所描述的示例中,使用基于块的矢量量化方案对差分纹理进行编码(在框210中);然而,可以使用替代的压缩方案。然后可以对两个编码的纹理进行交织(框212)以确保参考的局部性,或者它们可以被单独存储。

可被用于对差分纹理进行编码(在框210中)的基于块的矢量量化方案丢弃颜色信息(实际上将色度子采样应用于高分辨率图像),并且使用一个、两个或更多个不同的硬编码矢量查找表(或词典)在单个条目中对4x2纹素组进行编码。它还负责对被用于生成预测纹理的自适应内插进行编码。在使用两个或更多个表的情况下,可以用预测模式来标识每个表,该预测模式确定局部区域上的自适应内插的形式,并且可以在每个块的基础上(即,在框212中交织的每个数据块)被选择以提高结果的质量。在多于两个矢量查找表可用的情况下,查找表可以被分组,其中不同组(例如,对)的查找表被用于不同类型的不同纹理,并且可以基于纹理头信息来选择特定组以供使用。

在各种示例中,基于块的矢量量化方案(在框210中)对4n×4m差分块(即,其以高分辨率包括4n×4m纹素)进行操作,其中n和m是整数。在使用交织的情况下(在框212中),可以选择n和m的值,使得差分块的大小与在低分辨率纹理202的编码中(在框204中的)使用的块的大小匹配,即使得在低分辨率纹理202的编码中使用的块包括2nx2m纹素。例如,如图3所示,如果使用astc来对低分辨率纹理202进行编码(在框204中),则astc块302的大小在较低分辨率下为6×6个纹素,使得匹配的差分块304将包括12×12纹素,即n=m=3。然而,如果使用etc对低分辨率纹理202进行编码(在框204中),则etc块的大小在较低分辨率下为4×4纹素,使得匹配的差分块将包括8×8纹素,即n=m=2。为了下面的说明的目的,假设n=m=3;然而,应当理解,在dtc的实现中,这些参数可以具有其他值,并且在一些实现中,n≠m。

差分块304可以被子分割成多个子块306,每个子块包括以高分辨率的4×4纹素。这些子块形成压缩的基本单元,并且通过从硬编码查找表索引两个矢量来对每个子块进行编码。查找表定义多个4×2矢量(例如,32个4×2矢量),并因此可以通过将子块分成两半(每一半包括4×2纹素)并然后从查找表中引用两个矢量来压缩子块。以这种方式,子块可以被压缩成识别查找表中的两个矢量的一系列位。为了进行编码,编码器可以依次评估每个可能的子块编码,直到找到最佳匹配。

可以通过具有多于一个查找表来增加可用矢量的列表,例如通过具有两个查找表并且包括额外的位(或位(bits),其中存在多于两个查找表),以识别哪个查找表被用于对块进行编码(同一个表被用于差分块中的所有子块)。额外的位可以被称为识别“预测模式”(因为不同的矢量组被构造以适合高分辨率差分的特征统计,其根据哪个内插模式被用于低分辨率纹理而不同),以及图4示出了其中使用两个查找表402、404的情况下,可用矢量406的示例组。在图4所示的实现中,如果设置了预测模式位,则将利用低分辨率纹理的最近邻和双线性内插的50/50混合来预测每个高分辨率纹理,并且使用右矢量组404。如果未设置预测模式,则使用纯最近邻采样,并使用左矢量组402。以这种方式,预测模式被用于控制自适应内插,并确定使用哪个查找表。

尽管图4所示的查找表402、404使用不同的阴影来图形地表示差分,查找表中的每个条目可以包括8个5位二进制补码值。在这种情况下,在检索时,这些值必须首先符号扩展为9位有符号整数,然后对于表条目的前半部分(v=0至v=15)以系数2重新缩放,或对于第二部分(v=16至v=31)以系数4重新缩放。以下示出分别对应于预测模式0和1的两个示例表a和b,其中每个4×2条目被分割为左(l)和右(r)(2x2)半部分,并以十六进制表示,

查找表a:

查找表b:

可以通过包含用于每个矢量406沿着其长轴翻转的每个矢量(即对于每个子块,两个)的额外的翻转位来使可用矢量的列表加倍。也可以使用为每个子块指定的旋转位来将子块(由两个4×2矢量形成)旋转为四个取向之一。此外,在一些实现中,可以使用另外的位来指示对于整个差分块,差分的大小加倍,并且在其他实施方式(例如,使用pvrtc或etc的情况下),可以指定差分对每4x2矢量是否加倍。这可被用于更好地对高对比度的区域进行编码。通过以这种方式扩展可用矢量的列表,它增加了可能的子块编码(包括循环通过每个可能的取向)的数量,其可被评估以找到最佳匹配而不增加查找表的大小。

可以由图5中所示的编码器500使用图2的方法生成dtc纹理。编码器500可以离线(在软件中)或在线(在硬件中)对差分纹理进行编码,并且如果编码器500被用于生成mip映射,则其精确结构还将取决于mip映射的属性。编码器500包括用于接收低分辨率和高分辨率纹理202、206的输入502,或者如下所述,可以在编码器500内生成这些中的一个或两个。编码器500还包括生成预测纹理(如框207中)的预测纹理生成器503和使用预测纹理和高分辨率输入纹理202生成差分纹理(如框208中)的差分纹理生成器504。编码器500可以包括两个编码器单元506、508:第一编码器单元506对低分辨率纹理202进行编码(如在框204中,例如,使用astc、pvrtc或etc),且第二编码器单元508使用可被存储在数据存储器510中的矢量查找表对差分纹理进行编码(如框210)。如果输入的低分辨率纹理已被编码,则不需要第一编码器506,而是编码器500包括对输入的编码的低分辨率纹理进行解码以便可以生成预测纹理(在框207中)的解码器单元。编码器500内的交织器单元512对数据块进行交织(如框212中),即对低分辨率纹理的编码块和编码差分块进行交织,然后经由输出514将形成dtc纹理的编码数据输出(例如,到存储器)。

在一个示例中,编码器500可以采用先前的astc/pvrtc/etc压缩的mip映射(以适当的每像素3.56/4位的压缩率)作为输入,并且使用相邻的mip映射级别来生成差分纹理。不需要对低分辨率纹理进行编码,因为已经完成了此操作,但是在生成差分纹理之后(例如,在已经生成所有差分纹理之后)执行交织。在基于在线硬件的方法中,差分纹理可以利用astc/pvrtc和dtc的硬件解码器来评估不同的编码。由于只能在相邻的mip映射级别以2的缩放因子相关联时生成差分纹理,因此只能为“二次方”的纹理生成差分纹理的“满”集合。一旦程序完成,可以可选地丢弃顶级纹理,其中当lod低于零时,保留它意味着代替dtc使用顶级的双线性放大。

在另一示例中,编码器500可以采用单个纹理(或mip映射),并且用编码一起生成低分辨率和高分辨率纹理对(例如,输入纹理202、206可以与在框204中的对低分辨率纹理进行编码并行地生成)。存在如何生成这些纹理的许多选项,包括滤波内核的选择以及如何处理奇数维度。在生成这些纹理之后,可以将纹理的高分辨率和低分辨率版本输入到差分纹理生成器,并且编码器500可以如上文参考图2所述地进行。

图5还示出了用于如上所述对dtc纹理进行采样的解码器/滤波器单元520的原理图。解码器/滤波器单元520包括:提取单元522,其从dtc纹理中提取编码数据块;第一解码器523,其对来自低分辨率纹理的编码数据块(其可以使用astc、pvrtc或etc来进行编码)进行解码;差分解码器524,其使用硬编码查找表526来重新创建差分纹理,且这些四个元件可以被认为是解码器子单元527的一部分。解码器/滤波器单元520还包括两个滤波元件:预滤波器528和双线性滤波单元530,它们可以被认为是滤波器子单元531的一部分(这构成差分纹理滤波器的逻辑)。虽然本文描述的解码和滤波技术可被一起使用,但是应当理解,它们也可被彼此独立地使用(例如,当使用不同的解码技术或不同的滤波技术时)。

可以参照图6-12来描述解码器子单元527的操作。如图6所示,解码器子单元527提取编码数据块(提取单元522中,框602),其中,如上所述和如图3所示,将低分辨率纹理的编码块(例如,框302)与差分纹理的编码块(例如,框304)交织。解码器子单元527然后对如上所述已经提取的低分辨率纹理的编码块进行解码(框604,在第一解码器523中),可以使用astc、pvrtc或etc对低分辨率纹理的块进行编码。

解码器子单元527还从对应的编码差分块提取编码的数据子块(框606,提取单元522中),尽管这与低分辨率数据的编码块的提取分开示出(在框602),可以同时执行这两个提取操作(框602和606)。

提取单元522使用修改的纹理查找功能(与常规纹理查找相比),因为尽管使用(低分辨率)纹理维度来计算纹素坐标,但是位置(u,v)处的感兴趣的采样的(例如,两位)的小数坐标(fractionalcoordinate)不能被丢弃,或者简单地被提供给双线性滤波单元530(如在常规三线性滤波中),因为它们如下所述的由预滤波器528使用。

特别地,常规的双线性纹理查找映射(u,v)至(u*w-0.5,v*h-0.5),其中w和h分别是纹理的宽度和高度。这些坐标的整数部分被用于索引根据需要应用边界条件的四个相邻的纹素。小数部分转换为固定点值,并被用于双线性内插。

由提取单元522执行的修改的查找使用与所提供的维度的较低分辨率纹理的宽度和高度相同的映射。如前所述,从坐标的整数部分索引四个相邻的低分辨率纹素。相同的值也被用于使用其相关联的预测模式来索引四个差分的四个相邻组。坐标的小数部分乘以4;乘以4的结果的整数部分作为两个2位值被发送到预滤波器528,并且(乘以4的结果的)剩余小数部分被发送到双线性滤波单元530。

由于每个高分辨率纹理总是低分辨率纹理的宽度和高度的两倍,每个低分辨率纹素对应于四个高分辨率纹素。因此,每个纹理提取(使用图6的方法)提取:

1个低分辨率纹素(l)-在块602中提取并在块604中解码

4个差分(dpqrs)-这些可以是9位有符号值-如图10所示并在下面描述,作为来自子块解码操作(框608)的第二级的输出

1个预测模式(p)-这可以是2位-如图12所示并在下面描述,作为来自子块解码操作(框608)的第四级的输出

使用图6的方法,提取单元522可以提取所有所需的数据以仅使用四个地址进行三线性滤波,这与常规的双线性滤波相同,并且在图13中将其通过图表示出。图13示出了对于四个纹素1302(标记为a-d)中的每一个,有一个低分辨率纹素1304(标记为l,包括r、g、b和α通道,其中α通道由下标a示出)、四个差分1306和一个预测模式1308。在所提取的数据1304-1308中,所有参数被认为是低分辨率参数,除了四个差分四元组1306,且低分辨率参数可以被认为是五个2x2四元组1310-1318–各自用于r、g、b和α通道的1310-1316,以及用于预测模式的一个1318。

块数据的交织连同纹理维度的对应关系意味着编码块覆盖纹理的相同区域(就(u,v)坐标系而言)。滤波器正在尝试模拟三线性滤波,因此它需要从每个映射提取执行此操作所需的数据。这意味着从每个映射提取两个双线性贴片,即一组四个纹素。三线性滤波的性质使得当采样以2:1的比例对齐时,较高分辨率映射的双线性纹素占用面积始终是较低分辨率映射的占用面积的子集。如果块被提取,使得它们的联合覆盖低分辨率双线性纹素占用面积,则这些也覆盖了高分辨率双线性占用面积,并且已经提取了用于三线性滤波所需的所有数据。

返回参考图3,每个纹理提取,从编码差分块304中提取单个子块306。子块提取(在块606中)可以根据差分块(例如,图3中的块304)的精确结构稍微不同地进行操作,并且在图7和8中示出了两个示例性差分块布局。图7示出了用于128位差分块的第一示例性块数据布局702,且图8示出了用于64位差分块的第二示例块数据布局802。每个布局702、802包括多个编码子块704(表示为sbi,并在dtc128的情况下包括14位,以及在dtc64的情况下包括16位)。128位块702还包括识别从中选择矢量的查找表的预测模式位706(表示为m)和指示该差分是否应加倍(如上所述)的可选缩放因子位708(表示为a)。64位块804不包括预测模式位,并因此在多个查找表可用的情况下,可以使用默认表(并且因此m的默认值,例如,m=0)。可以选择差分块304、702、802的大小以匹配编码的低分辨率块302的大小,使得块可以被交织,并且这确保参考的局部性。

如图7所示,128位差分块702包括9个子块,并如图8所示,64位差分块802包括4个子块。子块提取操作(框606)使用u、v参数从差分块702、802中选择单个子块710。这里的u、v参数是每个块内的纹素偏移量。子块数据布局712、812也在图7和图8中被示出。可以看出,虽然对于128位示例702中的整个块存在单个缩放因子位(a),但是在64位示例812中,缩放因子808(表示为aj,其中j={1,2})可以在子块内按每个矢量713(表示为vj,其中j={1,2})设置,其中矢量对应于半个子块。如图7和图8所示,每个子块712、812包括两个旋转位714(表示为r)和用于每个矢量的翻转位716(表示为fj,其中j={1,2})。

可以参照图9-12来描述子块解码操作(框608,在差分解码器524中),并且一旦在子块级,以相同的方式操作,而不管差分块的大小。图9示出使用查找表526的子块解码操作中的第一级。基于m(其如上所述可以在差分块级别上指定或具有默认值)的值,识别两个矢量v1和v2(操作902)。然后根据f1和f2716的值翻转所识别的矢量(操作904),并根据缩放位的值在需要时进行缩放(操作906)。如果只有一个缩放位708,则单个值a708被用于矢量v1和v2,而不是使用a1和a2808(如图9所示)。

图10示出了子块解码操作中的第二级,其中两个矢量被组合以形成子块,并且基于两个旋转位r714旋转子块(操作1002)。然后使用u、v坐标的最低有效位从旋转的子块中选择单个差分四元组1004(操作1006)。

虽然图9和10示出完整子块的集合;在各种示例中,可能不需要集合整个子块。

图11示出子块解码操作中的第三级,其识别两个矢量v1和v2中的每一个的预测模式。基于m的值选择单个值(操作1102,如上文描述的,m可以在差分块级别上指定或具有默认值)。然后,基于单个值(来自操作1102)和vj和fj的值来确定两个值p1和p2(每个矢量一个,操作1104)。该操作确保了对于平滑区域,预测模式默认为双线性预测。

在子块解码操作中,来自第三级的两个值p1和p2被馈送到第四级。如图12中所示的,基于两个旋转位r714将两个值布置成四元组(操作1202),其中p1与块a相关联和p2与块b相关联。然后使用u、v坐标的最低有效位从预测四元组(在操作1202中形成)选择单个预测值1204(操作1206)。

可以参照图14-19来描述滤波器子单元531的操作。如图14所示,滤波器子单元531接收所提取和解码的纹素数据1502(例如,如图13中图示的),并且第一操作应用在图15中图示的边界条件(框1504)。所应用的边界条件确定如何将2x2差分四元组拼接成4×4四元组,而图15示出了可以将(来自图13的)2x2差分四元组1306拼接在一起的9种不同的方式(如由括号1602所指示的),并且取决于纹理被采样的位置,仅使用这些的其中一个。对于本文方法的后续级的描述,使用四元组1604中所示的符号,而不管实际集合哪个四元组(在框1504中)。

沿纹理边缘进行采样时(例如,在左上角/右上角、右下角/左下角或者上/下/左/右边处),采样取决于设置的边界模式。在边界模式被设置为包裹(“wrap”)的情况下,纹理的相对边缘被认为是彼此连接的,例如,如果你正沿着纹理的右边进行采样,则来自每个低分辨率和高分辨率图的双线性采样可能需要来自纹理的右边的两个纹素和来自纹理的左边的其他两个纹素。在边界模式被设置为包裹的情况下,2x2差分四元组的布置在图15被示出(示例1606),并且在对纹理的内部进行采样时,使用相同的布置。

如果边界模式被设置为镜像或钳位(clamp)而不是包裹,则被采样的边缘上的纹素被复制而不是使用来自相对边缘的纹素(例如,参考前面的示例,可以将来自右边的采样复制而不是使用左边的纹素),如示例1608-1622所示。尽管镜像和钳位模式是两种不同的纹理模式,其中镜像模式沿其边界反射纹理,而钳位模式在[0,1]坐标区间之外将纹理限制到其边界,这两种模式都涉及沿着纹理边缘的颜色复制,所以它们可以被相同的逻辑处理。特别地,如果边界模式被设置为钳位,则永远不会使用贴片的外列/行,并因此可以将钳位视为镜像化纹理以处理跨越边界的内插,但是然后限制纹理坐标,使得它们不能超过一或小于零。

滤波器子单元531中的预滤波器528生成低分辨率贴片和高分辨率贴片,并以低附加复杂度提供自动三线性滤波,如下面还详细描述的。这些贴片的生成需要子分割将低分辨率数据(两个子分割、框1506,如图16中所示)和高分辨率数据(一个子分割,框1508,如图17中所示),其中从低分辨率数据直接得出低分辨率贴片,高分辨率数据与低分辨率数据结合以构造高分辨率贴片(框1510,如在图17中所示)。执行该子分割,使得在双线性内插之前,可以对高分辨率和低分辨率贴片执行线性内插(在框1512中,在预滤波器528中,如图19所示)。

可以参考图16来描述低分辨率参数子分割(框1506)。如上所述,低分辨率参数包括五个2x2四元组1310-1318,并且以图16所示的方式对每个进行处理,并因此,图16的方法被示出用于具有标记为a-d的元素的通用2x2四元组和这个可以是低分辨率参数1310-1318中的任何一个处;然而,如下所述,依赖于哪个四元组被子分割,第二子分割1703可以跟随两个平行路径中的一个或两个。

低分辨率参数子分割(在框1506中)包括在低分辨率2x2四元组1700上执行两个子分割步骤1702、1703。第一子分割1702使用双线性子分割,并从输入的2x2四元组1700生成3×3的四元组1704,其中四个角块(nw、ne、se、sw)具有与输入2×2四元组1700中的四个值(分别为a、b、d、c)相同的值,中心块(x)是四个值a-d中的每一个的1/4混合,且其他四个块(n、e、s、w)是它们的两个直接邻居的半混合(例如,n是a和b的1/2混合,e是b和d的1/2混合等)。

所得到的3×3四元组1704然后在第二子分割步骤1703中被子分割,并且取决于低分辨率参数1310-1318参数的哪个四元组,这可以涉及所示的两个分离操作中的一个或两个(并且其使用不同的子分割技术)以生成一个或两个5×5四元组1706、1708。以与生成3×3四元组1704类似的方式使用双线性子分割形成一个5×5四元组1706(例如,使得块nw和n之间的块是nw和n的1/2混合)。使用最近邻子分割形成另一个5x5四元组1708,因此新创建的子分割块被钳位至它们的最近的角。基于图16中标记为u、u+1、v和v+1的坐标,从每个生成的5×5四元组中选择2x2四元组1710,且所述坐标是上述纹理查找中生成的小数u、v的坐标的前两位。

如上所述,如图16所示,对于每个低分辨率2x2四元组1308-1318,重复低分辨率参数子分割,并且在第二子分割步骤1703中,不同的四元组遵循不同的路径。参数lr、lg和lb(四元组1310、1312、1314)采用“最近邻”路径和“双线性”路径,并因此生成两个5×5四元组1708、1710。然后从这些生成的5×5四元组1708、1710中的每一个中选择2x2四元组1710。其中,跟随最近邻路径的lr、lg和lb四元组自此以后被重新标记为br、bg和bb,以使它们区别于跟随双线性路径、保持lr、lg和lb的那些。参数p(四元组1318)仅采用“最近邻”路径,并因此生成单个5x5四元组1708,然后从5x5四元组1708中选择2x2四元组1710。参数la(四元组1316)仅采用“双线性”路径,并因此生成单个5x5四元组1706,然后从5x5四元组1706中选择2x2四元组1710。在最终双线性内插(框529)之前,对于la参数四元组(框528)不需要进一步处理,并且因此它绕过所有其他级,并且因此被重新标记为xa,以与图19中输出的另一双线性通道匹配。

差分生成(在块1508中)涉及如可以参照图17描述的单个子分割。输入是如通过应用边界条件(在框1504中)生成的4×4差分四元组1604。使用双线性子分割,并且这导致5×5四元组,其中使用与低分辨率参数子分割中(在框1506中)使用的相同坐标来从该5×5四元组选择2x2四元组1802。

可以参考图18描述高分辨率贴片生成(在框1510中)。对于每个rgb通道,其涉及对通过低分辨率参数子分割(在框1506中)生成的2x2四元组1710的线性内插(由括号1902指示),之后是加上在差分生成中(在框1508中)生成的差分2x2四元组1802(由括号1904表示),并且对于每个rgb通道,输出是一个2x2四元组1906-1910。所得的2x2四元组1906-1910具有高分辨率。然后可以对这些值进行钳位,以确保它们保持在可能值的范围内(对于ldr纹理为0到255)。

如图19所示,然后基于所需的中间细节级别(dlod),可以通过混合高分辨率2x2四元组1906-1910和由低分辨率参数子分割(在框1506中)生成的子分割低分辨率四元组,生成所需中间分辨率的贴片(在框1512中)。图19中所示的操作按顺序执行:首先执行减法(l-h),然后在高分辨率值的添加(+h)之前乘以中间细节级别(xdlod)。在图18中执行相同的操作顺序(在括号1902内);它等价于表达式(1-f)*a+f*b。

预滤波器528输出用于每个rgba通道的单个双线性贴片,其是在预滤波器内生成的低和高分辨率贴片的线性内插(如图19所示),除了在低分辨率参数子分割1506期间生成的α通道。该输出贴片更接近目标采样位置(即对于目标细节级别);然而,它可能不完全匹配目标采样位置,因为仅使用纹素地址计算的小数部分的4倍乘法的结果的整数部分(如上所述)。因此,双线性滤波单元530随后使用4倍乘法的结果的任何小数部分对来自预滤波器528的输出执行双线性滤波(框1514),以生成目标细节级别的输出贴片(因此在目标采样位置处)。如果没有小数部分,则来自预滤波器528(和框1512)的输出已经在目标采样位置处,并且不需要双线性滤波。

如上所述,双线性滤波单元530对预滤波器528的输出进行双线性滤波。

尽管在图14中未示出,在各种示例中,可以在预滤波器528的输出与双线性滤波单元的输入之间执行伽马校正。可选地,可以对下采样图像(即,在双线性滤波单元之后)执行伽马校正。

虽然在纹理方面(其中纹理被定义为在3d渲染中使用的任何位图图像)描述上述方法和装置,但是本文描述的方法和装置通常可被更广泛地应用于位图图像。

图5的编码器和解码器被示出为包括多个功能块。这仅仅是示意性的,并不意图定义这些实体的不同逻辑元件之间的严格划分。可以以任何合适的方式提供每个功能块。应当理解,在本文描述为由功能块形成的中间值不需要在任何点由功能块物理地生成,并且可以仅表示方便地描述功能块在其输入和输出之间执行的处理的逻辑值。

可以在集成电路上的硬件中实现本文描述的编码器和解码器。本文描述的编码器和解码器可以被配置为执行本文所述的任何方法。通常,上文描述的功能、方法、技术或组件的任何一个可在软件、固件、硬件(例如,固定逻辑电路)或其任何组合中实现。术语“模块”、“功能”、“组件”、“元件”、“单元”、“块”和“逻辑”在本文中可被用于总体地表示软件、固件、硬件或其任何组合。在软件实现的情况下,模块、功能、组件、元件、单元、块和逻辑表示当在处理器上被执行时实施特定任务的程序代码。本文描述的算法和方法可被执行使得处理器实施算法/方法的代码的一个或多个处理器实施。计算机可读存储介质的示例包含随机存取存储器(ram)、只读存储器(rom)、光盘、闪存、硬盘存储器和可使用电磁、光或其他技术存储指令或其他数据并可被机器访问的其他存储器设备。

如本文使用的术语计算机程序代码和计算机可读指令指的是用于处理器的任何类型的可执行代码,包含以机器语言、解释语言或脚本语言表达的代码。可执行代码包含二进制代码、机器代码、字节码、定义集成电路的代码(例如硬件描述语言或网表)和在诸如c、java或opencl的编程语言代码中表达的代码。可执行代码可以例如是任何类型的软件、固件、脚本、模块或库,其当在虚拟机或其他软件环境中被适当地执行、处理、解释、编译、执行,使得在其中支持可执行代码的计算机系统的处理器实施由代码指定的任务。

处理器、计算机或计算机系统可以是具有处理能力从而使它可执行指令的任何类型的设备、机器或专用电路或其集合或部分。处理器可以是任何类型的通用或专用处理器,诸如cpu、gpu、芯片上的系统、状态机、介质处理器、特定用途集成电路(asic)、可编程逻辑阵列、现场可编程门阵列(fpga)、物理处理单元(ppu)、无线处理单元(rpu)、数字信号处理器(dsp)、通用处理器(例如,通用gpu)、微处理器、被设计以加速cpu外的任务的任何处理单元,等等。计算机或计算机系统可包括一个或多个处理器。本领域中的技术人员将认识到,这样的处理能力合并到很多不同的设备内,且因此术语“计算机”包括机顶盒、媒体播放器、数字无线电装置、pc、服务器、移动电话、个人数字助理和很多其它设备。

其还旨在包括定义如本文描述的硬件的配置的软件,诸如hdl(硬件描述语言)软件,如对设计集成电路或对配置可编程芯片所使用的,以实现期望功能。也就是说,可提供计算机可读存储介质,其具有在其上编码的以集成电路定义数据集的形式的计算机可读程序代码,其当在集成电路制造系统中被处理时配置系统以制造配置成执行本文所述的任何方法的编码器和/或解码器,或制造包括本文所述的任何装置的编码器和/或解码器。集成电路定义数据集例如可以是集成电路描述。

集成电路定义数据集可以是以计算机代码的形式,例如,如网表、用于配置可编程芯片的代码、如在任何级别处定义集成电路的硬件描述语言,包含寄存器传输级(rtl)代码、如诸如verilog或vhdl的高级电路表示、如诸如oasis(rtm)和gdsii的低级电路表示。可将逻辑上定义集成电路的较高级表示(诸如rtl)在计算机系统处处理,该计算机系统被配置为在软件环境的条件下生成集成电路的制造定义,其包括电路元件的定义和用于结合这些元件以便生成由表示如此定义的集成电路的制造定义的规则。如典型的情况,对于具有在计算机系统处执行从而定义机器的软件,可能需要一个或多个中间用户步骤(例如,提供指令、变量等)以便被配置用于生成集成电路的制造定义的计算机系统执行定义集成电路的代码从而生成该集成电路的生成定义。

现在将参考图20描述在集成电路制造系统处理集成电路定义数据集以便配置该系统来制造如本文描述的编码器和/或解码器的示例。

图20示出被配置为制造如本文的任何示例中所描述的编码器和/或解码器的集成电路(ic)制造系统2002的示例。具体地,ic制造系统2002包括布局处理系统2004和集成电路生成系统2006。ic制造系统2002配置成接收ic定义数据集(例如定义如在本文的任何示例中所述的编码器/解码器),处理ic定义数据集,并根据ic定义数据集生成ic(例如其实现如在本文的任何示例中所述的编码器/解码器)。ic定义数据集的处理配置ic制造系统2002以制造实现如在本文的任何示例中所述的编码器/解码器的集成电路。

布局处理系统2004被配置成接收并处理ic定义数据集以确定电路布局。从ic定义数据集确定电路布局的方法在本领域中是已知的,且例如可涉及合成rtl代码以例如从逻辑部件(例如nand、nor、and、or、mux和flip-flop部件)方面确定待生成的电路的门级表示。可通过确定逻辑部件的位置信息从电路的门级表示确定电路布局。这可自动地或使用用户干预来完成,以便优化电路布局。当布局处理系统2004确定电路布局时,它可将电路布局定义输出到ic生成系统2006。电路布局定义例如可以是电路布局描述。

ic生成系统2006根据电路布局定义生成ic,如在本领域中已知的。例如,ic生成系统1006可实现半导体器件制造过程以生成ic,这可涉及光刻和化学处理步骤的多步骤序列,在其期间,电子电路在由半导体材料制成的晶圆上被逐步创建。电路布局定义可以是掩模的形式,掩模可在光刻过程中用于根据电路定义生成ic。可选地,被提供到ic生成系统2006的电路布局定义可以以计算机可读代码的形式,ic生成系统2006可使用该计算机可读代码来形成适当的掩模用于在生成ic时使用。

由ic制造系统1002执行的不同过程可以都在一个位置上例如由一方实现。可选地,ic制造系统1002可以是分布式系统,使得一些过程可在不同的位置处被执行,并可由不同的方执行。例如,步骤的一些是:(i)合成表示ic定义数据集的rtl代码,以便形成要生成的电路的门级表示;(ii)基于门级表示,生成电路布局;(iii)根据电路布局,形成掩膜;以及(iv)使用掩膜制造集成电路,可在不同位置和/或由不同方实施。

在其它示例中,在集成电路制造系统处的集成电路定义数据集的处理可配置系统以制造编码器/解码器而没有ic定义数据集被处理,以便确定电路布局。例如,集成电路定义数据集可定义可重配处理器例如fpga的配置,且那个数据集的处理可配置ic制造系统以生成具有那个所定义的配置的可重配处理器(如,通过将配置数据加载到fpga)。

在一些实施方式中,当在集成电路制造系统中被处理时,集成电路制造定义数据集可使得集成电路制造系统生成如本文描述的设备。例如,由集成电路制造定义数据集的以在上文中参考图20描述的方式的集成电路制造系统的配置可使制造如本文描述的设备。

在一些示例中,集成电路定义数据集可包含在数据集处定义的硬件上运行或结合在数据集处定义的硬件运行的软件。在图20所示的示例中,ic生成系统还可由集成电路定义数据集配置成在制造集成电路时根据在集成电路定义数据集处定义的程序代码将固件加载到那个集成电路上或以其他方式使用集成电路提供程序代码以与集成电路一起使用。

本领域中的技术人员将认识到,用于存储程序指令的存储设备可分布在网络当中。例如,远程计算机可存储被描述为软件的过程的示例。本地或终端计算机可访问远程计算机并下载软件的一部分或全部以运行程序。可选地,本地计算机可按需要下载软件的片段或在本地终端处执行一些软件指令并在远程计算机(或计算机网络)处执行一些指令。本领域中的技术人员也将认识到,通过利用本领域中的技术人员已知的常规技术,软件指令的全部或一部分可由专用电路例如dsp、可编程逻辑阵列等实现。

本文所述的方法可由配置有软件的计算机执行,软件是以存储在有形存储介质上的机器可读形式、例如以包括用于配置计算机来执行所述方法的组成部分的计算机可读程序代码的计算机程序的形式或以包括适合于当程序在计算机上运行时执行本文所述的任何方法的所有步骤的计算机程序代码工具的计算机程序的形式,且其中计算机程序可实现在计算机可读存储介质上。有形(或非临时)存储介质的示例包括磁盘、拇指驱动器、存储卡等,且并不包括传播信号。软件可适合于在并行处理器或串行处理器上执行,使得方法步骤可以按任何适当的顺序或同时被执行。

本文所述的硬件部件可由非临时计算机可读存储介质生成,非临时计算机可读存储介质具有在其上编码的计算机可读程序代码。

存储在实现所公开的方面时使用的机器可执行数据的存储器可以是非临时介质。非临时介质可以是易失性的或非易失性的。易失性非临时介质的示例包括基于半导体的存储器,例如sram或dram。可用于实现非易失性存储器的技术的示例包括光学和磁性存储器技术、闪存、相变存储器、电阻性ram。

对“逻辑”的特定提及指执行一种或多种功能的结构。逻辑的示例包括布置成执行那些功能的电路。例如,这样的电路可包括晶体管和/或在制造过程中可用的其它硬件元件。作为示例,这样的晶体管和/或其它元件可用于形成实现和/或包含存储器例如寄存器、触发器或锁存器、逻辑运算符例如布尔运算、数学运算符例如加法器、乘法器或移位器和互连的电路或结构。这样的元件可作为定制电路或标准单元库、宏或在其它抽象级处被提供。可在特定的布置中使这样的元件互连。逻辑可包括固定功能的电路,且电路可被编程以执行一种或多种功能;这样的编程可从固件或软件更新或控制机制提供。被识别为执行一种功能的逻辑也可包括实现组成功能或子过程的逻辑。在示例中,硬件逻辑具有实现固定功能操作或多个操作、状态机或过程的电路。

本文给出的任何范围或设备值可扩展或改变而不失去所寻求的效应,如对技术人员将明显的。

将理解,上面描述的益处和优点可涉及一个实施方式或可涉及几个实施方式。实施方式不限于解决任何或所有所陈述的问题的那些实施方式或具有任何或全部所陈述的益处和优点的那些实施方式。

对“一个”项目的任何提及指那些项目中的一个或多个。术语“包括”在本文用于意指包括所识别的方法块或元件,但这样的块或元件并不包括排他列表,且装置可包含额外的块或元件,以及方法可包含额外的操作或元件。此外,块、元件和操作本身并不隐含地是封闭的。

本文描述的方法的步骤可在适当时以任何适当的顺序或同时被执行。在附图中的方框之间的箭头示出方法步骤的一个示例顺序,但并不意欲排除其它顺序或并行的多个步骤的执行。此外,单独的块可从任何方法删除而不偏离本文描述的主题的精神和范围。上面描述的任何示例的方面可与所描述的其它示例中的任一个的方面组合以形成另外的示例,而不失去所寻求的效应。在附图的元件被示为由箭头连接的场合,将认识到,这些箭头示出在元件之间的通信(包括数据和控制消息)的仅仅一个示例流。在元件之间的流可以在任一方向上或在两个方向上。

申请人在此分开公开本文描述的每个独立的特征和两个或多个这种特征的任意组合,到以下程度:能够根据本领域技术人员的公知常识基于当前说明作为整体实施这种特征或组合,而不管这种特征或特征组合是否解决本文公开的任何问题。针对前述描述,对于本领域的技术人员明显的是,在本发明的范围之内可进行不同修改。

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