好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

用于文本渲染的查找表的制作方法.docx

6页
  • 卖家[上传人]:ting****789
  • 文档编号:310022705
  • 上传时间:2022-06-14
  • 文档格式:DOCX
  • 文档大小:26.03KB
  • / 6 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 用于文本渲染的查找表的制作方法专利名称:用于文本渲染的查找表的制作方法用于文本渲染的查找表背景技术:字形是用于可视化地表示一个或多个字符的图像例如,字体可以是字形的集合,其中字体的每个字符表示单个字形然而,字形也可以包括字体的多个字符,并且反之亦然即,字体的一个字符可以对应于若干个字形,或者字体的若干个字符可以对应于一个字形换句话说,字形是划界用于表示一个或多个字符的区域的一系列曲线的形状计算机实现的用于生成字形曲线以及结果字符的处理被称为文本渲染(rendering)渲染文本在中央处理单元(CPU)使用方面可能是更昂贵的操作之一用于渲染文本的一种处理包括光栅化、合并、过滤和校正的四步骤处理光栅化步骤包括将字形曲线变 换成位图位图的格式通常是每像素I比特(1-bit-per-pixel) (lbpp),并且它可以在一个或多个方向上被“超刻度” (overscale)例如,位图可以在垂直或水平方向上被超刻度超刻度指的是其中用于生成位图的数据的每一个比特或纹元(texel)小于用于显示字形的像素的处理合并步骤包括合并邻近字形,以防止赝像(artifact)或非期望字符例如,抗锯齿处理(包括子像素渲染)涉及半透明地绘制一些像素。

      由于每个字形均可以独立地进行绘制,所以在其中这些字形重叠的位置中多次半透明地绘制同一像素是可能的这可能导致像素显得太暗为避免这种情况,合并步骤将用于所有字形的位图组合成单个纹理过滤和混合步骤在单个纹理上而不是单独地针对每个字形来执行因而,合并步骤组合个别字形来实现连续外观并确保没有重叠或分开的字形过滤步骤采取合并的字形,并且为每个像素计算“覆盖率(coverage)”术语覆盖率指的是为用于显示合并字形的每一个个别像素确定必要的强度或值例如,完全落入字形曲线的区域内的像素将具有100%覆盖率同样,完全在字形曲线的区域之外的像素将具有0%覆盖率因而,取决于用于渲染字形的特定过滤方法,覆盖率值可能落入0%到100%之间的任何地方校正步骤可以包括子像素渲染,以改善字符的可读性校正的一个示例能够涉及基于改善字形的可读性的已知因素来修改每个像素的覆盖率这些能够包括强调或者弱化(de-emphasize)字形内的某些颜色和/或像素,以便在显示字形时避免外观赝像校正的另一个示例能够是像素的混合,以利用液晶显示器(IXD)的像素结构特别地,因为IXD屏幕上的一个像素由三个子像素即一个红色、一个绿色和一个蓝色(RGB)组成,所以子像素渲染是可能的。

      对人眼而言,这些子像素显现为一个像素然而,这些像素中的每一个像素是独特的,并且可以个别地进行控制因而,LCD屏幕的分辨率可以通过个别地控制子像素以增加显示在IXD上的文本的可读性来改善用于渲染文本的一种方法是在CPU上执行前三个步骤即,光栅化、合并、过滤步骤在CPU上执行,而混合步骤在图形处理单元(GPU)上执行在CPU使用方面,合并和过滤步骤是最为计算密集的发明内容在各种实施例中,提供用于改善的GPU上的字形的过滤和校正的系统和方法通过预先计算将覆盖率数据变换成校正像素值所需要的计算中的一些或所有计算,能够减少过滤和/或渲染所需要的计算强度通过以改善的格式将数据从CPU传送至GPU,在一些实施例中可以实现附加的效率这些改善能够以各种图形格式来实现提供这个发明内容部分来以简化的形式介绍下面在具体描述部分中进一步描述的概念的选择这个发明内容部分并不打算标识所请求保护的主题的关键特征或基本特征,也不打算孤立地用作辅助手段来确定所请求保护的主题的范围下面参考附图来详细描述本发明,其中 图I是适合于在实现本发明的实施例中使用的示例计算环境的框图图2示意性显示用于渲染文本像素的组件的示例图3描述根据本发明的实施例的方法的流程图。

      图4描述根据本发明的实施例的方法的流程图图5描述根据本发明的实施例的方法的流程图图6示意性地显示用于渲染文本像素的组件的另一个示例图7显示以每字节8比特格式存储的6x1像素覆盖率数据的对准(alignment)具体实施例方式在确定字形的位图之后,基于字形位图来渲染文本可能需要若干任务的完成一个任务能够包括将用于渲染的覆盖率数据从中央处理单元(CPU)传送至图形处理单元(GPU)另一个任务能够是将所传送的数据拆包(unpack)成可识别格式第三任务能够是将覆盖率数据变换成像素信息此外,各种校正能够应用于像素,以改善文本的最终显示以有效的方式渲染文本能够涉及基于覆盖率数据来平衡对于显示像素的内存需求和处理需求数据传送和拆包 将覆盖率数据从CPU传送到GPU在文本渲染期间是一个可能的瓶颈照惯例,覆盖率数据已以简单的格式进行传送,例如通过使用单独的字节来保持数据的每一个比特而传送每像素一比特(Ibpp)数据使用字节来保持Ibpp数据的每个比特简化传送至GPU的数据的拆包,因为每一个比特位于单独可寻址的位置中然而,由于每个字节中的大部分数据空间没有被使用,所以这种类型的数据传送从内存角度来看可能是低效率的。

      这种低效率可能由于在表示像素数据中使用的任何过采样而被恶化例如,一种常见类型的用于文本数据(诸如ClearType数据)的过采样是对于每一个像素使用6x1覆盖率数据格式在6x1格式中,需要10个总比特来表示该像素的三个通道的数据这些通道通常对应于像素的红色、绿色和蓝色分量因而,在对于每一个比特利用单独字节、以Ibpp格式传送数据时,需要10个字节来传送像素的红色、绿色和蓝色分量在这种类型的数据传送中,指定像素所需要的比特容易被装配(assemble),这是因为这10个比特能够从其不包括其他任何数据的个别字节中进行检索在各种实施例中,提供用于传送和/或拆包覆盖率数据的改善方法替代利用单独字节中的每个比特来传送Ibpp数据,能够使用诸如每像素8比特之类的更高数据密度格式来传送数据至GPU这增加在每一个字节中传送的数据量,而这能够减少GPU上总体内存使用以较高数据密度格式传送数据可能需要附加处理来拆包数据由于较高密度格式,每一个像素的信息可能没有干净地与个别字节的边界对准例如,6x1覆盖率数据包括每个像素10比特的信息,而8bpp数据格式仅包括每字节8比特此外,对于与ClearType文本相对应的字形来说,由于对于ClearType过滤器的像素信息中的重叠,每个像素与相邻像素重叠4个比特。

      结果,对于使用8bpp打包方案传送的lbpp ClearType文本的示例而言,所传送数据的每个字节能够包括一个以上的像素的信息,并且确定像素的显示值可能需要一个以上字节中的数据在图6中显示这种情形,其中图6显示如何以Sbpp格式存储6x1覆盖率数据的示例用于拆包覆盖率数据的方法能够取决于可用的显示硬件的类型对于使用DirectX 10格式(DxlO)的硬件显示器而言,比特移位指令是可用的这意味着所需要的任何像素信息能够通过访问包含与像素相对应的10比特的两个字节的数据而获得比特·移位指令随后能够用于在每一个字节内选择与当前感兴趣的像素相对应的比特这些比特然后能够被装配,以形成与该像素的覆盖率数据相对应的10比特数字基于像素中比特的数量相对于覆盖率信息的打包之间的关系,类似的操作能够用于其他的数据格式对于并不包括比特移位功能的硬件而言,可能需要附加操作例如,DirectX 9(Dx9)不支持比特移位操作反而,在Dx9中利用像素着色器采样的信息作为在O与I之间的浮点值被返回为了在这种情形中提取像素数据,存储在每个字节中的值能够与255相乘,并随后被四舍五入至整数接下来的操作则取决于包含用于期望像素的相关比特的原始字节的部分。

      如果期望右比特移位,则能够将该整数与2的负幂相乘向下舍入(floor)”操作随后能够用于移除非期望比特,其中非期望比特在相乘之后全部在小数点的右边如果期望左比特移位,则能够将该整数与2的正幂相乘,并且能够使用“分位数(frac)”操作来移除位于小数点的左侧的非期望比特与2的负幂相乘随后能够用于将剩余比特返回至原始位置比特装配和数据杳找 基于上文,较高密度数据格式能够用于将Ibbp格式数据传送至GPU在识别与像素相对应的比特之后,这些比特能够被装配,以形成单个数字例如,在6x1格式中,能够装配这些比特,以形成10比特数字能够装配6X5格式,以形成5个10位数数字更广泛地说,能够装配与像素相对应的数量的比特注意因为能够使用上述的比特移位(或2的幂乘法)以使得在两个原始8比特字节中的比特之间没有重叠,所以简单的算术加法运算可能足以装配这些比特所装配的比特随后能够用于确定像素值在使用6X1过采样数据的示例中,在以常规方式拆包每一个像素时,能够为每个像素计算单独的红色、绿色和蓝色值然而,因为仅具有相对小数量的可能组合(对于10比特数字而言,1024),所以申请人已确定可能更有效的是提前计算任何可能像素的值。

      用于像素的10比特值随后能够被用作索引来在表中查找正确的值因而避免多次重复相同的计算,从而减少GPU上的处理负担对于诸如6X1数据之类的数据格式而言,每像素比特的总数(10)导致可管理数量的组合(1024)然而,一些过采样格式导致每像素较大的数据量,这可能使得像素值的确定复杂化例如,另一可用的过采样格式是6x5数据,其有效地并入5列的6x1数据基于通用计算设备的当前计算能力,预先计算使用50比特索引来直接构造查找表将需要的25°种组合是不切实际的对于6x5格式数据而言,这能够通过将该数据看作5行的10比特数据来解决如上所述,对于10比特覆盖率数据行来说,能够为未校正像素值计算查找表五行的覆盖率数据随后能够被垂直过滤,以便将数据组合为单个像素值可选地,这后一种操作能够利用常规的像素着色器来处理注意基于上文,术语“像素值”能够指的是完整像素值或能够与其他部分值进行组合以形成完整值的部分像素值在一些情形中,在特别描述与其他部分值进行组合以形成完整值的像素值时,将涉及部分像素值部分像素值的示例可以是基于一行6X5过采样覆盖率数据的值像素校ιΗ因子 上面的方法能够虑及Ibpp覆盖率数据至GPU的有效传送以及随后基于覆盖率数据的像素值的有效计算。

      单独地,这能够为GPU提供内存和/或计算时间节省然而,如果能够 将一些或所有的像素校正因子并入查找表的话,那么附加的改善是可能的对于诸如ClearType数据之类的6 X I覆盖率数据的常规处理而言,装配和处理10比特的覆盖率数据,以提供红色、绿色和蓝色像素信息基于像素信息的值,一个或多个校正值或因子随后被应用于该数据这些校正能够用于改善利用显示的像素所形成的文本的外观这些校正能够包括(增强的)对比度调节、ClearType水平调节和阿尔法(alpha)校正此外,与红-绿-蓝格式相对照,对于使用蓝-绿-红格式来表达像素信息的监视器而言,调整可能是必要的照惯例,这些校正因子之中的每个校正因子基于数据中的红色、绿色和蓝色通道值而被应用于每一个像素,并在确定未校正像素值之后需要单独的附加计笪在一些实施例中,应用于像素值的一个或多个校正因子能够被预先计算并被并入查找表应用于像素值的许多校正完全由所装配的覆盖率数据比特指定例如,为6x1格式覆盖率数据所装配的10比特数字提供足够的信息来确定能够应用于像素值的各种校正这样的校正能够包括增强的对比度校正、ClearType水平调节或阿尔法值校正由于也能够提前确定对于像素值的校正,所以也能够预先计算这些校正。

      这允许查找表存储校正的像素值,这进一步减少GPU所需要的计算的数量注意应用于用于文本渲染的像素的一个或多个校正因子基于用户或硬件设置而可以是可变的例如,应用于像素值的校正因子可以取决于用户所选择的背景和文本颜色或硬件显示设备的对比度设置结果,如果在查找表中包括对于像素值的校正,那么每当做出修改这些校正因子的改变时,将需要新。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.