CN113450445A - 临时密实渲染的自适应像素采样顺序 - Google Patents

临时密实渲染的自适应像素采样顺序 Download PDF

Info

Publication number
CN113450445A
CN113450445A CN202011049896.4A CN202011049896A CN113450445A CN 113450445 A CN113450445 A CN 113450445A CN 202011049896 A CN202011049896 A CN 202011049896A CN 113450445 A CN113450445 A CN 113450445A
Authority
CN
China
Prior art keywords
tile
sampling order
pixel
sampling
motion vector
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011049896.4A
Other languages
English (en)
Inventor
J·P·安德森
J·尼尔森
T·G·阿肯宁·莫勒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN113450445A publication Critical patent/CN113450445A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/33Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the spatial domain
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/61Scene description

Abstract

本申请涉及临时密实渲染的自适应像素采样顺序。一种为图块中的像素的光线跟踪动态地选择第一采样顺序和第二采样顺序中之一的方法,其中选择是基于图块的运动矢量来进行的。采样顺序可以是领结图案或沙漏图案。

Description

临时密实渲染的自适应像素采样顺序
背景技术
对于计算机生成图像的光线跟踪已成为电影中使用的主要算法,并且对于诸如虚拟现实之类的实时应用程序越来越流行。尽管光线跟踪对于实时应用程序变得越来越可访问,但仍需要更高的性能,尤其在性能关键型应用程序中使用是要达到高刷新率。
无帧渲染是一种为每个光线或每个样本分配唯一时间的技术。尽管无帧渲染在提供世界模拟的连续更新方面表现良好,但它需要为每个采样运行世界模拟。一种更有效的解决方案是一种方法,例如交错采样,以覆盖一些帧上所需的空间采样,每个帧都使用来自伪随机位置的采样。这些样本使用累积缓冲进行合并,以生成最终的帧以供显示。这种方法的一种变体称为时间性抗混叠(TAA),它使用规则的子像素偏移并在许多帧上累积采样。TAA使用各种启发式方法(通常针对每个应用程序进行调整)来减少模糊,重影和其他伪像。
附图说明
为了容易识别对任何特定元素或动作的讨论,附图标记中的一个或更多个最有效数字是指首次引入该元件的附图标记。
图1描绘了根据一个实施例的像素布局100。
图2描绘了根据一个实施例的帧生成管线200。
图3描绘了根据一个实施例的每图块采样顺序300。
图4描绘了根据一个实施例的反射光线跟踪400。
图5描绘了根据一个实施例的在图块(暗正方形)中的给定像素(实心点)的方差采样(空心圆)期间使用的像素500。
图6描绘了根据一个实施例的场景分割600。
图7描绘了根据一个实施例的像素排序算法700。
图8描绘了根据另一个实施例的像素排序算法800。
图9描绘了根据又一个实施例的像素排序算法900。
图10描绘了根据又一个实施例的像素排序算法1000。
图11描绘了根据一个实施例的并行处理单元1100。
图12描绘了根据一个实施例的通用处理集群1200。
图13描绘了根据一个实施例的存储器分区单元1300。
图14描绘了根据一个实施例的流式多处理器1400。
图15描绘了根据一个实施例的处理系统1500。
图16描绘了根据另一个实施例的示例性处理系统1600。
图17描绘了根据一个实施例的图形处理管线1700。
具体实施方式
本公开参考了包括光线跟踪(ray tracing),像素采样,超级采样(supersampling),显示和渲染的几种技术。光线跟踪是指一类众所周知的算法,该算法将来自视点的光线通过像素引导到要在机器显示器上显示的场景中。场景的描述称为“显示”场景。在显示场景之前,先渲染场景,这意味着在机器存储器(例如显示缓冲存储器)中生成场景的像素化图像。渲染的图像每个像素可能使用多于一条的光线,通常称为超级采样。“帧”或“视频帧”是多个子帧上的像素的完整集合,其中“子帧”是指完整帧中的像素子集,这些是根据渲染算法的迭代进行采样的。“图块(tile)”是一帧中像素的子集,而“块(block)”是一组多个图块。
一种提高光线跟踪图形渲染速度的方法是降低渲染图像上的空间采样率,例如,在每个渲染帧中的2x2像素的每个图块中仅重新渲染一个像素,同时利用提高的帧速率。例如,代替以全分辨率渲染每个帧,渲染可以仅更新每帧像素的四分之一,因此可以以高达4倍的渲染速度执行。可以将其通用化为任意大小的图块,例如4x4像素。执行相同数量的渲染工作,但在空间上稀疏(分布在更多帧上),在时间上密集(以更快的速率生成帧)。在一些实施例中,可以利用本领域中称为“Whitted”光线跟踪的技术。Whitted光线跟踪可以生成反射,并且比路径跟踪和其他方法的计算复杂度低。
以下描述利用在每个渲染周期的四个帧上对每个渲染帧中的像素的每个2x2图块中的一个像素位置进行采样的示例。然而,该技术可以被通用化为在每帧每个W×H图块中采样N个像素。在图1中的像素布局100的块102中,在第一帧中对每个图块的位置0的像素进行采样,然后在随后的帧中对位置1的像素进行采样,依此类推,从而得到一帧,其中所有像素在四次迭代之后都被采样了。每个图块的像素排序不需要遵循图1所示的顺序。块102中的四个2×2图块的每个或一些也可能已经以与其他图块不同的顺序被采样,但是为了简化示例,假设每个图块具有图1的块102中所示的顺序。
在四个迭代的每个迭代中采样的所有像素的集合称为子帧。因此,在四个迭代中创建了四个子帧。每个子帧本身不包含足够的信息来重构所需质量的全分辨率帧。因此,为了组成新的全分辨率帧,当前子帧可以用来自先前子帧(例如,多达十五个先前计算出的子帧)的像素以及先前的全分辨率帧来补充。
接下来考虑图1中描绘的8×4=32像素的块104。在2x2像素图块中为每个像素分配0到3之间的数字。代替传统方法,不是每帧渲染到所有8x4像素,而是以i子帧增量执行渲染,其中(i mod 4)==0。也就是说,首先将0号像素渲染到第一子帧,然后将1号像素渲染到第二子帧,然后将2号像素渲染到第三子帧,然后将3号像素渲染到第四子帧。之后,通过再次渲染编号为0的像素开始,依此类推。在四帧之后获得全分辨率帧。
将相同的采样顺序应用于每个图块很容易实现,但通常可能会导致明显的视觉影响,例如闪烁。可以为每个迭代将每个图块采样顺序随机化,但是这可能导致即使在四(更通用的是,i)个帧之后仍未渲染某些像素的情况。为了减轻这些缺点,可以基于每个帧内的像素的运动来动态地改变每个图块的采样模式。
在图2中以高级别描绘了帧生成管线200。管线利用子帧的光线跟踪和运动矢量生成来创建具有降低的锯齿线和其他混叠效果的全分辨率输出帧。分析运动矢量202,缓冲的子帧204和先前的完整帧206以将像素分类为静态或动态以及新或旧,并且基于这些输入和分类来生成新的完整帧208。稍后将详细描述将像素的分类为新或旧以及动态或静态。在检索子帧像素的运动矢量的同时,以低于最终帧的分辨率渲染子帧。然后,将子帧与先前渲染的子帧以及先前渲染的完整帧一起用于合成要渲染的最终帧。对于要在最终帧中渲染的每个像素,帧生成管线200确定其内容是静态还是动态,以及它是对应于最近被光线跟踪的像素(新像素)之一还是未被光线跟踪的像素(旧像素)之一。基于该确定,如中心块所示,使用了不同的合成方法,可能使用先前渲染的全帧作为输入。缓冲区中的黑色数字表示在此帧期间更新的值,而灰色数字表示从先前帧保留的信息。最后,将当前渲染的帧复制到先前完整帧的缓冲区。
图3中描绘了像素排序和每像素采样模式300。WxH尺寸的图块中的采样顺序可以从在不同情况下提供积极效果的任何所需模式中选择。可以根据运动矢量和像素邻域来确定图案的选择。在一个实施例中,在四个子帧上,以沙漏像素采样顺序302或领结像素采样顺序1104对每个2x2图块中的像素进行采样。基于附近像素的运动动态地确定特定的图块选择使用哪个顺序。动态地选择每个图块的采样顺序会对生成的帧的感知视觉质量产生积极影响。稍后将详细说明选择每图块采样顺序的算法。
在一个实施例中,每四个子帧(通常,N个子帧,其中N是每图块采样顺序中的像素样本的数量)做出一次关于对每个图块使用哪个顺序的决定。因此,在更新每图块采样顺序以渲染下一帧之前,对整个帧进行采样。图3中右边的图案是在一个实施例中每个像素使用的采样模式。静态抖动图案306可以用于对被分类为静态的像素进行超级采样,而重心图案308(一个或更多个光线优先指向超级采样区域的中心)用于分类为动态的像素。
对于静态像素,抖动模式对于多个(例如,四个或通常为N个)子帧可以保持恒定。每当相机视点改变或检测到运动时,像素的平均值就会重置并采用重新投影。对于动态像素,将同时禁用平均和抖动。然后,该过程将仅在像素的中心区域进行采样,以避免观看者体现不流畅的图像。光线跟踪所固有的灵活性使得可以在每个像素的基础上改变采样模式。
可以使用移动窗口平均方法来减少内容是静态的像素的混叠。可以通过平均样本数量来确定静态像素的颜色。平均的实际样本数量可能取决于像素保持静止多长时间(多少帧)。这种方法有效地导致了4x(通常为ix)的超级采样抗锯齿混叠。将窗口长度限制为四个子帧将限制平均时间中累积的时间信息量,从而可以使逼真的场景渲染具有随时间变化的照明。
在一个实施例中,如果在像素的邻域中最长的屏幕空间(在显示的帧的坐标帧中)运动矢量M为非零,则将像素分类为动态。选择该邻域作为像素所在的图块以及周围的八个图块。这九个图块中的每一个都有对应于图块新像素的运动矢量。如果这九个运动矢量中最长的为非零,则像素被分类为动态。该分类功能改善了对包含多个运动特征的图像区域中运动的检测。如果像素包含在最近渲染的子帧中,则将其分类为新。新且动态的像素被存储在帧缓冲区中。非新(因此被归类为旧)且也为动态的像素被重新投影并固定颜色。最长的运动矢量M可用于识别旧的动态像素在先前完整帧中的位置,然后通过双线性滤波器从该位置对像素进行重新采样。可以应用方差采样或另一种技术(例如,诸如时间抗混叠YCoCg框)来计算将重新投影的像素钳位到的色彩空间中的轴对齐的包围盒。包围盒可以基于也包括在最近采样的子帧中的当前像素的直接邻居。
图5描绘了在图块(暗正方形)中的给定像素(实心点)的方差采样(空心圆)期间使用的像素500。从最近渲染的子帧中检索绿色(浅阴影)区域中的像素。映射A描绘了一种情况,其中像素的所有直接邻居都用于计算轴对齐的包围盒。映射B描绘了一种情况,其中来自最近渲染的子帧的3x3区域的像素用于计算轴对齐的包围盒。映射C,D和E描述了仅使用最近渲染的立即相邻像素来计算包围盒的情况。这些都可以在一个实施例中使用。
在方差采样中使用所有直接邻居可能会以重新使用旧信息为代价来改善估计,这可能会使结果降级。使用最新子帧的3x3采样区域可能会导致最终帧出现条纹。映射C,D和E的使用导致在方差采样中使用的更少的像素(两个或四个,而不是九个)。这消除了使用映射A和B时看到的许多条纹。
每个图块的采样顺序的选择(参见图3),例如沙漏或领结,都会对如何感知结果显示顺序产生显著影响。选择正确的顺序可以减少时空混叠效应,例如闪烁和爬行像素。可以利用算法功能g来确定基于每个图块的子帧序列的每个图块的像素顺序。在一个实施例中,函数g输入图块的运动m=(mx,my)和像素内容P。在另一个实施例中,对g的输入限于图块的运动。公式1表示以下方法:
Figure BDA0002709221330000051
可以以与确定图块的内容是静态还是动态相同的方式确定图块的运动特性。函数g^计算运动矢量的长度l,去掉其整数部分并得出:
Figure BDA0002709221330000052
删除整数部分是因为基于绝对运动本身的决定可能会证明是不够的。
函数g∧确定相对于x轴的运动方向α为:
α=atan2(my,mx)
公式3
函数g∧可以用运动矢量的长度和角度表示为:
Figure BDA0002709221330000061
对于没有任何垂直分量的水平运动,即,当d=0时,g∧可以实现以下针对图块采样顺序的选择标准:
Figure BDA0002709221330000062
因此,函数g∧基于产生良好视觉体验的像素顺序决定,有效地将场景划分为不同区域。在图6的场景分割600中以图形方式描绘了该分割。当相机移动且对所有图块应用沙漏顺序时,酒吧上的啤酒水龙头会闪烁,但货架上的眼镜和瓶子不会闪烁。如果始终应用领结排序,则情况将相反。使用函数g∧动态选择的每图块顺序使场景的那些部分具有更少的此类伪像。函数g∧还选择适当的顺序来描绘场景的椅子和前景元素。
对于没有任何水平分量的垂直运动,
Figure BDA0002709221330000063
g∧可以为图块采样顺序实现以下选择标准:
Figure BDA0002709221330000064
图7至图10描绘了关于如何基于运动矢量长度和运动角度d的分数部分(lf)来选择每图块像素顺序的不同替代方案。黄色表示应选择沙漏图案,蓝色表示领结图案,绿色表示两者之间的选择是随机的。可以利用图10中描绘的替代方案。
一种选择是基于运动矢量的x和y分量中的哪个占主导地位,选择领结顺序或沙漏顺序。该选择方法在图7的像素排序算法700中可视化。对于该选择方法以及其他选择方法,函数g∧在附图中以时间间隔表示
Figure BDA0002709221330000065
具有对称性以覆盖其余可能的运动角度。图7中描述的方法,即,基于主要运动方向选择每图块样本顺序可能并不令人满意。取而代之的是,可以如图8和图9所示应用更平滑的过渡,都显示了两个解在α=0和α=π/2时的连续过渡。
图8中描绘的像素排序算法800在以下情况下可能更可取:
Figure BDA0002709221330000071
Figure BDA0002709221330000072
图9中描绘的像素排序算法900在以下情况下可能会提供最佳结果:
Figure BDA0002709221330000073
Figure BDA0002709221330000074
在这些间隔之间,即,针对条件:
Figure BDA0002709221330000075
Figure BDA0002709221330000076
像素排序算法800和像素排序算法900可能导致场景的不同部分出现明显的混叠。为了减轻这种情况,可以将该间隔中的模式选择随机化。因此,图10所示的动态像素排序算法1000可以使用。常数(例如,π/40)可通过实现方式或通过对视频或视频的特定帧的图像内容和/或运动行为进行概要分析来改变。
本文中公开的算法和技术(例如,帧生成管线200和/或其方面,像素排序算法700,像素排序算法800,像素排序算法900和/或像素排序算法1000)可以通过计算设备使用一个或更多个图形处理单元(GPU)和/或通用数据处理器(例如“中央处理单元或CPU”)来执行。现在描述示例性架构,其可以被配置为在这样的设备上执行本文公开的技术。
以下描述可能使用某些缩写词和缩写,如下所示:
·“DPC”是指“数据处理集群”;
·“GPC”是指“通用处理集群”;
·“I/O”是指“输入/输出”;
·“L1高速缓存”是指“一级高速缓存”;
·“L2高速缓存”是指“二级高速缓存”;
·“LSU”是指“加载/存储单元”;
·“MMU”是指“存储器管理单元”;
·“MPC”是指“M管线控制器”;
·“PPU”是指“并行处理单元”;
·“PROP”是指“光栅前操作单元”;
·“ROP”是指“光栅操作”;
·“SFU”是指“特殊功能单元”;
·“SM”是指“流式多处理器”;
·“视口SCC”是指“视口缩放,剔除和剪辑”;
·“WDX”是指“工作分配交叉开关”;以及
·“XBar”是指“交叉开关”。
并行处理单元
图11描绘了根据一个实施例的并行处理单元1100。在一个实施例中,并行处理单元1100是在一个或更多个集成电路器件上实现的多线程处理器。并行处理单元1100是设计用于并行处理许多线程的延迟隐藏体系架构。线程(即,执行线程)是被配置为由并行处理单元1100执行的指令集的实例。在一个实施例中,并行处理单元1100是图形处理单元(GPU),其被配置为实现用于处理三维(3D)图形数据的图形渲染管线,以便生成用于在显示装置(诸如液晶显示(LCD)设备)上显示的二维(2D)图像数据。在其他实施例中,并行处理单元1100可以用于执行通用计算。尽管为了说明的目的本文提供了一个示例性并行处理器,但应特别指出的是,该处理器仅出于说明目的进行阐述,并且可使用任何处理器来补充和/或替代该处理器。
一个或更多个并行处理单元1100模块可以被配置为加速数千个高性能计算(HPC)、数据中心和机器学习应用。并行处理单元1100可被配置为加速众多深度学习系统和应用,包括自动驾驶汽车平台、深度学习、高精度语音、图像和文本识别系统、智能视频分析、分子模拟、药物研发、疾病诊断、天气预报、大数据分析、天文学、分子动力学模拟、金融建模、机器人技术、工厂自动化、实时语言翻译、在线搜索优化和个性化用户推荐,等等。
如图11所示,并行处理单元1100包括I/O单元1106、前端单元1110、调度器单元1112、工作分配单元1114、集线器1116、交叉开关1118、一个或更多个通用处理集群1200以及一个或更多个存储器分区单元1300模块。并行处理单元1100可以经由一个或更多个高速NVLink 1108互连连接到主机处理器或其他并行处理单元1100。并行处理单元1100可以经由互连1102连接到主机处理器或其他外围设备。并行处理单元1100还可以连接到包括多个存储器设备1104的本地存储器。在一个实施例中,本地存储器可以包括多个动态随机存取存储器(DRAM)设备。DRAM设备可以被配置为高带宽存储器(HBM)子系统,其中多个DRAM裸晶(die)堆叠在每个设备内。存储器1104可以包括用于配置并行处理单元1100以执行本文公开的技术的各方面的逻辑。
NVLink 1108互连使得系统能够扩展并且包括与一个或更多个CPU结合的一个或更多个并行处理单元1100模块,支持并行处理单元1100模块和CPU之间的高速缓存一致性,以及CPU主控。数据和/或命令可以由NVLink 1108通过集线器1116发送到并行处理单元1100的其他单元或从其发送,例如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。结合图15更详细地描述NVLink 1108。
I/O单元1106被配置为通过互连1102从主机处理器(未示出)发送和接收通信(例如,命令、数据等)。I/O单元1106可以经由互连1102直接与主机处理器通信,或通过一个或更多个中间设备(诸如内存桥)与主机处理器通信。在一个实施例中,I/O单元1106可以经由互连1102与一个或更多个其他处理器(例如,一个或更多个并行处理单元1100模块)通信。在一个实施例中,I/O单元1106实现外围组件互连高速(PCIe)接口,用于通过PCIe总线进行通信,并且互连1102是PCIe总线。在替代的实施例中,I/O单元1106可以实现其他类型的已知接口,用于与外部设备进行通信。
I/O单元1106对经由互连1102接收的数据包进行解码。在一个实施例中,数据包表示被配置为使并行处理单元1100执行各种操作的命令。I/O单元1106按照命令指定将解码的命令发送到并行处理单元1100的各种其他单元。例如,一些命令可以被发送到前端单元1110。其他命令可以被发送到集线器1116或并行处理单元1100的其他单元,诸如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。换句话说,I/O单元1106被配置为在并行处理单元1100的各种逻辑单元之间和之中路由通信。
在一个实施例中,由主机处理器执行的程序在缓冲区中对命令流进行编码,该缓冲区向并行处理单元1100提供工作量用于处理。工作量可以包括要由那些指令处理的许多指令和数据。缓冲区是存储器中可由主机处理器和并行处理单元1100两者访问(例如,读/写)的区域。例如,I/O单元1106可以被配置为经由通过互连1102传输的存储器请求访问连接到互连1102的系统存储器中的缓冲区。在一个实施例中,主机处理器将命令流写入缓冲区,然后向并行处理单元1100发送指向命令流开始的指针。前端单元1110接收指向一个或更多个命令流的指针。前端单元1110管理一个或更多个流,从流读取命令并将命令转发到并行处理单元1100的各个单元。
前端单元1110耦合到调度器单元1112,其配置各种通用处理集群1200模块以处理由一个或更多个流定义的任务。调度器单元1112被配置为跟踪与由调度器单元1112管理的各种任务相关的状态信息。状态可以指示任务被指派给哪个通用处理集群1200,该任务是活动的还是不活动的,与该任务相关联的优先级等等。调度器单元1112管理一个或更多个通用处理集群1200模块上的多个任务的执行。
调度器单元1112耦合到工作分配单元1114,其被配置为分派任务以在通用处理集群1200模块上执行。工作分配单元1114可以跟踪从调度器单元1112接收到的若干调度的任务。在一个实施例中,工作分配单元1114为每个通用处理集群1200模块管理待处理(pending)任务池和活动任务池。待处理任务池可以包括若干时隙(例如,32个时隙),其包含被指派为由特定通用处理集群1200处理的任务。活动任务池可以包括若干时隙(例如,4个时隙),用于正在由通用处理集群1200主动处理的任务。当通用处理集群1200完成任务的执行时,该任务从通用处理集群1200的活动任务池中逐出,并且来自待处理任务池的其他任务之一被选择和调度以在通用处理集群1200上执行。如果通用处理集群1200上的活动任务已经空闲,例如在等待数据依赖性被解决时,那么活动任务可以从通用处理集群1200中逐出并返回到待处理任务池,而待处理任务池中的另一个任务被选择并调度以在通用处理集群1200上执行。
工作分配单元1114经由交叉开关1118与一个或更多个通用处理集群1200模块通信。交叉开关1118是将并行处理单元1100的许多单元耦合到并行处理单元1100的其他单元的互连网络。例如,交叉开关1118可以被配置为将工作分配单元1114耦合到特定的通用处理集群1200。虽然没有明确示出,但并行处理单元1100的一个或更多个其他单元也可以经由集线器1116连接到交叉开关1118。
任务由调度器单元1112管理并由工作分配单元1114分派给通用处理集群1200。通用处理集群1200被配置为处理任务并生成结果。结果可以由通用处理集群1200内的其他任务消耗,经由交叉开关1118路由到不同的通用处理集群1200,或者存储在存储器1104中。结果可以经由存储器分区单元1300模块写入存储器1104,存储器分区单元1300模块实现用于从存储器1104读取数据和向存储器1104写入数据的存储器接口。结果可以通过NVLink1108发送到另一个并行处理单元1100或CPU。在一个实施例中,并行处理单元1100包括数目为U的存储器分区单元1300模块,其等于耦合到并行处理单元1100的独立且不同的存储器设备1104的数目。下面将结合图13更详细地描述存储器分区单元1300。
在一个实施例中,主机处理器执行实现应用程序编程接口(API)的驱动程序内核,其使得能够在主机处理器上执行一个或更多个应用程序以调度操作用于在并行处理单元1100上执行。在一个实施例中,多个计算应用由并行处理单元1100同时执行,并且并行处理单元1100为多个计算应用程序提供隔离、服务质量(QoS)和独立地址空间。应用程序可以生成指令(例如,API调用),其使得驱动程序内核生成一个或更多个任务以由并行处理单元1100执行。驱动程序内核将任务输出到正在由并行处理单元1100处理的一个或更多个流。每个任务可以包括一个或更多个相关线程组,本文称为线程束(warp)。在一个实施例中,线程束包括可以并行执行的32个相关线程。协作线程可以指代包括执行任务的指令并且可以通过共享存储器交换数据的多个线程。结合图14更详细地描述线程和协作线程。
图12描绘了根据一个实施例的图11的并行处理单元1100的通用处理集群1200。如图12所示,每个通用处理集群1200包括用于处理任务的多个硬件单元。在一个实施例中,每个通用处理集群1200包括管线管理器1202、预光栅操作单元、光栅引擎1208、工作分配交叉开关1214、存储器管理单元1216以及一个或更多个数据处理集群1206。应当理解,图12的通用处理集群1200可以包括代替图12中所示单元的其他硬件单元或除图12中所示单元之外的其他硬件单元。
在一个实施例中,通用处理集群1200的操作由管线管理器1202控制。管线管理器1202管理用于处理分配给通用处理集群1200的任务的一个或更多个数据处理集群1206的配置。在一个实施例中,管线管理器1202可以配置一个或更多个数据处理集群1206模块中的至少一个来实现图形渲染管线的至少一部分。例如,数据处理集群1206可以被配置为在可编程流式多处理器1400上执行顶点着色程序。管线管理器1202还可以被配置为将从工作分配单元1114接收的数据包路由到通用处理集群1200中适当的逻辑单元。例如,一些数据包可以被路由到预光栅操作单元1204和/或光栅引擎1208中的固定功能硬件单元,而其他数据包可以被路由到数据处理集群1206模块以供图元引擎1212或流式多处理器1400处理。在一个实施例中,管线管理器1202可以配置一个或更多个数据处理集群1206模块中的至少一个以实现神经网络模型和/或计算管线。
预光栅操作单元1204被配置为将由光栅引擎1208和数据处理集群1206模块生成的数据路由到光栅操作(ROP)单元,结合图13更详细地描述。预光栅操作单元1204还可以被配置为执行颜色混合的优化,组织像素数据,执行地址转换等。
光栅引擎1208包括被配置为执行各种光栅操作的若干固定功能硬件单元。在一个实施例中,光栅引擎1208包括设置引擎、粗光栅引擎、剔除引擎、裁剪引擎、精细光栅引擎和图块聚合引擎。设置引擎接收变换后的顶点并生成与由顶点定义的几何图元关联的平面方程。平面方程被发送到粗光栅引擎以生成图元的覆盖信息(例如,图块的x、y覆盖掩码)。粗光栅引擎的输出被发送到剔除引擎,其中与未通过z-测试的图元相关联的片段被剔除,并且未剔除的片段被发送到裁剪引擎,其中位于视锥体之外的片段被裁剪掉。那些经过裁剪和剔除后留下来的片段可以被传递到精细光栅引擎,以基于由设置引擎生成的平面方程生成像素片段的属性。光栅引擎1208的输出包括例如要由在数据处理集群1206内实现的片段着色器处理的片段。
包括在通用处理集群1200中的每个数据处理集群1206包括M管线控制器1210、图元引擎1212和一个或更多个流式多处理器1400模块。M管线控制器1210控制数据处理集群1206的操作,将从管线管理器1202接收到的数据包路由到数据处理集群1206中的适当单元。例如,与顶点相关联的数据包可以被路由到图元引擎1212,图元引擎1212被配置为从存储器1104提取与顶点相关联的顶点属性。相反,与着色程序相关联的数据包可以被发送到流式多处理器1400。
流式多处理器1400包括被配置为处理由多个线程表示的任务的可编程流式处理器。每个流式多处理器1400是多线程的并且被配置为同时执行来自特定线程组的多个线程(例如,32个线程)。在一个实施例中,流式多处理器1400实现单指令、多数据(SIMD)体系架构,其中线程组(例如,warp)中的每个线程被配置为基于相同的指令集来处理不同的数据集。线程组中的所有线程都执行相同的指令。在另一个实施例中,流式多处理器1400实现单指令、多线程(0SIMT)体系架构,其中线程组中的每个线程被配置为基于相同的指令集处理不同的数据集,但是其中线程组中的各个线程在执行期间被允许发散。在一个实施例中,为每个线程束维护程序计数器、调用栈和执行状态,当线程束内的线程发散时,使线程束和线程束中的串行执行之间的并发成为可能。在另一个实施例中,为每个单独的线程维护程序计数器、调用栈和执行状态,从而在线程束内和线程束之间的所有线程之间实现相等的并发。当为每个单独的线程维护执行状态时,执行相同指令的线程可以被收敛并且并行执行以获得最大效率。下面结合图14更详细地描述流式多处理器1400。
存储器管理单元1216提供通用处理集群1200和存储器分区单元1300之间的接口。存储器管理单元1216可以提供虚拟地址到物理地址的转换、存储器保护以及存储器请求的仲裁。在一个实施例中,存储器管理单元1216提供用于执行从虚拟地址到存储器1104中的物理地址的转换的一个或更多个转换后备缓冲器(TLB)。
图13描绘了根据一个实施例的图11的并行处理单元1100的存储器存储器分区单元1300。如图13所示,存储器存储器分区单元1300包括光栅操作单元1302、二级高速缓存1304和存储器接口1306。存储器接口1306耦合到存储器1104。存储器接口1306可以实现用于高速数据传输的32、64、128、1024位数据总线等。在一个实施例中,并行处理单元1100合并了U个存储器接口1306模块,每对存储器分区单元1300模块有一个存储器接口1306,其中每对存储器分区单元1300模块连接到对应的存储器设备1104。例如,并行处理单元1100可以连接到多达Y个存储器设备1104,诸如高带宽存储器堆叠或图形双数据速率版本5的同步动态随机存取存储器或其他类型的持久存储器。
在一个实施例中,存储器接口1306实现HBM2存储器接口,并且Y等于U的一半。在一个实施例中,HBM2存储器堆叠位于与并行处理单元1100相同的物理封装上,提供与常规GDDR5 SDRAM系统相比显著的功率高和面积节约。在一个实施例中,每个HBM2堆叠包括四个存储器裸晶并且Y等于4,其中HBM2堆叠包括每个裸晶两个128位通道,总共8个通道和1024位的数据总线宽度。
在一个实施例中,存储器1104支持单错校正双错检测(SECDED)纠错码(ECC)以保护数据。对于对数据损毁敏感的计算应用程序,ECC提供了更高的可靠性。在大型集群计算环境中,并行处理单元1100模块处理非常大的数据集和/或长时间运行应用程序,可靠性尤其重要。
在一个实施例中,并行处理单元1100实现多级存储器层次。在一个实施例中,存储器存储器分区单元1300支持统一存储器以为CPU和并行处理单元1100存储器提供单个统一的虚拟地址空间,使得虚拟存储器系统之间的数据能够共享。在一个实施例中,跟踪并行处理单元1100对位于其他处理器上的存储器的访问频率,以确保存储器页面被移动到更频繁地访问该页面的并行处理单元1100的物理存储器。在一个实施例中,NVLink1108支持地址转换服务,其允许并行处理单元1100直接访问CPU的页表并且提供由并行处理单元1100对CPU存储器的完全访问。
在一个实施例中,复制引擎在多个并行处理单元1100模块之间或在并行处理单元1100模块与CPU之间传输数据。复制引擎可以为未映射到页表的地址生成页面错误。然后,存储器存储器分区单元1300可以服务页面错误,将地址映射到页表中,之后复制引擎可以执行传输。在常规系统中,针对多个处理器之间的多个复制引擎操作固定存储器(例如,不可分页),其显著减少了可用存储器。由于硬件分页错误,地址可以传递到复制引擎而不用担心存储器页面是否驻留,并且复制过程是否透明。
来自存储器1104或其他系统存储器的数据可以由存储器存储器分区单元1300取回并存储在二级高速缓存1304中,二级高速缓存1304位于芯片上并且在各个通用处理集群1200模块之间共享。如图所示,每个存储器存储器分区单元1300包括与对应的存储器1104设备相关联的二级高速缓存1304的一部分。然后可以在通用处理集群1200模块内的多个单元中实现较低级高速缓存。例如,每个流式多处理器1400模块可以实现L1高速缓存。L1高速缓存是专用于特定流式多处理器1400的专用存储器。来自二级高速缓存1304的数据可以被获取并存储在每个L1高速缓存中,以在流式多处理器1400模块的功能单元中进行处理。二级高速缓存1304被耦合到存储器接口1306和交叉开关1118。
光栅操作单元1302执行与诸如颜色压缩、像素混合等像素颜色相关的图形光栅操作。光栅操作单元1302还与光栅引擎1208一起实现深度测试,从光栅引擎1208的剔除引擎接收与像素片段相关联的样本位置的深度。测试与片段关联的样本位置相对于深度缓冲区中的对应深度的深度。如果片段通过样本位置的深度测试,则光栅操作单元1302更新深度缓冲区并将深度测试的结果发送给光栅引擎1208。将理解的是,存储器分区单元1300模块的数量可以不同于通用处理集群1200模块的数量,并且因此每个光栅操作单元1302可以耦合到每个通用处理集群1200模块。光栅操作单元1302跟踪从不同通用处理集群1200模块接收到的数据包并且确定由光栅操作单元1302生成的结果通过交叉开关1118被路由到哪个通用处理集群1200。尽管在图13中光栅操作单元1302被包括在存储器存储器分区单元1300内,但是在其他实施例中,光栅操作单元1302可以在存储器存储器分区单元1300之外。例如,光栅操作单元1302可以驻留在通用处理集群1200或另一个单元中。
图14示出了根据一个实施例的图12的流式多处理器1400。如图14所示,流式多处理器1400包括指令高速缓存1402、一个或更多个调度器单元1404模块(例如,调度器单元1112)、寄存器文件1408、一个或更多个处理核心1410模块、一个或更多个特殊功能单元1412模块、一个或更多个加载/存储单元1414模块、互连网络1416、以及共享存储器/L1高速缓存1418。
如上所述,工作分配单元1114调度任务以在并行处理单元1100的通用处理集群1200模块上执行。任务被分配给通用处理集群1200内的特定数据处理集群1206,并且如果该任务与着色器程序相关联,则该任务可以被分配给流式多处理器1400。调度器单元1112接收来自工作分配单元1114的任务并且管理指派给流式多处理器1400的一个或更多个线程块的指令调度。调度器单元1404调度线程块以作为并行线程的线程束执行,其中每个线程块被分配至少一个线程束。在一个实施例中,每个线程束执行32个线程。调度器单元1404可以管理多个不同的线程块,将线程束分配给不同的线程块,然后在每个时钟周期期间将来自多个不同的协作组的指令分派到各个功能单元(即,核心1410模块、特殊功能单元1412模块和加载/存储单元1414模块)。
协作组是用于组织通信线程组的编程模型,其允许开发者表达线程正在进行通信所采用的粒度,使得能够表达更丰富、更高效的并行分解。协作启动API支持线程块之间的同步性,以执行并行算法。常规的编程模型为同步协作线程提供了单一的简单结构:跨线程块的所有线程的栅栏(barrier)(例如,syncthreads()函数)。然而,程序员通常希望以小于线程块粒度的粒度定义线程组,并在所定义的组内同步,以集体的全组功能接口(collective group-wide function interface)的形式使能更高的性能、设计灵活性和软件重用。
协作组使得程序员能够在子块(例如,像单个线程一样小)和多块粒度处明确定义线程组并且执行集体操作,诸如协作组中的线程上的同步性。编程模型支持跨软件边界的干净组合,以便库和效用函数可以在他们本地环境中安全地同步,而无需对收敛进行假设。协作组图元启用合作并行的新模式,包括生产者-消费者并行、机会主义并行以及跨整个线程块网格的全局同步。
分派1406单元被配置为在调度器单元1404内向一个或更多个功能单元传送指令。在一个实施例中,调度器单元1404包括两个分派1406单元,其使得能够在每个时钟周期期间调度来自相同线程束的两个不同指令。在替代实施例中,每个调度器单元1404可以包括单个分派1406单元或附加分派1406单元。
每个流式多处理器1400包括寄存器文件1408,其提供用于流式多处理器1400的功能单元的一组寄存器。在一个实施例中,寄存器文件1408在每个功能单元之间被划分,使得每个功能单元被分配寄存器文件1408的专用部分。在另一个实施例中,寄存器文件1408在由流式多处理器1400执行的不同线程束之间被划分。寄存器文件1408为连接到功能单元的数据路径的操作数提供临时存储器。
每个流式多处理器1400包括L个处理核心1410模块。在一个实施例中,流式多处理器1400包括大量(例如128个等)不同的处理核心1410。每个核心1410可以包括完全管线化的、单精度、双精度和/或混合精度处理单元,其包括浮点运算逻辑单元和整数运算逻辑单元。在一个实施例中,浮点运算逻辑单元实现用于浮点运算的IEEE 754-2008标准。在一个实施例中,核心1410模块包括64个单精度(32位)浮点核心、64个整数核心、32个双精度(64位)浮点核心和8个张量核心(tensor core)。
张量核心被配置为执行矩阵运算,并且在一个实施例中,一个或更多个张量核心被包括在核心1410模块中。具体地,张量核心被配置为执行深度学习矩阵运算,诸如用于神经网络训练和推理的卷积运算。在一个实施例中,每个张量核心在4×4矩阵上运算并且执行矩阵乘法和累加运算D=A×B+C,其中A、B、C和D是4×4矩阵。
在一个实施例中,矩阵乘法输入A和B是16位浮点矩阵,而累加矩阵C和D可以是16位浮点或32位浮点矩阵。张量核心在16位浮点输入数据以及32位浮点累加上运算。16位浮点乘法需要64次运算,产生全精度的积,然后使用32位浮点与4×4×4矩阵乘法的其他中间积相加来累加。在实践中,张量核心用于执行由这些较小的元素建立的更大的二维或更高维的矩阵运算。API(诸如CUDA 9C++API)公开了专门的矩阵加载、矩阵乘法和累加以及矩阵存储运算,以便有效地使用来自CUDA-C++程序的张量核心。在CUDA层面,线程束级接口假定16×16尺寸矩阵跨越线程束的全部32个线程。
每个流式多处理器1400还包括执行特殊函数(例如,属性评估、倒数平方根等)的M个特殊功能单元1412模块。在一个实施例中,特殊功能单元1412模块可以包括树遍历单元,其被配置为遍历分层树数据结构。在一个实施例中,特殊功能单元1412可以包括被配置为执行纹理图过滤操作的纹理单元。在一个实施例中,纹理单元被配置为从存储器1104加载纹理图(例如,纹理像素的2D阵列)并且对纹理图进行采样以产生经采样的纹理值,用于在由流式多处理器1400执行的着色器程序中使用。在一个实施例中,纹理图被存储在共享存储器/L1高速缓存1418中。纹理单元实现纹理操作,诸如使用mip图(即,不同细节层次的纹理图)的过滤操作。在一个实施例中,每个流式多处理器1400包括两个纹理单元。
每个流式多处理器1400还包括N个加载/存储单元1414模块,其实现共享存储器/L1高速缓存1418和寄存器文件1408之间的加载和存储操作。每个流式多处理器1400包括将每个功能单元连接到寄存器文件1408以及将加载/存储单元1414连接到寄存器文件1408、共享存储器/L1高速缓存1418的互连网络1416。在一个实施例中,互连网络1416是交叉开关,其可以被配置为将任何功能单元连接到寄存器文件1408中的任何寄存器,以及将加载/存储单元1414模块连接到寄存器文件和共享存储器/L1高速缓存1418中的存储器位置。
共享存储器/L1高速缓存1418是片上存储器阵列,其允许数据存储和流式多处理器1400与图元引擎1212之间以及流式多处理器1400中的线程之间的通信。在一个实施例中,共享存储器/L1高速缓存1418包括128KB的存储容量并且在从流式多处理器1400到存储器分区单元1300的路径中。共享存储器/L1高速缓存1418可以用于高速缓存读取和写入。共享存储器/L1高速缓存1418、二级高速缓存1304和存储器1104中的一个或更多个是后备存储。
将数据高速缓存和共享存储器功能组合成单个存储器块为两种类型的存储器访问提供最佳的总体性能。该容量可由程序用作不使用共享存储器的高速缓存。例如,如果将共享存储器配置为使用一半容量,则纹理和加载/存储操作可以使用剩余容量。在共享存储器/L1高速缓存1418内的集成使共享存储器/L1高速缓存1418起到用于流式传输数据的高吞吐量管线的作用,并且同时提供对频繁重用数据的高带宽和低延迟的访问。
当被配置用于通用并行计算时,与图形处理相比,可以使用更简单的配置。具体地,图11所示的固定功能图形处理单元被绕过,创建了更简单的编程模型。在通用并行计算配置中,工作分配单元1114将线程块直接指派并分配给数据处理集群1206模块。块中的线程执行相同的程序,使用计算中的唯一线程ID来确保每个线程生成唯一结果,使用流式多处理器1400执行程序并执行计算,使用共享存储器/L1高速缓存1418以在线程之间通信,以及使用加载/存储单元1414通过共享存储器/L1高速缓存1418和存储器存储器分区单元1300读取和写入全局存储器。当被配置用于通用并行计算时,流式多处理器1400还可以写入调度器单元1112可用来在数据处理集群1206模块上启动新工作的命令。
并行处理单元1100可以被包括在台式计算机、膝上型计算机、平板电脑、服务器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(PDA)、数码相机、运载工具、头戴式显示器、手持式电子设备等中。在一个实施例中,并行处理单元1100包含在单个半导体衬底上。在另一个实施例中,并行处理单元1100与一个或更多个其他器件(诸如附加并行处理单元1100模块、存储器1104、精简指令集计算机(RISC)CPU、存储器管理单元(MMU)、数字-模拟转换器(DAC)等)一起被包括在片上系统(SoC)上。
在一个实施例中,并行处理单元1100可以被包括在图形卡上,图形卡包括一个或更多个存储器设备。图形卡可以被配置为与台式计算机的主板上的PCIe插槽接口。在又一个实施例中,并行处理单元1100可以是包含在主板的芯片集中的集成图形处理单元(iGPU)或并行处理器。
示例性计算系统
具有多个GPU和CPU的系统被用于各种行业,因为开发者在应用(诸如人工智能计算)中暴露和利用更多的并行性。在数据中心、研究机构和超级计算机中部署具有数十至数千个计算节点的高性能GPU加速系统,以解决更大的问题。随着高性能系统内处理设备数量的增加,通信和数据传输机制需要扩展以支持该增加带宽。
图15是根据一个实施例的使用图11的并行处理单元1100实现的处理系统1500的概念图。处理系统1500包括中央处理单元1506、交换机1502和多个并行处理单元1100模块中的每一个以及相应的存储器1104模块。NVLink 1108提供每个并行处理单元1100模块之间的高速通信链路。尽管图15中示出了特定数量的NVLink 1108和互连1102连接,但是连接到每个并行处理单元1100和中央处理单元1506的连接的数量可以改变。交换机1502在互连1102和中央处理单元1506之间接口。并行处理单元1100模块、存储器1104和NVLink 1108可以位于单个半导体平台上以形成并行处理模块1504。在一个实施例中,交换机1502支持两个或更多个在各种不同连接和/或链路之间接口的协议。
在另一个实施例(未示出)中,NVLink 1108在每个并行处理单元1100模块和中央处理单元1506之间提供一个或更多个高速通信链路,并且交换机1502在互连1102和每个并行处理单元1100模块之间进行接口。并行处理单元1100模块、存储器1104和互连1102可以位于单个半导体平台上以形成并行处理模块1504。在又一个实施例(未示出)中,互连1102在每个并行处理单元1100模块和中央处理单元1506之间提供一个或更多个通信链路,并且交换机1502使用NVLink 1108在每个并行处理单元1100模块之间进行接口,以在并行处理单元1100模块之间提供一个或更多个高速通信链路。在另一个实施例(未示出)中,NVLink1108在并行处理单元1100模块和中央处理单元1506之间通过交换机1502提供一个或更多个高速通信链路。在又一个实施例(未示出)中,互连1102在每个并行处理单元1100模块之间直接地提供一个或更多个通信链路。可以使用与NVLink 1108相同的协议将一个或更多个NVLink 1108高速通信链路实现为物理NVLink互连或者片上或裸晶上互连。
在本说明书的上下文中,单个半导体平台可以指在裸晶或芯片上制造的唯一的单一的基于半导体的集成电路。应该注意的是,术语单个半导体平台也可以指具有增加的连接的多芯片模块,其模拟片上操作并通过利用常规总线实现方式进行实质性改进。当然,根据用户的需要,各种电路或器件还可以分开放置或以半导体平台的各种组合来放置。可选地,并行处理模块1504可以被实现为电路板衬底,并且并行处理单元1100模块和/或存储器1104模块中的每一个可以是封装器件。在一个实施例中,中央处理单元1506、交换机1502和并行处理模块1504位于单个半导体平台上。
在一个实施例中,每个NVLink 1108的信令速率是20到25千兆位/秒,并且每个并行处理单元1100包括六个NVLink 1108接口(如图15所示,每个并行处理单元1100包括五个NVLink 1108接口)。每个NVLink 1108在每个方向上提供25千兆位/秒的数据传输速率,其中六条链路提供300千兆位/秒。当中央处理单元1506还包括一个或更多个NVLink 1108接口时,NVLink 1108可专门用于如图15所示的PPU到PPU通信,或者PPU到PPU以及PPU到CPU的某种组合。
在一个实施例中,NVLink 1108允许从中央处理单元1506到每个并行处理单元1100模块的存储器1104的直接加载/存储/原子访问。在一个实施例中,NVLink 1108支持一致性操作,允许从存储器1104读取的数据被存储在中央处理单元1506的高速缓存分层结构中,减少了中央处理单元1506的高速缓存访问延迟。在一个实施例中,NVLink 1108包括对地址转换服务(ATS)的支持,允许并行处理单元1100直接访问中央处理单元1506内的页表。一个或更多个NVLink 1108还可以被配置为以低功率模式操作。
图16示出了示例性处理系统1600,其中可以实现各种先前实施例的各种体系架构和/或功能。如图所示,提供示例性处理系统1600,其包括连接到通信总线1610的至少一个中央处理单元1506。通信总线1610可以使用任何合适的协议来实现,诸如PCI(外围组件互连)、PCI-Express、AGP(加速图形端口)、超传输或任何其他总线或一个或更多个点对点通信协议。示例性处理系统1600还包括主存储器1604。控制逻辑(软件)和数据被存储在主存储器1604中,主存储器1604可以采取随机存取存储器(RAM)的形式。
示例性处理系统1600还包括输入设备1608、并行处理模块1504和显示设备1606,例如常规CRT(阴极射线管)、LCD(液晶显示器)、LED(发光二极管)、等离子显示器等。可以从输入设备1608(例如键盘、鼠标、触摸板、麦克风等)接收用户输入。前述模块和/或设备中的每一个甚至可以位于单个半导体平台上以形成示例性处理系统1600。可选地,根据用户的需要,各个模块还可以分开放置或以半导体平台的各种组合来放置。
此外,示例性处理系统1600可以出于通信目的通过网络接口1602耦合到网络(例如,电信网络、局域网(LAN)、无线网络、广域网(WAN)(诸如因特网)、对等网络、电缆网络等)。
示例性处理系统1600还可以包括辅助存储(未示出)。辅助存储610包括例如硬盘驱动器和/或可移除存储驱动器、代表软盘驱动器、磁带驱动器、光盘驱动器、数字多功能盘(DVD)驱动器、记录设备、通用串行总线(USB)闪存。可移除存储驱动器以众所周知的方式从可移除存储单元读取和/或写入可移除存储单元。
计算机程序或计算机控制逻辑算法可以存储在主存储器1604和/或辅助存储中。这些计算机程序在被执行时使得示例性处理系统1600能够执行各种功能。主存储器1604、存储和/或任何其他存储是计算机可读介质的可能示例。
各种在先附图的体系架构和/或功能可以在通用计算机系统、电路板系统、专用于娱乐目的的游戏控制台系统、专用系统和/或任何其他所需的系统的上下文中实现。例如,示例性处理系统1600可以采取台式计算机、膝上型计算机、平板电脑、服务器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(PDA)、数字相机、运载工具、头戴式显示器、手持式电子设备、移动电话设备、电视机、工作站、游戏控制台、嵌入式系统和/或任何其他类型的逻辑的形式。
虽然上面已经描述了各种实施例,但是应该理解,它们仅以示例的方式呈现,而不是限制。因此,优选实施例的宽度和范围不应受任何上述示例性实施例的限制,而应仅根据所附权利要求及其等同物来限定。
图形处理管线
图16是根据一个实施例的由图11的并行处理单元1100实现的图形处理管线1700的概念图。在一个实施例中,并行处理单元1100包括图形处理单元(GPU)。并行处理单元1100被配置为接收指定用于处理图形数据的着色程序的命令。图形数据可以被定义为一组图元,例如点、线、三角形、四边形、三角形带等。典型地,图元包括指定图元的多个顶点(例如,在模型空间坐标系中)的数据以及与图元的每个顶点相关联的属性。并行处理单元1100可以被配置为处理图元以生成帧缓冲区(例如,用于显示器的像素中的每一个的像素数据)。
应用程序将场景的模型数据(例如,顶点和属性的集合)写入存储器(诸如系统存储器或存储器1104)。模型数据定义可能在显示器上可见的对象中的每一个。然后应用程序对驱动程序内核进行API调用,其请求要被渲染和显示的模型数据。驱动程序内核读取模型数据并将命令写入一个或更多个流以执行操作来处理模型数据。这些命令可以参考要在并行处理单元1100的流式多处理器1400模块上实现的不同着色程序,包括顶点着色、外壳着色、域着色、几何着色和像素着色中的一个或更多个。例如,流式多处理器1400模块中的一个或更多个可以被配置为执行顶点着色程序,其处理由模型数据定义的多个顶点。在一个实施例中,不同的流式多处理器1400模块可以被配置为同时执行不同的着色程序。例如,流式多处理器1400模块的第一子集可以被配置为执行顶点着色程序,而流式多处理器1400模块的第二子集可以被配置为执行像素着色程序。流式多处理器1400模块的第一子集处理顶点数据以产生经处理的顶点数据,并将经处理的顶点数据写入二级高速缓存1304和/或存储器1104。在经处理的顶点数据被光栅化(例如,从三维数据转换成屏幕空间中的二维数据)以产生片段数据之后,流式多处理器1400模块的第二子集执行像素着色以产生经处理的片段数据,然后将其与其他经处理的片段数据混合并被写入存储器1104中的帧缓冲区。顶点着色程序和像素着色程序可以同时执行,以管线方式处理来自同一场景的不同数据,直到该场景的所有模型数据已经被渲染到帧缓冲区。然后,帧缓冲区的内容被传送到显示控制器以在显示设备上显示。
图形处理管线1700是被实现以从3D几何数据生成2D计算机生成图像的处理步骤的抽象流程图。众所周知,管线架构可以通过将操作分成多个阶段来更高效地执行长延迟操作,其中每个阶段的输出耦合到下一个连续阶段的输入。因此,图形处理管线1700接收输入数据1702,其从图形处理管线1700的一个阶段传送到下一阶段,以生成输出数据1704。在一个实施例中,图形处理管线1700可表示由
Figure BDA0002709221330000231
API定义的图形处理管线。作为选择,图形处理管线1700可以在先前附图和/或一个或更多个任何后续附图的功能和架构的上下文中实现。
如图17所示,图形处理管线1700包括包含多个阶段的管线架构。这些阶段包括但不限于数据组装1706阶段、顶点着色1708阶段、图元组装1710阶段、几何着色1712阶段、视口SCC 1714阶段、光栅化1716阶段、片段着色1718阶段和光栅操作1720阶段。在一个实施例中,输入数据1702包括命令,其配置处理单元以实现图形处理管线1700的阶段,并配置几何图元(例如,点、线、三角形、四边形、三角形带或扇形等)以由这些阶段处理。输出数据1704可以包括像素数据(即,颜色数据),其被复制到存储器中的帧缓冲区或其他类型的表面数据结构中。
数据组装1706阶段接收输入数据1702,其指定用于高阶表面、图元等的顶点数据。数据组装1706阶段收集临时存储或队列中的顶点数据,诸如通过从主机处理器接收包括指向存储器中的缓冲区的指针的命令并从该缓冲区读取顶点数据。顶点数据然后被传送到顶点着色1708以进行处理。
顶点着色1708阶段通过对顶点中的每一个执行一次一组操作(例如,顶点着色器或程序)来处理顶点数据。顶点可以例如被指定为与一个或更多个顶点属性(例如,颜色、纹理坐标、表面法线等)相关联的4坐标向量(例如,<x,y,z,w>)。顶点着色1708阶段可以操纵各个顶点属性,诸如位置、颜色、纹理坐标等。换句话说,顶点着色1708阶段对与顶点相关联的顶点坐标或其他顶点属性执行操作。这些操作通常包括光照操作(例如,修改顶点的颜色属性)和变换操作(例如,修改顶点的坐标空间)。例如,可以使用对象坐标空间中的坐标来指定顶点,其通过将坐标乘以矩阵进行变换,该矩阵将坐标从对象坐标空间转换到世界空间或归一化设备坐标(normalized-device-coordinate,NCD)空间。顶点着色1708阶段生成被传送到图元组装1710阶段的经变换的顶点数据。
图元组装1710阶段收集由顶点着色1708阶段输出的顶点并且将顶点分组成几何图元以由几何着色1712阶段处理。例如,图元组装1710阶段可以被配置为将每三个连续顶点分组为用于传送到几何着色1712阶段的几何图元(例如,三角形)。在一些实施例中,特定顶点可以被重新用于连续几何图元(例如,三角形带中的两个连续三角形可以共享两个顶点)。图元组装1710阶段将几何图元(例如,相关联的顶点的集合)传送到几何着色1712阶段。
几何着色1712阶段通过对几何图元执行一组操作(例如,几何着色器或程序)来处理几何图元。曲面细分(tessellation)操作可以从每个几何图元生成一个或更多个几何图元。换言之,几何着色1712阶段可以将每个几何图元细分为两个或更多个几何图元的更精细的网格,以由图形处理管线1700的其余部分进行处理。几何着色1712阶段将几何图元传送到视口SCC阶段1714。
在一个实施例中,图形处理管线1700可以在流式多处理器和顶点着色1708阶段、图元组装1710阶段、几何着色1712阶段、片段着色1718阶段和/或与其相关联的硬件/软件内操作,可顺序地执行处理操作。一旦顺序处理操作完成,在一个实施例中,视口SCC1714可以利用数据。在一个实施例中,由图形处理管线1700中的阶段的一个或更多个处理的图元数据可以被写入高速缓存(例如,L1高速缓存、顶点高速缓存等)中。在这种情况下,在一个实施例中,视口SCC1714可以访问高速缓存中的数据。在一个实施例中,视口SCC1714和光栅化1716阶段被实现为固定功能电路。
视口SCC1714执行几何图元的视口缩放、剔除和裁剪。正被渲染的每个表面都与抽象相机位置相关联。相机位置表示正观看该场景的观看者的位置并定义了包围该场景的对象的视锥体。视锥体可以包括观看平面、后平面和四个裁剪平面。完全位于视锥体之外的任何几何图元都可被剔除(例如丢弃),因为这些几何图元将不会对最终渲染的场景做出贡献。部分位于视锥体内并且部分位于视锥体外的任何几何图元可以被裁剪(例如,转换为被包围在视锥体内的新的几何图元)。此外,可以基于视锥体的深度来对每个几何图元进行缩放。然后将所有可能可见的几何图元传送到光栅化1716阶段。
光栅化1716阶段将3D几何图元转换成2D片段(例如,能够用于显示等)。光栅化1716可以被配置为利用几何图元的顶点来设置一组平面方程,从中可以内插各种属性。光栅化1716阶段还可以计算多个像素的覆盖掩码,其指示像素的一个或更多个样本位置是否拦截几何图元。在一个实施例中,还可以执行z测试以确定几何图元是否被已经被光栅化的其他几何图元遮挡。光栅化1716阶段生成片段数据(例如,与每个被覆盖像素的特定样本位置相关联的内插顶点属性),其被传送到片段着色1718阶段。
片段着色1718阶段通过对片段中的每一个执行一组操作(例如,片段着色器或程序)来处理片段数据。片段着色1718阶段可以生成片段的像素数据(例如,颜色值),诸如通过使用片段的内插纹理坐标执行光照操作或采样纹理图。片段着色1718阶段生成像素数据,其被发送到光栅操作1720阶段。
光栅操作1720阶段可对像素数据执行各种操作,诸如执行阿尔法测试、模板测试(stencil test)以及将像素数据与对应于与像素相关联的其他片段的其他像素数据混合。当光栅操作1720阶段已经完成对像素数据(例如,输出数据1704)的处理时,可以将像素数据写入渲染目标,诸如帧缓冲区、颜色缓冲区等。
应当领会,除上述阶段中的一个或更多个以外或代替上述阶段中的一个或更多个,一个或更多个额外的阶段可以被包括在图形处理管线1700中。抽象图形处理管线的各种实现方式可以实现不同的阶段。此外,在一些实施例中,上述阶段中的一个或更多个可以从图形处理管线中排除(诸如几何着色1712阶段)。其他类型的图形处理管线被认为是在本公开的范围内所构想的。此外,图形处理管线1700的任何阶段可以由图形处理器(诸如并行处理单元1100)内的一个或更多个专用硬件单元来实现。图形处理管线1700的其他阶段可以由可编程硬件单元(诸如并行处理单元1100的流式多处理器1400)来实现。
图形处理管线1700可以经由由主机处理器(诸如CPU)执行的应用程序来实现。在一个实施例中,设备驱动程序可以实现应用程序编程接口(API),其定义可以被应用程序利用以生成用于显示的图形数据的各种功能。设备驱动程序是软件程序,其包括控制并行处理单元1100的操作的多个指令。API为程序员提供抽象,其允许程序员利用专用图形硬件(诸如并行处理单元1100)来生成图形数据而不要求程序员利用并行处理单元1100的特定指令集。应用程序可以包括被路由到并行处理单元1100的设备驱动程序的API调用。设备驱动程序解释API调用并执行各种操作以响应API调用。在一些情况下,设备驱动程序可以通过在CPU上执行指令来执行操作。在其他情况下,设备驱动程序可以至少部分地通过利用CPU和并行处理单元1100之间的输入/输出接口在并行处理单元1100上启动操作来执行操作。在一个实施例中,设备驱动程序被配置为利用并行处理单元1100的硬件来实现图形处理管线1700。
可以在并行处理单元1100内执行各种程序以便实现图形处理管线1700的各个阶段。例如,设备驱动程序可以启动并行处理单元1100上的内核以在一个流式多处理器1400(或多个流式多处理器1400)上执行顶点着色1708阶段。设备驱动程序(或由PPU 400执行的初始内核)还可启动并行处理单元1100上的其他内核以执行图形处理管线1700的其他阶段,诸如几何着色1712阶段和片段着色1718阶段。另外,图形处理管线1700的阶段中的一些可以在固定单元硬件(诸如在并行处理单元1100内实现的光栅器或数据组装器)上实现。应当领会,在被流式多处理器1400上的后续内核处理之前,来自一个内核的结果可以由一个或更多个中间固定功能硬件单元处理。
本文描述的各种功能操作可以以使用反映所述操作或功能的名词或名词短语被引用的逻辑来实现。例如,关联操作可以由“关联器”或“相关器”执行。同样,可以通过“交换机”进行切换,通过“选择器”进行选择等。“逻辑”是指机器存储器电路,非暂时性机器可读介质和/或电路,通过其材料和/或材料能量配置,其包括控制和/或过程信号,和/或设置和值(例如电阻,阻抗,电容,电感,电流/电压额定值等),可能会影响设备的运行。磁介质,电子电路,电和光存储器(易失性和非易失性)以及固件都是逻辑示例。逻辑明确地排除了纯信号或软件本身(但是不排除包括软件的机器存储器,从而形成了物质的配置)。
在本公开内,可以将不同的实体(其可以被不同地称为“单元”,“电路”,其他组件等)描述或要求保护为“配置”以执行一个或更多个任务或操作。在本文中使用该表述—配置为[执行一个或更多个任务]的[实体]—来指代结构(即,物理物体,诸如电子电路)。更具体地,该公式用于指示该结构被布置为在操作期间执行一个或更多个任务。可以说某个结构被“配置为”执行某些任务,即使该结构当前未被操作。“配置为将信用额分配给多个处理器核心的信用额分配电路”旨在涵盖例如一种集成电路,该集成电路具有在操作期间执行此功能的电路,即使当前未使用所讨论的集成电路(例如未连接电源)。因此,被描述或陈述为“配置为”执行某项任务的实体是指某种物理事物,例如设备,电路,存储可执行以执行该任务的程序指令的存储器等。此短语在本文中不用于表示无形事物。
术语“配置为”并不旨在表示“可配置为”。例如,未编程的FPGA虽然可以在编程后“可配置为”执行该功能,但不会被视为“配置为”执行某些特定功能。
在所附的权利要求中,明确指出一种结构被“配置为”执行一个或更多个任务,这显然不是要引用35 U.S.C.§112(f)用于该权利要求元素。因此,不应根据35 U.S.C§112(f)解释本申请中未包含“用于”[执行功能]构造的权利要求。
如本文所使用,术语“基于”用于描述影响确定的一个或更多个因素。该术语不排除其他因素可能影响确定的可能性。即,确定可以仅基于指定因素或基于指定因素以及其他未指定因素。考虑短语“基于B确定A”。此短语指定B是用于确定A或影响A的确定的因素。此短语不排除A的确定也可以基于某些其他因素(例如C)的情况。该短语还旨在覆盖其中仅基于B确定A的实施例。如本文中所使用的,短语“基于”与短语“至少部分基于”同义。
如本文所用,短语“响应于”描述了触发影响的一个或更多个因素。该短语不排除其他因素可能影响或以其他方式触发影响的可能性。即,效果可以仅是对那些因素的响应,或者可以是对指定因素以及其他未指定因素的响应。考虑短语“响应于B执行A”。此短语指定B是触发A的性能的因素。此短语不排除也可能响应于其他因素(例如C)执行A。此短语还旨在涵盖其中仅响应于B执行A的实施例。
如本文中所使用的,术语“第一”,“第二”等被用作它们之前的名词的标签,并且不暗示任何类型的排序(例如,空间,时间,逻辑等),除非另有说明。例如,在具有八个寄存器的寄存器文件中,术语“第一寄存器”和“第二寄存器”可用于指八个寄存器中的任何两个,而不仅仅是逻辑寄存器0和1。
当在权利要求书中使用时,术语“或”被用作包含性或而不是排他性或。例如,短语“x,y或z中的至少一个”表示x,y和z中的任何一个,以及它们的任何组合。
已经详细描述了说明性实施例,将显而易见的是,在不脱离所要求保护的本发明的范围的情况下,可以进行修改和变化。本发明主题的范围不限于所描绘的实施例,而是在所附权利要求中提出。

