CN109389663B - 画面渲染方法、装置、终端及存储介质 - Google Patents
画面渲染方法、装置、终端及存储介质 Download PDFInfo
- Publication number
- CN109389663B CN109389663B CN201811285503.2A CN201811285503A CN109389663B CN 109389663 B CN109389663 B CN 109389663B CN 201811285503 A CN201811285503 A CN 201811285503A CN 109389663 B CN109389663 B CN 109389663B
- Authority
- CN
- China
- Prior art keywords
- shader
- rendering
- picture
- application
- stuck
- 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
Images
Classifications
-
- 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
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/50—Controlling the output signals based on the game progress
- A63F13/52—Controlling the output signals based on the game progress involving aspects of the displayed game scene
-
- 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
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/66—Methods for processing data by generating or executing the game program for rendering three dimensional images
Abstract
本申请实施例公开了一种画面渲染方法、装置、终端及存储介质,属于图像渲染领域。所述方法包括:显示应用程序的应用画面,应用画面通过应用程序提供的原始着色器渲染得到;获取应用画面的卡顿指标,卡顿指标用于表征应用画面的卡顿程度;若卡顿指标超过卡顿指标阈值,且卡顿原因与着色器相关,则通过第一着色器渲染应用画面,原始着色器的画面渲染质量高于第一着色器的画面渲染质量。由于第一着色器的画面渲染质量低于原始着色器的画面渲染质量,因此在发生卡顿时使用第一着色器替代原始着色器进行渲染能够提高画面渲染速度,缓解应用画面的卡顿情况,保证应用画面的流畅度,达到了优化应用运行质量的效果。
Description
技术领域
本申请实施例涉及图像渲染领域,特别涉及一种画面渲染方法、装置、终端及存储介质。
背景技术
随着移动终端性能的不断提高,移动终端上运行的游戏应用程序的画面质量也在不断提高。
游戏应用程序中游戏画面的渲染由着色器(shader)执行。相关技术中,终端进行游戏画面渲染时,首先将着色器相关的程度代码加载到图形处理器(Graphics ProcessingUnit,GPU)中,进而通过GPU执行着色器的程序代码,最终输出渲染后的游戏画面。
发明内容
本申请实施例提供了一种画面渲染方法、装置、终端及存储介质。所述技术方案如下:
一方面,提供了一种画面渲染方法,其特征在于,所述方法包括:
显示应用程序的应用画面,所述应用画面通过所述应用程序提供的原始着色器渲染得到;
获取所述应用画面的卡顿指标,所述卡顿指标用于表征所述应用画面的卡顿程度;
若所述卡顿指标超过卡顿指标阈值,且卡顿原因与着色器相关,则通过第一着色器渲染所述应用画面,所述原始着色器的画面渲染质量高于所述第一着色器的画面渲染质量。
另一方面,提供了一种画面渲染装置,所述装置包括:
显示模块,用于显示应用程序的应用画面,所述应用画面通过所述应用程序提供的原始着色器渲染得到;
指标获取模块,用于获取所述应用画面的卡顿指标,所述卡顿指标用于表征所述应用画面的卡顿程度;
第一渲染模块,用于当所述卡顿指标超过卡顿指标阈值,且卡顿原因与着色器相关时,通过第一着色器渲染所述应用画面,所述原始着色器的画面渲染质量高于所述第一着色器的画面渲染质量。
另一方面,提供了一种终端,所述终端包括处理器和存储器;所述存储器存储有至少一条指令,所述至少一条指令用于被所述处理器执行以实现如上述方面所述的画面渲染方法。
另一方面,提供了一种计算机可读存储介质,所述存储介质存储有至少一条指令,所述至少一条指令用于被处理器执行以实现如上述方面所述的画面渲染方法。
本申请实施例中,首先通过应用程序提供的原始着色器渲染并显示应用画面,并通过获取表征应用画面卡顿程序的卡顿指标,在该卡顿指标超过卡顿指标阈值时,停止使用原始着色器进行画面渲染,而采用画面渲染质量较低的第一着色器进行画面渲染;由于第一着色器的画面渲染质量低于原始着色器的画面渲染质量,因此在发生卡顿时使用第一着色器替代原始着色器进行渲染能够提高画面渲染速度,缓解应用画面的卡顿情况,保证应用画面的流畅度,达到了优化应用运行质量的效果。
附图说明
图1示出了本申请一个示例性实施例所提供的终端的结构示意图;
图2示出了本申请一个示例性实施例示出的画面渲染方法的流程图;
图3示出了本申请另一个示例性实施例示出的画面渲染方法的流程图;
图4是在应用界面中显示物体时的界面示意图;
图5示出了本申请另一个示例性实施例示出的画面渲染方法的流程图;
图6示出了本申请另一个示例性实施例示出的画面渲染方法的流程图;
图7示出了本申请一个实施例提供的画面渲染装置的结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
请参考图1,其示出了本申请一个示例性实施例所提供的终端的结构示意图。
可选的,该终端120中包括:处理器122和存储器124。
处理器122利用各种接口和线路连接整个终端120内的各个部分,通过运行或执行存储在存储器124内的指令、程序、代码集或指令集,以及调用存储在存储器124内的数据,执行终端100的各种功能和处理数据。可选的,处理器122可以采用数字信号处理(DigitalSignal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器122可集成中央处理器(Central Processing Unit,CPU)、图像处理器(GraphicsProcessing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器122中,单独通过一块芯片进行实现。
存储器124可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选的,该存储器140包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器124可用于存储指令、程序、代码、代码集或指令集。存储器124可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等;存储数据区可存储下面各个方法实施例中涉及到的数据等。
除了包含处理器122和存储器124之外,终端120还可以包含显示屏。显示屏是用于显示图像的组件。显示屏可以仅具有图像显示功能,也可以同时具有图像显示以及接收触摸操作的功能,即该显示屏可以为触摸显示屏。并且,显示屏可以是全面屏、异形屏、折叠屏、曲面屏或其他形式的屏幕,本申请实施例并不对此进行限定。
当然,终端120还可以包含拍照组件(比如摄像头)、距离传感器、加速度传感器、角速度传感器、定位组件、红外组件、蓝牙组件等其他组件,本申请实施例并不对终端120的具体结构构成限定。
在游戏应用程序中,游戏画面中显示的三维(3-Dimension,3D)物体都是通过模型渲染得到。其中,在进行模型渲染时,终端首先获取物体对应的模型数据,并根据模型数据构建三维模型,然后通过(像素)着色器对构建得到的三维模型的表面进行渲染,进而还原出物体的色彩及纹理特征,且为了达到更加真实的视觉效果,通常采用着色器实现顶点光照、高光、法线、反射等效果。
然而,对于视觉效果越好的着色器,GPU根据着色器进行渲染的开销也越大,导致利用高质量着色器进行渲染时容易出现画面卡顿现象,且这种现象在低性能终端上尤为明显。
本申请实施例中,终端通过监测应用画面的实时卡顿指标,并在实时卡顿指标指示画面出现严重卡顿时,采用画面渲染质量较低的着色器进行画面渲染,从而降低GPU根据着色器进行渲染时的开销,进而缩短应用画面的渲染速度,保证应用画面的帧率稳定。由于终端能够根据实时的卡顿情况动态调用不同渲染质量的着色器,因此低性能终端也能够流畅运行应用程序。下面采用示意性的实施例进行说明。
请参考图2,其示出了本申请一个示例性实施例示出的画面渲染方法的流程图。本实施例以该方法应用于图1所示的终端120来举例说明。该方法包括:
步骤201,显示应用程序的应用画面,应用画面通过应用程序提供的原始着色器渲染得到。
应用画面为应用程序中显示的画面,该应用程序是需要进行三维模型动态渲染并显示的应用程序,该应用程序可以是游戏类应用程序,比如第一人称射击(First PersonalShooting,FPS)游戏、第三人称射击(Third Personal Shooting,FPS)游戏、多人在线战术竞技(Multiplayer Online Battle Arena,MOBA)游戏等等,本申请并不对应用程序的类型进行限定。
本申请实施例中,原始着色器是渲染管线中特定处理阶段(比如像素着色阶段)提供算法的一段程序代码,由应用程序开发人员写入应用程序中,用于对渲染过程进行控制。应用程序运行过程中,原始着色器即加载到GPU中,以便GPU通过执行原始着色器的程序代码进行渲染。
在一种可能的实施方式中,应用程序启动后,当需要进行应用画面渲染时,首先通过加载应用程序提供的原始着色器进行画面渲染,并对渲染出的应用画面进行显示。
需要说明的是,着色器包括顶点着色器(vertex shader)和像素着色器(pixelshader),其中,顶点着色器用于渲染模型顶点,像素着色器用于渲染表面色彩纹理,而本申请实施例中的着色器为像素着色器。
步骤202,获取应用画面的卡顿指标,卡顿指标用于表征应用画面的卡顿程度。
其中,卡顿指标越高,表明应用画面的卡顿程度越严重,反之,卡顿指标越低,表明应用画面越流畅。
在一种可能的实施方式中,应用程序运行过程中,终端通过预定采样率采集应用画面对应的各项参数,从而根据各项参数计算出应用画面实时的卡顿指标。可选的,为了使卡顿指标能够表征应用画面的实时卡顿情况,该预定采样率大于采样率阈值,比如,该采样率阈值为100Hz。
可选的,获取到应用画面的卡顿指标后,终端检测该卡顿指标是否查过卡顿指标阈值,若未超过,则确定应用画面未发生严重卡顿,并继续根据第一渲染参数渲染目标物体对应的模型;若超过,则确定应用画面发生严重卡顿,并执行下述步骤203。
可选的,该卡顿指标阈值为预设值,或者,由用户自行设置。
由于不同应用程序中,用户对应用画面卡顿的敏感程度不同,且应用程序的帧率越高,用户对画面卡顿越敏感(画面卡顿对应用的影响越大),因此,为了提高衡量画面卡顿严重程度的准确性,可选的,终端显示应用画面后,获取应用画面对应的目标帧率,并根据目标帧率确定卡顿指标阈值,进而根据该卡顿指标阈值,确定应用画面是否发生严重卡顿。其中,目标帧率为应用画面所需达到的帧率(比如游戏应用中设置的帧率),卡顿指标阈值与目标帧率之间呈负相关关系,即目标帧率越高,卡顿指标阈值越低。
在一种可能的实施方式中,终端中预先存储有目标帧率与卡顿指标阈值的对应关系,终端获取到当前应用画面的目标帧率后,基于该对应关系确定应用画面对应的卡顿指标阈值。
在其他可能的实施方式中,由于用户对不同类型应用程序的画面流畅度要求不同(相应的,衡量发生严重卡顿的标准不同),比如,对FPS类游戏的流畅度要求高于对MOBA类游戏的流畅度要求,因此,终端可以同时根据应用画面对应的目标帧率以及应用类型确定卡顿指标阈值,本申请实施例在此不再赘述。
步骤203,若卡顿指标超过卡顿指标阈值,且卡顿原因与着色器相关,则通过第一着色器渲染应用画面,原始着色器的画面渲染质量高于第一着色器的画面渲染质量。
在一种可能的实施方式中,当卡顿指标超过卡顿指标阈值时,终端确定当前应用画面出现严重卡顿,并进一步确定卡顿原因是会否与(原始)着色器相关。若相关,则停止使用原始着色器进行渲染,而采用画面渲染质量低于原始着色器的第一着色器进行画面渲染;若不相关,则通过其他方式进行优化,本实施例对此不做限定。
在一种可能的实施方式中,第一着色器由可编程渲染管线基于原始着色器生成,并加载到终端GPU中,由GPU执行。
在其他可能的实施方式中,当卡顿指标未超过卡顿指标阈值时,终端确定当前应用画面流畅,并继续通过原始着色器进行渲染。
相较于原始着色器,虽然采用第一着色器进行画面渲染时画面质量会有所下降,但是由于第一着色器的渲染复杂度低于原始着色器的渲染复杂度,因此能够缩短画面渲染速度,从而缓解因着色器复杂度过高导致画面卡顿的情况。
综上所述,本申请实施例中,首先通过应用程序提供的原始着色器渲染并显示应用画面,并通过获取表征应用画面卡顿程序的卡顿指标,在该卡顿指标超过卡顿指标阈值时,停止使用原始着色器进行画面渲染,而采用画面渲染质量较低的第一着色器进行画面渲染;由于第一着色器的画面渲染质量低于原始着色器的画面渲染质量,因此在发生卡顿时使用第一着色器替代原始着色器进行渲染能够提高画面渲染速度,缓解应用画面的卡顿情况,保证应用画面的流畅度,达到了优化应用运行质量的效果。
请参考图3,其示出了本申请另一个示例性实施例示出的画面渲染方法的流程图。本实施例以该方法应用于图1所示的终端120来举例说明。该方法包括:
步骤301,显示应用程序的应用画面,应用画面通过应用程序提供的原始着色器渲染得到。
本步骤的实施方式可以参考上述步骤201,本实施例在此不再赘述。
步骤302,获取应用画面对应的帧率参数,帧率参数包括当前帧率、帧率抖动、最低帧率和GPU渲染时间中的至少一种。
在一种可能的实施方式中,终端实时监测与应用画面卡顿相关的帧率参数,从而根据帧率参数确定当前应用画面的卡顿情况,该帧率参数包括当前帧率、帧率抖动、最低帧率和GPU渲染时间中的至少一种。
其中,当前帧率为应用画面对应的瞬间帧率;帧率抖动用于指示单位时长内帧率的变化幅度,可选的,该帧率抖动根据单位时长(比如1s)内帧率的方差,且方差越大,表示帧率变化幅度越大,反之,表示帧率变化幅度越小;最低帧率为单位时长内帧率的最低值;GPU渲染时间为GPU渲染一帧画面所耗费的时长,且GPU渲染时间越长,表示当前画面的复杂度越高(包含的模型数量较多或模型的渲染参数较多),且对GPU性能的处理要求越高。
需要说明的是,由于终端进行画面渲染时,需要同时调用CPU和GPU,而GPU的渲染速度与画面流畅度直接相关,因此,终端单独监测渲染过程中GPU渲染时间。
示意性的,终端获取到的帧率参数包括:当前帧率60帧,帧率变化幅度200,最低帧率30帧以及GPU渲染时间14ms。
当然,终端在监测过程中,还可以获取其他与画面流畅度相关的帧率参数(比如平均帧率和GPU负载等等),本实施例仅以上述帧率参数为例进行说明,并不对此构成限定。
步骤303,根据帧率参数计算卡顿指标。
在一种可能的实施方式中,根据获取到的帧率参数中的至少一项,终端计算表征当前画面卡顿程度的卡顿指标。
可选的,当前帧率越高,表明当前应用画面的流畅度越高,因此卡顿指标与当前帧率之间呈负相关关系。
可选的,帧率抖动越大时,表明应用画面的帧率变化幅度越大,画面卡顿的严重程度越高,因此卡顿指标与帧率抖动之间呈正相关关系。
可选的,单位时间内的最低帧率越低,表明单位时间内应用画面的复杂程度越高,相应的,其出现画面卡顿的严重程度越高,因此卡顿指标与最低帧率之间呈正相关关系。
可选的,GPU渲染时间越长,表明应用画面的复杂度越高,相应的,通过GPU渲染应用画面是出现卡顿和掉帧的情况越严重,因此卡顿指标与GPU渲染时间呈正相关关系。
在一种计算卡顿指标的方式中,由于不同帧率参数与画面卡顿之间的相关程度不同,因此,终端根据各项帧率参数以及各项帧率参数各自对应的权重,计算卡顿指标。可选的,GPU渲染时间对应的权重大于其它帧率参数对应的权重,即GPU渲染时间的长短对画面卡顿的影响程度越大。
示意性的,当帧率参数中包含帧率抖动、最低帧率以及GPU渲染时间时,卡顿指标=帧率抖动×0.1+最低帧率×0.15+GPU渲染时间×0.75。
在其他可能的实施方式中,当帧率参数中包含GPU负载时,终端可以综合GPU负载计算卡顿指标,其中,GPU负载与卡顿指标呈正相关关系,本实施例在此不再赘述。
计算得到实时的卡顿指标后,终端检测卡顿指标是否大于卡顿指标阈值,并在卡顿指标大于卡顿指标阈值时执行下述步骤304。
步骤304,若卡顿指标超过卡顿指标阈值,则获取着色器渲染时长。
由于着色器的渲染复杂度越高时,GPU运行着色器进行渲染的时长越长,因此,终端获取着色器渲染时长,并基于着色器渲染时长确定画面卡顿是否与着色器相关。其中,该着色器渲染时长为像素着色器渲染一帧画面所消耗的时长。比如,终端获取着色器渲染时长为14ms。
可选的,获取到着色器渲染时长后,终端进一步检测着色器渲染时长是否大于渲染时长阈值,若大于,则表明因着色器渲染时长过长导致画面卡顿,并执行下述步骤305;若小于,则表明并非因着色器导致画面卡顿,并通过其他方式进行画面卡顿优化,本实施例对此不做限定。
步骤305,若着色器渲染时长大于渲染时长阈值,则确定卡顿原因与着色器相关。
若着色器渲染时长大于渲染时长阈值,表明画面卡顿的原因是原始着色器渲染复杂度过高,从而确定卡顿原因与着色器相关。
在一个示意性的例子中,当渲染时长阈值为10ms,且获取到着色器渲染时长为14ms时,由于着色器渲染时长>渲染时长阈值,因此终端确定卡顿原因与着色器相关。
步骤306,通过第一着色器渲染应用画面。
在一种可能的实施方式中,第一着色器的程序代码加载到GPU后,终端即通过第一着色器对应用画面中各个物体进行渲染。
在另一种可能的实施方式中,若着色器渲染时长大于渲染时长阈值,终端将卡顿指标超过卡顿指标阈值的比值确定为卡顿指数(大于1),并在卡顿指数大于卡顿指数阈值时(即严重卡顿时),通过第一着色器对应用画面中各个物体进行渲染;在卡顿指示小于卡顿指示阈值时(即轻微卡顿时),通过第一着色器对应用画面中的目标物体进行渲染,通过第二着色器对应用画面中的其他物体(除目标物体外)进行渲染,从而在缓解画面卡顿的前提下,减小画面渲染质量的下降程度。
可选的,目标物体是应用画面中渲染距离大于距离阈值的物体,其中,渲染距离为物体与观察点之间的距离。观察点又被称为视点,用于指示三维环境中虚拟摄像机所在的位置。比如,在FPS游戏中,观察点即位于虚拟人物的眼部位置;在TPS游戏中,观察点即位于虚拟人物肩部上方位置。
示意性的,如图4所示,TPS游戏的游戏画面41中需要显示柜子42和门43,终端即获取柜子42与观察点之间的第一渲染距离,以及门43与观察点之间的第二渲染距离。由于第一渲染距离小于距离阈值,而第二渲染距离大于距离阈值,因此,终端通过第一着色器对门43进行渲染,通过原始着色器对柜子42进行渲染。
在其他可能的实施方式中,终端根据渲染距离和物体对应模型的尺寸,确定物体在应用画面中的显示尺寸(近大远小原理),并将显示尺寸小于尺寸阈值的物体确定为目标物体,本实施例对此不做限定。
本实施例中,终端根据应用画面对应的帧率参数,计算应用画面的卡顿指标,并基于该卡顿指标确定应用画面是否发生卡顿,提高了画面卡顿判断的准确性;同时,在确定发生卡顿时,根据着色器渲染时长确定画面卡顿是否与着色器相关,从而避免在画面卡顿与着色器无关调整着色器。
此外,在发生轻微卡顿时,终端将距离观察点较近的物体确定为目标物体,并采用渲染质量较低的第一着色器对目标物体进行渲染,在缓解画面卡顿的前提下,减小画面渲染质量的下降程度。
在一种可能的实施方式中,终端预先根据应用程序提供的画质模式,基于原始着色器生成若干个渲染质量不同(渲染质量均低于原始着色器)的候选着色器。后续发生画面卡顿时,终端即选择适用于当前画质模式的候选着色器进行渲染。在图3的基础上,如图5所示,步骤301之后可以包括步骤307至309。
步骤307,获取应用程序对应的至少一种画质模式。
为了适应不同性能的终端,应用程序提供多种画质模式供用户选择,其中,不同画质模式下,应用画面的画面质量不同。在一种可能的实施方式中,对于游戏类应用程序,其对应的画质模式包括:高性能模式、普通模式和流畅模式。
当然,应用程序还可以对画质模式进行细分,比如划分出高动态范围图像(High-Dynamic Range,HDR)模式、抗锯齿模式等等,本实施例并不对画质模式具体类型进行限定。
步骤308,对于每一种画质模式,根据画质模式和原始着色器生成候选着色器。
由于不同画质模式下应用程序对应应用画面的画质不同,因此,终端需要针对性的为不同画质模式设置各自对应的候选着色器。可选的,候选着色器对应的画面渲染质量与画质模式对应的画面质量呈正相关关系,即画质模式对应的画面质量越高,其对应候选着色器的画面渲染质量越高。
其中,基于原始着色器生成的各个候选着色器的运算数量级小于原始着色器,相应的,利用候选着色器进行画面渲染的复杂度低于原始着色器,且画面渲染速度大于原始着色器。
针对候选着色器的生成方式,在一种可能的实施方式中,本步骤可以包括如下步骤。
一、确定画质模式对应的目标调节项,其中,不同的画质模式对应不同的目标调节项。
由于不同画质模式下,应用画面所需达到的渲染效果不同,比如,高性能模式下,需要达到顶点光照、高光和反射效果,普通模式下,需要达到顶点光照和高光效果,流畅模式下,仅需要达到顶点光照效果,因此,终端需要保证生成的候选着色器也能够达到相应的渲染效果。
可选的,终端中存储有画质模式与调节项之间的对应关系,基于该对应关系,终端确定当前画质模式对应的目标调节项。
在一种可能的实施方式中,目标调节项对应的渲染效果是与当前画质模式无关(或相关度低于阈值)的渲染效果。
二、对原始着色器中目标调节项对应代码进行调整,生成候选着色器。
可选的,调整目标调节项后生成的候选着色器仍旧实现原始着色器的渲染效果,仅在渲染效果的质量上有所下降。
在一种可能的实施方式中,当目标调节项为光照相关的调节项时,终端对原始着色器中光照效果对应的程序代码进行优化。
示意性的,当应用程序对应的画质模式包括高清模式、普通模式和流畅模式时,终端分别生成高性能模式对应的第一候选着色器,普通模式对应的第二候选着色器以及流畅模式对应的第三候选着色器。
步骤309,根据至少一种候选着色器生成着色器集合。
进一步的,终端将生成的至少一种候选着色器添加到着色器集合中,以便后续从着色器集合中选取相应的候选着色器进行渲染。
相应的,步骤306之前可以包括步骤310至311。
步骤310,获取应用画面的画质模式。
当检测到发生画面卡顿,且卡顿原因与着色器相关时,终端获取应用画面当前的画质模式。
比如,终端获取到应用画面当前的画质模式为高性能模式。
步骤311,将着色器集合中与画质模式对应的候选着色器确定为第一着色器,其中,着色器集合中不同的候选着色器对应不同的画质模式。
进一步的,根据获取到的画质模式,终端从着色器集合中获取该画质模式对应的候选着色器,将候选着色器确定为第一着色器,并将其程序代码加载到GPU中。
比如,终端根据当前画质模式“高性能模式”,将第一候选着色器确定为第一着色器,并加载到GPU中。
本实施例中,终端预先针对不同的画质模式生成对应的候选着色器,并在检测到因着色器原因导致画面卡顿时,采用与当前画质模式对应的候选着色器进行画面渲染,在缓解画面卡顿的同时,保证画面渲染质量。
在一种可能的实施方式中,使用第一着色器进行画面渲染过程中,终端持续进行画面卡顿检测,并在检测到无画面卡顿情况时,切换使用与原始着色器渲染质量相同,但性能更优的第二着色器进行画面渲染。在图3的基础上,如图6所示,步骤301之后可以包括步骤312。
步骤312,根据GPU的运算架构,对原始着色器进行优化处理,生成第二着色器,其中,第二着色器符合GPU的运算架构。
由于不同终端中GPU的运算架构不同,因此原始着色器在当前GPU上运行时,可能未达到最高性能。因此,终端可以根据GPU的运算架构,对原始着色器进行优化处理,在保证优化后的原始着色器(即第二着色器)的画面渲染质量的前提下,使得第二着色器符合GPU的运算架构,具备更高的性能。
在一种可能的实施方式中,优化处理的方式包括但不限于如下至少一种:
一、当GPU基于单指令多数据流(Single Instruction Multiple Data,SIMD)架构时,采用并行计算;
二、将浮点(float)计算改为向量计算;
三、修改程序代码中的分支及条件判断语句;
四、优化数据类型,使用位数较少的数据类型加快操作。
本申请实施例并不对优化处理的方式进行限定。
相应的,步骤306之前可以包括步骤313。
步骤313,若卡顿指标未超过卡顿指标阈值,则通过第二着色器渲染应用画面,第二着色器的画面渲染质量与原始着色器的画面渲染质量相同,且第二着色器的性能优于原始着色器的性能。
通过第一着色器进行画面渲染后,若卡顿指标恢复到卡顿指标阈值,终端则将第二着色器加载到GPU中,并通过GPU运行第二着色器进行画面渲染。由于第二着色器相较于原始着色器的性能更优,因此能够在提高画面渲染质量的情况下,提高画面渲染速度。
可选的,若使用第二着色器后卡顿指标超过卡顿指标阈值,终端重新通过第一着色器渲染应用画面,本实施例在此不再赘述。
需要说明的是,图5和图6所示的实施例可以结合成为一个新的实施例,本实施例在此不再赘述。
请参考图7,其示出了本申请一个实施例提供的画面渲染装置的结构框图。该画面渲染装置可以通过软件、硬件或者两者的结合实现成为终端120的全部或一部分。该装置包括:
显示模块701,用于显示应用程序的应用画面,所述应用画面通过所述应用程序提供的原始着色器渲染得到;
指标获取模块702,用于获取所述应用画面的卡顿指标,所述卡顿指标用于表征所述应用画面的卡顿程度;
第一渲染模块703,用于当所述卡顿指标超过卡顿指标阈值,且卡顿原因与着色器相关时,通过第一着色器渲染所述应用画面,所述原始着色器的画面渲染质量高于所述第一着色器的画面渲染质量。
可选的,所述第一渲染模块703,包括:
渲染时长获取单元,用于若所述卡顿指标超过卡顿指标阈值,则获取着色器渲染时长;
第一确定单元,用于若所述着色器渲染时长大于渲染时长阈值,则确定卡顿原因与着色器相关;
第一渲染单元,用于通过所述第一着色器渲染所述应用画面。
可选的,所述第一渲染模块703,还包括:
模式获取单元,用于获取所述应用画面的画质模式;
第二确定单元,用于将着色器集合中与所述画质模式对应的候选着色器确定为所述第一着色器,其中,所述着色器集合中不同的候选着色器对应不同的画质模式。
可选的,所述装置还包括:
模式获取模块,用于获取所述应用程序对应的至少一种画质模式;
第一生成模块,用于对于每一种画质模式,根据所述画质模式和所述原始着色器生成所述候选着色器;
第二生成模块,用于根据至少一种所述候选着色器生成所述着色器集合。
可选的,所述第一生成模块,包括:
第三确定单元,用于确定所述画质模式对应的目标调节项,其中,不同的画质模式对应不同的目标调节项;
生成单元,用于对所述原始着色器中所述目标调节项对应代码进行调整,生成所述候选着色器。
可选的,所述装置还包括:
第二渲染模块,用于若所述卡顿指标未超过所述卡顿指标阈值,则通过第二着色器渲染所述应用画面,所述第二着色器的画面渲染质量与所述原始着色器的画面渲染质量相同,且所述第二着色器的性能优于所述原始着色器的性能。
可选的,所述装置还包括:
第三生成模块,用于根据GPU的运算架构,对所述原始着色器进行优化处理,生成所述第二着色器,其中,所述第二着色器符合所述GPU的运算架构。
可选的,所述指标获取模块702,包括:
参数获取单元,用于获取所述应用画面对应的帧率参数,所述帧率参数包括当前帧率、帧率抖动、最低帧率和图形处理器GPU渲染时间中的至少一种,所述帧率抖动用于指示单位时长内帧率的变化幅度,所述GPU渲染时间为GPU渲染一帧画面所耗费的时长;
计算单元,用于根据所述帧率参数计算所述卡顿指标,其中,所述当前帧率与所述卡顿指标之间呈负相关关系,所述帧率抖动、所述最低帧率以及所述GPU渲染时间与所述卡顿指标之间呈正相关关系。
可选的,所述计算单元,用于:
根据各项所述帧率参数以及各项所述帧率参数各自对应的权重,计算所述卡顿指标,其中,所述GPU渲染时间对应的权重大于其它帧率参数对应的权重。
可选的,所述装置还包括:
帧率获取模块,用于获取所述应用画面对应的目标帧率;
阈值确定模块,用于根据所述目标帧率确定所述卡顿指标阈值,所述卡顿指标阈值与所述目标帧率之间呈负相关关系。
综上所述,本申请实施例中,首先通过应用程序提供的原始着色器渲染并显示应用画面,并通过获取表征应用画面卡顿程序的卡顿指标,在该卡顿指标超过卡顿指标阈值时,停止使用原始着色器进行画面渲染,而采用画面渲染质量较低的第一着色器进行画面渲染;由于第一着色器的画面渲染质量低于原始着色器的画面渲染质量,因此在发生卡顿时使用第一着色器替代原始着色器进行渲染能够提高画面渲染速度,缓解应用画面的卡顿情况,保证应用画面的流畅度,达到了优化应用运行质量的效果。
本申请实施例还提供了一种计算机可读介质,该计算机可读介质存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的画面渲染方法。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的画面渲染方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种画面渲染方法,其特征在于,所述方法包括:
显示应用程序的应用画面,所述应用画面通过所述应用程序提供的原始着色器渲染得到,所述原始着色器是渲染管线中提供算法的程序代码;
获取所述应用画面的卡顿指标,所述卡顿指标用于表征所述应用画面的卡顿程度;
若所述卡顿指标超过卡顿指标阈值,则获取着色器渲染时长,所述着色器渲染时长为渲染单帧画面所消耗的时长;
若所述着色器渲染时长大于渲染时长阈值,则确定卡顿原因与着色器相关;
获取所述应用画面的画质模式;
将着色器集合中与所述画质模式对应的候选着色器确定为第一着色器,其中,所述着色器集合中不同的候选着色器对应不同的画质模式,且所述候选着色器通过对所述原始着色器中的目标调节项对应代码进行调整得到,不同画质模式对应不同的目标调节项;
通过所述第一着色器渲染所述应用画面,所述原始着色器的画面渲染质量高于所述第一着色器的画面渲染质量。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述应用程序对应的至少一种画质模式;
对于每一种画质模式,根据所述画质模式和所述原始着色器生成所述候选着色器;
根据至少一种所述候选着色器生成所述着色器集合。
3.根据权利要求1至2任一所述的方法,其特征在于,所述通过所述第一着色器渲染所述应用画面之后,所述方法还包括:
若所述卡顿指标未超过所述卡顿指标阈值,则通过第二着色器渲染所述应用画面,所述第二着色器的画面渲染质量与所述原始着色器的画面渲染质量相同,且所述第二着色器的性能优于所述原始着色器的性能。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
根据图形处理器GPU的运算架构,对所述原始着色器进行优化处理,生成所述第二着色器,其中,所述第二着色器符合所述GPU的运算架构。
5.根据权利要求1至2任一所述的方法,其特征在于,所述获取所述应用画面的卡顿指标,包括:
获取所述应用画面对应的帧率参数,所述帧率参数包括当前帧率、帧率抖动、最低帧率和图形处理器GPU渲染时间中的至少一种,所述帧率抖动用于指示单位时长内帧率的变化幅度,所述GPU渲染时间为GPU渲染一帧画面所耗费的时长;
根据所述帧率参数计算所述卡顿指标,其中,所述当前帧率与所述卡顿指标之间呈负相关关系,所述帧率抖动、所述最低帧率以及所述GPU渲染时间与所述卡顿指标之间呈正相关关系。
6.根据权利要求5所述的方法,其特征在于,所述根据所述帧率参数计算所述卡顿指标,包括:
根据各项所述帧率参数以及各项所述帧率参数各自对应的权重,计算所述卡顿指标,其中,所述GPU渲染时间对应的权重大于其它帧率参数对应的权重。
7.根据权利要求1至2任一所述的方法,其特征在于,所述显示应用程序的应用画面之后,所述方法还包括:
获取所述应用画面对应的目标帧率;
根据所述目标帧率确定所述卡顿指标阈值,所述卡顿指标阈值与所述目标帧率之间呈负相关关系。
8.一种画面渲染装置,其特征在于,所述装置包括:
显示模块,用于显示应用程序的应用画面,所述应用画面通过所述应用程序提供的原始着色器渲染得到,所述原始着色器是渲染管线中提供算法的程序代码;
指标获取模块,用于获取所述应用画面的卡顿指标,所述卡顿指标用于表征所述应用画面的卡顿程度;
包含渲染时长获取单元、第一确定单元、第一渲染单元、模式获取单元以及第二确定单元的第一渲染模块,所述渲染时长获取单元,用于若所述卡顿指标超过卡顿指标阈值,则获取着色器渲染时长,所述着色器渲染时长为渲染单帧画面所消耗的时长;
所述第一确定单元,用于若所述着色器渲染时长大于渲染时长阈值,则确定卡顿原因与着色器相关;
所述模式获取单元,用于获取所述应用画面的画质模式;
所述第二确定单元,用于将着色器集合中与所述画质模式对应的候选着色器确定为第一着色器,其中,所述着色器集合中不同的候选着色器对应不同的画质模式,且所述候选着色器通过对所述原始着色器中的目标调节项对应代码进行调整得到,不同画质模式对应不同的目标调节项;
所述第一渲染单元,用于通过第一着色器渲染所述应用画面,所述原始着色器的画面渲染质量高于所述第一着色器的画面渲染质量。
9.一种终端,其特征在于,所述终端包括处理器和存储器;所述存储器存储有至少一条指令,所述至少一条指令用于被所述处理器执行以实现如权利要求1至7任一所述的画面渲染方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质存储有至少一条指令,所述至少一条指令用于被处理器执行以实现如权利要求1至7任一所述的画面渲染方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811285503.2A CN109389663B (zh) | 2018-10-31 | 2018-10-31 | 画面渲染方法、装置、终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811285503.2A CN109389663B (zh) | 2018-10-31 | 2018-10-31 | 画面渲染方法、装置、终端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109389663A CN109389663A (zh) | 2019-02-26 |
CN109389663B true CN109389663B (zh) | 2021-03-09 |
Family
ID=65428226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811285503.2A Active CN109389663B (zh) | 2018-10-31 | 2018-10-31 | 画面渲染方法、装置、终端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109389663B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110609603A (zh) * | 2019-09-20 | 2019-12-24 | 北京字节跳动网络技术有限公司 | 调频的方法及装置、终端和存储介质 |
CN111340958B (zh) * | 2020-02-12 | 2021-10-15 | 广东趣炫网络股份有限公司 | 一种ScrollView滑动卡顿的优化方法、装置、设备和可读存储介质 |
CN113476837A (zh) * | 2021-07-01 | 2021-10-08 | 网易(杭州)网络有限公司 | 画质展示方法、装置、设备和存储介质 |
CN115937380A (zh) * | 2021-08-24 | 2023-04-07 | 荣耀终端有限公司 | 图形渲染方法、装置及存储介质 |
CN116681784A (zh) * | 2021-09-01 | 2023-09-01 | 荣耀终端有限公司 | 一种图像生成方法及设备 |
CN115878209A (zh) * | 2021-09-29 | 2023-03-31 | 华为技术有限公司 | 加载着色器的方法和装置 |
CN114663272B (zh) * | 2022-02-22 | 2024-04-09 | 荣耀终端有限公司 | 一种图像处理方法及电子设备 |
CN115942131B (zh) * | 2023-02-09 | 2023-09-01 | 蔚来汽车科技(安徽)有限公司 | 保障车辆环视功能的方法、座舱系统及车辆、存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104167015A (zh) * | 2014-07-31 | 2014-11-26 | 浙江大学 | 一种基于表面信号拟合的着色器简化方法、装置及图形渲染方法 |
US20160148420A1 (en) * | 2014-11-20 | 2016-05-26 | Samsung Electronics Co., Ltd. | Image processing apparatus and method |
CN106997282A (zh) * | 2017-05-02 | 2017-08-01 | 腾讯科技(深圳)有限公司 | 客户端的显示模式的处理方法和装置 |
CN107194891A (zh) * | 2017-05-18 | 2017-09-22 | 上海兆芯集成电路有限公司 | 改善图像质量的方法及虚拟实境装置 |
CN108211352A (zh) * | 2017-12-28 | 2018-06-29 | 深圳市创梦天地科技股份有限公司 | 一种调节画质的方法及终端 |
CN109285211A (zh) * | 2018-10-29 | 2019-01-29 | Oppo广东移动通信有限公司 | 画面渲染方法、装置、终端及存储介质 |
-
2018
- 2018-10-31 CN CN201811285503.2A patent/CN109389663B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104167015A (zh) * | 2014-07-31 | 2014-11-26 | 浙江大学 | 一种基于表面信号拟合的着色器简化方法、装置及图形渲染方法 |
US20160148420A1 (en) * | 2014-11-20 | 2016-05-26 | Samsung Electronics Co., Ltd. | Image processing apparatus and method |
CN106997282A (zh) * | 2017-05-02 | 2017-08-01 | 腾讯科技(深圳)有限公司 | 客户端的显示模式的处理方法和装置 |
CN107194891A (zh) * | 2017-05-18 | 2017-09-22 | 上海兆芯集成电路有限公司 | 改善图像质量的方法及虚拟实境装置 |
CN108211352A (zh) * | 2017-12-28 | 2018-06-29 | 深圳市创梦天地科技股份有限公司 | 一种调节画质的方法及终端 |
CN109285211A (zh) * | 2018-10-29 | 2019-01-29 | Oppo广东移动通信有限公司 | 画面渲染方法、装置、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109389663A (zh) | 2019-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109389663B (zh) | 画面渲染方法、装置、终端及存储介质 | |
CN109285211B (zh) | 画面渲染方法、装置、终端及存储介质 | |
US11100714B2 (en) | Adjusting video rendering rate of virtual reality content and processing of a stereoscopic image | |
KR101635271B1 (ko) | 시각 출력을 위한 조정을 판단하기 위한 기법 | |
JP6724238B2 (ja) | 動的なフォビエーション調整 | |
CN106293047B (zh) | 通过动态分辨率缩放来减少移动设备的功耗 | |
US9720497B2 (en) | Method and apparatus for controlling rendering quality | |
JP5175065B2 (ja) | 効率的にモーションブラー効果を提供する3次元グラフィックスレンダリング方法及び装置 | |
US11790594B2 (en) | Ray-tracing with irradiance caches | |
CN111292236B (zh) | 一种减少中央凹注视渲染中的混叠伪像的方法和计算系统 | |
US20030011598A1 (en) | Three dimensional rendering including motion sorting | |
TWI622957B (zh) | 改善圖像品質的方法及虛擬實境裝置 | |
CN113302665A (zh) | 用于增强现实的光照估计 | |
KR101710966B1 (ko) | 이미지 안티 에일리어싱 방법 및 장치 | |
US11823321B2 (en) | Denoising techniques suitable for recurrent blurs | |
US20240029211A1 (en) | History clamping for denoising dynamic ray-traced scenes using temporal accumulation | |
CN114549683A (zh) | 图像渲染方法、装置以及电子设备 | |
US11614798B2 (en) | Eye tracking | |
CN114377394B (zh) | 一种云游戏画面渲染方法及装置 | |
CN116173496A (zh) | 一种图像帧的渲染方法及相关装置 | |
WO2016210206A1 (en) | Reducing power consumption of mobile devices through dynamic resolution scaling | |
JP5003252B2 (ja) | 画像表示装置及び画像表示方法 | |
US20220326527A1 (en) | Display System Optimization | |
Galea et al. | Gpu-based selective sparse sampling for interactive high-fidelity rendering | |
US20240054657A1 (en) | Frame rate up-conversion using optical flow |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |