CN105976421A - 一种渲染程序的在线优化方法 - Google Patents
一种渲染程序的在线优化方法 Download PDFInfo
- Publication number
- CN105976421A CN105976421A CN201610256550.9A CN201610256550A CN105976421A CN 105976421 A CN105976421 A CN 105976421A CN 201610256550 A CN201610256550 A CN 201610256550A CN 105976421 A CN105976421 A CN 105976421A
- Authority
- CN
- China
- Prior art keywords
- program
- rendering
- simplification
- render
- cost
- 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
-
- 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)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本发明公开了一种渲染程序的在线优化方法,包括:构建原始渲染程序的简化程序,根据渲染代价和绘制误差选择若干作为代表渲染程序根据依赖关系构建简化依赖图;在渲染过程中,监测待绘制场景参数,当发生剧烈变化时使用新一轮在线优化,通过多次循环来完成一次优化,每次优化中循环进行如下操作:根据简化依赖图从所有代表简化程序中选择K个作为候选简化程序,依据绘制误差和渲染代价确定本次循环结果,并根据若干次循环结果决定当前在线优化是否结束。动态选择最优的简化渲染程序,实现渲染程序与场景的解耦合,避免离线优化的枚举参数空间问题,且同时进行渲染程序的误差计算和时间测量与场景绘制,速度快,实时性强。
Description
技术领域
本发明涉及实时绘制领域,尤其涉及一种渲染程序的在线优化方法,用于在绘制过程中在线对渲染程序进行优化。
背景技术
在实时绘制领域,一直存在加快绘制速度的需求,而渲染程序的复杂度则是决定绘制效率的一个重要因素。渲染程序是由多种着色器代码组成的,包括顶点,外壳,细分,几何,像素,计算等多个种类。这些着色器各自对应可编程硬件渲染管线某一阶段。在绘制过程中,渲染程序中的各个着色器将在不用的渲染阶段中被调用执行,不同的着色器,被执行的次数也随其对应的阶段的不同而不同。在应用过程中,越简单的渲染程序可以跑得越快,但使用人力重写更简单的程序非常低效,所以可以自动简化原始渲染程序的方法不断出现。
Pellacini提供了一个用户可配置的着色器简化方法来进行逐像素的过程建模。程序生成一系列由原始着色器逐步简化生成的着色器。该方法通过对着色器的代码应用指定的简化规则来生成一系列的候选变种,然后评估变种与原始着色器之间度量的差来选择具有最小误差的候选变种。这种选择过程一直循环直到最后的着色器成为了常量。Sitthi-amorn使用遗传编程来自动简化渲染过程。与Pellacini类似,该算法同样计算一系列逐步简化的着色器,但考虑了更多的代码变换规则,包括代码中表达式语句中操作数与操作符的交换、语句的删除和语句的插入等,同时该方法使用遗传算法来选取更多的简化后的着色器,并且也能生成更快的和更可靠的结果。Wang则提供了一种跨越多个着色器阶段的简化,通过将渲染程序的执行当成一个表面信号生成的过程,将渲染程序的简化视为对表面信号的重新拟合,并提供使用基函数来表达这些信号,比如高阶的多项式函数,无网格的稀疏径向基函数,或者数据分解的基函数。
但是这些方案存在以下两个问题:
1.较长的计算时间,每一个简化程序都需要进行渲染并计算误差和时间,再从中选择出合适的简化程序。但是大量的简化程序需要消耗很长的预计算时间。
2.离线优化固定了渲染的模型,在计算时间和误差时,只能选择有限个视角进行计算,并不能涵盖在运行过程中的所有可能空间。
发明内容
针对现有技术的不足,本发明提出了一种渲染程序的在线优化方法,该方法减少了生成的简化程序的数量,并在绘制过程中完成简化程序的选择,使得渲染程序的优化更迅速,更准确。
一种渲染程序的在线简化方法,包括如下步骤:
(1)对原始渲染程序进行如下预处理:
(1-1)采用不同渲染程序简化规则对原始渲染程序进行预简化得到若干个简化程序,并计算各个简化渲染程序的渲染代价;
(1-2)根据每一个简化程序使用的简化规则,确定原始渲染程序以及各个简化程序之间的依赖关系;
(1-3)计算各个简化渲染程序的参数影响向量和渲染代价,所述参数影响向量为相应渲染程序中所有输入参数对渲染程序中计算结果的影响值组成的向量;
(1-4)根据简化程序渲染代价和参数影响向量从所有简化渲染程序中聚类选择若干个作为代表简化程序,并依据依赖关系,将原始渲染程序和所有代表简化程序生成简化依赖图;
(2)在渲染过程中,以当前绘制到窗口的程序作为基础程序,监测待绘制场景参数,当发生剧烈变化时开始新一轮在线优化,每轮在线优化过程中循环进行如下操作:
(2-1)根据简化依赖图从所有代表简化程序中选择K个作为候选简化程序:
(2-2)在使用基础程序绘制到窗口的过程中,插入K个候选简化程序的绘制,计算并储存相应的绘制误差和渲染代价;
(2-3)针对任意一个候选简化程序:
若满足E1<E_max且T1<T0,则更新基础程序结束本轮优化;
否则,不更新基础程序,并进行如下操作:
若连续若干次循环都不更新基础程序,则停止本轮在线优化;
否则,返回继续执行步骤(2-1);
其中,E1,T1分别表示简化程序的绘制误差和渲染代价,E_max表示最大允许的误差(根据需要设定),T0表示当前基础程序的渲染代价。
本发明中的渲染程序采用HLSL语言编写的源代码,为了在渲染过程(即绘制过程)中进行处理,需要将源代码处理为对应的抽象语法树和程序依赖树。在应用简化规则生成的简化程序之后,仍需将简化的抽象语法树转化为HLSL代码,进行渲染。
本发明中对原始渲染程序进行简化时使用的简化规则共有3种,分别为:表达式删除规则、代码移动规则和曲面细分规则,其中,代码移动和曲面细分与论文“Automatic shader simplification using surfacesignal approximation”中提出公开的两种规则一致,表达式删除规则可以采用文献“User-configurableautomatic shader simplification”中公开的规则一致。作为优选,对于表达式删除规则可以与文献“User-configurable automatic shader simplification”中稍有不同,不同点具体如下:
(a)对与二元表达式将会有两种简化变种和
(b)对于从cb到ce的循环计算,将随机生成i,j并将循环替代为从cb+i到ce-j。
对原始渲染程序进行简化时,从渲染程序中选择目标代码(可以是原始渲染程序中的某一条语句或多条语句或所有语句),然后从上述三种简化规则选择其中至少一种对目标代码进行简化,且针对不同的目标代码可以采用不同的简化规则的组合,这样通过对一个原始渲染程序简化即可得到大量的简化渲染程序。
依赖图当中每一个节点表示的都是一个简化的渲染程序,通过有向边联系在一起。因为所有的简化程序都是由原始渲染程序简化而来,故原始渲染程序作为整个简化依赖图的根节点存在。
在简化依赖图中,存在节点A和节点B,若节点B的程序是通过在简化程序A上应用一次简化操作得到的,则会存在一条由节点A指向节点B的有向边。以下面两条语句S1,S2举例:S1:c=a+b;S2:e=d+c.可以分别应用代码移动规则到语句S1,S2生成两个节点V1,V2。但是观察到移动语句S2必将移动语句S1,因此V2可以说是在V1的基础上移动语句S2生成的,故简化图中存在一条从V1指向V2的有向边。
聚类完成之后,将依照原始的简化依赖图重新构建这些选出来的简化程序之间的依赖关系,生成依赖图,该依赖图中仅保留选择的代表简化程序。
本发明步骤(1-3)中,针对任意一个简化程序,通过如下方法计算参数影响向量和渲染代价:
获取该简化程序在顶点着色器和像素着色器中的标量指令量和顶点着色器和像素着色器的接口所需的浮点数数量和每一个输入参数的取值对渲染程序中相应计算结果的影响值,并根据标量指令量估算简化程序的渲染代价。
顶点着色器和像素着色器的接口所需的浮点数数量实际上也是光栅化阶段所需光栅化的浮点数数量。顶点着色器和像素着色器中的标量指令量和顶点着色器和像素着色器的接口所需的浮点数数量均采用论文“A system for rapid,automatic shader level-of-detail”中公开的方法获取。
针对任意一个简化程序,根据如下公式计算渲染代价:
Ctotal=WvCv+WfCf+WaNa,
其中,Cv,Cf分别为在顶点着色器和像素着色器的标量指令量的数量,Na为像素着色器的接口所需的浮点数,Cv、Cf分别为在顶点着色器和像素着色器中的标量指令量的数量,Na为像素着色器的接口所需的浮点数数量,Wv,Wf分别为顶点着色器和像素着色器中的标量指令量的计算的权重,Wa为像素着色器的接口所需的浮点数的权重。
本发明中Wv,Wf,Wa分别为各个绘制阶段计算的权重,其赋值范围分别为0.2~2.0,0.8~20,10~400。优选的Wv,Wf,Wa的取值分别为0.2,10,200。
第k个输入参数对渲染程序中计算结果的影响值qk根据如下公式计算:
其中,N为应用到第k个输入参数对应的简化规则总数,
i是指与第k个输入参数相关的第i个表达式或语句,
为定义在第k个参数对第i个表达式或语句上的影响,
wi为第i个表达式或语句的标量数量。
对于不同的简化规则,其造成的参数影响的权重也是不一样的。本发明中将代码删除设为1,代码移动设为0.1。因为曲面细分总是基于代码移动生成出来的,将其设置为代码移动的权重除以细分出的三角形顶点个数。参数影响向量是将所有参数的影响值组合为向量,向量的维数等于输入变量的个数。
所述步骤(1-4)通过如下方法从所有的简化程序中选择若干个作为代表简化程序时:
(S1-41)按照简化程序的渲染代价将所有简化程序划分为N组;
(S1-42)针对每一组,利用K-means聚类将每一组聚成M类,聚类时使用的距离函数为两个简化程序的参数影响向量的点积;
(S1-43)针对每类根据距离函数选取离类中心最近的简化程序为代表。
N为10~100,根据简化程序的个数设定,越大相应的N较大,M为5~50。
步骤(2)中需要监测场景参数是否变化,当剧烈变化发生时(如场景载入,摄像机转向,或者渲染的像素量改变超过20%),需要重启新一轮优化,否则此轮优化正常进行。同时为保证一轮优化过程中输入数据的一致性,需要对场景输入参数进行缓存。监测和缓存的间隔默认设置为200ms。
在每轮优化过程中的第一次循环采用如下方法进行搜索:
从原始渲染程序出发,根据依赖图的联通性,在原始渲染程序的L邻域范围内的选择代价(即渲染代价)小的K个代表渲染程序作为候选渲染程序。
此次搜索时渲染代价根据采用步骤(1-3)中的方法计算得到,针对前已经计算过渲染代价的代表渲染程序,由于在整个优化过程中会对数据进行缓存,因此可以根据缓存结果直接获取。
选择渲染代价时,若存在并列(并列定义:若两个代价的差值不超过二者均值的10%~50%,则认为二者并列)则从中依次选择与根节点最邻近的代表简化程序作为候选简化程序。进一步,若出现若干个完全相等且与原始渲染程序的步长相同的,此时从中则随机选择K个。
L邻域范围为在依赖图中与原始渲染程序的步长在L步之内的代表渲染程序,L的取值范围为2~6,优选L为4。
在第一轮循环中已经求解若干个代表渲染程序(即已经求解得到对应的渲染代价和绘制误差),在这些已经求解的基础上可以预测其他代表渲染程序的渲染代价和绘制误差,因此,在第一轮循环,可以通过预测绘制误差和渲染代价进行搜索。
在每轮优化过程中的第一次循环之后的所有循环中外采用如下方法进行搜索:
首先,根据第一次循环得到的若干已知代表渲染程序预测剩余代表渲染程序的渲染代价和绘制误差,然后,在根据预测结果依据帕累托法则选择K个代表渲染程序作为候选渲染程序。
依照以下公式预测代表渲染程序的渲染代价Ctotal:
Ctotal=NvCvtv+NpCptp+Nata, (1)
Nv,Np,Na分别指顶点数,绘制模型更新的像素数(即已绘制区域内的像素个数,由DirectX API查询得来),以及渲染管线中需要读取的总共需要读取的标量的数量,
Cv,Cp分别指顶点着色器和像素着色器执行的指令数,
tv,tp,ta分别指的优化过程中的渲染程序在顶点处理阶段、像素处理阶段和光栅化阶段所耗费的单位时间。
单位时间是在线优化时按照公式(1)拟合出来的,拟合时的参数包括:初始值分别为1.0,1.2,1200;若干组已知量(公式(1)中所有除tv,tp,ta外的所有参数),若干组已知量由上一次循环中的步骤(2-2)获取。
通过如下公式预测第j个代表简化程序的绘制误差ej:
Ij表示第j个代表简化程序在简化依赖图中对应的节点的父节点总数,
qj,分别为第j个和第ik个父节点对应的代表简化程序的参数影响向量,
则表示第ik个父节点对应的代表渲染程序的绘制误差。
对于第ik个父节点对应的代表渲染程序的绘制误差根据如下公式计算得到:
其中,ep为第ik个父节点的一个已知的子节点对应的代表渲染程序的绘制误差,qp分别为第p个代表简化程序的参数影响向量,为第p个代表简化程序对应的节点在在简化依赖图中的第ik个父节点所对应的代表简化程序的参数影响向量,Ip表示第p个代表简化程序在简化依赖图中对应的节点的所有父节点总数。
本发明中最初的已知节点为本轮在线优化过程中第一次循环中已经求解得到对应的渲染代价和绘制误差的节点。
在线渲染程序优化的目标是在任意渲染参数下,选择在给定质量阈值内速度最快的渲染程序。渲染参数的变化会导致不同简化程序的渲染质量和渲染代价有变化,而在渲染过程中,渲染参数又是不断变化的。因此在参数变化时,需要重新计算简化程序的渲染代价和绘制质量并重新选择最优,这一动态计算的过程和渲染过程是同步的,故称之为在线渲染程序优化。但是计算简化程序的渲染代价和绘制质量需要占用额外的GPU执行,降低整体绘制效率,故越少的简化程序被执行,优化后的效率越高。
实际的过程当中,为了较为准确的估算出简化程序的具体质量,采用了两种数据驱动的模型来进行较为精确的渲染代价和绘制质量(即绘制误差)的估测,设计了一个迭代式优化方案来在线优化渲染程序,完成对场景的监控和缓存,根据监控结果在完成预测之后进一步中获取真实数据,然后这些真实数据反过来又将成为下一次预测的基础,以提供更准确的预测,如此循环迭代,并依照数据做出优化决策。绘制质量的预测需要三个方面的支持,简化依赖图,已经计算过的简化程序的绘制误差,以及各个简化程序的参数影响。
为了计算得到需要利用那些已经被计算过的简化程序,对于一个已知绘制误差为ep的简化程序,将根据简化依赖图找到它的所有父节点,针对每个父节点,分别计算得到它父节点的
在完成对简化渲染程序的渲染代价和质量预估之后,需要从中选取K个合适的简化程序进行渲染。依照我们的优化的目标,那些点都应该属于帕累托最优点,所以这些被预估的简化程序将按照预估出来的渲染代价和质量计算帕累托线(Pareto Frontier),并从中选出此帕累托线上K个最快的,K为2~7,优选K为4。
本发明中针对每一个后续渲染程序利用层级图计算相应的绘制误差,具体如下步骤:
针对当前候选渲染程序,使用开启优化监测到的场景参数,将其绘制到与绘制窗口同样大小的纹理;
生成这张纹理的层级图(MipMap),并使用计算着色器(Compute Shader)计算特定层级上的纹理与原始绘制程序(即待优化的渲染程序)的L2像素误差,默认设置为5层。
层级图(MipMap)能够减小计算量,提高误差计算效率,进而提高优化速度。
为解决CPU与GPU执行不同步问题,每一个候选简化程序计算所得的渲染代价和绘制误差都必须等待3~7帧之后才去获取,N为。这些数据将被储存到对应的简化节点上,并计算出和tv,tp,ta。
本发明中步骤(2-3)过程有两个标准决定是否更新基础程序:1.在所有被计算过的简化程序中,是否存在绘制误差在误差范围内且绘制效率比现有基础程序高的简化程序;2.此简化程序是否与现有基础程序的图像差别过大。若连续2~5次循环无法更新基础程序,则停止优化,本发明中默认3次循环。
本发明的优化方法两部分组成,预处理阶段和在线优化阶段。在预处理阶段分析代码指令和代码的参数影响,获取对渲染代价和绘制误差的预测并完成对简化程序的聚类,减少了简化程序的冗余现象。此外提出了简化依赖图来表示各个简化程序之间的关系,以便在线优化时的完成对简化程序的搜索及预测。在在线优化阶段,多次迭代来完成一次优化。为依靠简化依赖图,使用了数据驱动的预测模型来预测简化程序的渲染代价和绘制效率,从而减少了需要绘制的简化程序的数量,加速了优化效率。
与现有技术相比,本发明的有益效果如下:利用参数影响和性能估计减少了简化程序生成数量,加速预处理时间。在绘制阶段动态选择最优的简化程序,不仅实现渲染程序与场景的解耦合,且避免离线优化的枚举参数空间问题,加速优化。且通过引入参数影响来减少需要生成的简化程序个数,在绘制过程中进行简化程序的渲染代价和绘制质量(即绘制误差)的计算来动态确定简化程序的质量,使简化程序的误差计算和时间测量与场景绘制同时进行,能在当前绘制参数下真实的渲染代价和绘制误差,从而做出更准确的选择。
具体实施方式
下面将结合具体实施例对本发明进行详细说明。
本实施例中在执行前,先将原始渲染程序进行语法分析,将原始渲染程序中的原始像素着色器和原始顶点着色器转化为相应的抽象语法树。之后所有的操作均是对各个相应的抽象语法树进行操作。本实施例中原始渲染程序由原始顶点着色器和原始像素着色器组成。
一种渲染程序的在线优化方法,包括:
(1)对原始渲染程序进行预处理,操作如下:
(1-1)依照多个渲染程序简化规则对渲染程序进行简化,生成大量简化过后的渲染程序;
本实施例中应用表达式删除,代码移动,曲面细分三种规则对渲染程序进行简化,共生成75342个简化程序。
(1-2)对每个简化后的渲染程序,根据每一个简化程序使用的简化规则,计算出简化程序之间的依赖关系;
(1-3)分析每一个简化程序的代码,得到每一个输入参数的参数影响,并估算简化程序的渲染代价;
对于任意一个简化程序,它的第k个参数(即输入变量)的影响按以下方式计算:
N应用到第k个参数的简化规则总数,
i是指与k相关的第i个简化表达式或语句,
表示的是定义在第k个参数,第i个表达式或语句上的影响,
wi表示的是简化的变量的标量数量。
对于不同的简化规则,其造成的参数影响的权重也是不一样的。将代码删除设为1,代码移动设为0.1。因为曲面细分总是基于代码移动生成出来的,将其设置为代码移动的权重除以细分出的三角形顶点个数。
针对任意一个简化渲染程序使用以下公式计算渲染代价Ctotal:
Ctotal=0.2Cv+10Cf+200Na
Cv,Cf分别指在顶点着色器和像素着色器的计算指令条数,
Na指在光栅化阶段所需光栅化的标量数量,
(1-4)依照简化程序估算出来时间和参数影响向量,从中聚类出具有代表性的简化程序,并依据依赖关系,生成简化依赖图;
采用K-平均(K-means)的方案进行聚类,距离函数值使用简化程序的参数影响向量的点积,本实施例中共划分15组,每一组选出20个。
完成预处理阶段之后,得到根据原始渲染程序生成的简化依赖图,包含了生成的简化程序,已经简化程序之间的依赖关系。本实施例中,最终的简化依赖图有794个简化程序,此时为代表渲染程序。
(2)在渲染过程中,以当前绘制到窗口的程序作为基础程序,监测待绘制场景参数,当发生剧烈变化时进行在线优化。为提高优化效率,本实施例中另外开启一个线程进行在线优化。
在渲染过程中,绘制到窗口的程序称之为基础程序,设定优化允许的误差值。监测场景运动,决定是否开启新的优化,同时每隔一段时间对场景参数进行缓存;
本实施例中,因检测到场景导入(初始化)故开始新一轮优化,并缓存当前的场景参数。同时设置误差允许值为1.2。
每轮在线优化过程中循环进行如下操作:
(2-1)根据简化依赖图从所有代表简化程序中选择K个作为候选简化程序:
从简化依赖图中选择N个简化程序,根据所处的不同优化状态,拥有两种不同的选择策略:1.初始搜索策略;2.基于绘制误差和渲染代价的预测的搜索策略。
初始搜索适用于每轮在线优化过程中的第一轮循环时的搜索,具体如下:
从原始渲染程序出发,根据依赖图的联通性,在原始渲染程序的L邻域范围内的选择代价(即渲染代价)小的K个代表渲染程序作为候选渲染程序。本实施例中K=4。
此次搜索时渲染代价根据采用步骤(1-3)中的方法计算得到,针对前已经计算过渲染代价的代表渲染程序,由于在整个优化过程中会对数据进行缓存,因此可以根据缓存结果直接获取。
选择渲染代价时,若存在并列(并列定义:若两个代价的差值不超过二者均值的10%~50%,则认为二者并列)则从中依次选择与根节点最邻近的代表简化程序作为候选简化程序。进一步,若出现若干个完全相等且与原始渲染程序的步长相同的,此时从中则随机选择K个。
L邻域范围为在依赖图中与原始渲染程序的步长在L步之内的代表渲染程序,本实施例中L=4。
在第一轮循环中已经求解若干个代表渲染程序(即已经求解得到对应的渲染代价和绘制误差),在这些已经求解的基础上可以预测其他代表渲染程序的渲染代价和绘制误差,因此,在第一轮循环之后,可以通过预测绘制误差和渲染代价进行搜索,即基于绘制误差和渲染代价的预测的搜索策略。
在每轮在线优化过程中在第一次循环之后的循环中外采用基于绘制误差和渲染代价的预测的搜索策略进行搜索,具体如下:
首先,根据第一次循环得到的若干已知代表渲染程序预测剩余代表渲染程序的渲染代价和绘制误差,然后,在根据预测结果依据帕累托法则选择K个代表渲染程序作为候选渲染程序。
依照以下公式预测代表渲染程序的渲染代价Ctotal:
Ctota1=NvCvtv+NpCptp+Nata, (1)
Nv,Np,Na分别指顶点数,绘制模型更新的像素数(即已绘制区域内的像素个数,由DirectX API查询得来),以及渲染管线中需要读取的总共需要读取的标量的数量,
Cv,Cp分别指顶点着色器和像素着色器执行的指令数,
tv,tp,ta分别指的优化过程中的渲染程序在顶点处理阶段、像素处理阶段和光栅化阶段所耗费的单位时间。
单位时间是在线优化时按照公式(1)拟合出来的,拟合时的参数包括:初始值分别为1.0,1.2,1200;若干组已知量(公式(1)中所有除tv,tp,ta外的所有参数),若干组已知量由上一次循环中的步骤(2-2)获取。
通过如下公式预测第j个代表简化程序的绘制误差ej:
I表示第j个代表简化程序在简化依赖图上父节点的总数,
qj,分别为第j个和第ik个代表简化程序的参数影响向量,
则表示第ik个父节点对应的代表渲染程序与第j个代表简化程序之间的绘制误差;
为了计算得到需要利用那些已经在步骤(2-2)中计算过的真实绘制误差的简化程序(即代表简化程序),对于一个已知绘制误差为ep的简化程序,将根据简化依赖图找到它的父节点Ip,并根据如下公式计算得到它每一个父节点对应的代表简化程序的绘制误差
其中,ep为第ik个父节点的一个已知的子节点对应的代表渲染程序的绘制误差,qp分别为第p个代表简化程序的参数影响向量,为第p个代表简化程序对应的节点在在简化依赖图中的第ik个父节点所对应的代表简化程序的参数影响向量,Ip表示第p个代表简化程序在简化依赖图中对应的节点的所有父节点总数。
(2-2)在使用基础程序绘制到窗口的过程中,插入选出的K个候选简化程序的绘制,计算并储存相应的绘制误差和渲染代价;
在正常向窗口绘制模型时,插入选择的4个候选渲染程序的绘制,计算并收集各个候选渲染程序的绘制误差和渲染代价。
计算绘制误差和渲染代价时:
针对每一个候选渲染程序,使用之前缓存的场景参数,将其绘制到与绘制窗口同样大小的纹理;
生成这张纹理的层级图(MipMap),并使用计算着色器(Compute Shader)计算特定层级上的此纹理与原始绘制程序的绘制结果之间的像素误差,默认设置为5层。
为解决CPU与GPU执行不同步问题,每一个简化程序计算所得的时间和误差都必须等待若干帧之后才去获取。这些数据将被储存到对应的简化节点上,并计算出和tv,tp,ta。通常等待3~7帧之后才获取,本实施例中等待5帧。
(2-3)针对任意一个候选简化程序:
若满足E1<E_max且T1<T0,则更新基础程序结束本轮在线优化;
否则,不更新基础程序,并进行如下操作:
若连续L次循环都不更新基础程序,则停止本轮在线优化;
否则,返回步骤(2-1)继续执行下一次循环;
其中,E1,T1分别表示简化程序的绘制误差和渲染代价,E_max表示最大允许的误差(根据需要设定),T0表示当前基础程序的渲染代价。
本实施例中,被计算的4个简化程序存在比现有基础程序更优的选择,更新基础程序,并继续优化,循环执行步骤(2-1)~(2-3)。在接下来的循环中,将使用基于绘制误差和时间的预测的搜索策略选择K个候选渲染程序。
以上所述仅为本发明的优选实施方式,本发明的保护范围并不仅限于上述实施方式,凡是属于本发明原理的技术方案均属于本发明的保护范围。对于本领域的技术人员而言,在不脱离本发明的原理的前提下进行的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (9)
1.一种渲染程序的在线简化方法,其特征在于,包括如下步骤:
(1)对原始渲染程序进行如下预处理:
(1-1)采用不同渲染程序简化规则对原始渲染程序进行预简化得到若干个简化程序,并计算各个简化渲染程序的渲染代价;
(1-2)根据每一个简化程序使用的简化规则,确定原始渲染程序以及各个简化程序之间的依赖关系;
(1-3)计算各个简化渲染程序的参数影响向量和渲染代价,所述参数影响向量为相应渲染程序中所有输入参数对渲染程序中计算结果的影响值组成的向量;
(1-4)根据简化程序的渲染代价和参数影响向量从所有简化渲染程序,中聚类选择若干个作为代表简化程序,并依据依赖关系,将原始渲染程序和所有代表简化程序生成简化依赖图;
(2)在渲染过程中,以当前绘制到窗口的程序作为基础程序,监测待绘制场景参数,当发生剧烈变化时开始新一轮在线优化,每一轮在线优化时循环进行如下操作:
(2-1)根据简化依赖图从所有代表简化程序中选择K个作为候选简化程序:
(2-2)在使用基础程序绘制到窗口的过程中,插入选出的K个候选简化程序的绘制,计算并储存相应的绘制误差和渲染代价;
(2-3)针对任意一个候选简化程序:
若满足E1<E_max且T1<T0,则更新基础程序并结束本轮在线优化;
否则,不更新基础程序,并进行如下操作:
若连续若干次循环都不更新基础程序,则停止在线优化;
否则,返回继续执行步骤(2-1);
其中,E1,T1分别表示简化程序的绘制误差和渲染代价,E_max表示最大允许的误差,T0表示当前基础程序的渲染代价。
2.如权利要求1所述的渲染程序的在线简化方法,其特征在于,所述步骤(1-3)针对任意一个简化程序,通过如下方法计算参数影响向量和渲染代价:
获取每一个简化程序在顶点着色器和像素着色器中的标量指令量和顶点着色器和像素着色器的接口所需的浮点数数量和每一个输入参数的取值对渲染程序中相应计算结果的影响值,并根据标量指令量估算简化程序的渲染代价。
3.如权利要求1所述的渲染程序的在线简化方法,其特征在于,所述步骤(1-3)针对任意一个简化程序,根据如下公式计算渲染代价:
Ctotal=WvCv+WfCf+WaNa,
其中,Cv,Cf分别为在顶点着色器和像素着色器中的标量指令量的数量,Na为像素着色器的接口所需的浮点数数量,Wv,Wf分别为顶点着色器和像素着色器中的标量指令量的计算的权重,Wa为像素着色器的接口所需的浮点数的权重。
4.如权利要求1所述的在线渲染程序优化方法,其特征在于,所述步骤(1-3)中第k个输入参数对渲染程序中计算结果的影响值qk根据如下公式计算:
其中,N为应用到第k个输入参数对应的简化规则总数,
i是指与第k个输入参数相关的第i个表达式或语句,
为定义在第k个参数对第i个表达式或语句上的影响,
wi为第i个表达式或语句的标量数量。
5.如权利要求1所述的渲染程序的在线简化方法,其特征在于,所述步骤(1-4)通过如下方法从所有的简化程序中选择若干个作为代表简化程序时:
(S1-41)按照简化程序的渲染代价将所有简化程序划分为N组;
(S1-42)针对每一组,利用K-means聚类将每一组聚成M类,聚类时使用的距离函数为两个简化程序的参数影响向量的点积;
(S1-43)针对每类根据距离函数选取离类中心最近的简化程序为代表。
6.如权利要求1所述的渲染程序的在线简化方法,其特征在于,每轮在线优化时第一次循环中采用如下方法进行搜索:
从原始渲染程序出发,根据依赖图的联通性,在原始渲染程序的L邻域范围内的选择代价小的K个代表渲染程序作为候选渲染程序。
7.如权利要求1所述的渲染程序的在线简化方法,其特征在于,每轮在线优化时第一次循环之后的循环中外采用如下方法进行搜索:
首先,根据第一次循环得到的若干已知代表渲染程序预测剩余代表渲染程序的渲染代价和绘制误差,然后,再根据预测结果依据帕累托法则选择K个代表渲染程序作为候选渲染程序。
8.如权利要求7所述的渲染程序的在线简化方法,其特征在于,依照以下公式预测代表渲染程序的渲染代价Ctotal:
Ctotal=NvCvtv+NpCptp+Nata, (1)
Nv,Np,Na分别指顶点数,绘制模型更新的像素数,以及渲染管线中需要读取的总共需要读取的标量的数量,
Cv,Cp分别指顶点着色器和像素着色器执行的指令数,
tv,tp,ta分别指的优化过程中的渲染程序在顶点处理阶段、像素处理阶段和光栅化阶段所耗费的单位时间。
9.如权利要求7所述的渲染程序的在线简化方法,其特征在于,通过如下公式预测第j个代表简化程序的绘制误差ej:
Ij表示第j个代表简化程序在简化依赖图中对应的节点的父节点总数,
qj,分别为第j个和第ik个父节点对应的代表简化程序的参数影响向量,则表示第ik个父节点对应的代表渲染程序的绘制误差。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610256550.9A CN105976421B (zh) | 2016-04-21 | 2016-04-21 | 一种渲染程序的在线优化方法 |
PCT/CN2017/078973 WO2017181837A1 (zh) | 2016-04-21 | 2017-03-31 | 一种渲染程序的在线优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610256550.9A CN105976421B (zh) | 2016-04-21 | 2016-04-21 | 一种渲染程序的在线优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105976421A true CN105976421A (zh) | 2016-09-28 |
CN105976421B CN105976421B (zh) | 2018-06-19 |
Family
ID=56994617
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610256550.9A Active CN105976421B (zh) | 2016-04-21 | 2016-04-21 | 一种渲染程序的在线优化方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105976421B (zh) |
WO (1) | WO2017181837A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017181837A1 (zh) * | 2016-04-21 | 2017-10-26 | 浙江大学 | 一种渲染程序的在线优化方法 |
CN109887061A (zh) * | 2019-02-19 | 2019-06-14 | 青岛海信电器股份有限公司 | 场景渲染方法、装置以及设备 |
CN111179150A (zh) * | 2019-12-27 | 2020-05-19 | 浙江大学 | 一种基于绘制指令流的着色器自动简化方法和系统 |
US11144289B1 (en) | 2020-05-19 | 2021-10-12 | International Business Machines Corporation | Dynamic automation of selection of pipeline artifacts |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110322540A (zh) * | 2019-07-09 | 2019-10-11 | 北京电影学院 | 基于流体力学与gpu优化渲染的可交互水墨模拟方法 |
CN114418917B (zh) * | 2022-03-11 | 2022-06-21 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103236082A (zh) * | 2013-04-27 | 2013-08-07 | 南京邮电大学 | 面向捕获静止场景的二维视频的准三维重建方法 |
US20140375635A1 (en) * | 2013-06-21 | 2014-12-25 | Kabushiki Kaisha Toshiba | Methods and systems for generating a three dimensional representation of a subject |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6064819A (en) * | 1993-12-08 | 2000-05-16 | Imec | Control flow and memory management optimization |
WO2006095017A2 (en) * | 2005-03-10 | 2006-09-14 | Bracco Imaging S.P.A. | System and method to optimize volumetric rendering of a region of interest |
US7768523B2 (en) * | 2006-03-09 | 2010-08-03 | Microsoft Corporation | Shading using texture space lighting and non-linearly optimized MIP-maps |
CN102682461B (zh) * | 2012-04-28 | 2015-12-09 | Tcl集团股份有限公司 | 一种动画渲染方法、系统及动画播放器 |
CN102945558A (zh) * | 2012-10-17 | 2013-02-27 | 沈阳创达技术交易市场有限公司 | 一种高模渲染的优化方法 |
CN104537706B (zh) * | 2014-07-31 | 2017-05-10 | 浙江大学 | 一种基于代码移动的着色器简化方法、装置及图形渲染方法 |
CN105976421B (zh) * | 2016-04-21 | 2018-06-19 | 浙江大学 | 一种渲染程序的在线优化方法 |
-
2016
- 2016-04-21 CN CN201610256550.9A patent/CN105976421B/zh active Active
-
2017
- 2017-03-31 WO PCT/CN2017/078973 patent/WO2017181837A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103236082A (zh) * | 2013-04-27 | 2013-08-07 | 南京邮电大学 | 面向捕获静止场景的二维视频的准三维重建方法 |
US20140375635A1 (en) * | 2013-06-21 | 2014-12-25 | Kabushiki Kaisha Toshiba | Methods and systems for generating a three dimensional representation of a subject |
Non-Patent Citations (2)
Title |
---|
CHANG HUI等: "A Dynamic Load Balancing Algorithm for Sort-first Rendering Clusters", 《2009 2ND IEEE INTERNATIONAL CONFERENCE ON COMPUTER SCIENCE AND INFORMATION TECHNOLOGY》 * |
王海峰等: "图形处理器通用计算关键技术研究综述", 《计算机学报》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017181837A1 (zh) * | 2016-04-21 | 2017-10-26 | 浙江大学 | 一种渲染程序的在线优化方法 |
CN109887061A (zh) * | 2019-02-19 | 2019-06-14 | 青岛海信电器股份有限公司 | 场景渲染方法、装置以及设备 |
CN111179150A (zh) * | 2019-12-27 | 2020-05-19 | 浙江大学 | 一种基于绘制指令流的着色器自动简化方法和系统 |
WO2021129087A1 (zh) * | 2019-12-27 | 2021-07-01 | 浙江大学 | 一种基于绘制指令流的着色器自动简化方法和系统 |
US11144289B1 (en) | 2020-05-19 | 2021-10-12 | International Business Machines Corporation | Dynamic automation of selection of pipeline artifacts |
WO2021233281A1 (en) * | 2020-05-19 | 2021-11-25 | International Business Machines Corporation | Dynamic automation of selection of pipeline artifacts |
GB2610984A (en) * | 2020-05-19 | 2023-03-22 | Ibm | Dynamic automation of selection of pipeline artifacts |
Also Published As
Publication number | Publication date |
---|---|
WO2017181837A1 (zh) | 2017-10-26 |
CN105976421B (zh) | 2018-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105976421A (zh) | 一种渲染程序的在线优化方法 | |
Liu et al. | Study on deep reinforcement learning techniques for building energy consumption forecasting | |
Zhu et al. | An efficient evolutionary grey wolf optimizer for multi-objective flexible job shop scheduling problem with hierarchical job precedence constraints | |
CN110533183B (zh) | 流水线分布式深度学习中异构网络感知的任务放置方法 | |
CN108564326B (zh) | 订单的预测方法及装置、计算机可读介质、物流系统 | |
CN106528989B (zh) | 一种分布式并行sph仿真方法 | |
CN104183008B (zh) | 一种基于表面信号拟合和曲面细分的着色器简化方法、装置及图形渲染方法 | |
CN113449474B (zh) | 改进灰狼算法优化bp神经网络管材成形质量预测方法 | |
CN107506865A (zh) | 一种基于lssvm优化的负荷预测方法及系统 | |
US9922442B2 (en) | Graphics processing unit and method for performing tessellation operations | |
CN110135584A (zh) | 基于自适应并行遗传算法的大规模符号回归方法及系统 | |
Wu et al. | A deadline-aware estimation of distribution algorithm for resource scheduling in fog computing systems | |
CN102521870A (zh) | 一种微多边形光线跟踪的着色重用方法 | |
CN112632874A (zh) | 一种直升机流场数值模拟的优化方法及系统 | |
CN115018992A (zh) | 发型模型的生成方法、装置、电子设备及存储介质 | |
CN105976306B (zh) | 一种基于能耗-误差预算的实时绘制方法 | |
CN104616327A (zh) | 一种基于曲面细分的着色器简化方法、装置及图形渲染方法 | |
CN115345297A (zh) | 一种基于生成对抗网络的台区样本生成方法及系统 | |
CN104537706A (zh) | 一种基于代码移动的着色器简化方法、装置及图形渲染方法 | |
Gudovskiy et al. | Explain to fix: A framework to interpret and correct DNN object detector predictions | |
CN116151384A (zh) | 量子电路处理方法、装置及电子设备 | |
CN114819095A (zh) | 业务数据处理模型的生成方法、装置及电子设备 | |
CN115080225A (zh) | 一种单源最短路径计算方法与系统 | |
CN113269350B (zh) | 基于灰色gm(1,1)模型的变压器故障预测方法 | |
Lee et al. | Learning to assemble geometric shapes |
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 |