CN110383337A - 可变速率着色 - Google Patents
可变速率着色 Download PDFInfo
- Publication number
- CN110383337A CN110383337A CN201880012511.1A CN201880012511A CN110383337A CN 110383337 A CN110383337 A CN 110383337A CN 201880012511 A CN201880012511 A CN 201880012511A CN 110383337 A CN110383337 A CN 110383337A
- Authority
- CN
- China
- Prior art keywords
- primitive
- segment
- value
- gpu
- srp
- 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.)
- Granted
Links
Classifications
-
- 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/80—Shading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
用于在计算机系统中绘制图形的方法和设备包括图形处理单元(GPU),其具有灵活的、动态的、面向应用的机制,以用于改变执行片段着色以将图像绘制到显示器的速率。特别地,所描述的方面包括在光栅化阶段基于对对象的基元的粗略扫描转换来确定图坐标,该图坐标指示在对象的基元内的片段的采样率参数(SRP)图上的位置,至少基于图坐标来标识针对对象的基元内的片段的查找值,并且至少基于查找值来计算针对对象的基元内的片段的相应片段变量SRP值。
Description
背景技术
本方面涉及一种计算机设备,并且更具体地涉及在计算机设备上绘制图形时执行可变采样率着色。
可以将2D对象或来自(真实或虚构的)3D世界的对象绘制到二维(2D)显示屏幕上的计算机图形系统当前被用于各种各样的应用中。例如,3D计算机图形可以用于实时交互式应用(诸如视频游戏、虚拟现实、科学研究等)以及离线应用(诸如创建高分辨率电影、图形艺术等)。通常,图形系统包括图形处理单元(GPU)。GPU可以被实现为计算机的中央处理单元(CPU)的协处理器组件,并且可以以附加卡(例如,视频卡)、协处理器的形式被提供,或者被提供作为直接被集成到计算机的主板或其他设备(诸如游戏设备)中的功能。
通常,GPU具有“逻辑图形管线”,逻辑图形管线可以接受2D或3D场景的一些表示作为输入,并且输出限定2D图像的位图以用于显示。例如,MICROSOFT CORPORATION的DIRECTX应用程序编程接口集合(包括DIRECT3D API)是一种具有图形管线模型的API的示例。另一示例包括开放图形库(OPENGL)API。图形管线通常包括用于将一组顶点、纹理、缓冲器和状态信息转换为屏幕上的图像帧的多个阶段。例如,图形管道的一个阶段是着色器。着色器是在专用处理单元上运行的一段代码,也称为着色单元或着色处理器,通常一次执行多个数据线程,被编程为对正在绘制的片段生成适当水平的颜色和/或特殊效果。具体地,例如,顶点着色器处理顶点的特征(位置、纹理坐标、颜色等),并且像素着色器处理像素的特征(纹理值、颜色、z深度和α值)。现有技术通常在图形管线内使用恒定的采样率来绘制整个帧。由于对高保真图像的需求,如果需要N-多重采样抗混叠,则通常以每像素速率或以每像素N个样本的速率执行像素着色。因此,计算机设备操作图形管线以将关于3D对象的信息转换为可以显示的位图,并且该过程需要相当大的存储器和处理能力。
像素密度和显示器分辨率持续增加,并且移动显示设备(如MICROSOFTCORPORATION的HOLOLENS全息耳机设备)对功率降低的需求持续。因此,本领域需要在计算机设备中进行更有效的图形处理。
发明内容
以下呈现一个或多个方面的简化概述以便提供对这样的方面的基本理解。该概述不是所有预期方面的广泛概述,并且既不旨在标识所有方面的关键或重要元素,也不旨在界定任何或所有方面的范围。其唯一目的是以简化的形式呈现一个或多个方面的一些概念,作为稍后呈现的更详细描述的序言。
一个方面涉及一种在计算机系统中绘制图形的方法,其包括由GPU在光栅化阶段基于对对象的基元的粗略扫描转换来确定图坐标,该图坐标指示在对象的基元内的片段的采样率参数(SRP)图上的位置。此外,该方法包括由GPU在光栅化阶段至少基于图坐标来标识针对对象的基元内的片段的查找值。此外,该方法包括由GPU在光栅化阶段至少基于查找值来计算针对对象的基元内的片段的相应片段变量SRP值。另外,该方法包括由GPU在像素着色阶段基于相应片段变量SRP值来对对象的基元内的片段进行着色。
在另一方面,一种计算机设备包括存储器和与存储器通信的图形处理单元(GPU)。GPU被配置为在光栅化阶段基于对对象的基元的粗略扫描转换来确定图坐标,该图坐标指示在对象的基元内的片段的SRP图上的位置。此外,GPU被配置为在光栅化阶段至少基于图坐标来标识针对对象的基元内的片段的查找值。此外,GPU被配置为在光栅化阶段至少基于查找值来计算针对对象的基元内的片段的相应片段变量SRP值。另外,GPU被配置为在像素着色阶段基于相应片段变量SRP值来对对象的基元内的片段进行着色。
在另一方面,一种存储由处理器可执行以在计算机设备中绘制图形的计算机可执行指令的计算机可读介质包括各种指令。该计算机可读介质包括用于由GPU在光栅化阶段基于对对象的基元的粗略扫描转换来确定图坐标的指令,该图坐标指示在对象的基元内的片段的SRP图上的位置。此外,该计算机可读介质包括用于由GPU在光栅化阶段至少基于图坐标来标识针对对象的基元内的片段的查找值的指令。此外,该计算机可读介质包括用于由GPU在光栅化阶段至少基于查找值来计算针对对象的基元内的片段的相应片段变量SRP值的指令。另外,该计算机可读介质包括用于由GPU在像素着色阶段基于相应片段变量SRP值来对对象的基元内的片段进行着色的指令。
与本发明的各方面有关的其他优点和新颖特征将部分地在下面的描述中阐述,并且部分地对于检查了以下内容或通过其实践进行了学习的本领域技术人员将变得更加明显。
附图说明
在附图中:
图1是包括根据本所公开的各方面配置的图形处理单元和图形管线的计算机设备的示例架构的示意性框图;
图2是图1的计算机设备的图形管线和图形存储器的示例的示意图;
图3-1是根据所描述的方面的基于图形管线的操作来绘制图像的方法的示例的流程图;
图3-2是根据所描述的方面的基于图形管线的操作来绘制图像的方法的另一示例的流程图;
图4是图像的基元以及由基元覆盖的图块和子图块的示例、以及与图3-1和3-2的方法中的光栅化阶段的操作相关联的光栅化阶段组件和子组件的示例的示意图;
图5是具有相应顶点的示例基元的图表,每个顶点具有相应的采样率参数(SRP)值,并且标识每个图块的附加点(例如,在与基元的交叉点处和/或在相应图块的拐角处),据此,可以根据相应顶点特定SRP值基于插值来确定SRP值;
图6是根据所描述的方面的列出图块和用于从与对应于相应图块的特定点相对应的SRP值中选择相应图块的相应最大采样率参数(SRP)值的公式的表;
图7是根据所描述的方面的图6的图表的特写视图,并且另外包括用于图6的图块之一的子图块网格以及子图块网格的每个框中的每个像素的样本位置,并且进一步标识子图块网格中的不同像素组的不同着色率;
图8是根据所描述的方面的计算子图块网格的每个像素的纹理梯度的示例的图表;
图9是根据所描述的方面的通过所确定的图块特定或片段特定SRP值来修改图8的图表的所计算的纹理梯度的示例的图表。
图10是根据所描述的方面的在图3-1和3-2的方法中的光栅化阶段期间计算粗略SRP图的片段的片段变量SRP值的示例;
图11是在计算机设备上绘制图像的方法的流程图,其包括图2的流程图中的方法;以及
图12是根据所描述的方面的由图1和2的计算机设备生成的图像的示例,并且在图像上叠加图块网格的表示,其中不同的图块具有所确定的不同着色率。
具体实施方式
所描述的方面提供了一种图形处理单元(GPU),其具有灵活的、动态的、面向应用的机制,用于改变执行片段着色以将图像绘制到显示器的速率。特别地,所描述的方面允许将不同的着色率用于被用于绘制图像的光栅化(扫描转换)基元的不同片段(例如,图块、子图块、四方(quad)、像素或子像素区域)。例如,所描述的方面可以允许着色率从非常粗略(即,每8×8像素屏幕图块一个着色样本)到基于四方(即,每2×2像素区域一个着色样本)或更精细(即,每个像素一个着色样本)到完整的子像素分辨率而变化。
在确定每个基元的不同区域(和/或2D图像的不同区域)的着色率时,所描述的方面考虑了关于跨图像的区域的期望细节水平(LOD)的可变性。作为示例但不限于此,每个基元的不同片段的不同着色率可以与中央凹(foveated)绘制(固定或眼睛跟踪)、中央凹显示光学器件、感兴趣对象(例如,游戏中的敌人)和内容特性(例如,边缘锐度、细节程度、照明平滑度等)中的一个或多个相关联。换言之,所描述的方面定义用于在运行中基于很多可能因素来控制由GPU的图形管线的像素着色阶段执行的工作是否以特定空间速率来执行的机制(例如,在处理图形管线中的整个图像中使用的任何基元的任何部分期间),包括基元的屏幕空间位置、局部场景复杂度和/或对象标识符(ID),以上仅举几个示例。
更具体地,所描述的方面基于新的插值着色率参数来控制每个基元(和/或每个2D图像)的不同区域的相应着色率,以供图形管线的光栅化阶段使用。例如,光栅化阶段利用一个或多个着色率参数值来确定对于给定基元的每个相应区域要着色多少个样本。换言之,所描述的方面使得光栅化器能够在对每个基元进行扫描转换时在运行中改变着色率(例如,一次处理整个图像,而不必执行不同的绘制通道或者不必将相同的基元绘制成多个视口)。另外,结合确定要着色样本数目,或者独立地,光栅化阶段利用每个相应的着色率参数来确定要考虑由所计算的着色输出(例如片段颜色)覆盖多少个样本位置。换言之,所描述的方面使得光栅化器能够通过允许跨两个或更多个像素共享颜色样本来“增强”所计算的着色输出的覆盖范围。下面详细描述与该新着色率参数的图形管线内的确定和利用相关的具体动作。
在一些情况下,在典型的GPU上,所描述的方面的实现可以允许图形管线内的着色和纹理工作量减少多达1024的倍数(例如,对于8×8图块,64像素×16样本=1024)。
可选地,所描述的方面可以另外提供以与特定区域中着色的样本数目相对应的方式来调节用于贴图(mipmap)LOD确定的纹理LOD梯度的能力。通常,为2×2像素区域中的每个像素计算纹理坐标以便导出梯度,但是如果在该2×2区域中仅需要一个样本,则这是浪费的。这样,在一个选项中,所描述的方面可以在执行片段着色的其余部分之前运行新的着色器序言阶段,其也可以被称为渐变着色器。在这种情况下,渐变着色器在像素粒度上执行有限的工作以只是为了计算纹理渐变。
在一些另外的可选情况下,所描述的方面可以包括进一步优化以允许多种方式来指定要由所产生的颜色值覆盖的帧缓冲器像素和多样本的集合。
另外,在一些示例中,可能期望在图像的较大区域上执行增大的或减小的速率着色,诸如屏幕空间(例如,图像的静态或动态定义的区域)、整个图像等。例如,可以在诸如可变速率着色、运动模糊屏幕、剪切场景等实例中执行屏幕空间可变速率着色(SSVRS)。因此,例如,为了执行SSVRS,GPU可以将位图(例如,屏幕空间纹理)绑定到扫描转换器(即,光栅化阶段)。可以基于屏幕或视口x、y坐标的一个或多个位来查找位图。
参考图1,在一个示例中,计算机设备10包括被配置为实现可变速率着色的所描述的方面的图形处理单元(GPU)12。例如,GPU 12被配置为基于图像的相应区域的相应着色率参数来确定和使用不同的片段着色率来对被图像的基元覆盖的不同片段进行着色(即,计算其颜色)。换言之,GPU 12可以例如基于图像内的细节水平(LOD)的可变性,以动态地改变在绘制图像期间在运行中执行片段着色的速率。备选地或附加地,GPU 12可以被配置为基于图像的相应区域的相应着色率参数来改变图像的每个像素的样本数目(例如,nSample,诸如颜色样本)。换言之,GPU 12可以对每个着色颜色片段使用覆盖掩模,覆盖掩模使得能够跨两个或更多个像素的样本共享着色颜色片段。
例如,在一种实现中,计算机设备10包括CPU 34,CPU 34可以是被专门配置或编程为根据所描述的方面来控制计算机设备10的操作的一个或多个处理器。例如,用户可以向计算机设备10提供输入以使得CPU 34执行一个或多个软件应用46。在CPU 34上执行的软件应用46可以例如包括但不限于以下中的一个或多个:操作系统、文字处理器应用、电子邮件应用、电子表格应用、媒体播放器应用、视频游戏应用程、图形用户界面应用或其他程序。另外,CPU 34可以包括GPU驱动器48,其可以被执行以控制GPU 12的操作。用户可以经由一个或多个输入设备51向计算机设备10提供输入,一个或多个输入设备51诸如键盘、鼠标、麦克风、触摸板或通过输入/输出桥49(诸如但不限于南桥芯片组或集成电路)被耦合到计算机设备10的另一输入设备。
在CPU 34上执行的软件应用46可以包括一个或多个指令,这些指令可执行以使得CPU 34发出一个或多个图形命令36以使得与图像24相关联的图形数据在显示设备40上的绘制。图像24可以包括例如一个或多个对象,并且每个对象可以包括一个或多个基元(primitive),如下面更详细地解释的。例如,在一些实现中,软件应用46将图形命令36放置在系统存储器56中的缓冲器中,并且GPU 12的命令处理器64取出它们。在一些示例中,软件指令可以符合图形应用程序编程接口(API)52,诸如但不限于:DirectX和/或Direct3DAPI、开放图形库(OpenGL.RTM.)API、Open图形库嵌入式系统(OpenGL ES)API、X3D API、RenderMan API、WebGL API、或者任何其他公共或专有标准图形API。为了处理图形绘制指令,CPU 34可以向GPU 12发出一个或多个图形命令36(例如,通过GPU驱动器48)以使得GPU12执行图形数据的一些或全部绘制。在一些示例中,要绘制的图形数据可以包括图形基元的列表,例如,点、线、三角形、四方、三角形条等。
计算机设备10还可以包括与CPU 34通信的存储器桥54,存储器桥54支持进出系统存储器56和/或图形存储器58的数据的传输。例如,存储器桥54可以接收存储器读取和写入命令,并且关于系统存储器56和/或图形存储器58提供这些命令以便为计算机设备10中的组件提供存储器服务。存储器桥54经由一个或多个总线60通信地耦合到GPU 12、CPU 34、系统存储器56、图形存储器58和输入/输出桥49。在一方面,例如,存储器桥54可以是北桥集成电路或芯片组。
系统存储器56可以存储可访问以由CPU 34执行的程序模块和/或指令、和/或由在CPU 34上执行的程序使用的数据。例如,系统存储器56可以存储用于启动计算机设备10的操作系统应用。此外,例如,系统存储器56可以存储由CPU 34用来在显示设备40上呈现图形用户界面(GUI)的窗口管理器应用。此外,系统存储器56可以存储用户应用46和用于由计算机设备10的其他组件使用和/或由其生成的其他信息。例如,系统存储器56可以用作GPU 12的设备存储器(尽管如图所示,GPU 12通常可以直接连接到其自己的图形存储器58),并且可以存储要由GPU 12操作的数据以及由GPU 12执行的操作产生的数据。例如,系统存储器56可以存储纹理缓冲器、深度缓冲器、模板缓冲器、顶点缓冲器、帧缓冲器等的任何组合。系统存储器56可以包括一个或多个易失性或非易失性存储器或存储设备,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、只读存储器(ROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、磁数据介质或光存储介质。
另外,在一方面,计算机设备10可以包括系统盘62或者可以与系统盘62通信连接,系统盘62诸如CD-ROM或其他可移动存储设备。系统盘62可以包括计算机设备10可以用来例如在从系统存储器56启动操作系统失败的情况下启动操作系统的程序和/或指令。系统盘62可以经由输入/输出桥49通信地耦合到计算机设备10的其他组件。
如上所述,GPU 12可以被配置为执行图形操作以将一个或多个绘制目标44(例如,基于图形基元)绘制到显示设备40以形成图像24。例如,当在CPU 34上执行的软件应用46之一需要图形处理时,CPU 34可以将与图像24相关联的图形命令和图形数据连同图形命令36一起提供给GPU 12以便绘制到显示设备40。图形数据可以包括例如绘图命令、状态信息、基元信息、纹理信息等。GPU 12可以包括一个或多个处理器,包括:用于接收图形命令36并且通过至少一个基元处理器66启动或控制后续图形处理以用于组装基元的命令处理器64;用于处理GPU 12的顶点、表面、像素和其他数据的多个图形着色器处理器68;用于生成片段或像素的纹理数据的一个或多个纹理处理器67;以及用于生成颜色数据和深度数据并且合并着色输出的一个或多个颜色和深度处理器69。例如,在一方面,基元处理器66可以实现逻辑图形管线的输入汇编和光栅化阶段,如下所述。在一些情况下,GPU 12可以构建有高度并行结构,其提供比CPU 34更复杂的图形相关操作的有效处理。例如,GPU 12可以包括被配置为以并行方式对多个顶点或像素进行操作的多个处理元件。在一些情况下,与使用CPU 34将图像24直接绘制到显示设备40相比,GPU 12的高度并行性质可以允许GPU 12更快地将图形图像24(例如,GUI和二维(2D)和/或三维(3D)图形场景)绘制到显示设备40上。
在一些情况下,GPU 12可以被集成到计算机设备10的主板中。在其他情况下,GPU12可以存在于安装在计算机设备10的主板中的端口中的图形卡上,或者可以以其他方式并入被配置为与计算机设备10互操作的外围设备中。GPU 12可以包括一个或多个处理器,诸如一个或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其他等效的集成或离散逻辑电路。
在一方面,GPU 12可以被直接耦合到图形存储器58。例如,图形存储器58可以存储索引缓冲器、顶点缓冲器、纹理缓冲器、深度缓冲器、模板缓冲器、绘制目标缓冲器、帧缓冲器、状态信息、着色器资源、常数缓冲器、粗略SRP图(例如,粗略分辨率的可视区域的2D图,其可以用于基于图中到变换顶点的最近点来查找SRP值)、无序访问视图资源、图形管线流输出等的任何组合。这样,GPU 12可以在不使用总线60的情况下从图形存储器58读取数据和向图形存储器58写入数据。换言之,GPU 12可以使用图形卡的本地存储器而不是系统存储器56来本地处理数据。这允许GPU 12通过消除GPU 12通过总线60读取和写入数据的需要来以更有效的方式操作,总线60可能经历繁重的总线业务。然而,在一些情况下,GPU 12可以不包括单独的存储器,而是可以经由总线60来利用系统存储器56。图形存储器58可以包括一个或多个易失性或非易失性存储器或存储设备,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、磁数据介质或光存储介质。
CPU 34和/或GPU 12可以将绘制图像数据(例如,绘制目标44)存储在图形存储器58的绘制目标缓冲器中。应当注意,绘制目标缓冲器也可以是独立存储器,或者可以在系统存储器56内分配。GPU 12还可以包括解析组件70,其被配置为从图形存储器58的绘制目标缓冲器中取回数据并且将多重采样数据转换为每像素颜色值,以发送到显示设备40以显示由绘制图像数据表示的图像24。在一些示例中,GPU 12可以包括数模转换器(DAC),DAC被配置为将从解析的绘制目标缓冲器检索的数字值转换为由显示设备40可消耗的模拟信号。在其他示例中,GPU 12可以通过数字接口将数字值传递给显示设备40,诸如高清多媒体接口(HDMI接口)或DISPLAYPORT接口,以用于附加处理和转换为模拟值。这样,在一些方面,GPU12、图形存储器58和解析组件70的组合可以被称为图形处理系统72。
显示设备40可以包括:显示器、电视、投影设备、液晶显示器(LCD)、等离子显示面板、发光二极管(LED)阵列(诸如有机LED(OLED)显示器)、阴极射线管(CRT)显示器、电子纸、表面传导电子发射显示器(SED)、激光电视显示器、纳米晶体显示器或其他类型的显示单元。显示设备40可以被集成在计算机设备10中。例如,显示设备40可以是移动电话的屏幕。或者,显示设备40可以是经由有线或无线通信链路被耦合到计算机设备10的独立设备。例如,显示设备40可以是经由电缆或无线链路被连接到个人计算机的计算机显示器或平板显示器。
根据所描述的方面的一个示例,图形API 52和GPU驱动器48可以将GPU 12配置为执行逻辑图形管线14以执行如本文所述的可变速率着色。
参考图2,例如,在一个示例中,GPU 12可以被配置为实现可以执行本文所述的可变速率着色的示例逻辑图形管线14的阶段。在一方面,各个阶段中的一个或多个可以是可编程的以例如利用上述新的插值SRP值。此外,在一方面,公共着色器核可以由圆角矩形块表示。这种可编程性使得图形管线14非常灵活和适应性强。现在在下文简要描述每个阶段的目的,并且将关于附图进一步描述附加功能。
输入汇编阶段80将数据(三角形、线、点和索引)提供给管线。可选地,它还处理如应用46(图1)所确定的每对象着色率参数(SRPo)、每基元着色率参数(SRPp)或每顶点着色率参数(SRPv),一般地在112处所引用。如总体上在114处所示,如果SRPv不是由顶点着色阶段82生成,则输入汇编阶段80可以输出SRPp或SRPv。
顶点着色阶段82处理顶点,通常执行诸如变换、蒙皮和光照等操作。顶点着色阶段82采用单个输入顶点并且产生单个输出顶点。而且,如110所示,顶点着色阶段82可选地输入每顶点着色率参数(SRPv)或每基元着色率参数(SRPp),并且通常输出SRPv,SRPv是所输入的或所计算的或所查找的。应当注意,在一些实现中,诸如当使用高阶表面时,SRPv来自外壳着色阶段84。
外壳着色阶段84、曲面细分阶段86和域着色阶段88包括曲面细分(tessellation)阶段。曲面细分阶段将高阶表面转换为三角形(例如,基元,如115所示)以在逻辑图形管线14内进行绘制。可选地,如在111处所示,外壳着色阶段84可以为每个生成的基元(例如,三角形)的每个顶点生成SRPv值。
几何着色阶段90可选地(例如,该阶段可以被绕过)处理整个基元22。其输入可以是完整基元22(其为三角形的3个顶点、线的两个顶点或点的单个顶点)、四方或矩形。此外,每个基元还可以包括任何边缘相邻基元的顶点数据。这最多可以包括附加的针对三角形的3个顶点或附加的针对线的两个顶点。几何着色阶段90还支持有限的几何放大和去放大(de-amplification)。给定输入基元22,几何着色器可以丢弃基元,或者发出一个或多个新基元。所发射的每个基元将为每个顶点输出SRPv。
流输出阶段92在其到光栅化器的路径上将基元数据从图形管线14流传输到图形存储器58。数据可以流出到和/或传递到光栅化阶段94。流出到图形存储器58的数据可以作为输入数据而被再循环回图形管线14或从CPU 34(图1)被读回。该阶段可以可选地流出SRPv值以在随后的绘制通道上使用。
光栅化阶段94剪辑基元、为像素着色阶段96准备基元、并且确定如何调用像素着色器。此外,如118所示,光栅化阶段94执行粗略扫描转换并且确定每片段可变着色率参数值(SRPf)(例如,其中片段可以是图块、子图块、四方、像素或子像素区域)。另外,光栅化阶段94执行精细扫描转换并且确定被片段覆盖的像素样本位置。
此外,如117所示,光栅化阶段94还可以从粗略SRP图116获取查找值(SRPm)。查找值对应于为更大区域(诸如图像24的屏幕空间或整个图像24)所指定的着色率。另外,光栅化阶段94根据SRPv和查找值(SRPm)计算SRPf,如下面进一步详细描述的。
像素着色阶段96接收针对基元和/或片段的插值数据,并且生成每像素数据,诸如颜色和样本覆盖掩模。
输出合并阶段98将各种类型的管线输出数据(像素着色器值、深度和模板信息和覆盖掩模)与绘制目标44(图1)和深度/模板缓冲器的内容进行组合以生成图形管线14的最终结果。
而且,如上文所描述的,并且如图2所示,图形管线14可以与图形存储器58一起操作以交换和存储数据。例如,在一方面,图形存储器58包括一个或多个顶点缓冲器100,每个顶点缓冲器100包含用于定义图像24(或其他图像)的几何形状的顶点数据。顶点数据包括位置坐标、颜色数据、纹理坐标数据、普通数据等。顶点缓冲器100的最简单示例是仅包含位置数据的顶点缓冲器。更常见的是,顶点缓冲器100包含完全说明(specify)3D顶点所需要的所有数据。这样的示例可以是包含每顶点位置、法线和纹理坐标的顶点缓冲器100。该数据通常被组织为每顶点元素的集合。
此外,在一方面,图形存储器58可以包括一个或多个索引缓冲器102,索引缓冲器102包含到顶点缓冲器100中的整数偏移并且用于更有效地绘制基元22。每个索引缓冲器102包含一组连续的索引;每个索引用于标识顶点缓冲器中的顶点。
此外,在一方面,图形存储器58可以包括一个或多个常数缓冲器104,其允许将着色器常数、着色器数据和/或任何其他着色器资源有效地提供给图形管线14。此外,常数缓冲器104可以用于存储流输出阶段92的结果。此外,图形存储器58可以包括一个或多个纹理缓冲器或纹理数据105,诸如向对象提供纹理的外观的像素颜色的位图。
另外,在一方面,图形存储器58可以包括一个或多个无序访问资源106(其包括缓冲器、纹理和纹理阵列——没有多重采样)。无序访问资源106允许来自多个线程的时间无序读/写访问。这表示可以通过多个线程同时读/写该资源类型,而不会通过使用某些限定的函数以生成存储器冲突。
此外,在一方面,图形存储器58可以包括一个或多个绘制目标缓冲器108,绘制目标缓冲器108包含由图形管线14产生的图像24的每个像素32的绘制目标或绘图。
如下面关于根据所描述的方面的图形管线14的操作方法所更详细描述的,输入组装阶段80和/或顶点着色阶段82被配置为确定图像24的每个基元22的每个顶点的每顶点SRP值(SRPv)110。例如,可以基于由应用46(图1)提供(例如,在112处)和/或由输入汇编阶段80确定(例如,在114处)的每对象SRP值(SRPo)、每基元SRP值(SRPp)或SRPp值中的一个或多个或者基于粗略SRP图116来为确定针对每个顶点的SRPv值110。此外,光栅化阶段94可以对每个基元22的不同子图块或片段18的相应SRPv值110进行插值和量化以定义每片段SRP值(SRPf)118。像素着色阶段96随后启动相应的线程并且基于每个相应SRPf 118来对一个或多个基元22的每个片段执行可变速率着色,从而对用于绘制图像24的可变区域颜色片段进行着色。
参考图3-1和图4,可以参考图3-1中的绘制图形的方法120-1并且参考具有覆盖一个或多个图块20的一个或多个基元22的图像24来解释根据所描述的方面的操作图形管线14的一个示例,如图4所示,图块20可以包括每个图块20的一个或多个子图块18(例如,子图块1和子图块2)和/或一个或多个像素32、以及光栅化阶段94的相应组件。
步骤1:
在122-1处,方法120-1包括基于初始SRP值的基于应用的源确定或者基于曲面细分因子所计算要使用的SRP图基地址以及SRP顶点值SRPu和SRPv。例如,在一方面,图形管线14和/或输入汇编阶段80或顶点着色阶段82可以被配置为:基于初始SRP值、基于函数、或者基于利用来自曲面细分阶段86的曲面细分因子的计算,确定SRPv值110以在后续图形处理中使用。
例如,在第一种情况下,图形管线14可以例如在112处从应用46接收每基元着色率参数SRPp或每对象着色率参数SRPo。在SRPo情况下,输入汇编阶段80为图像24内的每个对象输入SRPo并且将其复制为每个基元22的SRPp值。或者,输入汇编阶段80从图形命令36输入基元描述,例如,图形命令36被存储在图形存储器58的命令缓冲器中,其中基元描述包括SRPp值。因此,顶点着色阶段82为每个顶点分配相应的SRPv值110,例如,SRPv0=SRPp,SRPv1=SRPp,SRPv2=SRPp。
或者,在第二种情况下,图形管线14可以产生所计算的SRPv值,例如,由顶点着色阶段82计算的。在这种情况下,然后顶点着色阶段82输入SRP函数的常数(例如,xcenter=x轴坐标值,ycenter=y轴坐标值,radius=表示相对于xcenter和ycenter点的感兴趣区域的半径的值,SRPscalefactor=可以根据需要用于缩放所得到的SRP值的可选缩放因子)。另外,顶点着色阶段82输入变量(例如,变量输入参数——着色器的每个执行线程唯一的数据——其中,Xdc=显示坐标空间中的X轴坐标值,Ydc=显示坐标空间中的Y轴坐标值,以及可能的其他变量值,例如,表面法线),并且,对于每个顶点,使用函数f计算SRPv=f(Xdc,Ydc,变量,常数,SRPscalefactor),其中常数是例如材料颜色和世界变换。例如,函数f可以产生在坐标(xcenter,ycenter)处最高的值并且下降到指定半径之外的最低值。
特别针对该示例:
SRPv=SRPscalefactor*min(1,max(0,sqrt((Xdc-xcenter)2+(Ydc-ycenter)2)))。
或者,在第三种情况下,图形管线14可以例如从一些先前的图形管线14处理产生采样的SRPv值。在这种情况下,顶点着色阶段82使用输入常数(基地址,hscale=水平标度,vscale=竖直标度)在粗略SRP图116中执行查找。具体地,对于每个顶点,顶点着色阶段82计算SRPv=lookup(基地址,hscale*Xdc,vscale*Ydc)*SRPscalefactor。例如,该查找可以在投影之后,并且可以使用显示坐标。否则,如果不是在投影之后,则查找可以另外考虑z坐标和/或透视校正因子。换言之,输入汇编阶段80或顶点着色阶段82利用粗略分辨率的可视区域的2D图(例如,粗略SRP图116)以基于粗略SRP图116中的最近点来查找每个基元顶点的SRPv值。水平和竖直坐标值被缩放以适合粗略SRP图116的尺寸,并且可选地,可以使用SRPscalefactor来缩放所得到的SRPv值。在备选方案中,为了向结果添加平滑度,查找功能可以包括在SRP图116中的四个最近样本之间执行插值。查找可以备选地来自3D图,其第三维在Z(深度)值上被索引,例如以根据距视点的距离来改变SRP。
在又一备选方案(例如,第四种情况)中,图形管线14可以基于外壳着色阶段84中的曲面细分因子以根据计算来确定SRPv值110。例如,这些曲面细分因子可以指示场景中的边缘复杂度,因此指示期望抗锯齿程度。在这种情况下,顶点着色阶段82使用输入到图形管线14的每个块对象的最大值(SV_TessFactor=表示边缘曲面细分的标准值,SV_InsideTessFactor=表示内部曲面细分的标准值),并且将其用作由整个块内的曲面细分产生的所有顶点的SRPv。
因此,SRPv值110的确定可以分布在图形管线14内,例如,在输入汇编阶段80和/或顶点着色阶段82,其可以被配置为基于以下各项确定SRPv值110:a)对对象中的每个顶点使用SRPo,b)对每个基元的每个顶点使用SRPp,c)使用软件应用46作为每顶点输入而提供的路径,或者d)使用基于图或数学函数而计算的SRPv。
步骤2:
在124-1处,方法120-1包括输出每个顶点的顶点参数。例如,顶点着色阶段82输出每个顶点的参数,诸如Xdc(例如,其中“dc”表示显示坐标)、Ydc、SRPv和其他标准参数。
步骤3:
在126-1处,方法120-1包括将顶点组装成基元。例如,在一方面,例如在几何着色阶段90之前实例化基元组装阶段的图形管线14和/或基元处理器66将顶点参数中的顶点一次三个地组装成三角形以形成基元,诸如基元22。
步骤4:
在128-1处(并且另外参考图4),方法120-1包括使用插值器对每个基元进行粗略扫描转换以获取SRPt(u,v)。例如,在一方面,图形管线14执行光栅化阶段94,使得:对于每个基元22,由图块步行阶段121和/或子图块步行阶段123基于相应基元22的顶点(SRPv0,SRPv1,SRPv2)的SRPv值26执行粗略扫描转换。粗略扫描转换利用插值器(i,j)(例如,在屏幕轴对准的顶点之间应用加权因子的重心坐标),以产生针对与基元22相交的每个图块20的SRPul、SRPur、SRPll、SRPlr值125(例如,其中“ul”是左上方,“ur”是右上方,“ll”是左下方,“lr”是右下方)。对于与每个基元22相交的每个图块20,光栅化阶段94执行以下操作:
4.1确定所有图块角落SRP值和任何包括的顶点的SRP值的最大SRP值,其中最大值被称为SRPtmax值(例如,图块的最大SRPv值)。例如,在一方面,光栅化阶段94可以包括被配置为执行该功能的SRPmax、量化和钳位(clamp)组件129。可选地,可以将图块细分为更小的子图块,例如,4×4像素,并且可以为每个像素计算单独的SRPtmax。
4.2量化并且将SRPtmax值钳位到SRPt值127,例如,GPU 12的硬件支持的粗略和抗混叠采样率范围内的采样率值,诸如在1/64到16的范围内,2的倍数。例如,在一方面,SRPmax、量化和钳位组件129被配置为执行该功能。此时,从当前图块的SRPt值127复制SRPf值118(图2)以在随后的精细扫描转换步骤中使用,并且可选地将其传输到像素着色阶段96。
4.3GPU 12可以确定图形处理系统72可以获取更多信息,以便更有效地减少在像素着色阶段96之前执行的像素着色量。具体地,除了执行每基元可变速率着色之外,GPU 12可以执行屏幕空间可变速率着色(SSVRS)以减少要由像素着色阶段96执行的像素着色量。
在一个示例中,当不使用SSVRS时,可以在可变速率的实例期间执行不必要的像素着色,其中光学失真或中心绘制导致跨视场的着色率的变化。在这些情况下,可能需要屏幕空间速率调节以降低每基元着色率。即使仍然发生对基元或顶点着色阶段82中的屏幕空间失真数据的访问,跨基元(例如,三角形)的插值可能由于需要实现正确的片段密度的曲面细分而引起问题。而且,在一个示例中,可以在每基元可变速率着色中执行SSVRS而不是镜头失真,以避免在对过度绘制的基元进行着色时的重复成本。
在另一示例中,可以针对预先加载有来自先前帧的运动信息的图执行SSVRS,以指示由于即将发生的运动模糊而全速率着色可能是浪费的区域。在另一示例中,可以执行SSVRS以播放使用实时游戏引擎的游戏剪辑场景。在这些剪辑场景期间,可以计算使用较小着色率的创作时间区域并且将其与剪辑场景一起存储,因为期望的细节水平可能不如游戏中的其他场景那样高。
在另一示例中,可以针对较大基元执行SSVRS,诸如地平面,该较大基元具有应用于其的低细节水平的纹理以及高细节水平的散射点、或者需要高保真度的镜面照明属性。在该示例中,代替严格屏幕锁定的图,可以基于在屏幕空间中从基元顶点插值的纹理坐标来查找图。
这样,为了在一个示例中执行SSVRS,GPU 12可以将位图(例如,屏幕空间纹理)(即,粗略SRP图116)绑定到扫描转换器(即,光栅化阶段94)。可以基于屏幕或视口x、y坐标的一个或多个位来查找位图。位图中的每个条目可以描述绝对的期望着色率,或者与指定的基础着色率137的着色率变化,例如,在屏幕上的8×8像素粒度,或者以与先前步骤中的SRPt相对应的速率。
在一个示例中,对于4K屏幕,两位图可以利用32千字节(KB)的存储,每个元素具有两位,表示四个可能的绝对着色率或与基础着色率的增量速率。在另一示例中,对于32×32像素粒度,存储空间可以减少到1KB。
此外,可能不存在对给定图的寿命的限制(即,可以使用当前图的基元数目)。例如,每个绘制目标的图可以相同或不同。通常,期望可见性(深度缓冲器)以全像素速率着色,而不必在改变可见性之前执行部分刷新,因此该图可以是上下文状态。为了使图成为上下文状态,可能需要预加载队列和高速缓存。如果较粗略的粒度图是可接受的,则图可以使用多个上下文寄存器。
因此,在130-1处(并且另外参考图10),方法120-1包括查找SRP图116(图2)以获取SRPm 117。例如,在一方面,图形管线14执行光栅化阶段94以查找SRP图以获取SRPm,使得可以至少基于粗略纹理图坐标来针对一个或多个对象的一个或多个基元22内的一个或多个片段(像素32)标识SRP图116(SRPm 117)中的一个或多个查找值。然后(可选地)可以将查找的SRPm添加到被存储在寄存器中的基础着色率137,以产生指定屏幕区域内的相关片段的最终SRP值。
在一个示例中,图坐标包括粗略屏幕位置坐标(x,y)(即,SRPt(u,v))。如上面在128-1中所述,基于使用插值SRPm 117对一个或多个基元中的每个进行粗略扫描转换来获取SRPt(u,v)。此外,光栅化阶段94包括SRPm查找阶段139。在该示例中,图块步行阶段121的粗略图块步行器需要匹配SRPm 117粗略度。
4.4在步骤132-1,执行精细扫描转换以确定当前图块20或子图块18内的所覆盖的样本位置(例如,像素中心或多样本抗锯齿(MSAA),这取决于绘制目标的最精细的期望采样率设置)。此外,在该示例中,为了计算相应的SRPf 118,图形管线14可以执行光栅化阶段94以使用插值器和SRPm 117执行精细扫描转换以使用一个或多个基元的一个或多个片段(像素32)中的每个片段来确定相应SRPf 118。例如,在一方面,光栅化阶段94可以包括被配置为执行该功能的精细光栅化阶段131。
例如,当执行SSVRS时,参考图10,示出了在光栅化阶段94期间计算粗略SRP图的片段的片段变量SRP值的示例。在该示例中,图形管线14可以执行光栅化阶段94以至少基于一个或多个查找值(SRPm 117)和一个或多个对象的一个或多个基元22内的一个或多个片段(例如,像素32)的相应基础着色率来计算一个或多个对象的一个或多个基元22内的一个或多个片段(例如,像素32)中的每个片段的相应片段变量SRP值(SRPf 118)。
具体地,对于每个像素32,图形管线14执行光栅化阶段94以基于基础着色率137和与像素32相对应的查找值(例如,SRPm 117)来计算相应片段变量SRP值(SRPf 118)。在一个示例中,可以基于以下函数来计算粗略SRP图的片段的片段变量SRP值:
SRPf=BSR x 2SRPm[x,y]
其中BSR对应于特定片段(例如,像素32)的基础着色率137,并且SRPm[x,y]对应于特定片段(像素32)的查找值。在一些示例中,基础着色率137可以对应于先前SRPf乘以2SRPm [x,y]。
4.5确定要在当前图块20或子图块18内生成的片段的数目以及在当前图块20或子图块18内生成的每个片段的样本数目(nsamples)30。例如,在一方面,光栅化阶段94或精细光栅化阶段131可以被配置为执行该功能。
还确定在当前图块或子图块内生成的每个片段的MSAA样本掩模尺寸。掩模尺寸=f(x=x轴坐标,y=y轴坐标,SRPt值,tilewidth=图块的宽度,tileheight=图块的高度,maxAA=最大抗锯齿值)。例如,在一方面,光栅化阶段94或精细光栅化阶段131可以被配置为执行该功能。
4.6对于每个nsamples 30×groupsize(例如,将具有相同数目的样本30的所有线程组合在一起,直到预定最大组大小),将样本覆盖应用于样本掩码133并且将队列(x,y,线程ID,属性,覆盖范围,SRPf)应用于组中的像素着色阶段96。例如,在一方面,光栅化阶段94可以包括被配置为执行该功能的线程组启动组件135。
4.1和4.2的示例
例如,参考图5和图6,由GPU在光栅化阶段94和图表140中标识一个或多个SRPm值117的示例。在该示例中,具体参考图5的图140,标识SRPm值117至少基于图坐标(例如,a、b、c、d、e、f、g、h)。此外,例如,通过为基元22的每个顶点(例如,v0、v1和v2)应用46来提供SRPv值。图5示出了在图块边缘交叉(例如,在图块1(T1)和图块2(T2)中)、图块角(例如,在T2和图块3(T3)中)、和/或与每个图块T1、T2和T3相关的顶点(例如,v0、v1、v2)处的插值。在该示例中,每个图块包括8×8子图块网格,其中网格中的每个框表示像素。
参考图6的表150,对于图块T1(例如,其包括基元22的顶点),SRPtilemax值是点v1、a和b的SRP值的最大值。对于图块T2(例如,其包括与基元22的边缘交叉),SRPtilemax值是点a、b、c、d、e和f的SRP值的最大值。对于图块T3(例如,其完全被基元22覆盖),SRPtilemax值是点e、f、g和h的SRP值中的最大值。
4.4和4.5的示例
继续该示例,参考图7的图表160,示出了精细扫描以确定所覆盖的块并且确定最终的样本和样本覆盖掩模的方面。在该示例中,其关注于图块T2,在4×4子图块网格上评估SRP值。在这种情况下,GPU 12的最大抗锯齿(AA)(以及因此当前绘制目标44的配置)被设置为2×AA。因此,利用该设置,在光栅化阶段94的扫描的每个像素32处评估最多2个覆盖样本(例如,表示为空心圆和黑色圆圈),并且覆盖掩模中的每个像素32传递2位。
这样,在像素161的8×8子图块网格中,T2的最左边的4×8像素164具有基于针对T2的该区域的SRPf 171的以1×AA完成的像素着色。对于图块T2,总共可能的64个样本中的59个被覆盖;此外,32个像素中的30个像素(例如,如由像素162表示的)将被启动以用于目标样本位置的着色(例如,基于由黑色圆圈表示的颜色样本)。对于30个启动的像素着色器线程中的每个,发送两个覆盖位164。例如,在这种情况下,像素161的8×8子图块网格可以被认为是包括每像素一种颜色的片段,其具有用于属于该像素的所有样本的样本覆盖掩模。或者,例如,像素161的8×8子图块网格可以被认为是特定区域内的一个或多个片段之一,其中每个片段每个像素一个或多个样本中的每个样本包含一种颜色并且每个像素的一个或多个样本中的每个样本具有样本覆盖掩码。
相反,对于最右边的4×8子像素网格像素166,基于该区域的SRPf 173以1/2×AA速率(2宽×1高)完成着色,并且为被启动用于着色的16个线程中的每个线程发送四个覆盖位164(对应于各对像素168)。因此,所描述的方面在最右边的4×8像素上的操作导致显著的图形处理节省。例如,在这种情况下,最右边的4×8子像素网格像素166可以被认为是特定区域内的一个或多个片段之一,其中一个或多个片段多个像素中的每个包括一种颜色并且具有针对属于多个像素的所有样本样本覆盖掩模。
应当注意,在其他情况下,可能存在具有一个或多个片段的特定区域,其包括每图库一种颜色,以及针对属于以下像素的所有样本的样本覆盖掩模,该像素属于该图块。
另外,应当注意,对应于上述情况,可能存在一个或多个其他区域,该区域具有一个或多个具有例如每个像素或每个像素一个或多个样本中的每个样本不同颜色的片段(例如,与上述区域的颜色不同),,并且具有如上所述的类似的覆盖掩模。
步骤5:
再次参考图4,在134-1处,方法120-1包括基于每个SRPf对每个像素进行着色。例如,在一方面,图形管线14针对每个像素着色器线程执行像素着色阶段96以执行以下动作中的一个或多个。
5.1确定(x,y,覆盖,u,v,其他属性,SRP),其中x、y是位置坐标,覆盖范围涉及覆盖掩模,u、v值是纹理坐标,基于纹理元素的二维数组(纹素),其他属性可以是第二纹理的u、v值或表面法线等。
5.2利用SRPf确定纹理采样梯度du/dx、du/dy、dv/dx、dv/dy。
5.3确定纹理细节水平(LOD)和各向异性程度。
5.4执行纹理采样、其他着色,并且生成颜色。
5.5生成具有(x,y,覆盖,颜色)的输出合并颜色片段命令,其中覆盖范围是标识由颜色覆盖的样本位置的覆盖掩模。
例如,在一方面,像素着色阶段96计算每个排队片段的颜色,并且将所得到的完整片段输出到输出合并阶段98(参见136-1处的方法120-1,如下所述)。覆盖单个像素32或单个像素32的一部分的片段在单个命令中被发送到输出合并阶段98。在一个实施例中,覆盖多个像素32的片段被复制并且一次一个像素地被发送到处理特定(x,y)像素的一个或多个输出合并单元。在另一实施例中,覆盖多个像素32的片段作为单个命令被发送到输出合并阶段98,其中它们被存储在片段缓冲器中,该片段缓冲器允许稍后将大片段分解成单独的像素值。换言之,“片段”是指由像素着色阶段96为基元22的特定“区域”产生的颜色加覆盖掩模。因此,区域可以具有特定的着色率,导致一些片段被着色。
5.1和5.2的示例:
在启动线程和确定纹理采样的一个示例中,分别参考图8和9的图表170和180,光栅化阶段94可以在与像素(例如,图表的行中的像素0、1、2和3)相对应的每个样本处,使用由光栅化阶段94(参见例如图8)计算的相邻u和v(由虚线圆圈标识的样本位置)来计算dx=1和dy=1的梯度172du/dx、dv/dx、du/dy、dv/dy,该计算与SRP无关。在这种情况下,“du/dx”表示u(增量u)相对于x(增量x)中的局部距离的变化——换言之,分数du/dx。类似的概念适用于du/dy、dv/dx和dv/dy。例如,像素0处的X轴梯度是du/dx0,其被计算为u1减去u0。而且,图8列出了每个顶点处的相应SRP值(例如,SRP0=0.5等)。然后,像素着色阶段96或预通过阶段可以使用来自光栅化阶段94的相应SRPf来修改这些梯度以定义着色样本的经修改的梯度182(参见例如图9)。例如,对于样本0,将图8中确定的梯度乘以样本0的相应SRP以生成经修改的梯度182(例如,du/dx0'=du/dx0*SRP0)。对其他样本处的梯度进行类似的修改,包括在两个子像素样本位置处具有颜色的一些顶点处的两个梯度(例如,du/dx2a'和du/dx2b'以及du/dx3a'和du/dx3b')。
由线程组启动组件135发出并且由像素着色阶段96针对不同着色率处理的线程分组的示例在下面的表1中指出。
表1:线程分组
应当注意,如果采样率参数倾向于以可预测的面向屏幕的方式变化,则可以使用具有不同最大AA配置的多个绘制目标(MRT)来优化空间。
步骤6:
这样,在136-1处,方法120-1包括将每个片段合并到绘制目标中。例如,输出合并阶段98可以基于着色结果将每个片段颜色写入当前绘制目标44(图1)。例如,输出合并阶段98可以处理每个颜色片段。具体地,对于所覆盖的每个像素和/或样本,输出合并阶段98可以在目的地绘制目标缓冲器108的AA级别执行深度感知混合或写入功能。
作为另一种选择,特别是对于覆盖多个像素的片段,像素着色阶段96可以输出颜色梯度dc/dx和dc/dy以及参考颜色c(其中c可以是红色、绿色或蓝色之一),使得输出合并阶段98可以自己计算并且存储每个像素的唯一颜色,或者将该片段与梯度一起存储并且推迟将其转换成单独的像素颜色值,直到后续的解析过程。
在另一示例中,参考图3-2和图4,可以参考图3-2中的绘制图形的方法120-2并且参考具有覆盖一个或多个图块20的一个或多个基元22的图像24来解释根据所描述的方面操作图形管线14的另一示例,图块20可以包括每个图块20和/或一个或多个像素32的一个或多个子图块18(例如,子图块1和子图块2)、以及光栅化阶段94的相应组件,如图4所示。特别地,图3-2对应于图坐标包括纹理坐标(u,v)的示例。
在一个示例中,方法120-2包括在124-2处输出针对每个顶点的顶点参数,类似于方法120-1(图3-1)的124-1。此外,方法120-2包括在126-2处,将顶点组装成基元22,类似于方法120-2(图3-1)的126-2。
在128-2处,方法120-2包括对每个基元进行粗略扫描转换以获取图块(x,y)(即,纹理坐标)。在该示例中,光栅化阶段94可以基于使用插值的每基元参数对一个或多个基元22中的每个进行粗略扫描转换来确定纹理坐标。
在130-2(并且另外参考图10),方法120-2包括查找SRP图116(图2)以获取SRPm117。例如,在一方面,图形管线14执行光栅化阶段94以查找SRP图116以获取SRPm 117,使得可以至少基于图坐标针对一个或多个对象的一个或多个基元22内的一个或多个片段(像素32)标识SRP图116中的一个或多个查找值(SRPm 117)。然后(可选地)可以将查找的SRPm117添加到被存储在寄存器中的基础着色率137,以产生指定屏幕区域内的相关片段的最终SRP值。
在一个示例中,图坐标包括纹理坐标(u,v)。如上面在128-2中所述,基于使用插值的每基元参数对一个或多个基元中的每个进行粗略扫描转换来获取纹理坐标。此外,光栅化阶段94包括SRPm查找阶段139。在该示例中,图块步行阶段121的粗略图块步行器需要匹配SRPm 117粗略度。
在一个示例中,方法120-2包括在132-2处使用插值器和SRPm 117对每个基元的图块进行精细扫描转换以获取SRPf 118,类似于方法120-1(图3-1)的132-1。此外,方法120-2在134-2处包括基于SRPf 118的着色,类似于方法134-1(图3-1)的134-1。另外,方法120-2包括在136-2处将每个片段合并到绘制目标中,类似于方法120-1(图3-1)的136-1。
参考图11,参考在计算机设备10上绘制图形的方法200来解释根据所描述的方面的具有图形管线14的计算机设备10的操作。
在202处,方法200包括接收用于绘制组成图像的基元的命令。例如,在一方面,GPU12可以从由CPU 34执行的应用46接收用于在显示设备40的屏幕上绘制构成图像24的基元22的图形命令36。例如,图像24可以包括一个或多个对象,并且每个对象可以包括一个或多个基元22。如上所述,图形命令36可以例如由命令处理器64经由GPU驱动器48和图形API 52接收。换言之,接收用于绘制组成图像的基元的命令可以包括接收图像中的一个或多个对象的每对象SRP值(SRPo),或者接收图像中的一个或多个顶点的每像素SRP值(SRPv),并且其中确定一个或多个区域的相应SRP值还包括使用与每个区域相对应的所选择的SRPo值或所选择的SRPv值。
在204处,方法200还包括确定组成图像的一个或多个对象的一个或多个基元的一个或多个区域的相应采样率参数(SRP)值。例如,在一方面,GPU 12可以执行图形管线14以操作输入组装阶段80、顶点着色阶段92或其某种组合,以确定与图像24的相应区域相对应的每个基元22的顶点的相应采样率参数(SRP)值,例如SRPv值110。在一种实现中,输入组装阶段80、顶点着色阶段92或其某种组合可以在122-1和/或124-1处执行方法120-1(图3-1)以基于初始SRP值的源来确定SRPv值110,或者基于曲面细分因子和/或基于在粗略SRP图116中执行查找来计算SRPv值110,并且输出图像24的每个基元22的每个顶点的所得到的SRPv值110,如上所述。换言之,确定一个或多个区域的相应SRP值可以包括使用与每个区域相对应的所选择的SRPo值或所选择的SRPv值,或者基于粗略纹理图来确定一个或多个区域的相应SRP值。
在206处,方法200还包括基于图像的相应区域的相应SRP值来至少确定用于构成图像的至少一个基元的第一区域的第一SRP值和用于构成图像的至少一个基元的第二区域的第二SRP值。此外,在206处,第一SRP值和第二SRP值对应于不同的采样率并且基于图像24的相应区域的相应SRP值。例如,在一方面,GPU 12可以执行图形管线14的光栅化阶段94以至少利用被至少一个基元22覆盖的至少一个图块20的至少第一区域(例如,第一子图块)的第一SRP值(例如,第一SRPf值118)和至少第二子区域(例如,第二子图块)的第二SRP值(例如,第二SRPf值118)。例如,在一种实现中,光栅化阶段94可以在128使用方法120来确定从每个相应基元22的SRPv值110插值的图块特定和片段特定SRP值。例如,关于一种实现,参考对上面关于128处的方法和图4-7而讨论的粗略扫描、插值、SRPtmax确定、量化和钳位、精细扫描转换和样本覆盖确定的以上描述。
在208处,方法200包括标识由第一区域中的至少一个基元覆盖的第一数目的样本和由第二区域中的至少一个基元覆盖的第二数目的样本。例如,在一方面,GPU 12可以执行图形管线14的光栅化阶段94以生成第一组第一数目的样本(例如,第一组nsample 30)和第二组第二数目的样本(例如,第二组nsample 30),其中第一组第一数目的样本被至少一个基元22覆盖的一个或多个相应像素32的在具有第一SRP值(例如,第一SRPf 118,诸如图7中的SRPf 171)的第一区域中覆盖,第二组第二数目的样本在具有第二SRP值(例如,第二SRPf118,诸如图7中的SRPf 173)的第二区域中被覆盖。应当注意,第一数目的样本和第二数目的样本(其定义样本掩模)每个像素可以包括少至1个样本,每个像素可以包含多达16个样本。例如,关于一种实现,参考对上面关于128处的方法120和图4-7讨论的粗略扫描、插值、SRPtmax确定、量化和钳位、精细扫描转换和样本覆盖确定的描述。
在210处,方法200包括基于第一组第一数目的样本和第一SRP值来对与第一区域相对应的至少第一片段进行着色,并且基于第二组第二数目的样本和第二SRP值来对与第二区域相对应的至少第二片段进行着色。例如,在一方面,GPU 12可以执行图形管线14的像素着色阶段96,其可操作以基于第一组第一数目的样本(第一组nsample 30)和第一SRP118(例如,图7中的SRPf 171)来对与第一区域相对应的至少第一片段(对应于第一子图块网格18)进行着色,并且基于第二组第二数目的样本(第二组nsample 30)和第二SRP 118(例如,图7中的SRPf 173)来对与第二区域相对应的至少第二片段(对应于第二子图块网格18)进行着色。例如,关于一种实现,参考上面关于134处的方法120和图5-8的基于SRPf值118的着色的描述。此外,例如,210处的着色可以包括基于每图块最大SRP值执行所覆盖的样本的着色和纹理化;并且基于所覆盖样本的着色和纹理来生成颜色片段命令。
换言之,基于本公开,可以确定基元或对象或图像的不同区域具有不同的SRP值,因此以不同的着色率进行着色。特别地,第一区域中的着色可以基于以下之一:(i)每个样本一种颜色;(ii)每个像素一种颜色;或者(iii)每多个像素(例如,包括整个图块)一种颜色,而第二区域中的着色可以基于(i)、(ii)或(iii)中的不同的一种。因此,不同的区域可以具有不同的着色率。
例如,在一个示例中,第一区域内的第一组一个或多个片段(例如,包括第一片段)的着色可以基于每个样本的第一颜色和针对第一区域的所有样本的第一样本覆盖掩模。并且,第二区域内的第二组一个或多个片段(例如,包括第二片段)的着色基于每像素的第二颜色和针对属于第二区域中的每个像素的所有样本的第二样本覆盖掩模。
此外,在另一示例中,第一区域内的第一组一个或多个片段(例如,包括第一片段)的着色可以基于每个像素的第一颜色和针对属于第一区域中的每个像素的所有样本的第一样本覆盖掩模。并且,第二区域内的第二组一个或多个片段(例如,包括第二片段)的着色基于每多个像素的第二颜色和针对属于第二区域中的多个像素的所有样本的第二样本覆盖掩模。
另外,在又一示例中,第一区域内的第一组一个或多个片段(例如,包括第一片段)的着色可以基于每多个像素的第一颜色和针对属于第一区域中的多个像素的所有样本的第一样本覆盖掩模。并且,第二区域内的第二组一个或多个片段(例如,包括第二片段)的着色基于每个样本的第二颜色和针对第二区域中的所有样本的第二样本覆盖掩模。
另外,在一方面,着色包括输出颜色梯度和参考颜色,以及基于颜色梯度和参考颜色来计算和存储每个像素的唯一颜色(参见例如以上关于图8和9的讨论)。或者,着色可以包括通过存储第一片段或第二片段中的至少一个以及颜色梯度和颜色参考来推迟每个像素的唯一颜色的计算和存储。
此外,在一方面,对第一片段进行着色还包括基于第一SRP值(例如,图7中的SRPf171)以相对于最大抗锯齿率的第一着色率进行着色,并且对第二片段进行着色还包括基于第二SRP值(例如,图7中的SRPf 173)以相对于最大抗混叠率的第二着色率进行着色,其中第二着色率不同于第一着色率。
在212处,方法200包括缓冲所生成的结果,并且最终基于所生成的结果来解析图像的像素颜色。例如,在一方面,GPU 12可以执行图形管线14的输出合并阶段98以发送绘制目标44以绘制目标缓冲器108。然后,GPU 12可以执行图形管线14的解析组件70以利用绘制目标44在显示设备40的屏幕上生成图像24。
例如,参考图12,由图形管线14根据本公开的方法200和/或方法120生成的示例图像220包括具有不同着色率的不同图块(诸如但不限于,1/4×AA、1×AA、2×AA、4×AA),这取决于图像220的不同部分或区域的细节水平。
因此,总之,所描述的方面使得GPU 12的图形管线14能够使用扫描速率参数来改变着色率,从1个样本/四方到完整的AA。例如,在一方面,图形管线14可操作以接收用于绘制组成图像的一个或多个对象的一个或多个基元的命令,并且可操作以确定构成图像的一个或多个基元或一个或多个对象的一个或多个区域的相应采样率参数(SRP)值。此外,图形管线14可操作以基于SRP值的相应源来确定相应的顶点特定SRP值,以及基于顶点特定SRP值来对基元进行粗略扫描并且将基元转换为图块。而且,图形管线14可操作以基于粗略扫描和转换来确定每图块最大SRP值。然后,图形管线14可操作以进行精细扫描以基于每图块最大SRP值确定所覆盖的位置样本。另外,图形管线14可操作以基于每图块最大SRP值对所覆盖的样本进行着色和纹理化。然后,图形管线14可操作以基于所覆盖的样本的着色和纹理来生成颜色片段命令,并且根据相应的颜色片段命令在目的地绘制目标缓冲器的抗锯齿级别执行深度感知混合或写入功能。
此外,例如,所描述的方面可以使得能够以所需要的最大AA速率分配绘制目标。在一些可选方面,图形管线14可以另外使用具有多个绘制目标44的基元阶段多视口技术以对用于以不同AA速率存储显示设备40的屏幕的不同部分的空间量进行优化。这包括用于产生一致的每个颜色一个像素的帧以用于显示的专门的解析或显示阶段逻辑。
此外,在所描述的方面中,SRP参数可以通过扫描转换器上游的多种方法产生。例如,这种方法包括:粗略屏幕对准图(静态或动态);顶点着色器为像素着色器提供前一阶段或绘制过程生成的图的结果;基于对象的(即,图像中的对象或特征;基于重要性、特征的复杂性和/或已知的建模“边缘”);计算,例如半径从x0、y0;使用早期深度通过、使用每个图块的深度复杂度;顶点着色期间的凹凸;等等。
另外,作为粗略(例如,8×8子图块)扫描转换的一部分,所描述的方面涉及在每个基元上插值SRP顶点特定值。或者,如果基元完全包含在图块中,则所描述的方面可以仅考虑竖直值。此外,在插值之后,所描述的方面包括将SRP值截断为2的倍数并且基于硬件能力来钳位SRP值,例如,1/64×AA、1/4×AA、1/2×、1×、2×、4×、8×AA、16×AA。可选地,所描述的方面可以包括用于x、y维度的单独SRP值,其允许各向异性着色。
此外,在确定采样率时,所描述的方面考虑所覆盖的最小和最大每图块SRP值。在简单的确定中,所描述的方面可以基于所标识的SRPtmax对整个8×8子图块网格使用相同的速率。在另一种情况下,如果SRP值是常数(例如,最小值=最大值),则所描述的方面可以以2的幂来启动线程组,这可以提高着色阶段效率。在一些情况下,所描述的方面可以使用每个相应子图块区域的不同着色率,例如4×4像素区域。而且,在一些情况下,所描述的方面可以在整个图块(例如,8×8子图块网格)上以最大所需速率向着色阶段发布线程,然后使着色阶段提前放出(early-out)(例如,丢弃)未使用样本。
此外,在一些实现中,所描述的方面可以以粗略着色率发布片段,其包括增强的样本覆盖掩码(即,广播)。换言之,与片段相关联的颜色可以由两个或更多个像素共享,从而提供处理效率。
应当注意,可以在不影响其他图形处理的情况下实现图形管线14的所描述的方面。例如,分层Z、早期Z和模板过程应当继续正交地工作。此外,深度和覆盖(遮挡)通过在最大分配的AA模式下运行,除非使这种粗略也具有性能优势。此外,帧缓冲器解析与之前完全相同,包括任何支持片段的优化。
可选地,所描述的方面可以包括有效地向输出合并阶段通知“这种颜色片段用于整个四方(例如,图块的4×4子图块)”的新方式。
此外,在一些可选实现中,所描述的方面可以包括用于如何利用所描述的可变着色率本质地处理纹理LOD的机制。例如,在一些情况下,所描述的方面可以更新固定功能硬件以考虑可变着色率。在其他情况下,所描述的方面可以包括运行“前像素”着色器来计算它。或者,一些实现可以简单地使着色阶段总是计算它,或者向着色阶段通知参数。
如本申请中使用的,术语“组件”、“系统”等旨在包括计算机相关实体,诸如但不限于硬件、固件、硬件和软件的组合、软件、或执行软件。例如,组件可以是但不限于是在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。作为说明,在计算设备上运行的应用和计算设备都可以是组件。一个或多个组件可以驻留在进程和/或执行线程内,并且组件可以位于一个计算机上和/或发布在两个或更多个计算机之间。另外,这些组件可以从其上存储有各种数据结构的各种计算机可读介质来执行。这些组件可以通过本地和/或远程过程进行通信,诸如根据具有一个或多个数据分组的信号,诸如来自与本地系统、分布式系统中的另一组件交互和/或跨越诸如因特网等网络通过信号的方式与其他系统交互的一个组件的数据。
此外,本文中结合设备(例如,计算机设备10)描述了各种方面,该设备可以是有线设备或无线设备。这样的设备可以包括但不限于游戏设备或控制台、膝上型计算机、平板计算机、个人数字助理、蜂窝电话、卫星电话、无绳电话、会话发起协议(SIP)电话、无线本地环路(WLL)站、个人数字助理(PDA)、具有无线连接能力的手持设备、计算设备、或连接到无线调制解调器的其他处理设备。
此外,术语“或”旨在表示包含性的“或”而不是排他性的“或”。即,除非另有说明或从上下文中清楚,否则短语“X使用A或B”是旨在表示任何自然的包含性排列。也就是说,以下任何一种情况满足短语“X使用A或B”:X使用A;X使用B;或者X使用A和B两者。另外,本申请和所附权利要求中使用的冠词“一个(a)”和“一个(an)”通常应当理解为表示“一个或多个”,除非另有说明或从上下文中很清楚涉及单数形式。
各种方面或特征将在可以包括多个设备、组件、模块等的系统方面来呈现。应当理解和了解,各种系统可以包括附加的装置、组件、模块等,和/或可以并非包括结合附图所讨论的所有装置、组件、模块等。也可以使用这些方法的组合。
结合本文中公开的实施例而描述的方法的各种说明性逻辑、逻辑块和动作可以使用被设计为执行本文中描述的功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、离散门或晶体管逻辑、分立硬件组件或其任何组合中的特别编程的一者来实施或执行。通用处理器可以是微处理器,但是在替代方案中,处理器可以是任何传统的处理器、控制器、微控制器或状态机。处理器还可以实现为计算设备的组合,例如DSP和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP核、或任何其他这样的配置。另外,至少一个处理器可以包括可操作以执行上述步骤和/或动作中的一个或多个的一个或多个组件。
此外,结合本文中公开的方面而描述的方法或算法的步骤和/或动作可以直接用硬件、由处理器执行的软件模块或两者的组合来实施。软件模块可以驻留在RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域已知的任何其他形式的存储介质中。示例性存储介质可以耦合到处理器,使得处理器可以从存储介质读取信息和向存储介质写入信息。在替代方案中,存储介质可以是处理器的组成部分。此外,在一些方面,处理器和存储介质可以驻留在ASIC中。另外,ASIC可以驻留在计算机设备(诸如但不限于游戏控制台)中。在替代方案中,处理器和存储介质可作为分立组件驻留在用户终端中。另外,在一些方面,方法或算法的步骤和/或动作可以作为一个或任何组合或一组代码和/或指令驻留在可以并入计算机程序产品中的机器可读介质和/或计算机可读介质上。
在一个或多个方面,所描述的功能可以用硬件、软件、固件或其任何组合来实现。如果用软件实现,则这些功能可以作为一个或多个指令或代码在计算机可读介质上存储或传输。计算机可读介质包括计算机存储介质和通信介质,包括促进将计算机程序从一个地方传送到另一地方的任何介质。存储介质可以是可以由计算机访问的任何可用介质。作为示例而非限制,这种计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储器、磁盘存储器或其他磁存储设备、或者可以用于以指令或数据结构的形式携带或存储所需要的程序代码并且可以由计算机访问的任何其他介质。而且,任何连接都可以称为计算机可读介质。本文中使用的磁盘和光盘包括光盘(CD)、激光光盘、光盘、数字通用光盘(DVD)、软盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘通常用激光光学地再现数据。上述的组合也应当被包括在计算机可读介质的范围内。
虽然已经结合其示例描述了本公开的方面,但是本领域技术人员将理解,可以在不脱离本发明的范围的情况下对上述方面进行变化和修改。通过考虑说明书或根据本文中公开的方面的实践,其他方面对于本领域技术人员而言是很清楚的。
Claims (15)
1.一种在计算机设备中绘制图形的方法,包括:
由图形处理单元(GPU)在光栅化阶段基于对对象的基元的粗略扫描转换来确定图坐标,所述图坐标指示在所述对象的所述基元内的片段的采样率参数(SRP)图上的位置;
由所述GPU在所述光栅化阶段至少基于所述图坐标来标识针对所述对象的所述基元内的所述片段的查找值;
由所述GPU在所述光栅化阶段至少基于所述查找值来计算针对所述对象的所述基元内的所述片段的相应片段变量SRP值;以及
由所述GPU在像素着色阶段基于所述相应片段变量SRP值来对所述对象的所述基元内的所述片段进行着色。
2.根据权利要求1所述的方法,其中所述图坐标包括粗略屏幕位置坐标(x,y),所述粗略屏幕位置坐标(x,y)是基于使用插值数据对所述基元进行粗略扫描转换来确定的。
3.根据权利要求2所述的方法,还包括:
由所述GPU至少基于初始SRP值的基于应用的源或一个或多个曲面细分因子来确定针对所述对象的所述基元的一个或多个区域的相应SRP值,其中所述相应SRP值对应于针对纹理坐标(u,v)的SRP顶点值;
由所述GPU基于确定所述相应SRP值来输出针对每个顶点的相应顶点参数;以及
由所述GPU基于所述相应顶点参数来将每个顶点组装到所述基元中。
4.根据权利要求1所述的方法,其中所述图坐标包括纹理坐标(u,v),所述纹理坐标(u,v)是基于使用插值的每基元参数对所述基元进行粗略扫描转换来确定的。
5.根据权利要求4所述的方法,还包括:
由所述GPU输出针对每个顶点的相应顶点参数;以及
由所述GPU基于所述相应顶点参数将每个顶点组装到所述基元中。
6.根据权利要求1所述的方法,其中由所述GPU在所述光栅化阶段至少基于所述查找值来计算针对所述对象的所述基元内的所述一个片段的所述相应片段变量SRP值还包括:由所述GPU在所述光栅化阶段至少基于所述查找值和针对所述对象的所述基元内的所述片段的基础着色率来计算针对所述对象的所述基元内的所述片段的所述相应片段变量SRP值。
7.根据权利要求1所述的方法,其中由所述GPU在所述光栅化阶段计算针对所述对象的所述基元内的所述片段的所述相应片段变量SRP值还包括:执行精细扫描转换以使用所述基元的至少所述片段来确定所述相应片段变量SRP值。
8.根据权利要求1所述的方法,还包括:由所述GPU基于对所述片段进行着色来将所述片段中的每个片段合并到绘制目标中。
9.一种计算机设备,包括:
存储器;以及
与所述存储器通信的图形处理单元(GPU),其中所述GPU被配置为:
在光栅化阶段基于对对象的基元的粗略扫描转换来确定图坐标,所述图坐标指示在所述对象的所述基元内的片段的采样率参数(SRP)图上的位置;
在所述光栅化阶段至少基于所述图坐标来标识所述对象的所述基元内的所述片段的查找值;
在所述光栅化阶段至少基于所述查找值来计算针对所述对象的所述基元内的所述片段的相应片段变量SRP值;以及
在像素着色阶段基于所述相应片段变量SRP值来对所述对象的所述基元内的所述片段进行着色。
10.根据权利要求9所述的计算机设备,其中所述图坐标包括粗略屏幕位置坐标(x,y),所述粗略屏幕位置坐标(x,y)是基于使用插值数据对所述基元进行粗略扫描转换来确定的。
11.根据权利要求10所述的计算机设备,其中所述GPU还被配置为:
至少基于初始SRP值的基于应用的源或一个或多个曲面细分因子来确定针对所述对象的所述基元的一个或多个区域的相应SRP值,其中所述相应SRP值对应于针对纹理坐标(u,v)的SRP顶点值;
基于确定所述相应SRP值来输出针对每个顶点的相应顶点参数;以及
基于所述相应顶点参数来将每个顶点组装到所述基元中。
12.根据权利要求9所述的计算机设备,其中所述图坐标包括纹理坐标(u,v),所述纹理坐标(u,v)是基于使用插值的每基元参数对每个所述基元进行粗略扫描转换来确定的。
13.根据权利要求12所述的计算机设备,其中所述GPU还被配置为:
输出针对每个顶点的相应顶点参数;以及
基于所述相应顶点参数将每个顶点组装到一个或多个基元中。
14.根据权利要求9所述的计算机设备,其中被配置为至少基于所述查找值来计算针对所述对象的所述基元内的所述片段的所述相应片段变量SRP值的所述GPU还被配置为:至少基于所述查找值和针对所述对象的所述基元内的所述片段的基础着色率来计算针对所述对象的所述基元内的所述片段的所述相应片段变量SRP值。
15.一种计算机可读介质,存储由处理器可执行以用于在计算机设备中绘制图形的计算机可执行指令,所述计算机可执行指令包括:
用于由图形处理单元(GPU)在光栅化阶段基于对对象的基元的粗略扫描转换来确定图坐标的指令,所述图坐标指示在所述对象的所述基元内的片段的采样率参数(SRP)图上的位置;
用于由所述GPU在所述光栅化阶段至少基于所述图坐标来标识针对所述对象的所述基元内的所述片段的查找值的指令;
用于由所述GPU在所述光栅化阶段至少基于所述查找值来计算针对所述对象的所述基元内的所述片段的相应片段变量SRP值的指令;以及
用于由所述GPU在像素着色阶段基于所述相应片段变量SRP值来对所述对象的所述基元内的所述片段进行着色的指令。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762460496P | 2017-02-17 | 2017-02-17 | |
US62/460,496 | 2017-02-17 | ||
US15/629,997 US10147227B2 (en) | 2017-02-17 | 2017-06-22 | Variable rate shading |
US15/629,997 | 2017-06-22 | ||
PCT/US2018/017518 WO2018152017A1 (en) | 2017-02-17 | 2018-02-09 | Variable rate shading |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110383337A true CN110383337A (zh) | 2019-10-25 |
CN110383337B CN110383337B (zh) | 2023-06-09 |
Family
ID=63167957
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880012511.1A Active CN110383337B (zh) | 2017-02-17 | 2018-02-09 | 可变速率着色 |
Country Status (4)
Country | Link |
---|---|
US (3) | US10147227B2 (zh) |
EP (1) | EP3563349A1 (zh) |
CN (1) | CN110383337B (zh) |
WO (1) | WO2018152017A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023230878A1 (zh) * | 2022-05-31 | 2023-12-07 | 华为技术有限公司 | 着色方法和图像处理器 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10152819B2 (en) | 2016-08-15 | 2018-12-11 | Microsoft Technology Licensing, Llc | Variable rate shading |
KR20180038793A (ko) * | 2016-10-07 | 2018-04-17 | 삼성전자주식회사 | 영상 데이터 처리 방법 및 장치 |
US10510185B2 (en) * | 2017-08-25 | 2019-12-17 | Advanced Micro Devices, Inc. | Variable rate shading |
US10853989B2 (en) * | 2018-09-26 | 2020-12-01 | Intel Corporation | Coarse compute shading |
US10621689B1 (en) * | 2018-09-27 | 2020-04-14 | Intel Corporation | Multi-phase architecture for multiple rate pixel shading |
US11276211B2 (en) * | 2018-12-20 | 2022-03-15 | Advanced Micro Devices, Inc. | Integration of variable rate shading and super-sample shading |
CN111354065A (zh) * | 2018-12-21 | 2020-06-30 | 畅想科技有限公司 | 用于图形处理系统的基元块生成器 |
US11120591B2 (en) * | 2019-05-31 | 2021-09-14 | Apple Inc. | Variable rasterization rate |
US11257273B2 (en) * | 2019-12-19 | 2022-02-22 | Advanced Micro Devices, Inc. | Data output rate with variable rate shading |
CN111243012B (zh) * | 2019-12-31 | 2023-09-12 | 西安翔腾微电子科技有限公司 | 一种gpu点光栅化点大小奇偶配置顶点坐标映射的tlm装置 |
US11972518B2 (en) * | 2020-01-20 | 2024-04-30 | Advanced Micro Devices, Inc. | Hybrid binning |
CN113393555B (zh) * | 2020-03-11 | 2023-09-15 | 福建天晴数码有限公司 | 一种基于着色器的屏幕填充率统计方法及其系统 |
US20210358191A1 (en) * | 2020-05-14 | 2021-11-18 | Samsung Electronics Co., Ltd. | Precision modulated shading |
US11250620B2 (en) * | 2020-06-09 | 2022-02-15 | Arm Limited | Graphics processing |
US11250611B1 (en) * | 2021-01-29 | 2022-02-15 | Arm Limited | Graphics processing |
US11869117B2 (en) * | 2021-03-18 | 2024-01-09 | Samsung Electronics Co., Ltd. | Systems and methods of adaptive, variable-rate, hybrid ray tracing |
US11763521B2 (en) * | 2021-08-13 | 2023-09-19 | Samsung Electronics Co., Ltd. | Method and apparatus for the automation of variable rate shading in a GPU driver context |
EP4195156A1 (en) * | 2021-12-13 | 2023-06-14 | Imagination Technologies Limited | Graphics processing system and method of rendering |
GB2613648A (en) * | 2021-12-13 | 2023-06-14 | Imagination Tech Ltd | Graphics processing system and method of rendering |
GB2613649A (en) * | 2021-12-13 | 2023-06-14 | Imagination Tech Ltd | Graphics processing system and method of rendering |
US11882295B2 (en) | 2022-04-15 | 2024-01-23 | Meta Platforms Technologies, Llc | Low-power high throughput hardware decoder with random block access |
US20230334736A1 (en) * | 2022-04-15 | 2023-10-19 | Meta Platforms Technologies, Llc | Rasterization Optimization for Analytic Anti-Aliasing |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060132491A1 (en) * | 2004-12-20 | 2006-06-22 | Nvidia Corporation | Real-time display post-processing using programmable hardware |
US20110216069A1 (en) * | 2010-03-08 | 2011-09-08 | Gary Keall | Method And System For Compressing Tile Lists Used For 3D Rendering |
US20150022537A1 (en) * | 2013-07-19 | 2015-01-22 | Nvidia Corporation | Variable fragment shading with surface recasting |
US20150070355A1 (en) * | 2013-09-12 | 2015-03-12 | Franz P. Clarberg | Adaptive Multi-Frequency Shading |
US20150178983A1 (en) * | 2013-12-19 | 2015-06-25 | Tomas G. Akenine-Moller | Variable Shading |
US20160049000A1 (en) * | 2014-08-12 | 2016-02-18 | Nvidia Corporation | System, method, and computer program product for performing object-space shading |
CN105493150A (zh) * | 2013-08-28 | 2016-04-13 | 高通股份有限公司 | 图形处理中的目标独立模板印刷 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5253339A (en) | 1990-07-26 | 1993-10-12 | Sun Microsystems, Inc. | Method and apparatus for adaptive Phong shading |
US5877771A (en) | 1996-07-12 | 1999-03-02 | Silicon Graphics, Inc. | Method and apparatus for supersampling based on the local rate of change in texture |
US6943805B2 (en) | 2002-06-28 | 2005-09-13 | Microsoft Corporation | Systems and methods for providing image rendering using variable rate source sampling |
US6967663B1 (en) | 2003-09-08 | 2005-11-22 | Nvidia Corporation | Antialiasing using hybrid supersampling-multisampling |
US7218291B2 (en) | 2004-09-13 | 2007-05-15 | Nvidia Corporation | Increased scalability in the fragment shading pipeline |
US7173631B2 (en) | 2004-09-23 | 2007-02-06 | Qualcomm Incorporated | Flexible antialiasing in embedded devices |
US8111264B2 (en) | 2006-03-30 | 2012-02-07 | Ati Technologies Ulc | Method of and system for non-uniform image enhancement |
US7692659B1 (en) | 2006-11-06 | 2010-04-06 | Nvidia Corporation | Color-compression using automatic reduction of multi-sampled pixels |
US7733354B1 (en) | 2007-05-31 | 2010-06-08 | Adobe Systems Incorporated | Anti-aliased rendering |
US8581912B2 (en) | 2008-06-27 | 2013-11-12 | Microsoft Corporation | Dynamic subroutine linkage optimizing shader performance |
US8605086B2 (en) | 2008-07-03 | 2013-12-10 | Nvidia Corporation | Hybrid multisample/supersample antialiasing |
US10198788B2 (en) | 2013-11-11 | 2019-02-05 | Oxide Interactive Llc | Method and system of temporally asynchronous shading decoupled from rasterization |
US9569883B2 (en) | 2013-12-12 | 2017-02-14 | Intel Corporation | Decoupled shading pipeline |
US9552667B2 (en) | 2013-12-13 | 2017-01-24 | Nvidia Corporation | Adaptive shading in a graphics processing pipeline |
US9626795B2 (en) | 2013-12-17 | 2017-04-18 | Intel Corporation | Reducing shading by merging fragments from the adjacent primitives |
US9905046B2 (en) | 2014-04-03 | 2018-02-27 | Intel Corporation | Mapping multi-rate shading to monolithic programs |
US9836816B2 (en) * | 2014-04-05 | 2017-12-05 | Sony Interactive Entertainment America Llc | Varying effective resolution by screen location in graphics processing by approximating projection of vertices onto curved viewport |
US9904971B2 (en) | 2014-06-27 | 2018-02-27 | Samsung Electronics Co., Ltd. | Adaptive desampling in a graphics system with composited level of detail map |
US9721376B2 (en) | 2014-06-27 | 2017-08-01 | Samsung Electronics Co., Ltd. | Elimination of minimal use threads via quad merging |
US10152764B2 (en) | 2015-03-24 | 2018-12-11 | Intel Corporation | Hardware based free lists for multi-rate shader |
US9728002B2 (en) | 2015-12-18 | 2017-08-08 | Advanced Micro Devices, Inc. | Texel shading in texture space |
WO2017171568A1 (en) | 2016-04-01 | 2017-10-05 | Intel Corporation | Apparatus and method for asynchronous texel shading |
US10192280B2 (en) | 2016-04-08 | 2019-01-29 | Qualcomm Incorporated | Per-vertex variable rate shading |
US10169887B2 (en) | 2016-06-10 | 2019-01-01 | Apple Inc. | Accelerated blits of multisampled textures on GPUs |
US10410313B2 (en) | 2016-08-05 | 2019-09-10 | Qualcomm Incorporated | Dynamic foveation adjustment |
US10152819B2 (en) | 2016-08-15 | 2018-12-11 | Microsoft Technology Licensing, Llc | Variable rate shading |
-
2017
- 2017-06-22 US US15/629,997 patent/US10147227B2/en active Active
-
2018
- 2018-02-09 WO PCT/US2018/017518 patent/WO2018152017A1/en unknown
- 2018-02-09 CN CN201880012511.1A patent/CN110383337B/zh active Active
- 2018-02-09 EP EP18706164.3A patent/EP3563349A1/en not_active Ceased
- 2018-11-01 US US16/178,386 patent/US10559124B2/en active Active
-
2019
- 2019-12-30 US US16/730,662 patent/US10867434B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060132491A1 (en) * | 2004-12-20 | 2006-06-22 | Nvidia Corporation | Real-time display post-processing using programmable hardware |
US20110216069A1 (en) * | 2010-03-08 | 2011-09-08 | Gary Keall | Method And System For Compressing Tile Lists Used For 3D Rendering |
US20150022537A1 (en) * | 2013-07-19 | 2015-01-22 | Nvidia Corporation | Variable fragment shading with surface recasting |
CN105493150A (zh) * | 2013-08-28 | 2016-04-13 | 高通股份有限公司 | 图形处理中的目标独立模板印刷 |
US20150070355A1 (en) * | 2013-09-12 | 2015-03-12 | Franz P. Clarberg | Adaptive Multi-Frequency Shading |
US20150178983A1 (en) * | 2013-12-19 | 2015-06-25 | Tomas G. Akenine-Moller | Variable Shading |
US20160049000A1 (en) * | 2014-08-12 | 2016-02-18 | Nvidia Corporation | System, method, and computer program product for performing object-space shading |
Non-Patent Citations (4)
Title |
---|
LI R 等: "Efficient GPU path rendering using scanline rasterization", 《ACM TRANSACTIONS ON GRAPHICS (TOG)》 * |
RAGAN-KELLEY J 等: "Decoupled sampling for graphics pipelines" * |
RAGAN-KELLEY J 等: "Decoupled sampling for graphics pipelines", 《ACM TRANSACTIONS ON GRAPHICS》 * |
胡伟等: "高分辨率灰度图像的快速多分辨率着色", 《计算机学报》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023230878A1 (zh) * | 2022-05-31 | 2023-12-07 | 华为技术有限公司 | 着色方法和图像处理器 |
Also Published As
Publication number | Publication date |
---|---|
US10147227B2 (en) | 2018-12-04 |
WO2018152017A1 (en) | 2018-08-23 |
US20190172257A1 (en) | 2019-06-06 |
US10559124B2 (en) | 2020-02-11 |
EP3563349A1 (en) | 2019-11-06 |
US20200134913A1 (en) | 2020-04-30 |
US10867434B2 (en) | 2020-12-15 |
US20180240268A1 (en) | 2018-08-23 |
CN110383337B (zh) | 2023-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110383337A (zh) | 可变速率着色 | |
US10546412B2 (en) | Variable rate shading | |
US9747718B2 (en) | System, method, and computer program product for performing object-space shading | |
US9754407B2 (en) | System, method, and computer program product for shading using a dynamic object-space grid | |
CN106204712B (zh) | 分段线性不规则光栅化 | |
EP3552182B1 (en) | Multiple shader processes in graphics processing | |
CN106296565B (zh) | 图形管线方法和设备 | |
CN110036413A (zh) | 平铺架构中的注视点渲染 | |
US10235799B2 (en) | Variable rate deferred passes in graphics rendering | |
CN110930489A (zh) | 用于渲染立体视觉全景图像的实时系统和方法 | |
CN109074627A (zh) | 球形视频的鱼眼图像拼接 | |
CN107392988A (zh) | 利用投影几何失真用于以可变采样率渲染的系统、方法和计算机程序产品 | |
US10504281B2 (en) | Tracking pixel lineage in variable rate shading | |
CN106575429A (zh) | 图形处理单元中的高阶滤波 | |
JP2023553507A (ja) | 特注仕様製品の合成データ表示の高品質レンダリング表示を得るためのシステムおよびその方法 | |
CN114758051A (zh) | 一种图像渲染方法及其相关设备 | |
CN106575428A (zh) | 图形处理单元中的高阶滤波 | |
US11727638B1 (en) | Adaptive geometric smoothing | |
US11880924B2 (en) | Synchronization free cross pass binning through subpass interleaving | |
Trapp et al. | Generalization of single-center projections using projection tile screens |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |