CN110084875A - 使用计算着色器作为顶点着色器的前端 - Google Patents
使用计算着色器作为顶点着色器的前端 Download PDFInfo
- Publication number
- CN110084875A CN110084875A CN201910292881.1A CN201910292881A CN110084875A CN 110084875 A CN110084875 A CN 110084875A CN 201910292881 A CN201910292881 A CN 201910292881A CN 110084875 A CN110084875 A CN 110084875A
- Authority
- CN
- China
- Prior art keywords
- gpu
- group
- prototypical information
- prototypical
- modification
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/30—Clipping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Image Generation (AREA)
Abstract
可利用在图形处理单元(GPU)上运行的计算着色器来处理用于虚拟对象的一组图形原型信息以便生成一组修改的原型信息。可将所述一组修改的原型信息传递到在所述GPU上运行的顶点着色器。所述顶点着色器可对所述一组修改的原型信息执行顶点着色。需要强调的是,本摘要是遵照要求将会允许检索人或其他读者快速确定本技术公开的主题的摘要的规则而提供的。应理解摘要的提交不是用来解释或限制权利要求书的范围或含义。
Description
本发明是以下专利申请的分案申请:申请号:201480033091.7,申请日:2014年06月06日,发明名称:使用计算着色器作为顶点着色器的前端。
技术领域
本公开的各个方面涉及计算机图形学。具体地,本公开涉及计算着色器和顶点着色器在图形处理单元中的使用。
背景技术
图形处理通常涉及两个处理器、即中央处理单元(CPU)和图形处理单元(GPU)的协调。GPU是被设计来加速在帧缓冲区中创建旨在用于输出至显示器的图像的专用电子电路。GPU被用于嵌入式系统、移动电话、个人计算机、平板计算机、便携式游戏装置、工作站以及游戏控制台。GPU通常被设计来有效地操纵计算机图形学。GPU常常具有高度并行处理架构,这使得GPU对于以并行方式完成大型数据块处理的算法比通用CPU更有效。
CPU可向GPU发送实现特定图形处理任务的命令,例如渲染相对于图像中的前一帧已改变的特定纹理。CPU可利用图形应用程序接口(API)来协调这些绘制命令,以便发出对应于特定应用程序的虚拟环境的状态的图形渲染命令。
为了渲染特定程序的纹理,GPU可执行“图形流水线”中的一系列处理任务,以便将虚拟环境中的可视元素转化成可呈现到显示器上的图像。典型的图形流水线可包括:对虚拟空间中的虚拟对象执行某些渲染或着色操作,对所述场景中的虚拟对象执行转化和光栅化以产生适于输出显示的像素数据,以及在将渲染过的图像输出在显示器上之前对像素(或片段)执行另外的渲染任务。
在虚拟空间中常常根据已知为原型的形状来描述图像的虚拟对象,所述形状和原型一起构成虚拟场景中的对象的形状。例如,可将三维虚拟世界中待渲染的对象减小到具有根据它们在三维空间中的坐标定义的顶点的一系列不同三角形原型,由此这些多边形构成对象的表面。每个多边形可具有相关联的索引,所述索引可由图形处理系统用来将给定的多边形与其他多边形区分开。同样,每个顶点可具有相关联的索引,所述索引可用来将给定的顶点与其他顶点区分开。图形流水线可对这些原型执行某些运算,以便产生虚拟场景的可视元素并且将这种数据转化成适于由显示器的像素再现的二维格式。如本文所用,术语图形原型信息(或简单地“原型信息”)用于指代表示图形原型的数据。这种数据包括但不限于顶点信息(例如,表示顶点位置或顶点标记的数据)和多边形信息,例如,将特定顶点与特定多边形相关联的多边形标记和信息。
GPU可通过实现通常被称为着色器的程序来执行图形流水线的渲染任务。典型的图形流水线可包括:顶点着色器,所述顶点着色器可以每个顶点为基础操纵原型的某些特性;以及像素着色器(也被称为“片段着色器”),所述像素着色器在图形流水线中的顶点着色器的下游进行操作并且可在将像素数据传输到显示器之前以每个像素为基础操纵某些值。流水线还可包括在流水线中各个阶段处的其他着色器,如使用顶点着色器的输出来生成一组新的原型的几何着色器、以及可由GPU实现来执行某些其他通用计算任务的计算着色器(CS)。
因为构成虚拟对象的许多多边形可共用共同的顶点,所以着色器程序可以与标识哪个坐标属于哪个三角形的索引缓冲区结合来利用定义不同顶点的坐标的顶点缓冲区。索引缓冲区可包括索引表,所述索引表通过在顶点缓冲区中定义的绘制对象的对应顶点来标识所述绘制对象。
在任何待渲染的特定图像中,虚拟世界中的对象可包括图像中看不到的许多多边形,如背面的和屏幕外的三角形。此外,图像中的虚拟对象可包括零像素三角形,其尺寸如此之小以至于它们没有将在显示器上进行渲染的像素中心。将此类多边形从图形流水线中移除是有用的,以使图形流水线加速。
本公开正是在这种情形下产生。
发明内容
根据本发明的一个方面,一种计算机图形处理方法可包括:利用在GPU上运行的计算着色器来处理用于虚拟对象的一组图形原型以便生成一组修改的原型信息;将所述一组修改的原型信息传递到在GPU上运行的顶点着色器;以及利用顶点着色器对所述一组修改的原型执行顶点着色。
本公开的前述各方面可使用一种计算机图形系统来实现,所述计算机图形系统具有图形处理单元(GPU),所述GPU被配置来利用在GPU上运行的计算着色器处理用于虚拟对象的一组图形原型以便生成一组修改的原型信息,并且将所述一组修改的原型信息传递到在GPU上运行的顶点着色器,并且利用顶点着色器对所述一组修改的原型信息执行顶点着色。
本公开的前述各方面可使用非暂时性计算机可读介质来实现,所述非暂时性计算机可读介质具有包含在其中的计算机可读指令。计算机可读指令可被配置来在执行时实现前述图形处理方法。
在某些实现方式中,处理所述一组图形原型信息包括对所述一组图形原型信息执行位置计算以便生成一组减少的原型信息,其中所述一组减少的原型信息省略了虚拟对象的一个或多个原型信息项。在某些实现方式中,原型信息可包括表示一个或多个多边形的信息。在一些此类实现方式中,一个或多个省略的原型信息可包括对应于一个或多个背面多边形或更多屏幕外多边形或零像素多边形的索引。在一些此类实现方式中,处理所述一组图形原型信息包括挑选用于一组多边形的索引表以便移除将不会呈现在显示器上的多边形。
在一些实现方式中,所述方法还可包括:第一次编译顶点着色器指令以便生成计算着色器;以及
第二次编译顶点着色器指令以便生成顶点着色器。
在一些实现方式中,可通过环形缓冲区将所述一组修改的原型信息传递到顶点着色器。
在一些实现方式中,顶点着色器不重复由计算着色器执行的对图形原型信息的任何处理。
附图说明
通过结合附图考虑以下详细描述,可容易地理解本公开的教示,在附图中:
图1A是常规图形处理实现方式的框图。
图1B是示出根据本公开的一个方面的图形处理的框图。
图2是根据本公开的各个方面的图形处理系统的一部分的框图。
图3是根据本公开的各个方面的图形处理系统的框图。
具体实施方式
虽然出于说明目的,以下详细说明包含许多具体细节,但是本领域的普通技术人员将会了解,以下细节的许多变化和更改在本发明的范围内。因此,以下描述的本发明的各个示例性实施方案是在不损害本发明的一般性也不对本发明施加任何限制的情况下陈述的。
引言
如图1A中所见,常规图形处理通常由具有CPU和GPU的系统100来实现。CPU通常实现产生用于GPU的着色器输入的图形应用程序接口(API)102。一般来说,CPU可获得关于构成将由GPU进行渲染的对象的顶点的数据,并且渲染对象之前对所述数据执行某些处理。此类处理可包括挑选索引表。这种类型的操作涉及分析构成对象的一组多边形(例如,三角形)以确定所述多边形中是否有不需要进行渲染的多边形。可通过标识多边形的索引来识别所述一组多边形中的每个多边形。每个多边形可进一步表征为一组顶点,所述一组顶点中的每一个可具有对应索引以及一组坐标(例如,x,y,z,w)坐标。顶点是描述2D或3D空间中的点的数据结构。显示对象是由平坦表面(例如,三角形)的阵列构成,并且顶点定义所述表面的拐角的位置和其他属性。顶点可不仅与位置相关联,而且还与用于正确地渲染对象的其他图形属性相关联。此类属性可包括但不限于顶点处的颜色、顶点处表面的反射率、待应用于顶点处表面的纹理的坐标以及顶点位置处近似曲面的法线。可以使用所述法线来确定朝向光源的表面的取向以用于使用朗伯余弦定律的平面着色,或者确定每个顶点的取向以便利用冯氏(Phong)着色模拟曲面。顶点着色器104可以在执行顶点着色时使用这些属性。顶点着色器104通常将虚拟空间中的每个顶点的3D位置转化成所述顶点出现在屏幕上的位置处的2D坐标(以及Z缓冲区的深度值)。
图形API可生成用于对象的索引表,所述索引表可存储用于构成对象的多边形的索引。通过举例的方式,由图形API实现的挑选操作可确定多边形中的任一个是背面的或屏幕外的(即,在最终图像中不可见)、是否包含像素、或在边缘上是否观察到并且因此是否具有零面积。可将用于此类多边形的索引从索引表中移除以产生挑选出的索引表,所述挑选出的索引表被发送至GPU以用于进一步的处理。具体地,在GPU中运行的顶点着色器104可将挑选出的索引表中用于每个多边形的坐标从3D全局坐标转化成2D局部坐标以便在显示器上进行渲染。所得的顶点着色器输出105随后可被发送至片段着色器106,所述片段着色器106利用像素来填充所得的多边形。顶点着色器针对给予GPU的每个顶点通常运行一次。GPU硬件通常可实现有限数量的顶点着色器的实例。
在CPU硬件就处理能力而言相较于GPU相对强大的情况下,利用CPU来选择索引表效果很好。然而,随着GPU硬件变得性能更强,将期望在GPU上执行类似索引选择的任务。现代GPU可实现高度并行处理并且利用这种能力来减少图形流水线中的瓶颈将是有利的。
方法
根据本公开的各个方面,图形流水线的某些部分传统上是由CPU利用在GPU上运行的计算着色器来执行。
如图1B的方法100B中所示,根据本公开的各个方面,一组图形原型信息103'的处理可由在GPU上运行的计算着色器101来完成,并且所得的一组修改的原型信息105'可被传递到在GPU上运行的顶点着色器104,而不必使顶点着色器重复计算着色器所完成的任何处理。这避免了不得不执行利用CPU产生所述一组修改的原型信息的处理,并且从而避免与在CPU与GPU之间传送数据相关联的瓶颈。顶点着色器104可产生输出107,所述输出107可被发送至片段着色器106,所述片段着色器106利用像素来填充所得的多边形。
根据本公开的某些方面,图形API 102可如112处所指示的那样调用顶点着色器。图形API可在CPU上运行,所述CPU与GPU是分开且不同的。顶点着色器调用可由编译器114C编译一次以便生成计算着色器101并且第二次由编译器114V编译以便生成顶点着色器104。
计算着色器是可在GPU上运行以执行任意计算的着色器级。尽管计算着色器能够执行渲染,但是它们通常用于不与绘制多边形和像素直接相关的任务。计算着色器的操作不同于其他着色器级,原因在于所有其他着色器级(例如,顶点着色器和像素着色器)具有一组明确定义的输入值和输出值,它们可以是内置的或用户定义的。着色器级执行的频率是由那个级的性质指定的;例如,顶点着色器针对每个输入顶点执行一次(尽管可通过高速缓存跳过一些执行)。片段(或像素)着色器执行是由从光栅化处理生成的片段限定的。
相反,计算着色器对在很大程度上为抽象的数据“空间”进行操作。每个计算着色器决定空间的含义。计算着色器执行的数量是由用于执行计算操作的功能限定的。因此,可同时运行的计算着色实例的数量是几乎无限的。最重要的是,计算着色器根本没有用户限定的输入并且也没有输出。内置输入仅限定特定计算着色器调用在执行的“空间”中的位置。
因此,如果计算着色器想要采用一些值作为输入,那么由着色器本身来决定通过纹理访问、任意图像加载、着色器存储块或其他形式的接口获取那种数据。类似地,如果计算着色器实际上将进行任何计算,那么它必须明确地写入到图像或着色器存储块。
由于这些特性,计算着色器可用于在GPU上实现以前在CPU上执行的任务,如索引挑选。根据本公开的各个方面,这可如图2所示那样来实现。
在图2中,GPU 200可被配置来运行计算着色器202和顶点着色器204。计算着色器202可对从GPU外部的源、例如从CPU(未示出)接收到的输入数据进行操作。可以将计算着色器202所生成的输出传递到顶点着色器204以用于进一步的处理。
在某些实现方式中,可通过一个或多个环形缓冲区210将数据从计算着色器传递到顶点着色器。这种类型的缓冲区使用被配置成好像是首尾相连的单个固定尺寸的缓冲区。当缓冲区被装满并且新数据将添加至缓冲区时,现有数据被覆盖。然而,如果环形缓冲区足够大并且计算着色器和顶点着色器的操作足够同步,那么顶点着色器可在由计算着色器写入的数据被覆盖之前访问它们。环形缓冲区210重新使用同一块存储器并且储存索引数据仅持续到需要它们为止。一旦环形缓冲区210中的数据被传递到顶点着色器204,那个数据就可被覆盖。
应注意,取决于待缓冲的数据的类型,可能存在多于一个环形缓冲区。例如,索引数据可被缓冲在索引环形缓冲区IRB中并且顶点数据可被缓冲在单独的检测到的顶点环形缓冲区VRB中。环形缓冲区210可被映射到存储器206。计算着色器202可通过索引环形缓冲区IRB写入索引数据,并且通过顶点环形缓冲区VRB写入顶点数据。
虽然环形缓冲区210被映射到存储器,到环形缓冲区的写入初始位于GPU高速缓存208中。如果顶点着色器204可在数据进入GPU高速缓存208时并且在所述数据被覆盖之前并且在于GPU204上运行的其他过程因为它们需要高速缓存中的空间而将所述数据冲掉之前读取所述数据,然后所述数据将从计算着色器202进入环形缓冲区210并且离开环形缓冲区210到达顶点着色器204。可能发生通过环形缓冲区210进行的这种数据写入和读出的许多循环,而数据从未被写入到存储器206。仅在系统运行后,才将环形缓冲区210中的少量数据逐入存储器206中。因此,从计算着色器202传递到顶点着色器204的数据所需的唯一存储器带宽是相关环形缓冲区210的尺寸。通过举例而非限制的方式,索引环形缓冲区IRB的尺寸可远小于从计算着色器202传递到顶点着色器204的索引数据的总尺寸。例如,挑选出的索引表中的索引数据的总量可以是约1MB,但是索引环形缓冲区IRB的尺寸可以是仅48KB。GPU200因此仅需要48KB的存储器带宽来利用计算着色器202实现挑选。相反地,如果在运行顶点着色器204之前计算着色器202运行了很长时间,那么将需要1MB的空间来保持所有1MB的索引,直到顶点着色器204运行使用所述索引的图形任务。通过使用具有环形缓冲区210的紧密耦合系统,可大大减少用于索引数据的存储器占用量。
对索引环形缓冲区210的访问应是同步的,以使计算着色器202和顶点着色器204的操作紧密结合。这种同步涉及确保在顶点处理器204已使用数据之前,所述数据未被冲掉或覆盖。同步的速度决定所需的环形缓冲区210的尺寸。一般来说,越快的同步化导致所需的环形缓冲区的尺寸越小。此外,如果同步需要过多的开销,那么可能将瓶颈引入到GPU中。为了实现同步,GPU 200的硬件可被配置来控制对环形缓冲区210的访问,防止在顶点着色器204需要数据之前所述数据从环形缓冲区中丢弃。
存在可使用GPU 200的多种方式。例如,如上所述,计算着色器202可被配置来实现多边形挑选(例如,三角形挑选)。在这种情况下,挑选出的索引数据可通过索引环形缓冲区IRB被传递到顶点着色器。应注意,顶点的三维位置作为多边形挑选过程的一部分而生成。一旦计算着色器202已计算出顶点的位置,它们就可以被存储在顶点环形缓冲区VRB中并且被传递到顶点着色器,从而使得顶点着色器不必重新计算它们。
如上面所提到的,GPU 200可被配置来传递顶点数据和索引数据。因此,本公开的各个方面的实现方式并不限于涉及使用计算着色器生成挑选出的索引表的那些。可利用计算着色器202实现的操作的实例包括与底层物理模拟紧密相关的顶点变形。一个这种实例被称为顶点的蒙皮(skinning),其是计算机游戏或视频游戏中的常见操作。在蒙皮操作中,被传递到顶点着色器的顶点的位置以某种方式被捆绑至有时被称为“骨骼”的底层结构。骨骼可以被看作受到约束的骨骼特征(例如,关节)。可通过在CPU上运行的物理模拟来确定骨骼的运动。顶点据说是通过对应的变形矩阵被“蒙皮”到一个或多个骨骼。一般来说,每个骨骼可存在一个局部变形。每个顶点可利用针对每个引用的不同权重来引用一定数量的骨骼。为了计算顶点位置,可根据每个影响骨骼的变形矩阵来使顶点独立地变形,并且随后可基于权重来混合(内插)所述单独的结果,以便确定顶点的最终位置。
通常,计算着色器将不得不执行蒙皮工作以便确定顶点位置,随后写出针对对应多边形的索引数据,并且将那个数据传递到顶点着色器。顶点着色器随后将重新进行所有的蒙皮工作。然而,根据本公开的各个方面,可以使用环形缓冲区210来将蒙皮的顶点数据从计算着色器202传递到顶点着色器204,而不必使顶点着色器重新进行顶点计算。计算着色器202将通过顶点环形缓冲区VRB仅将蒙皮的顶点数据传递到顶点着色器。
本公开的各个方面包括被配置来实现上述特征的图形处理系统。通过举例而非限制的方式,图3示出计算机系统300的框图,所述计算机系统300可用于实现根据本公开的各个方面的图形处理。根据本公开的各个方面,系统400可以是嵌入式系统、移动电话、个人计算机、平板计算机、便携式游戏装置、工作站、游戏控制台等。
系统300通常可包括中央处理器单元(CPU)302、图形处理器单元(GPU)304以及CPU和GPU两者可访问的存储器308。CPU 302和GPU 304各自可包括一个或多个处理器核心,例如,单个核心、两个核心、四个核心、八个核心或更多。存储器308可呈提供可寻址存储器的集成电路的形式,例如RAM、DRAM等。
通过举例而非限制的方式,CPU 302和GPU 304可使用数据总线309来访问存储器308。在一些情况下,系统300包括两个或更多个不同的总线可为有用的。存储器308可包含CPU 302和GPU 304能够访问的数据。GPU 304可包括被配置来并行地执行图形处理任务的多个计算单元。每个计算单元可包括其自己的专用本地存储器,如本地数据共享。
CPU可被配置来执行CPU代码303C,所述CPU代码303C可包括利用图形、编译器和图形API的应用程序。图形API可被配置来向GPU实现的程序发出绘制命令。CPU代码303C还可实现物理模拟和其他功能。GPU可被配置来如以上关于图2所讨论的那样操作。具体地,GPU可执行GPU代码303G,所述GPU代码303G可实现如以上所讨论的计算着色器CS和顶点着色器VS。为了促进在计算着色器CS与顶点着色器VS之间传递数据,系统可包括一个或多个环形缓冲区305,所述环形缓冲区305可包括索引环形缓冲区IRB和顶点环形缓冲区VRB。GPU代码303G还可任选地实现其他类型的着色器(未示出),如像素着色器或几何着色器。每个计算单元可包括其自己的专用本地存储器,如本地数据共享。
系统300还可包括熟知的支持功能310,所述支持功能310可例如通过总线309与系统的其他组件通信。此类支持功能可包括但不限于输入/输出(I/O)元件311、电源(P/S)312、时钟(CLK)313和高速缓存314。除了高速缓存314之外,GPU 304可包括其自身的GPU高速缓存314G,并且GPU可被配置成使得在GPU 304上运行的程序可通过GPU高速缓存314G读取或写入,具体地,系统可被配置成使得在GPU上运行的计算着色器可通过GPU高速缓存写入到存储器或缓冲区,并且顶点着色器可通过GPU高速缓存314G从存储器或缓冲区中读出。
系统300可任选地包括大容量存储装置315,如磁盘驱动器、CD-ROM驱动器、闪存存储器、磁带驱动器等,以便存储程序和/或数据。系统300还可任选地包括显示器单元306和用户接口单元318以促进系统300与用户之间的交互。显示器单元306可呈平板显示器、阴极射线管(CRT)屏幕或可显示本文、数字、图形符号或图像的其他装置的形式。用户接口318可包括可以与图形用户界面(GUI)结合来使用的键盘、鼠标、操纵杆、光笔、游戏控制器或其它装置。系统300还可包括网络接口320以使得装置能够通过网络322与其他装置通信。网络322可以是例如局域网(LAN)、广域网(如因特网)、个人局域网(如蓝牙网络)或其他类型的网络。这些组件可以实施在硬件、软件或固件或这些组件中两个或更多个的一些组合中。
虽然以上为本发明的优选实施方案的完整描述,但是可以使用各种替代、修改和等效物。因此,本发明的范围不应参考以上描述确定,而是应替代地参考随附权利要求书以及其整个范围的等效物确定。本文所描述的任何特征(不论优选与否)可与本文所描述的任何其它特征组合(不论优选与否)。在随附权利要求书中,不定冠词“一个”或“一种”是指冠词后的一个或多个项的量,除非其中另外明确说明。随附权利要求书不应被理解为包括设备加功能限制,除非这种限制在给定权利要求中使用短语“用于……的装置”来明确陈述。
Claims (22)
1.一种计算机图形处理方法,其包括:
利用在GPU上运行的计算着色器来处理用于虚拟对象的一组图形原型信息以便生成一组修改的原型信息;
通过将与所述一组修改的原型信息相对应的数据明确地写入在GPU上运行的计算着色器,将所述一组修改的原型信息传递到在GPU上运行的顶点着色器;以及
利用所述顶点着色器对所述一组修改的原型信息执行顶点着色,其中
所述计算着色器被配置为通过GPU缓存写入到环形缓冲区以及所述顶点着色器被配置为通过所述GPU缓存从所述环形缓冲区读出,
与所述一组修改的原型信息相对应的数据是通过所述计算着色器被写入到所述环形缓冲区和GPU缓存,
所述顶点着色器访问所述一组修改的原型信息,并且不重新计算由所述计算着色器确定的顶点位置。
2.如权利要求1所述的方法,其中利用在GPU上运行的计算着色器处理所述一组图形原型信息包括对所述一组图形原型信息执行位置计算以便生成一组减少的原型信息,其中所述一组减少的原型信息省略了所述虚拟对象的一个或多个原型信息项。
3.如权利要求2所述的方法,其中所述原型信息包括表示一个或多个多边形的信息。
4.如权利要求3所述的方法,其中所述一个或多个省略的原型信息项包括对应于一个或多个背面多边形的索引。
5.如权利要求3所述的方法,其中所述一个或多个省略的原型信息项包括对应于一个或多个屏幕外多边形的索引。
6.如权利要求3所述的方法,其中所述一个或多个省略的原型信息项包括对应一个或多个零像素多边形的索引。
7.如权利要求3所述的方法,其中所述处理用于虚拟对象的一组图形原型信息包括挑选用于一组多边形的索引表以便移除将不会呈现在显示器上的多边形。
8.如权利要求1所述的方法,其还包括:
第一次编译顶点着色器指令以便生成所述计算着色器;以及
第二次编译所述顶点着色器指令以便生成所述顶点着色器。
9.如权利要求1所述的方法,其中所述将所述一组修改的原型信息传递到顶点着色器包括通过环形缓冲区来传递所述一组修改的原型信息。
10.如权利要求1所述的方法,其中所述顶点着色器不重复由所述计算着色器执行的对所述图形原型信息的任何处理。
11.一种计算机图形系统,其包括:
图形处理单元(GPU),所述GPU被配置来利用在GPU上运行的计算着色器处理用于虚拟对象的一组图形原型信息以便:生成一组修改的原型信息,并且通过将与所述一组修改的原型信息相对应的数据明确地写入在GPU上运行的计算着色器,将所述一组修改的原型信息传递到在GPU上运行的顶点着色器,并且利用所述顶点着色器对所述一组修改的原型信息执行顶点着色,其中
所述计算着色器被配置为通过GPU缓存写入到环形缓冲区以及所述顶点着色器被配置为通过所述GPU缓存从所述环形缓冲区读出,
与所述一组修改的原型信息相对应的数据是通过所述计算着色器被写入到所述环形缓冲区和GPU缓存,
所述顶点着色器访问与所述一组修改的原型信息相对应的数据,并且不重新计算由所述计算着色器确定的顶点位置。
12.如权利要求11所述的系统,其中利用在GPU上运行的计算着色器处理所述一组图形原型信息包括对所述一组图形原型信息执行位置计算以便生成一组减少的原型信息,其中所述一组减少的原型信息省略了所述虚拟对象的一个或多个原型信息项。
13.如权利要求12所述的系统,其中所述原型信息包括表示一个或多个多边形的信息。
14.如权利要求13所述的系统,其中所述多边形是三角形。
15.如权利要求13所述的系统,其中所述一个或多个省略的原型信息项包括对应于一个或多个背面多边形的索引。
16.如权利要求13所述的系统,其中所述一个或多个省略的原型信息项包括对应于一个或多个屏幕外多边形的索引。
17.如权利要求13所述的系统,其中所述一个或多个省略的原型信息项包括对应一个或多个零像素多边形的索引。
18.如权利要求13所述的系统,其中所述处理用于虚拟对象的一组图形原型信息包括挑选用于一组多边形的索引表以便移除将不会呈现在显示器上的多边形。
19.如权利要求11所述的系统,其还包括中央处理单元(CPU),其中所述CPU被配置来第一次编译顶点着色器指令以便生成所述计算着色器;并且第二次编译所述顶点着色指令以便生成所述顶点着色器。
20.如权利要求11所述的系统,其中所述GPU还包括环形缓冲区,其中所述GPU被配置来通过所述环形缓冲区将所述一组修改的原型信息从所述计算着色器传递到所述顶点着色器。
21.如权利要求11所述的系统,其中所述系统是嵌入式系统、移动电话、个人计算机、平板计算机、便携式游戏装置、工作站或游戏控制台。
22.一种具有包含在其中的计算机可读指令的非暂时性计算机可读介质,所述计算机可读指令被配置来在执行时实现一种图形处理方法,所述图形处理方法包括:
利用在GPU上运行的计算着色器来处理用于虚拟对象的一组图形原型信息以便生成一组修改的原型信息;
通过将与所述一组修改的原型信息相对应的数据明确地写入在GPU上运行的计算着色器,将所述一组修改的原型信息传递到在GPU上运行的顶点着色器;以及
利用所述顶点着色器对所述一组修改的原型信息执行顶点着色,其中
所述计算着色器被配置为通过GPU缓存写入到环形缓冲区以及所述顶点着色器被配置为通过所述GPU缓存从所述环形缓冲区读出,
与所述一组修改的原型信息相对应的数据是通过所述计算着色器被写入到所述环形缓冲区和GPU缓存,
所述顶点着色器访问所述一组修改的原型信息,并且不重新计算由所述计算着色器确定的顶点位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910292881.1A CN110084875B (zh) | 2013-06-10 | 2014-06-06 | 使用计算着色器作为顶点着色器的前端 |
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361833229P | 2013-06-10 | 2013-06-10 | |
US61/833,229 | 2013-06-10 | ||
US14/297,248 | 2014-06-05 | ||
US14/297,248 US10176621B2 (en) | 2013-06-10 | 2014-06-05 | Using compute shaders as front end for vertex shaders |
PCT/US2014/041390 WO2014200867A1 (en) | 2013-06-10 | 2014-06-06 | Using compute shaders as front end for vertex shaders |
CN201480033091.7A CN105556571B (zh) | 2013-06-10 | 2014-06-06 | 使用计算着色器作为顶点着色器的前端 |
CN201910292881.1A CN110084875B (zh) | 2013-06-10 | 2014-06-06 | 使用计算着色器作为顶点着色器的前端 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480033091.7A Division CN105556571B (zh) | 2013-06-10 | 2014-06-06 | 使用计算着色器作为顶点着色器的前端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110084875A true CN110084875A (zh) | 2019-08-02 |
CN110084875B CN110084875B (zh) | 2023-04-07 |
Family
ID=52005082
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910292881.1A Active CN110084875B (zh) | 2013-06-10 | 2014-06-06 | 使用计算着色器作为顶点着色器的前端 |
CN201480033091.7A Active CN105556571B (zh) | 2013-06-10 | 2014-06-06 | 使用计算着色器作为顶点着色器的前端 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480033091.7A Active CN105556571B (zh) | 2013-06-10 | 2014-06-06 | 使用计算着色器作为顶点着色器的前端 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10176621B2 (zh) |
EP (2) | EP3699869A1 (zh) |
JP (1) | JP6309620B2 (zh) |
CN (2) | CN110084875B (zh) |
WO (1) | WO2014200867A1 (zh) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10096079B2 (en) | 2013-06-10 | 2018-10-09 | Sony Interactive Entertainment Inc. | Fragment shaders perform vertex shader computations |
GB2521171B (en) * | 2013-12-11 | 2020-02-05 | Advanced Risc Mach Ltd | Clipping of graphics primitives |
US9495790B2 (en) | 2014-04-05 | 2016-11-15 | Sony Interactive Entertainment America Llc | Gradient adjustment for texture mapping to non-orthonormal grid |
US10068311B2 (en) | 2014-04-05 | 2018-09-04 | Sony Interacive Entertainment LLC | Varying effective resolution by screen location by changing active color sample count within multiple render targets |
US9836816B2 (en) | 2014-04-05 | 2017-12-05 | Sony Interactive Entertainment America Llc | Varying effective resolution by screen location in graphics processing by approximating projection of vertices onto curved viewport |
US10783696B2 (en) | 2014-04-05 | 2020-09-22 | Sony Interactive Entertainment LLC | Gradient adjustment for texture mapping to non-orthonormal grid |
US9865074B2 (en) | 2014-04-05 | 2018-01-09 | Sony Interactive Entertainment America Llc | Method for efficient construction of high resolution display buffers |
US9652882B2 (en) | 2014-04-05 | 2017-05-16 | Sony Interactive Entertainment America Llc | Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location |
US9710881B2 (en) | 2014-04-05 | 2017-07-18 | Sony Interactive Entertainment America Llc | Varying effective resolution by screen location by altering rasterization parameters |
US11302054B2 (en) | 2014-04-05 | 2022-04-12 | Sony Interactive Entertainment Europe Limited | Varying effective resolution by screen location by changing active color sample count within multiple render targets |
EP3057067B1 (en) * | 2015-02-16 | 2017-08-23 | Thomson Licensing | Device and method for estimating a glossy part of radiation |
US9760113B2 (en) | 2015-02-20 | 2017-09-12 | Sony Interactive Entertainment America Llc | Backward compatibility through use of spoof clock and fine grain frequency control |
US10235219B2 (en) | 2015-07-27 | 2019-03-19 | Sony Interactive Entertainment America Llc | Backward compatibility by algorithm matching, disabling features, or throttling performance |
US11403099B2 (en) | 2015-07-27 | 2022-08-02 | Sony Interactive Entertainment LLC | Backward compatibility by restriction of hardware resources |
US9892024B2 (en) | 2015-11-02 | 2018-02-13 | Sony Interactive Entertainment America Llc | Backward compatibility testing of software in a mode that disrupts timing |
JP6788017B2 (ja) | 2016-01-22 | 2020-11-18 | 株式会社ソニー・インタラクティブエンタテインメント | 後方互換性のためのなりすましcpuid |
KR102160414B1 (ko) | 2016-01-22 | 2020-09-28 | 주식회사 소니 인터랙티브 엔터테인먼트 | 하위 호환성을 위한 레거시 버스 동작 시뮬레이션 |
US10102662B2 (en) | 2016-07-27 | 2018-10-16 | Advanced Micro Devices, Inc. | Primitive culling using automatically compiled compute shaders |
US10460513B2 (en) | 2016-09-22 | 2019-10-29 | Advanced Micro Devices, Inc. | Combined world-space pipeline shader stages |
US10504270B2 (en) * | 2016-12-22 | 2019-12-10 | Apple Inc. | Resource synchronization for graphics processing |
US10223822B2 (en) * | 2016-12-22 | 2019-03-05 | Apple Inc. | Mid-render compute for graphics processing |
US10685473B2 (en) * | 2017-05-31 | 2020-06-16 | Vmware, Inc. | Emulation of geometry shaders and stream output using compute shaders |
US10726605B2 (en) * | 2017-09-15 | 2020-07-28 | Intel Corporation | Method and apparatus for efficient processing of derived uniform values in a graphics processor |
WO2020235979A1 (ko) | 2019-05-23 | 2020-11-26 | 삼성전자 주식회사 | 포인트 클라우드 기반 데이터를 렌더링하는 방법 및 장치 |
US11416961B2 (en) | 2020-05-29 | 2022-08-16 | Samsung Electronics Co., Ltd. | Variable entry transitional ring storage for efficiently accessing graphics states |
CN111754423B (zh) * | 2020-06-05 | 2024-03-22 | 北京有竹居网络技术有限公司 | 高模gpu蒙皮平滑处理方法、装置及电子设备 |
US11380047B2 (en) * | 2020-06-05 | 2022-07-05 | Qualcomm Incorporated | Methods and apparatus for order-independent occlusion computations |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102598061A (zh) * | 2009-09-03 | 2012-07-18 | 先进微装置公司 | 具有多个着色器引擎的处理单元 |
WO2013036358A1 (en) * | 2011-09-07 | 2013-03-14 | Qualcomm Incorporated | Memory copy engine for graphics processing |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5615402A (en) * | 1993-10-18 | 1997-03-25 | Cyrix Corporation | Unified write buffer having information identifying whether the address belongs to a first write operand or a second write operand having an extra wide latch |
US6552723B1 (en) * | 1998-08-20 | 2003-04-22 | Apple Computer, Inc. | System, apparatus and method for spatially sorting image data in a three-dimensional graphics pipeline |
US6717577B1 (en) | 1999-10-28 | 2004-04-06 | Nintendo Co., Ltd. | Vertex cache for 3D computer graphics |
US7009615B1 (en) | 2001-11-30 | 2006-03-07 | Nvidia Corporation | Floating point buffer system and method for use during programmable fragment processing in a graphics pipeline |
US6897871B1 (en) | 2003-11-20 | 2005-05-24 | Ati Technologies Inc. | Graphics processing architecture employing a unified shader |
US20050122338A1 (en) * | 2003-12-05 | 2005-06-09 | Michael Hong | Apparatus and method for rendering graphics primitives using a multi-pass rendering approach |
DE102004009274A1 (de) | 2004-02-26 | 2005-09-15 | Robert Bosch Gmbh | Vorrichtung zur Bereitstellung und/oder Auswertung von Navigationsdaten sowie Verfahren zur Freischaltung von Navigationsdaten in einem Navigationssystem |
US7552316B2 (en) | 2004-07-26 | 2009-06-23 | Via Technologies, Inc. | Method and apparatus for compressing instructions to have consecutively addressed operands and for corresponding decompression in a computer system |
US8023752B1 (en) | 2005-03-04 | 2011-09-20 | Nvidia Corporation | Decompression of 16 bit data using predictor values |
US7468726B1 (en) | 2005-12-01 | 2008-12-23 | Nvidia Corporation | Culling in a vertex processing unit |
US8595747B2 (en) | 2005-12-29 | 2013-11-26 | Sony Computer Entertainment Inc. | Efficient task scheduling by assigning fixed registers to scheduler |
US20070171219A1 (en) | 2006-01-20 | 2007-07-26 | Smedia Technology Corporation | System and method of early rejection after transformation in a GPU |
CN100395778C (zh) | 2006-03-15 | 2008-06-18 | 威盛电子股份有限公司 | 绘图系统以及绘图控制方法 |
US7928990B2 (en) * | 2006-09-27 | 2011-04-19 | Qualcomm Incorporated | Graphics processing unit with unified vertex cache and shader register file |
KR100882842B1 (ko) | 2007-02-26 | 2009-02-17 | 삼성전자주식회사 | 피포를 포스트 버텍스 캐쉬처럼 사용하기 위한 기하학 처리장치와 그 방법 |
GB0703974D0 (en) | 2007-03-01 | 2007-04-11 | Sony Comp Entertainment Europe | Entertainment device |
US8355028B2 (en) | 2007-07-30 | 2013-01-15 | Qualcomm Incorporated | Scheme for varying packing and linking in graphics systems |
US8254701B1 (en) | 2007-12-13 | 2012-08-28 | Nvidia Corporation | Data compression using a geometry shading unit |
US8769207B2 (en) | 2008-01-16 | 2014-07-01 | Via Technologies, Inc. | Caching method and apparatus for a vertex shader and geometry shader |
US8436854B2 (en) | 2009-05-29 | 2013-05-07 | Qualcomm Incorporated | Graphics processing unit with deferred vertex shading |
US8542247B1 (en) * | 2009-07-17 | 2013-09-24 | Nvidia Corporation | Cull before vertex attribute fetch and vertex lighting |
US8743131B2 (en) | 2009-09-10 | 2014-06-03 | Advanced Micro Devices, Inc. | Course grain command buffer |
US8810592B2 (en) | 2009-10-09 | 2014-08-19 | Nvidia Corporation | Vertex attribute buffer for inline immediate attributes and constants |
US8760460B1 (en) * | 2009-10-15 | 2014-06-24 | Nvidia Corporation | Hardware-managed virtual buffers using a shared memory for load distribution |
US8619085B2 (en) | 2010-03-08 | 2013-12-31 | Broadcom Corporation | Method and system for compressing tile lists used for 3D rendering |
US9349154B2 (en) | 2010-04-05 | 2016-05-24 | Nvidia Corporation | Bindless texture and image API |
GB2483502B (en) | 2010-09-10 | 2014-05-07 | Imagination Tech Ltd | Random accessible lossless parameter data compression for title based 3D computer graphics system |
US8499305B2 (en) * | 2010-10-15 | 2013-07-30 | Via Technologies, Inc. | Systems and methods for performing multi-program general purpose shader kickoff |
WO2012074092A1 (ja) | 2010-12-03 | 2012-06-07 | 株式会社ディジタルメディアプロフェッショナル | 画像処理装置 |
GB201103699D0 (en) | 2011-03-03 | 2011-04-20 | Advanced Risc Mach Ltd | Graphic processing |
US9256915B2 (en) * | 2012-01-27 | 2016-02-09 | Qualcomm Incorporated | Graphics processing unit buffer management |
US8977823B2 (en) * | 2012-09-16 | 2015-03-10 | International Business Machines Corporation | Store buffer for transactional memory |
CN103020205B (zh) | 2012-12-05 | 2018-07-31 | 中科天玑数据科技股份有限公司 | 一种分布式文件系统上基于硬件加速卡的压缩解压缩方法 |
-
2014
- 2014-06-05 US US14/297,248 patent/US10176621B2/en active Active
- 2014-06-06 EP EP20169484.1A patent/EP3699869A1/en active Pending
- 2014-06-06 CN CN201910292881.1A patent/CN110084875B/zh active Active
- 2014-06-06 CN CN201480033091.7A patent/CN105556571B/zh active Active
- 2014-06-06 EP EP14811318.6A patent/EP3008701B1/en active Active
- 2014-06-06 JP JP2016519564A patent/JP6309620B2/ja active Active
- 2014-06-06 WO PCT/US2014/041390 patent/WO2014200867A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102598061A (zh) * | 2009-09-03 | 2012-07-18 | 先进微装置公司 | 具有多个着色器引擎的处理单元 |
WO2013036358A1 (en) * | 2011-09-07 | 2013-03-14 | Qualcomm Incorporated | Memory copy engine for graphics processing |
Non-Patent Citations (2)
Title |
---|
MATTHIAS NIESSNER ET AL: "Feature-adaptive GPU rendering of Catmull-Clark subdivision surfaces", 《ACM TRANSACTIONS ON GRAPHICS》 * |
WOLFGANG ENGEL: "《GPU Pro4 Advanced Rendering Techniques》", 4 February 2013, CRC PRESS * |
Also Published As
Publication number | Publication date |
---|---|
EP3008701A4 (en) | 2017-02-22 |
WO2014200867A1 (en) | 2014-12-18 |
CN110084875B (zh) | 2023-04-07 |
JP2016524242A (ja) | 2016-08-12 |
CN105556571B (zh) | 2019-05-03 |
EP3008701A1 (en) | 2016-04-20 |
JP6309620B2 (ja) | 2018-04-11 |
US20140362081A1 (en) | 2014-12-11 |
CN105556571A (zh) | 2016-05-04 |
EP3699869A1 (en) | 2020-08-26 |
US10176621B2 (en) | 2019-01-08 |
EP3008701B1 (en) | 2020-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105556571B (zh) | 使用计算着色器作为顶点着色器的前端 | |
CN105283900B (zh) | 用于压缩顶点着色器输出参数的方案 | |
CN105556565B (zh) | 片段着色器执行顶点着色器计算 | |
Kessenich et al. | OpenGL Programming Guide: The official guide to learning OpenGL, version 4.5 with SPIR-V | |
CN104183005B (zh) | 图形处理单元和基于图块的渲染方法 | |
KR101349171B1 (ko) | 3차원 그래픽 가속기 및 그것의 픽셀 분배 방법 | |
JP2018060556A (ja) | グラフィック処理ユニットにおける視界ベースの状態更新 | |
CN101371247A (zh) | 用于图形处理器的并行阵列结构 | |
CN102915232B (zh) | 一种3d控件的交互方法及通信终端 | |
JP2007514230A5 (zh) | ||
CN107392836A (zh) | 使用图形处理管线实现的立体多投影 | |
CN114092613A (zh) | 对体素进行即时渲染的方法 | |
CN108604386A (zh) | 用纹理单元中的反馈来进行多步纹理处理 | |
Nah et al. | MobiRT: an implementation of OpenGL ES-based CPU-GPU hybrid ray tracer for mobile devices | |
JP5864474B2 (ja) | 空間を分割してグラフィックスを処理する画像処理装置及び画像処理方法 | |
McMullen et al. | Graphics on web platforms for complex systems modelling and simulation | |
Mortensen et al. | Real-time global illumination for vr applications | |
Xin et al. | Intuitive volume rendering on mobile devices | |
CN116245983A (zh) | 模型组装动画的生成方法、装置、存储介质及电子装置 | |
KR20230158191A (ko) | 영상 렌더링 방법 및 장치 | |
De Melo Aroxa | Efficient Ray Tracing For Mobile Devices | |
Gastelum | Volume Visualization and Compositing on Large-Scale Displays Using Handheld Touchscreen Interaction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |