首页> 中国专利> 图形指令生成装置和图形指令生成方法

图形指令生成装置和图形指令生成方法

摘要

本发明提供一种图形指令生成装置和图形指令生成方法。中间指令生成部生成中间指令,该中间指令是具有用于描绘对象的模型数据的中间性的描绘指令。图形指令变换部将所生成的中间指令变换成用于使图形处理器执行的图形指令串。相同性判定部判断应从中间指令生成的图形指令的状态是否与以前所生成的图形指令的状态相同。图形指令生成部生成由相同性判定部判定为状态不相同的图形指令,并将判定为状态相同的图形指令作为冗余的指令而不生成。

著录项

  • 公开/公告号CN103150699A

    专利类型发明专利

  • 公开/公告日2013-06-12

    原文格式PDF

  • 申请/专利权人 索尼电脑娱乐公司;

    申请/专利号CN201210511387.8

  • 申请日2012-12-04

  • 分类号G06T1/00;

  • 代理机构北京市柳沈律师事务所;

  • 代理人黄小临

  • 地址 日本东京都

  • 入库时间 2024-02-19 19:20:08

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-02-17

    授权

    授权

  • 2013-07-17

    实质审查的生效 IPC(主分类):G06T1/00 申请日:20121204

    实质审查的生效

  • 2013-06-12

    公开

    公开

说明书

技术领域

本发明涉及生成图形指令的技术,特别涉及根据中间指令生成图形指令 的技术。

背景技术

在个人计算机或游戏专用机中,执行利用了高品质的3维计算机图形的 游戏或模拟机等应用程序,进行使实景与计算机图形融合了的影像内容 (contents)的再现等,高画质图形的利用非常广泛。

一般,通过CPU与图形处理单元(GPU)的协作来执行图形处理。CPU 是进行通用的运算的通用处理器,但GPU是用于进行高度的图形运算的专用 处理器。CPU基于对象的3维模型进行投影变换等几何运算,GPU从CPU 接收顶点数据等执行渲染。GPU由光栅器、像素着色器等专用硬件构成,通 过管线(pipeline)处理执行图形处理。最近的GPU还能具备被称作程序着 色器的着色器功能,为支持着色器编程,一般提供有图形库。

在渲染对象时,CPU需要生成由GPU硬件执行的图形指令,传递给GPU。 该图形指令的生成处理需要较多的CPU时间,故有的导入中间指令,将图形 指令的生成处理分成中间指令的生成和从中间指令向图形指令变换的2阶 段。通过用不同的线程执行中间指令的生成和从中间指令向图形指令的变换, 在中间指令生成后,能并行地执行将中间指令变换成图形指令的处理和用于 描绘下一帧的物理模型计算等图形以外的处理,能提高CPU的使用效率。

〔在先技术文献〕

〔专利文献〕

〔专利文献1〕日本特开2008-123520号公报

然而,将多个中间指令变换成图形指令后,若按所生成的图形指令的顺 序(sequence),则有时尽管状态(state)未被变更,却反复执行相同的图形 指令,由于该冗余性,执行效率会下降。

发明内容

本发明是鉴于这样的课题而研发的,其目的在于提供一种能提高从中间 指令生成的图形指令的执行效率的技术。

为解决上述课题,本发明一个方案的图形指令生成装置包括:生成中间 指令的中间指令生成部,该中间指令是具有用于描绘对象的模型数据的中间 性的描绘指令;图形指令变换部,将所生成的中间指令变换成用于使图形处 理器执行的图形指令串。上述图形指令变换部包括:相同性判定部,判断应 从上述中间指令生成的图形指令的状态是否与以前所生成的图形指令的状态 相同;图形指令生成部,生成由上述相同性判定部判定为状态不相同的图形 指令,并将判定为状态相同的图形指令作为冗余的指令而不生成。

本发明的另一方案是一种图形指令生成方法。该方法包括:生成中间指 令的中间指令生成步骤,该中间指令是具有用于描绘对象的模型数据的中间 性的描绘指令;将所生成的中间指令变换成用于使图形处理器执行的图形指 令串的图形指令变换步骤。上述图形指令变换步骤包括:判断应从上述中间 指令生成的图形指令的状态是否与以前所生成的图形指令的状态相同的相同 性判定步骤;生成由上述相同性判定步骤判定为状态不相同的图形指令,并 将被判定为状态相同的图形指令作为冗余的指令而不生成的图形指令生成步 骤。

此外,将以上构成要素的任意组合、本发明的表现形式在方法、装置、 系统、计算机程序、数据结构、记录介质等间变换后的实施方式,作为本发 明的方案也是有效的。

附图说明

图1是实施方式的图形处理系统的构成图。

图2是图形指令生成装置的构成图。

图3的(a)~(d)是说明从中间指令生成图形指令的情况的图。

图4的(a)是说明图2的转变成本计算部所进行的模型数据的转变成本 的计算方法的图,图4的(b)是说明图2的排序关键字赋予部所进行的对模 型数据赋予排序关键字的赋予方法的图。

图5是表示实施方式的图形指令生成装置所进行的图形指令生成处理的 步骤的流程图。

图6是表示由图2的图形指令变换部执行的步骤S60的向图形指令的变 换处理的详细步骤的流程图。

图7是说明由多个处理生成渲染的中间指令串,在一个渲染处理中进行 排序和冗余性消除的系统的图。

图8是说明由多个服务器生成渲染的中间指令串,在与服务器进行通信 的客户机中进行排序和冗余性消除的系统的图。

图9是说明由多个客户机生成渲染的中间指令串,在与多个客户机进行 通信的服务器中进行排序和冗余性消除的系统的图。

具体实施方式

本发明将通过以下基于实施方式的具体说明而得到明确,该实施方式仅 用于说明本发明的原理,并非限定本发明的范围。

图1是实施方式的图形处理系统的构成图。该图形处理系统包括主处理 单元100、图形处理单元140、系统存储器180、本地存储器160。

主处理单元100可以是单一的主处理器,也可以是包含多个处理器的多 处理器系统,或者,还可以是将多个处理器核集成在1个封装中的多核处理 器。在此作为一例,主处理单元100是包含主处理器101和多个副处理器110 的异构(Heterogeneous:异种混合)多核处理器。主处理器101和多个副处理 器110通过总线120连接,总线120上介由存储器接口170连接有系统存储 器180。主处理器101和多个副处理器110能介由总线120对系统存储器180 读写数据。

总线120上介由输入输出接口(以下称作“IOIF”)130连接有外部设备 190。在此仅是一例,并非限定于此,外部设备190包括图形处理单元140和 本地存储器160。

图形处理单元(以下简称“GPU”)140是装配有图形处理器核的图形芯 片,能介由本地总线150对本地存储器160读写数据。

主处理单元100和GPU140通过IOIF130连接,主处理单元100和GPU140 彼此能介由IOIF130交换数据。

主处理单元100生成用于描绘对象的描绘指令,并将其在设于系统存储 器180内的指令缓存器中排队。GPU140依次读出指令缓存器中所保存的描 绘指令进行处理。

主处理单元100基于对象的3维模型,生成多边形的顶点坐标值、顶点 颜色、法线矢量、UV值等几何数据,存储到系统存储器180中。此外,主处 理单元100将用于映射到多边形表面的纹理存储到系统存储器180中。进而, 主处理单元100从硬盘等记录介质读入着色器程序,存储到系统存储器180 中。

系统存储器180的存储器区域被内存映射(memory mapping)为I/O地 址空间,GPU140能经由IOIF130读取被内存映射为I/O地址空间的系统存 储器180的存储器区域。

存储有几何数据、纹理及着色器程序的系统存储器180内的存储器区域 被内存映射为IOIF130的控制器所设的存储器内的I/O地址空间。GPU140 介由IOIF130读出被内存映射为I/O地址空间的几何数据、纹理及着色器程 序。GPU140能将从系统存储器180读出的几何数据、纹理等图形运算所需 要的数据存储到本地存储器160中。

GPU140按照着色器程序,利用几何数据生成多边形的光栅数据,将像 素数据写入本地存储器160内的帧缓存器。进而,GPU140将纹理映射于多 边形表面,将纹理映射后的像素数据写入帧缓存器。

图2是图形指令生成装置200的构成图。图形指令生成装置200是由主 处理单元100实现的功能构成。主处理单元100是多核处理器时,由主处理 器101或至少一个副处理器110上的线程执行图形指令生成装置200的各功 能构成。

图形指令生成装置200包括转变成本计算部10、排序关键字赋予部20、 中间指令生成部30、模型数据存储部32、工作数据存储部34、排序部40、 及图形指令变换部50,图形指令变换部50包括相同性判定部60、图形指令 生成部70、及状态高速缓存器80。

中间指令中作为用于渲染对象的数据,有模型数据和工作数据。模型数 据是几何数据、纹理、着色器程序等帧间不被更新的信息,被存储于模型数 据存储部32。工作数据是对象的位置、姿势等按帧更新的信息,被存储于工 作数据存储部34。

转变成本计算部10从模型数据存储部32读出模型数据,计算在两个中 间指令间转变模型数据时的转变成本,将转变成本存储于模型数据存储部32。

排序关键字赋予部20基于转变成本决定使模型数据转变的顺序,按照该 转变顺序对模型数据赋予排序关键字,存储到模型数据存储部32中。排序关 键字赋予部20通过从某一个模型数据、例如最占据所显示的画面区域的模型 数据开始,按转变成本由小到大的顺序巡回模型数据,来决定使模型数据转 变的顺序,并按该转变顺序对模型数据赋予排序关键字。

中间指令生成部30基于包含渲染对象的信息的场景图(Scene Graph), 针对各帧分别从模型数据存储部32读出模型数据,从工作数据存储部34读 出工作数据,生成具有模型数据和工作数据的中间指令。

排序部40基于各中间指令的模型数据所被赋予的排序关键字,改换中间 指令生成部30所生成的多个中间指令的执行顺序。

图形指令变换部50将被排序部40改换了执行顺序的多个中间指令分别 变换成用于使图形处理器执行的图形指令串。

在图形指令变换部50中,相同性判定部60判定应从中间指令生成的图 形指令的状态是否与以前所生成的图形指令的状态相同。图形指令生成部70 生成被相同性判定部60判定为状态不相同的图形指令,但被判定为状态相同 的图形指令作为冗余的指令而不生成。

更具体来说,由图形指令生成部70生成的图形指令的状态被高速缓存到 状态高速缓存器80中。相同性判定部60基于应从中间指令生成的图形指令 的状态,参照状态高速缓存器80,若高速缓存命中,则判定为应从中间指令 生成的图形指令的状态与以前所生成的图形指令的状态相同,若没有高速缓 存命中,则通过应从中间指令生成的图形指令的状态值来更新被高速缓存于 状态高速缓存器80中的状态值。在高速缓存命中的情况下,该图形指令作为 冗余指令而不由图形指令生成部70生成,在没有高速缓存命中的情况下,图 形指令生成部70生成图形指令。

图形指令生成部70所生成的图形指令被传递给GPU140,被使用GPU140 的硬件功能来执行,由此对象被渲染。

图3的(a)~(d)是说明从中间指令生成图形指令的情况的图。

图3的(a)表示由中间指令生成部30生成的中间指令串。在此,作为 中间指令,DrawPacket1、DrawPacket2、DrawPacket3被按该顺序生成。图3 的(b)表示被排序部40排序后的中间指令串。在此,排序结果为,两个中 间指令DrawPacket1、DrawPacket2的执行顺序被调换,中间指令的执行顺序 成为DrawPacket2、DrawPacket1、DrawPacket3的顺序。按排序部40所生成 的中间指令的执行顺序执行中间指令时,与按中间指令生成部30所生成的执 行顺序执行中间指令时相比,模型数据的转变成本减小。

图3的(c)和图3的(d)表示图形指令变换部50从中间指令变换为图 形指令的情况。

首先,为进行比较,参照图3的(c)说明不使相同性判定部60动作时 从中间指令变换的图形指令串。

图形指令生成部70将在被排序部40排序(sort)后的中间指令串中最初 的中间指令DrawPacket2变换成图形指令串后,成为

SetTexture(A);

SetVertexShader(P);

SetFragmentShader(X);

DrawIndexArray(J)。

将此称为第1图形指令串。在此,SetTexture是设定纹理的图形指令, SetVertexShader是设定顶点着色器程序的图形指令,SetFragmentShader是设 定片段着色器的图形指令,DrawIndexArray是基于所设定的参数和程序执行 渲染的图形指令。括弧内的A、P、X、J是状态。例如,函数SetTexture() 的自变量A为纹理ID,SetVertexShader()的自变量P为着色器ID或存储 器上的程序的地址。

然后,图形指令生成部70将在被排序部40排序后的中间指令串中第2 个中间指令DrawPacket1变换成图形指令串后,成为

SetTexture(B);

SetVertexShader(P);

SetFragmentShader(Y);

DrawIndexArray(K)。

将此称作第2图形指令串。

进而,图形指令生成部70将在被排序部40排序后的中间指令串中第3 个中间指令DrawPacket3变换成图形指令串后,成为

SetTexture(B);

SetVertexShader(P);

SetFragmentShader(Y);

DrawIndexArray(L)。

将此称作第3图形指令串。

接下来,参照图3的(d),说明使相同性判定部60动作时从中间指令变 换的图形指令串。

相同性判定部60将第1图形指令串与第2图形指令串进行比较,判定是 否按相同状态值重复生成了相同的图形指令。第2图形指令串中的SetTexture (B)是与第1图形指令串中的SetTexture(A)相同的图形指令,但状态值 不同(B≠A)。第2图形指令串中的SetVertexShader(P)是与第1图形指令 串中的SetVertexShader(P)相同的图形指令,状态值也相同(都是P)。第2 图形指令串中的SetFragmentShader(Y)是与第1图形指令串中的 SetFragmentShader(X)相同的图形指令,但状态值不同(Y≠X)。第2图形 指令串中的DrawIndexArray(K)是与第1图形指令串中的DrawIndexArray (J)相同的图形指令,但状态值不同(K≠J)。

第2图形指令串中的SetVertexShader(P)是与第1图形指令串中的 SetVertexShader(P)相同状态的相同指令,故是冗余的指令,无需执行。因 此,图形指令生成部70基于相同性判定部60的判定结果,不生成第2图形 指令串中的SetVertexShader(P),生成其余的SetTexture(B)、 SetFragmentShader(Y)、DrawIndexArray(K)。即,在相同性判定部60动作 的情况下,图形指令生成部70生成的第2图形指令串成为如下这样。

SetTexture(B);

SetFragmentShader(Y);

DrawIndexArray(K)。

同样,相同性判定部60将第2图形指令串与第3图形指令串比较,判定 是否按相同状态值重复生成了相同的图形指令。第3图形指令串中的 SetTexture(B)是与第2图形指令串中的SetTexture(B)相同的图形指令, 状态值也相同(都是B)。第3图形指令串中的SetVertexShader(P)是与第2 图形指令串中的SetVertexShader(P)相同的图形指令,状态值也相同(都是 P)。第3图形指令串中的SetFragmentShader(Y)是与第2图形指令串中的 SetFragmentShader(Y)相同的图形指令,状态值也相同(都是Y)。第3图 形指令串中的DrawIndexArray(L)是与第2图形指令串中的DrawIndexArray (K)相同的图形指令,但状态值不同(L≠K)。

