CN116113988A - 用于距离场图形渲染的抗锯齿 - Google Patents
用于距离场图形渲染的抗锯齿 Download PDFInfo
- Publication number
- CN116113988A CN116113988A CN202180055318.8A CN202180055318A CN116113988A CN 116113988 A CN116113988 A CN 116113988A CN 202180055318 A CN202180055318 A CN 202180055318A CN 116113988 A CN116113988 A CN 116113988A
- Authority
- CN
- China
- Prior art keywords
- sampling
- color
- pixel
- texels
- determining
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000009877 rendering Methods 0.000 title description 21
- 238000005070 sampling Methods 0.000 claims abstract description 256
- 238000002156 mixing Methods 0.000 claims abstract description 70
- 238000000034 method Methods 0.000 claims description 74
- 239000003086 colorant Substances 0.000 claims description 25
- 230000004044 response Effects 0.000 claims description 2
- 230000015654 memory Effects 0.000 description 50
- 238000004891 communication Methods 0.000 description 14
- 239000003550 marker Substances 0.000 description 10
- 230000009977 dual effect Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 230000002123 temporal effect Effects 0.000 description 7
- 238000013459 approach Methods 0.000 description 5
- 230000003190 augmentative effect Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 238000012952 Resampling Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- YBJHBAHKTGYVGT-ZKWXMUAHSA-N (+)-Biotin Chemical compound N1C(=O)N[C@@H]2[C@H](CCCCC(=O)O)SC[C@@H]21 YBJHBAHKTGYVGT-ZKWXMUAHSA-N 0.000 description 2
- 230000001154 acute effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 229920002239 polyacrylonitrile Polymers 0.000 description 2
- 201000006292 polyarteritis nodosa Diseases 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000010561 standard procedure Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- FEPMHVLSLDOMQC-UHFFFAOYSA-N virginiamycin-S1 Natural products CC1OC(=O)C(C=2C=CC=CC=2)NC(=O)C2CC(=O)CCN2C(=O)C(CC=2C=CC=CC=2)N(C)C(=O)C2CCCN2C(=O)C(CC)NC(=O)C1NC(=O)C1=NC=CC=C1O FEPMHVLSLDOMQC-UHFFFAOYSA-N 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 229910003460 diamond Inorganic materials 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000004424 eye movement Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/0002—Inspection of images, e.g. flaw detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/203—Drawing of straight lines or curves
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/001—Texturing; Colouring; Generation of texture or colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/503—Blending, e.g. for anti-aliasing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06T3/4007—Scaling of whole images or parts thereof, e.g. expanding or contracting based on interpolation, e.g. bilinear interpolation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
- G06T7/73—Determining position or orientation of objects or cameras using feature-based methods
- G06T7/74—Determining position or orientation of objects or cameras using feature-based methods involving reference images or patches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/90—Determination of colour characteristics
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computer Graphics (AREA)
- Quality & Reliability (AREA)
- Image Generation (AREA)
- Controls And Circuits For Display Device (AREA)
- Image Processing (AREA)
Abstract
在一个实施例中,一种计算系统可以在包括多个纹素的纹理内确定针对像素的采样位置,并且基于该采样位置,在该多个纹素中选择一组纹素。该组纹素中的每个纹素可以对距离场进行编码。与该采样位置相关联的插值距离场可以基于与该组纹素相关联的距离场而计算。该插值距离场可以表示该采样位置与纹理边缘之间的相对距离。根据基于该插值距离场的混合比例,该计算系统可以通过将与该边缘的第一侧相关联的第一颜色和与该边缘的第二侧相关联的第二颜色混合,确定该采样位置的混合颜色,并且基于该混合颜色,输出该像素的颜色。
Description
技术领域
本公开总体上涉及计算机图形。更具体地说,本公开涉及用于渲染使用距离场定义的文本、符号、字形和其它图形的改进技术。
背景技术
一般来说,计算机图形是使用计算机创建的视觉场景。三维(3D)计算机图形为用户提供了来自特定视角的3D对象的视图。3D场景中的每个对象(例如,茶壶、房屋、人等)可以使用基本的几何图形在3D建模空间中界定。例如,可以使用圆柱形管以及顶部圆形盖子和底部圆形盖子对圆柱形对象进行建模。圆柱形管和圆形盖子可以各自由较小的多边形(例如,三角形)网络或网格来表示。每个多边形可以依次基于它们各自的顶点在3D建模空间中的坐标而被存储。
计算机图形中的一个问题是对二维(2D)图形(例如,由纯色区域组成的图像,与通常包含阴影化区域或图案化区域的3D图形不同)进行高效和高质量渲染。2D图形可以放置在3D场景中并且从任何视角进行观察,这导致原始2D图形出现扭曲。当生成用于显示器的场景时,渲染系统通常从用户/相机的视角对2D图形进行采样,以确定屏幕的像素应显示的适当颜色。像素所显示的颜色通常使用诸如双线性插值的过滤技术来确定,该过滤技术基于2D图形中靠近相应采样位置的多种颜色信息来估计颜色。由于使用多种颜色信息来估计单个像素的颜色,因此所渲染的图形的边缘会看起来模糊或不那么清晰。解决前述2D图形问题的目标可以表征为:(1)定义一种更紧凑的方式来表示2D图形图像,以及(2)定义一种方式,以使多个纯色区域之间具有清晰的边缘,即使许多图形应用(诸如,增强现实和虚拟现实)中需要重新采样过滤来适应几何扭曲(这通常会导致模糊)。
这些问题在渲染文本时尤为突出,因为它需要渲染文本区域与背景区域之间的精细边缘细节。当文本为静态时,花费时间和计算资源对其进行高精度的预渲染不成问题。例如,一个字符可以被存储为每个纹素(texel)具有颜色数据(例如,红色、绿色和蓝色)的纹理(texture),并且在需要时被渲染在屏幕上。在小的时候,字符可能看起来还不错,但如果它被拉伸、放大、旋转或扭曲(例如,由于变换、透视(perspective)的变化或文本本身的变化),像素化和锯齿化(aliasing)可能会变得更明显。
发明内容
本文描述的实施例解决了与如上所论述的图形渲染相关的问题。更具体地说,特定实施例涉及改进的技术,这些技术用于渲染使用距离场定义的标记(如本文所使用的,“标记”指的是字符、字体、字形、图标和由纯色区域组成的其它2D图像)。由于文本是一特别困难和普遍的问题(其可通过本公开得到解决)的示例,因此将文本用作主要示例来说明所描述的各种技术。然而,应注意的是,本文所描述的技术可以应用于不同类型的标记,这些标记包括图标和其它2D图像。
可以使用距离场替代RGB颜色信息来指定图像中的每个像素(或纹理中的每个纹素)的外观,以表示文本、图标和矢量图形。可以在不引入伪影(areifact)的情况下对距离场进行重新采样,包括当标记被放大和/或拉伸时。然而,渲染距离场的标准方法会产生像素锯齿化的图像。这是因为在标准方法中,对距离场标记进行采样会为每个像素产生离散的预定值。例如,可以使用四个最接近的纹素的距离场的双线性插值,计算特定采样位置的距离场。采样距离场可以表示采样位置落入标记“内(in)”还是“外(out)”(例如,位于文本的主体的范围内或位于外而处于背景)。如果采样位置位于“内”,则会分配相应的颜色(例如,如果标记是绿色背景上的红色,则分配给“内”距离场的颜色将为红色)。类似地,如果采样位置位于“外”,则会分配相应的背景颜色(例如,绿色)。在该示例中,每个像素的颜色以二进制方式确定,这可能会在某些查看条件下引入锯齿化伪影。
本文所描述的特定实施例提供了用于在渲染由距离场定义的标记时产生抗锯齿结果的方式。例如,α(alpha)混合可以用于使标记的“内”颜色和“外”颜色混合以确定像素的颜色。混合的比例可以使用与像素相关联的采样位置的计算距离场来确定(例如,如果采样位置恰好位于标记的边缘上,则“内”颜色和“外”颜色可以50%-50%的方式均匀地混合)。当图像被拉伸时(例如,当从某个角度查看文本或使文本在3D环境中环绕曲面时),抖动也可以用于减少锯齿。在特定实施例中,抖动可以应用于样本间隔较宽的方向(例如,图像被拉伸得最厉害的方向)。
在特定实施例中,计算系统可以在包括多个纹素的纹理内确定针对像素的采样位置。基于该采样位置,该计算系统可以在该多个纹素中选择一组纹素。该组纹素中的每个纹素可以对至少一个距离场进行编码。基于与该组纹素相关联的距离场,该计算系统可以计算与该采样位置相关联的插值距离场。该插值距离场可以表示该采样位置与该纹理中描绘的边缘之间的相对距离。该计算系统可以基于该插值距离场,确定混合比例。该计算系统可以根据该混合比例,通过将与该边缘的第一侧相关联的第一颜色和与该边缘的第二侧相关联的第二颜色混合,确定该采样位置的混合颜色。该计算系统可以基于该采样位置的混合颜色,输出该像素的颜色。
根据本公开的一方面,提供一种方法,该方法包括通过计算系统:在包括多个纹素的纹理内确定针对像素的采样位置;基于该采样位置,在该多个纹素中选择一组纹素,其中,该组纹素中的每个纹素对至少一个距离场进行编码;基于与该组纹素相关联的距离场,计算与该采样位置相关联的插值距离场,其中,该插值距离场表示该采样位置与该纹理中描绘的边缘之间的相对距离;确定用于将该插值距离场从纹素单位缩放到像素单位的缩放因子;使用该缩放因子,对该插值距离场进行缩放;基于缩放后的插值距离场,确定混合比例;根据该混合比例,通过将与该边缘的第一侧相关联的第一颜色和与该边缘的第二侧相关联的第二颜色混合,确定该采样位置的混合颜色;以及基于该采样位置的混合颜色,输出该像素的颜色。
在一些实施例中,该方法还可以包括:访问缩放后的插值距离场的预定偏移;其中,进一步基于该缩放后的插值距离场的预定偏移而确定该混合比例。
在一些实施例中,该方法还可以包括:确定该多个纹素在像素空间中的第一方向上的第一采样间隔;确定该多个纹素在像素空间中的第二方向上的第二采样间隔,第二方向垂直于第一方向;以及将第一采样间隔与第二采样间隔进行比较,以确定哪一者较小;其中,基于第一采样间隔或第二采样间隔中的较小者而确定该缩放因子。
在一些实施例中,该方法还可以包括:确定该像素的一个或多个第二采样位置的一个或多个第二混合颜色;以及基于该像素的采样位置的混合颜色和该一个或多个第二采样位置的该一个或多个第二混合颜色,确定该像素的颜色;其中,该像素的颜色包括在帧中。
在一些实施例中,该方法还可以包括:确定该多个纹素在像素空间中的第一方向上的第一采样间隔;确定该多个纹素在像素空间中的第二方向上的第二采样间隔,第二方向垂直于第一方向;以及基于第一采样间隔与第二采样间隔之间的比较,确定抖动取向;其中,该纹理中的采样位置和该一个或多个第二采样位置与该像素中沿着该抖动取向分布的位置相对应。
在一些实施例中,该方法还可以包括:基于第一采样间隔与第二采样间隔之差,确定抖动范围;其中,该像素中的与该纹理中的该采样位置和该一个或多个第二采样位置相对应的位置沿着该抖动取向在该抖动范围内分布。
在一些实施例中,该像素的颜色可以与帧序列中的第一帧相关联,该方法还包括:确定与该帧序列中的第二帧中的第二像素相关联的第二采样位置的第二混合颜色,其中:第一帧中的像素的相对位置与第二帧中的第二像素的相对位置相同;并且像素中的与该纹理内的采样位置相对应的位置和第二像素中的与该纹理内的第二采样位置相对应的第二位置不同;基于第二采样位置的第二混合颜色,输出第二像素的第二颜色;其中,第二像素的第二颜色包括在第二帧中。
在一些实施例中,该方法还可以包括:确定该多个纹素在像素空间中的第一方向上的第一采样间隔;确定该多个纹素在像素空间中的第二方向上的第二采样间隔,第二方向垂直于第一方向;以及基于第一采样间隔与第二采样间隔之间的比较,确定抖动取向;其中,该像素中的该位置和第二像素中的第二位置沿着该抖动取向分布。
在一些实施例中,可以响应于确定该采样位置位于距该纹理中描绘的该边缘的预定范围内而混合第一颜色和第二颜色。
在一些实施例中,该预定范围可以为自该纹理中描绘的该边缘起的像素的一半。
在一些实施例中,基于混合颜色的输出颜色可以包括第一百分比的第一颜色和第二百分比的第二颜色。
在一些实施例中,第一百分比和第二百分比可以分别与第一颜色的表观透明度和第二颜色的表观透明度相对应。
根据本公开的另一方面,提供一种或多种计算机可读非暂态存储介质,该一种或多种计算机可读非暂态存储介质实施软件,该软件在被执行时能够操作为:在包括多个纹素的纹理内确定针对像素的采样位置;基于该采样位置,在该多个纹素中选择一组纹素,其中,该组纹素中的每个纹素对至少一个距离场进行编码;基于与该组纹素相关联的距离场,计算与该采样位置相关联的插值距离场,其中,该插值距离场表示该采样位置与该纹理中描绘的边缘之间的相对距离;基于该插值距离场,确定混合比例;根据该混合比例,通过将与该边缘的第一侧相关联的第一颜色和与该边缘的第二侧相关联的第二颜色混合,确定该采样位置的混合颜色;以及基于该采样位置的混合颜色,输出该像素的颜色。
在一些实施例中,该软件在被执行时还可以能够操作为:访问缩放后的插值距离场的预定偏移;其中,进一步基于该缩放后的插值距离场的预定偏移而确定该混合比例。
在一些实施例中,该软件在被执行时还可以能够操作为:确定该多个纹素在像素空间中的第一方向上的第一采样间隔;确定该多个纹素在像素空间中的第二方向上的第二采样间隔,第二方向垂直于第一方向;以及将第一采样间隔与第二采样间隔进行比较,以确定哪一者较小;其中,基于第一采样间隔或第二采样间隔中的较小者而确定该缩放因子。
在一些实施例中,该软件在被执行时还可以能够操作为:确定该像素的一个或多个第二采样位置的一个或多个第二混合颜色;以及基于该像素的该采样位置的混合颜色和该一个或多个第二采样位置的该一个或多个第二混合颜色,确定该像素的颜色;其中,该像素的颜色包括在帧中。
根据本公开的另一方面,提供一种系统,该系统包括:一个或多个处理器;以及一个或多个计算机可读非暂态存储介质,该一个或多个计算机可读非暂态存储介质耦接到该一个或多个处理器,并且包括指令,该指令在被该一个或多个处理器执行时能够操作为使得该系统:在包括多个纹素的纹理内确定针对像素的采样位置;基于该采样位置,在该多个纹素中选择一组纹素,其中,该组纹素中的每个纹素对至少一个距离场进行编码;基于与该组纹素相关联的距离场,计算与该采样位置相关联的插值距离场,其中,该插值距离场表示该采样位置与该纹理中描绘的边缘之间的相对距离;基于该插值距离场,确定混合比例;根据该混合比例,通过将与该边缘的第一侧相关联的第一颜色和与该边缘的第二侧相关联的第二颜色混合,确定该采样位置的混合颜色;以及基于该采样位置的混合颜色,输出该像素的颜色。
在一些实施例中,该处理器在执行该指令时还可以能够操作为:访问缩放后的插值距离场的预定偏移;其中,进一步基于该缩放后的插值距离场的预定偏移而确定该混合比例。
在一些实施例中,该处理器在执行该指令时还可以能够操作为:确定该多个纹素在像素空间中的第一方向上的第一采样间隔;确定该多个纹素在像素空间中的第二方向上的第二采样间隔,第二方向垂直于第一方向;以及将第一采样间隔与第二采样间隔进行比较,以确定哪一者较小;其中,基于第一采样间隔或第二采样间隔中的较小者而确定该缩放因子。
在一些实施例中,该处理器在执行该指令时还可以能够操作为:确定该像素的一个或多个第二采样位置的一个或多个第二混合颜色;以及基于该像素的该采样位置的混合颜色和该一个或多个第二采样位置的该一个或多个第二混合颜色,确定该像素的颜色;其中,该像素的颜色包括在帧中。
本发明的实施例可以包括人工现实系统或者结合人工现实系统被实现。人工现实是在向用户呈现之前已经以某种方式进行了调整的现实形式,该人工现实可以包括例如虚拟现实(virtual reality,VR)、增强现实(augmented reality,AR)、混合现实(mixed re-ality,MR)、混合现实(hybrid reality)、或它们的某种组合和/或派生物。人工现实内容可以包括完全生成的内容或与采集到的(例如,真实世界照片)内容相结合的生成的内容。人工现实内容可以包括视频、音频、触觉反馈或它们的某种组合,以上任何一种都可以以单通道或多通道(诸如,为观看者带来三维效果的立体视频)来呈现。此外,在一些实施例中,人工现实还可以与应用程序、产品、附件、服务或它们的某种组合相关联,这些应用程序、产品、附件、服务或它们的某种组合例如用于在人工现实中创建内容,和/或用于人工现实中(例如,执行其中的活动)。提供人工现实内容的人工现实系统可以在各种平台上实现,这些平台包括连接到主控计算机系统的头戴式显示器(head-mounted display,HMD)、独立的HMD、移动装置或计算系统、或能够向一位或多位观看者提供人工现实内容的任何其它硬件平台。
本文所公开的实施例仅为示例,并且本公开的范围不限于这些实施例。特定实施例可以包括本文所公开的实施例的部件、元件、特征、功能、操作或步骤中的全部、一些或不包括这些部件、元件、特征、功能、操作或步骤。根据本发明的实施例在所附权利要求中具体公开,该所附权利要求针对一种方法、一种存储媒介、一种系统和一种计算机程序产品,其中,一个权利要求类别(例如,方法)中提及的任何特征还可以要求保护在另一权利要求类别(例如,系统)中。所附权利要求书中的从属关系或反向引用是仅出于形式原因选择的。然而,还可以要求保护由于对任何前述权利要求(特别是多个从属关系)的有意反向引用而产生的任何主题,从而公开了权利要求及其特征的任何组合,并且无论所附权利要求中选择的从属关系如何都可以要求保护该权利要求及其特征的任何组合。可以要求保护的主题不仅包括如在所附权利要求中阐述的特征的组合,还包括权利要求中的特征的任何其它组合,其中,在权利要求提及的每个特征可以与权利要求的任何其它特征或其它特征的组合进行组合。此外,本文所描述或描绘的实施例和特征中的任一者可以在单独的权利要求中要求保护,和/或与本文所描述或描绘的任何实施例或特征进行任何组合,或与所附权利要求的特征中的任一者进行任何组合。
附图说明
图1示出了具有各种采样位置的示例纹素阵列,这些采样位置置于字符形状的边缘内部和外部。
图2示出了所采样的纹素阵列投影到X-Y像素空间中的各向同性的缩放情况。
图3示出了所采样的纹素阵列投影到X-Y像素空间中的各向异性的缩放情况。
图4示出了用于减少图形渲染中的锯齿的示例方法。
图5A示出了当采样间隔在X方向上较大时像素的抖动采样位置的示例。
图5B示出了当采样间隔在Y方向上较大时像素的抖动采样位置的示例。
图6示出了用于像素的抖动采样位置的示例方法。
图7是具有各种采样位置的示例双距离场标记(dual distance field label),这些采样位置置于字符形状的边缘内部和外部。
图8示出了示例计算机系统。
具体实施方式
本申请描述了当变换、透视(perspective)或图形本身可能实时动态地变化时(例如在增强现实(AR)和虚拟现实(VR)中进行图形渲染的情况下),用于图形渲染(例如,文本、图标、字形、2D图像等)的技术。实时图形渲染中使用的一种示例技术依赖于将字符形状(例如,字形)存储在被称为有符号距离场(signed distance field)或简称为距离场(distance field)的结构中。一般来说,距离场是有符号距离变换应用于N维空间子集的结果,该N维空间子集是待渲染的矢量形状(例如,文本、图标等)。距离场将空间中的每个点P映射到标量的有符号距离值(scalar signed distance value)。有符号距离可以按照如下定义:如果点P属于子集(例如,如果点P位于待渲染的文本或图标内),则有符号距离为到子集形状的最近边缘的正最小距离。这也被称为位于“内部(inside)”或“内”,并且可以通过使m位距离场的最高有效位(MSB)为1而编码。如果点P不属于子集(例如,如果点P位于待渲染的文本或图标外部),则有符号距离为到子集形状的最近边缘的负距离。这也被称为位于“外部”或“外”,并且可通过使m位距离场的MSB为0而编码。距离场可以使用其域仅为二维空间的欧式距离(Euclidean distances)。
一般来说,特定实施例的用于驱动AR和/或VR显示器的显示引擎被馈送以供显示的数据,并且显示引擎执行调整AR/VR显示装置(例如,用户使用或佩戴的装置)的特性所必需的扭曲、重新采样、合成和颜色校正。显示给用户的场景的每个帧是基于用户的当前头部位置、当前眼睛位置、当前眼睛运动、其它相关位置或它们的任意组合生成的。每个帧的场景细节可以通过对基于标准计算机处理单元(Computer Processing Unit,CPU)或图形处理单元(Graphics Processing Unit,GPU)的渲染结果生成的表面执行双线性插值来生成。表面可以是矩形纹理图,该矩形纹理图具有变换矩阵以指定其在场景中的位置。纹理图的基本单位是纹素(也被称为,纹理元素或纹理像素),并且纹理图包括表示特定纹理空间的纹素阵列。
距离场标记(distance field label)不容易受到由插值操作引起的模糊边缘的影响。距离场可以提高渲染的清晰度,以降低图像边缘的模糊度(例如,通过减少文本边缘处的模糊)。另外,可以在不引入伪影的情况下,对距离场进行重新采样,包括当标记被放大或拉伸时。然而,距离场标记的负面影响是3D环境中的图形的锯齿化,尤其是图形(诸如,文本、图标、字形和其它2D图像)的边缘附近。这是因为在传统方法中,对有符号距离场进行重新采样会为每个像素生成一有符号值,其中,符号指定样本位置落在边缘的哪一侧。如果位于内侧,则渲染内部颜色;如果位于外侧,则渲染外部颜色。本文中描述的技术提供了多种方式来利用距离场产生抗锯齿结果。这些技术可以与单距离的距离场和多距离的距离场两者一起使用。此类技术的细节在本文中论述的申请号为16/583,878的美国专利申请(“距离场调色板(Distance Field Color Palette)”,于2019年9月26日提交)和申请号为16/584,016的美国专利申请(“双距离场调色板(Dual Distance Field Color Palette),于2019年9月26日提交)中进行了描述。
单距离场
本文中描述的特定实施例针对各自具有单距离场的多个纹素。在高层级,距离场用于表示2D标记(诸如,纹理)中的纯色区域(例如,前景和背景)之间边缘的位置。每个纹素存储纹素中心到最近边缘的距离的表示,以最大距离为界,超过该最大距离的纹素被确定为位于特定阵列外部。在特定实施例中,可以分配6个位来表示距离值,其中,MSB表示纹素中心是位于“内”(例如,由1表示)还是“外”(例如,由0表示)。如果纹素距边缘较远,则其余5个位会为大值;相反,如果纹素靠近边缘,则其余5个位会小。在特定实施例中,针对采样位置P,可以使用四个最接近的纹素的距离场的双线性插值,确定采样位置P位于边缘的哪一侧。作为示例,插值距离的高阶位(例如,MSB)中的零(0)表示采样位置P位于由边缘界定的区域外部,插值距离的高阶位中的一(1)表示采样位置P位于由边缘界定的区域内部。如果距离为零,则采样位置P恰好位于边缘上。值得注意的是,本文中描述的特定实施例中的距离场可以是无符号数字,使得最低值为零,并且没有值对恰好位于边缘上的位置进行编码。这与使用有符号值编码的其它距离场形成对比(例如,距离场的MSB可以表示该值是正的还是负的(与“内”或“外”相对应),或零(与“位于边缘上(on edge)”相对应))。无符号距离场编码是有益的,因为它避免了某些问题(诸如当边缘穿过纹素中心时)。
在特定实施例中,标记纹理的每个纹素可以包括距离场。距离场限定的“内”和“外”状态分别映射到标记颜色和背景颜色。例如,如果标记颜色为红色并且背景为绿色,则采样距离场为“内”的像素将对应于红色,采样距离场为“外”的像素将对应于绿色。在特定实施例中,标记纹理的每个纹素可以包括距离和颜色索引值两者。颜色索引值用于在颜色查找表中选择条目,该颜色查找表可以为每个标记进行定制。一般来说,针对给定的采样位置,选择纹素的哪个颜色索引取决于采样位置的插值距离(例如,无论其MSB=0(外)还是MSB=1(内))和采样位置在纹理空间中相对于附近纹素的位置。针对单距离标记,两个交错的颜色索引指定当插值距离的MSB为零(外)或一(内)时将使用的颜色。针对双距离标记(在下文更详细地论述),四个交错的颜色索引指定两个插值距离的MSB的四种组合所使用的颜色。
图1示出了具有各种采样位置的示例纹素阵列100,这些采样位置位于字符形状110的边缘内部和外部。字符形状110示出了“A”,其中,边缘120将字符形状110的颜色(例如,阴影区域)与背景130的颜色分开。阴影区域内的纹素(为简单起见,未示出)使用表示它们位于“内(in)”(其中,MSB=1)的距离值进行编码,而阴影区域外部的纹素使用表示它们位于“外(out)”(其中,MSB=0)的距离值进行编码。另外,边界140将背景130与阵列纹素100之外的区域划清。示出了各种采样位置,这些采样位置包括位于由字符形状110的边缘120界定的区域内部的采样位置150、位于由字符形状110的边缘120界定的区域外部的采样位置160、位于字符形状110的边缘120上的采样位置170和位于纹素阵列100的边界140外部的样本180。
如下文将更详细论述的,对采样位置150、160中的每者的四个最接近的纹素的无符号距离函数(unsigned distance function)进行线性插值将确定:采样位置150的插值距离具有MSB=1(内)且采样位置160的插值距离具有MSB=0(外)。另外,用于采样位置170的四个最接近的纹素的距离函数的线性插值将确定:插值距离恰好是无符号距离场(unsigned distance field)的范围的一半,这表示采样位置170恰好位于边缘120上(如果距离场是有符号的而不是无符号的,则“位于边缘上”的情况将由插值距离0来表示)。此外,采样位置180将被确定为位于纹素阵列100外部,因此具有为零的无符号距离和与无颜色或“透明”结果相关联的为零的索引。
在特定实施例中,针对采样位置计算的插值距离可以用于确定抗锯齿的α混合值。在特定实施例中,可以使用α混合来确定由恰好位于边缘上或靠近边缘的采样位置表示的像素区域的颜色。每个采样位置可以具有过滤器区域(filter region),该过滤器区域与由采样位置表示的像素区域相对应。如果采样位置及其过滤器区域完全位于标记内部,则与采样位置相对应的像素的颜色将为标记的“内”颜色。例如,在图1中,采样位置150具有过滤器区域151,其中,该过滤器区域的半径比采样位置150与边缘120之间的距离短。因此,与采样位置150相对应的像素的颜色将为“A”标记的“内”颜色。在这种情况下,不需要α混合。类似地,如果采样位置及其过滤器区域完全位于标记外部,则与采样位置相对应的像素的颜色将为标记的“外”颜色。例如,采样位置160具有过滤器区域161,其中,该过滤器区域的半径比采样位置160与边缘120之间的距离短。因此,与采样位置160相对应的像素的颜色将为标记的“外”颜色。因此,在这种情况下,也不需要α混合。
当采样位置的过滤器区域包括边缘的两侧时,则可以使用α混合来将“内”颜色与“外”颜色混合,以生成相应像素的混合颜色。例如,如果采样位置160具有更大的过滤器区域162(大于采样位置160与边缘120之间的距离),则过滤器区域162将包括内部颜色和外部颜色这两者。在所示出的示例中,当两种颜色混合时,外部颜色的权重将明显高于内部颜色的权重。作为另一示例,位于边缘120上的采样位置170具有过滤器区域171,该过滤器区域均匀地覆盖标记的内部和外部这两者。因此,内部颜色和外部颜色可以均匀地混合,以生成相应像素的颜色。
如上述示例中所示,当采样位置的过滤器区域与边缘叠置时,应当使用抗锯齿。在特定实施例中,采样位置的插值距离可以用于确定α混合值,并且该值可以偏移,使得当插值距离为0时,α为0.5。为了恰当地抗锯齿,过滤器半径应当为像素的约一半(例如,正方形像素的对角线长度的1/2)。因此,如果采样位置距最近边缘的距离大于像素的一半,则不需要抗锯齿。相反,如果采样位置距最近边缘的距离小于像素的一半,则应当执行抗锯齿。然而,表示采样位置与最近边缘之间的距离的插值距离场可能是按照纹素(而非像素)的单位来测量。因此,可能需要将插值距离场从纹素单位转换为像素单位。另外,在3D计算机图形中,可能通常以倾斜的角度从相机查看标记出现的表面,导致标记的纹理的填充区域不是正方形。这种各向异性的情况也需要处理以适当地执行距离转换。下文描述的α混合技术解决了这些问题,使得α在外部或内部距离边缘的二分之一像素处分别达到值0和值1。算法包括计算用于将采样位置的插值距离从纹素单位转换为像素单位的缩放因子(scalefactor)。然后,可以使用转换后的距离,确定合适的α混合值,用于使内部颜色和外部颜色混合。另外,可以对该算法进行调整,以更清晰或更模糊。
α混合
用于单距离场标记的α混合方法的论述将侧重于图2和图3中所示的实施例以及图4中所描述的方法。如上文简要地解释的,缩放因子用于将插值距离从纹素单位转换为像素单位。
在特定实施例中,可以基于投影在像素空间中的纹素的尺寸(dimension)来计算缩放因子。图2示出了所采样的纹素阵列投影到X-Y像素空间中的各向同性的缩放情况。图2示出了位于像素中心210处的采样位置的阵列,以及纹素位置220(整体被称为纹素位置220a、220b、220c和220d)的歪斜阵列。具体地,图2示出了位于像素中心210处的采样位置的四乘四阵列的示例,每个像素中心由沿着X轴线212和Y轴线214的“X”表示。纹素位置220各自由沿着U轴线222和V轴线224的“O”表示。像素210之间的间隔在X方向和Y方向上相同,并且纹素位置220之间的间隔226沿着U轴线222和V轴线224相同。这被称为各向同性的缩放情况。
图3示出了各向异性的缩放情况。类似于图2,图3示出了位于像素中心310处的采样位置的阵列,以及纹素位置320(整体被称为纹素位置320a、320b、320c和320d)的歪斜阵列。像素中心310布置在X轴线312和Y轴线314上,纹素位置布置在U轴线322和V轴线324上。像素310之间的间隔在X方向和Y方向上相同,但纹素位置320之间的间隔(例如,340和342)沿着U轴线和V轴线不相同。这被称为各向异性的缩放情况。
在特定实施例中,用于将采样位置的插值距离从纹素单位转换为像素单位的缩放因子可以基于投影在X-Y像素空间中的纹素位置之间的距离,如图2和3所示。可以通过多种方式测量纹素位置之间的距离(例如,测量直接距离或欧式距离),但出于本示例的目的,使用曼哈顿距离。
在一个实施例中按照如下测量纹素位置之间在像素阵列的X和Y方向上的曼哈顿距离。参考图2,点虚线232、234、236和238测量两个相连的纹素位置220a与220d之间的曼哈顿距离。例如,通过对沿着U轴线和X轴线的位置的变化(dU/dX)232和沿着V轴线和X轴线的位置的变化(dV/dX)234进行求和,确定纹素200a与纹素220d之间在X方向上的曼哈顿距离(lenX),如下所示:
通过对沿着U轴线和Y轴线的位置的变化(dU/dY)236和沿着V轴线和Y轴线的位置的变化(dV/dY)238进行求和,确定纹素位置220a与纹素位置220d之间在Y方向上的曼哈顿距离(lenY),如下所示:
这些式子还可以应用于图3中所示的各向异性的缩放情况。点虚线332(dU/dX)、334(dV/dX)、336(dU/dY)和338(dV/dY)测量两个相连的纹素位置320a与纹素位置320d之间的曼哈顿距离。
在确定距离lenX和lenY之后,可以使用下式确定两个距离中的最小值:
lenmin=min(lenX,lenY)。
如果纹素之间的间隔相同(例如,各向同性)(如图2所示),则lenX等于lenY。然而,如果纹素之间的间隔不相同(例如,各向异性)(如图3所示),则lenX不等于lenY,并且选择lenX与lenY之间的最小值来计算缩放比例(scaling)。通常,选择最小值是因为样本间隔较小的方向会以增加锯齿为代价而减少模糊。可以使用下式来计算缩放比例S:
其中,因子F是可调整的。例如,在正常设置下,F可以设置为1.0,但可以增大以增加模糊但减少由α混合产生的锯齿,或可以减小以增加锯齿但减少由α混合产生的模糊。可以使用F的倒数1/F来测量像素中过滤器半径的宽度(例如,在X方向或Y方向上,具有最小的长度)。因此,如果F=1,则过滤器半径为1像素宽。随F接近0,过滤器半径增大,并且随F接近无穷大,过滤器半径减小。作为示例,如果F=2,则过滤器半径将为1/2像素宽;如果F=1/2,则过滤器半径将为2像素宽。然后,使用缩放比例S将采样位置的插值距离从纹素单位转换为像素单位。如先前所描述的,针对采样位置,可以对四个最接近的纹素的距离场进行插值,以确定距文本、图标、字形或其它2D图像的边缘的有符号距离D。在一些实施例中,可以以纹素为单位测量D(例如,如果D为0.5,则纹素中心距边缘0.5纹素)。作为示例,再次参考图1,对四个最接近的纹素进行插值可以用于确定采样位置150位于由字符形状110的边缘120界定的区域内部,采样位置160位于由字符形状110的边缘120界定的区域外部,采样位置170位于字符形状110的边缘120上,或采样位置180位于纹素阵列100的边界140外部。
一旦确定了采样位置的缩放比例S和距离D,就可以确定α值(α)(或透明度值)。α值(α)表示“内”颜色的比例,1-α表示“外”颜色(反之亦然)。也就是说,可以基于α值确定混合比例。α值被限制在[0,1]的范围,并且基于将缩放后的距离(即,S*D)偏移例如1/2而被计算,从而当采样位置恰好位于边缘上(D=0)时,α值为1/2。可以使用下式计算α值(α):
在对边缘内部的颜色的α值和边缘外部的颜色的α值求解之后,可以通过使与该边缘的第一侧相关联的第一颜色(例如,“内”颜色)和与该边缘的第二侧相关联的第二颜色(例如,“外”颜色)混合,以确定采样位置的混合颜色。例如,可以使边缘内部的颜色和边缘外部的颜色混合。可以使用下式来确定包括采样位置的像素的颜色:
颜色=α*颜色内+(1-α)*颜色外。
基于混合颜色的输出颜色可以包括第一百分比的第一颜色和第二百分比的第二颜色。第一百分比和第二百分比可以分别与第一颜色的表观透明度和第二颜色的表观透明度相对应。例如,针对D等于0(其中采样位置恰好位于字符的边缘上),该位置的α值(不管是内部α值还是外部α值)为1/2,这表示颜色的透明度将为字符内部的已知颜色的50%和字符外部的已知颜色的50%。因此,如果黑色文本位于白色背景上,则位于字符边缘的采样位置(例如,恰好位于图1中字母A的边缘上的采样位置170)将为黑色内部颜色和白色外部颜色的等量混合:灰色。α值可以限制在[0,1]的范围。此外,虽然描述了缩放后距离(即,S*D)的1/2像素的偏移,但是其它偏移(例如,其中当采样位置位于距纹理中描绘的边缘的预定范围内时,第一颜色和第二颜色混合),诸如当采样位置距纹理中描绘的边缘1/8、1/4、3/8、5/8、3/4或7/8像素时,也可能会将抗锯齿颜色朝向“内”颜色或“外”颜色中的任一者偏置。使缩放后的距离(即,S*D)偏移有效地使边缘按照指定偏移距离(以像素计)移动。在一些实施例中,替代使缩放后的距离偏移,可以使缩放前的距离D偏移,以有效地使边缘按照指定偏移距离(以纹素计)移动。例如,使D偏移3/4有效地使边缘移动3/4纹素。此外,虽然本公开描述了通过将两幅颜色图像彼此叠加在一起的α混合,但是也可设想其它形式的混合或掺和模式,诸如溶解、倍增和筛选,或其它模式。
图4示出了用于减少图形渲染中的锯齿的示例方法400。该方法可以在步骤410处开始,其中,计算系统在包括多个纹素的纹理内确定针对像素的采样位置。在步骤420处,计算系统基于该采样位置,在多个纹素中选择一组纹素,其中,该组纹素中的每个纹素对至少一个距离场进行编码。在步骤430处,计算系统基于与该组纹素相关联的距离场,计算与该采样位置相关联的插值距离场,其中,插值距离场表示采样位置与纹理中描绘的边缘之间的相对距离。在步骤440处,计算系统确定用于将该插值距离场从纹素单位缩放为像素单位的缩放因子。在步骤450处,计算系统使用该缩放因子,对该插值距离场进行缩放。在步骤460处,计算系统基于该插值距离场,确定混合比例。在步骤470处,计算系统可以根据该混合比例,通过将与边缘的第一侧相关联的第一颜色和与边缘的第二侧相关联的第二颜色混合,确定该采样位置的混合颜色。在步骤480处,计算系统可以基于该采样位置的混合颜色,输出该像素的颜色。在适当的情况下,特定实施例可以重复图4的方法中的一个或多个步骤。尽管本公开描述并且示出了图4的方法中的特定步骤以特定顺序发生,但是本公开考虑图4的方法中的任何合适步骤以任何合适顺序发生。此外,虽然本公开描述并且示出了用于减少图形渲染中的锯齿的示例方法包括图4的方法的特定步骤,但是本公开考虑用于减少图形渲染中的锯齿的任何合适方法包括任何合适步骤,在适当的情况下,该方法可以包括图4的方法中的所有步骤、一些步骤或不包括这些步骤。此外,虽然本公开描述并且示出了执行图4的方法的特定步骤的特定部件、装置或系统,但是本公开考虑执行图4的方法的任何合适步骤的任何合适部件、装置或系统的任何合适组合。
抖动
α混合方法的一个局限性发生在标记被拉伸的时候。当出现这种情况时,在U方向和V方向上以不同间隔对存储距离的纹理(以(U,V)坐标作索引)进行采样。例如,如果字符“A”的纹理在其投影到像素空间中时显得更宽(即,其被水平拉伸),则纹理在水平方向上的采样会比在竖直方向上的采样更稀疏。因此,使用同一采样过滤器会导致一个方向上的过度模糊或另一方向上的更多锯齿。
特定实施例可以对样本间隔较小的方向(例如,基于lenmin)上的α-混合进行优化,以避免过度模糊。然而,这会在另一方向(例如,lenmax方向)上产生更加锯齿化的边缘。这一问题可以通过在样本间隔较宽的方向上使用抖动或超采样来缓解。
在传统的抖动方法中,通过将不同的二维(x,y)偏移应用于像素的采样位置(例如,采样位置可以与像素的中心相对应)来实现抗锯齿,以使得多个采样位置用于确定像素的颜色。可以通过针对每个帧在每个1×1像素区域内分散多个采样位置来实现抖动。也就是说,针对任何给定的帧,像素的混合颜色可以基于像素区域内的多个采样位置来确定。例如,分散在像素区域内的五个抖动采样位置可以产生不同的颜色(例如,每个采样位置的颜色可以使用上述α-混合技术来确定)。与抖动采样位置相对应的五种颜色可以进行平均,以确定像素的颜色。然而,这种空间抖动方法意味着需要更多的计算来生成每个帧。
为了减小计算压力,另一种选择是时间上进行抖动,使得每帧每个像素使用的采样位置的数量保持相同(例如,每帧每个像素1个采样位置),但是每帧中使用不同的(x,y)偏移。例如,针对特定像素,让p1……pn分别表示该像素在帧1……n中的颜色。颜色p1……pn是使用像素内的不同采样位置自纹理进行采样的。由于采样位置不同,因此同一像素的颜色p1……pn可能在帧与帧之间有所不同。如此,时间上进行抖动容易产生闪烁伪影(flashing artifact),除非帧率高或组中的帧的数量小。例如,如果帧率为1000fps(frames per second),则我们可以选择16帧序列,使得该序列每秒重复出现约60次。如果帧率为180fps,则我们可以选择4帧序列,使得该序列每秒重复出现45次。
在特定实施例中,抖动可以与以上描述的α-混合技术一起使用,以减少标记被拉伸时的锯齿化。可以针对样本间隔较小的方向(例如,lenmin)优化α-混合,并且可以在样本间隔较大的方向(例如,lenmax)上使用抖动。由于这仅涉及(x)或(y)偏移而不涉及二维(x,y)偏移,因此需要较少数量的采样位置。因此,可以在不引入闪烁伪影的情况下,以较低帧率实现抗锯齿。一维抖动采样位置之间的间距基于U样本间隔和V样本间隔之差(例如,lenmax-lenmin)。因此,如果不存在拉伸(例如,lenmax-lenmin),则抖动采样位置在各帧中保持处于相同位置。随拉伸量的增加,抖动采样位置变得更远以作为补偿。
如以上方法中描述的,在确定lenX和lenY之后,可以确定lenmin。另外,可以确定纹素位置(例如,跨过X轴线312或Y轴线314)之间的两个距离中的较大者,lenmax,如下文所示:
lenmax=max(lenX,lenY)。
lenX和lenY中的较大者可以确定一抖动取向。可以通过仅在与lenmax相对应的方向(例如,图像被拉伸得最厉害的方向)上抖动,以减小计算压力。例如,该方向可以与纹理中的水平采样间隔或纹理中的竖直采样间隔相对应。在确定lenmax和lenmin之后,可以使用下式来计算抖动max:
与lenmax相对应的方向上的抖动采样位置可以选择为在-抖动max(负抖动max)和+抖动max(正抖动max)的范围内。
图5A示出了当采样间隔在X方向上较大时像素500的抖动采样位置501至抖动采样位置505的示例。例如,使用以上描述的α混合算法,计算系统可以确定lenmin对应于leny。因此,该系统可以基于leny对α混合算法中使用的缩放因子S进行优化。为了减少X方向上的锯齿化,该系统可以对X方向上的采样位置进行抖动,如图5A所示。所计算的抖动max值可以用于确定抖动的空间范围。由于抖动max与lenmax-lenmin成比例,因此当采样间隔较大时抖动的空间范围较大,当采样间隔较小时抖动的空间范围较小。例如,如图5A所示,采样位置可以在X方向上分布在由抖动max定义的距中心采样位置501的阈值距离内。一旦确定了范围,就可以在该范围内选择任何合适数量的采样位置(例如,图5A示出了正在使用的五个采样位置)。如果使用空间抖动,则五个抖动采样位置501至505可以用于对单个帧的纹理进行采样。如果使用时间抖动,则帧序列(sequence of frames)中的第一帧可以使用采样位置501来确定像素500的颜色,帧序列中的第二帧可以使用采样位置502来确定像素500的颜色,以此类推。在特定实施例中,可以同时使用空间抖动和时间抖动这两者。例如,帧序列中的第一帧可以使用采样位置502和503来确定像素500的颜色,帧序列中的第二帧可以使用采样位置501、504和505来确定像素500的颜色。
图5B示出了当采样间隔在Y方向上较大时像素550的抖动采样位置551至抖动采样位置555的示例。例如,使用以上描述的α混合算法,计算系统可以确定lenmin对应于lenx。因此,该系统可以基于lenx对α混合算法中使用的缩放因子S进行优化。为了减少Y方向上的锯齿化,该系统可以对Y方向上的采样位置进行抖动,如图5B所示。所计算的抖动max值可以用于确定抖动的空间范围。例如,如图5B所示,采样位置可以在Y方向上分布在由抖动max定义的距中心采样位置551的阈值距离内。一旦确定了范围,就可以在该范围内选择任何合适数量的采样位置(例如,图5B示出了正在使用的五个采样位置)。如先前所描述的,采样位置可以用于空间抖动方案、时间抖动方案或空间抖动方案和时间抖动方案的组合。
图6示出了用于抖动的示例方法600。该方法可以在步骤605处开始,其中,计算系统可以确定纹素在像素空间中的X方向上的采样间隔。在步骤610处,计算系统可以确定纹素在像素空间中的Y方向上的采样间隔。在步骤615处,计算系统可以将抖动取向设置为位于纹素在X方向上的采样间隔或纹素在Y方向上的采样间隔中的较大者的方向上。在步骤620处,计算系统可以基于两个采样间隔之差,确定抖动范围。在步骤625处,计算系统可以在抖动范围内,选择抖动取向上的采样位置。采样位置可以用于空间抖动方案、时间抖动方案或空间时间抖动方案和时间抖动方案的组合。在步骤630处,计算系统可以使用α混合,在每个采样位置处进行采样。在适当的情况下,特定实施例可以重复图6的方法中的一个或多个步骤。尽管本公开描述且示出了图6的方法中的特定步骤以特定顺序发生,但是本公开考虑图6的方法中的任何合适步骤以任何合适顺序发生。此外,虽然本公开描述并且示出了用于空间抖动的示例方法包括图6的方法中的特定步骤,但是本公开考虑用于空间抖动的任何合适方法包括任何合适步骤,在适当的情况下,该方法可以包括图6的方法的步骤中的所有步骤、一些步骤或不包括这些步骤。此外,虽然本公开描述并且示出了执行图6的方法中的特定步骤的特定部件、装置或系统,但是本公开考虑执行图6的方法中的任何合适步骤的任何合适部件、装置或系统的任何合适组合。
多距离混合
以上描述的α-混合和抖动技术也可以应用于其中的每个纹素具有多于一个距离场的纹理。当被渲染时,使用基于仅到一个边缘的距离的单个距离场可能引起字符或字形的尖角(例如,菱形形状(diamond shape)),显得圆滑或平滑,尤其是当距离场的分辨率降低时。对此的解决方案是使用双距离场来采集两个边缘之间的相交部(intersection)处的信息。在特定实施例中,当标记(例如,字符、字形等)被创建时,创建该标记的创作软件可以识别并且标记边缘,诸如类型0边缘和类型1边缘。双重距离场(dual dis-tance field)采集纹素距两种不同类型边缘的距离,以保存相交部数据。双重距离场标记中的每个纹素都有两个距离值:距离0表示从纹素到最近的类型0边缘的距离,距离1表示从纹素到最近的类型1边缘的距离。
如先前所论述的,纹素的每个距离值对该纹素相对于自其测量距离的边缘位于“内”还是“外”而进行编码。针对双重距离场纹素,其距离值中的每个可以位于“内”或“外”,这意味着每个纹素有四种“内”和“外”组合。图7示出了与字母“F”相关联的示例纹理700,其中,两个不同边缘类型的边缘在顶点处相交,使得四个不同区域与位于多个边缘中的每个边缘内部或外部的四种不同组合相关联。如图7所示,类型0边缘710和类型1边缘712在点714处相交。尽管边缘710、712被绘制为实线,但是每个边缘710、712的整个长度不一定在标记中都是可见的(不可见部分示出为虚线)。边缘712下方的纹素相对于边缘712可以被视为“内”,边缘712上方的纹素相对于边缘712可以被视为“外”。类似地,边缘710右侧的纹素相对于边缘710可以被视为“内”,边缘710左侧的纹素相对于边缘710可以被视为“外”。
由于类型0边缘710与类型1边缘712在点714处相交,因此形成四个不同区域(即,左上方区域、右上方区域、左下方区域和右下方区域)。每个区域中的纹素相对于两个边缘710、712将具有不同的“内”和“外”组合。例如,左上方区域中的纹素相对于边缘710/712将分别具有外/外(Out/Out)组合;右上方区域中的纹素将具有内/外(In/Out)组合;左下方区域中的纹素将具有外/内(Out/In)组合,右下方区域中的纹素将具有内/内(In/In)组合。“内”和“外”的每个组合可以与颜色相关联。例如,内/内的区域将被视为前景,而其它一切区域(即,外/外、内/外或外/内)将被视为背景。使用图7作为示例,针对点714处的字母“F”的锐角(acute angle),内/内将指定为前景,其余部分将被设置为背景。
以上描述的α-混合和抖动技术可以应用于具有多距离场的纹素,如下所述。每个内/外组合可以与颜色相对应。例如,继续以上示例,内/内组合可以与颜色C内相对应,其它三个组合可以全部与颜色C外相对应。可以使用α值来计算这两种颜色的α-混合比例,该α值是使用以上描述的方法计算出的。让α1表示位于一个边缘(例如,边缘710)“内”的α值,α2表示位于另一边缘(例如,边缘712)“内”的α值。可以使用下式计算像素的颜色:
颜色=(α1*α2)*C内+(1-α1)*(1-α2)*C外+(1-α1)*(α2)*C外+(α1)*(1-α2)*C外=(α1*α2)*C内+(1-α1*α2)*C外。
当靠近像素的采样位置的多个边缘选择两种以上的颜色时,也可以使用以上方法。在一般情况下,多个边缘中的每个边缘的α或一减α的乘积表示与内颜色和外颜色的组合相关联的颜色的贡献。可以以多种方式指定与边缘的组合相关联的颜色,这些方式包括全局规则或与距离纹理的不同部分相对应的数据的阵列或其它结构。再次参考图7,外/外区域可以与颜色C外-外相关联,内/内区域可以与颜色C内-内相关联,内/外区域可以与颜色C内-外相关联,外/内区域可以与颜色C外-内相关联。当在点714附近进行采样时,采样位置将具有距边缘710的插值距离和距边缘712的另一插值距离。取决于两个边缘中的哪一者更靠近采样位置,α-混合技术可以应用于更靠近边缘的插值距离。所得α-混合比例可以应用于与采样位置所处的区域相关联的颜色以及与跨过更靠近的边缘的相邻区域相关联的颜色。以采样位置720为例。通过将采样位置720距边缘712的插值距离和距边缘710的插值距离进行比较,计算系统能够确定采样位置720更靠近边缘712。基于到边缘712的插值距离,该系统可以计算颜色C内-内与颜色C内-外之间的α-混合比例。混合结果将用作相应像素的颜色。例如,让α1表示位于一个边缘(例如,边缘710)“内”的α值,α2表示位于另一边缘(例如,边缘712)“内”的α值。可以使用下式计算像素的颜色:
颜色=(α1*α2)*C内-内+(1-α1)*(1-α2)*C外-外+(1-α1)*(α2)*C外-内+(α1)*(1-α2)*C内-外。
系统和方法
图8示出了示例计算机系统800。在特定实施例中,一个或多个计算机系统800执行本文描述或示出的一种或多种方法中的一个或多个步骤。在特定实施例中,一个或多个计算机系统800提供本文描述或示出的功能。在特定实施例中,在一个或多个计算机系统800上运行的软件执行本文描述或示出的一种或多种方法中的一个或多个步骤,或提供本文描述或说明的功能。特定实施例包括一个或多个计算机系统800中的一个或多个部分。本文中,在适当的情况下,对计算机系统的引用可以包括计算装置,反之亦然。此外,在适当的情况下,对计算机系统的引用可以包括一个或多个计算机系统。
本公开考虑任何合适数量的计算机系统800。本公开考虑采用任何合适的物理形式的计算机系统800。作为示例而非限制,计算机系统800可以是嵌入式计算机系统、片上系统(System-On-Chip,SOC)、单板计算机(Single-Board Computer,SBC)系统(例如,诸如计算机模块(Computer-On-Module COM)或系统模块(System-On-Module,SOM))、台式计算机系统、膝上型计算机或笔记本计算机系统、交互式信息亭、大型机(mainframe)、计算机系统网格(mesh of computer system)、移动电话、个人数字助理(Personal DigitalAssistant,PDA)、服务器、平板计算机系统、增强/虚拟现实装置或这些中的两个或更多个的组合。在适当的情况下,计算机系统800可以包括一个或多个计算机系统800;该计算机系统可以为单一式或分布式;该计算机系统可以跨越多个位置;该计算机系统可以跨越多个机器;该计算机系统可以跨越多个数据中心;或该计算机系统可以存在于云中,该云可以包括一个或多个网络中的一个或多个云部件。在适当的情况下,一个或多个计算机系统800可以在没有实质性空间或时间限制的情况下,执行本文描述或示出的一种或多种方法中的一个或多个步骤。作为示例而非限制,一个或多个计算机系统800可以实时地执行或以批处理模式执行本文描述或示出的一种或多种方法中的一个或多个步骤。在适当的情况下,一个或多个计算机系统800可以在不同的时间或在不同的位置执行本文描述或示出的一种或多种方法中的一个或多个步骤。
在特定实施例中,计算机系统800包括处理器802、内存(memory)804、存储器(storage)806、输入/输出(I/O)接口808、通信接口810和总线812。虽然本公开描述并且示出了特定计算机系统以特定布置具有特定数量的特定部件,但是本公开考虑任何合适的计算机系统以任何合适布置具有任何合适数量的任何合适部件。
在特定实施例中,处理器802包括用于执行指令(诸如构成计算机程序的那些指令)的硬件。作为示例而非限制,为了执行这些指令,处理器802可以从内部寄存器、内部高速缓冲存储器、内存804或存储器806检索(或提取)指令;对这些指令进行解码并且执行这些指令;然后,将一个或多个结果写入内部寄存器、内部高速缓冲存储器、内存804或存储器806。在特定实施例中,处理器802可以包括用于数据、指令或地址的一个或多个内部高速缓冲存储器。在适当的情况下,本公开考虑处理器802包括任何合适数量的任何合适内部高速缓冲存储器。作为示例而非限制,处理器802可以包括一个或多个指令高速缓冲存储器、一个或多个数据高速缓冲存储器和一个或多个转译后备缓冲器(Translation LookasideBuffer,TLB)。指令高速缓冲存储器中的指令可以为内存804或存储器806中的指令的副本,并且指令高速缓冲存储器可以加速处理器802对那些指令的检索。数据高速缓冲存储器中的数据可以为内存804或存储器806中的数据的副本,供在处理器802处执行的指令对其进行操作;数据高速缓冲存储器中的数据可以为在处理器802处执行的先前指令的结果,供通过在处理器802处执行的后续指令进行访问或供写入内存804或存储器806;或数据高速缓冲存储器中的数据可以为其它合适的数据。数据高速缓冲存储器可以加速处理器802的读取或写入操作。TLB可以加速处理器802的虚拟地址转译。在特定实施例中,处理器802可以包括用于数据、指令或地址的一个或多个内部寄存器。在适当的情况下,本公开考虑处理器802包括任何合适数量的任何合适内部寄存器。在适当的情况下,处理器802可以包括一个或多个算术逻辑单元(Arithmetic Logic Unit,ALU);该处理器可以为多核处理器;或该处理器可以包括一个或多个处理器802。虽然本公开描述并且示出了特定处理器,但是本公开考虑任何合适的处理器。
在特定实施例中,内存804包括主内存(main memory),用于存储指令供处理器802执行或用于存储数据供处理器802对其进行操作。作为示例而非限制,计算机系统800可以将来自存储器806或另一源(例如,诸如另一计算机系统800)的指令加载到内存804。然后,处理器802可以将来自内存804的指令加载到内部寄存器或内部高速缓冲存储器。为了执行这些指令,处理器802可以对来自内部寄存器或内部高速缓冲存储器的指令进行检索并且对其进行解码。在执行指令期间或之后,处理器802可以将一个或多个结果(可以为中间结果或最终结果)写入内部寄存器或内部高速缓冲存储器。然后,处理器802可以将这些结果中的一个或多个写入内存804。在特定实施例中,处理器802仅执行一个或多个内部寄存器或内部高速缓冲存储器中的指令或内存804(而不是存储器806或别处)中的指令,并且仅对一个或多个内部寄存器或内部高速缓冲存储器中的数据或内存804(而不是存储器806或别处)中的数据进行操作。一个或多个存储器总线(其可以各自包括地址总线和数据总线)可以将处理器802耦接到内存804。总线812可以包括一个或多个内存总线,如下所述。在特定实施例中,一个或多个内存管理单元(Memory Management Unit,MMU)存在于处理器802与内存804之间,并且促进处理器802所请求的对内存804的访问。在特定实施例中,内存804包括随机存取存储器(Random Access Memory,RAM)。在适当的情况下,该RAM可以为易失性存储器。在适当的情况下,该RAM可以为动态RAM(Dynamic RAM,DRAM)或静态RAM(Static RAM,SRAM)。此外,在适当的情况下,该RAM可以为单端口RAM或多端口RAM。本公开考虑任何合适的RAM。在适当的情况下,内存804可以包括一个或多个内存804。虽然本公开描述并且示出了特定内存,但本公开考虑任何合适的内存。
在特定实施例中,存储器806包括用于数据或指令的大容量存储器。作为示例而非限制,存储器806可以包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或这些中的两者或更多者的组合。在适当的情况下,存储器806可以包括可移除式或不可移除式(或固定式)介质。在适当的情况下,存储器806可以位于计算机系统800内部或外部。在特定实施例中,存储器806为非易失性、固态存储器。在特定实施例中,存储器806包括只读存储器(ROM)。在适当的情况下,该ROM可以是掩模编程ROM、可编程ROM(Programmable ROM,PROM)、可擦除PROM(Erasable PROM,EPROM)、电可擦除PROM(Electrically Erasable PROM,EEPROM)、电可更改ROM(Electrically Alterable ROM,EAROM),或闪存或这些中的两者或更多者的组合。本公开考虑大容量存储器806采用任何合适的物理形式。在适当的情况下,存储器806可以包括促进处理器802与存储器806之间的通信的一个或多个存储控制单元。在适当的情况下,存储器806可以包括一个或多个存储器806。虽然本公开描述并且示出了特定存储器,但是本公开考虑任何合适的存储器。
在特定实施例中,I/O接口808包括硬件、软件或这两者,提供用于计算机系统800与一个或多个I/O装置之间的通信的一个或多个接口。在适当的情况下,计算机系统800可以包括这些I/O装置中的一个或多个。这些I/O装置中的一个或多个可以能够实现人与计算机系统800之间的通信。作为示例而非限制,I/O装置可以包括键盘、小键盘、麦克风、监视器、鼠标、打印机、扫描器、扬声器、静态相机、触控笔、平板计算机、触摸屏、轨迹球、摄像机、另一合适的I/O装置或这些中的两者或更多者的组合。I/O装置可以包括一个或多个传感器。本公开考虑任何合适的I/O装置和用于它们的任何合适的I/O接口808。在适当的情况下,I/O接口808可以包括使处理器802能够驱动这些I/O装置中的一个或多个的一个或多个装置或软件驱动器。在适当的情况下,I/O接口808可以包括一个或多个I/O接口808。虽然本公开描述并且示出了特定I/O接口,但是本公开考虑任何合适的I/O接口。
在特定实施例中,通信接口810包括硬件、软件或这两者,提供用于计算机系统800与一个或多个其它计算机系统800或一个或多个网络之间的通信(例如,诸如基于数据包的通信)的一个或多个接口。作为示例而非限制,通信接口810可以包括网络接口控制器(Network Interface Controller,NIC)或网络适配器以用于使用以太网或其它基于有线的网络进行通信,或包括无线NIC(Wireless NIC,WNIC)或无线适配器以用于使用无线网络(诸如,WI-FI)进行通信。本公开考虑任何合适的网络和用于其的任何合适的通信接口810。作为示例而非限制,计算机系统800可以使用多种网络进行通信,这些网络为特用网络、个人局域网(Personal Area Network,PAN)、局域网(Local Area Network,LAN)、广域网(Wide Area Network,WAN)、城域网(Metropolitan Area Network,MAN),或因特网的一个或多个部分或这些中的两个者或更多者的组合。这些网络中的一者或多者的一个或多个部分可以是有线的或无线的。作为示例,计算机系统800可以使用多种网络进行通信,这些网络为无线PAN(Wireless PAN,WPAN)(例如,诸如蓝牙WPAN)、WI-FI网络、WI-MAX网络、蜂窝电话网络(例如,诸如全球移动通信系统(Global System for Mobile Communication,GSM)网络),或其它合适的无线网络或这些中的两者或更多者的组合。在适当的情况下,计算机系统800可以包括用于这些网络中的任一个的任何合适的通信接口810。在适当的情况下,通信接口810可以包括一个或多个通信接口810。虽然本公开描述并且示出了特定通信接口,但是本公开考虑任何合适的通信接口。
在特定实施例中,总线812包括将计算机系统800的部件彼此耦接的硬件、软件或这两者。作为示例而非限制,总线812可以包括加速图形端口(Accelerated GraphicsPort,AGP)或其它图形总线、增强型工业标准结构(Enhanced Industry Standard Archi-tecture,EISA)总线、前端总线(Front-Side Bus,FSB)、超传输(Hypertransport,HT)互连件、工业标准结构(Industry Standard Architecture,ISA)总线、无限带宽互连件、低引脚数(Low-Pin-Count,LPC)总线、内存总线、微通道结构(Micro Channel Architecture,MCA)总线、外围部件互连(Peripheral Component Interconnect,PCI)总线、快速的PCI(PCI-Express,PCIe)总线、串行高级技术附件(Serial Advanced Tech-nology Attachment,SATA)总线、视频电子标准协会局域总线(Video Electronics Stand-ards AssociationLocal,VLB)、或另一合适的总线或这些中的两者或更多者的组合。在适当的情况下,总线812可以包括一个或多个总线812。尽管本公开描述并且示出了特定总线,但是本公开考虑任何合适的总线或互连件。
在本文中,在适当的情况下,计算机可读非暂态存储媒介或介质可以包括一个或多个基于半导体的集成电路(Integrated Circuit,IC)或其它集成电路(例如,诸如现场可编程门阵列(Field-Programmable Gate Array,FPGA)或专用IC(Application-SpecificIC,ASIC))、硬盘驱动器(HDD)、混合硬盘驱动器(Hybrid Hard Drive,HHD)、光盘、光盘驱动器(Optical Disc Drive,ODD)、磁光盘、磁光驱动器、软盘、软盘驱动器(Floppy DiskDrive,FDD)、磁带、固态驱动器(Solid-State Drive,SSD)、RAM驱动器、安全数字卡或驱动器、任何其它合适的计算机可读非暂态存储介质或这些中的两者或更多者的任何合适组合。在适当的情况下,计算机可读非暂态存储媒介可以为易失性、非易失性或易失性和非易失性的组合。
在本文中,除非另外明确指出或上下文另外指出,否则“或”是包括性的,而非排它性的。因此,在本文中,除非另外明确指出或上下文另外指出,否则“A或B”意味着“A、B或这两者”。此外,除非另外明确指出或上下文另外指出,否则“和”既是共同的,也是单独的。因此,在本文中,除非另外明确指出或上下文另外指出,否则“A和B”意味着“A和B共同地或单独地”。
本领域的普通技术人员将理解的是,本公开的范围包括对本文所描述或示出的示例实施例的所有改变、替代、变化、更改和修改。本公开的范围不限于本文所描述或示出的示例实施例。此外,本领域的普通技术人员将理解的是,尽管本公开将本文中的各个实施例描述并且示出为包括特定部件、元件、特征、功能、操作或步骤,但是这些实施例中的任何实施例都可以包括本文中任何位置描述或示出的部件、元件、特征、功能、操作或步骤中的任何的任意组合或排列。此外,在所附权利要求中提到的设备或系统或者设备或系统的部件被适配为、被布置为、能够、被配置为、使……能够、可操作为或可运行为执行特定功能,包括该设备、系统、部件无论其或该特定功能是否被激活、开启或解锁,只要该设备、系统或部件如此被适配、被布置、能够、被配置、使……能够、可操作或可运行即可。另外,尽管本公开将特定实施例描述或示出为提供了特定优点,但是特定实施例可以不提供这些优点或提供这些优点中的一些或全部。
Claims (15)
1.一种方法,包括通过计算系统:
在包括多个纹素的纹理内,确定针对像素的采样位置;
基于所述采样位置,在所述多个纹素中选择一组纹素,其中,所述一组纹素中的每个纹素对至少一个距离场进行编码;
基于与所述一组纹素相关联的所述距离场,计算与所述采样位置相关联的插值距离场,其中,所述插值距离场表示所述采样位置与所述纹理中描绘的边缘之间的相对距离;
确定用于将所述插值距离场从纹素单位缩放为像素单位的缩放因子;
使用所述缩放因子,对所述插值距离场进行缩放;
基于缩放后的插值距离场,确定混合比例;
根据所述混合比例,通过将与所述边缘的第一侧相关联的第一颜色和与所述边缘的第二侧相关联的第二颜色混合,确定所述采样位置的混合颜色;以及
基于所述采样位置的所述混合颜色,输出所述像素的颜色。
2.根据权利要求1所述的方法,还包括:
访问缩放后的插值距离场的预定偏移;
其中,进一步基于所述缩放后的插值距离场的所述预定偏移确定所述混合比例。
3.根据权利要求1或2所述的方法,还包括:
确定所述多个纹素在像素空间中的第一方向上的第一采样间隔;
确定所述多个纹素在像素空间中的第二方向上的第二采样间隔,所述第二方向垂直于所述第一方向;以及
将所述第一采样间隔与所述第二采样间隔进行比较,以确定哪一者较小;
其中,基于所述第一采样间隔或所述第二采样间隔中的较小者确定所述缩放因子。
4.根据权利要求1、2或3所述的方法,还包括:
确定所述像素的一个或多个第二采样位置的一个或多个第二混合颜色;以及
基于所述像素的所述采样位置的所述混合颜色和所述一个或多个第二采样位置的所述一个或多个第二混合颜色,确定所述像素的颜色;
其中,所述像素的所述颜色包括在帧中。
5.根据权利要求1至4中任一项所述的方法,还包括:
确定所述多个纹素在像素空间中的第一方向上的第一采样间隔;
确定所述多个纹素在像素空间中的第二方向上的第二采样间隔,所述第二方向垂直于所述第一方向;以及
基于所述第一采样间隔与所述第二采样间隔之间的比较,确定抖动取向;
其中,所述纹理中的所述采样位置和所述一个或多个第二采样位置与所述像素中沿着所述抖动取向分布的位置相对应;并且优选地还包括:
基于所述第一采样间隔与所述第二采样间隔之差,确定抖动范围;
其中,所述像素中的与所述纹理中的所述采样位置和所述一个或多个第二采样位置相对应的所述位置沿着所述抖动取向在所述抖动范围内分布。
6.根据前述权利要求中任一项所述的方法,其中,所述像素的所述颜色与帧序列中的第一帧相关联,所述方法还包括:
确定与所述帧序列中的第二帧中的第二像素相关联的第二采样位置的第二混合颜色,其中:
所述第一帧中的所述像素的相对位置与所述第二帧中的所述第二像素的相对位置相同;并且
所述像素中的与所述纹理内的所述采样位置相对应的位置和所述第二像素中的与所述纹理内的所述第二采样位置相对应的第二位置不同;
基于所述第二采样位置的所述第二混合颜色,输出所述第二像素的第二颜色;
其中,所述第二像素的所述第二颜色包括在所述第二帧中。
7.根据前述权利要求中任一项所述的方法,还包括:
确定所述多个纹素在像素空间中的第一方向上的第一采样间隔;
确定所述多个纹素在像素空间中的第二方向上的第二采样间隔,所述第二方向垂直于所述第一方向;以及
基于所述第一采样间隔与所述第二采样间隔之间的比较,确定抖动取向;
其中,所述像素中的所述位置和所述第二像素中的所述第二位置沿着所述抖动取向分布。
8.根据前述权利要求中任一项所述的方法,其中,响应于确定所述采样位置位于距所述纹理中描绘的所述边缘的预定范围内而混合所述第一颜色和所述第二颜色;并且优选地,其中,所述预定范围为自所述纹理中描绘的所述边缘起的像素的一半。
9.根据前述权利要求中任一项所述的方法,其中,基于所述混合颜色的输出颜色包括第一百分比的所述第一颜色和第二百分比的所述第二颜色;并且优选地,其中,所述第一百分比和所述第二百分比分别与所述第一颜色的表观透明度和所述第二颜色的表观透明度相对应。
10.一种或多种计算机可读非暂态存储介质,所述一种或多种计算机可读非暂态存储介质实施软件,所述软件在被执行时能够被操作为:
在包括多个纹素的纹理内,确定针对像素的采样位置;
基于所述采样位置,在所述多个纹素中选择一组纹素,其中,所述一组纹素中的每个纹素对至少一个距离场进行编码;
基于与所述一组纹素相关联的所述距离场,计算与所述采样位置相关联的插值距离场,其中,所述插值距离场表示所述采样位置与所述纹理中描绘的边缘之间的相对距离;
基于所述插值距离场,确定混合比例;
根据所述混合比例,通过将与所述边缘的第一侧相关联的第一颜色和与所述边缘的第二侧相关联的第二颜色混合,确定所述采样位置的混合颜色;以及
基于所述采样位置的所述混合颜色,输出所述像素的颜色。
11.根据权利要求10所述的介质,其中,所述软件在被执行时还能够被操作为:
访问缩放后的插值距离场的预定偏移;
其中,进一步基于所述缩放后的插值距离场的所述预定偏移确定所述混合比例;和/或优选地,其中,所述软件在被执行时还能够被操作为:
确定所述多个纹素在像素空间中的第一方向上的第一采样间隔;
确定所述多个纹素在像素空间中的第二方向上的第二采样间隔,所述第二方向垂直于所述第一方向;以及
将所述第一采样间隔与所述第二采样间隔进行比较,以确定哪一者较小;
其中,基于所述第一采样间隔或所述第二采样间隔中的较小者确定所述缩放因子。
12.根据权利要求10或权利要求11所述的介质,其中,所述软件在被执行时还能够操作为:
确定所述像素的一个或多个第二采样位置的一个或多个第二混合颜色;以及
基于所述像素的所述采样位置的所述混合颜色和所述一个或多个第二采样位置的所述一个或多个第二混合颜色,确定所述像素的颜色;
其中,所述像素的所述颜色包括在帧中。
13.一种系统,包括:
一个或多个处理器;以及
一个或多个计算机可读非暂态存储介质,所述一个或多个计算机可读非暂态存储介质耦接到所述一个或多个处理器并且包括指令,所述指令在被所述一个或多个处理器执行时能够被操作使得所述系统:
在包括多个纹素的纹理内,确定针对像素的采样位置;
基于所述采样位置,在所述多个纹素中选择一组纹素,其中,所述一组纹素中的每个纹素对至少一个距离场进行编码;
基于与所述一组纹素相关联的所述距离场,计算与所述采样位置相关联的插值距离场,其中,所述插值距离场表示所述采样位置与所述纹理中描绘的边缘之间的相对距离;
基于所述插值距离场,确定混合比例;
根据所述混合比例,通过将与所述边缘的第一侧相关联的第一颜色和与所述边缘的第二侧相关联的第二颜色混合,确定所述采样位置的混合颜色;以及
基于所述采样位置的所述混合颜色,输出所述像素的颜色。
14.根据权利要求13所述的系统,其中,所述处理器在执行所述指令时还能够被操作为:
访问缩放后的插值距离场的预定偏移;
其中,进一步基于所述缩放后的插值距离场的所述预定偏移确定所述混合比例;和/或优选地,其中,所述处理器在执行所述指令时还能够操作为:
确定所述多个纹素在像素空间中的第一方向上的第一采样间隔;
确定所述多个纹素在像素空间中的第二方向上的第二采样间隔,所述第二方向垂直于所述第一方向;以及
将所述第一采样间隔与所述第二采样间隔进行比较,以确定哪一者较小;
其中,基于所述第一采样间隔或所述第二采样间隔中的较小者确定所述缩放因子。
15.根据权利要求13或权利要求14所述的系统,其中,所述处理器在执行所述指令时还能够被操作为:
确定所述像素的一个或多个第二采样位置的一个或多个第二混合颜色;以及
基于所述像素的所述采样位置的所述混合颜色和所述一个或多个第二采样位置的所述一个或多个第二混合颜色,确定所述像素的颜色;
其中,所述像素的所述颜色包括在帧中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/992,890 US11288788B2 (en) | 2020-08-13 | 2020-08-13 | Anti-aliasing for distance field graphics rendering |
US16/992,890 | 2020-08-13 | ||
PCT/US2021/044049 WO2022035627A1 (en) | 2020-08-13 | 2021-07-30 | Anti-aliasing for distance field graphics rendering |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116113988A true CN116113988A (zh) | 2023-05-12 |
Family
ID=77412393
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180055318.8A Pending CN116113988A (zh) | 2020-08-13 | 2021-07-30 | 用于距离场图形渲染的抗锯齿 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11288788B2 (zh) |
EP (1) | EP4196958A1 (zh) |
JP (1) | JP2023538828A (zh) |
KR (1) | KR20230051217A (zh) |
CN (1) | CN116113988A (zh) |
WO (1) | WO2022035627A1 (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10037592B2 (en) * | 2015-06-05 | 2018-07-31 | Mindaptiv LLC | Digital quaternion logarithm signal processing system and method for images and other data types |
US10403005B2 (en) * | 2017-10-10 | 2019-09-03 | Adobe Inc. | Using signed distance fields in multicolored vector approximation |
US10964088B2 (en) | 2018-10-31 | 2021-03-30 | Facebook Technologies, Llc | Mipmap with mixed texture types |
-
2020
- 2020-08-13 US US16/992,890 patent/US11288788B2/en active Active
-
2021
- 2021-07-30 WO PCT/US2021/044049 patent/WO2022035627A1/en unknown
- 2021-07-30 CN CN202180055318.8A patent/CN116113988A/zh active Pending
- 2021-07-30 JP JP2023507457A patent/JP2023538828A/ja active Pending
- 2021-07-30 KR KR1020237008051A patent/KR20230051217A/ko active Search and Examination
- 2021-07-30 EP EP21758271.7A patent/EP4196958A1/en not_active Withdrawn
-
2022
- 2022-02-22 US US17/677,630 patent/US20220245783A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
EP4196958A1 (en) | 2023-06-21 |
US20220051381A1 (en) | 2022-02-17 |
US11288788B2 (en) | 2022-03-29 |
KR20230051217A (ko) | 2023-04-17 |
US20220245783A1 (en) | 2022-08-04 |
WO2022035627A1 (en) | 2022-02-17 |
JP2023538828A (ja) | 2023-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11257275B2 (en) | Dual distance field color palette | |
US7348996B2 (en) | Method of and system for pixel sampling | |
US7742060B2 (en) | Sampling methods suited for graphics hardware acceleration | |
US20030095134A1 (en) | Method and apparatus for anti-aliasing for video applications | |
EP1958162B1 (en) | Vector graphics anti-aliasing | |
JP2010102713A (ja) | コンピュータグラフィックスを処理する方法および機器 | |
TW200842758A (en) | Efficient 2-D and 3-D graphics processing | |
WO2009090726A1 (ja) | 図形描画装置及び図形描画方法 | |
US7679620B2 (en) | Image processing using saltating samples | |
CN115330986B (zh) | 一种分块渲染模式图形处理方法及系统 | |
US20090309898A1 (en) | Rendering apparatus and method | |
Malan | Edge Antialiasing by Post-Processing | |
JP4801088B2 (ja) | 画素サンプリングの方法及び装置 | |
US20230298212A1 (en) | Locking mechanism for image classification | |
CN116113988A (zh) | 用于距离场图形渲染的抗锯齿 | |
US7170528B1 (en) | Fast glyph rendering for vector based fonts | |
US20230298133A1 (en) | Super resolution upscaling | |
EP1926052B1 (en) | Method, medium, and system rendering 3 dimensional graphics data considering fog effect | |
CN115761100A (zh) | 场景渲染方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |