CN115244580A - 用于边缘压缩抗锯齿的方法和装置 - Google Patents

用于边缘压缩抗锯齿的方法和装置 Download PDF

Info

Publication number
CN115244580A
CN115244580A CN202180018945.4A CN202180018945A CN115244580A CN 115244580 A CN115244580 A CN 115244580A CN 202180018945 A CN202180018945 A CN 202180018945A CN 115244580 A CN115244580 A CN 115244580A
Authority
CN
China
Prior art keywords
pixel
primitive
center
edge
distance
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
Application number
CN202180018945.4A
Other languages
English (en)
Inventor
A·E·格鲁贝尔
K·古米迪普迪
P·K·阿卡拉朱
K·K·比拉瓦巴特拉
A·K·辛格
S·拉杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN115244580A publication Critical patent/CN115244580A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/503Blending, e.g. for anti-aliasing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • G06T17/205Re-meshing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/0002Inspection of images, e.g. flaw detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

本公开内容涉及用于图形处理的方法和装置。本公开内容可以计算第一像素的中心‑边缘距离,第一像素的中心‑边缘距离等于从第一像素的中心到第一图元的一个或多个边缘的距离。另外,当第一图元在场景中可见时,本公开内容可以存储第一像素的中心‑边缘距离。本公开内容还可以确定在第一像素与第一图元之间的重叠量。此外,本公开内容可以基于第一像素的中心‑边缘距离或者第一像素与第一图元之间的重叠量中的至少一项,来将第一像素的色彩与第二像素的色彩进行混合。

Description

用于边缘压缩抗锯齿的方法和装置
依据35 U.S.C.§119要求优先权
本申请要求享有于2020年3月11日递交的美国非临时申请No.16/816,150的优先权和权益,上述申请通过引用的方式明确地并入本文中。
技术领域
概括而言,本公开内容涉及处理系统,以及更具体地,涉及用于图形处理的一种或多种技术。
背景技术
计算设备通常利用图形处理单元(GPU)来加速对用于显示的图形数据的渲染。这样的计算设备可以包括例如计算机工作站、移动电话(比如所谓的智能电话)、嵌入式系统、个人计算机、平板计算机和视频游戏控制台。GPU执行图形处理流水线,图形处理流水线包括一起操作以执行图形处理命令并且输出帧的一个或多个处理阶段。中央处理单元(CPU)可以通过向GPU发布一个或多个图形处理命令来控制GPU的操作。现代的CPU典型地能够并发地执行多个应用,其中每个应用可能需要在执行期间利用GPU。提供内容以供在显示器上进行视觉呈现的设备通常包括GPU。
通常,设备的GPU被配置为执行在图形处理流水线中的过程。然而,随着无线通信和更小的手持设备的出现,已经形成针对改善的图形处理的增加的需求。
发明内容
下文给出一个或多个方面的简要概述,以便提供对这样的方面的基本理解。该概述不是对全部预期方面的广泛综述,并且既不旨在标识全部方面的关键要素,也不旨在描绘任何或全部方面的范围。其唯一目的是以简化形式呈现一个或多个方面的一些概念,作为稍后呈现的更加详细的描述的序言。
在本公开内容的一方面中,提供方法、计算机可读介质和装置。装置可以是中央处理单元(CPU)、图形处理单元(GPU)或可以执行图形处理的任何装置。装置可以计算多个像素中的第一像素的中心-边缘距离,第一像素的中心-边缘距离等于从第一像素的中心到场景中的多个图元中的第一图元的一个或多个边缘的距离,其中,第一图元的至少一部分可以与第一像素的中心重叠。装置还可以确定第一图元在场景中是否可见。装置还可以确定第一像素的一部分是否与多个图元中的至少一个辅助图元重叠。另外,当第一像素的一部分与至少一个辅助图元重叠时,装置可以计算从第一像素的中心到至少一个辅助图元的一个或多个边缘的距离。当第一图元在场景中可见时,装置还可以存储第一像素的中心-边缘距离。此外,当第一像素的一部分与至少一个辅助图元重叠时,装置可以将从第一像素的中心到至少一个辅助图元的一个或多个边缘的距离存储在辅助缓冲器中。装置还可以确定第一图元的深度是小于还是大于第二图元的深度。装置还可以确定第一像素与第一图元之间的重叠量。此外,当至少一个辅助图元与第一图元形成网格(mesh)时,装置可以更新第一像素与第一图元之间的重叠量。装置还可以基于第一像素的中心-边缘距离或者第一像素与第一图元之间的重叠量中的至少一项,来将第一像素的色彩与第二像素的色彩进行混合。
在附图和下文的描述中阐述本公开内容的一个或多个示例的细节。根据说明书和附图以及根据权利要求书,本公开内容的其它特征、目的和优势将是显而易见的。
附图说明
图1是示出根据本公开内容的一种或多种技术的示例内容生成系统的框图。
图2示出根据本公开内容的一种或多种技术的示例GPU。
图3示出根据本公开内容的一种或多种技术的示例图像或表面。
图4示出根据本公开内容的一种或多种技术的示例图像或表面。
图5示出根据本公开内容的一种或多种技术的包括像素和图元的示例场景。
图6示出根据本公开内容的一种或多种技术的包括抗锯齿方法的示例图。
图7示出根据本公开内容的一种或多种技术的包括轴向距离计算的示例图。
图8示出根据本公开内容的一种或多种技术的包括像素和图元的示例场景。
图9示出根据本公开内容的一种或多种技术的包括像素和图元的示例场景。
图10示出根据本公开内容的一种或多种技术的包括抗锯齿方法的示例图。
图11示出根据本公开内容的一种或多种技术的示例方法的示例流程图。
具体实施方式
可以使用多种抗锯齿方法以通过尝试产生更平滑的像素或图像来解决像素显示问题,比如粗糙或锯齿状边缘。然而,一些抗锯齿方法可能具有增加的执行开销。此外,由于存储大量数据,一些抗锯齿方法可能具有大的存储器占用。此外,一些抗锯齿方法可能不支持延迟着色,这在用于复杂照明场景的游戏引擎中变得更加常见。本公开内容的各方面可以利用减少执行开销和/或减少要存储的数据量的抗锯齿方法。例如,本公开内容的各方面可以使用抗锯齿方法来使所显示的像素边缘平滑,同时减少执行开销和/或减少要存储的数据量。本公开内容的各方面可以提出新颖的方法,其中GPU硬件基于图元几何形状信息来针对每个图元计算像素到边缘距离,图元几何形状信息还可以处理子像素图元,例如,不覆盖像素的中心但是可以促成像素的最终平均色彩的图元。本公开内容的各方面还可以允许用户基于边缘距离来自定义混合像素色彩。本文中的技术还可以通过保留针对几何形状边缘中的每个几何形状边缘的像素到边缘距离来去除对延迟着色的限制。本公开内容还可以包括与其它抗锯齿方法相比更低的存储条件和/或减少由于渲染而导致的执行开销,同时保持高质量。
下文参考附图更加充分地描述系统、装置、计算机程序产品和方法的各个方面。然而,本公开内容可以以许多不同的形式来体现,并且不应当被解释为限于贯穿本公开内容所呈现的任何特定的结构或功能。确切而言,提供这些方面以使得本公开内容将是全面和完整的,以及将向本领域技术人员充分地传达本公开内容的范围。基于本文中的教导,本领域技术人员应当理解,本公开内容的范围旨在涵盖本文中所公开的系统、装置、计算机程序产品和方法的任何方面,无论该方面是独立于本公开内容的其它方面实现的还是与其它方面结合地实现的。例如,使用本文中所阐述的任何数量的方面,可以实现装置或者可以实践方法。此外,本公开内容的范围旨在涵盖使用除了本文所阐述的公开内容的各个方面以外或不同于本文所阐述的公开内容的各个方面的其它的结构、功能或者结构和功能来实践的这样的装置或方法。本文中所公开的任何方面可以通过权利要求的一个或多个元素来体现。
尽管本文描述各个方面,但是这些方面的许多变型和置换落在本公开内容的范围内。尽管提到本公开内容的各方面的一些潜在益处和优势,但是本公开内容的范围不旨在限于特定的益处、用途或目标。确切而言,本公开内容的各方面旨在广泛地适用于不同的无线技术、系统配置、网络和传输协议,其中的一些是通过示例的方式在附图和下文的描述中进行说明的。具体实施方式和附图仅是对本公开内容的说明而不是限制,本公开内容的范围是通过所附的权利要求以及其等效物来限定的。
参考各种装置和方法给出若干方面。通过各种方块、组件、电路、过程、算法等(被统称为“元素”)在下文的具体实施方式中描述并且在附图中示出这些装置和方法。这些元素可以使用电子硬件、计算机软件或其任何组合来实现。这样的元素是被实现为硬件还是软件,取决于特定的应用和对整个系统所施加的设计约束。
例如,元素、或元素的任何部分、或元素的任何组合可以被实现为“处理系统”,“处理系统”包括一个或多个处理器(其还可以被称为处理单元)。处理器的示例包括:微处理器、微控制器、图形处理单元(GPU)、通用GPU(GPGPU)、中央处理单元(CPU)、应用处理器、数字信号处理器(DSP)、精简指令集计算(RISC)处理器、片上系统(SoC)、基带处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)、状态机、门控逻辑、分立硬件电路、以及被配置为执行贯穿本公开内容描述的各种功能的其它合适的硬件。处理系统中的一个或多个处理器可以执行软件。无论被称为软件、固件、中间件、微代码、硬件描述语言还是其它,软件可以被广泛地解释为意指指令、指令集、代码、代码段、程序代码、程序、子程序、软件组件、应用、软件应用、软件包、例程、子例程、对象、可执行文件、执行的线程、过程、函数等。术语应用可以指代软件。如本文中所描述的,一种或多种技术可能涉及被配置为执行一种或多种功能的应用,即软件。在这样的示例中,应用可以被存储在存储器上,例如处理器的片上存储器、系统存储器或任何其它存储器。本文中所描述的硬件(比如处理器)可以被配置为执行应用。例如,应用可以被描述为包括代码,代码在由硬件执行时使得硬件执行本文中所描述的一种或多种技术。例如,硬件可以从存储器访问代码并且执行从存储器访问的代码以执行本文中所描述的一种或多种技术。在一些示例中,在本公开内容中标识组件。在这样的示例中,组件可以是硬件、软件或其组合。组件可以是单独的组件或单个组件的子组件。
相应地,在本文中所描述的一个或多个示例中,所描述的功能可以以硬件、软件或其任何组合来实现。如果以软件来实现,则功能可以作为一个或多个指令或代码被存储或者编码在计算机可读介质上。计算机可读介质包括计算机存储介质。存储介质可以是能够由计算机访问的任何可用介质。通过举例而非限制的方式,这样的计算机可读介质可以包括随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、光盘存储、磁盘存储、其它磁存储设备、上述类型的计算机可读介质的组合、或者可以用于以能够由计算机存取的指令或数据结构的形式存储计算机可执行代码的任何其它介质。
通过,本公开内容描述如下的技术:在单个设备或多个设备中具有图形处理流水线,从而改善对图形内容的渲染和/或减少处理单元(即,被配置为执行本文中所描述的一种或多种技术的任何处理单元,比如GPU)的负载。例如,本公开内容描述了用于在利用图形处理的任何设备中进行图形处理的技术。贯穿本公开内容描述其它示例益处。
如本文中所使用的,术语“内容”的实例可以指代“图形内容”、“图像”,反之亦然。不管术语被用作为形容词、名词还是其它词性,都是如此。在一些示例中,如本文中所使用的,术语“图形内容”可以指代由图形处理流水线的一个或多个过程产生的内容。在一些示例中,如本文中所使用的,术语“图形内容”可以指代由被配置为执行图形处理的处理单元产生的内容。在一些示例中,如本文中所使用的,术语“图形内容”可以指代由图形处理单元产生的内容。
在一些示例中,如本文中所使用的,术语“显示内容”可以指代由被配置为执行显示处理的处理单元生成的内容。在一些示例中,如本文中所使用的,术语“显示内容”可以指代由显示处理单元生成的内容。图形内容可以被处理以成为显示内容。例如,图形处理单元可以将比如帧之类的图形内容输出给缓冲器(其可以被称为帧缓冲器)。显示处理单元可以从缓冲器读取图形内容(比如一个或多个帧),以及对其执行一种或多种显示处理技术以生成显示内容。例如,显示处理单元可以被配置为对一个或多个渲染层执行合成以生成帧。作为另一示例,显示处理单元可以被配置为将两个或更多个层合成、混合或者以其它方式组合在一起成为单个帧。显示处理单元可以被配置为对帧执行缩放(例如,放大或缩小)。在一些示例中,帧可以指代层。在其它示例中,帧可以指代已经被混合在一起以形成帧的两个或更多个层,即帧包括两个或更多个层,并且包括两个或更多个层的帧随后可以被混合。
图1是示出被配置为实现本公开内容的一种或多种技术的示例内容生成系统100的框图。内容生成系统100包括设备104。设备104可以包括用于执行本文中所描述的各种功能的一个或多个组件或电路。在一些示例中,设备104的一个或多个组件可以是SOC的组件。设备104可以包括被配置为执行本公开内容的一种或多种技术的一个或多个组件。在所示的示例中,设备104可以包括处理单元120、内容编码器/解码器122和系统存储器124。在一些方面中,设备104可以包括多个可选组件,例如,通信接口126、收发机132、接收机128、发射机130、显示处理器127和一个或多个显示器131。对显示器131的引用可以指代一个或多个显示器131。例如,显示器131可以包括单个显示器或多个显示器。显示器131可以包括第一显示器和第二显示器。第一显示器可以是左眼显示器,而第二显示器可以是右眼显示器。在一些示例中,第一显示器和第二显示器可以接收用于在其上呈现的不同的帧。在其它示例中,第一显示器和第二显示器可以接收用于在其上呈现的相同的帧。在进一步的示例中,图形处理的结果可以不显示在设备上,例如第一显示器和第二显示器可以不接收用于在其上呈现的任何帧。替代地,帧或图形处理结果可以被传输给另一设备。在一些方面中,这可以被称为分割渲染。
处理单元120可以包括内部存储器121。处理单元120可以被配置为执行图形处理,比如在图形处理流水线107中。内容编码器/解码器122可以包括内部存储器123。在一些示例中,设备104可以包括显示处理器(比如显示处理器127)以对由处理单元120生成的一个或多个帧在由一个或多个显示器131进行呈现之前执行一种或多种显示处理技术。显示处理器127可以被配置为执行显示处理。例如,显示处理器127可以被配置为对由处理单元120生成的一个或多个帧执行一种或多种显示处理技术。一个或多个显示器131可以被配置为显示或以其它方式呈现由显示处理器127处理的帧。在一些示例中,一个或多个显示器131可以包括以下各项中的一项或多项:液晶显示器(LCD)、等离子体显示器、有机发光二极管(OLED)显示器、投影显示设备、增强现实显示设备、虚拟现实显示设备、头戴式显示器、或任何其它类型的显示设备。
在处理单元120和内容编码器/解码器122外部的存储器(比如系统存储器124)对于处理单元120和内容编码器/解码器122可以是可访问的。例如,处理单元120和内容编码器/解码器122可以被配置为从外部存储器(比如系统存储器124)进行读取和/或向外部存储器进行写入。处理单元120和内容编码器/解码器122可以通过总线通信地耦合到系统存储器124。在一些示例中,处理单元120和内容编码器/解码器122可以通过总线或不同的连接彼此通信地耦合。
内容编码器/解码器122可以被配置为从比如系统存储器124和/或通信接口126之类的任何源接收图形内容。系统存储器124可以被配置为存储所接收的经编码或经解码的图形内容。内容编码器/解码器122可以被配置为例如从系统存储器124和/或通信接口126接收具有经编码的像素数据的形式的经编码或经解码的图形内容。内容编码器/解码器122可以被配置为对任何图形内容进行编码或解码。
内部存储器121或系统存储器124可以包括一个或多个易失性或非易失性存储器或存储设备。在一些示例中,内部存储器121或系统存储器124可以包括RAM、SRAM、DRAM、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、磁性数据介质或光学存储介质、或任何其它类型的存储器。
根据一些示例,内部存储器121或系统存储器124可以是非暂时性存储介质。术语“非暂时性”可以指示存储介质不是在载波或传播的信号中体现的。然而,术语“非暂时性”不应当被解释为意指不可移动的或者其内容是静态的内部存储器121或系统存储器124。作为一个示例,系统存储器124可以从设备104移除并且移动到另一设备。作为另一示例,系统存储器124可以是不可从设备104移除的。
处理单元120可以是中央处理单元(CPU)、图形处理单元(GPU)、通用GPU(GPGPU)、或者可以被配置为执行图形处理的任何其它处理单元。在一些示例中,处理单元120可以被整合到设备104的主板中。在一些示例中,处理单元120可以存在于安装在设备104的主板中的端口中的图形卡上,或者可以以其它方式并入被配置为与设备104进行互操作的外围设备内。处理单元120可以包括一个或多个处理器,比如一个或多个微处理器、GPU、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、算术逻辑单元(ALU)、数字信号处理器(DSP)、分立逻辑、软件、硬件、固件、其它等效的集成或分立逻辑电路、或其任何组合。如果技术是部分地以软件来实现的,则处理单元120可以将用于软件的指令存储在合适的非暂时性计算机可读存储介质(例如,内部存储器121)中,并且可以使用一个或多个处理器执行在硬件中的指令,以执行本公开内容的技术。包括硬件、软件、硬件和软件的组合等的前述内容中的任何内容可以被认为是一个或多个处理器。
内容编码器/解码器122可以是被配置为执行内容解码的任何处理单元。在一些示例中,内容编码器/解码器122可以被并入设备104的主板中。内容编码器/解码器122可以包括一个或多个处理器,比如一个或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、算术逻辑单元(ALU)、数字信号处理器(DSP)、视频处理器、分立逻辑、软件、硬件、固件、其它等效的集成或分立逻辑电路、或其任何组合。如果技术部分地以软件来实现,则内容编码器/解码器122可以将用于软件的指令存储在合适的非暂时性计算机可读存储介质(例如,内部存储器121)中,并且可以使用一个或多个处理器执行在硬件中的指令,以执行本公开内容的技术。包括硬件、软件、硬件和软件的组合等的前述内容中的任何内容可以被认为是一个或多个处理器。
在一些方面中,内容生成系统100可以包括可选的通信接口126。通信接口126可以包括接收机128和发射机130。接收机128可以被配置为执行本文中关于设备104描述的任何接收功能。另外,接收机128可以被配置为从另一设备接收信息(例如,眼睛或头部位置信息、渲染命令或位置信息)。发射机130可以被配置为执行本文中关于设备104描述的任何发送功能。例如,发射机130可以被配置为向另一设备发送可以包括针对内容的请求的信息。接收机128和发射机130可以被组合成收发机132。在这样的示例中,收发机132可以被配置为执行本文中关于设备104描述的任何接收功能和/或发送功能。
再次参考图1,在某些方面中,图形处理流水线107可以包括确定组件198,其被配置为:计算多个像素中的第一像素的中心-边缘距离,第一像素的中心-边缘距离等于从第一像素的中心到场景中的多个图元中的第一图元的一个或多个边缘的距离,其中,第一图元的至少一部分可以与第一像素的中心重叠。确定组件198还可以被配置为:确定第一图元在场景中是否可见。确定组件198还可以被配置为确定第一像素的一部分是否与多个图元中的至少一个辅助图元重叠。确定组件198还可以被配置为:当第一像素的一部分与至少一个辅助图元重叠时,计算从第一像素的中心到至少一个辅助图元的一个或多个边缘的距离。确定组件198还可以被配置为:当第一图元在场景中可见时存储第一像素的中心-边缘距离。确定组件198还可以被配置为:当第一像素的一部分与至少一个辅助图元重叠时,将从第一像素的中心到至少一个辅助图元的一个或多个边缘的距离存储在辅助缓冲器中。确定组件198还可以被配置为:确定第一图元的深度是小于还是大于第二图元的深度。确定组件198还可以被配置为:确定第一像素与第一图元之间的重叠量。确定组件198还可以被配置为:当至少一个辅助图元与第一图元形成网格时,更新第一像素与第一图元之间的重叠量。确定组件198还可以被配置为:基于第一像素的中心-边缘距离或者第一像素与第一图元之间的重叠量中的至少一项,来将第一像素的色彩与第二像素的色彩进行混合。
如本文中所描述的,比如设备104之类的设备可以指代被配置为执行本文中所描述的一种或多种技术的任何设备、装置或系统。例如,设备可以是服务器、基站、用户设备、客户端设备、站、接入点、计算机(例如,个人计算机、台式计算机、膝上型计算机、平板计算机、计算机工作站、或大型计算机)、最终产品、装置、电话、智能电话、服务器、视频游戏平台或控制台、手持设备(例如,便携式视频游戏设备或个人数字助理(PDA))、可穿戴计算设备(例如,智能手表、增强现实设备或虚拟现实设备)、非可穿戴设备、显示器或显示设备、电视机、电视机顶盒、中间网络设备、数字媒体播放器、视频流设备、内容流设备、车载计算机、任何移动设备、被配置为生成图形内容的任何设备、或者被配置为执行本文中所描述的一种或多种技术的任何设备。本文中的过程可以描述为由特定组件(例如,GPU)来执行,但是在进一步的实施例中,可以是使用与所公开的实施例一致的其它组件(例如,CPU)来执行的。
GPU可以在GPU流水线中处理多种类型的数据或数据分组。例如,在一些方面中,GPU可以处理两种类型的数据或数据分组,例如,上下文寄存器分组和绘制调用数据。上下文寄存器分组可以是可以管理将如何处理图形上下文的全局状态信息集合,例如,关于全局寄存器、着色程序或常量数据的信息。例如,上下文寄存器分组可以包括关于色彩格式的信息。在上下文寄存器分组的一些方面中,可以存在指示哪个工作负载属于上下文寄存器的比特。此外,可以存在同时和/或并行地运行的多个函数或程序。例如,函数或程序可以描述特定操作,例如,色彩模式或色彩格式。因此,上下文寄存器可以定义GPU的多个状态。
上下文状态可以用于确定单个处理单元(例如,顶点提取器(VFD)、顶点着色器(VS)、着色器处理器或几何形状处理器)如何运行、和/或处理单元以什么模式运行。为此,GPU可以使用上下文寄存器和编程数据。在一些方面中,GPU可以基于模式或状态的上下文寄存器定义来生成在流水线中的工作负载,例如,顶点或像素工作负载。某些处理单元(例如,VFD)可以使用这些状态来确定某些功能,例如,如何组装顶点。由于这些模式或状态可能改变,因此GPU可能需要改变对应的上下文。此外,与模式或状态相对应的工作负载可以遵循改变的模式或状态。
图2示出根据本公开内容的一种或多种技术的示例GPU 200。如图2中所示,GPU200包括命令处理器(CP)210、绘制调用分组212、VFD 220、VS 222、顶点高速缓存(VPC)224、三角形设置引擎(TSE)226、光栅器(RAS)228、Z过程引擎(ZPE)230、像素内插器(PI)232、片段着色器(FS)234、渲染后端(RB)236、L2高速缓存(UCHE)238和系统存储器240。尽管图2显示GPU 200包括处理单元220-238,但是GPU 200可以包括多个额外的处理单元。此外,处理单元220-238仅是示例,并且处理单元的任何组合或顺序可以由根据本公开内容的GPU使用。GPU 200还包括命令缓冲器250、上下文寄存器分组260和上下文状态261。
如图2中所示,GPU可以利用CP(例如,CP 210)或硬件加速器来将命令缓冲器解析为上下文寄存器分组(例如,上下文寄存器分组260)和/或绘制调用数据分组(例如,绘制调用分组212)。然后,CP 210可以通过单独的路径将上下文寄存器分组260或绘制调用数据分组212发送给GPU中的处理单元或块。此外,命令缓冲器250可以交替上下文寄存器和绘制调用的不同状态。例如,命令缓冲器可以以如下方式来构造:上下文N的上下文寄存器、上下文N的绘制调用、上下文N+1的上下文寄存器和上下文N+1的绘制调用。
GPU可以以多种不同的方式渲染图像。在一些实例中,GPU可以使用渲染或瓦片式渲染来渲染图像。在瓦片式渲染GPU中,可以将图像划分或拆分为不同的部分或瓦片。在划分图像之后,可以单独地渲染每个部分或瓦片。瓦片式渲染GPU可以将计算机图形图像划分为网格格式,使得网格的每个部分(即,瓦片)可以单独地渲染。在一些方面中,在分区(binning)通路(pass)中,可以将图像划分为不同的分区(bin)或瓦片。在一些方面中,在分区通路期间,可以构造可见性流,其中可以识别可见图元或绘制调用。
在一些方面中,GPU可以将绘制或渲染过程应用于不同的分区或瓦片。例如,GPU可以针对一个分区进行渲染,并且针对分区中的图元或像素执行所有的绘制。在针对分区进行渲染的过程期间,可以在GMEM中定位渲染目标。在一些实例中,在针对一个分区进行渲染之后,可以将渲染目标的内容移动到系统存储器,并且释放GMEM以渲染下一个分区。此外,GPU可以针对另一分区进行渲染,并且针对该分区中的图元或像素执行绘制。因此,在一些方面中,可能存在覆盖一个表面中的所有绘制的少量分区(例如,四个分区)。此外,GPU可以在一个分区中循环所有绘制,但是针对可见的绘制调用(即包括可见几何形状的绘制调用)执行绘制。在一些方面中,例如在分区通路中,可以生成可见性流,以确定图像或场景中的每个图元的可见性信息。例如,该可见性流可以标识某个图元是否可见。在一些方面中,该信息可以用于例如在渲染通路中移除不可见的图元。此外,图元中的被标识为可见的至少一些图元可以在渲染通路中进行渲染。
在瓦片式渲染的一些方面中,可以存在多个处理阶段或通路(pass)。例如,渲染可以在两个通路中执行,例如,可见性或分区可见性通路以及渲染或分区渲染通路。在可见性通路期间,GPU可以输入渲染工作负载,记录图元或三角形的位置,并且然后确定哪些图元或三角形落入哪个分区或区域中。在可见性通路的一些方面中,GPU还可以识别或标记可见性流中的每个图元或三角形的可见性。在渲染通路期间,GPU可以输入可见性流,并且一次处理一个分区或区域。在一些方面中,可以分析可见性流以确定哪些图元或图元的顶点可见或不可见。因此,可以处理可见的图元或图元的顶点。通过这样做,GPU可以减少处理或渲染不可见的图元或三角形的不必要的工作负载。
在一些方面中,在可见性通路期间,可以处理某些类型的图元几何形状,例如仅位置几何形状。此外,根据图元或三角形的位置或定位,可以将图元分类到不同的分区或区域中。在一些实例中,将图元或三角形分类到不同的分区中可以是通过确定用于这些图元或三角形的可见性信息来执行的。例如,GPU可以确定每个分区或区域中的每个图元的可见性信息或将其写入例如系统存储器中。该可见性信息可以用于确定或生成可见性流。在渲染通路中,可以分别地渲染每个分区中的图元。在这些实例中,可见性流可以是从用于丢弃对于该分区不可见的图元的存储器中提取的。
GPU或GPU架构的一些方面可以提供用于渲染的多种不同的选项,例如,软件渲染和硬件渲染。在软件渲染中,驱动器或CPU可以通过一次处理每个视图来复制整个帧几何形状。此外,一些不同的状态可以根据视图而改变。因此,在软件渲染中,软件可以通过改变可以用于针对图像中的每个视点进行渲染的一些状态来复制整个工作负载。在某些方面中,由于GPU可能针对图像中的每个视点多次提交相同的工作负载,因此可能存在增加的开销量。在硬件渲染中,硬件或GPU可以负责复制或处理针对图像中的每个视点的几何形状。因此,硬件可以管理针对图像中的每个视点的图元或三角形的复制或处理。
图3示出了图像或表面300,其包括被划分为多个分区的多个图元。如图3中所示,图像或表面300包括区域302,区域302包括图元321、322、323和324。图元321、322、323和322被划分或放置到不同的分区中,例如分区310、311、312、313、314和315。图3示出了针对图元321-324使用多个视点的瓦片式渲染的示例。例如,图元321-324位于第一视点350和第二视点351中。因此,处理或渲染包括区域302的图像或表面300的GPU可以利用多个视点或多视图渲染。
如本文中所指示的,GPU或图形处理器单元可以使用瓦片式渲染架构来降低功耗或节省存储器带宽。如上文进一步所陈述的,这种渲染方法可以将场景划分为多个分区,以及包括识别每个分区中的可见的三角形的可见性通路。因此,在瓦片式渲染中,完整屏幕可以被划分为多个分区或瓦片。然后,可以多次渲染场景,例如,针对每个分区渲染一次或多次。
在图形渲染的各方面中,一些图形应用可能一次或多次地针对单个目标(即,渲染目标)进行渲染。例如,在图形渲染中,系统存储器上的帧缓冲器可以被更新多次。帧缓冲器可以是存储器或随机存取存储器(RAM)的一部分(例如,包含位图或存储),以帮助存储用于GPU的显示数据。帧缓冲器还可以是包含数据的完整帧的存储器缓冲器。此外,帧缓冲器可以是逻辑缓冲器。在一些方面中,更新帧缓冲器可以是在分区或瓦片渲染中执行的,其中,如上所讨论的,将表面划分为多个分区或瓦片,并且然后可以单独地渲染每个分区或瓦片。此外,在瓦片式渲染中,可以将帧缓冲器划分为多个分区或瓦片。
如本文中所指示的,在分区或瓦片式渲染架构中,帧缓冲器可能具有重复地存储或写入到其的数据,例如,当从不同类型的存储器进行渲染时。这可以被称为解析和取消解析帧缓冲器或系统存储器。例如,当向一个帧缓冲器存储或写入并且然后切换到另一帧缓冲器时,可以将帧缓冲器上的数据或信息从GPU处的GPU内部存储器(GMEM)解析到系统存储器,即双数据速率(DDR)RAM或动态RAM(DRAM)中的存储器。
在一些方面中,系统存储器也可以是片上系统(SoC)存储器或例如在设备或智能电话上的用于存储数据或信息的另一基于芯片的存储器。系统存储器也可以是由CPU和/或GPU共享的物理数据存储。在一些方面中,系统存储器可以是例如在设备或智能电话上的DRAM芯片。因此,SoC存储器可以是存储数据的基于芯片的方式。
在一些方面中,GMEM可以是GPU处的片上存储器,其可以通过静态RAM(SRAM)来实现。此外,GMEM可以被存储在设备(例如,智能电话)上。如本文中所指示的,数据或信息可以例如在设备处在系统存储器或DRAM与GMEM之间传输。在一些方面中,系统存储器或DRAM可以位于CPU或GPU处。此外,数据可以被存储在DDR或DRAM处。在分区或瓦片式渲染中,存储器的一小部分可以被存储在GPU处(例如,在GMEM处)。在一些实例中,与在帧缓冲器或系统存储器处存储数据相比,在GMEM处存储数据可能使用较大的处理工作负载和/或功耗。
在一些方面中,GPU可以执行曲面细分或曲面细分过程。在曲面细分过程期间,较大的图元可以被划分为较小的子图元或经曲面细分的图元。曲面细分可以将图像划分为更详细的子图元或经曲面细分的图元,这可以导致更详细的渲染过程和更详细的图形内容。曲面细分器可以确定或生成子图元或经曲面细分的图元。在一些方面中,可以将一个或多个图元分组到图块(patch)中。然后,曲面细分器可以根据一个或多个曲面细分参数来确定或生成图块的基于几何形状的曲面细分,例如使用三角形或矩形。
与否则将基于图元的原始图块生成的图像或表面相比,曲面细分过程可以允许确定或生成更详细或更平滑的图像或表面。此外,曲面细分可以用于实现或渲染图像中的更详细的表面。如上文所提及的,曲面细分过程可以产生子图元或经曲面细分的图元。这些子图元或经曲面细分的图元是作为来自曲面细分的输出而生成的,例如,基于一个或多个图元或图块。这些图元还可以被称为原始图元或规则的图元,它们是基于原始图像或表面值而生成的。所确定或生成的子图元或经曲面细分的图元可以是原始图元或图块的更详细版本。在一些实例中,子图元中的每个子图元可以小于图元或图块中的每者。因此,原始图元可以表现为被划分为子图元或经曲面细分的图元。
图4示出根据本公开内容的一种或多种技术的示例图像或表面400。图4示出了图像400被划分为多个分区,例如分区410、分区420、分区430和分区440。此外,图4示出包括一个或多个图元462的图块460。在一些方面中,图块460可以被称为一组图元或一个或多个图元。图4还显示多个子图元470,其包括子图元472、子图元474和子图元476。如图4中所示,多个子图元中的单个子图元可以是多种不同的形状,比如矩形(例如,子图元476)或三角形(例如,子图元472、474)。
图4显示上述曲面细分过程的示例。例如,原始或输入图元(例如,图块460中的一个或多个图元462)被显示为具有作为顶点的点的较大三角形。从曲面细分过程输出的子图元或经曲面细分的图元(例如,子图元470)被显示为表面400上的较小矩形或三角形,例如,子图元472、474、476。
GPU可以通过对在将离散像素位置处的对象进行采样来渲染多边形,这可能在对象的边缘上引起锯齿效应。抗锯齿是通过使像素的显示边缘平滑来处理像素显示问题的方法,比如粗糙或锯齿状边缘。例如,多样本抗锯齿(MSAA)是用于使像素边缘平滑的多种抗锯齿技术中的一种。这种抗锯齿技术依赖于在多个位置处对相同像素进行采样(例如,每个像素2、4、8或16个样本),并且然后确定像素在对象内部或外部的百分比。该信息稍后可以用于对像素色彩进行混合,以使粗糙的像素边缘平滑。
为了使用上述抗锯齿技术,每个像素可能需要多达四倍的较多的存储(例如在MSAA-4x的情况下)以及较多的计算开销(例如,大约10%的较多的开销)。这可能导致总体基准性能的下降(例如25%-30%的下降)。此外,该技术可能限制用户应用可以用于渲染具有多个光源的场景的延迟照明算法,因为在解析最终帧缓冲器时,采样水平信息可能丢失。此外,一些游戏开发人员可以提供基于到边缘距离的算法作为MSAA的替代方案,但是它们可能是基于对像素进行后处理以检测边缘的软件实现方式,或者可能不能处理子像素图元。
如上文所提及的,可以使用若干种抗锯齿方法,以通过尝试产生更平滑的图像来解决像素显示问题,比如粗糙或锯齿状边缘。然而,这些抗锯齿方法(例如,MSAA)可能具有增加的执行开销。此外,由于存储大量数据,这些抗锯齿方法可能具有大的存储器占用。其它用例可能指定更高的执行开销。此外,其它抗锯齿方法可能不支持可以在游戏引擎中用于复杂的照明场景的延迟着色。因此,目前存在针对可以减少执行开销和/或减少要存储的数据量的抗锯齿技术的需要。
本公开内容的各方面可以利用减少执行开销和/或减少要存储的数据量的抗锯齿方法。例如,本公开内容的各方面可以使用抗锯齿方法来使像素的显示边缘平滑,同时减少执行开销和/或减少要存储的数据量。本公开内容的各方面可以提出新颖的方法,其中,GPU硬件基于图元几何形状信息来计算针对每个图元的像素到边缘距离,图元几何形状信息也可以处理子像素图元,即,不覆盖像素的中心但是可以促成像素的最终平均色彩的图元。本公开内容的各方面还可以允许用户基于边缘距离来自定义混合像素色彩。本文中的技术还可以通过保留针对几何形状边缘中的每个边缘的像素到边缘距离来去除对延迟着色的限制。本公开内容还可以包括与其它抗锯齿方法(例如,MSAA)相比较低的存储条件,和/或减少由于渲染而引起的执行开销,同时保持高质量。
如上文所指出的,本公开内容的各方面可以包括基于像素到边缘距离的改进的硬件加速的抗锯齿解决方案,该解决方案允许用户自定义混合像素信息,以实现对象的更平滑边缘(例如,包括子像素图元的边缘)。该方法可以利用显著较低的存储条件和/或减少的执行开销,来实现与其它抗锯齿方法(例如,MSAA)接近的质量。本公开内容的一些方面包括边缘压缩抗锯齿(ECAA),ECAA是抗锯齿的基于像素到边缘的实现方式。根据本公开内容的ECAA算法还可以使用辅助边缘(auxEdge)信息(即到子像素图元边缘的距离),使用子像素图元距离来实现基于像素到边缘的抗锯齿。此外,用于本文中的抗锯齿算法的每像素字节条件可以低于其它抗锯齿方法(例如,MSAA)。
如本文中所指示的,本公开内容可以实现针对其它抗锯齿方案的低开销替代解决方案和/或实现高图像质量,同时保持低的执行开销。本公开内容还可以包括新颖的硬件加速的抗锯齿解决方案,其可以允许用户或应用在多个支持的抗锯齿方案之间进行选择。在选择到边缘距离方案之后,驱动器可以设置硬件以在渲染通路期间计算距离信息,距离信息与其它几何形状缓冲器数据一起存储。在解析操作期间,本公开内容可以调用后处理着色器,后处理着色器是基于用于混合相邻像素以便减轻沿着几何形状边缘的任何锯齿伪影的算法。
此外,本公开内容的到边缘距离抗锯齿解决方案可以包括多个关键创新,这些创新区分于现有方法并且对现有方法进行改善。本公开内容的各方面还可以包括子像素图元的抗锯齿。例如,本公开内容可以提供如下方案:通过从这样的子像素图元计算辅助边缘数据来处理这样的图元,辅助边缘数据可以稍后用于改善混合因子以处理来自子像素图元的覆盖。本公开内容的各方面还可以使用来自场景的几何形状信息来生成中心边缘和辅助边缘距离两者。
此外,本公开内容可以通过使用保守栅格化和/或存储来自覆盖像素的任何部分(并且不覆盖中心样本)的子像素的辅助边缘信息、以及来自覆盖像素的中心的图元的规则边缘,来处理所有类型的图元,例如,规则的的和子像素。本公开内容的各方面还可以包括硬件加速技术,其中在软件中计算边缘距离可以引入额外的渲染通路来渲染完整的几何形状和/或在其被后处理通路消耗之前计算到边缘距离。例如,本公开内容可以在渲染通路期间利用最小的硬件开销来计算到边缘距离信息,并且将边缘数据提供给后处理通路。因此,在硬件中计算边缘距离的性能影响可以是最小的。
本公开内容的各方面还可以包括用于对边缘数据进行压缩的新颖方案。基于每像素两个边缘可能足以覆盖大部分(例如,99%以上)的几何形状边缘信息以进行混合的观察,本公开内容可以对边缘数据进行压缩以改善硬件效率,同时保持质量水平。在一些方面中,本文中的混合算法可以根据可见图元对像素的覆盖来对相邻像素色彩进行混合,以及使用相邻像素的z值来微调混合因子。本文中的这种新颖混合算法可以提供跨越相邻像素色彩的平滑混合,并且考虑锯齿边缘。本公开内容的各方面也可以适用于轮廓边缘或所有图元边缘。此外,本公开内容的各方面可以包括对分区架构的多种增强以适应算法。例如,本文中的硬件解决方案可以使用扩展的分区概念来增强现有的基本的分区架构和/或利用片上几何形状缓冲器来存储边缘数据。
在一些方面中,当像素被图元部分地覆盖时,像素的色彩可以通过样本覆盖来确定。在一些抗锯齿方法(例如,MSAA-1x)中,样本位置是像素的中心,像素的中心可以确定针对整个像素的色彩。在其它抗锯齿方法(例如,MSAA-4x)中,针对覆盖来评估四个样本位置,并且这些色彩的混合可以是最终像素色彩。此外,在基于距离的方法中,被图元覆盖的像素区域可以用作与相邻像素的混合因子。因此,在MSAA-1x中,像素色彩(pixColor)是覆盖像素的中心的图元的色彩。在MSAA-4x中,像素色彩是基于四个样本的覆盖的色彩的混合。在本文中的ECAA方法中,像素色彩可以是基于区域覆盖的相邻像素色彩的混合,其中混合因子是被覆盖的区域的百分比。在一些方面中,可以水平地或垂直地测量像素边缘。
图5示出根据本公开内容的一种或多种技术的包括像素和图元的场景500。如图5中所示,场景500包括图元502、像素510、像素中心512、像素520和像素中心522。场景500还包括距离514和距离516。如图5中所示,距离514是像素510的包括浅灰色斑点图案的宽度,例如,像素510的60%。距离516是像素520的包括倾斜灰线图案的宽度,例如,像素510的40%。
如图5中所示,像素510被图元502部分地覆盖。此外,像素510的中心被图元502覆盖。在本文中的ECAA方法中,评估从像素中心到图元的边缘的距离,以获得混合因子。根据本文中的ECAA方法,像素中心到图元边缘的距离指示60%的覆盖。因此,像素510的色彩可以被混合为60%的浅灰色斑点图案与40%的倾斜灰线图案。
在一些方面中,在选择像素到边缘距离方案之后,驱动器可以设置额外的GPU硬件状态,以在渲染通路期间计算和/或存储额外的边缘距离信息。GPU可以将该额外的边缘信息与其它渲染目标数据(例如,深度信息和色彩信息)一起存储。此外,当硬件光栅器遇到子像素图元时,可以更新像素到边缘距离以考虑来自子像素图元的新的边缘,即,辅助边缘。在解析操作期间,可以调用自定义的后处理着色器,后处理着色器使用边缘、深度和/或色彩信息来对相邻像素进行混合以减轻锯齿伪影。
图6示出包括根据本公开内容的一种或多种技术的抗锯齿方法的示意图600。如图6中所示,示意图600包括顶点处理单元602、图元处理单元604、栅格化单元606、片段处理单元608、Z测试或混合单元610、片上缓冲器620(其可以包括深度或色彩缓冲器622)以及像素解析单元690(其可以包括后处理通路)。示意图600还包括边缘计算流640,边缘计算流640可以包括像素到边缘计算单元650、边缘信息单元660和片上缓冲器680,片上缓冲器680可以包括辅助单元682和中心单元684。
如图6中所示,片上缓冲器620可以向像素解析单元690发送深度或色彩信息626。此外,像素到边缘计算单元650可以向片上缓冲器680发送经更新的辅助边缘652,反之亦然。边缘信息单元660可以向片上缓冲器680发送写入可见边缘662,反之亦然。此外,片上缓冲器680可以针对像素解析单元690来设置辅助信息和中心边缘信息688。基于上文,像素解析单元690可以输出最终像素色彩692。如图6中所示,该技术可以使用像素中心到图元边缘的距离计算来估计像素覆盖。在本公开内容中,边缘距像素中心的沿着x轴和y轴的距离可以用于与水平或垂直相邻像素进行混合,因此也可以计算距像素中心的轴向距离。
图7示出根据本公开内容的一种或多种技术的包括轴向距离计算的示意图700。如图7中所示,示意图700包括针对图元边缘710和像素中心720的轴向距离计算。如图7中所示,等式(ax+by+c)可以用于图元边缘710。此外,像素中心720可以为(x0,y0)。从像素中心720到边缘710的x距离(dx)和y距离(dy)是按照下文评估的。例如,相对于边缘710(ax+by+c)评估(x0,y0)可以产生距离d。此外,d的正负号可以指示该点是在边缘710的左侧还是右侧。因此,等式可以是ax0+by0+c=d(等式1)。
此外,如果(x1,y0)和(x0,y1)是边缘710上的水平和垂直投影,则这些可以是在边缘等式的线上的点。因此,本公开内容可以评估为0:ax1+by0+c=0(等式2)以及ax0+by1+c=0(等式3)。此外,本公开内容还可以计算到线等式的x、y轴向距离:(Eq1-Eq2)=>dx=|x0-x1|=d/a以及(Eq1-Eq3)=>dy=|y0-y1|=d/b。
此外,在本公开内容中,可以使用4比特距离度量。因此,像素距离(即,两个相邻像素中心之间的距离)内的边缘可以用于混合。超出像素距离的任何值可以被忽略,并且这样的距离可以通过0xF来表示。因此,被指示为[0x0,0xE]的区间[0,1]中的dx、dy可以是相等或统一的步长。此外,区间[1,inf]中的dx、dy可以被指示为0xF。
在一些方面中,对于每个像素,可能需要额外的边缘存储信息来存储沿着四个方向(例如,顶部、左侧、底部和右侧方向)的距离信息。因此,本公开内容可以存储针对像素的沿着四个方向(例如,顶部、左侧、底部和右侧方向)的边缘数据。在最终可见性信息中,可以存储针对可见图元的所有边缘数据。此外,存储来自像素处的可见图元(其通过z测试)的像素到边缘距离值。因此,被存储在像素处的最终边缘信息可以是来自覆盖像素中心的可见图元的。该信息可以被存储在缓冲器(例如,边缘缓冲器)中。
本公开内容的各方面还可以包括在渲染通路完成之后在最终色彩缓冲器上工作的混合算法。为了计算像素的混合色彩,混合算法使用在每个像素以及其四个相邻像素处可用的色彩、边缘和深度信息。例如,输入可以是色彩缓冲器、Z缓冲器和边缘缓冲器。此外,输出可以是新色彩缓冲器。为了在两个相邻像素之间混合色彩,可以基于可用的边缘信息以及其深度值来计算混合因子。根据距离,该算法可以具有用于混合的多个不同的情景(例如,10个情景),并且在一些情况下,可以使用z信息来确定混合因子。
图8示出根据本公开内容的一种或多种技术的包括像素和图元的场景800。如图8中所示,场景800包括像素810、像素中心812、像素820、像素中心822、图元830和图元840。场景800还包括距离852和距离854。如图8中所示,距离854是从像素中心812朝着像素820到图元830的边缘的距离。此外,距离852是从像素中心822朝着像素810到图元840的边缘的距离。
如图8中所示,像素810被图元830部分地覆盖。此外,像素810的中心(例如,像素中心812)被图元830覆盖。如图8中进一步所示,图像820被图元840部分地覆盖。此外,图像820的中心(例如,像素中心822)被图元840覆盖。在一些方面中,像素中心812与像素中心822之间的距离可以被视为值1。此外,像素810和像素820的Z值可以确定哪个图元在另一图元之前。因此,当混合两个不同像素(例如,像素810和像素820)时,本公开内容可以基于可见图元来确定针对像素的覆盖区域。这可以针对多个像素中的每个像素进行。
在一些栅格化算法中,作为图元的一部分的像素中心可以被栅格化。如果图元覆盖相邻像素的像素中心中的一个像素中心,则边缘值被记录为像素边缘信息的一部分。然而,可能存在覆盖单个像素或两个相邻像素的部分但不覆盖任一像素的中心的图元。这样的图元(其宽度小于像素距离和/或未被任一像素记录)在与相邻像素的混合期间可能导致伪影。
例如,考虑三角形T1和T2以及像素(0,0)、(1,0)、(0,1)和(1,1)。T2部分地覆盖像素(0,0)和(1,0)。因此,在理想的混合情况下,T2的色彩应当被(部分地)混合到这些像素的色彩中。本文中的ECAA方法还可以基于多个距离来处理混合。例如,如下测量左侧和右侧距离(0xF,15=像素距离)。对于Pix(0,0)和Pix(1,0),可能没有记录的边缘,并且L=15,R=15(默认值)。此外,对于Pix(0,1),R=2以及L=13。对于Pix(1,1),R=15以及L=2。基于混合算法,ECAA可以混合以下情况:Pix(0,0)=与右侧像素的混合,Pix(1,1)=与左侧像素的混合,Pix[(1,0),(0,1)]=无混合。在一些实例中,这可能导致混合色彩的反转。
为了在ECAA中处理这样的情况,可能需要考虑来自子像素图元的覆盖,以计算混合因子。这可能导致保守的栅格化,即,如果图元部分地覆盖像素,则像素可能需要被栅格化,而不管其像素中心是否被覆盖。这可以允许对部分像素的处理。此外,边缘距离计算逻辑可能需要被更新以处理子像素图元。本文将进一步详细地解释该算法。
在一些方面中,对于给定像素,辅助边缘可以被定义为可能不覆盖当前像素或其相邻像素的像素中心的图元的一对边缘。当图元是子像素宽度并且不覆盖两个相邻像素的中心时,可能发生这样的情况。辅助图元可以被定义为不覆盖两个相邻像素的中心并且位于两个像素中心之间的图元。这可以是一个像素或两个像素的一部分。例如,如果d1和d2是从像素到两个边缘的距离,则该图元是辅助图元(auxPrimitive),如果:auxPrimitive=(d1<pixDist)并且(d2<pixDist)。在一些方面中,本公开内容可以将距离d1和d2处的两个边缘存储为像素P1中的辅助对。它们也可以有资格作为像素P2的辅助边缘,但是在该算法中,它们可以被存储为左侧(或顶部)像素的一部分。此外,本公开内容还可以将两个边缘存储为像素P2的辅助边缘。此外,边缘可能不是针对像素P2的辅助边缘对,因为其覆盖像素P1的像素中心。
在一些方面中,对于每个像素,可以分配额外的存储来存储辅助边缘信息(auxEdge)以及覆盖像素的中心的图元的边缘信息(centerEdge)。如果辅助图元与覆盖像素中心的图元形成网格(或公共边缘),则辅助边缘距离可以用于更新中心边缘距离值。这可以确保在利用相邻像素色彩计算混合因子时也考虑了来自子像素图元的覆盖。
图9示出根据本公开内容的一种或多种技术的包括像素和图元的场景900。如图9中所示,场景900包括像素910、像素中心912、像素920、像素中心922、图元930和图元940。场景900还包括距离932、距离934、距离942和距离944。这些距离可以被称为像素距离(pixDist)。如图9中所示,距离932是从像素中心912朝着像素910到图元930的边缘的距离。此外,距离934是从像素中心912朝着像素920到图元930的边缘的距离。距离942是从像素中心922朝着像素920到图元930的边缘的距离。另外,距离944是从像素中心922朝着像素910到图元930的边缘的距离。
如图9中所示,像素910被图元930部分地覆盖。此外,像素910的中心(例如,像素中心912)未被图元930覆盖。如图9中进一步所示,图像920被图元940部分地覆盖。此外,像素920的中心(例如,像素中心922)被图元940覆盖。
在图9中,图元930和940可以以保守方式进行渲染,这意味着即使任何被部分覆盖的像素的中心未被图元覆盖,该像素也被处理以用于边缘计算。如果图元930和940是按该顺序处理的,则在渲染图元930时,像素910和920两者都被处理,因为图元930部分地覆盖像素910和920两者。在这样的情况下,本公开内容可以选择将辅助边缘作为针对像素910的辅助存储的一部分进行存储。在渲染图元940时,当图元940覆盖像素中心922时,像素920可以被处理以用于计算中心-边缘距离。
渲染图元930和940可以产生针对像素中心的以下距离:例如,像素中心到边缘(centerEdge)距离、辅助边缘(auxEdge)距离和/或辅助存储。在渲染图元930之后,像素910可以包括auxEdge[P1][right]=(d1,d2)以及centerEdge=NULL。此外,像素920可以包括auxEdge=NULL以及centerEdge=NULL。在渲染图元940之后,像素910可以不包括针对先前状态的改变,auxEdge[P1][right]=(d1,d2)以及centerEdge=NULL。此外,像素920可以包括centerEdge[P2][left]=d3以及auxEdge=NULL。
在一些方面中,在对边缘的后处理期间,可以通过在相邻像素之间比较辅助边缘和中心边缘信息来执行网格检测。在这种情况下,本公开内容可以检查以下条件以形成网格(isMesh):isMesh=if(centerEdge[P2][left]+auxEdge[P1][right]==pixDist)。如果该条件评估为真,则可以通过包括子图元覆盖centerEdge[P2][left]=pixDist–d1=d4来更新像素920的中心边缘。
在一些方面中,本公开内容可以假设辅助图元的色彩跟与其一起形成网格的图元相同。如果图元或三角形属于相同的对象,则这可能是常见的情况。此外,可以假设来自不同对象的图元或三角形很少形成网格,因此可能很少发生从不同对象收集(club)辅助图元的情况。此外,多个辅助图元可能并不常见,并且经验数据可以表明,在大多数像素中,每像素存在不超过一个辅助图元。因此,每方向存储一个辅助边缘的方法可能能够处理大多数实际情形,并且是硬件复杂度与质量之间的折中。此外,当前提议可以利用每像素每方向一个辅助存储。因此,本文中具有auxEdge存储的ECAA可以处理子像素图元,并且由此减轻任何伪影。此外,针对本文中具有辅助边缘的ECAA技术的每像素字节条件可以低于其它技术(例如,MSAA-4x)。
图10示出根据本公开内容的一种或多种技术的包括抗锯齿方法的示意图1000。如图10中所示,在1010处,本公开内容确定图元是否覆盖像素中心。如果是的话,则在1060处,本公开内容计算在所有方向上到图元的边缘的距离。如果否的话,则在1020处,本公开内容计算每个方向上的最小距离和最大距离。
在1030处,本公开内容确定辅助边缘(d0,d1)是否小于1。如果否的话,则在1032处,本公开内容丢弃该边缘信息。如果是的话,则在1040处,本公开内容确定isMesh d0是否等于dmax。如果否的话,则在1042处,本公开内容在针对该像素和方向的辅助边缘中存储(d0,d1)。如果是的话,则在1050处,本公开内容更新距离,并且在针对该像素和方向的辅助边缘中存储(dmin,d1)。接下来,本公开内容可以向片上存储1090发送辅助边缘1052。
在1070处,本公开内容可以确定Z测试是否通过。如果否的话,则在1072处,本公开内容丢弃该边缘信息。如果是的话,则在1080处,本公开内容将像素距离以及像素和方向两者存储在centerEdge中。然后,本公开内容可以向片上存储1090发送centerEdge信息1082、Z 1084和色彩1086。片上存储1090可以存储色彩、深度和/或边缘数据。
图10显示本文中描述的边缘计算的总体流程。对于每个像素,本公开内容可以在位于片上存储1090中的几何形状缓冲器中保留额外的存储。在一些方面中,可能需要每像素16比特数据来存储centerEdge信息,并且可能在每个方向上需要到图元边缘的4比特距离。这还可以针对其中心被图元覆盖的像素来计算。此外,可能需要每像素32比特数据来存储auxEdge信息。在每个方向上可能需要一对4比特边缘距离。这还可以针对被图元部分地覆盖但其中心未被覆盖的像素来计算。
如上文所指示的,光栅器块中的保守栅格化可以处理像素,即使其像素中心未被图元覆盖。在一些方面中,如果像素中心被图元覆盖,则可以计算centerEdge。如果像素被图元部分地覆盖,而不覆盖其中心,则可以计算auxEdge。此外,为了针对给定图元计算在像素处的centerEdge值,在x和y方向上评估从像素中心到三个边缘的轴向距离。如果一个方向上存在一个以上的边缘,则可以存储距离之中的最小值。该中心距离可以被传递给下游单元,并且如果图元通过针对该像素位置的Z测试,则可以将centerEdge值写到片上缓冲器,否则可以丢弃该值。
为了针对给定图元计算在像素处的auxEdge值,可以计算从像素中心到边缘的x-y轴向距离。对于辅助图元,可以存在在像素距离内的一对边缘(子像素图元)。因此,当找到这样的边缘时,可以存储每个方向上的(最小、最大)边缘距离对。如果auxEdge对于像素是有效的,则可以将其与任何现有的auxEdge进行比较,以检查网格形成。在这样的情况下,可以针对该方向更新auxEdge距离。例如,如果像素在左侧方向上具有(2,4)作为auxEdge,并且在同一方向上遇到来自下一图元的新auxEdge(4,8),则左侧方向上的auxEdge可以被更新为(2,8)。如果其未形成网格,则可以将最新值写入auxEdge值。这种经更新的auxEdge值可以被存储在片上缓冲器中。一旦完成所有渲染通路,片上缓冲器中的edgeBuffer可以包括针对每个像素的经更新的距离(centerEdge,auxEdge)。然后,这可以由后处理着色器用于通过基于边缘数据与相邻像素进行混合来更新色彩缓冲器。
在一些方面中,本文中的后处理着色器可以涉及多个步骤,比如通过检查图元之间的网格的形成,从而基于辅助边缘数据来更新中心边缘距离。这还可以与沿着四个方向的相邻像素进行混合。可以相对于每个方向独立地计算混合因子,并且可以计算平均像素色彩。
如上文所指示的,本公开内容的抗锯齿方法可以利用减少的执行开销和存储条件来实现高质量。与其它抗锯齿方法相比,本公开内容可以显著地减少存储开销。在一些方面中,可以存储来自两个方向(一个来自水平轴,而另一个来自垂直轴)的数据。因此,可以减少数据存储量。这种技术还可以产生相似的视觉质量的图像以及较少的伪影。
在一些方面中,本公开内容可以检测子像素图元。本公开内容还可以更新像素到边缘距离缓冲器以考虑新的边缘信息。本公开内容的各方面还可以提出新的硬件架构,该架构基于输入几何形状信息来计算像素到边缘信息,通过压缩边缘数据来将其存储在额外缓冲器(例如,边缘缓冲器)中,并且在GPU遇到子像素图元时进行更新。
如上文所指出的,一些抗锯齿方案可以基于可见图元对像素的覆盖来对相邻像素色彩进行混合。本公开内容的各方面可以利用相邻像素的深度值来微调混合因子并且实现更好的质量。该解决方案可以是可被配置为对轮廓边缘像素或所有图元边缘像素进行混合。在本公开内容中,混合算法可以在渲染通路完成之后在最终色彩缓冲器上工作。为了计算像素的混合色彩,本公开内容可以使用在每个像素以及其四个相邻像素处可用的色彩、边缘和/或深度信息。因此,输入可以是色彩缓冲器、Z缓冲器和边缘缓冲器。此外,输出可以是新色彩缓冲器。
为了在两个相邻像素之间混合色彩,可以基于可用的边缘信息以及其深度值来计算混合因子。根据距离,本算法可以具有用于混合的10种不同的情景,并且在一些情况下,z信息可以用于确定混合因子。例如,像素A与像素B的混合可以包括:向量AB(从像素A到朝着像素B的边缘的距离)、向量BA(从像素B到朝着像素A的边缘的距离),像素A的中心到像素B的中心之间的距离可以视为值1,并且像素A和像素B的Z值可以确定哪一者在另一者的前面。因此,可以存储针对多个像素中的每个像素的与相邻图元相比的边缘数据。然后,可以在混合通路中利用该边缘数据,其中,两个相邻像素之间的色彩被混合。因此,混合通路可以考虑相邻像素的覆盖,并且然后基于像素覆盖信息来对像素的色彩进行混合和/或使像素的边缘平滑。
本公开内容的算法可以在具有额外优点的基于瓦片的GPU架构上实现,其中整个过程是以每瓦片为基础上进行的。本公开内容可以选择丢弃边缘信息,这可以进一步实现带宽节省。当启用扩展分区时,可以将分区与算法一起使用。扩展分区可以进一步延伸到相邻分区中,例如延伸16个像素。该相邻像素数据可以用于混合。在进行分区时,本公开内容可能需要知道在分区的边界处的像素,以便沿着分区的边界准确地进行混合。
如上文所指示的,本公开内容的各方面可以利用显著较低的存储条件(例如,存储减少50%)以及减少的执行开销(例如,减少超过30-50%),实现高渲染质量。本公开内容的各方面还可以检测子像素图元并且更新像素到边缘距离缓冲器以考虑辅助边缘。本公开内容的各方面还可以在混合通路中使用深度信息以实现更好的抗锯齿效果。本公开内容的各方面还可以使用边缘缓冲器来开发自定义后处理算法以实现更好的视觉质量。
本公开内容的各方面可以通过检测这样的情况并且在检测到关于子像素图元的网格形成时更新边缘距离的新颖方案,来处理子像素图元。这可以确保由于小或细的三角形导致的覆盖不会丢失,并且因此可以不遇到由于这些三角形造成的伪影。本公开内容的各方面还可以包括高级后处理算法,例如,通过在执行任何抗锯齿操作之前检测边缘。将几何形状缓冲器中的边缘数据开放给这样的解析算法可以通过快速地推断几何形状边缘信息来改善效率,并且可以实现更高级的方案。
图5-10示出前述用于边缘压缩抗锯齿(ECAA)的方法和过程的示例。如图5-10中所示,本公开内容的各方面(例如,本文中的GPU和CPU),可以执行用于ECAA的多个不同的步骤或过程,以便降低存储条件和/或减少执行开销。例如,本文中的GPU可以计算多个像素中的第一像素(例如像素810)的中心-边缘距离(例如,距离854),第一像素的中心-边缘距离等于从第一像素的中心(例如,像素中心812)到场景中的多个图元中的第一图元(例如,图元830)的一个或多个边缘的距离,其中,第一图元(例如,图元830)的至少一部分可以与第一像素的中心(例如,像素中心812)重叠。
本文中的GPU还可以确定第一图元(例如,图元830)在场景中是否可见。本文中的GPU还可以确定第一像素(例如,像素920)的一部分是否与多个图元中的至少一个辅助图元(例如,图元930)重叠。此外,当第一像素(例如,像素920)的一部分与至少一个辅助图元(例如,图元930)重叠时,本文中的GPU可以计算从第一像素的中心到至少一个辅助图元的一个或多个边缘的距离(例如,距离942)。
当第一图元(例如,图元830)在场景中可见时,本文中的GPU还可以存储第一像素(例如,像素810)的中心-边缘距离(例如,距离854)。在一些方面中,当第一图元(例如,图元830)在场景中可见时,第一像素(例如,像素810)的中心-边缘距离(例如,距离854)可以被存储在边缘缓冲器中。此外,当存储在边缘缓冲器中时,第一像素(例如,像素810)的中心-边缘距离(例如,距离854)可以被压缩。
此外,当第一像素(例如,像素920)的一部分与至少一个辅助图元(例如,图元930)重叠时,本文中的GPU可以将从第一像素的中心到至少一个辅助图元的一个或多个边缘的距离(例如,距离942)存储在辅助缓冲器中。本文中的GPU还可以确定第一图元(例如,图元830)的深度是小于还是大于第二图元(例如,图元840)的深度。
本文中的GPU还可以确定第一像素(例如,像素810)与第一图元(例如,图元830)之间的重叠量。在一些方面中,可以基于第一像素(例如,像素810)的中心-边缘距离或第二像素(例如,像素820)的中心-边缘距离中的至少一项,来确定第一像素与第一图元(例如,图元830)之间的重叠量,其中,第二像素的中心-边缘距离可以等于从第二像素的中心到多个图元中的第二图元(例如,图元840)的一个或多个边缘的距离。在一些实例中,可以基于第一图元(例如,图元830)的深度以及多个图元中的第二图元(例如,图元840)的深度来确定第一像素(例如,像素810)与第一图元(例如,图元830)之间的重叠量。在一些方面中,第一像素(例如,像素810)与第一图元(例如,图元830)之间的重叠量可以等于第一像素的区域的与第一图元重叠的一部分。此外,当至少一个辅助图元(例如,图元930)与第一图元(例如,图元940)形成网格时,本文中的GPU可以更新第一像素(例如,像素920)与第一图元(例如,图元940)之间的重叠量。
本文中的GPU还可以基于第一像素(例如,像素810)的中心-边缘距离(例如,距离854)或者第一像素与第一图元(例如,图元830)之间的重叠量中的至少一项,来将第一像素的色彩与第二像素(例如,像素820)的色彩进行混合。在一些方面中,可以针对第一像素(例如,像素810)中的与第一图元(例如,图元830)不重叠的一部分,将第一像素的色彩与第二像素(例如,像素820)的色彩进行混合。此外,第一像素(例如,像素810)可以与第二像素(例如,像素820)相邻。在一些实例中,第一像素(例如,像素810)的色彩可以等于第一图元(例如,图元830)的色彩,并且第二像素(例如,像素820)的色彩可以等于第二图元(例如,图元840)的色彩。
在一些方面中,当多个图元中的一个图元(例如,图元830)与像素的中心(例如,像素中心812)重叠时,可以针对多个像素中的每个像素(例如,像素810)计算中心-边缘距离(例如,距离854)。此外,第一图元(例如,图元830)的一个或多个边缘可以包括以下各项中的至少一项:上边缘、下边缘、左边缘和右边缘。第一像素(例如,像素810)的中心-边缘距离(例如,距离854)也可以在渲染通路中计算。此外,多个图元可以包括多个子像素图元。
图11示出根据本公开内容的一种或多种技术的示例方法的流程图1100。方法可以由比如CPU、GPU或用于图形处理的装置之类的装置来执行。在1102处,装置可以计算多个像素中的第一像素的中心-边缘距离,第一像素的中心-边缘距离等于从第一像素的中心到场景中的多个图元中的第一图元的一个或多个边缘的距离,其中,第一图元的至少一部分可以与第一像素的中心重叠,如结合图5-10中的示例所描述的。
在1104处,装置可以确定第一图元在场景中是否可见,如结合图5-10中的示例所描述的。在1106处,装置可以确定第一像素的一部分是否与多个图元中的至少一个辅助图元重叠,如结合图5-10中的示例所描述的。在1108处,当第一像素的一部分与至少一个辅助图元重叠时,装置可以计算从第一像素的中心到至少一个辅助图元的一个或多个边缘的距离,如结合图5-10中的示例所描述的。
在1110处,当第一图元在场景中可见时,装置可以存储第一像素的中心-边缘距离,如结合图5-10中的示例所描述的。在一些方面中,当第一图元在场景中可见时,第一像素的中心-边缘距离可以被存储在边缘缓冲器中,如结合图5-10中的示例所描述的。此外,当被存储在边缘缓冲器中时,第一像素的中心-边缘距离可以被压缩,如结合图5-10中的示例所描述的。在1112处,当第一像素的一部分与至少一个辅助图元重叠时,装置可以将从第一像素的中心到至少一个辅助图元的一个或多个边缘的距离存储在辅助缓冲器中,如结合图5-10中的示例所描述的。
在1114处,装置可以确定第一图元的深度是小于还是大于第二图元的深度,如结合图5-10中的示例所描述的。在1116处,装置可以确定第一像素与第一图元之间的重叠量,如结合图5-10中的示例所描述的。在一些方面中,第一像素与第一图元之间的重叠量可以是基于第一像素的中心-边缘距离或第二像素的中心-边缘距离中的至少一项来确定的,其中,第二像素的中心-边缘距离可以等于从第二像素的中心到多个图元中的第二图元的一个或多个边缘的距离,如结合图5-10中的示例所描述的。在一些实例中,第一像素与第一图元之间的重叠量可以是基于第一图元的深度和多个图元中的第二图元的深度来确定的,如结合图5-10中的示例所描述的。在一些方面中,第一像素与第一图元之间的重叠量可以等于第一像素的区域的与第一图元重叠的一部分,如结合图5-10中的示例所描述的。在1118处,当至少一个辅助图元与第一图元形成网格时,装置可以更新第一像素与第一图元之间的重叠量,如结合图5-10中的示例所描述的。
在1120处,装置可以基于第一像素的中心-边缘距离或者第一像素与第一图元之间的重叠量中的至少一项,来将第一像素的色彩与第二像素的色彩进行混合,如结合图5-10中的示例所描述的。在一些方面中,可以针对第一像素中的与第一图元不重叠的一部分,来将第一像素的色彩与第二像素的色彩进行混合,如结合图5-10中的示例所描述的。此外,第一像素可以与第二像素相邻,如结合图5-10中的示例所描述的。在一些实例中,第一像素的色彩可以等于第一图元的色彩,并且第二像素的色彩可以等于第二图元的色彩,如结合图5-10中的示例所描述的。
在一些方面中,当多个图元中的一个图元与像素的中心重叠时,可以针对多个像素中的每个像素计算中心-边缘距离,如结合图5-10中的示例所描述的。此外,第一图元的一个或多个边缘可以包括以下各项中的至少一项:上边缘、下边缘、左边缘和右边缘,如结合图5-10中的示例所描述的。第一像素的中心-边缘距离也可以在渲染通路中计算。此外,多个图元可以包括多个子像素图元,如结合图5-10中的示例所描述的。
在一种配置中,提供用于图形处理的方法或装置。装置可以是CPU、GPU或可以执行图形处理的某种其它处理器。在一个方面中,装置可以是设备104内的处理单元120,或者可以是设备104或另一设备内的某种其它硬件。装置可以包括用于计算多个像素中的第一像素的中心-边缘距离的单元,第一像素的中心-边缘距离等于从第一像素的中心到场景中的多个图元中的第一图元的一个或多个边缘的距离,其中,第一图元的至少一部分可以与第一像素的中心重叠。装置还可以包括用于当第一图元在场景中可见时存储第一像素的中心-边缘距离的单元。装置还可以包括用于基于多个图元中的第一图元的深度和第二图元的深度来确定第一像素与第一图元之间的重叠量的单元。装置还可以包括用于基于第一像素的中心-边缘距离或者第一像素与第一图元之间的重叠量中的至少一项来将第一像素的色彩与第二像素的色彩进行混合的单元。装置还可以包括用于确定第一像素的一部分是否与多个图元中的至少一个辅助图元重叠的单元。装置还可以包括用于当至少一个辅助图元与第一图元形成网格时更新第一像素与第一图元之间的重叠量的单元。装置还可以包括用于当第一像素的一部分与至少一个辅助图元重叠时计算从第一像素的中心到至少一个辅助图元的一个或多个边缘的距离的单元。装置还可以包括用于当第一像素的一部分与至少一个辅助图元重叠时将从第一像素的中心到至少一个辅助图元的一个或多个边缘的距离存储在辅助缓冲器中的单元。装置还可以包括用于确定第一图元的深度是小于还是大于第二图元的深度的单元。装置还可以包括用于确定第一图元在场景中是否可见的单元。
可以实现本文中描述的主题以实现一个或多个益处或优点。例如,所描述的图形处理技术可以由GPU、CPU或可以执行图形处理以实现本文描述的多通路曲面细分技术的某种其它处理器来使用。与其它图形处理技术相比,这也可以以低成本来实现。此外,本文中的图形处理技术可以改善或加速数据处理或执行。进一步地,本文中的图形处理技术可以改善资源或数据利用和/或资源效率。此外,本公开内容的各方面可以利用ECAA技术以便降低存储条件和/或减少执行开销。
根据本公开内容,在上下文没有另外规定的情况下,术语“或”可以被解释为“和/或”。另外,虽然比如“一个或多个”或“至少一个”等的短语可能已经用于本文中所公开的一些特征,而没有用于其它特征,但是没有使用这样的语言的特征可以在上下文没有另外规定的情况下被解释为暗示这样的含义。
在一个或多个示例中,本文中所描述的功能可以用硬件、软件、固件或其任何组合来实现。例如,尽管已经贯穿本公开内容使用了术语“处理单元”,但是这样的处理单元可以用硬件、软件、固件或其任何组合来实现。如果任何功能、处理单元、本文中所描述的技术或其它模块是用软件实现的,则功能、处理单元、本文中所描述的技术或其它模块可以作为一个或多个指令或代码存储在计算机可读介质上或者通过计算机可读介质进行发送。计算机可读介质可以包括计算机数据存储介质或通信介质,通信介质包括促进计算机程序从一个地方到另一个地方的传送的任何介质。以此方式,计算机可读介质通常可以对应于:(1)非暂时性的有形计算机可读存储介质;或者(2)比如信号或载波之类的通信介质。数据存储介质可以是可以由一个或多个计算机或者一个或多个处理器访问以取回用于实现在本公开内容中描述的技术的指令、代码和/或数据结构的任何可用的介质。通过示例而非限制性的方式,这样的计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备。如本文中所使用的,磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘利用激光来光学地复制数据。上述各项的组合也应当被包括在计算机可读介质的范围内。计算机程序产品可以包括计算机可读介质。
代码可以由一个或多个处理器来执行,比如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、算术逻辑单元(ALU)、现场可编程逻辑阵列(FPGA)、或其它等效的集成的或分立的逻辑电路。因此,如本文中所使用的术语“处理器”可以指代前述结构中的任何结构或者适合于实现本文中所描述的技术的任何其它结构。此外,所述技术可以在一个或多个电路或逻辑元件中充分地实现。
本公开内容的技术可以在各种各样的设备或装置中实现,包括无线手机、集成电路(IC)或一组IC(例如,芯片集)。在本公开内容中描述各种组件、模块或单元,以强调被配置为执行所公开的技术的设备的功能方面,但是不一定需要通过不同的硬件单元来实现。确切而言,如上文所描述的,各个单元可以被组合在任何硬件单元中,或者由一批可互操作的硬件单元(包括如上文所描述的一个或多个处理器)结合合适的软件和/或固件来提供。
已经描述各个示例。这些和其它示例在跟随的权利要求的范围内。

Claims (58)

1.一种图形处理的方法,包括:
计算多个像素中的第一像素的中心-边缘距离,所述第一像素的所述中心-边缘距离等于从所述第一像素的中心到场景中的多个图元中的第一图元的一个或多个边缘的距离,其中,所述第一图元的至少一部分与所述第一像素的所述中心重叠;
当所述第一图元在所述场景中可见时,存储所述第一像素的所述中心-边缘距离;
确定所述第一像素与所述第一图元之间的重叠量;以及
基于所述第一像素的所述中心-边缘距离或者所述第一像素与所述第一图元之间的所述重叠量中的至少一项,来将所述第一像素的色彩与第二像素的色彩进行混合。
2.根据权利要求1所述的方法,还包括:
确定所述第一像素的一部分是否与所述多个图元中的至少一个辅助图元重叠。
3.根据权利要求2所述的方法,还包括:
当所述至少一个辅助图元与所述第一图元形成网格时,更新所述第一像素与所述第一图元之间的所述重叠量。
4.根据权利要求2所述的方法,还包括:
当所述第一像素的一部分与所述至少一个辅助图元重叠时,计算从所述第一像素的所述中心到所述至少一个辅助图元的一个或多个边缘的距离。
5.根据权利要求4所述的方法,还包括:
当所述第一像素的一部分与所述至少一个辅助图元重叠时,将从所述第一像素的所述中心到所述至少一个辅助图元的所述一个或多个边缘的所述距离存储在辅助缓冲器中。
6.根据权利要求1所述的方法,还包括:
确定所述第一图元的深度是小于还是大于第二图元的深度。
7.根据权利要求1所述的方法,还包括:
确定所述第一图元在所述场景中是否可见。
8.根据权利要求1所述的方法,其中,当所述第一图元在所述场景中可见时,所述第一像素的所述中心-边缘距离被存储在边缘缓冲器中。
9.根据权利要求8所述的方法,其中,所述第一像素的所述中心-边缘距离在被存储在所述边缘缓冲器中时被压缩。
10.根据权利要求1所述的方法,其中,所述第一像素与所述第一图元之间的所述重叠量等于所述第一像素的区域的与所述第一图元重叠的部分。
11.根据权利要求1所述的方法,其中,所述第一像素的色彩是针对所述第一像素中的与所述第一图元不重叠的部分而与所述第二像素的色彩混合的。
12.根据权利要求1所述的方法,其中,所述第一像素与所述第二像素相邻。
13.根据权利要求1所述的方法,其中,所述第一像素的色彩等于所述第一图元的色彩,并且所述第二像素的色彩等于第二图元的色彩。
14.根据权利要求1所述的方法,其中,当所述多个图元中的一个图元与所述像素的所述中心重叠时,针对所述多个像素中的每个像素来计算中心-边缘距离。
15.根据权利要求1所述的方法,其中,所述第一图元的所述一个或多个边缘包括以下各项中的至少一项:上边缘、下边缘、左边缘和右边缘。
16.根据权利要求1所述的方法,其中,所述第一像素的所述中心-边缘距离是在渲染通路中计算的。
17.根据权利要求1所述的方法,其中,所述多个图元包括多个子像素图元。
18.根据权利要求1所述的方法,其中,所述第一像素与所述第一图元之间的所述重叠量是基于所述第一像素的中心-边缘距离或者所述第二像素的中心-边缘距离中的至少一项来确定的,其中,所述第二像素的中心-边缘距离等于从所述第二像素的中心到所述多个图元中的第二图元的一个或多个边缘的距离。
19.根据权利要求1所述的方法,其中,所述第一像素与所述第一图元之间的所述重叠量是基于所述第一图元的深度和所述多个图元中的第二图元的深度来确定的。
20.一种用于图形处理的装置,包括:
存储器;以及
至少一个处理器,其耦合到所述存储器并且被配置为:
计算多个像素中的第一像素的中心-边缘距离,所述第一像素的所述中心-边缘距离等于从所述第一像素的中心到场景中的多个图元中的第一图元的一个或多个边缘的距离,其中,所述第一图元的至少一部分与所述第一像素的所述中心重叠;
当所述第一图元在所述场景中可见时,存储所述第一像素的所述中心-边缘距离;
确定所述第一像素与所述第一图元之间的重叠量;以及
基于所述第一像素的所述中心-边缘距离或者所述第一像素与所述第一图元之间的所述重叠量中的至少一项,来将所述第一像素的色彩与第二像素的色彩进行混合。
21.根据权利要求20所述的装置,其中,所述至少一个处理器还被配置为:
确定所述第一像素的一部分是否与所述多个图元中的至少一个辅助图元重叠。
22.根据权利要求21所述的装置,其中,所述至少一个处理器还被配置为:
当所述至少一个辅助图元与所述第一图元形成网格时,更新所述第一像素与所述第一图元之间的所述重叠量。
23.根据权利要求21所述的装置,其中,所述至少一个处理器还被配置为:
当所述第一像素的一部分与所述至少一个辅助图元重叠时,计算从所述第一像素的所述中心到所述至少一个辅助图元的一个或多个边缘的距离。
24.根据权利要求23所述的装置,其中,所述至少一个处理器还被配置为:
当所述第一像素的一部分与所述至少一个辅助图元重叠时,将从所述第一像素的所述中心到所述至少一个辅助图元的所述一个或多个边缘的所述距离存储在辅助缓冲器中。
25.根据权利要求20所述的装置,其中,所述至少一个处理器还被配置为:
确定所述第一图元的深度是小于还是大于第二图元的深度。
26.根据权利要求20所述的装置,其中,所述至少一个处理器还被配置为:
确定所述第一图元在所述场景中是否可见。
27.根据权利要求20所述的装置,其中,当所述第一图元在所述场景中可见时,所述第一像素的所述中心-边缘距离被存储在边缘缓冲器中。
28.根据权利要求27所述的装置,其中,所述第一像素的所述中心-边缘距离在被存储在所述边缘缓冲器中时被压缩。
29.根据权利要求20所述的装置,其中,所述第一像素与所述第一图元之间的所述重叠量等于所述第一像素的区域的与所述第一图元重叠的部分。
30.根据权利要求20所述的装置,其中,所述第一像素的色彩是针对所述第一像素中的与所述第一图元不重叠的部分而与所述第二像素的色彩混合的。
31.根据权利要求20所述的装置,其中,所述第一像素与所述第二像素相邻。
32.根据权利要求20所述的装置,其中,所述第一像素的色彩等于所述第一图元的色彩,并且所述第二像素的色彩等于第二图元的色彩。
33.根据权利要求20所述的装置,其中,当所述多个图元中的一个图元与所述像素的所述中心重叠时,针对所述多个像素中的每个像素来计算中心-边缘距离。
34.根据权利要求20所述的装置,其中,所述第一图元的所述一个或多个边缘包括以下各项中的至少一项:上边缘、下边缘、左边缘和右边缘。
35.根据权利要求20所述的装置,其中,所述第一像素的所述中心-边缘距离是在渲染通路中计算的。
36.根据权利要求20所述的装置,其中,所述多个图元包括多个子像素图元。
37.根据权利要求20所述的装置,其中,所述第一像素与所述第一图元之间的所述重叠量是基于所述第一像素的中心-边缘距离或者所述第二像素的中心-边缘距离中的至少一项来确定的,其中,所述第二像素的中心-边缘距离等于从所述第二像素的中心到所述多个图元中的第二图元的一个或多个边缘的距离。
38.根据权利要求20所述的装置,其中,所述第一像素与所述第一图元之间的所述重叠量是基于所述第一图元的深度和所述多个图元中的第二图元的深度来确定的。
39.一种用于图形处理的装置,包括:
用于计算多个像素中的第一像素的中心-边缘距离的单元,所述第一像素的所述中心-边缘距离等于从所述第一像素的中心到场景中的多个图元中的第一图元的一个或多个边缘的距离,其中,所述第一图元的至少一部分与所述第一像素的所述中心重叠;
用于当所述第一图元在所述场景中可见时,存储所述第一像素的所述中心-边缘距离的单元;
用于确定所述第一像素与所述第一图元之间的重叠量的单元;以及
用于基于所述第一像素的所述中心-边缘距离或者所述第一像素与所述第一图元之间的所述重叠量中的至少一项,来将所述第一像素的色彩与第二像素的色彩进行混合的单元。
40.根据权利要求39所述的装置,还包括:
用于确定所述第一像素的一部分是否与所述多个图元中的至少一个辅助图元重叠的单元。
41.根据权利要求40所述的装置,还包括:
用于当所述至少一个辅助图元与所述第一图元形成网格时,更新所述第一像素与所述第一图元之间的所述重叠量的单元。
42.根据权利要求40所述的装置,还包括:
用于当所述第一像素的一部分与所述至少一个辅助图元重叠时,计算从所述第一像素的所述中心到所述至少一个辅助图元的一个或多个边缘的距离的单元。
43.根据权利要求42所述的装置,还包括:
用于当所述第一像素的一部分与所述至少一个辅助图元重叠时,将从所述第一像素的所述中心到所述至少一个辅助图元的所述一个或多个边缘的所述距离存储在辅助缓冲器中的单元。
44.根据权利要求39所述的装置,还包括:
用于确定所述第一图元的深度是小于还是大于第二图元的深度的单元。
45.根据权利要求39所述的装置,还包括:
用于确定所述第一图元在所述场景中是否可见的单元。
46.根据权利要求39所述的装置,其中,当所述第一图元在所述场景中可见时,所述第一像素的所述中心-边缘距离被存储在边缘缓冲器中。
47.根据权利要求46所述的装置,其中,所述第一像素的所述中心-边缘距离在被存储在所述边缘缓冲器中时被压缩。
48.根据权利要求39所述的装置,其中,所述第一像素与所述第一图元之间的所述重叠量等于所述第一像素的区域的与所述第一图元重叠的部分。
49.根据权利要求39所述的装置,其中,所述第一像素的色彩是针对所述第一像素中的与所述第一图元不重叠的部分而与所述第二像素的色彩混合的。
50.根据权利要求39所述的装置,其中,所述第一像素与所述第二像素相邻。
51.根据权利要求39所述的装置,其中,所述第一像素的色彩等于所述第一图元的色彩,并且所述第二像素的色彩等于第二图元的色彩。
52.根据权利要求39所述的装置,其中,当所述多个图元中的一个图元与所述像素的所述中心重叠时,针对所述多个像素中的每个像素来计算中心-边缘距离。
53.根据权利要求39所述的装置,其中,所述第一图元的所述一个或多个边缘包括以下各项中的至少一项:上边缘、下边缘、左边缘和右边缘。
54.根据权利要求39所述的装置,其中,所述第一像素的所述中心-边缘距离是在渲染通路中计算的。
55.根据权利要求39所述的装置,其中,所述多个图元包括多个子像素图元。
56.根据权利要求39所述的装置,其中,所述第一像素与所述第一图元之间的所述重叠量是基于所述第一像素的中心-边缘距离或者所述第二像素的中心-边缘距离中的至少一项来确定的,其中,所述第二像素的中心-边缘距离等于从所述第二像素的中心到所述多个图元中的第二图元的一个或多个边缘的距离。
57.根据权利要求39所述的装置,其中,所述第一像素与所述第一图元之间的所述重叠量是基于所述第一图元的深度和所述多个图元中的第二图元的深度来确定的。
58.一种存储用于图形处理的计算机可执行代码的计算机可读介质,包括用于进行以下操作的代码:
计算多个像素中的第一像素的中心-边缘距离,所述第一像素的所述中心-边缘距离等于从所述第一像素的中心到场景中的多个图元中的第一图元的一个或多个边缘的距离,其中,所述第一图元的至少一部分与所述第一像素的所述中心重叠;
当所述第一图元在所述场景中可见时,存储所述第一像素的所述中心-边缘距离;
确定所述第一像素与所述第一图元之间的重叠量;以及
基于所述第一像素的所述中心-边缘距离或者所述第一像素与所述第一图元之间的所述重叠量中的至少一项,来将所述第一像素的色彩与第二像素的色彩进行混合。
CN202180018945.4A 2020-03-11 2021-02-09 用于边缘压缩抗锯齿的方法和装置 Pending CN115244580A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/816,150 2020-03-11
US16/816,150 US11631215B2 (en) 2020-03-11 2020-03-11 Methods and apparatus for edge compression anti-aliasing
PCT/US2021/017198 WO2021183246A1 (en) 2020-03-11 2021-02-09 Methods and apparatus for edge compression anti-aliasing

Publications (1)

Publication Number Publication Date
CN115244580A true CN115244580A (zh) 2022-10-25

Family

ID=74853767

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180018945.4A Pending CN115244580A (zh) 2020-03-11 2021-02-09 用于边缘压缩抗锯齿的方法和装置

Country Status (7)

Country Link
US (1) US11631215B2 (zh)
EP (2) EP4242972A3 (zh)
KR (1) KR20220151620A (zh)
CN (1) CN115244580A (zh)
BR (1) BR112022017413A2 (zh)
TW (1) TW202137141A (zh)
WO (1) WO2021183246A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220405987A1 (en) * 2021-06-18 2022-12-22 Nvidia Corporation Pixel blending for neural network-based image generation

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5343558A (en) 1991-02-19 1994-08-30 Silicon Graphics, Inc. Method for scan converting shaded triangular polygons
GB2278524B (en) 1993-05-28 1997-12-10 Nihon Unisys Ltd Method and apparatus for rendering visual images employing area calculation and blending of fractional pixel lists for anti-aliasing and transparency
US6097400A (en) * 1998-06-01 2000-08-01 Ati Technologies, Inc. Method and apparatus for anti-aliasing post rendering of an image
US6429877B1 (en) 1999-07-30 2002-08-06 Hewlett-Packard Company System and method for reducing the effects of aliasing in a computer graphics system
US6995769B2 (en) * 2002-03-21 2006-02-07 Hewlett-Packard Development Company, L.P. Systems and methods for compressing rasterization setup data within a sort middle graphics architecture
CN1653488A (zh) 2002-05-10 2005-08-10 比特波伊斯有限责任公司 显示驱动器ic、显示模块以及合并有图形引擎的电子装置
US20060082593A1 (en) 2004-10-19 2006-04-20 Microsoft Corporation Method for hardware accelerated anti-aliasing in 3D
US8269788B2 (en) 2005-11-15 2012-09-18 Advanced Micro Devices Inc. Vector graphics anti-aliasing
US8237738B1 (en) 2006-11-02 2012-08-07 Nvidia Corporation Smooth rasterization of polygonal graphics primitives
US9251607B1 (en) * 2011-11-14 2016-02-02 Google Inc. Anti-aliasing techniques
US10134160B2 (en) 2013-09-26 2018-11-20 Intel Corporation Anti-aliasing for graphics hardware

Also Published As

Publication number Publication date
KR20220151620A (ko) 2022-11-15
TW202137141A (zh) 2021-10-01
WO2021183246A1 (en) 2021-09-16
EP4242972A3 (en) 2023-11-22
BR112022017413A2 (pt) 2022-10-18
EP4242972A2 (en) 2023-09-13
US20210287427A1 (en) 2021-09-16
EP4118627A1 (en) 2023-01-18
US11631215B2 (en) 2023-04-18

Similar Documents

Publication Publication Date Title
US11373268B2 (en) Apparatus and method for graphics processing unit hybrid rendering
EP3427229B1 (en) Visibility information modification
US11631212B2 (en) Methods and apparatus for efficient multi-view rasterization
CN116529772A (zh) 经压缩的几何形状渲染与流式传输
EP4242972A2 (en) Methods and apparatus for edge compression anti-aliasing
CN118043850A (zh) Meshlet着色图集
US20230147244A1 (en) Methods and apparatus for occlusion handling techniques
US20240212257A1 (en) Workload packing in graphics texture pipeline
US11734787B2 (en) Foveated binned rendering associated with sample spaces
WO2024055221A1 (en) Fast msaa techniques for graphics processing
US11380047B2 (en) Methods and apparatus for order-independent occlusion computations
US20230017522A1 (en) Optimization of depth and shadow pass rendering in tile based architectures
WO2023055655A1 (en) Meshlet shading atlas

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