CN105405103B - 通过在空间上和/或在时间上改变采样模式增强抗锯齿 - Google Patents
通过在空间上和/或在时间上改变采样模式增强抗锯齿 Download PDFInfo
- Publication number
- CN105405103B CN105405103B CN201510574341.4A CN201510574341A CN105405103B CN 105405103 B CN105405103 B CN 105405103B CN 201510574341 A CN201510574341 A CN 201510574341A CN 105405103 B CN105405103 B CN 105405103B
- Authority
- CN
- China
- Prior art keywords
- pixel
- entry
- frame
- sampling configuration
- configuration table
- 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.)
- Active
Links
- 238000005070 sampling Methods 0.000 title claims abstract description 192
- 238000000034 method Methods 0.000 claims description 90
- 238000004040 coloring Methods 0.000 claims description 5
- 239000000523 sample Substances 0.000 claims 16
- 230000008859 change Effects 0.000 abstract description 23
- 238000005516 engineering process Methods 0.000 abstract description 21
- 238000009432 framing Methods 0.000 abstract description 5
- 238000012545 processing Methods 0.000 description 118
- 230000015654 memory Effects 0.000 description 78
- 230000033001 locomotion Effects 0.000 description 35
- 238000003860 storage Methods 0.000 description 34
- 230000006870 function Effects 0.000 description 22
- 238000001914 filtration Methods 0.000 description 19
- 238000012805 post-processing Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 15
- 239000000872 buffer Substances 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 230000000903 blocking effect Effects 0.000 description 9
- 238000013316 zoning Methods 0.000 description 9
- 238000009826 distribution Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 239000012634 fragment Substances 0.000 description 5
- 239000007787 solid Substances 0.000 description 5
- 238000009877 rendering Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000005291 magnetic effect Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 241000406668 Loxodonta cyclotis Species 0.000 description 1
- 238000012884 algebraic function Methods 0.000 description 1
- 238000005282 brightening Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000003708 edge detection Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000013073 enabling process Methods 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000010387 memory retrieval Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000007430 reference method Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000005211 surface analysis Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000017105 transposition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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
- G06T5/00—Image enhancement or restoration
- G06T5/20—Image enhancement or restoration using local operators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/70—Denoising; Smoothing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/12—Indexing scheme for image data processing or generation, in general involving antialiasing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10016—Video; Image sequence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10024—Color image
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20172—Image enhancement details
- G06T2207/20182—Noise reduction or smoothing in the temporal domain; Spatio-temporal filtering
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
本发明公开了通过在空间上和/或在时间上改变采样模式增强抗锯齿的技术。光栅单元配置为针对给定帧内的相邻像素生成不同的采样模式。此外,光栅单元可以调整帧之间的采样模式。光栅单元包括索引单元,其选择采样模式表用于当前帧使用。对于给定像素,索引单元从所选择的采样模式表中提取采样模式。所提取的采样模式用来生成用于像素的覆盖信息。用于所有像素的覆盖信息随后用来生成图像。结果图像可随后被滤波以较少或移除由采样位置的改变所引起的伪影。
Description
技术领域
本发明的实施例总地涉及图形处理,并且更具体地,涉及通过在空间上和/或在时间上改变采样模式(sample pattern)增强抗锯齿。
背景技术
在图形处理管线中,光栅化器典型地负责基于与图形场景相关联的几何体计算用于像素的覆盖信息。例如,针对给定像素,光栅化器可以确定图形场景中的三角形覆盖该像素。于是稍后在管线中,可以基于三角形的颜色为像素着色。光栅化器通过确定几何体是否在像素内的一个或多个覆盖采样位置处覆盖像素来计算用于像素的覆盖信息。
在采样配置中,通过测试几何体是否覆盖像素的中心来确定覆盖,此处使用像素的中心作为覆盖采样位置。然而,这种形式的采样可能不准确,尤其是对于复杂的形状。因此,现代着色器常采用多采样方法,其中在多个不同的覆盖采样位置处测试像素内的覆盖。多个采样的位置通常是固定的并且从像素到像素是完全相同的,以反映已在经验上被确定为针对一系列图形场景产生准确覆盖信息的具体采样模式。
上述方法的一个缺点是经由常规多采样产生的图像的质量依赖于每像素所使用的采样位置的数目。因此,为了生成较高质量的图像,必须实现较多的采样位置。然而,这些附加的采样位置引发显著的开销。特别地,必须分配附加的帧缓冲空间以容纳颜色、z数据、以及与附加采样相关联的其他类型的信息。总之,图像的质量以及必备的开销随着采样的数目而变化。
如前所述,本领域需要用于在不导致与增加每像素的采样数目相关联的开销的情况下提高图像质量的技术。
发明内容
本发明的一个实施例阐述图形子系统,该图形子系统包括第一采样模式表和索引单元,其中第一采样模式表包括第一多个条目,并且索引单元配置为生成到第一采样模式表的第一索引,第一索引引用第一多个条目中所包括的条目的第一子集;以及从第一采样模式表中提取条目的第一子集,其中条目的第一子集中所包括的第一条目指示第一帧的第一像素内的第一位置,第一样本将在第一位置处生成。
所公开的技术的至少一个优点是仅采用每像素N/M个采样位置,就可以跨M个帧生成N个覆盖样本,这产生具有看上去与每像素N个覆盖样本一致的质量的图像。
附图说明
因此,可以详细地理解本发明的上述特征,并且可以参考实施例得到对如上面所简要概括的本发明更具体的描述,其中一些实施例在附图中示出。然而,应当注意的是,附图仅示出了本发明的典型实施例,因此不应被认为是对其范围的限制,本发明可以具有其他等效的实施例。
图1是示出了配置为实现本发明的一个或多个方面的计算机系统的框图;
图2是根据本发明的一个实施例的、图1的并行处理子系统中所包括的并行处理单元的框图;
图3A是根据本发明的一个实施例的、图2的并行处理单元中所包括的的通用处理集群的框图;
图3B是根据本发明的一个实施例的、可在图2的并行处理单元内实现的图形处理管线的概念图;
图4是根据本发明的一个实施例的、图3B的图形处理管线可经配置以生成并处理的高速缓存块的概念图;
图5是根据本发明的一个实施例的、更详细示出图3B的光栅单元的框图;
图6A-6B是根据本发明的各实施例的、图5的光栅单元在生成采样模式时所实施的操作的概念图;
图7A-7D示出根据本发明的各实施例的、可由图5的光栅单元生成的示例性采样模式;
图8是根据本发明的一个实施例的、用于跨不同帧针对相邻像素生成不同的采样模式的方法步骤的流程图;
图9是根据本发明的一个实施例的、用于针对像素生成采样模式的方法步骤的流程图;
图10示出根据本发明的一个实施例的、在其中可以应用时空滤波以提高图像质量的示例性图形场景;
图11是根据本发明的一个实施例的、用于基于所检测的运动来过滤像素数据的方法步骤的流程图;
图12示出根据本发明的一个实施例的、可基于采样移动方向进行混合的示例性像素组;
图13是根据本发明的一个实施例的、用于基于采样移动方向实施时空滤波的方法步骤的流程图;以及
图14是根据本发明的一个实施例的、用于基于所检测的运动实施时间或空间滤波的方法步骤的流程图。
具体实施方式
在下面的描述中,将阐述大量的具体细节以提供对本发明更透彻的理解。然而,本领域的技术人员应该清楚,本发明可以在没有一个或多个这些具体细节的情况下得以实施。
系统概述
图1为示出了配置为实现本发明的一个或多个方面的计算机系统100 的框图。如所示的,计算机系统100包括但不限于中央处理单元(CPU) 102和系统存储器104,系统存储器104经由存储器桥105和通信路径113 耦连到并行处理子系统112。存储器桥105进一步经由通信路径106耦连到I/O(输入/输出)桥107,并且I/O桥107转而耦连到交换器116。
在操作中,I/O桥107可配置为从诸如键盘或鼠标的输入设备108接收用户输入信息,并经由通信路径106和存储器桥105将输入信息转发到 CPU 102用于处理。交换器116配置为提供I/O桥107与计算机系统100 的诸如网络适配器118以及各种插卡120和121的其他部件之间的连接。
如还示出的,I/O桥107耦连到系统盘114,系统盘114可配置为存储用于由CPU 102和并行处理子系统112所使用的内容和应用和数据。作为通用物件,系统盘114提供用于应用和数据的非易失性存储,并可包括固定或移动硬盘驱动器、闪存设备、以及CD-ROM(压缩光盘只读存储器)、 DVD-ROM(数字视频光盘-ROM)、蓝光光碟、HD-DVD(高清晰度DVD)、或其他磁性的、光学的、或固态的存储设备。最后,虽未明确示出,但诸如通用串行总线或其他端口连接、压缩光盘驱动器、数字视频光盘驱动器、胶片录制设备等的其他部件也可以连接到I/O桥107。
在各实施例中,存储器桥105可以是北桥芯片,并且I/O桥107可以是南桥芯片。此外,通信路径106和113以及计算机系统100内的其他通信路径可以使用任何技术上合适的协议来实现,包括但不限于AGP(加速图形端口)、超传输、或本领域中已知的任何其他总线或点对点通信协议。
在一些实施例中,并行处理子系统112包括将像素传递到显示设备110 的图形子系统,显示设备可以是任何常规的阴极射线管、液晶显示器、发光二极管显示器等等。在这样的实施例中,并行处理子系统112包含经优化用于图形和视频处理的电路,包括例如视频输出电路。如下面在图2中所更详细描述的,可以跨并行处理子系统112内所包括的一个或多个并行处理单元(PPU)包含这类电路。在其他实施例中,并行处理子系统112 包含经优化用于通用和/或计算处理的电路。另外,可以跨并行处理子系统 112内所包括的配置为实施这类通用和/或计算操作的一个或多个PPU包含这类电路。在又一个实施例中,并行处理子系统112内所包括的一个或多个PPU可以配置为实施图形处理、通用处理、以及计算处理操作。系统存储器104包括至少一个设备驱动程序103,其配置为管理并行处理子系统 112内的一个或多个PPU的处理操作。
在各实施例中,可以集成并行处理子系统112与图1的一个或多个其他元件以形成单个子系统。例如,可以将并行处理子系统112与CPU 102 和其他连接电路集成在单个芯片上,以形成片上系统(SoC)。
应该理解,本文所示系统是示例性的,并且变化和修改都是可能的。连接拓扑,包括桥的数目和布置、CPU 102的数目以及并行处理子系统112 的数目,可根据需要修改。例如,在一些实施例中,系统存储器104可以直接连接到CPU 102而不是通过存储器桥105,并且其他设备将经由存储器桥105和CPU 102与系统存储器104通信。在其他替代性拓扑中,并行处理子系统112可以连接到I/O桥107或直接连接到CPU 102,而不是连接到存储器桥105。而在其他实施例中,I/O桥107和存储器桥105可能被集成到单个芯片上而不是作为一个或多个分立设备存在。最后,在某些实施例中,可以不存在图1中所示出的一个或多个部件。例如,交换器116 可以被去掉,网络适配器118和插卡120、121将直接连接到I/O桥107。
图2示出了根据本发明的一个实施例的、图1的并行处理子系统112 中所包括的并行处理单元(PPU)202的框图。虽然图2描绘了一个PPU 202,但是如上文所指出的,并行处理子系统112可以包括任何数目的PPU 202。如所示的,PPU 202耦连到本地并行处理(PP)存储器204。PPU 202和 PP存储器204可使用一个或多个集成电路设备来实现,诸如可编程处理器、专用集成电路(ASIC)或存储器设备,或者以任何其他技术可行的方式来实现。
在一些实施例中,PPU 202包括图形处理单元(GPU),其可配置为实现图形渲染管线以实施与基于由CPU 102和/或系统存储器104所供应的图形数据生成像素数据相关的各种操作。当处理图形数据时,可以使用PP 存储器204作为图形存储器,其存储一个或多个常规帧缓冲区,并且如果需要,还存储一个或多个其他渲染目标。此外,可以使用PP存储器204来存储和更新像素数据,并将最终的像素数据或显示帧传递到显示设备 110用于显示。在一些实施例中,PPU 202还可配置用于通用处理和计算操作。
在操作中,CPU 102是计算机系统100的主处理器,控制和协调其他系统部件的操作。具体地,CPU 102发出控制PPU 202的操作的命令。在一些实施例中,CPU 102写入用于PPU 202的命令流到数据结构中(在图 1或图2中未明确示出),该数据结构可位于系统存储器104、PP存储器 204、或CPU 102和PPU 202都可访问的其他存储位置中。将指向数据结构的指针写到入栈缓冲区(pushbuffer)以发起对数据结构中的命令流的处理。PPU 202从入栈缓冲区读取命令流,然后相对于CPU 102的操作异步地执行命令。在生成多个入栈缓冲区的实施例中,可以经由设备驱动程序 103由应用程序为每个入栈缓冲区指定执行优先级以控制对不同入栈缓冲区的调度。
如还示出的,PPU 202包括经由通信路径113和存储器桥105与计算机系统100的其余部分通信的I/O(输入/输出)单元205。I/O单元205生成用于在通信路径113上传送的包(或其他信号),并且还从通信路径113 接收所有传入的包(或其他信号),将传入的包引导到PPU 202的适当部件。例如,可将与处理任务相关的命令引导到主机接口206,而将与存储器操作相关的命令(例如,对PP存储器204的读取或写入)引导到交叉开关单元210。主机接口206读取每个入栈缓冲区,并且将存储在入栈缓冲区中的命令流传送到前端212。
如上文结合图1所提到的,PPU 202到计算机系统100的其余部分的连接可以改变。在一些实施例中,包括至少一个PPU 202的并行处理子系统112实现为可插入到计算机系统100的扩展槽中的插卡。在其他实施例中,PPU 202可以和诸如存储器桥105或I/O桥107的总线桥集成在单个芯片上。而在其他实施例中,PPU 202的一些或所有元件可以和CPU 102 包括在单个集成电路或片上系统(SoC)中。
在操作中,前端212将从主机接口206所接收的处理任务传送到任务/ 工作单元207内的工作分布单元(未示出)。工作分布单元接收指向编码为任务元数据(TMD)并存储在存储器中的处理任务的指针。指向TMD 的指针包括在存储为入栈缓冲区并由前端单元212从主机接口206接收的命令流中。可以编码为TMD的处理任务包括与所要处理的数据相关联的的索引,以及定义数据将被如何处理的状态参数和命令。例如,状态参数和命令可以定义将在数据上执行的程序。任务/工作单元207从前端212接收任务并确保在每一个TMD所指定的处理任务发起前,将GPC 208配置为有效状态。可以为每个TMD指定用来调度处理任务的执行的优先级。还可从处理集群阵列230接收处理任务。可选地,TMD可包括控制将TMD 添加到处理任务列表(或指向处理任务的指针的列表)的头部还是尾部的参数,从而提供除执行优先级以外的另一级别的控制。
有利地,PPU 202基于处理集群阵列230实现高度并行处理架构,处理集群阵列230包括一组C个通用处理集群(GPC)208,其中C≥1。每个GPC 208能够并发执行大量的(例如,几百或几千)线程,其中每个线程是程序的实例(instance)。在各种应用中,可分配不同的GPC 208用于处理不同类型的程序或用于实施不同类型的计算。GPC 208的分配依赖于每种类型的程序或计算所产生的工作量而可以变化。
存储器接口214包括一组D个分区单元215,其中D≥1。每个分区单元215耦连到驻留在PP存储器204内的一个或多个动态随机存取存储器 (DRAM)220。在一个实施例中,分区单元215的数目等于DRAM 220 的数目,并且每个分区单元耦连到不同的DRAM 220。在其他实施例中,分区单元215的数目可以与DRAM 220的数目不同。本领域的普通技术人员应该理解DRAM 220可以用任何其他技术上合适的存储设备来替代。在操作中,诸如纹理映射图和帧缓冲区的各种渲染目标可以跨DRAM 220加以存储,这允许分区单元215并行写入每个渲染目标的各部分以有效地使用PP存储器204的可用带宽。
给定GPC 208可以处理要被写到PP存储器204内的任何DRAM 220 的数据。交叉开关单元210配置为路由每个GPC 208的输出到任何分区单元215的输入或到任何其他GPC208用于进一步处理。GPC 208经由交叉开关单元210与存储器接口214通信,以对各种DRAM220进行读取或写入。在一个实施例中,交叉开关单元210具有到I/O单元205的连接,以及经由存储器接口214到PP存储器204的连接,从而使得在不同GPC 208 内的处理内核能够与系统存储器104或对于PPU 202而言非本地的其他存储器通信。在图2的实施例中,交叉开关单元210直接与I/O单元205连接。在各实施例中,交叉开关单元210可使用虚拟信道来分开GPC208与分区单元215之间的业务流。
另外,GPC 208可被编程以执行与种类繁多的应用相关的处理任务,包括但不限于线性和非线性数据变换、视频和/或音频数据过滤、建模操作 (例如,应用物理定律以确定对象的位置、速率和其他属性)、图像渲染操作(例如,曲面细分(tessellation)着色器、顶点着色器、几何着色器、和/或像素/片段着色器程序)、通用计算操作等等。在操作中,PPU202配置为将数据从系统存储器104和/或PP存储器204转移到一个或多个片上存储器单元、处理该数据、并且将结果数据写回到系统存储器104和/或 PP存储器204。结果数据随后可以由其他系统部件访问,所述其他系统部件包括CPU 102、并行处理子系统112内的另一个PPU 202、或计算机系统100内的另一个并行处理子系统112。
如上所示,在并行处理子系统112中可以包括任何数目的PPU 202。例如,可在单个插卡上提供多个PPU 202、或可将多个插卡连接到通信路径113、或可将一个或多个PPU 202集成到桥式芯片中。在多PPU系统中的PPU 202可以彼此同样或不同。例如,不同的PPU 202可能具有不同数目的处理内核和/或不同容量的PP存储器204。在存在多个PPU 202的实现方案中,可并行操作那些PPU从而以高于单个PPU 202所可能达到的吞吐量来处理数据。包含一个或多个PPU 202的系统可以以各种配置和形式因素来实现,包括但不限于台式电脑、笔记本电脑、手持式个人计算机或其他手持设备、服务器、工作站、游戏控制台、嵌入式系统等等。
图3A为根据本发明的一个实施例的、图2的PPU 202中所包括的GPC 208的框图。在操作中,GPC 208可以配置为并行执行大量线程,以实施图形、通用处理和/或计算操作。所本文所使用的,“线程”是指在特定输入数据集上执行的特定程序的实例。在一些实施例中,单指令、多数据 (SIMD)指令发出技术用于在不提供多个独立指令单元的情况下支持大量线程的并行执行。在其他实施例中,单指令、多线程(SIMT)技术用于使用配置为向GPC 208内的处理引擎集发出指令的公共指令单元来支持大量一般来说同步的线程的并行执行。不同于所有处理引擎通常都执行同样指令的SIMD执行机制,SIMT执行通过给定程序允许不同线程更容易跟随分散执行路径。本领域普通技术人员应该理解SIMD处理机制代表SIMT 处理机制的功能子集。
经由管线管理器305来控制GPC 208的操作,管线管理器305将从任务/工作单元207内的工作分布单元(未示出)所接收的处理任务分布到一个或多个流多处理器(SM)310。管线管理器305还可配置为通过为由SM 310所输出的处理数据指定目的地来控制工作分布交叉开关330。
在一个实施例中,GPC 208包括一组M个SM 310,其中M≥1。另外,每个SM 310包括功能执行单元集(未示出),诸如执行单元和加载-存储单元。特定于任何功能执行单元的处理操作都可以被管线化,其使能在前一个指令完成执行之前发出新指令用于执行。可提供给定SM 310内的功能执行单元的任何组合。在各实施例中,功能执行单元可配置为支持各种各样的不同操作,包括整数和浮点运算(例如加法和乘法)、比较操作、布尔操作(AND、OR、XOR)、移位和各种代数函数的计算(例如平面插值和三角函数、指数函数和对数函数等等)。有利地,相同功能执行单元可配置为实施不同的操作。
在操作中,每个SM 310配置为处理一个或多个线程组。如本文所使用的,“线程组”或“线程束(warp)”是指对不同输入数据并发执行相同程序的一组线程,所述组的一个线程被指派到SM 310内的不同执行单元。线程组可以包括比SM 310内的执行单元数目少的线程,在这种情况下一些执行单元将在该线程组正在被处理的周期期间处于闲置状态。线程组还可以包括比SM 310内的执行单元数目多的线程,在这种情况下处理可在连续的时钟周期内发生。因为每个SM 310可以并发支持多达G个线程组,结果是在任何给定时间在GPC208中可以执行多达G*M个线程组。
此外,多个相关线程组可以在SM 310内同时活动(在执行的不同阶段)。该线程组集合在本文中称为“协作线程阵列”(“CTA”)或“线程阵列”。特定CTA的大小等于m*k,其中k是线程组中并发执行线程的数目,其通常是SM 310内的执行单元数目的整数倍,以及m是SM310 内同时活动的线程组的数目。
虽然未在图3A中示出,但每个SM 310包含一级(L1)高速缓存或使用另外支持由执行单元所实施的加载和存储操作的SM 310外部的相应L1 高速缓存中的空间。每个SM 310都还有权访问在PPU 202中的所有GPC 208之间共享的二级(L2)高速缓存(未示出)。L2高速缓存可用于在线程之间转移数据。最后,SM 310还有权访问片外“全局”存储器,所述“全局”存储器可以包括例如PP存储器204和/或系统存储器104。应该理解, PPU 202外部的任何存储器可用作全局存储器。此外,如图3A中所示的,一点五级(L1.5)高速缓存335可以包括在GPC 208内并且配置为接收并保持由SM 310经由存储器接口214从存储器请求的数据。这类数据可以包括但不限于指令、一致(uniform)数据和常数数据。在GPC 208中具有多个SM310的实施例中,SM 310可有利地共享高速缓存在L1.5高速缓存 335中的公共指令和数据。
每个GPC 208可以具有配置为将虚拟地址映射到物理地址中的相关联的存储器管理单元(MMU)320。在各实施例中,MMU 320可以驻留在 GPC 208内或存储器接口214内。MMU320包括用于将虚拟地址映射到像素块(tile)的物理地址或存储器页面的页表条目(PTE)集和可选地包括高速缓存行索引。MMU 320可以包括地址转译后备缓冲区(TLB)或可以驻留在SM 310、一个或多个L1高速缓存或GPC 208内的高速缓存。
在图形和计算应用中,GPC 208可配置为使得每个SM 310耦连到用于实施纹理映射操作诸如确定纹理样本位置、读取纹理数据以及过滤纹理数据的纹理单元315。
在操作中,为了将所处理的任务提供给另一个GPC 208用于进一步处理或为了经由交叉开关单元210将所处理的任务存储在L2高速缓存、并行处理存储器204或系统存储器104中,每个SM 310将所处理的任务传送到工作分布交叉开关330。此外,预光栅操作(preROP)单元325配置为从SM 310接收数据、将数据引导到分区单元215内的一个或多个光栅操作(ROP)单元、针对颜色混合实施优化、组织像素颜色数据和实施地址转译。
应该理解本文所述的内核架构是示例性的并且变化和修改都是可能的。此外,任何数目的处理单元诸如SM 310、纹理单元315或preROP单元325可以包括在GPC 208内。进一步地,如上文结合图2所述,PPU 202 可以包括任何数目的GPC 208,所述GPC 208配置为在功能上彼此相似以使得执行行为不取决于哪个GPC 208接收特定处理任务。进一步地,每个GPC 208独立于PPU 202中的其他GPC 208操作以为一个或多个应用程序执行任务。鉴于前面所述,本领域普通技术人员将理解图1-3A中所描述的架构决不限制本发明的范围。
图形管线架构
图3B是根据本发明的一个实施例的、可在图2的PPU 202中实现的图形处理管线350的概念图。如所示的,图形处理管线350包括但不限于以下单元:基元分配器(PD)355,顶点属性获取单元(VAF)360,顶点、曲面细分、几何处理单元(VTG)365,视口缩放、剔除和裁剪单元(VPC) 370,分块(tiling)单元375,设置单元(setup)380,光栅化器(光栅) 385,片段处理单元也认定为像素着色单元(PS)390,以及光栅操作(ROP) 单元395。
PD 355从前端212收集与高阶表面、图形基元等相关联的顶点数据,并将顶点数据传送到VAF 360。
VAF 360检索与来自共享存储器的每个进入顶点相关联的顶点属性,并将顶点数据与相关联的顶点属性一起存储到共享存储器。
VTG 365是配置为执行顶点着色器程序、曲面细分程序和几何程序的可编程执行单元。这些程序处理从VAF 360所接收的顶点属性和顶点数据,并产生图形基元和图形基元的每个顶点处的透明度值、颜色值、以及表面法向量,用于在图形处理管线350内进一步处理。在一些实施例中,虽未明确示出,但VTG 365可以包括顶点处理单元、曲面细分初始化处理单元、任务生成单元、任务分配器、拓扑生成单元、曲面细分处理单元以及几何处理单元中的一个或多个。
顶点处理单元是配置为执行顶点着色器程序的可编程执行单元,按顶点着色器程序所指定的来亮化和变换顶点数据。例如,顶点处理单元可被编程以将顶点数据从基于对象的坐标表示(对象空间)变换到可替代地基于诸如世界空间或规格化设备坐标(NDC)空间的坐标系。顶点处理单元可读取由VAF存储在共享存储器中的顶点数据和顶点属性,并且可以处理顶点数据和顶点属性。顶点处理单元415可以将经处理的顶点存储到共享存储器。
曲面细分初始化处理单元是配置为执行曲面细分初始化着色器程序的可编程执行单元。曲面细分初始化处理单元处理由顶点处理单元所产生的顶点,并生成已知为补丁(patch)的图形基元。曲面细分初始化处理单元还生成各种补丁属性。曲面细分初始化处理单元随后将补丁数据和补丁属性存储到共享存储器。在一些实施例中,曲面细分初始化着色器程序可被称为外壳(hull)着色器或曲面细分控制着色器。
任务生成单元从共享存储器检索用于顶点和补丁的数据和属性。任务生成单元生成用于处理顶点和补丁的任务,用于由图形处理管线350中的稍后级进行处理。
任务分配器将任务生成单元所产生的任务重新分配。在一个图形处理管线350和另一个之间,顶点着色器程序和曲面细分初始化程序的各实例所产生的任务可以显著不同。任务分配器将这些任务重新分配,这样每个图形处理管线350在后期管线级期间大体上具有相同的工作量。
拓扑生成单元检索任务生成器所分配的任务。拓扑生成单元为顶点建立索引,所述顶点包括与补丁相关联的顶点,并计算用于曲面细分顶点的 (U,V)坐标和连接经曲面细分的顶点以形成图形基元的索引。拓扑生成单元随后将有索引的顶点存储到共享存储器。
曲面细分处理单元是配置为执行曲面细分着色器程序的可编程执行单元。曲面细分处理单元从共享存储器读取输入数据,并将输出数据写入到共享存储器。共享存储器中的该输出数据被传递到下一个着色器级、几何处理单元445作为输入数据。在一些实施例中,曲面细分着色器程序可被称为域着色器或曲面分析评估着色器。
几何处理单元是配置为执行几何着色器程序从而变换图形基元的可编程执行单元。顶点被分组以构建图形基元用于进一步处理,其中图形基元包括三角形、线段、点等等。例如,几何处理单元可被编程以将图形基元细分成一个或多个新图形基元并计算用来将新图形基元光栅化的参数,诸如平面方程系数。
几何处理单元将指定新图形基元的参数和顶点传送到VPC 370。几何处理单元425可读取存储在共享存储器中的数据用于在处理几何数据中使用。VPC 370实施裁剪、剔除、透视校正和视口变换,以确定在最终的经渲染图像中哪些图形基元潜在可视以及哪些图形基元非潜在可视。VPC 370随后将经处理的图形基元传送到分块单元375。
如本文进一步讨论的,分块单元375是驻留在世界空间管线352和屏幕空间管线354之间的图形基元分类引擎。图形基元在世界空间管线352 中被处理,并随后被传送到分块单元375。屏幕空间被分为高速缓存块,其中每个高速缓存块与屏幕空间的一部分相关联。对于每个图形基元,分块单元375识别与图形基元相交的高速缓存块的集合,过程在本文中称为“分块”。在将某数目的图形基元分块后,分块单元375在高速缓存块的基础上处理图形基元,其中与特定高速缓存块相关联的图形基元被传送到设置单元380。分块单元375一次一个高速缓存块地将图形基元传送到设置单元380。与多个高速缓存块相交的图形基元典型地在世界空间管线352 中一次处理,并且随后多次被传送到屏幕空间管线354。
这样的技术改善了在屏幕空间管线354中处理期间的高速缓存存储器的位置性(locality),其中与第一高速缓存块相关联的多个存储器操作访问可在第一高速缓存块的屏幕空间处理期间保持驻留的L2高速缓存或任何其他技术上可行的高速缓存存储器的区域。一旦与第一高速缓存块相关联的图形基元被屏幕空间管线354所处理,与第一高速缓存块相关联的L2 高速缓存的部分可被清除(flush),并且分块单元可传送与第二高速缓存块相关联的图形基元。与第二高速缓存块相关联的多个存储器操作随后可访问可在第二高速缓存块的屏幕空间处理期间保持驻留的L2高速缓存的区域。因此,到L2高速缓存和到渲染目标的全部存储器流量将减少。在一些实施例中,无论与图形基元相交的屏幕空间中的高速缓存块的数目为多少,针对给定图形基元实施一次世界空间计算。
设置单元380经由分块单元375从VPC 370接收顶点数据,并计算与图形基元相关联的参数,包括但不限于边缘方程、局部平面方程、以及深度平面方程。设置单元380随后将经处理的图形基元传送到光栅化器385。
光栅化器385扫描转换新图形基元并将片段和覆盖数据传送到像素着色单元390。此外,光栅化器385可配置为实施z剔除(z-culling)和其他基于z的优化。
像素着色单元390是配置为执行片段着色器程序的可编程执行单元,按照片段着色器程序所指定的对从光栅化器385所接收的片段进行变换的。片段着色器程序可以以像素级粒度对片段进行着色,其中这种着色器程序可被称为像素着色器程序。可替代地,片段着色器程序可以以样本级粒度对片段进行着色,其中每个像素包括多个样本,并且每个样本表示像素的一部分。可替代地,片段着色器程序可以以任何其他技术上可行的粒度对片段进行着色,这取决于所规划的采样率。
在各实施例中,片段处理单元460可被编程以实施诸如透视校正、纹理映射、着色、混合等操作,以产生传送到ROP 395的经着色的片段。像素着色单元390可读取存储在共享存储器中的数据。
ROP 395是处理单元,其实施诸如模板(stencil)、z测试、混合等的光栅操作,并经由存储器接口214传送像素数据作为经处理的图形数据用于存储在图形存储器中,其中图形存储器典型地构造为一个或多个渲染目标。经处理的图形数据可存储在图形存储器、并行处理存储器204或系统存储器104中,用于在显示设备110上显示或用于由CPU 102或并行处理子系统112进一步处理。在一些实施例中,ROP 395配置为压缩写入到存储器的z或颜色数据以及解压缩从存储器中读取的z或颜色数据。在各实施例中,ROP 395可以位于存储器接口214、GPC 208、GPC外部的并行集群阵列230、或PPU 220内的分立单元(未示出)中。
图形处理管线可以通过PPU 202内的任何一个或多个处理元件来实现。例如,图3A的SM 310之一可配置为实施VTG 365和像素着色单元390的一个或多个的功能。PD 355、VAF360、VPC 450、分块单元375、设置单元380、光栅化器385和ROP 395的功能也可以通过特定GPC 208 内的处理元件结合相对应的分区单元215来实施。可替代地,图形处理管线350可以使用专用固定功能处理元件加以实现用于上文所列功能的一个或多个。在各实施例中,PPU 202可配置为实现一个或多个图形处理管线 350。
在一些实施例中,图形处理管线350可被分为世界空间管线352和屏幕空间管线354。世界空间管线352处理在3D空间中的图形对象,其中每个图形对象的定位相对于其他图形对象和3D坐标系是已知的。屏幕空间管线354处理已从3D坐标系投影到表示显示设备110的表面的2D平面的图形对象。例如,世界空间管线352可以包括图形处理管线350中从PD355 到VPC 370的管线级。屏幕空间管线354可以包括图形处理管线350中从设置单元380到ROP 395的管线级。分块单元375将跟随世界空间管线352 的最后一级,即VPC 370。分块单元375将在屏幕空间管线354的第一级即设置单元380之前。
在一些实施例中,世界空间管线352可进一步被分为阿尔法阶段(alpha phase)管线和贝塔阶段(beta phase)管线。例如,阿尔法阶段管线可以包括图形处理管线350中从PD355到任务生成单元的管线级。贝塔阶段管线可以包括图形处理管线350中从拓扑生成单元到VPC 370的管线级。图形处理管线350在阿尔法阶段管线处理期间实施第一操作集,并且在贝塔阶段管线处理期间实施第二操作集。如本文所使用,操作集定义为由单个线程、线程组、或动作一致的多个线程组执行的一个或多个指令。
在采用多个图形处理管线350的系统中,与图形对象集相关联的顶点数据和顶点属性可被划分,这样每个图形处理管线350具有大体上相同量的工作量通过阿尔法阶段。阿尔法阶段处理可显著扩大顶点数据和顶点属性的量,这样,由任务产生单元所产生的顶点数据和顶点属性的量将明显大于由PD 355和VAF 360所产生的顶点数据和顶点属性的量。进一步地,与一个图形处理管线350相关联的任务产生单元可以比与另一个图形处理管线350相关联的任务产生单元产生明显多数量的顶点数据和顶点属性,即使在两个图形处理管线350在阿尔法阶段管线开始时处理相同数量的属性的情况下。在这种情况下,任务分配器将阿尔法阶段管线所产生的属性重新分配,这样每个图形处理管线350在贝塔阶段管线开始时具有大体上相同的工作量。
如本文所使用的,对共享存储器的引用可以包括任何一个或多个技术上可行的存储器,包括但不限于:由一个或多个SM 310共享的本地存储器,或可经由存储器接口214访问的存储器,诸如高速缓存存储器、并行处理存储器204,或系统存储器104。如本文还使用的,对高速缓存存储器的引用可以包括任何一个或多个技术上可行的存储器,包括但不限于L1 高速缓存、L1.5高速缓存和L2高速缓存。
分块的高速缓存
图4是根据本发明的一个实施例的、图3B的图形处理管线350可经配置以生成并处理的高速缓存块410(0)的概念图。如所示的,高速缓存块 410(0)表示屏幕空间400的一部分,并且被分为多个光栅块420。
屏幕空间400表示一个或多个存储器缓冲区,其配置为存储经渲染的图像数据和图形处理管线350内的功能单元所传送的其他数据。在一些实施例中,一个或多个存储器缓冲区可配置作为一个或多个渲染目标。屏幕空间表示配置为存储由图形处理管线所渲染的图像的存储器缓冲区。屏幕空间400可与任意数目的渲染目标相关联,其中每个渲染目标可独立于其他渲染目标而被配置,以包括任意数目的字段(filed)。渲染目标内的每个字段可独立于其他字段而被配置,以包括任意数目的位。每个渲染目标可以包括多个像元(像素),并且每个像素转而可以包括多个样本。在一些实施例中,每个高速缓存块的大小可以基于与屏幕空间相关联的渲染目标的大小和配置。在操作中,一旦渲染完成,在一个或多个渲染目标中的像素可被传送到显示设备以显示经渲染的图像。
举例来说,针对屏幕空间400的渲染目标集可以包括八个渲染目标。第一渲染目标可以包括表示颜色的四个字段,包括红色、绿色、蓝色组分颜色和与相对应的片段相关联的透明度信息。第二渲染目标可以包括表示与相对应的片段相关联的深度和模板信息的两个字段。第三渲染目标可以包括表示与相对应的片段相关联的表面法向量信息的三个字段,包括x轴法向量,y轴法向量和z轴法向量。剩余的五个渲染目标可配置为存储与相对应的片段相关联的附加信息。这类配置可以包括用于各种信息的存储,包括但不限于3D定位数据、漫反射光照信息和镜面反射光照信息。
每个高速缓存块410表示屏幕空间400的一部分。为清楚起见,图4 中仅示出五个高速缓存块410(0)—410(4)。在一些实施例中,高速缓存块在X和Y屏幕空间可以具有任意大小。例如,如果高速缓存块将驻留在也用于存储其他数据的高速缓存存储器中,那么高速缓存块的大小可设置为仅消耗高速缓存存储器的特定部分。高速缓存块的大小可以基于若干因素,包括:与屏幕空间400相关联的渲染目标的数量和配置、每像素的样本数量、以及存储在高速缓存块中的数据是否被压缩。一般情况下,高速缓存块的大小被设置为增大下述情况的可能性:高速缓存块数据保持驻留在高速缓存存储器中,直到与高速缓存块相关联的所有图形基元被完全处理。
光栅块420表示高速缓冲块410(0)的一部分。如所示的,高速缓存块410(0)包括排成阵列的十六个光栅块420(0)——410(15),该阵列为四个光栅块420宽,四个光栅块420高。在包括多个GPC 208的系统中,与给定高速缓存块410(0)相关联的处理可在可用的GPC208之间进行划分。如示例中所示,如果高速缓存块410(0)的十六个光栅块由四个不同的GPC 208处理,那么每个GPC 208可被指派处理高速缓存块410(0) 的十六个光栅块中的四个。具体地,第一GPC 208可被指派处理光栅块420 (0)、420(7)、420(10)和420(13)。第二GPC 208可被指派处理光栅块420(1)、420(4)、420(11)和420(14)。第三GPC 208可被指派处理光栅块420(2)、420(5)、420(8)和420(15)。第四GPC 208可被指派处理光栅块420(3)、420(6)、420(9)和420(12)。在其他实施例中,给定高速缓存块内的不同的四个光栅块的处理可在GPC 208之间或计算机系统100内所包括的任何其他处理实体之间以任何技术上可行的方式进行分配。
现在参考回图3B,如上文所述,光栅385配置为基于世界空间几何体生成用于像素的覆盖数据。这样做时,光栅385配置为针对每个像素实现不同的采样模式,并且针对每个像素跨连续帧改变那些采样模式。例如,对于给定相邻像素对,光栅385可以针对给定帧针对那些像素实现一组两个不同的采样模式。然后,对于随后的帧,光栅385可以针对那些像素实现另一组两个不同的采样模式。这样,针对每个像素,所使用的采样模式在帧之间改变,并且此外,在相同帧内相对于相邻像素而改变。该通用方法在本文中可称为“多帧抗锯齿”或MFAA。
采用该方法,光栅385有效地增强了跨多帧针对每个像素的多重采样抗锯齿模式,而实际上不要求每像素的附加采样。例如,取代实现每像素 N个样本,光栅385可以反而实现跨M帧每像素N/M个不同的样本,这总共产生N个样本。因为连续的帧是相对连贯的,这意味着图形对象典型地在帧之间没有显著移动,因此该方法可以使观察者感知到仿佛是采用较高阶多重采样抗锯齿所渲染而实际上是光栅385实现的较高质量的经渲染的图像。下面结合图5-9更详细地描述光栅385的该功能。
在空间上和/或在时间上改变采样模式
图5是根据本发明的一个实施例的、更详细示出图3B的光栅单元的框图。如所示的,光栅单元385包括像素数据500、索引单元510、帧数据 520、一组采样模式表530以及一组采样模式540。像素数据500包括数据,所述数据指定用于当前被图形处理管线350渲染以显示的帧内的每个像素的X和Y坐标。帧数据520包括与该帧相关联的帧号。
每个采样模式表530包括与特定帧号或与帧号的类型相关联的一组采样模式。例如,采样模式表530可以包括两个采样模式表,第一表包括用于奇数号帧使用的采样模式,并且第二表包括用于偶数号帧使用的采样模式。设备驱动程序103可以配置采样模式表530的编号,并设置每个采样模式表530。在实践中,设备驱动程序103可以包括两个采样模式表用于奇数号帧和偶数号帧使用,如上文所描述的,但是本领域技术人员将理解这类表的任意编号均落在本发明的范围内。
索引单元510配置为接收帧数据520并且随后基于帧号选择特定采样模式表530以为当前帧所用。索引单元510随后处理像素数据500,并且针对每个像素生成到所选择的采样模式表530的索引。所生成的索引指代所选择的采样模式表530内的条目编号。每个条目指示像素内的XY位置,在该处应由光栅385针对像素生成覆盖样本。采样模式340包括针对特定像素的所有这类XY位置。光栅385配置为基于与像素相对应的采样模式 340针对该像素生成覆盖信息。下面还结合图6A-6B以示例的方式更详细描述上文一般描述的方法。
图6A-6B是根据本发明的各实施例的、图5的光栅单元在生成采样模式时所实施的操作的概念图。本示例涉及其中光栅385可在多达64个惟一的位置处对每个像素采样的配置。进一步地,该示例涉及多帧抗锯齿模式,在该模式中光栅385实现每像素四个样本。因此,下面所讨论的示例性场景阐述仅采用4x采样位置的8x抗锯齿模式。本领域技术人员将理解本文所讨论的示例无意以任何方式限制本发明的范围。光栅385可配置为在任意数目的位置处对像素进行采样,并实现每像素任意数目的样本。
在图6A中,索引单元510接收来自像素数据500的Xpos和Ypos。 Xpos和Ypos一起反映单个像素的XY位置。索引单元510还接收来自帧数据520的帧号(frm#)。基于帧号,索引单元510选择采样模式表530(0)。随后,索引单元解析Xpos和Ypos以生成到采样模式表530(0)的索引。所生成的索引选择该表中所包括的一系列条目。每个条目包括X位置和Y 位置,其分别驻留在X列(Xcol)和Y列(Ycol)。在一个实施例中,索引单元510从Xpos和Ypos解析最低有效位(LSB)的数目,并且随后组合这些LSB以生成索引。如所示的,索引单元510可以随后访问采样模式表530(0)内的一系列条目,以产生用于处在Xpos和Ypos处的像素的采样模式540(0)。图6B示出了关于不同的像素所实施的类似过程。
在图6B中,索引单元510接收来自像素数据500的Xpos’和Ypos’。 Xpos’和Ypos’反映与上文结合图6A所讨论的像素相邻的像素的XY位置。索引单元解析Xpos’和Ypos’以生成到采样模式表530(0)的另一索引,其选择该表中所包括的不同系列的条目。如所示的,索引单元510可以随后访问采样模式表530(0)内的另一系列条目,以产生用于该相邻像素的采样模式540(0)’。
总地参考图6A-6B,索引单元510可以针对帧内的每个不同像素实施上述过程,从而针对相邻像素生成不同的采样模式。此外,索引单元510 可以针对不同的帧选择不同的采样模式表530。因此,针对给定像素所选择的采样模式540在帧之间可以变化。一般地,针对给定像素所使用的不同采样模式540的数目反映由设备驱动程序103所配置的抗锯齿的程度。
例如,在图6A-6B中,光栅385配置为实施MFAAx8或8x多帧抗锯齿。在这种情况下,光栅385将跨两个连续的帧、对于每帧、在每像素内的四个位置处生成样本。此外,有效多重采样抗锯齿的程度等同于每帧每像素样本的数目乘以采样模式改变所跨的帧的数目。因此,在本文所讨论的示例中,有效8x多重采样是通过跨两个连续的帧分配四个不同的采样位置而达成。
本领域技术人员将理解可以通过调整每像素样本的数目、采样模式改变所跨的帧的数目来实现任何具体的MFAA模式。例如,为了实现 MFAAx6,光栅385可以跨三个连续的帧在不同的位置处针对每个像素生成样本。仅出于示例性目的而提供本文所描述的具体值,并且无意以任何方式限制本发明的范围。图7A-7D阐述各种不同的采样模式,其可以用来生成样本以计算覆盖信息。
图7A-7D示出根据本发明的各实施例的、可由图5的光栅单元生成的示例性采样模式。一般情况下,图7A-7D中的每个示出四个采样模式,其可被实现以针对四个相邻的像素生成样本。此外,每个采样模式指示在特别编号的帧期间活跃的不同的采样位置。例如,在这些图中所示的一些采样位置可以在偶数号帧期间活跃,而其他的在奇数号帧期间活跃。下面的示例仅出于示例性目的而提供,并且无意以任何方式限制本发明的范围。
图7A示出在其中1x多重采样抗锯齿模式(每像素一个样本)有效地提供2x多帧抗锯齿模式的场景。如所示的,像素组700包括像素702、704、 706和708。光栅385可以在多达256个位置处针对每个像素生成覆盖样本。对于每一帧,光栅385仅生成每像素一个覆盖样本。然而,该一个样本的位置跨奇数号帧和偶数号帧而改变。
例如,光栅385可以针对像素702在处理偶数号帧时在位置(4,4)处生成覆盖样本,并且随后在处理奇数号帧时针对该像素在位置(12,12)处生成覆盖样本。此外,因为像素702、704、706和708中的每一个驻留在帧的不同XY位置处,所以针对每个这类像素所使用的采样模式可以相对于相邻像素而改变。例如,给定帧内的像素702和704具有不同的采样模式。然而,给定帧内的像素704和706具有相同的采样模式。图7B-7D示出可使用本文所讨论的技术来实现的较高阶MFAA。
图7B示出在其中2x多重采样抗锯齿模式有效地提供4x多帧抗锯齿模式的场景。如所示的,像素组710包括像素712、714、716和718。对于每一帧,光栅385生成每像素两个覆盖样本,其中那些样本的位置跨奇数号帧和偶数号帧而改变。这样,4x MFAA可以通过跨两个连续的帧分配2x 个样本来实现。
图7C示出在其中4x多重采样抗锯齿模式有效地提供8x多帧抗锯齿模式的场景。如所示的,像素组720包括像素722、724、726和728。对于每一帧,光栅385生成每像素四个覆盖样本,其中那些样本的位置跨奇数号帧和偶数号帧而改变。这样,8x MFAA可以通过跨两个连续的帧分配4x 个样本来实现。
图7D示出在其中8x多重采样抗锯齿模式有效地提供16x多帧抗锯齿模式的场景。如所示的,像素组730包括像素732、734、736和738。对于每一帧,光栅385生成每像素八个覆盖样本,其中那些样本的位置跨奇数号帧和偶数号帧而改变。这样,16x MFAA可以通过跨两个连续的帧分配8x个样本来实现。
总地参考图7A-7D,出于示例性目的而提供本文所示出的示例性采样模式。光栅385可以实现种种不同的采样模式,以任何技术上可行的方式分配,可跨任意数目的连续帧而改变。图8和图9以逐步骤的方式描述光栅385的通用操作。
图8是根据本发明的一个实施例的、用于跨不同帧针对相邻像素生成不同的采样模式的方法步骤的流程图。虽然结合图1-7D的系统描述方法步骤,但是本领域技术人员将理解配置为以任何顺序实施方法步骤的任何系统均在本发明的范围内。
如所示的,方法800开始于步骤802,在该步骤,光栅385内的索引单元510识别与第一帧相关联的采样模式表530。这样做时,索引单元510 可以解析帧数据520以识别与当前帧相关联的帧号,并且随后基于该编号选择采样模式表。在步骤804,索引单元510从所选择的采样模式表中选择第一组采样模式,用于针对相邻的像素生成覆盖信息。在一些实施例中,第一组采样模式可以包括针对每个相邻像素的不同的采样模式。在步骤 806,光栅385基于第一组采样模式针对相邻的像素生成覆盖样本。
在步骤808,光栅385继续第二帧。作为响应,帧数据520可被更新以反映与第二帧相关联的新的帧号。在步骤810,光栅385内的索引单元 510识别与第二帧相关联的另一采样模式表530。索引单元510可以解析经更新的帧数据520以识别与第二帧相关联的编号,并且随后基于该编号选择新的采样模式表。在步骤812,索引单元510从所选择的采样模式表中选择第二组采样模式,用于针对相邻的像素生成覆盖信息。第二组采样模式可以包括针对每个相邻像素的不同的采样模式。在一些实施例中,第二组采样模式可以反映第一组采样模式的位置变换(transposition)。在步骤 814,光栅385基于第二组采样模式针对相邻的像素生成样本。
通过实现方法800,光栅385可以在逐帧(frame-by-frame)的基础上针对每个像素独立地配置采样模式。该方法充分灵活地实现了大范围的不同多帧抗锯齿模式,而不会在典型地采用常规多重采样方法所经历的开销上遭受大幅度增长。图9更详细地描述索引单元510的功能。
图9是根据本发明的一个实施例的、用于针对像素生成采样模式的方法步骤的流程图。虽然结合图1-7D的系统描述方法步骤,但是本领域技术人员将理解配置为以任何顺序实施方法步骤的任何系统均在本发明的范围内。
如所示的,方法900开始于步骤902,在该步骤,索引单元510确定当前帧的帧号。在步骤902,索引单元510可以解析帧数据以确定帧号。在步骤904,索引单元510识别与当前帧号相对应的采样模式表530。在步骤906,索引单元510接收与给定像素相关联的XY坐标。XY坐标反映像素在当前帧内的定位。
在步骤908,索引单元510生成到所选择的采样模式表的索引。索引指代所选择的采样模式表中的一系列条目。在步骤910,索引单元510基于在步骤908生成的索引从所选择的采样模式表中提取一组采样模式位置。在步骤910,光栅385在所提取的采样位置处针对像素生成覆盖信息。光栅385内的索引单元可以针对帧内每个不同的像素实现方法900,以针对每个这类像素使用不同的采样模式生成覆盖信息。
总地参考图5-9,可以应用本文所讨论的多帧抗锯齿技术来增强了有效的多重采样模式。经渲染的图形图像的质量可以因此而提高,因为实际上生成了较高分辨率的覆盖数据。此外,采用某些实施例,可以应用本文所讨论的技术来增强由SM 310执行的着色器所实现的有效的超级采样模式。在一个实施例中,可以复制由光栅385所生成的覆盖采样位置,以生成着色器采样位置用于像素着色目的。这样做时,设备驱动程序103可以配置SM310以针对每个像素调整着色器采样位置,以反映针对每个像素所使用的特定采样模式340。采用该方法,设备驱动程序103可以实现SM 内有效的超级采样,而不需要附加的着色器样本,从而提高图像质量。
通过使用专用滤波器减少因跨帧改变采样模式而潜在地引入的视觉伪影,使用上述技术生成的图像的质量可进一步提高。这些滤波技术,下面称为“时空滤波”,可以应用在包括静止对象、移动对象、或两者组合的图形环境中,如下面结合图10-14更详细描述的。
时空滤波
图10示出根据本发明的一个实施例的、在其中可以应用时空滤波以提高图像质量的示例性图形场景。如所示的,图形场景的帧1000包括移动对象1010以及静止对象1020和1030。当实现结合图5-9描述的多帧抗锯齿技术来渲染帧1000时,可能至少部分地由于跨相邻像素和在帧之间改变采样模式而出现某些类型的伪影。
例如,当渲染静止对象1020时,在帧之间改变采样模式可能导致该对象出现轻微地抖动。该抖动例如可能因为跨不同的帧不同的采样模式针对相同的像素产生不同的覆盖信息而出现。因此,静止对象1020的边缘可能出现移动。在另一个示例中,当移动对象1010跨帧1000行进时,在帧之间改变采样模式结合对象1000的运动可能导致该对象的边缘出现锯齿型。也可能出现其他类型的伪影,诸如帧之间移动对象1010的重影。
为了缓解这些问题,设备驱动程序103实施各种时空滤波操作。具体地,为了减轻与静止对象相关联的伪影,设备驱动程序103实施时间混合,从而其先前帧内的相对应的像素被混合在一起。为了减轻与移动对象相关联的伪影,设备驱动程序103实施空间混合,从而其沿边缘驻留的相邻像素被混合在一起。
设备驱动程序103可以在每像素的基础上实施时间混合、空间混合或两者的组合,这取决于与像素相关联的运动的量。因此,如果确定给定像素为静止的,则设备驱动程序103发起时间混合。可替代地,如果确定给定像素为移动的,则设备驱动程序103发起空间混合。设备驱动程序103 可以使用下面结合图12-14更详细描述的技术来实施组合的时空混合。
在操作中,设备驱动程序103可配置为通过跨先前帧比较像素值来检测与像素相关联的运动。这样做时,设备驱动程序103通常比较具有相似采样模式配置的先前帧。例如,当光栅385在奇数号帧和偶数号帧之间改变采样模式时,如结合图6A-7D所描述的,设备驱动程序103比较一组偶数号帧内的相对应像素和/或比较一组奇数号帧内的相对应像素。该方法意在消除可能从采样模式的改变而引起的错误的运动检测。
在实践中,设备驱动程序103比较若干个偶数号帧以确定那些像素值之间的差是否超过第一阈值。设备驱动程序103还比较若干个奇数号帧以确定那些像素值之间的差是否超过第二阈值。如果第一阈值和第二阈值两者均被超过,则设备驱动程序103识别到运动。可以实施该方法来在每像素的基础上识别运动。在一个实施例中,设备驱动程序103可以通过配置 SM 310实施前述运动检测功能来实现该方法。下面还结合图11以逐步骤的方式描述本文所讨论的时空滤波技术。
图11是根据本发明的一个实施例的、用于基于检测到的运动过滤像素数据的方法步骤的流程图。虽然结合图1-7D和图10的系统描述方法步骤,但是本领域技术人员将理解配置为以任何顺序实施方法步骤的任何系统均在本发明的范围内。
如所示的,方法1100开始于步骤1102,在该步骤,设备驱动程序103 比较具有相似采样模式配置的先前帧。例如,如果光栅385在偶数号帧和奇数号帧之间改变采样模式,那么设备驱动程序103可以比较帧N和帧 N-2,并且比较帧N-1和帧N-3。在步骤1104,设备驱动程序103确定是否检测到运动。这样做时,设备驱动程序103可以确定先前帧的像素值之间的差是否大于阈值。例如,设备驱动程序103可以确定帧N和帧N-2之间的差是否超过阈值。设备驱动程序103还可确定帧N-1和帧N-3之间的差是否超过另一阈值。如果其中一个超过阈值、或者两个都超过阈值,那么设备驱动程序103检测到运动。
如果设备驱动程序103在步骤1104未检测到运动,那么方法行进到步骤1106,在该步骤,设备驱动程序103发起时间混合。这样做时,设备驱动程序103可以配置SM 310来实施时间混合。在步骤1108,设备驱动程序103将先前帧中的相对应的像素进行混合。这样做时,设备驱动程序103 可以将第一帧内具有特定XY位置的给定像素与来自先前帧的具有相同XY位置的像素进行混合。
如果设备驱动程序103在步骤1104确实检测到了运动,那么方法1100 行进到步骤1110,在该步骤,设备驱动程序103发起空间混合。这样做时,设备驱动程序103可以配置SM310以实施空间混合。在步骤1112,设备驱动程序103将在图形场景内所检测到的沿着边缘的像素进行混合。在一个实施例中,设备驱动程序103实现边缘检测算法以识别像素附近区域内的边缘。对于沿着检测到的边缘驻留的给定像素,设备驱动程序103随后选择邻近给定像素并且沿着边缘驻留的一个或多个像素。随后,设备驱动程序103可以将给定像素与邻近的像素相混合。
设备驱动程序103可以针对帧内每个不同的像素实现方法1100。因此,某些像素可能受到时间混合,而其他像素可能受到空间混合。例如,参考图10,与静止对象1020和1030相关联的像素将受到时间混合,而与移动对象1010相关联的像素将受到空间混合。针对每个不同的像素,设备驱动程序103还可实施空间混合和时间混合的混合。例如,设备驱动程序103 可以为每个像素指派运动分数,并且随后依赖于运动分数实施时间滤波和空间滤波的结合。为了这样做,设备驱动程序103可以基于运动分数为空间滤波结果加权,并且基于运动分数的倒数(inverse)为时间滤波结果加权。此外,设备驱动程序103可以实施滤波以补偿(account for)每个像素内采样模式的变化,如下面结合图12-14更详细描述的。
图12示出根据本发明的一个实施例的、可基于采样移动方向进行混合的示例性像素组。如所示的,跨三个连续的帧描绘像素组1200的实例。实例1200(0)出现在帧0中,实例1200(1)出现在帧1中,并且实例 1200(2)出现在帧2中。如还示出的,组1200的中心像素内的采样位置跨帧而改变。在帧0中,采样位置驻留在左上角。在帧1中,采样位置驻留在右下角。在帧2中,采样位置驻留在左上角。此处描述的采样位置的示例性移动可对应于在其中在偶数号帧和奇数号帧之间改变采样位置的多帧抗锯齿模式。
如此处所引用的,“采样移动方向”是指采样位置在帧之间移动所沿着的像素内的方向。例如,在帧0和帧1之间,采样位置向右下方移动,如那些帧之间的虚线箭头所指示的。类似地,在帧1和帧2之间,采样位置向左上方移动,如那些帧之间的虚线箭头所指示的。
设备驱动程序103配置为基于采样移动方向在相邻像素之间实施空间混合,以抵消由采样位置的移动所引起的潜在可感知的运动。因此,如实例1200(1)内所示的,为了抵消帧0和帧1之间的右下采样移动,设备驱动程序可以以所示出的方式将中心像素和左上像素相混合。类似地,在实例1200(2)内,为了抵消帧1和帧2之间的左上采样移动,设备驱动程序可以如所示的将中心像素和右下像素相混合。
可以实现上文所描述的混合技术来使用多帧抗锯齿减少经渲染的帧内的抖动和/或其他伪影。还可将这些技术与上文结合图10-11讨论的时空方法相结合。图13-14阐述用于基于对象运动以及采样移动运动来混合像素的不同的滤波技术。
图13是根据本发明的一个实施例的、用于基于采样移动方向实施时空滤波的方法步骤的流程图。虽然结合图1-7D、图10和图12的系统描述方法步骤,但是本领域技术人员将理解配置为以任何顺序实施方法步骤的任何系统均在本发明的范围内。
如所示的,方法1300开始于步骤1302,在该步骤,设备驱动程序103 通过将像素的当前值与当前帧内在采样移动相反方向上的相邻像素相混合来计算用于像素的第一颜色。设备驱动程序103可以通过实现与图12中所描绘的类似的技术来实施步骤1302。在步骤1304,设备驱动程序103通过将像素的当前值与先前帧中像素的先前值相混合来计算第二颜色。
在步骤1306,设备驱动程序103确定是否有任何运动与像素相关联。设备驱动程序103可以比较先前帧来识别运动,如上文结合图11所讨论的。如果设备驱动程序103检测到运动,那么方法1300行进到步骤1308,在该步骤,设备驱动程序103增加针对该像素的运动分数。方法1300随后行进到步骤1310。如果设备驱动程序103在步骤1306未检测到运动,那么方法1300行进到步骤1312,在该步骤,设备驱动程序103减少针对该像素的运动分数。方法1300行进到步骤1310。在步骤1310,设备驱动程序 103基于第一颜色、第二颜色和运动分数计算用于该像素的颜色值。在一个实施例中,在步骤1310所实施的操作包括基于运动分数在第一颜色和第二颜色之间插值。
设备驱动程序103可以反复地实现方法1300以对当前帧内的每个像素着色。这样做时,设备驱动程序103可以配置SM 310来实施任何和所有这类着色操作。采用该方法,设备驱动程序103基于当前所检测到的运动以及先前运动同时也考虑到采样移动方向来过滤像素。在一个实施例中,设备驱动程序103可以基于运动分数对第一颜色和第二颜色进行加权,以依赖于运动分数实现第一颜色和第二颜色之间的平衡。结合图13所描述的技术可以应用到着色器采样位置可配置为匹配覆盖采样位置的场景。
图14是根据本发明的一个实施例的、用于基于检测到的运动实施时间或空间滤波的方法步骤的流程图。虽然结合图1-7D、图10和图12的系统描述方法步骤,但是本领域技术人员将理解配置为以任何顺序实施方法步骤的任何系统均在本发明的范围内。
如所示的,方法1400开始于步骤1402,在该步骤,设备驱动程序103 比较具有相似采样模式配置的先前帧。在步骤1404,设备驱动程序103确定是否有任何运动与像素相关联。如果检测到运动,那么方法1400行进到步骤1406,在该步骤,设备驱动程序103增加针对该像素的运动分数。在步骤1408,设备驱动程序103基于运动分数将像素与在采样移动的相反方向上的相邻像素相混合。在一个实施例中,在步骤1408所实施的混合操作包括基于运动分数的插值。
在步骤1404如果设备驱动程序103未检测到运动,那么方法1400行进到步骤1410,在该步骤,设备驱动程序103减少运动分数。在步骤1412,设备驱动程序103基于相反的(reverse)运动分数将像素与先前帧中的对应像素相混合。相反的运动分数可以是例如1-(运动分数)或1/(运动分数)。在一个实施例中,在步骤1412实施的混合操作包括基于相反的运动分数的插值。
可以应用方法1400来平衡相同帧内像素与相邻像素的混合以及连续帧中的对应像素的混合。在一些实施例中,当检测到运动时,设备驱动程序103还可以混合沿检测到的边缘的像素,以及混合补偿采样移动的像素。例如,设备驱动程序103可以实施方法1100的步骤1112结合实施方法1400 的步骤1408。结合图14所描述的技术可以应用于着色器采样位置可配置为匹配覆盖采样位置的场景。本领域技术人员将理解,上文所描述的各实施例可以以任何技术上可行的方式加以组合。
总之,光栅单元配置为针对给定帧内的相邻像素生成不同的采样模式。此外,光栅单元可以调整帧之间的采样模式。光栅单元包括索引单元,其选择采样模式表用于当前帧使用。对于给定像素,索引单元从所选择的采样模式表中提取采样模式。所提取的采样模式用来生成用于像素的覆盖信息。用于所有像素的覆盖信息随后用来生成图像。结果图像可随后被滤波以较少或移除由采样位置的改变所引起的伪影。
所公开的技术的至少一个优点是仅采用每像素N/M个采样位置,就可以跨M个帧生成N个覆盖样本,这产生具有看上去与每像素N个覆盖样本一致的质量的图像。因此,可以增强有效的多重采样模式,而不需要增加每像素覆盖采样位置的数目。因此,所公开的技术在典型地与常规多重采样技术相关联的开销上不会大幅增加。
已经以示例为目的呈现了各实施例的描述,但无意详尽或限制所公开的实施例。对本领域普通技术人员来说,在不脱离所描述的实施例的范围和精神的情况下,许多修改和变形将是显而易见的。
本实施例的方面可以具体化为系统、方法或计算机程序产品。因此,本公开的方面可以采用如下的形式:完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或结合在本文中总地称为“电路”、“模块”或“系统”的软件和硬件方面的实施例。此外,本公开的方面可以采用计算机程序产品的形式,其具体化在其上具有计算机可读程序代码的一个或多个计算机可读介质上。
可以利用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如但不限于:电、磁、光、电磁、红外、或半导体系统、装置、或设备、或前述的任意合适组合。计算机可读存储介质的更多具体示例(非详尽列表)将包括如下:具有一个或多个电线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除的可编程只读存储器(EPROM或闪存)、光纤、便携式压缩光盘只读存储器 (CD-ROM)、光存储设备、磁存储设备、或前述的任意合适组合。在本文档的上下文中,计算机可读存储介质可以是可包含或存储程序的有形介质,该程序用于由指令执行系统、装置或设备使用或连接指令执行系统、装置或设备而使用。
上文根据本公开的实施例参考方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的方面。将理解,流程图和/或框图的每个框、以及流程图和/或框图中的框的组合可以通过计算机程序指令来实现。可以将这些计算机程序指令提供到通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,这样经由计算机或其他可编程数据处理装置的处理器执行的指令使能流程图和/或框图的框中所指定的功能/行为的实现。这类处理器可以是但不限于:通用处理器、专用处理器、专用于应用的处理器、或现场可编程。
附图中的流程图和框图示出了根据本公开各实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。在这一点上,流程图或框图中的每个框可以表示模块、段、或部分代码,其包括用于实现指定逻辑功能的一个或多个可执行指令。还应注意,在一些可替代实现方案中,框中标注的功能可以不按照图中标注的顺序而出现。例如,接连示出的两个框可能实际上大体同时执行,或者框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图中的每个框以及框图和/ 或流程图中的框的组合可以通过实施指定功能或行为的基于专用硬件的系统加以实现,或通过专用硬件和计算机指令的结合加以实现。
虽然前述内容针对本公开的实施例,但是在不脱离本公开的基础范围的情况下,可以想出本公开的其他实施例和进一步的实施例,并且本公开的范围通过附随的权利要求来限定。
Claims (19)
1.一种图形子系统,包括:
第一采样模式表,所述第一采样模式表包括第一多个条目;以及
索引单元,所述索引单元配置为:
生成到所述第一采样模式表的第一索引,所述第一索引引用所述第一多个条目中所包括的条目的第一子集,以及
从所述第一采样模式表中提取所述条目的第一子集,其中所述条目的第一子集中所包括的第一条目指示第一帧的第一像素内的第一位置,第一样本将在所述第一位置处生成,其中所述索引单元进一步配置为确定与所述第一帧相关联的帧号,并基于所述帧号从多个采样模式表中选择所述第一采样模式表。
2.根据权利要求1所述的图形子系统,其中所述索引单元进一步配置为接收与所述第一像素相关联的一组坐标,并基于该组坐标的至少一部分生成所述第一索引。
3.根据权利要求2所述的图形子系统,其中该组坐标包括X坐标和Y坐标,并且所述索引单元进一步配置为:
从所述X坐标解析一个或多个最低有效位;
从所述Y坐标解析一个或多个最低有效位;以及
将来自所述X坐标的所述一个或多个最低有效位与来自所述Y坐标的所述一个或多个最低有效位组合以生成所述第一索引。
4.根据权利要求1所述的图形子系统,其中所述索引单元进一步配置为:
生成到所述第一采样模式表的第二索引,所述第二索引引用所述第一多个条目中所包括的条目的第二子集;以及
从所述第一采样模式表中提取所述条目的第二子集,其中所述条目的第二子集中所包括的第二条目指示所述第一帧的第二像素内的第二位置,第二样本将在所述第二位置处生成。
5.根据权利要求1所述的图形子系统,进一步包括第二采样模式表,所述第二采样模式表包括第二多个条目,其中所述索引单元进一步配置为:
生成到所述第二采样模式表的第二索引,所述第二索引引用所述第二多个条目中所包括的条目的第二子集;以及
从所述第二采样模式表中提取所述条目的第二子集,其中所述条目的第二子集中所包括的第二条目指示第二帧的第二像素内的第二位置,第二样本将在所述第二位置处生成。
6.根据权利要求5所述的图形子系统,其中所述第一像素驻留在所述第一帧内的第一组X-Y坐标处,并且所述第二像素驻留在所述第二帧内的所述第一组X-Y坐标处。
7.根据权利要求5所述的图形子系统,其中所述索引单元进一步配置为:
生成到所述第二采样模式表的第三索引,所述第三索引引用所述第二多个条目中所包括的条目的第三子集;以及
从所述第二采样模式表中提取所述条目的第三子集,其中所述条目的第三子集中所包括的第三条目指示所述第二帧的第三像素内的第三位置,第三样本将在所述第三位置处生成。
8.根据权利要求7所述的图形子系统,其中所述第二像素驻留在所述第二帧内的第二组X-Y坐标处,并且所述第三像素驻留在所述第二帧内的第一组X-Y坐标处。
9.根据权利要求1所述的图形子系统,其中所述第一样本包括覆盖样本,并且其中耦合到所述图形子系统的着色器单元配置为针对所述第一像素在所述第一位置处生成着色器样本并处理所述着色器样本,以生成用于所述第一像素的颜色值。
10.一种用于生成像素的样本的计算机实现的方法,所述方法包括:
生成到第一采样模式表的第一索引,所述第一采样模式表包括第一多个条目,其中所述第一索引引用所述第一多个条目中所包括的条目的第一子集;
从所述第一采样模式表中提取所述条目的第一子集,其中所述条目的第一子集中所包括的第一条目指示第一帧的第一像素内的第一位置,第一样本将在所述第一位置处生成;
确定与所述第一帧相关联的帧号;以及
基于所述帧号从多个采样模式表中选择所述第一采样模式表。
11.根据权利要求10所述的计算机实现的方法,进一步包括:
接收与所述第一像素相关联的一组坐标;以及
基于该组坐标的至少一部分生成所述第一索引。
12.根据权利要求11所述的计算机实现的方法,其中该组坐标包括X坐标和Y坐标,进一步包括:
从所述X坐标解析一个或多个最低有效位;
从所述Y坐标解析一个或多个最低有效位;以及
将来自所述X坐标的所述一个或多个最低有效位与来自所述Y坐标的所述一个或多个最低有效位组合以生成所述第一索引。
13.根据权利要求10所述的计算机实现的方法,进一步包括:
生成到所述第一采样模式表的第二索引,所述第二索引引用所述第一多个条目中所包括的条目的第二子集;以及
从所述第一采样模式表中提取所述条目的第二子集,其中所述条目的第二子集中所包括的第二条目指示所述第一帧的第二像素内的第二位置,第二样本将在所述第二位置处生成。
14.根据权利要求10所述的计算机实现的方法,进一步包括:
生成到第二采样模式表的第二索引,所述第二采样模式表包括第二多个条目,其中所述第二索引引用所述第二多个条目中所包括的条目的第二子集;以及
从所述第二采样模式表中提取所述条目的第二子集,其中所述条目的第二子集中所包括的第二条目指示第二帧的第二像素内的第二位置,第二样本将在所述第二位置处生成。
15.根据权利要求14所述的计算机实现的方法,其中所述第一像素驻留在所述第一帧内的第一组X-Y坐标处,并且所述第二像素驻留在所述第二帧内的所述第一组X-Y坐标处。
16.根据权利要求10所述的计算机实现的方法,进一步包括从软件应用接收所述多个采样模式表。
17.根据权利要求16所述的计算机实现的方法,其中所述软件应用包括在所述多个采样模式表中反映第一多帧抗锯齿模式的若干个采样模式表。
18.一种计算设备,包括:
图形子系统,包括:
第一采样模式表,所述第一采样模式表包括第一多个条目;
索引单元,所述索引单元配置为:
生成到所述第一采样模式表的第一索引,所述第一索引引用所述第一多个条目中所包括的条目的第一子集,以及
从所述第一采样模式表中提取所述条目的第一子集,其中所述条目的第一子集中所包括的第一条目指示第一帧的第一像素内的第一位置,第一覆盖样本将在所述第一位置处生成;
着色器单元,所述着色器单元耦合到所述图形子系统并且配置为:
针对所述第一像素在所述第一位置处生成第一着色器样本;以及
基于所述第一着色器样本生成用于所述第一像素的第一颜色值。
19.根据权利要求18所述的计算设备,其中所述第一像素驻留在所述第一帧内的第一组X-Y坐标处,并且第二像素驻留在第二帧内的所述第一组X-Y坐标处,并且其中所述着色器单元进一步配置为:
针对所述第二像素在第二位置处生成第二着色器样本;以及
基于所述第二着色器样本生成用于所述第二像素的第二颜色值。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462048751P | 2014-09-10 | 2014-09-10 | |
US62/048,751 | 2014-09-10 | ||
US14/846,737 US10096086B2 (en) | 2014-09-10 | 2015-09-05 | Enhanced anti-aliasing by varying sample patterns spatially and/or temporally |
US14/846,737 | 2015-09-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105405103A CN105405103A (zh) | 2016-03-16 |
CN105405103B true CN105405103B (zh) | 2018-08-24 |
Family
ID=55358661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510574341.4A Active CN105405103B (zh) | 2014-09-10 | 2015-09-10 | 通过在空间上和/或在时间上改变采样模式增强抗锯齿 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10096086B2 (zh) |
CN (1) | CN105405103B (zh) |
DE (1) | DE102015115232A1 (zh) |
TW (1) | TWI616846B (zh) |
Families Citing this family (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10147225B2 (en) * | 2016-04-01 | 2018-12-04 | Intel Corporation | Method and apparatus for sampling pattern generation for a ray tracing architecture |
CA2949383C (en) * | 2016-11-22 | 2023-09-05 | Square Enix, Ltd. | Image processing method and computer-readable medium |
TWI612800B (zh) | 2016-12-12 | 2018-01-21 | 瑞昱半導體股份有限公司 | 基於固定長度編碼之影像壓縮方法及裝置 |
CN108206955B (zh) * | 2016-12-19 | 2020-06-12 | 瑞昱半导体股份有限公司 | 基于固定长度编码的影像压缩方法及装置 |
US10929685B2 (en) | 2017-03-02 | 2021-02-23 | Ricoh Company, Ltd. | Analysis of operator behavior focalized on machine events |
US10956494B2 (en) | 2017-03-02 | 2021-03-23 | Ricoh Company, Ltd. | Behavioral measurements in a video stream focalized on keywords |
US10708635B2 (en) | 2017-03-02 | 2020-07-07 | Ricoh Company, Ltd. | Subsumption architecture for processing fragments of a video stream |
US10943122B2 (en) | 2017-03-02 | 2021-03-09 | Ricoh Company, Ltd. | Focalized behavioral measurements in a video stream |
US10949463B2 (en) | 2017-03-02 | 2021-03-16 | Ricoh Company, Ltd. | Behavioral measurements in a video stream focalized on keywords |
US10719552B2 (en) | 2017-03-02 | 2020-07-21 | Ricoh Co., Ltd. | Focalized summarizations of a video stream |
US10956773B2 (en) | 2017-03-02 | 2021-03-23 | Ricoh Company, Ltd. | Computation of audience metrics focalized on displayed content |
US10956495B2 (en) | 2017-03-02 | 2021-03-23 | Ricoh Company, Ltd. | Analysis of operator behavior focalized on machine events |
US10720182B2 (en) * | 2017-03-02 | 2020-07-21 | Ricoh Company, Ltd. | Decomposition of a video stream into salient fragments |
US10949705B2 (en) | 2017-03-02 | 2021-03-16 | Ricoh Company, Ltd. | Focalized behavioral measurements in a video stream |
US10713391B2 (en) | 2017-03-02 | 2020-07-14 | Ricoh Co., Ltd. | Tamper protection and video source identification for video processing pipeline |
US10929707B2 (en) | 2017-03-02 | 2021-02-23 | Ricoh Company, Ltd. | Computation of audience metrics focalized on displayed content |
US10424097B2 (en) | 2017-04-01 | 2019-09-24 | Intel Corporation | Predictive viewport renderer and foveated color compressor |
US10395623B2 (en) | 2017-04-01 | 2019-08-27 | Intel Corporation | Handling surface level coherency without reliance on fencing |
US10242494B2 (en) | 2017-04-01 | 2019-03-26 | Intel Corporation | Conditional shader for graphics |
US10706612B2 (en) | 2017-04-01 | 2020-07-07 | Intel Corporation | Tile-based immediate mode rendering with early hierarchical-z |
US10572258B2 (en) | 2017-04-01 | 2020-02-25 | Intel Corporation | Transitionary pre-emption for virtual reality related contexts |
US10628907B2 (en) | 2017-04-01 | 2020-04-21 | Intel Corporation | Multi-resolution smoothing |
US10089230B1 (en) | 2017-04-01 | 2018-10-02 | Intel Corporation | Resource-specific flushes and invalidations of cache and memory fabric structures |
US10591971B2 (en) | 2017-04-01 | 2020-03-17 | Intel Corporation | Adaptive multi-resolution for graphics |
US10489915B2 (en) | 2017-04-01 | 2019-11-26 | Intel Corporation | Decouple multi-layer render fequency |
US10223773B2 (en) | 2017-04-01 | 2019-03-05 | Intel Corporation | On demand MSAA resolve during lens correction and/or other post-processing phases |
US10572966B2 (en) | 2017-04-01 | 2020-02-25 | Intel Corporation | Write out stage generated bounding volumes |
US10152822B2 (en) | 2017-04-01 | 2018-12-11 | Intel Corporation | Motion biased foveated renderer |
US10157493B2 (en) | 2017-04-01 | 2018-12-18 | Intel Corporation | Adaptive multisampling based on vertex attributes |
US10453241B2 (en) | 2017-04-01 | 2019-10-22 | Intel Corporation | Multi-resolution image plane rendering within an improved graphics processor microarchitecture |
US10152632B2 (en) | 2017-04-10 | 2018-12-11 | Intel Corporation | Dynamic brightness and resolution control in virtual environments |
US10235794B2 (en) | 2017-04-10 | 2019-03-19 | Intel Corporation | Multi-sample stereo renderer |
US10204393B2 (en) | 2017-04-10 | 2019-02-12 | Intel Corporation | Pre-pass surface analysis to achieve adaptive anti-aliasing modes |
US11030713B2 (en) | 2017-04-10 | 2021-06-08 | Intel Corporation | Extended local memory including compressed on-chip vertex data |
US10460415B2 (en) | 2017-04-10 | 2019-10-29 | Intel Corporation | Contextual configuration adjuster for graphics |
US10497340B2 (en) | 2017-04-10 | 2019-12-03 | Intel Corporation | Beam scanning image processing within an improved graphics processor microarchitecture |
US10109078B1 (en) | 2017-04-10 | 2018-10-23 | Intel Corporation | Controlling coarse pixel size from a stencil buffer |
US10373365B2 (en) | 2017-04-10 | 2019-08-06 | Intel Corporation | Topology shader technology |
US10319064B2 (en) | 2017-04-10 | 2019-06-11 | Intel Corporation | Graphics anti-aliasing resolve with stencil mask |
US10725929B2 (en) | 2017-04-10 | 2020-07-28 | Intel Corporation | Graphics memory extended with nonvolatile memory |
US10235735B2 (en) | 2017-04-10 | 2019-03-19 | Intel Corporation | Graphics processor with tiled compute kernels |
US11106274B2 (en) | 2017-04-10 | 2021-08-31 | Intel Corporation | Adjusting graphics rendering based on facial expression |
US10204394B2 (en) | 2017-04-10 | 2019-02-12 | Intel Corporation | Multi-frame renderer |
US10242486B2 (en) | 2017-04-17 | 2019-03-26 | Intel Corporation | Augmented reality and virtual reality feedback enhancement system, apparatus and method |
US10719902B2 (en) | 2017-04-17 | 2020-07-21 | Intel Corporation | Thread serialization, distributed parallel programming, and runtime extensions of parallel computing platform |
US10401954B2 (en) | 2017-04-17 | 2019-09-03 | Intel Corporation | Sensory enhanced augmented reality and virtual reality device |
US10672175B2 (en) | 2017-04-17 | 2020-06-02 | Intel Corporation | Order independent asynchronous compute and streaming for graphics |
US10467796B2 (en) | 2017-04-17 | 2019-11-05 | Intel Corporation | Graphics system with additional context |
US10452552B2 (en) | 2017-04-17 | 2019-10-22 | Intel Corporation | Memory-based dependency tracking and cache pre-fetch hardware for multi-resolution shading |
US10192351B2 (en) | 2017-04-17 | 2019-01-29 | Intel Corporation | Anti-aliasing adaptive shader with pixel tile coverage raster rule system, apparatus and method |
US10846918B2 (en) | 2017-04-17 | 2020-11-24 | Intel Corporation | Stereoscopic rendering with compression |
US10521876B2 (en) | 2017-04-17 | 2019-12-31 | Intel Corporation | Deferred geometry rasterization technology |
US10896657B2 (en) | 2017-04-17 | 2021-01-19 | Intel Corporation | Graphics with adaptive temporal adjustments |
US10347039B2 (en) | 2017-04-17 | 2019-07-09 | Intel Corporation | Physically based shading via fixed-functionality shader libraries |
US10430147B2 (en) | 2017-04-17 | 2019-10-01 | Intel Corporation | Collaborative multi-user virtual reality |
US10290141B2 (en) | 2017-04-17 | 2019-05-14 | Intel Corporation | Cloud based distributed single game calculation of shared computational work for multiple cloud gaming client devices |
US10728492B2 (en) | 2017-04-24 | 2020-07-28 | Intel Corporation | Synergistic temporal anti-aliasing and coarse pixel shading technology |
US10643374B2 (en) | 2017-04-24 | 2020-05-05 | Intel Corporation | Positional only shading pipeline (POSH) geometry data processing with coarse Z buffer |
US10251011B2 (en) | 2017-04-24 | 2019-04-02 | Intel Corporation | Augmented reality virtual reality ray tracing sensory enhancement system, apparatus and method |
US10347357B2 (en) | 2017-04-24 | 2019-07-09 | Intel Corporation | Post-packaging environment recovery of graphics on-die memory |
US10402933B2 (en) | 2017-04-24 | 2019-09-03 | Intel Corporation | Adaptive smart grid-client device computation distribution with grid guide optimization |
US10109039B1 (en) | 2017-04-24 | 2018-10-23 | Intel Corporation | Display engine surface blending and adaptive texel to pixel ratio sample rate system, apparatus and method |
US10242496B2 (en) | 2017-04-24 | 2019-03-26 | Intel Corporation | Adaptive sub-patches system, apparatus and method |
US10755383B2 (en) * | 2017-09-29 | 2020-08-25 | Apple Inc. | Multi-space rendering with configurable transformation parameters |
US10991079B2 (en) * | 2018-08-14 | 2021-04-27 | Nvidia Corporation | Using previously rendered scene frames to reduce pixel noise |
TWI717797B (zh) * | 2019-08-05 | 2021-02-01 | 曹文峰 | 圖騰形成系統、方法及其設備、產品與電腦可讀取儲存裝置 |
DE102021103367A1 (de) | 2021-02-12 | 2022-08-18 | Iav Gmbh Ingenieurgesellschaft Auto Und Verkehr | Erzeugung realistischer bildbasierter Daten zum Entwickeln und Testen von Fahrerassistenzsystemen |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1748229A (zh) * | 2002-12-20 | 2006-03-15 | 艾利森电话股份有限公司 | 低成本超级采样光栅化 |
CN1809840A (zh) * | 2003-05-22 | 2006-07-26 | Lm爱立信电话有限公司 | 用于图像数据的超采样光栅化的方法和系统 |
EP1792281A1 (en) * | 2004-09-20 | 2007-06-06 | Telefonaktiebolaget LM Ericsson (publ) | Method and system for anti-aliasing by pixel sampling |
CN101061517A (zh) * | 2004-09-20 | 2007-10-24 | 艾利森电话股份有限公司 | 通过像素采样抗锯齿的方法和系统 |
CN101620725A (zh) * | 2008-07-03 | 2010-01-06 | 辉达公司 | 混合多重采样/超采样抗锯齿 |
US8731254B2 (en) * | 2008-11-07 | 2014-05-20 | Nihon Kohden Corporation | Biological signal drawing apparatus and biological signal drawing method |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000033256A1 (en) | 1998-11-30 | 2000-06-08 | Quantum3D, Inc. | Pixel offset antialiasing |
US6999100B1 (en) | 2000-08-23 | 2006-02-14 | Nintendo Co., Ltd. | Method and apparatus for anti-aliasing in a graphics system |
US6720975B1 (en) | 2001-10-17 | 2004-04-13 | Nvidia Corporation | Super-sampling and multi-sampling system and method for antialiasing |
US6894701B2 (en) | 2002-05-14 | 2005-05-17 | Microsoft Corporation | Type size dependent anti-aliasing in sub-pixel precision rendering systems |
WO2004057538A2 (en) | 2002-12-20 | 2004-07-08 | Telefonaktiebolaget Lm Ericsson (Publ) | Low-cost supersampling rasterization |
US7446780B1 (en) | 2003-08-29 | 2008-11-04 | Nvidia Corporation | Temporal antialiasing in a multisampling graphics pipeline |
US7868901B1 (en) * | 2004-11-02 | 2011-01-11 | Nvidia Corporation | Method and system for reducing memory bandwidth requirements in an anti-aliasing operation |
US7612783B2 (en) * | 2006-05-08 | 2009-11-03 | Ati Technologies Inc. | Advanced anti-aliasing with multiple graphics processing units |
US8587581B2 (en) * | 2009-10-15 | 2013-11-19 | Nvidia Corporation | Order-preserving distributed rasterizer |
-
2015
- 2015-09-05 US US14/846,737 patent/US10096086B2/en active Active
- 2015-09-09 TW TW104129785A patent/TWI616846B/zh active
- 2015-09-10 CN CN201510574341.4A patent/CN105405103B/zh active Active
- 2015-09-10 DE DE102015115232.0A patent/DE102015115232A1/de active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1748229A (zh) * | 2002-12-20 | 2006-03-15 | 艾利森电话股份有限公司 | 低成本超级采样光栅化 |
CN1809840A (zh) * | 2003-05-22 | 2006-07-26 | Lm爱立信电话有限公司 | 用于图像数据的超采样光栅化的方法和系统 |
EP1792281A1 (en) * | 2004-09-20 | 2007-06-06 | Telefonaktiebolaget LM Ericsson (publ) | Method and system for anti-aliasing by pixel sampling |
CN101061517A (zh) * | 2004-09-20 | 2007-10-24 | 艾利森电话股份有限公司 | 通过像素采样抗锯齿的方法和系统 |
CN101620725A (zh) * | 2008-07-03 | 2010-01-06 | 辉达公司 | 混合多重采样/超采样抗锯齿 |
US8731254B2 (en) * | 2008-11-07 | 2014-05-20 | Nihon Kohden Corporation | Biological signal drawing apparatus and biological signal drawing method |
Also Published As
Publication number | Publication date |
---|---|
TW201621810A (zh) | 2016-06-16 |
US10096086B2 (en) | 2018-10-09 |
DE102015115232A1 (de) | 2016-03-10 |
CN105405103A (zh) | 2016-03-16 |
TWI616846B (zh) | 2018-03-01 |
US20160071242A1 (en) | 2016-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105405103B (zh) | 通过在空间上和/或在时间上改变采样模式增强抗锯齿 | |
US10957078B2 (en) | Enhanced anti-aliasing by varying sample patterns spatially and/or temporally | |
CN106204712B (zh) | 分段线性不规则光栅化 | |
US10229529B2 (en) | System, method and computer program product for implementing anti-aliasing operations using a programmable sample pattern table | |
US9547931B2 (en) | System, method, and computer program product for pre-filtered anti-aliasing with deferred shading | |
US10120187B2 (en) | Sub-frame scanout for latency reduction in virtual reality applications | |
US9697641B2 (en) | Alpha-to-coverage using virtual samples | |
CN109978751A (zh) | 多gpu帧渲染 | |
CN105321143A (zh) | 来自片段着色程序的采样掩膜的控制 | |
US10055883B2 (en) | Frustum tests for sub-pixel shadows | |
CN110400367A (zh) | 降低渲染延迟的系统和方法 | |
CN107392836B (zh) | 使用图形处理管线实现的立体多投影 | |
US10395624B2 (en) | Adjusting an angular sampling rate during rendering utilizing gaze information | |
CN112912823A (zh) | 生成和修改增强现实或虚拟现实场景中对象的表示 | |
CN110390714A (zh) | 用于渲染凹形效果的系统、方法和非暂时性存储介质 | |
US9905037B2 (en) | System, method, and computer program product for rejecting small primitives | |
CN110390711A (zh) | 基于分层光线投影的计算机图形 | |
US9721381B2 (en) | System, method, and computer program product for discarding pixel samples | |
US11638028B2 (en) | Adaptive pixel sampling order for temporally dense rendering | |
US20180158233A1 (en) | System and method for generating temporally stable hashed values | |
US11120609B2 (en) | Reconstruction for temporally dense ray trace rendering | |
US11997306B2 (en) | Adaptive pixel sampling order for temporally dense rendering | |
KR20120090354A (ko) | 2차원 벡터 그래픽스를 위한 에지 관리 유닛과 그것을 포함하는 그래픽 처리장치 및 그 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |