CN105556565A - 片段着色器执行顶点着色器计算 - Google Patents
片段着色器执行顶点着色器计算 Download PDFInfo
- Publication number
- CN105556565A CN105556565A CN201480033281.9A CN201480033281A CN105556565A CN 105556565 A CN105556565 A CN 105556565A CN 201480033281 A CN201480033281 A CN 201480033281A CN 105556565 A CN105556565 A CN 105556565A
- Authority
- CN
- China
- Prior art keywords
- vertex
- coloring device
- pixel coloring
- index
- access
- 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
- 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
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
图形处理可包括利用GPU来实现顶点着色器和像素着色器。可以将从顶点着色器输出的顶点索引写入到高速缓存。可以利用像素着色器访问写入到高速缓存的顶点索引并且可以利用像素着色器从存储器单元访问与所述顶点索引相关联的顶点参数值。需要强调的是,本摘要是遵照要求将会允许检索人或其他读者快速确定本技术公开的主题的摘要的规则而提供的。应理解摘要的提交不是用来解释或限制权利要求书的范围或含义。
Description
公开领域
本公开的各个方面涉及计算机图形学。具体地,本公开涉及顶点着色器和像素着色器在图形处理单元中的使用。
发明背景
图形处理通常涉及两个处理器、即中央处理单元(CPU)和图形处理单元(GPU)的协调。GPU是被设计来加速在帧缓冲区中创建旨在用于输出至显示器的图像的专用电子电路。GPU用于嵌入式***、平板计算机、便携式游戏装置、移动电话、个人计算机、工作站以及游戏控制台中。GPU通常被设计来有效地操纵计算机图形学。GPU常常具有高度并行处理架构,这使得GPU对于以并行方式完成大型数据块处理的算法比通用CPU更有效。
CPU可向GPU发送实现特定图形处理任务的命令,例如渲染相对于图像中的前一帧已改变的特定纹理。CPU可利用图形应用程序接口(API)来协调这些绘制命令,以便发出对应于特定应用程序的虚拟环境的状态的图形渲染命令。
为了渲染特定程序的纹理,GPU可执行“图形流水线”中的一系列处理任务,以便将虚拟环境中的可视元素转化成可呈现到显示器上的图像。典型的图形流水线可包括:对虚拟空间中的虚拟对象执行某些渲染或着色操作,对所述场景中的虚拟对象执行转化和光栅化以产生呈适于输出到显示器的形式的像素数据,以及在将渲染过的图像输出在显示器上之前对像素(或片段)执行另外的渲染任务。
在虚拟空间中常常根据已知为原型的形状来描述图像的虚拟对象,所述形状和原型一起构成虚拟场景中的对象的形状。例如,可将三维虚拟世界中待渲染的对象减小到具有根据它们在三维空间中的坐标定义的顶点的一系列不同三角形原型,由此这些多边形构成对象的表面。每个多边形可具有相关联的索引,所述索引可由图形处理***用来将给定的多边形与其他多边形区分开。同样,每个顶点可具有相关联的索引,所述索引可用来将给定的顶点与其他顶点区分开。图形流水线可对这些原型执行某些运算,以便产生虚拟场景的可视元素并且将这种数据转化成适于由显示器的像素再现的二维格式。如本文所用,术语图形原型信息(或简单地“原型信息”)用于指代表示图形原型的数据。这种数据包括但不限于顶点信息(例如,代表顶点位置或顶点标记的数据)和多边形信息,例如,将特定顶点与特定多边形相关联的多边形标记和信息。
GPU可通过实现通常被称为着色器的程序来执行图形流水线的渲染任务。典型的图形流水线可包括:顶点着色器,所述顶点着色器可以每个顶点为基础操纵原型的某些特性;以及像素着色器(也被称为“片段着色器”),所述像素着色器在图形流水线中的顶点着色器的下游进行操作并且可在将像素数据传输到显示器之间以每个像素为基础操纵某些值。流水线还可包括在流水线中各个阶段处的其他着色器,如使用顶点着色器的输出来产生一组新的原型(或对应的原型信息)的几何着色器、以及可由GPU实现来执行某些其他通用计算任务的计算着色器(CS)。
在流水线中与处理图形相关的一个难题是,在数据被输入或输出至流水线中的各个着色器时可能出现某些瓶颈并且降低性能。此外,希望向运行可视元素的特定应用程序的开发人员提供对着色器如何利用各种视觉参数和底层数据的大量的控制,以便允许他们优化渲染过程。
本发明的各个方面正是在此背景下产生。
发明内容
根据本公开的各个方面,一种计算机图形处理方法可包括:将从顶点着色器输出的顶点索引写入到高速缓存;利用像素着色器访问写入到所述高速缓存的所述顶点索引;以及利用所述像素着色器从存储器单元访问与所述顶点索引相关联的顶点参数值。
在本公开的一些实现方式中,所述计算机图形处理方法可包括利用像素着色器对顶点参数值执行顶点着色器计算。
在一些实现方式中,所述计算机图形处理方法可包括利用像素着色器内插顶点参数值。
在一些实现方式中,访问顶点索引可包括:将所述顶点索引从高速缓存复制到GPU的本地存储器单元;以及利用像素着色器从所述本地存储器单元访问所述索引。
在一些实现方式中,顶点着色器计算可包括在三维虚拟空间中操纵原型的顶点的视觉效果。
在一些实现方式中,访问顶点参数值可包括访问三角形原型的所有三个顶点的参数值。
在一些实现方式中,所述方法还可包括在所述访问顶点参数值之后:利用像素着色器对顶点参数值执行顶点着色器计算;利用像素着色器内插所述参数值;利用像素着色器对内插的参数值执行像素着色器计算。
在一些实现方式中,顶点着色器输出被限制为顶点位置和顶点索引,并且像素着色器可以在所述访问顶点索引之后执行任何其余的顶点着色器计算。
在一些实现方式中,存储器单元是***的主存储器。
在一些实现方式中,参数值可以存储在主存储器的顶点缓冲区中。
根据本公开的各个方面,一种图形处理***可包括:图形处理单元(GPU);存储器单元;以及高速缓存;并且所述***可被配置来实现一种图形处理方法,所述图形处理方法可包括:利用GPU实现顶点着色器和像素着色器;将从顶点着色器输出的顶点索引写入到高速缓存;利用像素着色器访问写入到高速缓存的顶点索引;以及利用像素着色器从存储器单元访问与所述顶点索引相关联的顶点参数值。
在一些实现方式中,存储器单元可以是***的主存储器单元。
在一些实现方式中,GPU可包括多个计算单元和多个本地存储器单元,其中所述本地存储器单元中的每一个与所述计算单元中的相应一个相关联。
在一些实现方式中,所述访问顶点索引可包括:将顶点索引从高速缓存复制到本地存储器单元;以及利用像素着色器从本地存储器单元访问所述索引。
在一些实现方式中,高速缓存可以与GPU集成在一起。
根据本公开的各个方面,一种非暂时性计算机可读介质可具有包含在其中的计算机可读指令,所述计算机可读指令被配置来在执行时实现一种图形处理方法,所述图形处理方法包括:将从顶点着色器输出的顶点索引写入到高速缓存;利用像素着色器访问写入到高速缓存的顶点索引;以及利用像素着色器从存储器单元访问与所述顶点索引相关联的顶点参数值。
附图简述
通过结合附图考虑以下详细描述,可容易地理解本公开的教示,在附图中:
图1A-1C是示出各种图形处理技术的三角形原型的示意图。
图1D-1E是传统图形处理技术的流程图。
图2A是与图1E的实现方式具有相似性的传统图形处理技术的示意图。
图2B是根据本公开的各个方面的图形处理技术的示意图。
图3是根据本公开的各个方面的图形处理技术的流程图。
图4是用于实现根据本公开的各个方面的图形处理技术的***的示意图。
附图说明
虽然出于说明目的,以下详细描述包含许多具体细节,但是本领域的普通技术人员将会了解,以下细节的许多变化和更改在本发明的范围内。因此,以下描述的本发明的各个示例性实施方案是在不损害本发明的一般性也不对本发明施加任何限制的情况下陈述的。
引言
根据本公开的各个方面,顶点着色器输出可减少为仅输出位置和顶点索引,并且像素着色器可执行其余的顶点着色器计算以及通常的像素着色器计算,从而可导致对象的加速渲染。
根据本公开的各个方面,像素着色器可直接从***存储器访问参数值以便对顶点的原始参数值执行顶点着色器计算。像素着色器随后可内插参数值并且在将渲染的像素从像素着色器输出到帧缓冲区之前执行像素着色器计算。可通过以下方式减少与参数值的吞吐量和复制相关联的瓶颈:从顶点着色器输出顶点索引和不完整的输出参数,并且通过像素着色器使用这些索引来标识存储器中的参数值。
图1A-1C示出图形处理技术的各个方面以及可以如何使用顶点参数的内插来处理图形并渲染图像中的虚拟对象。图形处理技术可利用重心内插过程,以便定义在待显示的虚拟对象的各个位置处的参数值。通过举例而非限制的方式,参数值可以是位于虚拟空间中的原型的每一个顶点处的位置、颜色、纹理坐标、照明等等,并且这些顶点参数的重心内插可用于确定原型内任意位置处的参数值。例如,当用于在显示器的像素上渲染虚拟平面时,任意数量的像素可位于原型内,并且可以使用顶点参数值的这种内插来确定原型内的像素位置处的对应参数值。
图1A中描绘使用重心坐标***的内插过程的各个例示性方面。图1A描绘可用作用于利用GPU处理图形的原型的多边形(例如,三角形)102。应注意,在图形处理中通常使用三角形作为原型,因为它们是具有最小数量的顶点(三个)的二维形状,并且每个三角形保证是平面的。待渲染图像中的虚拟对象(如三维对象)的表面可由定向在虚拟空间中的大量三角形原型102组成。三角形102可包括各自分别具有特定参数值P0、P1、P2的顶点104a、104b、104c。
通过内插顶点参数值P0、P1、P2,可以使用三角形102的各角部处的参数之间的线性关系来定义所述形状中任意点处的参数值Pi,j。当具有虚拟对象的图像在显示器上的屏幕空间中被渲染时,坐标i,j可对应于像素(或像素中心)的位置。因此,可以使用这种内插过程来确定位于原型102中的像素中的任一个的参数值。在虚拟对象的任意给定三角形102中,可存在任何数量的位于所述三角形内的像素中心。例如,可存在零个、一个、十个或更多个位于原型内的像素。
为了内插位置i,j处的顶点参数,将顶点参数值中的一个从其他顶点的参数值中减去,并且将这些减去的值乘以对应于期望参数值位置的三角形102内的每一个重心坐标位置。这可以数学方式表达如下,其中将顶点参数P0从其他两个顶点参数P1、P2中减去,并且将这些减去的值乘以对应的坐标值i,j:
Pi,j=P0+(P1-P0)i+(P2-P0)j
图1B描绘类似于图1A的三角形102的多个三角形102a-d,它们可用于为图形处理应用程序渲染虚拟对象。图1B和以下描述是简化的示意性描述,以便说明在实现图形处理技术时如何利用并存储顶点参数数据的各个方面。
三角形102a-d中的每一个具有三个顶点,所述顶点可各自具有对应的参数值。此外,三角形102a-d共用许多共同的顶点,并且因此,对于不同的三角形来说许多参数值是共同的。可为每个顶点分配一个标识索引,而不是多次存储参数值以使得它们与每一个三角形相关联。通过简化的实例,为图1B中所示的顶点各自分配标识索引0、1、3、9、10、4。这些索引和它们所关联的参数值可存储在通常所知的“顶点缓冲器”中。此外,三角形102a-d中的每一个可通过它们的对应顶点索引来标识,例如三角形102a可通过(0,1,3)来标识、三角形102b可由(1,3,9)来标识等,并且这种信息可存储在通常所知的“索引缓冲器”中。因此,共同的顶点参数值可通过在缓冲器中标识的相应索引而与每个不同的三角形102a-d相关联。
图1B还描绘重叠在原型102a-d上的一系列像素位置a-f。可以使用例如如以上参考图1A所讨论的参数值的内插基于每个顶点参数值和标识每个原型的索引来确定每个原型内的像素位置a-f中的每一个处的参数值。通过举例而非限制的方式,三角形102a-d可定向在三维虚拟环境中,并且像素位置a-f可对应于用于显示渲染过的虚拟环境的图像的二维屏幕的像素。
图1C描绘图1B的三角形102a和102b,以便示出可以如何将参数值分配给位于三角形内的像素a、b、c的各个方面。如图1C中所示,可为每个不同的三角形102a、102b唯一地分配顶点参数值P0、P1、P2,并且基于存储在索引缓冲器中的索引0、1、3、9来标识所述顶点参数值P0、P1、P2。可通过从顶点中访问对应的参数值并且将参数值P0从其余缓冲器顶点参数P1、P2中减去(例如,如以上参考图1A所述的)来执行内插。
作为内插每个原型的参数值的替代方案,可使用被称作“平面着色”的技术。通过平面着色,可为每个三角形定义“诱发顶点(provokingvertex)”,例如P0,并且与其余顶点的差例如P1-P0和P2-P0随后被简单地归零。利用诱发顶点的参数值从顶点着色器输出位于三角形内的任意像素。这可节省与内插计算相关联的显著开销;然而,这可能导致虚拟对象的小平面化外观,所述小平面化外观在许多应用中可能是不合乎期望的。
在图1D中,描绘了根据一种传统方法100a执行顶点参数的内插的各个例示性方面的流程图,通过所述方法100a可以在像素着色器接收顶点参数之前执行整个内插。图1D的方法100a利用如图1B和图1C中所示的三角形102a-d来示出如何与顶点着色器110和像素着色器112相协调地内插顶点参数以便确定像素a-f的参数值(应注意,a-f可更准确地被称作片段或预像素,因为可在将它们输出到帧缓冲器之前通过像素着色器来执行进一步的修改,但出于说明目的,本文将它们简单地称作像素)。
方法100a可包括利用顶点着色器110执行某些顶点着色计算114,其可包括根据从图形API接收到的协调渲染过的图形与应用程序的虚拟环境的绘制命令、以每个顶点为基础的虚拟对象的顶点参数的某些操作。如图1D中所示,顶点着色器110可为三角形102a-d中的每一个输出对应的顶点参数值P0、P1、P2。
在116处针对每个三角形内插这些顶点参数值P0、P1、P2,以便确定位于对应三角形102a-d内的像素位置a-f处的参数值Pa-Pf。在116处的内插包括:从其他两个顶点参数P1、P2中减去顶点参数P0;将这些减去的值乘以它们的对应重心坐标;以及加上相乘后的值以便内插如由(例如,如参考图1A所述的)坐标定义的像素位置处的参数。在图1D所描绘的技术中,内插116完全由与GPU相关联的参数内插硬件组件在像素着色器程序112接收参数值作为输入之前执行。像素着色器112可通过在118处对像素a-f中的每一个(即,以每个像素为基础)执行某些像素着色计算来操纵每个像素a-f,从而产生输出像素120,所述输出像素120随后可存储在帧缓冲器中并且可作为渲染图像输出在显示器上。
在图1E中,描绘了根据另一种传统方法100b执行顶点参数的内插的各个例示性方面的替代流程图。图1E中描绘的传统方法100b类似于图1D的传统方法100a,不同的是仅在参数到达像素着色器112之前执行内插116的减法部分122。在这项技术100b中,内插116的这个减法部分122是由与GPU相关联的参数内插硬件组件在像素着色器程序112接收减去的参数值作为输入并且执行内插116的其余部分之前执行的。因此,顶点参数的内插116的其余部分可减少到在124处绝对顶点参数P0、减去的参数值P10、相对于参数P0减去的P20以及相对于绝对顶点参数P0的所期望的参数P的坐标的简单相乘和相加操作,由此针对对应三角形102a-d中的每一个,P10=P1-P0并且P20=P1-P0。这依旧产生所期望的参数值Pa-Pf,随后可在118处利用像素着色器进一步操作所述参数值Pa-Pf以产生输出像素120。
图2A描绘利用被配置来根据传统方法处理图形的各种硬件和软件组件实现的方法200a的示意图。图2A中所描绘的方法200a类似于图1E中所描绘的方法100b。
顶点着色器210可执行各种顶点着色器计算214,其包括确定在屏幕空间中原型的顶点的位置230,每个原型的顶点上的各种其他渲染效果234(如操纵顶点的照明、阴影、颜色等等)。可将从顶点着色器计算214中产生的各种参数P0、P1、P2写入到参数高速缓存236以便暂时存储,并且***的参数内插硬件组件222可通过在将相应组的参数从参数高速缓存236写入到GPU的每个计算单元的每个小型本地存储器单元237之前减去参数值来执行部分内插。每个本地存储器单元237可以是小型但快速的本地存储器单元,有时被称为与GPU的每个计算单元相关联的本地数据共享(LDS),并且可存在并行地运行着色器程序的多个这种存储器单元和计算单元。
顶点着色器输出位置230可由产生相对于每个原型的像素的重心坐标i,j的硬件组件238使用,以使得它们可用于例如如本文所述的内插参数值。像素着色器212可从本地数据共享237中访问绝对参数值P0和相对参数值P10、P20,以便通过使用每个期望参数i,j的坐标来执行相乘和相加操作224来完成内插。像素着色器212随后可执行某些其他像素着色器计算218,以便在输出像素,例如输出到帧缓冲器之前进一步操纵它们。
上述技术200a的一个缺点是:可能出现与到像素着色器的参数的吞吐量相关联的某些瓶颈,这可降低渲染虚拟对象的速度。首先,已认识到的是,到参数高速缓存的参数写入吞吐量导致瓶颈。例如,每个参数可以是大的属性变量,例如像32位浮点数,并且顶点着色器可将这些属性变量作为一系列波阵面(例如,一次4个)写入到参数高速缓存236。此外,参数高速缓存的使用可进一步限制可存储的顶点着色器波阵面的数量,从而产生另外的瓶颈。随后将参数复制到本地数据共享237并且在由像素着色器访问之间将其暂时存储,并且受限的吞吐量和总本地数据共享使用量可由于限制像素着色器波阵面的数量而再次形成瓶颈。
上述技术200a的另一个缺点是:因为减去的参数值P10、P20是在到达像素着色器212之前计算的,所以像素着色器不能够直接访问原始参数值P1、P2,从而限制了可利用像素着色器执行的渲染效果的类型。
实现方式
图2B示出本公开的一个方面的实现方式。图2B描绘根据本公开的各个方面的利用被配置来处理图形的各种硬件和软件组件实现的技术200b的示意图。在图2B的实现方式中,与参数值的吞吐量相关联的瓶颈例如如上所述可通过为像素着色器提供对顶点参数值的直接访问权来解决。像素着色器随后可对传统上与顶点着色器相关联的这些原始顶点参数值执行许多计算,并且在执行通常的像素着色器计算之前执行顶点参数的内插。
如图2B中所示,顶点着色器210执行如214a处所指示的顶点着色器计算。在一些情况下,这些计算可被限制为确定顶点位置230和输出索引,以使得可从顶点着色器输出中省略其他参数值。代替将顶点着色器输出参数写入到参数高速缓存236,顶点着色器210可被配置来仅将标识每个原型(例如,三角形或其他多边形)的顶点索引I0、I1、I0写入到参数高速缓存236。随后,可将这些索引发送到本地数据共享237以便像素着色器可在本地访问它们。在能够访问这些索引I0、I1、I2的情况下,像素着色器212随后可直接从***的主存储器、例如从顶点缓冲区来访问与所述索引相关联的原始参数值P0、P1、P2。在能够访问这些参数值的情况下,像素着色器212随后可执行其余的顶点着色器计算214b,所述顶点着色器计算214b可包括三角形的顶点上的其他视觉效果234。像素着色器随后可使用坐标i,j来执行由于其余的顶点着色器计算214b而导致的参数值的内插216,以便确定每个像素位置处的参数值。像素着色器212随后可对内插的值进一步执行像素着色器计算218以便产生输出像素,所述像素着色器计算218可包括像素上的其他视觉效果。
在这个说明性实现方式中,因为传输直到像素着色器的索引I0、I1、I2与用于参数值的属性变量相比是更少量的数据,例如索引实质上仅是一个数字,所以可以减少与参数值的吞吐量相关联的瓶颈。
然而,应注意的是,使像素着色器212以图2B中所描绘的方式执行顶点着色器计算214b和内插216可能增加像素着色器以及整体着色器上的计算负荷。例如,应注意的是,图像中存在的像素通常远远多于图像中存在的可见顶点。因为在所示的方法中,顶点着色器计算214b是由像素着色器212而不是由顶点着色器210执行,所以代替每个顶点执行一次所述顶点着色器计算214b(如顶点着色器将进行的那样),每个像素执行三次所述顶点着色器计算214b。因此,以这种方式增加计算负荷可能与常规知识相反,常规知识规定增加计算负荷将降低性能并且是不合乎期望的。然而,因为与参数吞吐量相关联的瓶颈可以是比渲染速度更大的限制因素,所以尽管像素着色器可能必须执行更多的计算,但实际上可提高整体性能并且可加速对象的渲染。
还应注意的是,在例如如上所述的传统平面着色技术的情况下,像素着色器将不能够直接访问针对每个三角形的所有索引和所有顶点参数。至多,像素着色器将仅能够访问诱发顶点,从而限制能够执行的渲染和能够产生的视觉效果的类型,例如像,阻止像素着色器执行如图2B中所示的顶点着色器计算214b。
图3描绘根据本公开的各个方面的用于利用顶点着色器和像素着色器处理图形的方法300的流程图。方法300与图2B中所描绘的图形处理技术200b具有相似性。
所示的方法300包括利用顶点着色器310执行顶点着色器计算314a。许多通常的顶点着色器计算可省略,并且由顶点着色器310执行的计算314a替代地可由像素着色器312在每个像素的基础上执行。顶点着色器310的输出可被限制为针对每个原型302a-d的顶点输出位置和顶点索引。原型可以是三角形,所述三角形各自具有由索引I0、I1、I2标识的三个顶点并且可类似于图1B中描绘的三角形102a-d。
可将索引发送至像素着色器312,所述像素着色器312随后可使用索引I0、I1、I2来直接访问针对每个不同原型302a-d的顶点参数值P0、P1、P2中的每一个。像素着色器312可直接访问原始参数值,例如通过直接访问具有存储在与顶点索引相关联的顶点缓冲区中的参数值的***存储器。像素着色器可以使用参数值来执行其余的顶点着色器计算314b,所述顶点着色器计算314b可包括渲染每个原型的每个顶点上的某些视觉效果。像素着色器312随后可在执行顶点着色器计算314b之后内插所得的参数值,以便在原型内的每个像素位置处提取参数Pa-Pf。像素着色器312随后可通过利用内插的参数值对像素执行像素着色器计算318而在像素上产生另外的视觉效果,并且可将渲染的像素320输出到例如***存储器中的帧缓冲器。
本公开的各方面包括被配置来实现上述特征的图形处理***。通过举例而非限制的方式,图4示出计算机***400的框图,所述计算机***400可用于实现根据本公开的各个方面的图形处理。根据本公开的各个方面,***400可以是嵌入式***、移动电话、个人计算机、平板计算机、便携式游戏装置、工作站、游戏控制台等。
***400通常可包括中央处理器单元(CPU)470、图形处理器单元(GPU)471以及CPU和GPU两者可访问的主存储器472。CPU470和GPU471各自可包括一个或多个处理器核心,例如,单个核心、两个核心、四个核心、八个核心或更多。主存储器472可呈提供可寻址存储器的集成电路的形式,例如RAM、DRAM等。
通过举例而非限制的方式,CPU470和GPU471可使用数据总线476来访问主存储器472。在一些情况下,***400包括两个或更多个不同的总线可为有用的。主存储器472可包含可由CPU470和GPU472访问的数据。主存储器可暂时存储数据缓冲区,所述数据缓冲区可包括顶点缓冲区463、索引缓冲区466以及帧缓冲区464。
CPU可被配置来执行CPU代码,所述CPU代码可包括利用渲染图形的应用程序460、驱动程序/编译器461以及用于向GPU实现的程序发出绘制命令的图形API462。CPU代码还可实现物理模拟和其他功能。GPU可被配置来如以上关于本公开的示例性实现方式所讨论的那样操作。具体地,GPU可执行GPU代码,所述GPU代码可实现如以上所讨论的顶点着色器410和像素着色器412。着色器可与主存储器472中的数据进行交互并且像素着色器可在将渲染的像素输出到显示器之前,将其输出到帧缓冲区464中以便暂时存储。GPU可包括被配置来并行地执行图形处理任务的多个计算单元(CU)465。每个计算单元可包括其自己的专用本地存储器,如以上所述的本地数据共享(LDS)437。***400还可包括用于暂时存储顶点索引数据468的高速缓存436,并且可以将数据从高速缓存436复制到每个LDS437,所述LDS437随后可利用所述数据并行地实现着色器程序。参数高速缓存436可与GPU集成在一起,或可与GPU不同并且可由GPU例如通过总线476访问。GPU还可执行其他程序,例如像几何着色器和计算着色器。
***400还可包括熟知的支持功能477,所述支持功能477可例如通过总线476与***的其他组件通信。此类支持功能可包括但不限于输入/输出(I/O)元件479、电源(P/S)480和时钟(CLK)481。
设备400任选地可包括大容量存储装置484,如磁盘驱动器、CD-ROM驱动器、闪存存储器、磁带驱动器等,以便存储程序和/或数据。装置400还可包括显示器单元486和用户接口单元488以促进设备400与用户之间的交互。显示器单元486可呈平板显示器、阴极射线管(CRT)屏幕、触摸屏或可显示本文、数字、图形符号或图像的其他装置的形式。显示器486可显示根据本文所述的各种技术处理的渲染图像487。用户接口488可包括可以与图形用户界面(GUI)结合来使用的键盘、鼠标、操纵杆、光笔、游戏控制器或其它装置。***400还可包括网络接口490以使得装置能够通过网络与其他装置通信。网络可以是例如局域网(LAN)、广域网(如因特网)、个人局域网(如蓝牙网络)或其他类型的网络。这些组件可以实施在硬件、软件或固件或这些组件中两个或更多个的一些组合中。
虽然以上为本发明的优选实施方案的完整描述,但是使用各种替代、修改和等效物是可能的。因此,本发明的范围不应参考以上描述确定,而是应替代地参考随附权利要求书以及其整个范围的等效物确定。本文所描述的任何特征(不论优选与否)可与本文所描述的任何其它特征组合(不论优选与否)。在随附权利要求书中,不定冠词“一个”或“一种”是指冠词后的一个或多个项的量,除非其中另外明确说明。随附权利要求书不应被理解为包括设备加功能限制,除非这种限制在给定权利要求中使用短语“用于…的装置”来明确陈述。
Claims (19)
1.一种计算机图形处理方法,其包括:
将从顶点着色器输出的顶点索引写入到高速缓存;
利用像素着色器访问写入到所述高速缓存的所述顶点索引;以及
利用所述像素着色器从存储器单元访问与所述顶点索引相关联的顶点参数值。
2.如权利要求1所述的方法,其还包括利用所述像素着色器对所述顶点参数值执行顶点着色器计算。
3.如权利要求2所述的方法,其中所述顶点着色器计算包括在三维虚拟空间中操纵原型的顶点的视觉效果。
4.如权利要求1所述的方法,其还包括利用所述像素着色器内插所述顶点参数值。
5.如权利要求1所述的方法,其中所述访问所述顶点索引包括:将所述顶点索引从所述高速缓存复制到GPU的本地存储器单元;以及利用所述像素着色器从所述本地存储器单元访问所述索引。
6.如权利要求1所述的方法,其中访问所述顶点参数值包括访问三角形原型的所有三个顶点的参数值。
7.如权利要求1所述的方法,其还包括在所述访问所述顶点参数值之后:
利用所述像素着色器对所述顶点参数值执行顶点着色器计算;
利用所述像素着色器内插所述参数值;
利用所述像素着色器对所述内插的参数值执行像素着色器计算。
8.如权利要求1所述的方法,其中所述顶点着色器输出被限制为顶点位置和所述顶点索引,并且其中所述像素着色器在所述访问所述顶点索引之后执行任何其余的顶点着色器计算。
9.如权利要求1所述的方法,其中所述存储器单元是***的主存储器。
10.如权利要求9所述的方法,其中所述参数值被存储在所述主存储器中的顶点缓冲区中。
11.一种图形处理***,其包括:
图形处理单元(GPU);
存储器单元;以及
高速缓存;
其中所述***被配置来实现一种图形处理方法,所述方法包括:
利用所述GPU实现顶点着色器和像素着色器;
将从顶点着色器输出的顶点索引写入到所述高速缓存;
利用所述像素着色器访问写入到所述高速缓存的所述顶点索引;以及
利用所述像素着色器从所述存储器单元访问与所述顶点索引相关联的顶点参数值。
12.根据权利要求11所述的***,其中所述存储器单元是所述***的主存储器。
13.如权利要求11所述的***,其中所述GPU包括多个计算单元和多个本地存储器单元,其中所述本地存储器单元中的每一个与所述计算单元中的相应一个相关联。
14.如权利要求13所述的***,其中所述访问所述顶点索引包括:将所述顶点索引从所述高速缓存复制到所述本地存储器单元;以及利用所述像素着色器从所述本地存储器单元访问所述索引。
15.如权利要求11所述的***,其中所述高速缓存与所述GPU集成在一起。
16.如权利要求11所述的***,其中所述方法还包括利用所述像素着色器对所述顶点参数值执行顶点着色器计算。
17.如权利要求11所述的***,其中所述方法还包括利用所述像素着色器内插所述顶点参数值。
18.如权利要求11所述的***,其中所述***是嵌入式***、移动电话、个人计算机、平板计算机、便携式游戏装置、工作站或游戏控制台。
19.一种具有包含在其中的计算机可读指令的非暂时性计算机可读介质,所述计算机可读指令被配置来在执行时实现一种图形处理方法,所述图形处理方法包括:
将从顶点着色器输出的顶点索引写入到高速缓存;
利用像素着色器访问写入到所述高速缓存的所述顶点索引;以及
利用所述像素着色器从存储器单元访问与所述顶点索引相关联的顶点参数值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910461555.9A CN110097625B (zh) | 2013-06-10 | 2014-06-06 | 片段着色器执行顶点着色器计算 |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361833218P | 2013-06-10 | 2013-06-10 | |
US61/833,218 | 2013-06-10 | ||
US14/297,231 US10096079B2 (en) | 2013-06-10 | 2014-06-05 | Fragment shaders perform vertex shader computations |
US14/297,231 | 2014-06-05 | ||
PCT/US2014/041386 WO2014200866A1 (en) | 2013-06-10 | 2014-06-06 | Fragment shaders perform vertex shader computations |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910461555.9A Division CN110097625B (zh) | 2013-06-10 | 2014-06-06 | 片段着色器执行顶点着色器计算 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105556565A true CN105556565A (zh) | 2016-05-04 |
CN105556565B CN105556565B (zh) | 2019-06-25 |
Family
ID=52005098
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480033281.9A Active CN105556565B (zh) | 2013-06-10 | 2014-06-06 | 片段着色器执行顶点着色器计算 |
CN201910461555.9A Active CN110097625B (zh) | 2013-06-10 | 2014-06-06 | 片段着色器执行顶点着色器计算 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910461555.9A Active CN110097625B (zh) | 2013-06-10 | 2014-06-06 | 片段着色器执行顶点着色器计算 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10096079B2 (zh) |
EP (1) | EP3008700B1 (zh) |
JP (1) | JP6230702B2 (zh) |
CN (2) | CN105556565B (zh) |
WO (1) | WO2014200866A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109242758A (zh) * | 2018-09-18 | 2019-01-18 | 珠海金山网络游戏科技有限公司 | 一种材质参数存储、材质参数获取方法及装置 |
CN111066066A (zh) * | 2017-08-25 | 2020-04-24 | 超威半导体公司 | 可变比率着色 |
Families Citing this family (20)
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 |
KR102188543B1 (ko) * | 2014-02-07 | 2020-12-08 | 삼성전자주식회사 | 그래픽 처리 장치 |
US10783696B2 (en) | 2014-04-05 | 2020-09-22 | Sony Interactive Entertainment LLC | Gradient adjustment for texture mapping to non-orthonormal grid |
US9495790B2 (en) | 2014-04-05 | 2016-11-15 | Sony Interactive Entertainment America Llc | Gradient adjustment for texture mapping to non-orthonormal grid |
US9710881B2 (en) | 2014-04-05 | 2017-07-18 | Sony Interactive Entertainment America Llc | Varying effective resolution by screen location by altering rasterization parameters |
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 |
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 |
US9865074B2 (en) | 2014-04-05 | 2018-01-09 | Sony Interactive Entertainment America Llc | Method for efficient construction of high resolution display buffers |
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 |
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 |
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 |
US10102094B2 (en) | 2016-01-22 | 2018-10-16 | Sony Interactive Entertainment Inc. | Simulating legacy bus behavior for backwards compatibility |
CN108885552B (zh) | 2016-01-22 | 2023-03-14 | 索尼互动娱乐股份有限公司 | 用于向后兼容性的欺骗cpuid |
US10192280B2 (en) | 2016-04-08 | 2019-01-29 | Qualcomm Incorporated | Per-vertex variable rate shading |
US10460513B2 (en) | 2016-09-22 | 2019-10-29 | Advanced Micro Devices, Inc. | Combined world-space pipeline shader stages |
CN110648385A (zh) * | 2018-06-27 | 2020-01-03 | 北京京东尚科信息技术有限公司 | 三角面拣选方法、装置、电子设备及计算机可读介质 |
CN112233008A (zh) * | 2020-09-23 | 2021-01-15 | 中国船舶重工集团公司第七一六研究所 | 一种gpu中实现三角形光栅化的装置和方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101388109A (zh) * | 2008-01-25 | 2009-03-18 | 威盛电子股份有限公司 | 绘图处理***、快取***以及数据处理方法 |
US20090182948A1 (en) * | 2008-01-16 | 2009-07-16 | Via Technologies, Inc. | Caching Method and Apparatus for a Vertex Shader and Geometry Shader |
US20110102448A1 (en) * | 2009-10-09 | 2011-05-05 | Hakura Ziyad S | Vertex attribute buffer for inline immediate attributes and constants |
US20110242117A1 (en) * | 2010-04-05 | 2011-10-06 | Bolz Jeffrey A | Bindless texture and image api |
CN102598062A (zh) * | 2009-05-29 | 2012-07-18 | 高通股份有限公司 | 具有延缓的顶点遮影的图形处理单元 |
CN102708537A (zh) * | 2011-03-03 | 2012-10-03 | Arm有限公司 | 图形处理 |
US20130113790A1 (en) * | 2010-12-03 | 2013-05-09 | Digital Media Professionals Inc. | Image processing device |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6525737B1 (en) | 1998-08-20 | 2003-02-25 | Apple Computer, Inc. | Graphics processor with pipeline state storage and retrieval |
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 |
US7439983B2 (en) * | 2005-02-10 | 2008-10-21 | Sony Computer Entertainment Inc. | Method and apparatus for de-indexing geometry |
US8065354B1 (en) | 2005-03-04 | 2011-11-22 | Nvidia Corporation | Compression 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 | 威盛电子股份有限公司 | 绘图***以及绘图控制方法 |
KR100882842B1 (ko) | 2007-02-26 | 2009-02-17 | 삼성전자주식회사 | 피포를 포스트 버텍스 캐쉬처럼 사용하기 위한 기하학 처리장치와 그 방법 |
US8355028B2 (en) | 2007-07-30 | 2013-01-15 | Qualcomm Incorporated | Scheme for varying packing and linking in graphics systems |
US8325184B2 (en) * | 2007-09-14 | 2012-12-04 | Qualcomm Incorporated | Fragment shader bypass in a graphics processing unit, and apparatus and method thereof |
US8254701B1 (en) | 2007-12-13 | 2012-08-28 | Nvidia Corporation | Data compression using a geometry shading unit |
US8259111B2 (en) * | 2008-05-30 | 2012-09-04 | Advanced Micro Devices, Inc. | Merged shader for primitive amplification |
US9123151B2 (en) * | 2008-08-05 | 2015-09-01 | Autodesk, Inc. | Exchanging data between vertex shaders and fragment shaders on a graphics processing unit |
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 |
US9324175B2 (en) * | 2009-09-11 | 2016-04-26 | Nvidia Corporation | Memory coherency in graphics command streams and shaders |
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 |
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 |
US8941655B2 (en) | 2011-09-07 | 2015-01-27 | Qualcomm Incorporated | Memory copy engine for graphics processing |
US9256915B2 (en) | 2012-01-27 | 2016-02-09 | Qualcomm Incorporated | Graphics processing unit buffer management |
CN103020205B (zh) | 2012-12-05 | 2018-07-31 | 中科天玑数据科技股份有限公司 | 一种分布式文件***上基于硬件加速卡的压缩解压缩方法 |
US10102603B2 (en) | 2013-06-10 | 2018-10-16 | Sony Interactive Entertainment Inc. | Scheme for compressing vertex shader output parameters |
US10176621B2 (en) | 2013-06-10 | 2019-01-08 | Sony Interactive Entertainment Inc. | Using compute shaders as front end for vertex shaders |
US10134102B2 (en) | 2013-06-10 | 2018-11-20 | Sony Interactive Entertainment Inc. | Graphics processing hardware for using compute shaders as front end for vertex shaders |
US10096079B2 (en) | 2013-06-10 | 2018-10-09 | Sony Interactive Entertainment Inc. | Fragment shaders perform vertex shader computations |
-
2014
- 2014-06-05 US US14/297,231 patent/US10096079B2/en active Active
- 2014-06-06 EP EP14811219.6A patent/EP3008700B1/en active Active
- 2014-06-06 CN CN201480033281.9A patent/CN105556565B/zh active Active
- 2014-06-06 JP JP2016519563A patent/JP6230702B2/ja active Active
- 2014-06-06 CN CN201910461555.9A patent/CN110097625B/zh active Active
- 2014-06-06 WO PCT/US2014/041386 patent/WO2014200866A1/en active Application Filing
-
2018
- 2018-09-27 US US16/145,003 patent/US10733691B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090182948A1 (en) * | 2008-01-16 | 2009-07-16 | Via Technologies, Inc. | Caching Method and Apparatus for a Vertex Shader and Geometry Shader |
CN101388109A (zh) * | 2008-01-25 | 2009-03-18 | 威盛电子股份有限公司 | 绘图处理***、快取***以及数据处理方法 |
CN102598062A (zh) * | 2009-05-29 | 2012-07-18 | 高通股份有限公司 | 具有延缓的顶点遮影的图形处理单元 |
US20110102448A1 (en) * | 2009-10-09 | 2011-05-05 | Hakura Ziyad S | Vertex attribute buffer for inline immediate attributes and constants |
US20110242117A1 (en) * | 2010-04-05 | 2011-10-06 | Bolz Jeffrey A | Bindless texture and image api |
US20130113790A1 (en) * | 2010-12-03 | 2013-05-09 | Digital Media Professionals Inc. | Image processing device |
CN102708537A (zh) * | 2011-03-03 | 2012-10-03 | Arm有限公司 | 图形处理 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111066066A (zh) * | 2017-08-25 | 2020-04-24 | 超威半导体公司 | 可变比率着色 |
CN111066066B (zh) * | 2017-08-25 | 2022-07-05 | 超威半导体公司 | 可变比率着色 |
CN109242758A (zh) * | 2018-09-18 | 2019-01-18 | 珠海金山网络游戏科技有限公司 | 一种材质参数存储、材质参数获取方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3008700A4 (en) | 2017-01-11 |
CN105556565B (zh) | 2019-06-25 |
US10733691B2 (en) | 2020-08-04 |
EP3008700B1 (en) | 2020-08-12 |
CN110097625B (zh) | 2023-03-21 |
WO2014200866A1 (en) | 2014-12-18 |
US10096079B2 (en) | 2018-10-09 |
US20190035050A1 (en) | 2019-01-31 |
JP2016524241A (ja) | 2016-08-12 |
EP3008700A1 (en) | 2016-04-20 |
CN110097625A (zh) | 2019-08-06 |
JP6230702B2 (ja) | 2017-11-15 |
US20140362101A1 (en) | 2014-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105556565A (zh) | 片段着色器执行顶点着色器计算 | |
US11232534B2 (en) | Scheme for compressing vertex shader output parameters | |
CN105556571B (zh) | 使用计算着色器作为顶点着色器的前端 | |
US8169439B2 (en) | Scalar precision float implementation on the “W” lane of vector unit | |
US20090106526A1 (en) | Scalar Float Register Overlay on Vector Register File for Efficient Register Allocation and Scalar Float and Vector Register Sharing | |
JP2015515059A (ja) | シーンにおける不透明度レベルを推定する方法とそれに対応する装置 | |
US11120611B2 (en) | Using bounding volume representations for raytracing dynamic units within a virtual space | |
Nah et al. | MobiRT: an implementation of OpenGL ES-based CPU-GPU hybrid ray tracer for mobile devices | |
JP5864474B2 (ja) | 空間を分割してグラフィックスを処理する画像処理装置及び画像処理方法 | |
JP2009163469A (ja) | 大局照明回路 | |
Alda | Introduction to Shaders | |
Novo Rodríguez | High performance visualization through graphics hardware and integration issues in an electric power grid Computer-Aided-Design application |
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 |