当前位置: 首页 > 专利查询>微软公司专利>正文

基于纹理的像素打包制造技术

技术编号:2948071 阅读:207 留言:0更新日期:2012-04-11 18:40
用于呈现包括文本在内的三维图形的方法和系统,提供了压缩的纹理位图。该纹理位图可以表示多个符号,每一符号包含多个像素。在纹理位图中的每一像素可以为多于一个的符号存储信息,包括对应于多个独特符号的压缩的像素。例如,压缩的纹理位图可以含有n位像素(例如,16位像素),每一像素至多存储m(例如,4)个n/m位(例如,4位)压缩的值。或者,该压缩的纹理位图可以含有n位像素(例如,8位像素),每一像素存储m(例如,4)个n/m位(例如,2位)压缩的值。同样地,压缩的纹理位图可以含有n位像素(例如,8位像素),每一像素存储m(例如,8)为1位值。压缩的纹理位图可以被配置来由诸如一般不执行逐步运算的像素着色器的惯用像素着色器执行解包。

【技术实现步骤摘要】

技术介绍
计算机图形学的发展,允许在二维空间(例如,计算机屏幕或监视器)中显示三维图形对象(例如,在电子游戏中的角色)。电子游戏和其它使用三维图形的应用程序向用户十分逼真地显示,且增加了用户体验的乐趣。用于生成三维图形的一种技术包括对纹理的使用。纹理是二维的位图,当在场景的三维呈现中绘制平面几何时,通常用于模拟真实世界纹理细节(例如,木材、谷物、地毯等)。在某些情况中,该纹理由多个二维的像素组成。每一像素拥有位置、颜色、亮度和深度属性。一旦被创建,该纹理可以被用来呈现多种类型的图像,包括表示文本和符号的图像。使用纹理用于呈现二维文本一般比其它文本呈现技术更令人希望,因为纹理允许文本被容易地以合适的方式设计、缩放和旋转。因为电子游戏除非视觉上令人影响深刻,否则市场上销量不好,希望在一个场景中使用多种有吸引力的字体。从而,用于应用程序(例如,三维电子游戏)中的文本呈现的单个纹理可以包括字形的大的集合(例如,文本字符、符号和/或附和某一字体或文本样式的图像)。在某些情况中,字形可以被单独着色或可以是具有黑色轮廓、黑色下拉阴影(drop-shadow)和/或抗混叠效果的白色字符。轮廓和下拉阴影特征一般能在低分辨率的显示器(例如,电视机)上提高可读性,尤其在背景色没有提供很多对比度的情况下更是如此。抗混叠降低了像素生成线的锯齿效果,且包含在字形轮廓周围使用灰色或轻微着色的像素。图1示出使用抗混叠、轮廓描绘和下拉阴影特征的字形102的示例。为结合这些特征,纹理位图中的每一像素通常是32比特,对每一颜色通道(例如,红、绿、蓝)使用8个比特,对用作透明度因数的alpha(阿尔法)通道使用8个比特。在大多数情况中,适中大小的字形集可以装入一256×256的纹理位图中。图1也示出了512×256纹理位图104的实例。从纹理进行文本呈现一般涉及选择匹配所需的字形驻留于该纹理中的位置的一组纹理坐标(例如,组成字母“G”的坐标)。在更复杂的系统中,对字体和类似的文本呈现解决方案的内置支持简化了在应用程序端的文本呈现。然而,这样的内置解决方案在电子游戏的语境中并不总是可用的。例如,当代的电子游戏控制台不拥有对字体的内置支持。同样地,为个人计算机开发的游戏通常要求比个人计算机操作系统提供更高性能的文本呈现解决方案。为这些原因,今天的电子游戏经常提供它们自己的文本呈现支持。用于在电子游戏中文本呈现有两种基本方法。在第一种方法中,计算机或控制台的CPU直接在呈现目标上写入比特。尽管该技术允许使用工业标准True Type字体呈现呈现,但是存在关于高存储器使用率和性能的众多极端缺点。例如,因为不是所有的电子游戏控制台都拥有足够的存储器来专用于这样的潜在的大的字体文件,CPU经常求助于高速缓存这些文件,这进一步地损害了运行时间性能。此外,大多数CPU不适合于呈现位图。例如,典型的CPU呈现字体的速度比图形处理单元(GPU)慢100到1000倍。第二种方法是,将字体作为位图化的纹理存储,并将单个字形作为对准屏幕空间的四元组(screen-space aligned quad)来呈现(例如,使用GPU的纹理光栅化器)。该技术使用GPU的本身的功能来以与GPU相关联的硬件的完全填充率(以每秒的像素数度量)来呈现基于位图的字体。该技术的一个局限是,当使用大字符集(例如,Unicode字符集)时,它可能需要超过目前硬件能力的纹理大小并使用大量存储器。当为国际市场创作电子游戏时,现有的文本呈现技术的问题加剧。例如,包括中文文本的游戏可能需要大约5000-8000个字形。如果每一字形预先呈现至一纹理位图的20×20像素部分,那么整个纹理位图可能是1800×1800像素,即3.24M像素。因为大多数的游戏控制台仅支持有限数量的纹理格式,当使用每像素8位的纹理时,最小空间需求是3.24MB。使用每像素16位的纹理(对每一红、绿、蓝和阿尔法通道分别使用4位),最小空间需求是6.48MB。因为典型的电子游戏控制台仅拥有大约32-64MB物理存储器和大约26-58的可用存储器,将这些存储器专用于文本和字体是不合理的。
技术实现思路
用于呈现包括文本的三维图形的方法和系统,允许未压缩的纹理位图被压缩。压缩的纹理位图可以包括可被解包为能被用于呈现文本符号和其它字形的输出像素的值。压缩的纹理位图中的每一像素可以为多于一个的值存储信息,包括对应于多种独特符号的压缩的像素的值。例如,压缩的纹理位图可以含有每一个像素至多存储m个值(例如,4个值)的大小为n个比特的多个像素(例如,16位像素)。m个值中的每一个可含有大小至多为n/m个比特(例如,4位)的压缩的值。多个值可以被存储在一单个像素中,例如使用与该像素关联的独特的红、绿、蓝和阿尔法(RGBA)通道。压缩的纹理位图可以被配置来用惯用的像素着色器来解包,诸如一般不执行逐位运算的像素着色器。该解包可以包括使用像素着色器中的屏蔽操作将关联于所需的值的像素分离。在本专利技术的另一实施例中,压缩的纹理位图可以拥有每像素存储大小为n/m个比特(例如2位的值)的m个(例如4个)压缩的值的大小为n个比特的像素(例如8位像素)。压缩的纹理位图可以被配置来通过惯用的像素着色器来解包,诸如一般不执行逐位运算的像素着色器。例如,该解包可以包括将取得的8位像素同诸如256色调色板中获得的32位的值的一查找表中的映射值匹配。该查找到的匹配值可以被分离成单独的子值来便于由像素着色器处理。例如,该查找到的值可以被分离成常规用于处理着色的像素的RGBA值。在本专利技术的又一实施例中,压缩的纹理位图可含有每像素存储n个1位(1-bit)值的大小为n个比特的像素(例如,8位像素)。压缩的纹理位图可以被配置来通过惯用的像素着色器来解包,诸如一般不执行逐位运算的像素着色器。该解包可以包括将取得的像素同诸如256色调色板中获得的32位的值的一查找表中的映射值匹配。该查找到的值可以被分离成单独的子值来便于由像素着色器处理。例如,该查找到的值可以被分离成常规用于处理着色的像素的RGBA值。附图说明图1是示出一惯用纹理位图的示例的框图。图2是示出在其中本专利技术可在一实施例中实现的环境的示例框图。图3是示出在一实施例中的从16位到4位的纹理打包例程的流程图。图4是示出在一实施例中用于在压缩的纹理位图中存储4位值的数据结构的示例的框图。图5是示出在一实施例中每像素16位的纹理位图被压缩至每像素4位的示例的展示和流程图。图6是示出在一实施例中用于对被压缩成每像素4位格式的纹理位图解包的例程的流程图。图7是示出在一实施例中可以被压缩至每像素2位格式的字体字符的示例的展示图。图8是示出在一实施例中从每像素8位被压缩至每像素2位的纹理位图的示例的展示图。图9是示出用于解包被压缩至每像素2位的纹理的例程的示例的流程图。图10是示出在一实施例中被压缩至每像素2位的字体的缩放的示例的展示图。图11是示出在一实施例中被打包至每像素1位的纹理位图的示例的展示图。图12是示出在一实施例中对被打包至每像素1位的纹理位图解包的例程的示例的流程图。在图中,相同的参考标号标识相同或基本相似的元素或动作。为便于对任何特定元素或动作的讨论,在参考标号中的最高的一位或多位指示该元素第一次被引入的附图标号(例本文档来自技高网
...

【技术保护点】
一种减少用于存储纹理中的符号的比特数的方法,所述纹理用于呈现包括文本符号的三维图形以在二维空间中显示,所述方法包括:    接收包括文本符号的未压缩纹理位图(502),所述文本符号包括轮廓描绘特征、下拉阴影特征和抗混叠特征中的至少一个,其中,所述未压缩纹理位图(502)使用每纹理像素16位格式的像素;以及    将所述未压缩纹理位图(502)打包成压缩的纹理位图(504),其中,所述压缩的纹理位图(504)使用4位格式和16位格式存储像素信息,且其中,使用以4位格式存储的像素信息呈现的文本符号保留任何轮廓描绘特征、下拉阴影特征以及抗混叠特征。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:MS韦策尔M奥斯汀
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

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

1
相关领域技术
  • 暂无相关专利