Claims (24)

1.一种方法,包括:
针对视频帧的多个图块中的每个图块,从多个不同的采样顺序中选择每图块采样顺序;
对所述每图块采样顺序的选择基于运动矢量和所述图块的相邻像素中的一个或两个;
针对所述图块中的每个像素位置生成子帧,从而得到多个子帧;以及
将所述子帧合并到对所述视频帧的渲染中。
2.根据权利要求1所述的方法,其中,对所述每图块采样顺序的所述选择基于所述运动矢量和所述图块的相邻像素两者。
3.根据权利要求1所述的方法,其中,对所述每图块采样顺序的所述选择基于所述运动矢量而不是基于所述图块的相邻像素。
4.根据权利要求1所述的方法,其中,对所述每图块采样顺序的所述选择基于所述图块的所述相邻像素而不是所述运动矢量。
5.根据权利要求1所述的方法,还包括:
从领结采样顺序和沙漏采样顺序中选择所述每图块采样顺序。
6.根据权利要求1所述的方法,还包括:
基于所述运动矢量的角度选择所述每图块采样顺序。
7.根据权利要求1所述的方法,还包括:
基于所述运动矢量的长度选择所述每图块采样顺序。
8.根据权利要求7所述的方法,还包括:
基于所述运动矢量的所述长度的分数部分选择所述每图块采样顺序。
9.根据权利要求1所述的方法,还包括:
基于所述运动矢量的角度和所述运动矢量的长度的分数部分选择所述每图块采样顺序。
10.根据权利要求1所述的方法,其中,每个图块是2×2像素块。
11.根据权利要求1所述的方法,还包括:
基于所述运动矢量为所述图块中的像素选择超级采样图案。
12.一种非暂时性计算机可读存储介质,所述计算机可读存储介质包括将计算机配置为执行以下操作的指令:
针对视频帧中的多个图块中的每个图块,选择光线跟踪像素采样顺序;以及
基于所述不同图块的至少一个运动矢量的角度,在所述视频帧的不同图块的第一采样顺序和第二采样顺序之间改变所述像素采样顺序。
13.根据权利要求12所述的计算机可读存储介质,其中,所述第一采样顺序是领结采样顺序,并且所述第二采样顺序是沙漏采样顺序。
14.根据权利要求12所述的计算机可读存储介质,其中,所述指令还配置所述计算机以针对所选择的像素采样顺序中的每个位置渲染不同的子帧。
15.根据权利要求14所述的计算机可读存储介质,其中,在所述所选择的采样顺序中存在四个像素位置。
16.根据权利要求14所述的计算机可读存储介质,其中,所述不同子帧合并以生成渲染帧。
17.根据权利要求12所述的计算机可读存储介质,其中,所述指令还配置所述计算机以基于所述运动矢量的长度来选择所述采样顺序。
18.根据权利要求17所述的计算机可读存储介质,其中:
对于所述角度的一个或更多个第一范围,对所述像素采样顺序的选择基于所述运动矢量的角度;以及
对于所述角度的一个或更多个第二范围,对所述像素采样顺序的选择是随机的。
19.根据权利要求12所述的计算机可读存储介质,其中,所述指令还配置所述计算机以针对所述图块中的静态像素选择超级采样抖动图案,以及针对所述图块中的动态像素选择基于中心的超级采样图案。
20.一种计算装置,所述计算装置包括:
处理器;以及
存储器,其存储指令,所述指令在由所述处理器执行时将所述装置配置为:
针对具有宽度W和高度H的图块中的像素的光线跟踪,选择包括领结采样顺序和沙漏采样顺序之一的采样顺序;以及
对于所述图块中的每个W*H像素,生成仅包括来自每个所述图块的位置j的像素的子帧。
21.根据权利要求20所述的计算装置,其中,对所述采样顺序的选择基于针对所述角度的至少一个范围对于所述图块导出的运动矢量的角度。
22.根据权利要求21所述的计算装置,其中,所述采样顺序的选择还基于所述运动矢量的长度的分数部分。
23.根据权利要求21所述的计算装置,其中,对于所述角度的至少另一个范围,对所述采样顺序的选择是随机的。
24.一种计算装置,所述计算装置包括:
处理器;以及
存储器,其存储指令,所述指令在由所述处理器执行时将所述装置配置为:
以每个图块为基础为视频帧的多个图块中的每一个选择包括第一光线跟踪采样顺序和第二光线跟踪采样顺序之一的采样顺序;
所述第一采样顺序和所述第二采样顺序中的每一个包括N个像素采样位置;
生成N个子帧,每个所述子帧仅包括来自每个所述图块中的相同像素采样位置的像素;以及
每生成N个子帧,更新一次所述采样顺序选择。
CN202011049896.4A 2019-03-27 2020-09-29 临时密实渲染的自适应像素采样顺序 Pending CN113450445A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962824590P 2019-03-27 2019-03-27
US16/830,656 2020-03-26
US16/830,656 US11089320B2 (en) 2019-03-27 2020-03-26 Adaptive pixel sampling order for temporally dense rendering