由于第3图形指令串中的SetTexture(B)、SetVertexShader(P)、 SetFragmentShader(Y)是与第2图形指令串中的SetTexture(B)、 SetVertexShader(P)、SetFragmentShader(Y)相同状态的相同指令,故是冗 余的指令,无需执行。因此,图形指令生成部70基于相同性判定部60的判 定结果,不生成第3图形指令串中的SetTexture(B)、SetVertexShader(P)、 SetFragmentShader(Y),而生成其余的DrawIndexArray(L)。即,在相同性 判定部60动作的情况下,图形指令生成部70生成的第3图形指令串成为如 下这样。

DrawIndexArray(L)。

总结以上,根据本实施方式的图形指令变换部50,相同性判定部60判 定图形指令的状态的相同性,图形指令生成部70基于相同性判定结果,从被 排序部40排序后的中间指令串生成消除了冗余性的以下图形指令串。

SetTexture(A);

SetVertexShader(P);

SetFragmentShader(X);

DrawIndexArray(J);

SetTexture(B);

SetFragmentShader(Y);

DrawIndexArray(K);

DrawIndexArray(L)。

与图3的(c)的相同性判定部60不动作的情况相比,所生成的图形指 令的数量从12减到8,处理效率得到提高。

在此,说明排序部40将图3的(a)所示的中间指令生成部30所生成的 中间指令串如图3的(b)所示那样排序的意义。

假设若没有由排序部40进行排序,则按图3的(a)的中间指令串的顺 序生成图形指令串。此时,若相同性判定部60不动作,则中间指令串将被变 换成以下的图形指令串。

SetTexture(B);

SetVertexShader(P);

SetFragmentShader(Y);

DrawIndexArray(K);

SetTexture(A);

SetVertexShader(P);

SetFragmentShader(X);

DrawIndexArray(J);

SetTexture(B);

SetVertexShader(P);

SetFragmentShader(Y);

DrawIndexArray(L)。

在此,若相同性判定部60进行动作,则上述图形指令串的第6个 SetVertexShader(P)是与之前所执行的第2个SetVertexShader(P)相同的状 态,第10个SetVertexShader(P)是与之前所执行的第6个SetVertexShader (P)相同的状态,故可作为冗余而消除。但是,由于其它图形指令与之前所 执行的相同的图形指令相比状态不同,故不是冗余。例如第5个SetTexture (A)与之前所执行的第1个SetTexture(B)相比状态不同,第9个SetTexture (B)与之前所执行的第5个SetTexture(A)相比状态不同,故都是不能省 略执行的。

因此,相同性判定部60的相同判定的结果,能作为冗余而消除的图形指 令只有2个,消除由图形指令生成部70生成的冗余性后的图形指令串如下这 样,图形指令的数量成为10。

SetTexture(B);

SetVertexShader(P);

SetFragmentShader(Y);

DrawIndexArray(K);

SetTexture(A);

SetFragmentShader(X);

DrawIndexArray(J);

SetTexture(B);

SetFragmentShader(Y);

DrawIndexArray(L)。

通过像这样由排序部40对中间指令串的执行顺序进行排序,能增加相同 性判定部60判定为冗余的图形指令的数量,能由图形指令生成部70生成消 除冗余性而最优化了的图形指令串,提高图形处理的效率。

以下,详细说明基于转变成本的中间指令串的排序处理。

图4的(a)是说明转变成本计算部10所进行的计算模型数据的转变成 本的计算方法的图,图4的(b)是说明排序关键字赋予部20所进行的向模 型数据赋予排序关键字的赋予方法的图。

在从某模型数据向其它模型数据转变时,转变成本计算部10计算表示图 形运算的相关硬件所承受的处理负荷的转变成本。例如在因模型数据转变, 纹理被变更时,将转变成本记为10分,片段着色器被变更时,将转变成本记 为30分,顶点着色器被变更时,将转变成本记为20分。这些分在图形硬件 中相对地表示了变更纹理、片段着色器、顶点着色器时的负荷。

例如在从模型数据A转变为模型数据B时,若纹理有3幅、片段着色器 有1个被变更,则合计转变成本成为10×3+30=60。

转变成本计算部10针对在各帧中应被渲染的对象的模型数据,计算在2 个模型数据间转变时的转变成本。图4的(a)表示针对4个模型数据A~D, 计算任意2个模型数据间的转变成本的例子。从模型数据A向模型数据B的 转变成本为10,从模型数据A向模型数据C的转变成本为30,从模型数据 A向模型数据D的转变成本为50,从模型数据B向模型数据C的转变成本 为40,从模型数据B向模型数据D的转变成本为20,从模型数据C向模型 数据D的转变成本为10。

排序关键字赋予部20通过以最占据所显示的画面区域的模型数据、例如 可能占据画面的中心的模型数据为开始点,反复依次选择转变成本最小的模 型数据,来巡回所有的模型数据。由此,决定使模型数据转变的顺序,并按 照该转变顺序对模型数据赋予排序关键字。

之所以从可能占据画面中心的模型数据开始,是因为通过首先描绘该模 型数据,后续的中间指令生成的像素会隐于其后,能通过剔除(culling)而 跳过处理的可能性提高,处理效率得到提高。

在此,假定模型数据A占据画面的中心,从模型数据A开始。如图4的 (b)所示那样,以模型数据A为起点若转变为模型数据B,转变成本为10 分,若转变为模型数据C,转变成本为30分,若转变为模型数据D,转变成 本为50分,故从3个模型数据B、C、D中选择转变成本最小的模型数据B 作为第2个。

同样地,从模型数据B若转变为模型数据C,转变成本为40分,若转变 为模型数据D,转变成本为20分,故从其余2个模型数据C、D中选择转变 成本最小的模型数据D作为第3个。最后,从模型数据D转变为剩余的模型 数据C。向第4个模型数据C的转变成本为10。

这样,排序关键字赋予部20基于模型数据间的转变成本,按模型数据A、 B、D、C的顺序决定使模型数据转变的顺序,并按该顺序分别对模型数据A、 B、D、C分配排序关键字0、1、2、3。

在此,通过计算任意2个模型数据间的转变成本,然后以某模型数据为 起点搜索最小转变成本,来决定模型数据的转变顺序,赋予排序关键字,但 也可以基于转变成本用其它搜索算法决定模型数据的转变顺序。此外,当计 算所有任意2个模型数据间的转变成本会造成处理负荷时,也可以针对模型 数据的一部分的组合求出转变成本,将巡回模型数据的路径限定为已求出转 变成本的范围。

中间指令生成部30生成具有模型数据和工作数据的中间指令时,模型数 据被分配有排序关键字,排序部40按排序关键字的顺序对中间指令生成部 30生成的中间指令串进行排序。由此,模型数据相似的中间指令被集群 (clustering)而被连续地执行。

若按模型数据的转变成本由小到大的顺序使模型数据转变,则从中间指 令串生成了图形指令串时,重复执行的图形指令的状态相一致的情况变多。 例如,转变成本较小,就意味着纹理或着色器的变更较少,图形指令的状态 被变更的情况也变少。因此,在按模型数据的转变成本由小到大的顺序对中 间指令串排序后,在将中间指令串变更成图形指令串时,就能增加可通过相 同性判定而消除的图形指令的数量。

图5是表示实施方式的图形指令生成装置200所进行的图形指令生成处 理的步骤的流程图。

生成应被渲染的所有对象的模型数据(S10)。转变成本计算部10计算在 模型数据间转变时的转变成本(S20)。排序关键字赋予部20基于转变成本决 定转变模型数据的顺序,并按照该顺序对模型数据赋予排序关键字(S30)。 步骤S10~S30的处理被离线地执行,在模型数据存储部32中存储带排序关 键字的模型数据。

针对各帧反复执行以下步骤S40~S70。首先,中间指令生成部30生成 具有模型数据和工作数据的中间指令(S40)。排序部40按模型数据所被赋予 的排序关键字的顺序对中间指令生成部30生成的中间指令进行排序(S50)。 图形指令变换部50将排序后的中间指令变换成图形指令(S60)。在进行下一 帧的渲染时(S70的“是”),返回步骤S40,反复进行步骤S40~S60的处理, 若在当前帧结束渲染(S70的“否”),则结束图形指令生成处理。

图6是表示由图形指令变换部50执行的步骤S60的向图形指令的变换处 理的详细步骤的流程图。

在图形指令变换部50中,相同性判定部60基于从中间指令接下来所要 生成的图形指令的状态和其设定值,参照状态高速缓存器80,查询该状态值 是否已被高速缓存(S80)。

在状态高速缓存器80中该状态值高速缓存命中时(S82的“是”),由于 已经有相同状态值的图形指令被执行,故相同性判定部60判定为从中间指令 要生成的图形指令是冗余,图形指令生成部70不生成该图形指令地结束。

另一方面,若在状态高速缓存器80中该状态值没有高速缓存命中(S82 的“否”),则要么是从中间指令接下来要生成的图形指令在之前被以不同的 状态值执行了,要么是该图形指令还没被执行过。在该情况下,相同性判定 部60判定为从中间指令将生成的图形指令并非冗余,以该状态值更新状态高 速缓存器80(S84),图形指令生成部70从中间指令生成图形指令(S86)。

相同性判定部60和图形指令生成部70利用状态高速缓存器80反复进行 步骤S80~S86的处理,将中间指令串变换成图形指令串。由此,生成消除了 进行相同设定的冗余图形指令的图形指令串。

以下列举被高速缓存在状态高速缓存器80中的状态的种类的具体例子。

(1)片段着色器/顶点着色器的程序ID

在生成片段着色器/顶点着色器的程序时,赋予了唯一ID,在状态高速 缓存器80中保持该ID,相同性判定部60在是相同ID时判定为程序设定指 令是冗余的,图形指令生成部70跳过该程序设定指令的生成。当着色器存在 于一个逻辑地址空间内时,该ID可以是其开头地址。

(2)纹理ID

在生成纹理时赋予了唯一ID,在状态高速缓存器80中针对各纹理单元 分别保持其ID。相同性判定部60在渲染时检查纹理单元的ID,若相同,则 判定为纹理设定指令是冗余的,图形指令生成部70跳过该纹理设定指令的生 成。当纹理存在于一个逻辑地址空间内时,该ID可以是其开头地址。

(3)深度(depth)测试/混合(Blend)/模板(Stencil)测试的设定 值

将进行还是不进行(enable/disable)深度测试、混合、模板测试的设定 用Bool值保持在状态高速缓存器80中,相同性判定部60在设定值相同的情 况下,判定为设定是否进行这些处理的指令是冗余的,图形指令生成部70跳 过该设定指令的生成。

(4)深度测试函数/混合函数/模板测试操作器

将表示所设定的各函数的常数高速缓存在状态高速缓存器80中。若是深 度测试函数,则将识别该深度函数是等于(=)、小于(<)、大于(>)的 哪一者的常数保存在状态高速缓存器80中,若是混合函数,则将识别混合比 率的常数保存在状态高速缓存器80中,若是模板测试操作器,则将识别是增 量/减量的哪一者的常数保存在状态高速缓存器80中。在识别各函数的常数 相同的情况下,相同性判定部60判定为这些函数的设定指令是冗余的,图形 指令生成部70跳过该设定指令的生成。

(5)各种矩阵

对各种矩阵赋予了ID,在状态高速缓存器80中保存该ID。在是相同的 ID的情况下,相同性判定部60判定为矩阵的设定指令为冗余,图形指令生 成部70跳过该矩阵的设定指令的生成。例如关于View矩阵和Projection矩 阵,通过渲染而进行切换的是在阴影贴图(Shadow Map)渲染时和通常渲染 时,几乎没什么变化,故多数情况下能跳过矩阵的设定指令的生成。

总结被高速缓存在状态高速缓存器80中的内容如下。

View Matrix ID

Projection Matrix ID

