CN105283900B - 用于压缩顶点着色器输出参数的方案 - Google Patents
用于压缩顶点着色器输出参数的方案 Download PDFInfo
- Publication number
- CN105283900B CN105283900B CN201480032468.7A CN201480032468A CN105283900B CN 105283900 B CN105283900 B CN 105283900B CN 201480032468 A CN201480032468 A CN 201480032468A CN 105283900 B CN105283900 B CN 105283900B
- Authority
- CN
- China
- Prior art keywords
- vertex
- parameter values
- compression
- vertex parameter
- coloring device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
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
- 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的本地存储器单元;以及利用像素着色器从本地存储器单元访问压缩的顶点参数值。
在一些实现方式中,顶点参数值包括三角形原型的所有三个顶点的参数值。
在一些实现方式中,压缩顶点参数值包括将两个浮点数存储在一起作为具有所述两个浮点数中的每一个的两倍的位数的一个值。
在一些实现方式中,压缩顶点参数值包括将两个16位浮点数存储在一起作为一个32位值。
在一些实现方式中,所述方法还包括对内插的参数值执行像素着色器计算。
在一些实现方式中,所述方法可包括在压缩之前利用顶点着色器修改参数值。
根据本公开的各个方面,一种图形处理系统可包括:图形处理单元(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所述的)来执行内插。
作为内插每个原型的参数值的替代方案,可使用被称作“平面着色”的技术。通过平面着色,可为每个三角形定义“诱发顶点(provoking vertex)”,例如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中描绘了根据本公开的各个方面的图形处理技术200b。在所示的技术200b中,可利用压缩方案以便最小化与从顶点着色器输出的参数值的吞吐量相关联的瓶颈。应注意,虽然根据呈三角形形式的原型描述了这个实例,但是可容易地将概念扩展到基于其他类型多边形的原型。
一个难题是:顶点参数值不能够简单地被压缩,因为传统方法被配置来在到达像素着色器之前执行一些或全部内插。因此,减法可阻止原始压缩的值被解压缩以供像素着色器使用。
通过举例而非限制的方式,在参数值被存储为32位浮点属性变量的情况下,可能无法在不会由于32位减法而丢失原始数据的前提下将参数压缩成16位数以便存储为一个32位值。以下实例使用普通数字来说明上述问题以便概念化所述问题:
第一三角形:{P0,P1,P2}={8,5,6}
第二三角形:{P0,P1,P2}={1,4,7}
例如,如以上关于图2A所描述的由差分引擎执行的内插的参数值的差集将为:
第一三角形:{P0,P10,P20}={8,(5-8),(6-8)}={8,-3,-2}
第二三角形:{P0,P10,P20}={1,(4-1),(7-1)}={1,3,6}
压缩第一组参数与第二组参数将类似于将它们放在一起,如下:
压缩的参数:{18,45,76}
并且压缩的参数的差集将类似于:
差集:{18,(45-18),(76-18)}={18,27,58}
在减法压缩时,破坏了原始数据,因为减法结果27、58相对于真正的参数值来说本质上是无意义的。因此,不能对值进行解压缩并且不能从减法结果恢复原始值P10、P20或P1、P2。
再次转到图2B,技术200b包括根据本公开的各个方面的压缩方案,所述压缩方案允许保存和解压缩原始参数值以使得像素着色器可以访问它们。在所示的实现方式中,可省略、禁用或绕过传统地执行减法或整个内插的参数内插硬件,以使得可以在不丢失原始参数值的前提下对参数值进行压缩和解压缩。
在图2B中所示的技术200b中,顶点着色器210可执行顶点着色器计算214,所述顶点着色器计算214可包括操纵图像中每个顶点的各个参数。所得的参数可在240处被压缩成更小的数据格式,以使得与大数字的存储和吞吐量相关联的瓶颈可最小化。压缩的参数P0'、P1'、P2'可写入到参数高速缓存236以便暂时存储,并且可占据比未压缩的参数更小量的总高速缓存,从而最小化高速缓存硬件中的潜在瓶颈。压缩的参数P0'、P1'、P2'可复制到GPU上的本地存储器单元237,所述本地存储器单元237可以是被称为“本地数据共享”(LDS)的存储器单元。可以利用通过GPU实现的像素着色器212从本地数据共享中访问压缩的参数值。
压缩的参数P0'、P1'、P2'可在242处由像素着色器212进行解压缩,从而准予像素着色器访问原始参数值P0、P1、P2。像素着色器212随后可在216处使用从重心坐标产生器238获得的坐标i,j来内插参数值,以便确定每个原型内的像素位置处的对应参数值。因为像素着色器212能够访问每个三角形的每个顶点的原始参数值,所以像素着色器216还可以在内插216之前以每个像素为基础执行虚拟空间中的顶点参数(未示出)和顶点的可视元素的某些其他操作,以便将所述值转化到屏幕空间。像素着色器随后可执行像素着色器计算218,以便在将最终的像素数据输出到例如帧缓冲区之前进一步操纵像素数据和像素的可视元素。
因此,在例示性实现方式200b中,可通过减少高速缓存236和本地存储器237的总使用量的压缩方案来最小化或避免与大量参数值数据相关联的瓶颈。此外,创建像素着色器程序的程序员可具有增加的控制,因为他们能够访问原始顶点参数数据而不仅仅是相关的或内插的值。
图3中所示的流程图示出根据本公开的各个方面的用于利用顶点着色器和像素着色器处理图形的方法300。方法300与图2B中所描绘的图形处理技术200b具有相似性。
例示性方法300包括利用顶点着色器310执行顶点着色器计算314。顶点着色器计算可包括操纵原型302a-d的各个顶点参数以便在虚拟空间中的顶点上产生各种视觉效果。原型302a-d可类似于图1B中的三角形102a-d,并且每个三角形可具有用于每个顶点的对应参数值P0、P1、P2。
顶点着色器310随后可压缩参数值并且将压缩的顶点参数值P0'、P1'、P2'发送到像素着色器312。像素着色器随后可在342处对所述参数值进行解压缩,以获得原始未加工的参数值,并且像素着色器312可执行参数值P0、P1、P2的整个内插316,以确定每个像素的对应参数Pa-Pf。像素着色器312随后可通过利用内插的参数值对像素执行像素着色器计算318而在像素上产生另外的视觉效果,并且可将渲染的像素320输出到例如系统存储器中的帧缓冲区。
本公开的各方面包括被配置来实现上述特征的图形处理系统。通过举例而非限制的方式,图4示出计算机系统400的框图,所述计算机系统400可用于实现根据本公开的各个方面的图形处理。根据本公开的各个方面,系统400可以是嵌入式系统、移动电话、个人计算机、平板计算机、便携式游戏装置、工作站、游戏控制台等。
系统400通常可包括中央处理器单元(CPU)470、图形处理器单元(GPU)471以及CPU和GPU两者可访问的主存储器472。CPU 470和GPU 471各自可包括一个或多个处理器核心,例如,单个核心、两个核心、四个核心、八个核心或更多。主存储器472可呈提供可寻址存储器的集成电路的形式,例如RAM、DRAM等。
通过举例而非限制的方式,CPU 470和GPU 471可使用数据总线476来访问主存储器472。在一些情况下,系统400包括两个或更多个不同的总线可为有用的。主存储器472可包含可由CPU 470和GPU 472访问的数据。主存储器可暂时存储数据缓冲区,所述数据缓冲区可包括顶点缓冲区463、索引缓冲区466以及帧缓冲区464。
CPU可被配置来执行CPU代码,所述CPU代码可包括利用渲染图形的应用程序460、驱动程序/编译器461以及用于向GPU实现的程序发出绘制命令的图形API 462。CPU代码还可实现物理模拟和其他功能。GPU可被配置来如以上关于本公开的示例性实现方式所讨论的那样操作。具体地,GPU可执行GPU代码,所述GPU代码可实现如以上所讨论的顶点着色器410和像素着色器412。着色器可与主存储器472中的数据进行交互并且像素着色器可在将渲染的像素输出到显示器之前,将其输出到帧缓冲区464中以便暂时存储。GPU可包括被配置来并行地执行图形处理任务的多个计算单元(CU)465。每个计算单元可包括其自己的专用本地存储器,如以上所述的本地数据共享(LDS)437。系统400还可包括用于暂时存储压缩的顶点参数数据468的高速缓存436,并且可以将数据从高速缓存436复制到每个LDS 437,所述LDS 437随后可利用所述数据并行地实现着色器程序。参数高速缓存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 (20)
1.一种计算机图形处理方法,其包括:
利用顶点着色器压缩顶点参数值,其中所述压缩不包括通过索引缓冲区进行索引,其中所述顶点参数值至少包括至少32位的大属性变量;
将所述压缩的顶点参数值写入到高速缓存;
利用像素着色器访问写入到所述高速缓存的所述压缩的顶点参数值;以及
利用所述像素着色器对所述压缩的顶点参数值进行解压缩,其中所述解压缩不包括从索引缓冲区中去索引数据。
2.如权利要求1所述的方法,其还包括利用所述像素着色器内插所述解压缩的顶点参数值。
3.如权利要求1所述的方法,其中所述访问所述压缩的顶点参数值包括:将所述压缩的顶点参数值从所述高速缓存复制到GPU的本地存储器单元;以及利用所述像素着色器从所述本地存储器单元访问所述压缩的顶点参数值。
4.如权利要求1所述的方法,其中所述顶点参数值包括三角形原型的所有三个顶点的参数值。
5.如权利要求1所述的方法,其中所述压缩所述顶点参数值包括将两个浮点数存储在一起作为具有所述两个浮点数中的每一个的两倍的位数的一个值。
6.如权利要求5所述的方法,其中所述压缩所述顶点参数值包括将两个16位浮点数存储在一起作为一个32位值。
7.如权利要求2所述的方法,其还包括对所述内插的参数值执行像素着色器计算。
8.如权利要求1所述的方法,其还包括在所述压缩之前利用所述顶点着色器来修改所述参数值。
9.一种图形处理系统,其包括:
图形处理单元GPU;以及
高速缓存;
其中所述系统被配置来实现一种图形处理方法,所述方法包括:
利用所述GPU实现顶点着色器和像素着色器;
利用所述顶点着色器压缩顶点参数值,其中所述压缩不包括通过索引缓冲区进行索引,其中所述顶点参数值至少包括至少32位的大属性变量;
将所述压缩的顶点参数值写入到所述高速缓存;
利用像素着色器访问写入到所述高速缓存的所述压缩的顶点参数值;以及
利用所述像素着色器对所述压缩的顶点参数值进行解压缩,其中所述解压缩不包括从索引缓冲区中去索引数据。
10.如权利要求9所述的系统,其中所述GPU包括多个计算单元和多个本地存储器单元,其中所述本地存储器单元中的每一个与所述计算单元中的相应一个相关联。
11.如权利要求10所述的系统,其中所述访问所述压缩的顶点参数值包括:将所述压缩的顶点参数值从所述高速缓存复制到所述本地存储器单元;以及利用所述像素着色器从所述本地存储器单元访问所述压缩的顶点参数值。
12.如权利要求9所述的系统,其中所述高速缓存与所述GPU集成在一起。
13.如权利要求9所述的系统,其中所述方法还包括利用所述像素着色器内插所述解压缩的顶点参数值。
14.如权利要求9所述的系统,其中所述顶点参数值包括三角形原型的所有三个顶点的参数值。
15.如权利要求9所述的系统,其中所述压缩所述顶点参数值包括将两个浮点数存储在一起作为具有所述两个浮点数中的每一个的两倍的位数的一个值。
16.如权利要求15所述的系统,其中所述压缩所述顶点参数值包括将两个16位浮点数存储在一起作为一个32位值。
17.如权利要求13所述的系统,其中所述方法还包括对所述内插的参数值执行像素着色器计算。
18.如权利要求9所述的系统,其中所述方法还包括在所述压缩之前利用所述顶点着色器修改所述参数值。
19.如权利要求9所述的系统,其中所述系统是嵌入式系统、移动电话、个人计算机、平板计算机、便携式游戏装置、工作站或游戏控制台。
20.一种具有包含在其中的计算机可读指令的非暂时性计算机可读介质,所述计算机可读指令被配置来在执行时实现一种图形处理方法,所述图形处理方法包括:
利用顶点着色器压缩顶点参数值,其中所述压缩不包括通过索引缓冲区进行索引,其中所述顶点参数值至少包括至少32位的大属性变量;
将所述压缩的顶点参数值写入到高速缓存;
利用像素着色器访问写入到所述高速缓存的所述压缩的顶点参数值;以及
利用所述像素着色器对所述压缩的顶点参数值进行解压缩,其中所述解压缩不包括从索引缓冲区中去索引数据。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361833212P | 2013-06-10 | 2013-06-10 | |
US61/833,212 | 2013-06-10 | ||
US14/297,201 | 2014-06-05 | ||
US14/297,201 US10102603B2 (en) | 2013-06-10 | 2014-06-05 | Scheme for compressing vertex shader output parameters |
PCT/US2014/041382 WO2014200863A1 (en) | 2013-06-10 | 2014-06-06 | Scheme for compressing vertex shader output parameters |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105283900A CN105283900A (zh) | 2016-01-27 |
CN105283900B true CN105283900B (zh) | 2019-11-01 |
Family
ID=52005097
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480032468.7A Active CN105283900B (zh) | 2013-06-10 | 2014-06-06 | 用于压缩顶点着色器输出参数的方案 |
Country Status (5)
Country | Link |
---|---|
US (3) | US10102603B2 (zh) |
EP (1) | EP3008699B1 (zh) |
JP (1) | JP6591405B2 (zh) |
CN (1) | CN105283900B (zh) |
WO (1) | WO2014200863A1 (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10102603B2 (en) | 2013-06-10 | 2018-10-16 | Sony Interactive Entertainment Inc. | Scheme for compressing vertex shader output parameters |
US10096079B2 (en) | 2013-06-10 | 2018-10-09 | Sony Interactive Entertainment Inc. | Fragment shaders perform vertex shader computations |
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 |
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 |
US9865074B2 (en) | 2014-04-05 | 2018-01-09 | Sony Interactive Entertainment America Llc | Method for efficient construction of high resolution display buffers |
US9710881B2 (en) | 2014-04-05 | 2017-07-18 | Sony Interactive Entertainment America Llc | Varying effective resolution by screen location by altering rasterization parameters |
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 |
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 |
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 |
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 |
GB201503125D0 (en) * | 2015-02-25 | 2015-04-08 | Advanced Risc Mach Ltd | Graphics processing systems |
US9786026B2 (en) | 2015-06-15 | 2017-10-10 | Microsoft Technology Licensing, Llc | Asynchronous translation of computer program resources in graphics processing unit emulation |
US9881351B2 (en) | 2015-06-15 | 2018-01-30 | Microsoft Technology Licensing, Llc | Remote translation, aggregation and distribution of computer program resources in graphics processing unit emulation |
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 |
WO2017127634A1 (en) | 2016-01-22 | 2017-07-27 | Sony Interactive Entertainment Inc | Simulating legacy bus behavior for backwards compatibility |
WO2017127631A1 (en) | 2016-01-22 | 2017-07-27 | Sony Interactive Entertainment Inc | Spoofing cpuid for backwards compatibility |
GB2556634B (en) | 2016-11-18 | 2020-05-27 | Advanced Risc Mach Ltd | Graphics processing systems |
US10460418B2 (en) | 2017-02-10 | 2019-10-29 | Microsoft Technology Licensing, Llc | Buffer index format and compression |
US10510185B2 (en) * | 2017-08-25 | 2019-12-17 | Advanced Micro Devices, Inc. | Variable rate shading |
CN110175269B (zh) * | 2019-05-31 | 2021-03-12 | 西安芯瞳半导体技术有限公司 | 一种顶点索引的压缩及解压缩方法、装置及计算机存储介质 |
US11748839B2 (en) | 2020-04-16 | 2023-09-05 | Samsung Electronics Co., Ltd. | Efficient fast random access enabled geometry attribute compression mechanism |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6717577B1 (en) * | 1999-10-28 | 2004-04-06 | Nintendo Co., Ltd. | Vertex cache for 3D computer graphics |
CN1684104A (zh) * | 2004-07-26 | 2005-10-19 | 威盛电子股份有限公司 | 计算器系统中压缩及解压缩指令的方法与装置 |
US7599975B1 (en) * | 2005-03-04 | 2009-10-06 | Nvidia Corporation | Decompression of compressed 16 bit data |
US8254701B1 (en) * | 2007-12-13 | 2012-08-28 | Nvidia Corporation | Data compression using a geometry shading unit |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU5686199A (en) | 1998-08-20 | 2000-03-14 | Apple Computer, Inc. | Deferred shading graphics pipeline processor |
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 |
US6839062B2 (en) * | 2003-02-24 | 2005-01-04 | Microsoft Corporation | Usage semantics |
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 |
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 | 삼성전자주식회사 | 피포를 포스트 버텍스 캐쉬처럼 사용하기 위한 기하학 처리장치와 그 방법 |
US20080266287A1 (en) * | 2007-04-25 | 2008-10-30 | Nvidia Corporation | Decompression of vertex data using a geometry shader |
US8355028B2 (en) | 2007-07-30 | 2013-01-15 | Qualcomm Incorporated | Scheme for varying packing and linking in graphics systems |
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 |
JP5837507B2 (ja) | 2010-12-03 | 2015-12-24 | 株式会社ディジタルメディアプロフェッショナル | 画像処理装置 |
GB201103699D0 (en) | 2011-03-03 | 2011-04-20 | Advanced Risc Mach Ltd | Graphic processing |
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 | 中科天玑数据科技股份有限公司 | 一种分布式文件系统上基于硬件加速卡的压缩解压缩方法 |
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 |
US10102603B2 (en) | 2013-06-10 | 2018-10-16 | Sony Interactive Entertainment Inc. | Scheme for compressing vertex shader output parameters |
-
2014
- 2014-06-05 US US14/297,201 patent/US10102603B2/en active Active
- 2014-06-06 EP EP14810168.6A patent/EP3008699B1/en active Active
- 2014-06-06 CN CN201480032468.7A patent/CN105283900B/zh active Active
- 2014-06-06 WO PCT/US2014/041382 patent/WO2014200863A1/en active Application Filing
- 2014-06-06 JP JP2016518048A patent/JP6591405B2/ja active Active
-
2018
- 2018-07-31 US US16/050,829 patent/US10740867B2/en active Active
-
2020
- 2020-08-11 US US16/990,680 patent/US11232534B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6717577B1 (en) * | 1999-10-28 | 2004-04-06 | Nintendo Co., Ltd. | Vertex cache for 3D computer graphics |
CN1684104A (zh) * | 2004-07-26 | 2005-10-19 | 威盛电子股份有限公司 | 计算器系统中压缩及解压缩指令的方法与装置 |
US7599975B1 (en) * | 2005-03-04 | 2009-10-06 | Nvidia Corporation | Decompression of compressed 16 bit data |
US8254701B1 (en) * | 2007-12-13 | 2012-08-28 | Nvidia Corporation | Data compression using a geometry shading unit |
Also Published As
Publication number | Publication date |
---|---|
US10102603B2 (en) | 2018-10-16 |
CN105283900A (zh) | 2016-01-27 |
WO2014200863A1 (en) | 2014-12-18 |
EP3008699A4 (en) | 2016-11-23 |
US10740867B2 (en) | 2020-08-11 |
US20180336658A1 (en) | 2018-11-22 |
EP3008699B1 (en) | 2020-04-22 |
EP3008699A1 (en) | 2016-04-20 |
US11232534B2 (en) | 2022-01-25 |
US20140362100A1 (en) | 2014-12-11 |
US20200372602A1 (en) | 2020-11-26 |
JP6591405B2 (ja) | 2019-10-16 |
JP2016523404A (ja) | 2016-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105283900B (zh) | 用于压缩顶点着色器输出参数的方案 | |
CN105556565B (zh) | 片段着色器执行顶点着色器计算 | |
CN105556571B (zh) | 使用计算着色器作为顶点着色器的前端 | |
US7692660B2 (en) | Guided performance optimization for graphics pipeline state management | |
JP5154551B2 (ja) | グラフィックスパイプラインステートの高速再構成 | |
US11113876B2 (en) | Method for displaying a 3D scene graph on a screen | |
JP2002074388A (ja) | グラフィクスシステムにおいて環境を写し込んだバンプマッピングのための方法および装置 | |
WO2024027237A1 (zh) | 渲染的优化方法、电子设备和计算机可读存储介质 | |
JP2023527438A (ja) | リアルタイム深度マップを用いたジオメトリ認識拡張現実効果 | |
WO2019088865A1 (ru) | Способ и система удаления невидимых поверхностей трёхмерной сцены | |
RU2810701C2 (ru) | Гибридный рендеринг | |
WO2024093609A1 (zh) | 一种叠加光遮挡的渲染方法、装置及相关产品 | |
Meng et al. | Multicage image deformation on gpu | |
Wang et al. | Ray Tracing Acceleration Algorithm Based on FaceMap | |
Jing et al. | A post-processing decal texture mapping algorithm on graphics hardware |
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 |