Publications (1)

Publication Number Publication Date
CN113450445A true CN113450445A (zh) 2021-09-28

Family

ID=72605355

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011049896.4A Pending CN113450445A (zh) 2019-03-27 2020-09-29 临时密实渲染的自适应像素采样顺序

Country Status (3)

Country Link
US (3) US11089320B2 (zh)
CN (1) CN113450445A (zh)
DE (1) DE102020108526A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117058292A (zh) * 2023-07-28 2023-11-14 北京透彻未来科技有限公司 基于数字病理图像的色阶图渲染系统
CN117058292B (zh) * 2023-07-28 2024-04-26 北京透彻未来科技有限公司 基于数字病理图像的色阶图渲染系统

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11526964B2 (en) * 2020-06-10 2022-12-13 Intel Corporation Deep learning based selection of samples for adaptive supersampling
US11282258B1 (en) * 2020-11-02 2022-03-22 Nvidia Corporation Adaptive sampling at a target sampling rate

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100122381A (ko) * 2009-05-12 2010-11-22 중앙대학교 산학협력단 회화적 렌더링 장치 및 방법
US20160140689A1 (en) * 2014-11-13 2016-05-19 Nvidia Corporation Supersampling for spatially distributed and disjoined large-scale data
US20180268516A1 (en) * 2017-03-20 2018-09-20 Qualcomm Incorporated Adaptive perturbed cube map projection
US20180293779A1 (en) * 2017-04-10 2018-10-11 Intel Corporation Multi-sample stereo renderer
CN109978750A (zh) * 2017-12-28 2019-07-05 三星电子株式会社 执行基于采样的渲染的图形处理器和操作其的方法
US20200051290A1 (en) * 2018-08-09 2020-02-13 Nvidia Corporation Motion adaptive rendering using variable rate shading

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002091198A1 (en) * 2001-05-03 2002-11-14 Milliken & Company Image manipulation system and method
US6924820B2 (en) * 2001-09-25 2005-08-02 Sun Microsystems, Inc. Over-evaluating samples during rasterization for improved datapath utilization
KR100649244B1 (ko) * 2003-11-27 2006-11-24 삼성에스디아이 주식회사 역다중화 장치 및 이를 이용한 디스플레이 장치
KR100649245B1 (ko) * 2003-11-29 2006-11-24 삼성에스디아이 주식회사 역다중화 장치 및 이를 이용한 디스플레이 장치
US8204104B2 (en) 2006-03-09 2012-06-19 Sony Corporation Frame rate conversion system, method of converting frame rate, transmitter, and receiver
US11049269B2 (en) * 2014-06-27 2021-06-29 Samsung Electronics Co., Ltd. Motion based adaptive rendering
US10147225B2 (en) 2016-04-01 2018-12-04 Intel Corporation Method and apparatus for sampling pattern generation for a ray tracing architecture
US10192280B2 (en) * 2016-04-08 2019-01-29 Qualcomm Incorporated Per-vertex variable rate shading
US20180357033A1 (en) * 2017-06-08 2018-12-13 Ve Virtual Environment Llc Virtual video environment display systems
US10410433B2 (en) 2017-08-30 2019-09-10 Go Ghost, LLC Method of modifying ray tracing samples after rendering and before rasterizing
US11403810B2 (en) * 2018-11-02 2022-08-02 Facebook Technologies, Llc. Display engine for post-rendering processing

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100122381A (ko) * 2009-05-12 2010-11-22 중앙대학교 산학협력단 회화적 렌더링 장치 및 방법
US20160140689A1 (en) * 2014-11-13 2016-05-19 Nvidia Corporation Supersampling for spatially distributed and disjoined large-scale data
US20180268516A1 (en) * 2017-03-20 2018-09-20 Qualcomm Incorporated Adaptive perturbed cube map projection
US20180293779A1 (en) * 2017-04-10 2018-10-11 Intel Corporation Multi-sample stereo renderer
CN109978750A (zh) * 2017-12-28 2019-07-05 三星电子株式会社 执行基于采样的渲染的图形处理器和操作其的方法
US20200051290A1 (en) * 2018-08-09 2020-02-13 Nvidia Corporation Motion adaptive rendering using variable rate shading

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
P. ANDERSSON等: "Temporally Dense Ray Tracing", 《HIGH-PERFORMANCE GRAPHICS》, pages 33 - 38 *
WEI LIU等: "An efficient depth map preprocessing method based on structure-aided domain transform smoothing for 3D view generation", 《PLOS ONE》, pages 1 - 20 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117058292A (zh) * 2023-07-28 2023-11-14 北京透彻未来科技有限公司 基于数字病理图像的色阶图渲染系统
CN117058292B (zh) * 2023-07-28 2024-04-26 北京透彻未来科技有限公司 基于数字病理图像的色阶图渲染系统

Also Published As

Publication number Publication date
US11638028B2 (en) 2023-04-25
DE102020108526A1 (de) 2020-10-01
US20210344944A1 (en) 2021-11-04
US20200314442A1 (en) 2020-10-01
US20230269391A1 (en) 2023-08-24
US11089320B2 (en) 2021-08-10

Similar Documents

Publication Publication Date Title
CN110176054B (zh) 用于训练神经网络模型的合成图像的生成
CN110868580B (zh) 使用可变速率着色的运动自适应渲染
US11113790B2 (en) Adding greater realism to a computer-generated image by smoothing jagged edges
US11747766B2 (en) System and method for near-eye light field rendering for wide field of view interactive three-dimensional computer graphics
CN111143174B (zh) 在共享功率/热约束下操作的硬件的最佳操作点估计器
CN111210498B (zh) 降低多边形网格的细节水平以减少被渲染几何的复杂度
US10861230B2 (en) System-generated stable barycentric coordinates and direct plane equation access
CN110675480B (zh) 用于获取纹理操作的采样位置的方法和装置
CN115379185B (zh) 使用可变速率着色的运动自适应渲染
US20230269391A1 (en) Adaptive Pixel Sampling Order for Temporally Dense Rendering
US11847733B2 (en) Performance of ray-traced shadow creation within a scene
CN112041894B (zh) 渲染期间提高涉及水面的场景的真实感
US20220198746A1 (en) Reservoir-based spatiotemporal importance resampling utilizing a global illumination data structure
US20210398253A1 (en) Adding greater realism to a computer-generated image by smoothing jagged edges
US11120609B2 (en) Reconstruction for temporally dense ray trace rendering
US11847737B2 (en) Temporal denoiser quality in dynamic scenes

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