Model Matrix ID

Fragment Shader ID

Vertex Shader ID

Texture ID

Depth Test(Enable/Disable)

Depth Test Function

Stencil Test(Enable/Disable)

Stencil Test Function

Blend(Enable/Disable)

Blend Function

如上所述通过本实施方式的图形指令生成装置200,将基于模型数据的 转变成本而排序了的中间指令依次变换成图形指令。在变换成图形指令时, 预先高速缓存由图形指令设定的状态的值,仅在状态的设定值有变化时生成 图形指令,由此,能减少所生成的图形指令的数量,能提高处理效率。在GPU 硬件进行较深的管线动作,一部分状态有变化时,在管线的上段会失速(stall), 等待状态的更新,但在本实施方式中,能抑制GPU硬件内部的上下文(context) 切换所导致的性能下降,故能渲染更多的数据。

参照图7~图9说明实施方式的图形指令生成装置200的几个应用例。

图7是说明由多个处理生成渲染的中间指令串,在一个渲染处理中进行 排序和冗余性消除的系统的图。

多个处理A~C并行地生成渲染的中间指令串,但存在对纹理、着色器 等各种资源赋予ID而管理的唯一管理处理,从而系统整体上使资源的ID成 为唯一地进行管理。各处理A~C向唯一ID管理处理询问各种资源的ID, 对模型数据赋予排序关键字。各处理A~C所生成的中间指令串被传递给一 个渲染处理,最终,渲染处理进行基于排序关键字的中间指令串排序、从中 间指令串向图形指令串的变换、以及基于状态的相同性判定的冗余性消除。

在该情况下,图形指令生成装置200的转变成本计算部10、排序关键字 赋予部20、中间指令生成部30的功能被分配于各处理A~C,而排序部40、 相同性判定部60、图形指令生成部70的各功能被分配于1个渲染处理。

在该应用例中,用多个处理来使处理分散化,具有能提高处理效率的效 果。

图8是说明由多个服务器生成渲染的中间指令串,在与服务器通信的客 户机中进行排序和冗余性消除的系统的图。

在服务提供者侧,对纹理、着色器等各种资源赋予ID来管理,各服务器 A~C并行地生成渲染的中间指令串,将模型数据的排序关键字同内容一起发 送到客户机的应用程序,由此,客户机能够对中间指令进行排序,生成消除 了冗余性的图形指令。

在该情况下,图形指令生成装置200的转变成本计算部10、排序关键字 赋予部20、中间指令生成部30的功能被分配给各服务器A~C,而排序部40、 相同性判定部60、图形指令生成部70的各功能被分配给客户机。

在该应用例中,具有能削减客户机的描绘负荷,提高客户机的描绘效率, 并且能削减客户机的耗电这样的效果。

图9是说明由多个客户机生成渲染的中间指令串,在与多个客户机通信 的服务器中进行排序和冗余性消除的系统的图。

客户机生成将服务提供方所事先生成的模型数据组合后的模型,将渲染 中间指令发送到服务器。服务器接收多个客户机A~C所生成的中间指令, 将它们渲染于一个画面。例如在渲染较大的图像时,有时由多个客户机并行 地生成中间指令,服务器从多个客户机A~C收到中间指令来进行渲染。

服务器对从多个客户机A~C收到的中间指令进行排序,在变换成图形 指令串时,削减冗余的图形指令来进行渲染。

最后,服务器将渲染后的图像发送给各客户机A~C。该图像中包含有其 它客户机所发送的模型数据。

在该情况下,图形指令生成装置200的转变成本计算部10、排序关键字 赋予部20、中间指令生成部30的功能被分配给各客户机A~C,而排序部40、 相同性判定部60、图形指令生成部70的各功能被分配给服务器。

在该应用例中,能削减服务器的耗电、计算资源。

以上基于实施方式说明了本发明。实施方式仅是例示,本领域技术人员 当理解其各构成要素和各处理处理的组合可以有各种变形例,并且这样的变 形例也包含在本发明的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号