CN102651142B - 图像渲染方法和装置 - Google Patents
图像渲染方法和装置 Download PDFInfo
- Publication number
- CN102651142B CN102651142B CN201210110955.3A CN201210110955A CN102651142B CN 102651142 B CN102651142 B CN 102651142B CN 201210110955 A CN201210110955 A CN 201210110955A CN 102651142 B CN102651142 B CN 102651142B
- Authority
- CN
- China
- Prior art keywords
- rendering
- stage
- rendering pass
- module
- pass
- 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.)
- Expired - Fee Related
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 249
- 238000000034 method Methods 0.000 title claims abstract description 158
- 230000008569 process Effects 0.000 claims abstract description 129
- 238000013075 data extraction Methods 0.000 claims abstract description 7
- 239000000284 extract Substances 0.000 claims abstract description 7
- 239000000872 buffer Substances 0.000 claims description 39
- 238000004040 coloring Methods 0.000 claims description 38
- 238000012545 processing Methods 0.000 claims description 38
- 230000003139 buffering effect Effects 0.000 claims description 32
- 238000013507 mapping Methods 0.000 claims description 16
- 230000009466 transformation Effects 0.000 claims description 13
- 239000011159 matrix material Substances 0.000 claims description 6
- 238000005520 cutting process Methods 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 description 8
- 230000007423 decrease Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000012805 post-processing Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Abstract
本发明涉及一种图像渲染方法和装置,该方法基于图像渲染装置实现,包括:配置步骤,对多路渲染进行管理配置,包括配置N个渲染通路;数据提取步骤,提取当前批次的图元数据,并将其输入所述N个渲染通路;渲染处理步骤,所述N个渲染通路分别对当前批次的图元数据执行渲染处理得到N个渲染处理结果。本发明方法和装置可以有效提高渲染处理的效率。
Description
技术领域
本发明涉及一种图像处理技术,尤其是一种图像渲染方法和装置
背景技术
为了实现立体3D,需要把3D场景数据处理为最终显示给用户的左右视差图,从技术的角度看需要一个被称之为3D渲染着色的过程。其实现依赖于显卡及Direct3D(简称D3D,是微软公司在MicrosoftWindows操作系统上所开发的一套3D绘图编程接口)或OpenGL3D(OpenGraphicsLibrary,开放的图形程序接口,)渲染程序库。通过使用Direct3D或OpenGL,软件编程人员可以把3D场景数据提交给渲染管线(RenderingPipeline)由显卡上的GPU(GraphicProcessingUnit,图形处理器)芯片进行运算处理生成2D图像,即实现了传统3D。
现有渲染管线是已经设计好的3D数据处理流程。其和GPU芯片的关系可以简单的解释为一个把3D数据按步骤有序一次处理的算法、方法与具体执行载体的关系。可见Direct3D或OpenGL图形处理库与GPU芯片处理架构是密切相关的。
一般的游戏引擎对每帧场景的渲染处理的步骤包括:
(1)首先根据在场景中设定的虚拟相机,得到依相机参数决定的平截头体(Frustums)范围内的待绘制的场景图元数据,并放入渲染队列。
(2)设置渲染目标及矩形视口。
(3)依顶点格式、对应的纹理和运行其上的shader(着色过程)、渲染状态等的不同将待绘制的场景数据分批次渲染。其中图元集合每投递一次叫做一个渲染批次。每个渲染批次的流程包括:
在每个顶点上执行顶点着色(vertexShader)及几何着色(GemotryShader);其中,几何着色阶段提供了比顶点着色阶段更灵活的数据计算及存取方案,其可以对顶点数据执行不同的计算处理,并反馈输出。
在每像素上执行像素着色(PixelShader);
执行3D光栅化,输出最终的像素到后台颜色缓冲区;
把后台缓冲区中的内容翻转到前台渲染目标中。
如图1所示,针对每批次图元数据经过顶点着色、顶点光栅化处理、像素着色以及像素光栅化等一系列渲染阶段后仅输出一个渲染处理结果(即左视差图或右视差图),渲染性能较低,尤其在需要根据一个批次图元数据输出若干个渲染处理结果时,这种缺陷尤其突出。
发明内容
本发明要解决的技术问题是提供一种图像渲染方法和装置,以解决需要根据一个批次图元数据输出若干个渲染处理结果时效率低下的问题。
为了解决上述技术问题,本发明提供了一种图像渲染方法,该方法基于图像渲染装置实现,包括:
配置步骤,对多路渲染进行管理配置,包括配置N个渲染通路;
数据提取步骤,提取当前批次的图元数据,并将其输入所述N个渲染通路;
渲染处理步骤,所述N个渲染通路分别对当前批次的图元数据执行渲染处理得到N个渲染处理结果。
进一步地,所述渲染处理包括多个渲染阶段,配置渲染通路包括建立渲染通路与用于执行各个渲染阶段的逻辑资源单元的映射关系。
优选地,所述配置步骤中,所述管理配置还包括分配渲染处理模块对应的逻辑资源及配置着色过程和/或渲染处理参数,同一渲染阶段的不同逻辑资源单元的逻辑资源或着色过程和/或渲染处理参数不同。
进一步地,渲染处理步骤中,所述N个渲染通路同步或异步执行渲染流程。
可选地,所述配置步骤中,所述管理配置还包括配置与所述N个渲染通路分别对应的N子区域帧缓冲,所述渲染处理步骤后,该方法还包括渲染处理缓存步骤,将所述N个渲染处理结果分别缓存入各自对应的子区域帧缓冲。
为了解决上述技术问题,本发明还提供了一种图像渲染装置,该装置包括:
多路渲染管理单元,用于对多路渲染进行管理配置,包括渲染通路配置模块,用于配置N个渲染通路;
缓存单元,用于缓存各批次图元数据;
图元数据提取单元,用于从所述缓存单元提取当前批次的图元数据,并将其输入多路渲染处理单元;
多路渲染处理单元,用于根据所述多路渲染管理单元的配置通过N个渲染通路对输入的当前批次的图元数据分别执行渲染处理得到N个渲染处理结果。
相较于现有技术,本发明方法和装置提交一个批次图元数据,可得到多路渲染输出,节省了CPU占用计算,最大限度避免了GPU管线的空闲,避免了提交批次的增长所导致的性能下降。另通过配置,可实现不同通路适用不同的渲染流程,以及实现不同通路间数据的共享,极大地优化了渲染技术。
附图说明
图1为现有渲染方法的流程示意图;
图2为本发明图像渲染装置实施例1的模块结构示意图;
图3至图6为本发明渲染通路的示例;
图7为图2中多路渲染处理单元的模块结构示意图;
图8为本发明图像渲染装置实施例2的模块结构示意图;
图9为本发明多路渲染处理单元的模块与缓存单元的交互示意图;
图10为本发明图像渲染方法的流程示意图。
具体实施方式
以下以实现立体3D为例,对现有渲染方法进行分析:
实现立体3D技术需要在每帧渲染中生成两幅具有左右视差的2D图像。在目前渲染管线架构下为实现立体3D,每帧需要执行至少两趟渲染批次序列,面数也增长一倍。影响渲染速度的主要因素有以下几个:
1、每帧渲染的图元总量。图元数量越大速度越慢。但在GPU图形处理吞吐量一定的情况下图元数量的增长对渲染的速度影响不大。
2、缓冲带宽。渲染的目标缓冲区越大速度越慢。
3、每帧的渲染批次的个数。渲染批次的个数越多渲染速度越慢。因为把三角形提交给GPU渲染是一个相对较慢的过程在目前的CPU上要达到30秒/帧,在每帧中只能提交1000-4000个批次。在游戏中还要给其他逻辑、物理、AI等的处理提供CPU时间,由此看来如果提交批次有大量增长将严重影响游戏的运行性能。每帧提交的批次个数将对帧速率起决定作用。(参见《GPUGems2》,中文译名为《GPU精粹2》是3D渲染方面的技术图书,清华大学出版社出版发行。)
4、Shader算法越复杂渲染速度越慢。
从传统3D渲染程序到支持立体3D不同的仅是每帧要多取景至少一次,应用在每顶点每像素的处理不变。在不考虑Shader算法的情况下,有以下结论:
(1)立体3D需要至少渲染出左右两幅图像,目前的解决办法就是把原来每帧的一次渲染批次序列执行两遍分别输出到左右两个视口区域对应的缓冲区中生成左右视差图。每帧渲染的图元数量至少翻倍。
(2)就目前的立体3D技术所需要的左右视图来说,其每幅图像大小可设为显示窗口对应的目标缓冲区的一半,这种情况下分批次渲染生成左右视差图和同一批次生成左右视差图所对应缓冲区大小不变。因此,把缓冲区填充率没有变化作为我们分析问题的前提。
(3)例如:一个3D游戏每帧要把3D场景渲染到1024×768的矩形窗口上,后台缓冲大小是1024×768。每帧中绘制300个模型,每个模型2000面。并且每个模型作为一个批次渲染。那么一个渲染批次序列将执行300个批次处理。要实现左右图生成将需要两趟提交绘制600个批次。实际的测试表明在现有渲染管线下实现左右视差图输出,由于提交批次增长一倍其性能降低35-40%。这其中的原因就是CPU时间处理延长。
下面给出两组不同条件下针对传统3D渲染和立体3D渲染的性能测试结果,以此作为我们判断渲染瓶颈的依据:
以上测试一说明增加每批次图元绘制的数量时将导致帧速率下降。
通过实测可见由传统3D渲染到立体渲染性能将下降40%,引起渲染性能下降的主要因素是批次的翻倍和顶点面数的增长。这也是在现有管线下实现立体3D渲染的主要瓶颈。
虽然GPU上每顶点和每像素的计算量的增长也是影响帧速率因素,但花在每帧上对图元数据的计算量是相对固定的。而且通过测试批次翻倍和计算量的翻倍对渲染性能的影响是接近1:1的。也就是说当应用本发明所提到的技术来生成立体3D的左右图时比在现有计算上实现,在图元计算量一定时效率会有25%的提升。
本专利针对传统3D渲染管线每批次的渲染仅输出到一个缓冲进行改进,优化为每批次图元数据设置多个渲染通路,从而得到多个渲染处理结果,进而输出到多个缓冲,这样提交一次渲染可以输出多幅图像,并且关键地,能在同一批次图元上不同的渲染阶段执行不同的渲染着色(Shader)。也就是说原有在同一图元数据上执行不同渲染着色(shader)的应用均可由原来的分批次提交而改为一次提交,从而达到提高此类应用渲染效率的目的。
下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
实施例1
本发明图像渲染装置实施例如图2所示,包括:
多路渲染管理单元,用于对多路渲染进行管理配置,包括渲染通路配置模块,用于配置N个渲染通路;
缓存单元,用于缓存各批次图元数据;
图元数据提取单元,用于从所述缓存单元提取当前批次的图元数据,并将其输入多路渲染处理单元;
多路渲染处理单元,用于根据所述多路渲染管理单元的配置通过N个渲染通路对输入的当前批次的图元数据分别执行渲染处理得到N个渲染处理结果。
优选地,所述渲染处理包括多个渲染阶段,所述多路渲染处理单元包括用于执行各渲染阶段处理的渲染处理模块,所述配置渲染通路包括建立渲染通路与各渲染阶段的渲染处理模块的映射关系。
具体地,该映射关系可表现为各渲染通路(比如具体为渲染通路标识)与各渲染阶段所使用的输入输出寄存器逻辑标识与物理寄存器之间的映射。
同一渲染阶段的不同渲染处理模块的逻辑资源或着色过程和/或渲染处理参数不同。但为了提高渲染效率,但不同渲染通路处于同一渲染阶段的渲染处理模块的逻辑资源和着色过程和/或参数可能相同也可能不同。
实现某一渲染处理模块的逻辑资源和参数可以是系统默认的,也可以根据需要灵活设置,可选地,所述多路渲染管理单元还包括渲染通路初始化模块,用于分配渲染处理模块对应的逻辑资源及配置渲染处理参数。
本发明中,所述N个渲染通路中的任两个渲染通路的一个或多个着色过程和/或渲染处理参数的值和/或子阶段的输入数据不同。一般的,着色过程对应于渲染阶段是实现了某些算法的对数据进行加工处理的程序脚本。
渲染处理参数包括观察变换矩阵、渲染状态。根据具体显示需求的不同,可通过改变着色过程(Shader)、变换矩阵、渲染状态的具体赋值来配置不同的渲染通路,还可通过改变渲染阶段模块间的衔接关系(即改变了渲染通路与渲染阶段模块的映射关系)来配置不同的渲染通路。
以下以一个渲染通路包括三个渲染阶段为例,对本发明渲染通路进行说明:
示例一:
如图3所示,第一阶段模块A和第一阶段模块B仅在于着色过程和/或某个渲染参数不同,可理解为是两个不同的第一阶段渲染处理模块,图中示出了两个渲染通路:
第一渲染通路:第一阶段模块A->第二阶段模块->第三阶段模块;
第二渲染通路:第一阶段模块B->第二阶段模块->第三阶段模块;
这两个渲染通路的不同在于,在第一阶段模块采用了不同的着色过程和/或渲染参数对共享的图元数据进行了处理,两个通路对应的第二阶段模块采用了各自不同的输入数据进行处理,从而使得共享的图元数据经过两个渲染通路的处理后,最终得到了两个渲染处理结果。
更一般地,两个通路之间相对应的渲染阶段都可有不同的渲染状态和着色过程,从而达到对缓存的批次图元的共享,与现有技术相比,大大提升了渲染性能。
示例二:
如图4所示,第三阶段模块A和第三阶段模块B仅在于着色过程和/或某个渲染参数不同,图中示出了两个渲染通路:
第一渲染通路:第一阶段模块->第二阶段模块->第三阶段模块A;
第二渲染通路:第一阶段模块->第二阶段模块->第三阶段模块B。
这两个渲染通路的不同在于,在第三阶段模块采用了不同的着色过程和/或渲染参数对相同的第二阶段模块处理结果进行了处理,最终得到了不同的渲染处理结果。
示例三
如图5所示,同一渲染阶段的A和B均存在一个或多个渲染参数不同,图中示出了六个渲染通路,如下表所示:
渲染通路索引 | 第一阶段模块 | 第二阶段模块 | 第三阶段模块 |
1 | A1 | A2 | A3 |
2 | A1 | B2 | B3 |
3 | B1 | B2 | B3 |
4 | B1 | A2 | A3 |
5 | A1+B1 | B2 | B3 |
6 | A1+B1 | A2 | A3 |
第一渲染通路:第一阶段模块A1->第二阶段模块A2->第三阶段模块A3;
第二渲染通路:第一阶段模块A1->第二阶段模块B2->第三阶段模块B3;
第三渲染通路:第一阶段模块B1->第二阶段模块B2->第三阶段模块B3;
其中,第二渲染通路与第三渲染通路的不同之处在于,第一阶段采用了不同的模块,且第二阶段的模块的输入数据不同,最终得到了不同的渲染处理结果。
第四渲染通路:第一阶段模块B1->第二阶段模块A2->第三阶段模块A3;
第五渲染通路:第一或第二渲染通路下的第一阶段模块A1+第一阶段模块B1->第二阶段模块B2->第三阶段模块B3;
第六渲染通路:第一阶段模块A1+第三渲染通路下的第一阶段模块B1->第二阶段模块A2->第三阶段模块A3。
第五、第六渲染通路的第二阶段执行时的输入数据来自另两个通路第一阶段的两个输出数据和各自的图元数据,第五、第六渲染通路与另两个渲染通路共享了第一阶段的输出。
示例四
如图6所示,同一渲染阶段的A和B均存在一个或多个渲染参数和着色过程的不同,图中示出了三个渲染通路,如下表所示:
渲染通路索引 | 第一阶段模块 | 第二阶段模块 | 第三阶段模块 |
1 | A1 | A2 | A3 |
2 | B1 | B2 | B3 |
3 | A1->B1 | B2 | B3 |
第一渲染通路:第一阶段模块A1->第二阶段模块A2->第三阶段模块A3;
第二渲染通路:第一阶段模块B1->第二阶段模块B2->第三阶段模块B3;
第三渲染通路:第一阶段模块A1>第一阶段模块B1>第二阶段模块B-2>第三阶段模块B3;
其中,第三渲染通路中,第一阶段需要第一渲染通路的第一阶段模块A1的输出数据和图元数据作为第三渲染通路第一阶段模块B1的输入,因此第三通路须等待第一通路执行完第一阶段A1之后才能执行,即要求第一渲染通路和第三渲染通路之间异步执行。
通过以上示例可以看出,在各阶段模块数目一定的情况下,通过建立不同的映射关系,可以增加渲染通路的数目,两个渲染阶段之间的模块间的映射关系可表现为1对1、1对多或多对1,节省了系统逻辑资源,提升了渲染性能。
具体地,如图7所示,所述多路渲染处理单元包括共享图元数据的N个渲染通路,在具体实现时,渲染通路可适用现有渲染流程,也可扩展至其他新的渲染流程,可理解地,本发明对各渲染通路通过哪些渲染阶段实现图元数据渲染并不做限定,可选的渲染流程包括:
可选流程一:顶点着色->顶点光栅化处理->像素着色>像素光栅化处理;
可选流程二:顶点着色->几何着色->顶点光栅化处理->像素着色>像素光栅化处理;
可选流程三:几何着色->顶点光栅化处理->像素着色>像素光栅化处理。
优选地,以实现前述可选流程一为例,每个渲染通路包括顶点着色模块、顶点光栅化处理模块、像素着色模块和像素光栅化处理模块,其中:
所述顶点着色模块,用于对输入的共享顶点数据进行顶点着色处理,并输出经观察变换处理后的顶点数据;
各渲染通路的顶点着色模块输入相同顶点数据,输出经各自观察变换处理后的顶点数据:位置、光照反射向量等。
所述顶点光栅化处理模块,用于对同一渲染通路的顶点着色模块输出的顶点数据进行处理裁剪和顶点插值,并输出顶点插值结果;
所述像素着色模块,用于对同一渲染通路的顶点光栅化处理模块输出的顶点插值结果(包括位置、纹理坐标)进行像素着色,并输出计算后的颜色值;
所述像素光栅化处理模块,用于对同一渲染通路的像素着色模块输出的颜色值进行光栅化操作(包括Alpha测试、Depth测试、抗拒齿、颜色混合(Binding)等操作),生成所述渲染处理结果。
可理解地,如果渲染通路通过其他可选流程实现,则多路渲染处理单元包括相应的实现流程各个阶段的模块,且由各模块之间的数据输入输出关系最终构造完整的渲染通路。不同的渲染通路之间也可适用不同的渲染流程。
实施例2
在另一优选的图像渲染装置实施例2如图8所示,其与图2所示的实施例相比,不同之处在于,所述多路渲染管理单元还包括子区域帧缓冲初始化单元,用于配置与所述N个渲染通路分别对应的N个子区域帧缓冲;子区域帧缓冲初始化单元可保证由高速缓冲传来的顶点数据经各自通路处理后渲染到相关的子区域帧缓冲中。
所述装置还包括渲染结果缓存单元,用于将所述N个渲染处理结果输出至各自对应的子区域帧缓冲;
缓存单元,还用于在所述N子区域帧缓冲缓存所述N个渲染处理结果。
可选地,所述子区域帧缓冲初始化单元,还用于初始化渲染通路子区域缓冲与窗口句柄关联以及初始化子区域缓冲宽高。
具体地,支持多个渲染通路子区域缓冲映射到单一窗口,并设置设备窗口大小范围内的多个不重叠子区域帧缓冲。包括对子区域帧缓冲所对应的矩形范围的位置、宽高的设置。也支持每个渲染通路子区域缓冲映射到不同窗口。
为了实现不同渲染通路子阶段渲染结果的共享和交叉使用,所述子区域帧缓冲初始化单元,还用于缓存各渲染处理模块的渲染处理结果。
实施例3
与实施例1相比,所述多路渲染管理单元还包括多路渲染并发控制模块,用于控制N个渲染通路的同步或异步执行渲染处理。
例如:设置同一批次的两个通路A、B。如果通路B的某个阶段要用到通路A的某个阶段的输出便应该先执行通路A的计算后执行通路B的计算也就是要应用异步执行。一般地多通路间异步执行的顺序可按逻辑序号依次执行。图6所示示例即为应使用异步处理的情况。
以上实现渲染阶段的模块,由渲染通路初始化模块分配的逻辑资源实现,具体地,该逻辑资源包括流处理器和ROP。
在每个渲染阶段内支持多通路渲染,每一阶段的数据输入是上一阶段的输出,且上一阶段的渲染通路与下一阶段的渲染通路一一映射,由多路渲染管理单元中的中的渲染通路配置子单元和渲染通路初始化模块来实现。
对于某个渲染通路来说,前一渲染阶段的输出即为下一渲染阶段的输入,前一渲染阶段的输出可缓存至缓存单元中,后一渲染阶段再根据设置的映射关系从缓存单元中提取输入数据,如图9所示,具体的映射关系可通过逻辑寄存器的个数及逻辑名字建立映射关系。
具体的,多路渲染处理单元可由GPU芯片实现,该GPU芯片包括:
(1)2-eSM控制器。以GT200架构为例1个SMC控制3个SM(StreamingMultiprocessor,流处理器)。完成取址调度等功能。
(2)2-f每个SM相当于一个具有SIMD(SingleInstructionMultipleData,单指令流多数据)的处理器,拥有独立的取址、译码、发射和执行单元。并生成用于访问显存的加载和存储指令。用于执行顶点变换及像素处理,包括各种Shader。
(3)2-g一级高速缓存。
(4)2-h纹理流水线。
(5)2-i固定功能光栅操作单元(ROP),对存储器内的数据进行颜色和深度操作。
(6)2-j存储器控制器。提供读写显存功能。
(7)2-k显存。以执行3D渲染程序为例,显存中将包括有程序请求的顶点缓冲、索引缓冲、纹理缓冲、还有子区域缓冲。
本发明还提供了一种基于前述图像渲染装置的图像渲染方法,如图10所示,该包括:
步骤901:配置步骤,对多路渲染进行管理配置,包括配置N个渲染通路;
可选地,所述配置步骤中,所述管理配置还包括分配渲染处理模块对应的逻辑资源及配置渲染处理参数。
可理解地,所述N个渲染通路中的任两个渲染通路的一个或多个渲染处理参数的值和/或子阶段的输入数据不同。
所述渲染处理参数包括渲染状态、着色过程(Shader)相关参数,例如变换矩阵、光向量。
步骤902:数据提取步骤,提取当前批次的图元数据,并将其输入所述N个渲染通路;
步骤903:渲染处理步骤,所述N个渲染通路分别对当前批次的图元数据执行渲染处理得到N个渲染处理结果。
优选地,所述渲染处理包括多个渲染阶段,配置渲染通路包括建立渲染通路与用于执行各个渲染阶段的逻辑资源单元的映射关系,同一渲染阶段的不同逻辑资源单元的逻辑资源或渲染处理参数不同。
可选地,渲染处理步骤中,所述N个渲染通路同步或异步执行渲染流程。
如前文所述,所述渲染处理包括的渲染阶段有顶点着色、顶点光栅化处理、像素着色、像素光栅化处理,每一渲染通路的后一阶段对同一渲染通路的前一阶段的处理结果进行处理。
优选地,所述配置步骤(步骤901)中,所述管理配置还包括配置与所述N个渲染通路分别对应的N子区域帧缓冲,所述渲染处理步骤(步骤903)后,该方法还包括渲染处理缓存步骤,将所述N个渲染处理结果分别缓存入各自对应的子区域帧缓冲。
可选地,所述配置步骤中,所述管理配置还包括初始化渲染通路子区域缓冲与窗口句柄关联以及初始化子区域缓冲宽高。
应用实例一
进行立体3D渲染的处理流程,以输出左右视差图为例,该流程包括:
设置当前批次渲染状态,设置两路渲染并初始化两个子区域缓冲,依据用户的设置每个子区域缓冲可包括颜色缓冲、深度缓冲、模板缓冲;分配GPU逻辑资源,如流处理器,和ROP光栅化单元的数量;设置每路映射使用的不同的变换矩阵
根据前述设置,对每一批次图元进行处理,每一图元批次到来时,根据设置使两路映射之间是同步执行或异步执行。(通常可设置为同步执行),每一批次图元的处理子流程包括:
取顶点数据、索引数据、纹理到高速缓冲;
在流处理器上执行顶点Shader。两路渲染输出各自变换后的顶点数据和其它如漫反射值、纹理索引值等;
两路渲染管线分别对顶点进行光栅化处;
在流处理器上执行像素Shader;
固定功能光栅操作单元(ROP)对像素Shader的输出做光栅化处理。结果输出至两个渲染通路各自对应的子区域缓冲。
一个批次的图元绘制完毕,提交下一批次图元。
应用实例2
实现对实景3D图像和蓝图同步渲染输出至各自对应的窗口,具体包括以下步骤:
设置两个渲染通路及两个渲染通路各自对应的shader,如:使用渲染通路1生成实景3D图像,使用渲染通路2生成蓝图,因此两个渲染通路将至少使用不同的像素shader;初始化渲染通路子区域缓冲与窗口句柄关联及子区域缓冲宽高;
根据前述设置,对每一批次图元进行处理,每一批次图元的处理流程包括:
载入一批次图元数据到高速缓冲,包括顶点、纹理、shader等。
由Shader操作扩展模块设置两个渲染通路各自对应的shader。⑥在流处理器上执行顶点Shader。两路渲染输出各自变换后的顶点数据和其它如漫反射值、纹理索引值等;
两路渲染管线分别对顶点进行光栅化处理;
在流处理器上执行像素Shader;
固定功能光栅作单元(ROP)对像素Shader的输出做光栅化处理。结果输出至两个渲染通路各自对应的子区域缓冲;
一个批次的图元绘制完毕,提交下一批次图元。
相较于现有技术,本发明方法和装置提交一个批次图元数据,可得到多路渲染输出。利用本发明方法进行立体3D渲染,则在一个渲染批次中能够生成与之对应的左右两幅图上像素的输出,那么通过提交一个渲染批次序列就将生成左右视差图。即,实现立体3D左右视差图的渲染过程当中减少了50%的批次提交,节省了CPU占用计算,最大限度避免了GPU管线的空闲,避免了提交批次的增长所导致的性能下降。
当要实现对图元数据做不同的顶点处理(如:不同的观察变换、投影变换)和像素处理(一些图像处理算法)时应用本发明可以在仅提交一遍图元批次的情况下而实现对这个图元批次的两个或两个以上的渲染输出,可把当前绘制的图形输出到两个及以上的颜色缓冲中。这就避免了在现有技术下为实现左右视差图的生成而采取对同一批次图元应用不同的相机设置做两遍渲染而引起的渲染速率的显著下降。
也就是说这样一种渲染管线架构使得我们在不增加提交批次的前提下就可生成立体3D需要的左右视差图,并且比在现有技术下实现同样需求显著提高了渲染效率。
减少了50%的数据载入和渲染状态切换,节省了GPU运算。
另外,多个通路之间可共享需相同处理的变量。可节省对此类变量的分配与计算。
由于多通路渲染管线支持多通路同步处理图元,所以可以在不同通路上应用不同的每顶点和每像素(着色过程)的处理,并也可以在不同通路之间访问各自对应的缓冲中的数据。这些便利也为多种图形学算法提供了实现或优化的可能。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
Claims (13)
1.一种图像渲染方法,其特征在于,该方法基于图像渲染装置实现,包括:
配置步骤,对多路渲染进行管理配置,包括配置N个渲染通路;所述N个渲染通路异步执行渲染处理;
数据提取步骤,提取当前同一批次的图元数据,并将其输入所述N个渲染通路;
渲染处理步骤,所述N个渲染通路分别对当前同一批次的图元数据执行渲染处理得到N个渲染处理结果;所述渲染处理包括多个渲染阶段;
所述配置N个渲染通路包括建立渲染通路与用于执行各个渲染阶段的逻辑资源单元的映射关系,前一渲染阶段的输出即为下一渲染阶段的输入,前一渲染阶段的输出缓存至缓存单元中,后一渲染阶段再根据设置的映射关系从缓存单元中提取输入数据;
在每个渲染阶段内支持多通路渲染,每一阶段的数据输入是上一阶段的输出,且上一阶段的渲染通路与下一阶段的渲染通路一一映射,由多路渲染管理单元中的渲染通路配置子单元和渲染通路初始化模块来实现。
2.如权利要求1所述的方法,其特征在于:所述配置步骤中,所述管理配置还包括分配渲染处理模块对应的逻辑资源及配置着色过程和/或渲染处理参数,同一渲染阶段的不同逻辑资源单元的逻辑资源或着色过程和/或渲染处理参数不同。
3.如权利要求1或2所述的方法,其特征在于:所述渲染处理参数至少包括渲染状态、着色过程(Shader)的参数,其中所述着色过程参数包括变换矩阵。
4.如权利要求1所述的方法,其特征在于:所述配置步骤中,所述管理配置还包括配置与所述N个渲染通路分别对应的N子区域帧缓冲,所述渲染处理步骤后,该方法还包括渲染处理缓存步骤,将所述N个渲染处理结果分别缓存入各自对应的子区域帧缓冲。
5.如权利要求4所述的方法,其特征在于:所述配置步骤中,所述管理配置还包括初始化渲染通路子区域缓冲并与窗口句柄关联以及初始化子区域缓冲宽高。
6.如权利要求1所述的方法,其特征在于:所述渲染处理包括的渲染阶段有顶点着色、顶点光栅化处理、像素着色、像素光栅化处理,每一渲染通路的后一阶段对同一渲染通路的前一阶段的处理结果进行处理。
7.一种图像渲染装置,其特征在于,该装置包括:
多路渲染管理单元,用于对多路渲染进行管理配置,包括渲染通路配置模块,用于配置N个渲染通路;所述多路渲染管理单元还包括多路渲染并发控制模块,用于控制N个渲染通路异步执行渲染处理;
缓存单元,用于缓存各批次图元数据;
图元数据提取单元,用于从所述缓存单元提取当前同一批次的图元数据,并将其输入多路渲染处理单元;
多路渲染处理单元,用于根据所述多路渲染管理单元的配置通过N个渲染通路对输入的当前同一批次的图元数据分别执行渲染处理得到N个渲染处理结果;所述渲染处理包括多个渲染阶段;
所述多路渲染处理单元包括用于执行各渲染阶段处理的渲染处理模块,所述配置N个渲染通路包括建立渲染通路与各渲染阶段的渲染处理模块的映射关系,前一渲染阶段的输出即为下一渲染阶段的输入,前一渲染阶段的输出缓存至缓存单元中,后一渲染阶段再根据设置的映射关系从缓存单元中提取输入数据;
在每个渲染阶段内支持多通路渲染,每一阶段的数据输入是上一阶段的输出,且上一阶段的渲染通路与下一阶段的渲染通路一一映射,由多路渲染管理单元中的渲染通路配置子单元和渲染通路初始化模块来实现。
8.如权利要求7所述的装置,其特征在于:所述多路渲染管理单元还包括渲染通路初始化模块,用于分配渲染处理模块对应的逻辑资源及配置着色过程和/或渲染处理参数,同一渲染阶段的不同渲染处理模块的逻辑资源或着色过程和/或渲染处理参数不同。
9.如权利要求7或8所述的装置,其特征在于:所述渲染处理参数至少包括渲染状态、着色过程(Shader)的参数,其中所述着色过程参数包括变换矩阵。
10.如权利要求7所述的装置,其特征在于,
所述多路渲染管理单元还包括子区域帧缓冲初始化单元,用于配置与所述N个渲染通路分别对应的N个子区域帧缓冲;
所述装置还包括渲染结果缓存单元,用于将所述N个渲染处理结果输出至各自对应的子区域帧缓冲;
缓存单元,还用于在所述N个子区域帧缓冲缓存所述N个渲染处理结果。
11.如权利要求10所述的装置,其特征在于:所述子区域帧缓冲初始化单元,还用于初始化渲染通路子区域缓冲并与窗口句柄关联以及初始化子区域缓冲宽高。
12.如权利要求10所述的装置,其特征在于:所述子区域帧缓冲初始化单元,还用于缓存各渲染处理模块的渲染处理结果。
13.如权利要求7所述的装置,其特征在于:所述多路渲染处理单元包括共享图元数据的N个渲染通路,每个渲染通路包括顶点着色模块、顶点光栅化处理模块、像素着色模块和像素光栅化处理模块,其中:
所述顶点着色模块,用于对输入的共享顶点数据进行顶点着色处理,并输出经观察变换处理后的顶点数据;
所述顶点光栅化处理模块,用于对同一渲染通路的顶点着色模块输出的顶点数据进行处理裁剪和顶点插值,并输出顶点插值结果;
所述像素着色模块,用于对同一渲染通路的顶点光栅化处理模块输出的顶点插值结果进行像素着色,并输出计算后的颜色值;
所述像素光栅化处理模块用于对同一渲染通路的像素着色模块输出的颜色值进行光栅化操作,生成所述渲染处理结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210110955.3A CN102651142B (zh) | 2012-04-16 | 2012-04-16 | 图像渲染方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210110955.3A CN102651142B (zh) | 2012-04-16 | 2012-04-16 | 图像渲染方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102651142A CN102651142A (zh) | 2012-08-29 |
CN102651142B true CN102651142B (zh) | 2016-03-16 |
Family
ID=46693145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210110955.3A Expired - Fee Related CN102651142B (zh) | 2012-04-16 | 2012-04-16 | 图像渲染方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102651142B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104036534B (zh) * | 2014-06-27 | 2017-02-22 | 成都品果科技有限公司 | 一种基于wp8平台的相机实时特效渲染方法 |
CN105321196A (zh) * | 2014-07-21 | 2016-02-10 | 上海羽舟网络科技有限公司 | 一种3d图像的处理方法及系统 |
KR20160047317A (ko) * | 2014-10-22 | 2016-05-02 | 삼성전자주식회사 | 하이브리드 렌더링 장치 및 방법 |
CN104835110B (zh) * | 2015-04-15 | 2017-12-22 | 华中科技大学 | 一种基于gpu的异步图数据处理系统 |
CN105979243A (zh) * | 2015-12-01 | 2016-09-28 | 乐视致新电子科技(天津)有限公司 | 一种显示立体图像的处理方法和装置 |
CN105701854B (zh) * | 2016-01-06 | 2018-07-03 | 网易(杭州)网络有限公司 | 一种3d渲染方法、装置及引擎 |
US10068366B2 (en) * | 2016-05-05 | 2018-09-04 | Nvidia Corporation | Stereo multi-projection implemented using a graphics processing pipeline |
CN106162142A (zh) * | 2016-06-15 | 2016-11-23 | 南京快脚兽软件科技有限公司 | 一种高效的vr场景绘画方法 |
CN108022201B (zh) * | 2017-11-24 | 2021-09-14 | 中国航空工业集团公司西安航空计算技术研究所 | 一种三角形图元并行光栅化定序方法 |
CN108133453A (zh) * | 2017-12-13 | 2018-06-08 | 北京奇虎科技有限公司 | 一种基于OpenGL的图像处理器及其功能扩展方法 |
CN109168068B (zh) * | 2018-08-23 | 2020-06-23 | Oppo广东移动通信有限公司 | 视频处理方法、装置、电子设备及计算机可读介质 |
CN110223215B (zh) * | 2019-06-10 | 2022-11-29 | 西安芯瞳半导体技术有限公司 | 一种图形渲染管线的控制方法、装置及计算机存储介质 |
CN111080761B (zh) * | 2019-12-27 | 2023-08-18 | 西安芯瞳半导体技术有限公司 | 一种渲染任务的调度方法、装置及计算机存储介质 |
CN111144057B (zh) * | 2019-12-30 | 2023-09-15 | 西安芯瞳半导体技术有限公司 | 图形渲染管线的性能分析方法、装置及计算机存储介质 |
CN111988598B (zh) * | 2020-09-09 | 2022-06-21 | 江苏普旭科技股份有限公司 | 一种基于远近景分层渲染的视景图像生成方法 |
CN112233217B (zh) * | 2020-12-18 | 2021-04-02 | 完美世界(北京)软件科技发展有限公司 | 一种虚拟场景的渲染方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101334891A (zh) * | 2008-08-04 | 2008-12-31 | 北京理工大学 | 一种多通道的分布式绘制系统与方法 |
CN101976183A (zh) * | 2010-09-27 | 2011-02-16 | 广东威创视讯科技股份有限公司 | 一种多窗口图像同时更新时图像更新的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8773449B2 (en) * | 2009-09-14 | 2014-07-08 | International Business Machines Corporation | Rendering of stereoscopic images with multithreaded rendering software pipeline |
-
2012
- 2012-04-16 CN CN201210110955.3A patent/CN102651142B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101334891A (zh) * | 2008-08-04 | 2008-12-31 | 北京理工大学 | 一种多通道的分布式绘制系统与方法 |
CN101976183A (zh) * | 2010-09-27 | 2011-02-16 | 广东威创视讯科技股份有限公司 | 一种多窗口图像同时更新时图像更新的方法及装置 |
Non-Patent Citations (1)
Title |
---|
大规模3DGIS场景的多通道渲染算法研究;冯磊等;《高技术通讯》;20100930;第20卷(第9期);第1-2节 * |
Also Published As
Publication number | Publication date |
---|---|
CN102651142A (zh) | 2012-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102651142B (zh) | 图像渲染方法和装置 | |
CN105630441B (zh) | 一种基于统一染色技术的gpu系统 | |
US9405586B2 (en) | Method of dynamic load-balancing within a PC-based computing system employing a multiple GPU-based graphics pipeline architecture supporting multiple modes of GPU parallelization | |
EP1594091B1 (en) | System and method for providing an enhanced graphics pipeline | |
US8111260B2 (en) | Fast reconfiguration of graphics pipeline state | |
US10650566B2 (en) | Multiple shader processes in graphics processing | |
EP1789927B1 (en) | Increased scalability in the fragment shading pipeline | |
US7385607B2 (en) | Scalable shader architecture | |
US8395619B1 (en) | System and method for transferring pre-computed Z-values between GPUs | |
TW201618041A (zh) | 來自片段著色器程式之樣本遮罩的控制 | |
US20080266287A1 (en) | Decompression of vertex data using a geometry shader | |
US7616202B1 (en) | Compaction of z-only samples | |
CN107392836A (zh) | 使用图形处理管线实现的立体多投影 | |
CN109978750A (zh) | 执行基于采样的渲染的图形处理器和操作其的方法 | |
US8228337B1 (en) | System and method for temporal load balancing across GPUs | |
CN106886974A (zh) | 图像加速器设备及相关方法 | |
US6982719B2 (en) | Switching sample buffer context in response to sample requests for real-time sample filtering and video generation | |
JP2023525725A (ja) | データ圧縮の方法及び装置 | |
US20200193650A1 (en) | Graphics texture mapping | |
US8427474B1 (en) | System and method for temporal load balancing across GPUs | |
US6900803B2 (en) | Method for rasterizing graphics for optimal tiling performance | |
US20040174368A1 (en) | Parallel box filtering through reuse of existing circular filter | |
US11880924B2 (en) | Synchronization free cross pass binning through subpass interleaving | |
US20220067871A1 (en) | Graphics processing | |
US20240104685A1 (en) | Device and method of implementing subpass interleaving of tiled image rendering |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20180719 Address after: 518000 Room 201, building A, No. 1, Qian Wan Road, Qianhai Shenzhen Hong Kong cooperation zone, Shenzhen, Guangdong (Shenzhen Qianhai business secretary Co., Ltd.) Patentee after: SUPERD Co.,Ltd. Address before: 518053 H-1 Tung 101, overseas Chinese town, Nanshan District, Shenzhen, Guangdong. Patentee before: SHENZHEN SUPER PERFECT OPTICS Ltd. |
|
TR01 | Transfer of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160316 |