CN109920040A - 显示场景处理方法和装置、存储介质 - Google Patents
显示场景处理方法和装置、存储介质 Download PDFInfo
- Publication number
- CN109920040A CN109920040A CN201910156033.8A CN201910156033A CN109920040A CN 109920040 A CN109920040 A CN 109920040A CN 201910156033 A CN201910156033 A CN 201910156033A CN 109920040 A CN109920040 A CN 109920040A
- Authority
- CN
- China
- Prior art keywords
- half screen
- data
- rendering
- user
- display
- 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
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G3/00—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
- G09G3/20—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters
- G09G3/34—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters by control of light from an independent source
- G09G3/3406—Control of illumination source
- G09G3/342—Control of illumination source using several illumination sources separately controlled corresponding to different display panel areas, e.g. along one dimension such as lines
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/12—Synchronisation between the display unit and other units, e.g. other display units, video-disc players
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/0025—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00 for optical correction, e.g. distorsion, aberration
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G3/00—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
- G09G3/001—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes using specific devices not provided for in groups G09G3/02 - G09G3/36, e.g. using an intermediate record carrier such as a film slide; Projection systems; Display of non-alphanumerical information, solely or in combination with alphanumerical information, e.g. digital display on projected diapositive as background
- G09G3/003—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes using specific devices not provided for in groups G09G3/02 - G09G3/36, e.g. using an intermediate record carrier such as a film slide; Projection systems; Display of non-alphanumerical information, solely or in combination with alphanumerical information, e.g. digital display on projected diapositive as background to produce spatial visual effects
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2310/00—Command of the display device
- G09G2310/02—Addressing, scanning or driving the display screen or processing steps related thereto
- G09G2310/024—Scrolling of light from the illumination source over the display in combination with the scanning of the display screen
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2310/00—Command of the display device
- G09G2310/08—Details of timing specific for flat panels, other than clock recovery
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Optics & Photonics (AREA)
- Controls And Circuits For Display Device (AREA)
- Processing Or Creating Images (AREA)
Abstract
一种显示场景处理方法及装置、存储介质,该显示场景处理方法包括:获取垂直同步信号;基于垂直同步信号,执行渲染线程以对第一半屏场景数据和第二半屏场景数据进行渲染,执行异步时间扭曲线程以对渲染后的第一半屏场景数据和第二半屏场景数据进行校正,以获得第一半屏场景校正数据和第二半屏场景校正数据。
Description
技术领域
本公开的实施例涉及一种可用于虚拟现实的显示场景处理方法和装置、存储介质。
背景技术
虚拟现实(Virtual Reality,VR)系统是一种可以创建和体验虚拟世界的计算机仿真系统,它通过将多源信息进行融合,以向用户提供一种交互式的三维动态视景,并通过对用户行为进行仿真,从而使用户沉浸到该模拟环境中。虚拟现实技术包括环境模拟技术、用户行为感知技术等各个方面。环境模拟技术是指通过计算机生成实时动态的三维立体逼真图像。用户行为感知技术是指理想的虚拟现实系统可以获知用户所具有的一切感知。除计算机图形技术所生成的视觉感知外,还有听觉、触觉、力觉、运动等感知,甚至还包括嗅觉和味觉等,也称为多感知。
虚拟现实技术的广泛推广需要虚拟现实应用可以维持较高的帧率,以提供更接近实时的三维立体图像。
发明内容
根据本公开的至少一个实施例提供了一种显示场景处理方法,该方法包括:获取垂直同步信号;基于所述垂直同步信号,执行渲染线程以对第一半屏场景数据和第二半屏场景数据进行渲染,执行异步时间扭曲线程以对渲染后的第一半屏场景数据和第二半屏场景数据进行校正,以获得第一半屏场景校正数据和第二半屏场景校正数据。
例如,在至少一个实施例中,对第一半屏场景数据和所述第二半屏场景数据进行的渲染为多渲染目标渲染。
例如,在至少一个实施例中,执行渲染线程还包括:预测经过第一预定量的显示器刷新帧的时间之后的第一用户姿态数据,以及基于所述第一用户姿态数据进行渲染以获得所述渲染后的第一半屏场景数据和第二半屏场景数据。
例如,在至少一个实施例中,所述第一预定量的显示器刷新帧为N+0.5个显示器刷新帧,其中N大于等于1。
例如,在至少一个实施例中,执行异步时间扭曲线程包括:获得所述渲染后的第一半屏场景数据和第二半屏场景数据之后,预测用于所述第一半屏场景数据和所述第二半屏场景数据的显示帧的开始节点的第二用户姿态数据以及所述显示帧的结束节点的第三用户姿态数据;基于所述第二用户姿态数据和所述第三用户姿态数据对所述渲染后的第一半屏场景数据和第二半屏场景数据进行校正,以获得所述第一半屏场景校正数据和所述第二半屏场景校正数据。
例如,在至少一个实施例中,基于所述第二用户姿态数据和所述第三用户姿态数据对所述渲染后的第一半屏场景数据和第二半屏场景数据进行校正,包括:对所述第二用户姿态数据和所述第三用户姿态数据进行插值计算,以获得第一异步时间扭曲校正参照数据,然后基于所述第一异步时间扭曲校正参照数据对所述渲染后的第一半屏场景数据和第二半屏场景校正数据进行校正。
例如,在至少一个实施例中,执行异步时间扭曲线程包括:预测用于所述第一半屏场景数据和所述第二半屏场景数据的显示帧的开始节点后四分之一帧的用户姿态数据,以获得针对第一半屏的第二异步时间扭曲校正参照数据;基于所述第二异步时间扭曲校正参照数据对所述渲染后的第一半屏场景数据进行校正,以获得所述第一半屏场景校正数据;预测所述显示帧的开始节点后四分之三帧的用户姿态数据,以获得针对第二半屏的第三异步时间扭曲校正参照数据;基于所述第三异步时间扭曲校正参照数据对所述渲染后的第二半屏场景数据进行校正,以获得所述第二半屏场景校正数据。
例如,在至少一个实施例中,对所述第一半屏场景校正数据和所述第二半屏场景校正数据进行反畸变处理,获取第一半屏场景输出数据和第二半屏场景输出数据。
例如,在至少一个实施例中,执行所述渲染线程包括:并行地执行第一半屏渲染线程和第二半屏渲染线程,以分别对第一半屏场景数据和第二半屏场景数据进行渲染。
例如,在至少一个实施例中,执行所述异步时间扭曲线程包括:并行地执行第一异步时间扭曲线程和第二异步时间扭曲线程,以获得第一半屏场景校正数据和第二半屏场景校正数据。
例如,在至少一个实施例中,所述执行第一半屏渲染线程还包括:预测经过N+0.5个显示器刷新帧的时间之后的第四用户姿态数据,其中N大于等于1,以及基于所述第四用户姿态数据进行渲染以获得所述渲染后的第一半屏场景数据。
例如,在至少一个实施例中,所述执行第一异步时间扭曲线程还包括:获得所述渲染后的第一半屏场景数据之后,预测用于所述第一半屏场景数据和所述第二半屏场景数据的显示帧的开始节点的第五用户姿态数据以及所述显示帧的开始节点后半帧的第六用户姿态数据;基于所述第五用户姿态数据和所述第六用户姿态数据对所述渲染后的第一半屏场景数据进行校正,以获得所述第一半屏场景校正数据。
例如,在至少一个实施例中,还包括:基于所述第五用户姿态数据和所述第六用户姿态数据对所述渲染后的第一半屏场景数据进行校正,包括:对所述第五用户姿态数据和所述第六用户姿态数据进行插值计算,以获得针对第一半屏的第四异步时间扭曲校正参照数据,然后基于所述第四异步时间扭曲校正参照数据对所述渲染后的第一半屏场景数据进行校正。
例如,在至少一个实施例中,该显示场景处理方法还包括:对渲染后的第一半屏场景数据进行校正还包括:预测用于所述第一半屏场景数据和所述第二半屏场景数据的显示帧的开始节点后四分之一帧的用户姿态数据以获得针对第一半屏的第五异步时间扭曲校正参照数据;基于所述第五异步时间扭曲校正参照数据对所述渲染后的第一半屏场景数据通过异步时间扭曲进行校正,以获得所述第一半屏场景校正数据。
例如,在至少一个实施例中,执行所述第二半屏渲染线程还包括:预测经过N+0.5个显示器刷新帧的时间之后的第七用户姿态数据,其中N大于等于1,以及基于所述第七用户姿态数据进行渲染以获得所述渲染后的第二半屏场景数据。
例如,在至少一个实施例中,执行所述第二半屏异步时间扭曲线程还包括:获得所述渲染后的第二半屏场景数据之后,预测用于所述第一半屏场景数据和所述第二半屏场景数据的显示帧的开始节点后半帧的第八用户姿态数据和所述显示帧的结束节点的第九用户姿态数据;基于所述第八用户姿态数据和所述第九用户姿态数据对所述渲染后的第二半屏场景数据进行校正,以获得所述第二半屏场景校正数据。
例如,在至少一个实施例中,基于所述第八用户姿态数据和所述第九用户姿态数据对所述渲染后的第二半屏场景数据进行校正,包括:对所述第八用户姿态数据和所述第九用户姿态数据进行插值计算,以获得针对第二半屏的第六异步时间扭曲校正参照数据,然后基于所述第六异步时间扭曲校正参照数对所述渲染后的第二半屏场景数据进行校正。
例如,在至少一个实施例中,执行第二异步时间扭曲线程还包括:预测用于所述第一半屏场景数据和所述第二半屏场景数据的显示帧的开始节点后四分之三帧的用户姿态数据以获得针对第二半屏的第七异步时间扭曲校正参照数据;基于所述第七异步时间扭曲校正参照数据对所述渲染后的第二半屏场景数据进行校正,以获得所述第二半屏场景校正数据。
例如,在至少一个实施例中,该显示场景处理方法还包括:第一异步时间扭曲线程将所述第一半屏场景校正数据传递给第二异步时间扭曲线程;对所述第二半屏场景校正数据和所述第一半屏场景校正数据进行反畸变处理,获取第二半屏场景输出数据和第一半屏场景输出数据。
例如,在至少一个实施例中,所述反畸变处理至少为基于顶点位移、基于网格和基于片段中的至少一个。
例如,在至少一个实施例中,将所述第一半屏场景输出数据和所述第二半屏场景输出数据分别输出至第一半屏显示屏和第二半屏显示屏,以在用于所述第一半屏场景数据和所述第二半屏场景数据的显示帧中进行显示。
根据本公开的至少一个实施例提供了一种显示场景处理装置,包括:垂直同步信号获取模块,被配置为获取垂直同步信号;渲染模块,被配置为基于所述垂直同步信号,执行渲染线程以对第一半屏场景数据和第二半屏场景数据进行渲染,异步时间扭曲模块,被配置为执行异步时间扭曲线程以对渲染后的第一半屏场景数据和第二半屏场景数据进行校正,以获得第一半屏场景校正数据和第二半屏场景校正数据。
根据本公开的至少一个实施例提供了一种显示场景处理装置,包括:处理器和存储器,该存储器存储有计算机可执行指令,该计算机可执行指令由处理器执行时以进行上述的方法。
根据本公开的至少一个实施例提供了一种存储介质,存储有计算机可执行指令,该计算机可执行指令由处理器执行时以进行上述的方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的描述中所需要使用的附图作简单的介绍。下面描述中的附图仅仅是本公开的示例性实施例。
图1A是示出根据本公开的一些实施例的显示场景处理方法的示意图;
图1B是示出根据本公开的一些实施例的显示场景处理方法的流程图;
图2A是示出根据本公开的一些实施例的显示场景处理方法的示意图;
图2B是示出根据本公开的一些实施例的显示场景处理方法的示意图;
图3A是示出根据本公开的一些实施例的显示场景处理方法的渲染线程的流程图;
图3B是示出根据本公开的一些实施例的显示场景处理方法的异步时间扭曲线程的流程图;
图3C是示出根据本公开的一些实施例的显示场景处理方法的异步时间扭曲线程的流程图;
图4是示出根据本公开的一些实施例的显示场景处理方法的流程图;
图5A是示出根据本公开一些实施例的显示场景处理方法的示意图;
图5B是示出根据本公开一些实施例的显示场景处理方法的流程图;
图6是示出根据本公开的另一实施例的显示场景处理方法的流程图;
图7A示出根据本公开一些实施例的显示场景处理方法中,通过异步时间扭曲对渲染后的第一半屏场景数据进行校正的流程图;
图7B示出根据本公开一些实施例的显示场景处理方法中,通过异步时间扭曲对渲染后的第二半屏场景数据进行校正的流程图;
图8A是示出根据本公开又一些实施例的显示场景处理方法的,通过异步时间扭曲对渲染后的第一半屏场景数据进行校正的流程图;
图8B是示出根据本公开又一些实施例的显示场景处理方法的,通过异步时间扭曲对渲染后的第二半屏场景数据进行校正的流程图;
图9是示出根据本公开的另一些实施例的显示场景处理方法的流程图;
图10是示出根据本公开的另一些实施例的显示场景处理方法的示意图;
图11是示出根据本公开实施例的显示场景处理装置的框图。
具体实施方式
为了使得本公开的目的、技术方案和优点更为明显,下面将参照附图详细描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。基于本公开中描述的本公开实施例,本领域技术人员在没有付出创造性劳动的情况下所得到的所有其它实施例都应落入本公开的保护范围之内。
需要注意的是,在本说明书和附图中,具有基本上相同步骤和元素用相同的附图标记来表示,且对这些步骤和元素的重复描述将被省略。
根据示例性实施例,虚拟现实系统可以包括例如头戴式设备,诸如虚拟现实头盔、虚拟现实眼镜等,以根据用户的动作、感知等信息生成沉浸式的虚拟世界环境。然而,在使用虚拟现实头戴式设备时,如果用户运动过快,将造成场景渲染的延迟。例如,在用户快速转头时,虽然用户的头已经转过了预定位置而到达新位置,但是对应于该预定位置的图像还没有渲染出来,或者所渲染的图像仍然是上一帧的图像,因此用户所看到的图像与其所期待的新位置的图像并不一致,从而导致了显示图像的延迟以及用户的眩晕感。
为了减小显示场景中渲染图像延迟,部分虚拟现实设备采用了时间扭曲(Timewarp,TW)技术。时间扭曲技术是一种对图像帧进行修正的技术,其基于渲染之后用户动作的改变,通过扭曲(或校正)渲染之后的场景数据来解决场景渲染延迟问题。由于在进行时间扭曲处理的时刻更接近显示时刻,则经过时间扭曲处理得到新的显示图像更接近于用户希望看到的图像。同时,由于时间扭曲技术仅是对二维图像进行处理,其类似于图像处理中的仿射变换,其不会带来过大的系统工作量开销。通常,时间扭曲处理和渲染处理都是在同一个线程中,导致了该线程的处理时间过长,影响了对于图像延迟问题的解决。
为此,本申请的实施例提出了一种改进的显示场景处理方法,该显示场景处理方法使用了异步时间扭曲(Asynchronous Timewarp,ATW),其利用异步时间扭曲技术对图像延迟问题进行了进一步的优化。具体地,异步时间扭曲技术可以进一步优化上述的时间扭曲技术,其将渲染和时间扭曲分别安排在两个不同的线程中,以使得渲染步骤和时间扭曲步骤可以异步执行,从而减少渲染和时间扭曲处理的整体运行时间。例如,在虚拟现实应用不能保持足够的帧率的时候,异步时间扭曲线程会根据当前的用户姿态,对之前的渲染后的场景数据再进行处理,以产生符合当前的用户姿态的帧画面(中间帧),从而减少画面的抖动,以更好地降低延迟。
图1A是示出根据本公开的一些实施例的显示场景处理方法的示意图,图1B是示出根据本公开的一些实施例的显示场景处理方法的流程图。该方法可用于实现虚拟现实的场景渲染。
参考图1A,显示场景处理方法可以包括两个并行运行的线程,渲染线程和异步时间扭曲线程。例如,该显示场景处理方法可用于包括左眼显示屏与右眼显示屏的虚拟现实显示装置或增强现实显示装置,例如虚拟显示显示头盔、增强现实显示头盔等,该虚拟现实显示装置还可以包括例如陀螺仪、加速度传感器等的运动传感器、中央处理单元(CPU)、存储器、图像处理单元(GPU)、通信装置等。该方法例如可以通过用于该虚拟现实显示装置的中央处理单元或图像处理单元配合相应的计算机程序代码来执行,该虚拟现实显示装置可以采用各种适当的操作系统,例如安卓(Android)系统、Linux系统、Unix系统或视窗(Windows)系统等,下面以安卓系统为例进行说明,但是本公开的实施例对此不作限制。
渲染线程根据垂直同步信号,对第一半屏场景数据和第二半屏场景数据进行渲染,从而得到用户希望看见的画面。具体地,垂直同步信号(Vertical synchronization,Vsync)为施加至显示装置两帧之间的同步信号,其指示着前一帧的结束和下一帧的开始。在每进行一帧扫描之前,该信号就有效一次,由该信号可以确定显示装置的场频,即每秒屏幕的刷新次数,又可称为显示装置的刷新频率。例如,显示装置的刷新频率可以为60Hz、120Hz等,即每秒刷新60次、120次等,一个显示帧时间为1/60秒、1/120秒等。该垂直同步信号例如由显示驱动装置(例如显卡)产生,并用于在显示过程中同步显示一帧画面所需的栅极驱动信号、数据信号等。
如图1A所示,渲染线程将在循环A中完成第一半屏场景数据和第二半屏场景数据的渲染,并在完成渲染之后将渲染后的第一半屏场景数据和第二半屏场景数据发送到异步时间扭曲线程(例如图1A中的ATW)。
异步时间扭曲线程可以对渲染后的第一半屏场景数据和第二半屏场景数据进行校正,以得到第一半屏场景输出数据和第二半屏场景输出数据。更具体地,异步时间扭曲线程可以根据渲染后的第一半屏场景数据和第二半屏场景数据生成一个或多个中间帧。
在渲染线程无法在一个显示帧的时长中完成渲染并输出数据的情况下,异步时间扭曲线程将把通过异步时间扭曲所形成的中间帧输出至显示器,以减少用户的眩晕感。
参考图1B,以图1A中进行的渲染线程以及之后相应的异步时间扭曲线程中的步骤进行示意性的说明。该方法中,渲染线程至少包括以下两个步骤S110~S120:
步骤S110:获取垂直同步信号。
步骤S120:基于垂直同步信号,执行渲染线程以对第一半屏场景数据和第二半屏场景数据进行渲染。
在该方法中,首先获取垂直同步信号,然后基于该垂直同步信号,渲染线程(例如,图1A中的循环A)对第一半屏场景数据和第二半屏场景数据两者进行渲染。在循环A中完成对第一半屏场景数据和第二半屏场景数据的渲染之后,渲染线程还可以根据下一个垂直同步信号,在循环B中根据新的用户姿态,对新的第一半屏场景数据和第二半屏场景数据进行下一次的渲染。该第一半屏场景数据和第二半屏场景数据例如是从存储装置中读取预存的图像数据,例如对于虚拟现实显示装置,该预存的图像数据包括相应应用的图像数据,例如关于游览的博物馆、赛车游戏的赛道等图像数据。
可选地,第一半屏可以为显示用户左眼所看到的图像的屏幕,第二半屏可以为显示用户右眼所看的图像的屏幕。第一半屏场景数据可以包括用户左眼的视野中所应当呈现的对象的各个参数,而第二半屏场景数据可以包括用户右眼的视野中所应当呈现的对象的各个参数。如上所述,第一半屏和第二半屏的含义可以互换,并且该第一半屏和第二半屏可以为各种类型的显示屏,例如可以为液晶显示屏(LCD)、有机发光二极管显示屏(OLED)、微发光二极管(Micro-LED)显示屏等。这些显示装置例如通过逐行扫描等方式实现一帧显示图像的刷新。
为使得用户在使用虚拟现实设备时,虚拟现实设备所呈现的图像能够是该用户在视野中的所能观察到的所有对象,通常情况下需对用户视野范围内所有对象进行渲染。同时,需要给用户的左眼和右眼呈现不同的图像(也即是形成视差),然后用户的大脑将左右眼不同的图像进行合成,从而给用户呈现视觉上具有立体感的图像。由此,第一半屏场景数据和第二半屏场景数据中,对于同一对象的参数也可能不同。比如对于同一对象,左眼和右眼所观察到的该对象的位置,和光线通过该对象折射到左右眼的情况也可能会不同,因此,在本公开中,渲染线程在循环A中对第一半屏场景数据和第二半屏场景数据两者均进行渲染。采用这样的方式,相比于先对对象进行整体渲染再将渲染输出结果通过仿射变换分别输出至第一半屏和第二半屏,可以得到更加准确、立体感更强的图像。
可选地,对第一半屏场景数据和第二半屏场景数据进行的渲染为多渲染目标渲染。
多渲染目标渲染技术可以将多个像素的数据保存到不同的缓冲区(例如,用于颜色贴图的缓冲区、用于法线贴图的缓冲区和用于深度贴图的缓冲区)中,以使得这些数据成为后续的光照效果着色器的参数,使得输出的图像的精细度得以提高。通过多渲染目标渲染技术,可以延迟对光照信息的渲染,提高渲染的处理速度。同时,渲染线程在循环A中分别对第一半屏场景数据和第二半屏场景数据进行渲染,因此需要将第一半屏场景数据和第二半屏场景数据中的各个对象的像素数据分别保存到上述的缓存区,然后再在光照效果着色其中对上述数据进行解析,从而增强第一半屏和第二半屏中显示的图像的光照效果。相比于通常的利用光照着色器对于整个场景中的每个像素分别进行光照着色计算,在本公开的实施例中,利用渲染线程分别对第一半屏场景数据和第二半屏场景数据进行多渲染目标渲染可以减少处理器进行光照着色计算的运算次数,并可以获取增强的光照效果的图像。
此外,异步时间扭曲线程至少包括以下步骤:
步骤S130:执行异步时间扭曲线程以对渲染后的第一半屏场景数据和第二半屏场景数据进行校正,以获得第一半屏场景校正数据和第二半屏场景校正数据。
基于对于一帧显示画面的渲染时间与异步时间扭曲(ATW)处理时间的统计结果,渲染线程对于第一半屏场景数据和第二半屏场景数据进行渲染的总时长大约在半帧到一帧左右,而异步时间扭曲线程对渲染后的第一半屏场景数据和第二半屏场景数据进行校正的时间则可以小于半帧。从而,根据本公开的实施例的显示场景处理方法,渲染线程和异步时间扭曲对第一半屏场景数据和第二半屏场景进行处理的总时长可以在半帧到两帧左右。相比于通常使用的、利用时间扭曲技术来对图像帧进行修正来解决场景渲染延迟问题,本公开的实施例通过异步地执行渲染线程和异步时间扭曲线程,可以减少渲染线程和异步时间扭曲线程运行的总时间。
以下将进一步描述利用异步地执行渲染线程和异步时间扭曲线程来减少渲染线程和异步时间扭曲线程运行的总时间的一个或多个实施例。
目前,移动终端的处理器基本上都是采用多核多处理器的结构,例如ARM架构的各种版本的处理器,当然也可以为X86架构的各种版本的处理器等。为了更充分地利用各个处理器性能,根据本公开的一些实施例的显示场景处理方法可以在移动端虚拟现实应用运行过程中,对渲染线程和ATW线程的运行过程进行调整。
下面参考图2A和图2B进一步描述对渲染线程和ATW线程的运行过程进行调整的一些实施例。
图2A和图2B示出根据本公开的一些实施例的显示场景处理方法的示意图。该方法可用于实现虚拟现实的场景渲染。
参考图2A,渲染线程根据第一垂直同步信号确定其将进入渲染场景数据的循环A。
在循环A中,渲染线程对第一半屏场景数据和第二半屏场景数据分别串行地进行渲染。
在完成第一半屏场景数据和第二半屏场景数据的渲染之后,渲染线程触发异步时间扭曲线程(ATW),并通过与异步时间扭曲线程之间的线程通信,将渲染后的第一半屏场景数据和第二半屏场景数据发送到异步时间扭曲线程。然后,渲染线程等待下一个垂直同步信号(第二垂直同步信号),以进行下一个渲染场景数据的循环B。
异步时间扭曲线程在接收渲染后的第一半屏场景数据和第二半屏场景数据之后,对渲染后的第一半屏场景数据和第二半屏场景数据进行校正从而获得第一半屏场景输出数据和第二半屏场景输出数据。在完成校正之后,将第一半屏场景输出数据和第二半屏场景输出数据输出至显示屏,以在第三显示帧中显示。这里“显示帧”指代显示屏实际进行扫描以在显示屏上显示前述第一半屏场景数据和第二半屏场景数据的一帧时间,即用于第一半屏场景数据和第二半屏场景数据的显示帧。
由于各个虚拟现实显示装置的性能不同,因此处理渲染线程和异步时间扭曲线程的时间也不同。
在图2A的情况下,在一些实施例中,例如,图2A中渲染线程的循环A执行时长可以接近一帧的时长,这种情况下无法在第一显示帧中剩余的时间内完成异步时间扭曲的执行。此时,渲染线程在循环A中渲染的第一半屏场景数据和第二半屏场景数据将在完成异步时间处理后在两帧后(也即是图2A中的第三显示帧中)进行显示。由此,异步时间扭曲线程在图2A中的ATW-A这一执行区间,可以将渲染后的第一半屏场景数据和第二半屏场景数据分别扭曲至第三显示帧的前半帧的中间时刻和第三显示帧的后半帧的中间时刻用户可能看到图像,从而在第三显示帧中进行显示第一半屏场景校正数据和第二半屏场景校正数据。类似地,图2A中的渲染线程在循环B中渲染的第一半屏场景数据和第二半屏场景数据将在图2A中的第四显示帧中进行显示。
可以看到,由于渲染线程和异步时间扭曲线程分别在两个不同的线程中异步地执行,渲染线程在执行完循环A后即可开始准备执行循环B,而不需要等待时间扭曲处理执行完成。相比于通常的在一个线程里完成渲染和时间扭曲处理的方法,本公开的实施例中的显示场景处理方法节省了渲染线程等待时间扭曲处理的等待时长,提高了渲染线程和异步时间处理线程的运行效率,进一步减少渲染线程和异步时间扭曲线程运行的总时间。
再参考图2B,在一些实施例中,在处理的数据量较少和/或处理器的性能较为优越的情况下,例如,图2B中,渲染线程的循环A执行时长与对循环A的渲染结果执行异步时间扭曲的时长的和也可能小于一帧的时长。在图2B的情况下,渲染线程在循环A中渲染的第一半屏场景数据和第二半屏场景数据将在一帧后显示(也即是图2B中的第二显示帧)。
下面参考图3A、3B和3C进一步描述在图2A和图2B的情况下,对渲染线程和ATW线程的运行过程进行调整的一些实施例。
图3A是示出根据本公开的一些实施例的显示场景处理方法的渲染线程的流程图。
如图3A所示的根据本公开的一些实施例的显示场景处理方法中的渲染线程包括如下的步骤S310~S320:
步骤S310:预测经过第一预定量的显示器刷新帧的时间之后的第一用户姿态数据。
步骤S320:基于第一用户姿态数据进行渲染以获得渲染后的第一半屏场景数据和第二半屏场景数据。
步骤S310中的预测操作例如可以通过分析例如加速度传感器、陀螺仪等运动传感器反馈的运动数据,获得当前用户头部的运动状态,例如运动方向、速度、加速度等,进而预测用户在接下来预定时间点将到达的位置,由此预测用户将要看到的图像。例如,第一用户姿态数据以及下面描述中涉及的其他用户姿态数据可以包括用户所朝向的方向与角度、运动方向与角度、速度、加速度等之一或组合。例如,本公开的实施例中,该预测操作可以通过当前用户姿态,再根据用户姿态的历史数据,计算或预测给定时间之后的用户姿态,由此得到要显示时刻的用户姿态数据。计算或预测的方法包括且不限于利用神经网络进行预测。
可选地,第一预定量的显示器刷新帧为N+0.5个显示器刷新帧,其中N大于等于1。这里,术语“显示器刷新帧”即指代相应的显示装置在进行显示的扫描过程中的帧,以下也简称“帧”。
参考图2A,第一用户姿态数据可以是所预测的在第三显示帧的中间时刻T的用户姿态数据。
基于对于当前所使用的虚拟现实装置的一帧显示画面的渲染时间与异步时间扭曲(ATW)处理时间的统计结果,上述N的取值可以不同。
例如,参考图2A,假设处理循环A和对循环A的渲染结果执行异步时间扭曲的时长的和大于一个显示帧的时长,则N优选地可以为2。如上所述,渲染线程在循环A中渲染的第一半屏场景数据和第二半屏场景数据将在两帧后(也即是图2A中的第三显示帧中)进行显示。当N为2时,渲染线程的循环A可以基于第三显示帧的中间时刻(也即是自第一垂直同步信号起2.5帧后)的第一用户姿态数据对第一半屏场景数据和第二半屏场景数据进行渲染,从而使得用户可以在第三显示帧时看到其期望看到的图像。
又例如,参考图2B,假设处理循环A和对循环A的渲染结果执行异步时间扭曲的时长的和小于一个显示帧的时长,则N优选地可以为1。如上所述,渲染线程在循环A中渲染的第一半屏场景数据和第二半屏场景数据将在一帧后(也即是图2B中的第二显示帧中)进行显示。当N为1时,渲染线程的循环A可以基于第二显示帧的中间时刻(也即是自第一垂直同步信号起1.5帧后)的第一用户姿态数据对第一半屏场景数据和第二半屏场景数据进行渲染,从而使得用户可以在第二显示帧时看到所期望看到的图像。
上述N的取值仅作为示例。N的取值可以是一个根据CPU的性能所确定的一个固定值,同时也可以基于当前虚拟现实装置的实际使用情况被动态地调整。例如,在虚拟现实装置的CPU的计算量较大和/或其他线程占用了较大的CPU资源的情况下,渲染线程可能会花费更长的时间来进行处理。在这样的情况下,可以动态地将N的取值调整为较大值,使得渲染的场景数据更接近于应该显示的时刻。同样地,在虚拟现实装置的CPU的计算量较小和/或其他线程占用了较小的CPU资源的情况下,也可以动态地将N的取值调整为较小值。
图3B是示出根据本公开的一些实施例的显示场景处理方法的异步时间扭曲线程的流程图。
如图3B所示的显示场景处理方法中的异步时间扭曲线程包括如下的步骤S330~S340:
步骤S330:获得渲染后的第一半屏场景数据和第二半屏场景数据之后,预测显示帧的开始节点的第二用户姿态数据以及显示帧的结束节点的第三用户姿态数据。
步骤S340:基于第二用户姿态数据和第三用户姿态数据对渲染后的第一半屏场景数据和第二半屏场景数据进行校正,以获得第一半屏场景校正数据和第二半屏场景校正数据。
可选地,基于第二用户姿态数据和第三用户姿态数据对渲染后的第一半屏场景数据和第二半屏场景数据进行校正,包括:对第二用户姿态数据和第三用户姿态数据进行插值计算,以获得第一异步时间扭曲校正参照数据,然后基于第一异步时间扭曲校正参照数据对渲染后的第一半屏场景数据和第二半屏场景校正数据进行校正。
参考图2A,第二用户姿态数据可以是所预测的在第三显示帧的开始节点Ts的用户姿态数据。第三用户姿态数据可以是所预测的在第三显示帧的结束节点Te的用户姿态数据。
根据本公开一些实施例的显示场景处理方法的异步时间扭曲线程可以对即将输出的第一半屏场景数据和第二半屏场景数据进行更精确的修正。比如,将第一半屏场景数据和第二半屏场景数据通过像素电压信号输出并显示到屏幕过程中,通常是从左至右或从右至左的依次横向扫描显示器的像素点。因此,通常情况下,在前半帧中可以完成第一半屏的像素点的处理,而在后半帧中可以完成第二半屏的像素点的处理。在这样的情况下,通过对渲染后的第一半屏场景数据和渲染后的第二半屏场景数据进行异步时间扭曲处理,可以将渲染后的第一半屏场景数据校正成更接近于前半帧的输出显示图像,同样将第二半屏场景数据校正成更接近于后半帧的输出显示图像,从而进一步减少输出画面的延迟、提升用户体验。
再次参考图2A,假设处理循环A和对循环A的渲染结果执行异步时间扭曲的时长的和大于一个显示帧的时长,则经渲染线程的循环A和ATW处理的第一半屏场景数据和第二半屏场景数据将在第三显示帧的前半帧中完成校正后的第一半屏场景数据的像素点输出处理,而在第三显示帧的后半帧中完成校正后的第二半屏场景数据的像素点输出处理。同理,经渲染线程的循环B和ATW处理的第一半屏场景数据和第二半屏场景数据将在第四显示帧的前半帧中完成校正后的第一半屏场景数据的像素点输出处理,而在第四显示帧的后半帧中完成校正后的第二半屏场景数据的像素点输出处理。此刻,异步时间扭曲线程可以预测第三显示帧的开始节点Ts(时刻)的第二用户姿态数据以及第三显示帧的结束节点Te(时刻)的第三用户姿态数据。然后根据虚拟现实装置的设置,通过对第二用户姿态数据和第三用户姿态数据进行插值计算,获取在第三显示帧中的各个中间帧的用户姿态数据,也即是第一异步时间扭曲校正参照数据。基于第一异步时间扭曲校正参照数据,异步时间扭曲线程可以将图2A中渲染线程的循环A中所生成的第一半屏场景数据(该数据是基于第三显示帧的中间时刻的)扭曲到第三显示帧的前半帧的中间时刻应显示的图像上,同样地,将图2A中渲染线程的循环A中所生成的第二半屏场景扭曲到第三显示帧的后半帧的中间时刻应显示的图像上。
类似地,在图2B中,基于第一异步时间扭曲校正参照数据,异步时间扭曲线程可以将图2B中渲染线程的循环A中所生成的第一半屏场景数据(该数据是基于第二显示帧的中间时刻的)扭曲到第二显示帧的前半帧的中间时刻应显示的图像上,同样地,将图2B中渲染线程的循环A中所生成的第二半屏场景扭曲到第二显示帧的后半帧的中间时刻应显示的图像上。同理,图2B染线程的循环B中所生成的第一半屏场景数据(该数据是基于第三显示帧的中间时刻的)扭曲到第三显示帧的前半帧的中间时刻应显示的图像上,同样地,将图2B中渲染线程的循环A中所生成的第二半屏场景扭曲到第三显示帧的后半帧的中间时刻应显示的图像上。
需要注意的是,由于执行渲染线程的时长并非一个完全固定的值,也可能出现渲染线程所用时间过长的情况。在这种情况下,可能出现第M个显示帧中所显示的画面为基于第M-k帧(k大于等于1)的用户姿态数据而渲染的第一半屏场景数据和第二半屏场景数据。此时,异步时间扭曲线程可以将基于第M-k帧的用户姿态数据而渲染的第一半屏场景数据校正到第M帧的前半帧应输出的画面上,并将第二半屏场景数据矫正到第M帧的后半帧应输出的画面上。
图3C是示出根据本公开的一些实施例的显示场景处理方法的异步时间扭曲线程的流程图。
如图3C所示的显示场景处理方法中的异步时间扭曲线程包括如下的步骤S331~S361:
步骤S331:预测显示帧的开始节点后四分之一帧的用户姿态数据,以获得针对第一半屏的第二异步时间扭曲校正参照数据。
步骤S341:基于第二异步时间扭曲校正参照数据对渲染后的第一半屏场景数据进行校正,以获得第一半屏场景校正数据。
步骤S351:预测显示帧的开始节点后四分之三帧的用户姿态数据,以获得针对第二半屏的第三异步时间扭曲校正参照数据。
步骤S361:基于第三异步时间扭曲校正参照数据对渲染后的第二半屏场景数据进行校正,以获得第二半屏场景校正数据。
与图3B中所示的执行显示场景处理方法的异步时间扭曲线程相比,图3C中执行异步时间扭曲的方法采取获取绝对时刻的用户数据姿态数据的方法,以代替插值运算,从而减少运算量。
参考图2A,假设将在第三显示帧的前半帧中完成校正后的第一半屏场景数据的像素点输出处理。在这样的情况下,可以将经渲染处理的第一半屏场景图像(该渲染图像是基于自垂直同步信号起1.5帧左右的用户姿态数据)直接校正到用户在自该垂直同步信号起1.25帧所应该看到的第一半屏场景校正图像。同时,可以将经渲染处理的第二半屏场景图像(该渲染图像是基于自第一垂直同步信号起1.5帧左右的用户姿态数据)直接校正到用户在自该垂直同步信号起1.75帧所应该看到的第二半屏场景校正图像。从而,使得第一半屏和第二半屏输出的场景图像更接近于用户所期待的画面,减少了画面的撕裂感。
此外,在将第一半屏场景校正数据和第二半屏场景校正数据输出到屏幕之前还可以对其进行反畸变处理。
反畸变处理是一种将扭曲的图像修正成正常图像的技术。具体地,通常在虚拟现实的应用场景中,特别是头戴式虚拟显示装置中,为了获取更大的视场角,会需要在显示屏前方安装一个透镜。这个透镜的使用在带来更大的视场角的同时,也带来了所显示的图像的畸变。因此,在第一半屏和第二半屏使用第一半屏场景校正数据和第二半屏场景校正数据显示,还需要对第一半屏场景校正数据和第二半屏场景校正数据进行反畸变处理以消除透镜带来的影响,从而使用户看到的图像更为真实。
可选地,反畸变处理至少可以为基于顶点位移、基于网格和基于片段中的至少一个。
例如,基于片段(pad)的反畸变处理是通过二次渲染将第一半屏场景图像和第二半屏场景图像中的像素渲染到纹理上,然后用片段(像素)着色器(例如安卓系统中的相关例程)处理这个纹理,将每一个像素向内移动到眼睛的中心上,从而解决了透镜镜头畸变的问题。
例如,基于网格的反畸变处理则不再是对每个像素进行反畸变处理,而是对网格中的一个或多个网格的顶点进行反畸变处理,从而提高了反畸变处理的速率。
例如,基于顶点位移的反畸变处理则是通过优化着色器(例如安卓系统中的相关例程)来处理场景数据,而不再对场景数据进行二次渲染,能更快地完成反畸变处理。
通常,对于第一半屏和第二半屏而言,畸变网络的调整方式和调整矩阵是相同或类似的。因此对于第一半屏场景输出数据和第二半屏场景输出数据可以仅需要计算一个畸变网络。在一个线程中计算该畸变网络以对第一半屏场景输出数据和第二半屏场景输出数据一起进行反畸变处理相比于分开对第一半屏场景输出数据和第二半屏场景输出数据进行反畸变而言,处理时间更短,更有利于减少图像延迟。
图4是示出根据本公开的一些实施例的显示场景处理方法的流程图。
参考图4,以第一帧中进行的渲染线程A以及之后相应的ATW中的步骤进行示意性的说明。渲染线程至少包括以下三个步骤S410~S430:
步骤S410:预测2.5帧之后的用户姿态。
可选地,步骤S410可以通过调用相应的程序来处理,例如,安卓系统中用于处理用户姿态预测的例程SensorPredicted。假设渲染线程和异步时间扭曲处理该用户姿态所对应的场景数据的线程所需的总时长大于一个显示帧的时长。从而,在该流程中,与第一半屏的渲染线程A对应的第一半屏的显示帧在2帧的时间后开始扫描,则选择该显示帧开始后的半帧(0.5帧)时间点进行渲染,平均而言可预测用户在实际的显示帧过程中的动作。因此,为了更好地使得显示帧中显示的场景更接近实际时刻用户所面对的场景,可至少需要预测2.5帧后的用户姿态以用于后续渲染线程的处理。
步骤S420:根据用户姿态信息对场景数据进行渲染。
可选地,步骤S420可以通过调用相应的程序来处理,例如安卓系统中用于渲染左右眼所看见的场景的例程DrawTwoEyes。
参考图2A,在渲染线程A中,基于步骤S410中所获得的2.5帧后的用户姿态数据,对将在第三显示帧中显示的第一半屏和第二半屏的场景数据进行渲染。
步骤S430:将渲染后的场景数据传递给ATW线程,并等待下一个垂直同步信号。
可选地,步骤S430可以通过调用相应的程序来处理,例如安卓系统中用于渲染线程和异步时间扭曲的线程之间的通信的例程WarpSwap。
继续参考图4,ATW线程至少包括以下步骤S440~S470:
步骤S440:首次创建ATW线程。
在尚未运行过ATW线程的情况下,需要创建ATW线程,否则跳过创建ATW线程的步骤,而运行已经创建的ATW线程。另外,当首次创建ATW线程时,需要通过调用相应的程序(例如WarpThreadInit参数)对ATW线程进行初始化(步骤S440)。若非首次创建ATW线程,则可以进入步骤S450。
步骤S450:获取垂直同步信号。
可选地,步骤S450可以通过调用相应的程序来处理,例如安卓系统中的例程GetVsyne。通过GetVsyne例程运行,可以获取例如由显示驱动装置产生的垂直同步信号,用于判断此刻处于哪个显示帧(例如,相对于参考时间点(之前某个选择的垂直同步信号的时间点)后多少个帧的时间)。
渲染线程和ATW线程需要基于同一个垂直同步信号以对同一半屏的场景数据进行处理,即通过垂直同步信号实现同步。因此ATW线程需要知道渲染线程所渲染的数据是基于哪个垂直同步信号的,以确定需要对经渲染线程渲染的场景数据进行修正的数据量。当然,关于该垂直同步信号的信息也可以由渲染线程直接通知给ATW线程。
步骤S460:通知渲染线程渲染下一帧图像。
可选地,在步骤S460中,ATW线程可以通过,例如,Pthread_cond_signal信号向渲染线程告知其已经获知了需要修正的场景渲染数据以及垂直同步信号,从而渲染线程可以知道其可以渲染下一帧的场景数据了。这个步骤是为了避免渲染线程在还未将渲染数据完全传输给ATW线程之前就开始下一帧的渲染,从而导致数据的缺失/错误。同时,步骤S460还进入到下一步骤S470。
步骤S470:修正第一半屏场景数据和第二半屏场景数据并将其分别输出到第一半屏和第二半屏。
可选地,步骤S470可以通过调用相应的程序来处理,例如安卓系统中的用于将场景数据输入到屏幕的例程WarpToScreen,从而在第一半屏和第二半屏上显示图像。
如上所述,ATW线程可以将渲染后的第一半屏场景数据进行修正以将渲染后的第一半屏场景数据校正成更接近于前半帧的输出显示图像,而将第二半屏场景数据校正成更接近于后半帧的输出显示图像,从而进一步减少输出画面的延迟、提升用户体验。
在上述过程中,基于安卓系统的刷新显示机制下,从获取到用户的姿态开始,预测用户的姿态,进行渲染与ATW,直到最终显示图像至屏幕结束至少需要耗费3帧的时间,该时间如果能够进一步压缩,将进一步减小图像延迟问题,提供更好的虚拟现实显示效果或增强现实显示效果。
本公开的实施例还提出了一种显示场景的处理方法,以进一步优化输出图像的延迟,提供更好的虚拟现实显示效果或增强现实显示效果。
现通过图5A~图10进一步描述根据本公开的一些实施例的可应用于虚拟现实场景输出的方法。
图5A是示出根据本公开一些实施例的显示场景处理方法的示意图。图5B是示出根据本公开一些实施例的显示场景处理方法的流程图。
参考图5A,显示场景处理方法可以包括四个并行运行的线程,第一半屏场景渲染线程、第二半屏场景渲染线程、第一异步时间扭曲线程和第二异步时间扭曲线程。
第一半屏渲染线程和第二半屏渲染线程根据垂直同步信号,并行地对第一半屏场景数据和第二半屏场景数据进行渲染,从而得到用户希望看见的画面。通过并行地运行第一半屏渲染线程和第二半屏渲染线程,可以大大地缩减渲染线程的时长。这在包括多核处理器的虚拟现实装置中将是有利的。例如,图5A中循环A1和A2的运行时长将远远小于图1A中循环A的运行时长。
第一半屏渲染线程将渲染后的第一半屏场景数据发送到第一异步时间扭曲线程。同样地,第二半屏渲染线程将渲染后的第二半屏场景数据发送到第一异步时间扭曲线程。
第一异步时间扭曲线程可以对渲染后的第一半屏场景数据进行校正,以得到第一半屏场景输出数据。同样地,第二异步时间扭曲线程可以对渲染后的第二半屏场景数据进行校正,以得到第二半屏场景输出数据。更具体地,第一异步时间扭曲线程(或第二异步时间扭曲线程)可以根据渲染后的第一半屏场景数据(或第二半屏场景数据)生成一个或多个中间帧。在无法在一个显示帧的时长中完成渲染并输出数据的情况下,将通过异步时间扭曲所形成的中间帧输出至显示器,减少用户的眩晕感。
参考图5B,根据本公开实施例的显示场景处理方法,该实施例的显示场景处理方法包括如下的步骤S510~步骤S530。
步骤S510:获取垂直同步信号。
步骤S520:并行地执行第一半屏渲染线程和第二半屏渲染线程,以分别对第一半屏场景数据和第二半屏场景数据进行渲染。
步骤S530:并行地执行第一异步时间扭曲线程和第二异步时间扭曲线程,以获得第一半屏场景校正数据和第二半屏场景校正数据。
例如,根据本公开实施例的显示场景处理方法通过将渲染线程划分为第一半屏渲染线程和第二半屏渲染线程,并且并行地执行这两个线程,使得显示装置能够在较短的时间内完成原本需要花费两倍时间来完成的第一半屏场景数据和第二半屏场景数据的渲染操作。
例如,可选地,第一半屏渲染线程和第二半屏渲染线程被分配给显示装置不同的处理器或处理器的不同核心以并行执行,从而进一步缩短这两个线程的运行时间。
可选地,通过异步时间扭曲并行地对渲染后的第一半屏场景数据和第二半屏场景数据分别进行校正,且该两个异步时间扭曲线程也可以分摊到多个处理器或处理器的多个核心上并行执行,从而进一步缩短异步时间扭曲处理的运行时间。
下面,通过图6进一步描述根据本公开的另一些实施例的可应用于虚拟现实场景输出的方法。
图6是示出根据本公开的另一实施例的显示场景处理方法的流程图。
参考图6,根据本公开实施例的显示场景处理方法,同样,该显示场景处理方法例如用于包括左眼显示屏与右眼显示屏的虚拟现实显示装置。该显示场景处理方法包括如下的步骤S6100~S6500:
步骤S6100:获取垂直同步信号。
步骤S6200:基于垂直同步信号,并行地执行第一半屏渲染线程和第二半屏渲染线程以分别对第一半屏场景数据和第二半屏场景数据进行渲染。
步骤S6300:并行地执行第一异步时间扭曲线程和第二异步时间扭曲线程,以获得第一半屏场景校正数据和第二半屏场景校正数据。
步骤S6400:对第二半屏场景校正数据和第一半屏场景校正数据进行反畸变处理,获取第二半屏场景输出数据和第一半屏场景输出数据。
步骤S6500:将第一半屏场景输出数据和第二半屏场景输出数据分别输出至第一半屏显示屏和第二半屏显示屏,以在显示帧中进行显示。
在该方法中,同样地,首先获取垂直同步信号,然后基于该垂直同步信号,在一帧扫描时间中开始并行地执行第一半屏渲染线程和第二半屏渲染线程以分别对第一半屏场景数据和第二半屏场景数据进行渲染。该第一半屏场景数据和第二半屏场景数据例如是从存储装置中读取预存的图像数据。
继续参照图6,在该方法的示例中,步骤S6200进一步包括步骤S6210和步骤S6220,其中,在步骤S6210中执行第一半屏渲染线程,而在步骤S6220中执行第二半屏渲染线程。
例如,步骤S6210可以进一步包括:
步骤S6211:预测经过N+0.5个显示器刷新帧的时间之后的第四用户姿态数据,其中N大于等于1。
步骤S6212:基于第四用户姿态数据进行渲染以获得渲染后的第一半屏场景数据。
可选地,由于第一半屏渲染线程仅需要渲染第一半屏场景数据,因此其处理的时长会小于上述参考图1A、图2A和图2B的在同一线程中渲染双屏的场景数据的时长。经统计,进行一个半屏的渲染处理的时长与异步时间处理的时长通常会小于一帧的时长。在该获取的垂直同步信号的下一显示器刷新帧中能够输出经过渲染和校正处理的第一半屏场景数据。因此,第一半屏渲染线程仅需预测自该垂直同步信号起1.5帧之后的用户姿态以用于后续渲染线程的处理。此时,N优选地为1。
步骤S6300:进一步包括步骤S6310和步骤S6320。在步骤S6310,对渲染后的第一半屏场景数据进行校正,而在步骤S6320中,对渲染后的第二半屏场景数据进行校正。
例如,步骤S6310可以进一步包括如下的子步骤:
步骤S6311:通过异步时间扭曲对渲染后的第一半屏场景数据进行校正。
步骤S6312:将第一半屏场景校正数据传递给第二半屏场景校正线程。
例如,步骤S6220可以进一步包括如下的子步骤:
步骤S6221:预测经过N+0.5个显示器刷新帧的时间之后的第七用户姿态数据,其中N大于等于1。
步骤S6222:基于第七用户姿态数据进行渲染以获得渲染后的第二半屏场景数据。
可选地,与步骤S6212类似地,N优选地可以为1。
可选地,步骤S6211和步骤S6221中,基于第四用户姿态数据或第七用户姿态数据进行的渲染可以为多渲染目标渲染。
例如,步骤S6320可以进一步包括如下的子步骤:
步骤S6321:通过异步时间扭曲对渲染后的第二半屏场景数据进行校正。
步骤S6322:接收第一半屏场景校正数据。
现通过图7A和图7B进一步描述根据本公开的一些实施例通过异步时间扭曲对渲染后的场景数据进行校正的方法。
图7A示出根据本公开一些实施例的显示场景处理方法中,通过异步时间扭曲对渲染后的第一半屏场景数据进行校正的流程图;图7B示出根据本公开一些实施例的显示场景处理方法中,通过异步时间扭曲对渲染后的第二半屏场景数据进行校正的流程图。
例如,参考图7A,用于通过异步时间扭曲对渲染后的第一半屏场景数据进行校正的步骤(例如,图6中实施例的步骤S6311)可以进一步包括如下的子步骤:
步骤S710A:获得渲染后的第一半屏场景数据之后,预测显示帧的开始节点的第五用户姿态数据以及显示帧的开始节点后半帧的第六用户姿态数据。
步骤S720A:基于第五用户姿态数据和第六用户姿态数据对渲染后的第一半屏场景数据进行校正,以获得第一半屏场景校正数据。
可选地,为了基于第五用户姿态数据和第六用户姿态数据对渲染后的第一半屏场景数据进行校正,可以对第五用户姿态数据和第六用户姿态数据进行插值计算,以获得针对第一半屏的第四异步时间扭曲校正参照数据,然后基于第四异步时间扭曲校正参照数据对渲染后的第一半屏场景数据进行校正。
根据本公开的一些实施例,假设在进行扫频输出的前半帧时间中完成第一半屏的像素点处理,则在这样的情况下,对于渲染后的第一半屏场景数据进行异步时间处理时可以将渲染后的第一半屏场景数据校正成更接近预定显示帧的前半帧的显示图像。例如,通过预测显示帧的开始节点的第五用户姿态数据以及显示帧的开始节点后半帧的第六用户姿态数据,并对其进行插值计算,从而可以获取大约自步骤S6100中的垂直同步信号起1.25帧左右的用户姿态数据。该插值计算例如可以为将第五用户姿态数据和第六用户姿态数据采用预定插值函数进行计算以得到它们的中间值,即第一异步时间扭曲校正参照数据。例如,该中间值可以为二者的平均值,即插值函数为线性函数。
通过异步时间处理,可以将经渲染处理的第一半屏场景图像(该渲染图像是基于自垂直同步信号起1.5帧左右的用户姿态数据)校正到用户在自该垂直同步信号起1.25帧所应该看到的第一半屏场景校正图像。从而,使得第一半屏输出的场景图像更接近于用户所期待的画面,减少了画面的撕裂感。
例如,参考图7B,用于通过异步时间扭曲对渲染后的第二半屏场景数据进行校正的步骤(例如,图6中实施例的步骤S6321)可以进一步包括如下的子步骤:
步骤S710B:获得渲染后的第二半屏场景数据之后,预测显示帧的开始节点后半帧的第八用户姿态数据和显示帧的结束节点的第九用户姿态数据。
步骤S720B:基于第八用户姿态数据和第九用户姿态数据对渲染后的第二半屏场景数据进行校正,以获得第二半屏场景校正数据。
可选地,为了基于第八用户姿态数据和第九用户姿态数据对渲染后的第二半屏场景数据进行校正,可以对第八用户姿态数据和第九用户姿态数据进行插值计算,以获得针对第二半屏的第六异步时间扭曲校正参照数据,然后基于第六异步时间扭曲校正参照数对渲染后的第二半屏场景数据进行校正。
根据本公开的一些实施例,假设在后半帧中完成第二半屏的像素点处理,则在这样的情况下,对于渲染后的第二半屏场景数据进行异步时间处理时可以将渲染后的第二半屏场景数据校正成更接近预定显示帧的后半帧的显示图像。例如,通过预测显示帧的开始节点后半帧的第八用户姿态数据和显示帧的结束节点的第九用户姿态数据,并对其进行插值计算,从而可以获取大约自步骤S6100中的垂直同步信号起1.75帧左右的用户姿态数据。
通过异步时间扭曲处理,可以将渲染后的第二半屏场景图像(该渲染图像是基于自垂直同步信号起1.5帧左右的用户姿态数据)校正到用户在自该垂直同步信号起1.75帧所应该看到的第二半屏场景校正图像。从而,使得第二半屏输出的场景图像更接近于用户所期待的画面,减少了画面的撕裂感。
现通过图8A和图8B进一步描述根据本公开的又一些实施例通过异步时间扭曲对渲染后的场景数据进行校正的方法。
图8A是示出根据本公开又一些实施例的显示场景处理方法的,通过异步时间扭曲对渲染后的第一半屏场景数据进行校正的流程图;图8B是示出根据本公开又一些实施例的显示场景处理方法的,通过异步时间扭曲对渲染后的第二半屏场景数据进行校正的流程图。
例如,参考图8A,用于通过异步时间扭曲对渲染后的第一半屏场景数据进行校正的步骤(例如,图6中实施例的步骤S6311)可以进一步包括如下的子步骤:
步骤S810A:预测显示帧的开始节点后四分之一帧的用户姿态数据以获得针对第一半屏的第五异步时间扭曲校正参照数据。
步骤S820A:基于第五异步时间扭曲校正参照数据对渲染后的第一半屏场景数据通过异步时间扭曲进行校正,以获得第一半屏场景校正数据。
根据本公开的实施例,假设在前半帧中完成第一半屏的像素点处理。在这样的情况下,对于渲染后的第一半屏场景数据进行异步时间处理时可以将渲染后的第一半屏场景数据校正成更接近预定显示帧的前半帧的输出显示图像。比如,可以将经渲染处理的第一半屏场景图像(该渲染图像是基于自垂直同步信号起1.5帧左右的用户姿态数据)直接校正到用户在自该垂直同步信号起1.25帧所应该看到的第一半屏场景校正图像。从而,使得第一半屏输出的场景图像更接近于用户所期待的画面,减少了画面的撕裂感。
例如,参考图8B,用于通过异步时间扭曲对渲染后的第二半屏场景数据进行校正的步骤(例如,图6中的步骤S6321)可以进一步包括如下的子步骤:
步骤S810B:预测显示帧的开始节点后四分之三帧的用户姿态数据以获得针对第二半屏的第七异步时间扭曲校正参照数据。
步骤S820B:基于第七异步时间扭曲校正参照数据对渲染后的第二半屏场景数据进行校正,以获得第二半屏场景校正数据。
根据本公开的实施例,假设在后半帧中完成第二半屏的像素点处理。在这样的情况下,对于渲染后的第二半屏场景数据进行异步时间处理时可以将渲染后的第二半屏场景数据校正成更接近预定显示帧的后半帧的输出显示图像。比如,可以将经渲染处理的第二半屏场景图像(该渲染图像是基于自垂直同步信号起1.5帧左右的用户姿态数据)直接校正到用户在自该垂直同步信号起1.75帧所应该看到的第二半屏场景校正图像。从而,使得第二半屏输出的场景图像更接近于用户所期待的画面,减少了画面的撕裂感。
现通过图9和图10进一步描述根据本公开的实施例的可应用于虚拟现实场景输出的方法。
图9是示出根据本公开的另一些实施例的显示场景处理方法的流程图,图10是示出根据本公开的另一些实施例的显示场景处理方法的示意图。
参考图9,根据本公开的另一实施例的显示场景处理方法可以包括渲染线程和异步时间扭曲线程(以下简称ATW线程)。
同时,参考图10,在第一垂直同步信号之后的一帧时间内,并行进行用于第一半屏渲染线程A和用于第二半屏渲染线程B,以及用于渲染后的第一半屏场景数据的异步时间扭曲线程ATW-A和用于渲染后的第二半屏场景数据的异步时间扭曲线程ATW-B。
在第二垂直同步信号之后的一帧时间内,基于前述渲染线程A、渲染线程B和ATW-A、ATW-B线程获得的显示数据,进行第一半屏和第二半屏的扫屏。从获取到用户的姿态开始,预测用户的姿态,进行渲染与ATW,直到最终显示图像至屏幕结束需要耗费2帧的时间,与串行执行第一半屏渲染线程和第二半屏渲染线程的方法相比,可以减少至少1帧的时间。
参考图9,渲染线程至少包括以下步骤:
步骤S910:首次创建第一半屏渲染线程和第二半屏渲染线程。
相同地,本实施例的方法中,首先获取垂直同步信号,即图10所示的第一垂直同步信号。这里,第一半屏可以为显示用户左眼所看到的图像的屏幕,第二半屏可以为显示用户右眼所看的图像的屏幕。当然,第一半屏和第二半屏的含义可以互换。
可选地,步骤S910可以通过调用相应的程序来处理,例如安卓系统中用于创建线程的例程Create。
步骤S920:初始化第一半屏渲染线程和第二半屏渲染线程。
可选地,步骤S920可以通过调用相应的程序来处理,例如安卓系统中用于初始化线程的例程Init。
在之前已经创建过第一半屏渲染线程和第二半屏渲染线程的情况,则可以跳过步骤S910和S920,而进入运行第一半屏渲染线程和第二半屏渲染线程的步骤。
步骤S930:第一半屏渲染线程和第二半屏渲染线程分别预测经过N+0.5的显示器刷新帧的时间之后的用户姿态,其中N大于等于1。
可选地,步骤S930可以通过调用相应的程序来处理,例如安卓系统中用于预测用户姿态数据的例程SensorPredicted。
参考图10,假设渲染线程在获取第一垂直同步信号之后,开始后续的渲染处理。由于第一半屏渲染线程和第二半屏渲染线程仅需要渲染半屏的场景数据,因此其处理的时长会小于上述在同一线程中渲染双屏的场景数据的时长。进行渲染处理的时长与异步时间处理的时长可以小于一个显示帧的时长。因此,在第二显示帧中即可显示通过第一半屏渲染线程在循环A1中和第二半屏渲染线程在循环A2中得到的渲染数据。因此,第一半屏渲染线程的循环A1和第二半屏渲染线程的循环A2仅需预测1.5帧之后的用户姿态以用于后续渲染线程的处理。
步骤S940:根据用户姿态信息分别对第一半屏场景数据和第二半屏场景数据进行渲染。
可选地,步骤S940可以通过调用相应的程序来处理,例如安卓系统中用于渲染场景数据的例程DrawTwoEyes。
参考图10,在第一半屏场景渲染线程的循环A1中,基于步骤SensorPredicted中所获得的1.5帧后的用户姿态数据,对将在第二显示帧中显示的第一半屏场景数据进行渲染。在第二半屏场景渲染线程的循环A2中,基于步骤SensorPredicted中所获得的1.5帧后的用户姿态数据,对将在第二显示帧中显示的第二半屏场景数据进行渲染。
继续参考图9,ATW线程至少包括以下步骤:
步骤S950:第一半屏ATW线程和第二半屏ATW线程分别校正第一半屏场景数据和第二半屏场景数据。
可选地,步骤S950可以通过调用相应的程序来处理,例如安卓系统中用于通过异步时间扭曲来校正场景数据的例程TimeWarp。
如上所述,假设在前半帧中完成第一半屏的像素点处理,则可以将经渲染处理的第一半屏场景图像(该渲染图像是基于自垂直同步信号起1.5帧左右的用户姿态数据)校正到用户在自该垂直同步信号起1.25帧所应该看到的第一半屏场景校正图像。假设在后半帧中完成第二半屏的像素点处理,则可以将经渲染处理的第二半屏场景图像(该渲染图像是基于自垂直同步信号起1.5帧左右的用户姿态数据)校正到用户在自该垂直同步信号起1.75帧所应该看到的第二半屏场景校正图像。从而,使得第一半屏输出的场景图像和第一半屏输出的场景图像更接近于用户所期待的画面,减少了画面的撕裂感。
步骤S960:第一半屏ATW线程将经时间扭曲处理的第一半屏场景数据传输到第二半屏ATW线程。
可选地,步骤S960可以通过调用相应的程序来传递校正后的第一半屏场景数据,例如安卓系统中用于通过眼数据缓存(Eye Buffer)来传递渲染后的场景数据的例程EyeBuffer。
若应用并未结束,则执行步骤S970。若应用结束,则停止上述线程。
步骤S970:获取下一个垂直同步信号。
可选地,步骤S970可以通过调用相应的程序来处理,例如安卓系统中用于获取垂直同步信号的例程GetVsync。该下一个垂直同步信号例如是图10中的第二垂直同步信号,由此可以进行后续的循环。
另外,需要指出的是,图10中顺序示出了第一至第五垂直同步信号等,但是本领域技术人员应该理解,显示装置的每一帧时间内均在进行显示操作,用于显示装置的第一半屏和第二半屏的每一帧画面也都按照图9和图10的显示场景处理方法进行处理,不同帧画面的渲染操作和显示(扫屏)操作在不同的部件(例如CPU、GPU、T-con等)中并行进行,并通过垂直同步信号进行时间对准、同步以确保显示的流畅。
现通过图11进一步描述根据本公开的实施例的可应用于虚拟现实场景输出的装置。
图11是示出根据本公开实施例的显示场景处理装置的框图。
参考图11,根据本公开的一些实施例的显示场景处理装置,包括垂直同步信号获取模块1110、渲染模块1120和异步时间扭曲模块1130。
垂直同步信号获取模块1110被配置为获取垂直同步信号;渲染模块1120被配置为基于垂直同步信号,并行地执行第一半屏渲染线程和第二半屏渲染线程以分别对第一半屏场景数据和第二半屏场景数据进行渲染;异步时间扭曲模块1130被配置为通过异步时间扭曲并行地对渲染后的第一半屏场景数据和第二半屏场景数据分别进行校正,以获得第一半屏场景校正数据和第二半屏场景校正数据。
上述垂直同步信号获取模块1110、渲染模块1120和异步时间扭曲模块1130可以通过软件、硬件和固件或任意组合实现,本公开其他实施例的方法步骤也可以相同地通过软件、硬件和固件或任意组合实现。
本公开提供的装置可以包括但不限于智能手机、平板电脑、媒体播放器等。需要说明的是,为表示清楚,并没有给出该装置的全部结构。为实现该装置的必要功能,本领域技术人员可以根据具体应用场景进行设置其他未示出的结构,本发明对此不做限制。
此外,根据本公开的一些实施例还提供了一种显示场景处理装置,其包括处理器和存储器,在存储器上存储了计算机程序指令。计算机可执行指令在被计算机运行时可以实现根据本公开实施例的显示场景处理方法。
该计算机可读存储介质可以是一个或多个计算机可读存储介质的任意组合,例如一个计算机可读存储介质包含用于随机地生成动作指令序列的计算机可读的程序代码,另一个计算机可读存储介质包含用于进行人脸活动识别的计算机可读的程序代码。
一般而言,本公开的各种示例实施例可以在硬件或专用电路、软件、固件、逻辑,或其任何组合中实施。某些方面可以在硬件中实施,而其他方面可以在可以由控制器、微处理器或其他计算设备执行的固件或软件中实施。当本公开的实施例的各方面被图示或描述为框图、流程图或使用某些其他图形表示时,将理解此处描述的方框、装置、系统、技术或方法可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备,或其某些组合中实施。
本公开实施例中的处理器可以是一种集成电路芯片,具有信号的处理能力。上述处理器可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,可以是X86架构或ARM架构的。
本公开实施例中的计算机可读存储介质可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)或闪存。易失性存储器可以是随机存取存储器(RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、双倍数据速率同步动态随机存取存储器DDRSDRAM)、增强型同步动态随机存取存储器(ESDRAM)、同步连接动态随机存取存储器(SLDRAM)和直接内存总线随机存取存储器(DR RAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本公开实施例的显示场景处理方法和装置,能够降低虚拟现实应用从渲染场景到最终输出到屏幕的延时,使得虚拟现实应用可以维持较高的帧率,以提供更好的渲染质量、进而提高了该应用的用户体验效果。
在上面详细描述的本发明的示例实施例仅仅是说明性的,而不是限制性的。本领域技术人员应该理解,在不脱离本发明的原理和精神的情况下,可对这些实施例进行各种修改,组合或子组合,并且这样的修改应落入本发明的范围内。
Claims (24)
1.一种显示场景处理方法,包括:
获取垂直同步信号;
基于所述垂直同步信号,执行渲染线程以对第一半屏场景数据和第二半屏场景数据进行渲染,
执行异步时间扭曲线程以对渲染后的第一半屏场景数据和第二半屏场景数据进行校正,以获得第一半屏场景校正数据和第二半屏场景校正数据。
2.如权利要求1所述的显示场景处理方法,其中,对所述第一半屏场景数据和所述第二半屏场景数据进行的渲染为多渲染目标渲染。
3.如权利要求1所述的显示场景处理方法,其中,所述执行渲染线程还包括:
预测经过第一预定量的显示器刷新帧的时间之后的第一用户姿态数据,以及
基于所述第一用户姿态数据进行渲染以获得所述渲染后的第一半屏场景数据和第二半屏场景数据。
4.如权利要求3所述的显示场景处理方法,其中,所述第一预定量的显示器刷新帧为N+0.5个显示器刷新帧,其中N大于等于1。
5.如权利要求1-4任一所述的显示场景处理方法,其中,执行异步时间扭曲线程包括:
获得所述渲染后的第一半屏场景数据和第二半屏场景数据之后,预测用于所述第一半屏场景数据和所述第二半屏场景数据的显示帧的开始节点的第二用户姿态数据以及所述显示帧的结束节点的第三用户姿态数据;
基于所述第二用户姿态数据和所述第三用户姿态数据对所述渲染后的第一半屏场景数据和第二半屏场景数据进行校正,以获得所述第一半屏场景校正数据和所述第二半屏场景校正数据。
6.如权利要求5所述的显示场景处理方法,其中,基于所述第二用户姿态数据和所述第三用户姿态数据对所述渲染后的第一半屏场景数据和第二半屏场景数据进行校正,包括:
对所述第二用户姿态数据和所述第三用户姿态数据进行插值计算,以获得第一异步时间扭曲校正参照数据,然后基于所述第一异步时间扭曲校正参照数据对所述渲染后的第一半屏场景数据和第二半屏场景校正数据进行校正。
7.如权利要求1-4任一所述的显示场景处理方法,其中,执行异步时间扭曲线程包括:
预测用于所述第一半屏场景数据和所述第二半屏场景数据的显示帧的开始节点后四分之一帧的用户姿态数据,以获得针对第一半屏的第二异步时间扭曲校正参照数据;
基于所述第二异步时间扭曲校正参照数据对所述渲染后的第一半屏场景数据进行校正,以获得所述第一半屏场景校正数据;
预测所述显示帧的开始节点后四分之三帧的用户姿态数据,以获得针对第二半屏的第三异步时间扭曲校正参照数据;
基于所述第三异步时间扭曲校正参照数据对所述渲染后的第二半屏场景数据进行校正,以获得所述第二半屏场景校正数据。
8.如权利要求1-4任一所述的显示场景处理方法,其中,
对所述第一半屏场景校正数据和所述第二半屏场景校正数据进行反畸变处理,获取第一半屏场景输出数据和第二半屏场景输出数据。
9.如权利要求1所述的显示场景处理方法,其中,执行所述渲染线程包括:
并行地执行第一半屏渲染线程和第二半屏渲染线程,以分别对第一半屏场景数据和第二半屏场景数据进行渲染。
10.如权利要求9所述的显示场景处理方法,其中,执行所述异步时间扭曲线程包括:
并行地执行第一异步时间扭曲线程和第二异步时间扭曲线程,以获得第一半屏场景校正数据和第二半屏场景校正数据。
11.如权利要求10所述的显示场景处理方法,其中,所述执行第一半屏渲染线程还包括:
预测经过N+0.5个显示器刷新帧的时间之后的第四用户姿态数据,其中N大于等于1,以及
基于所述第四用户姿态数据进行渲染以获得所述渲染后的第一半屏场景数据。
12.如权利要求11所述的显示场景处理方法,其中,所述执行第一异步时间扭曲线程还包括:
获得所述渲染后的第一半屏场景数据之后,预测用于所述第一半屏场景数据和所述第二半屏场景数据的显示帧的开始节点的第五用户姿态数据以及所述显示帧的开始节点后半帧的第六用户姿态数据;
基于所述第五用户姿态数据和所述第六用户姿态数据对所述渲染后的第一半屏场景数据进行校正,以获得所述第一半屏场景校正数据。
13.如权利要求12所述的显示场景处理方法,其中,基于所述第五用户姿态数据和所述第六用户姿态数据对所述渲染后的第一半屏场景数据进行校正,包括:
对所述第五用户姿态数据和所述第六用户姿态数据进行插值计算,以获得针对第一半屏的第四异步时间扭曲校正参照数据,然后基于所述第四异步时间扭曲校正参照数据对所述渲染后的第一半屏场景数据进行校正。
14.如权利要求11所述的显示场景处理方法,其中,对渲染后的第一半屏场景数据进行校正还包括:
预测用于所述第一半屏场景数据和所述第二半屏场景数据的显示帧的开始节点后四分之一帧的用户姿态数据以获得针对第一半屏的第五异步时间扭曲校正参照数据;
基于所述第五异步时间扭曲校正参照数据对所述渲染后的第一半屏场景数据通过异步时间扭曲进行校正,以获得所述第一半屏场景校正数据。
15.如权利要求12-14任一所述的显示场景处理方法,其中,执行所述第二半屏渲染线程还包括:
预测经过N+0.5个显示器刷新帧的时间之后的第七用户姿态数据,其中N大于等于1,以及
基于所述第七用户姿态数据进行渲染以获得所述渲染后的第二半屏场景数据。
16.如权利要求15所述的显示场景处理方法,其中,执行所述第二半屏异步时间扭曲线程还包括:
获得所述渲染后的第二半屏场景数据之后,预测用于所述第一半屏场景数据和所述第二半屏场景数据的显示帧的开始节点后半帧的第八用户姿态数据和所述显示帧的结束节点的第九用户姿态数据;
基于所述第八用户姿态数据和所述第九用户姿态数据对所述渲染后的第二半屏场景数据进行校正,以获得所述第二半屏场景校正数据。
17.如权利要求16所述的显示场景处理方法,其中,基于所述第八用户姿态数据和所述第九用户姿态数据对所述渲染后的第二半屏场景数据进行校正,包括:
对所述第八用户姿态数据和所述第九用户姿态数据进行插值计算,以获得针对第二半屏的第六异步时间扭曲校正参照数据,然后基于所述第六异步时间扭曲校正参照数对所述渲染后的第二半屏场景数据进行校正。
18.如权利要求15所述的显示场景处理方法,其中,执行第二异步时间扭曲线程还包括:
预测用于所述第一半屏场景数据和所述第二半屏场景数据的显示帧的开始节点后四分之三帧的用户姿态数据以获得针对第二半屏的第七异步时间扭曲校正参照数据;
基于所述第七异步时间扭曲校正参照数据对所述渲染后的第二半屏场景数据进行校正,以获得所述第二半屏场景校正数据。
19.如权利要求10所述的显示场景处理方法,还包括:
第一异步时间扭曲线程将所述第一半屏场景校正数据传递给第二异步时间扭曲线程;
对所述第二半屏场景校正数据和所述第一半屏场景校正数据进行反畸变处理,获取第二半屏场景输出数据和第一半屏场景输出数据。
20.如权利要求8或19所述的显示场景处理方法,其中,所述反畸变处理至少为基于顶点位移、基于网格和基于片段中的至少一个。
21.如权利要求8或19所述的显示场景处理方法,还包括:
将所述第一半屏场景输出数据和所述第二半屏场景输出数据分别输出至第一半屏显示屏和第二半屏显示屏,以在用于所述第一半屏场景数据和所述第二半屏场景数据的显示帧中进行显示。
22.一种显示场景处理装置,包括:
垂直同步信号获取模块,被配置为获取垂直同步信号;
渲染模块,被配置为基于所述垂直同步信号,执行渲染线程以对第一半屏场景数据和第二半屏场景数据进行渲染,
异步时间扭曲模块,被配置为执行异步时间扭曲线程以对渲染后的第一半屏场景数据和第二半屏场景数据进行校正,以获得第一半屏场景校正数据和第二半屏场景校正数据。
23.一种显示场景处理装置,包括:处理器和存储器,其中,所述存储器存储有计算机可执行指令,
所述计算机可执行指令由所述处理器执行时以进行如权利要求1-21中任一项所述的显示场景处理方法。
24.一种非易失性存储介质,存储有计算机可执行指令,其中,所述计算机可执行指令由处理器执行时以进行如权利要求1-21中的任一项所述的显示场景处理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910156033.8A CN109920040B (zh) | 2019-03-01 | 2019-03-01 | 显示场景处理方法和装置、存储介质 |
US16/553,981 US10997929B2 (en) | 2019-03-01 | 2019-08-28 | Display scene processing method and device and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910156033.8A CN109920040B (zh) | 2019-03-01 | 2019-03-01 | 显示场景处理方法和装置、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109920040A true CN109920040A (zh) | 2019-06-21 |
CN109920040B CN109920040B (zh) | 2023-10-27 |
Family
ID=66962926
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910156033.8A Active CN109920040B (zh) | 2019-03-01 | 2019-03-01 | 显示场景处理方法和装置、存储介质 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10997929B2 (zh) |
CN (1) | CN109920040B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112104855A (zh) * | 2020-09-17 | 2020-12-18 | 联想(北京)有限公司 | 一种图像处理方法及装置 |
CN112230776A (zh) * | 2020-10-29 | 2021-01-15 | 北京京东方光电科技有限公司 | 虚拟现实显示方法、装置及存储介质 |
CN112380989A (zh) * | 2020-11-13 | 2021-02-19 | 歌尔光学科技有限公司 | 一种头戴显示设备及其数据获取方法、装置和主机 |
CN113596569A (zh) * | 2021-07-22 | 2021-11-02 | 歌尔光学科技有限公司 | 图像处理方法、装置和计算机可读存储介质 |
WO2022252924A1 (zh) * | 2021-05-31 | 2022-12-08 | 华为技术有限公司 | 图像传输与显示方法、相关设备及系统 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI727593B (zh) * | 2020-01-02 | 2021-05-11 | 瑞昱半導體股份有限公司 | 應用於動態更新率的控制晶片與相關的驅動方法 |
KR20220087752A (ko) * | 2020-12-18 | 2022-06-27 | 주식회사 엘엑스세미콘 | 데이터 구동 회로 및 그의 클럭 복원 방법과 디스플레이 장치 |
US12002143B2 (en) * | 2021-06-06 | 2024-06-04 | Apple Inc. | Prediction and use of processor inactivity for rendering frames |
CN113538648B (zh) * | 2021-07-27 | 2024-04-30 | 歌尔科技有限公司 | 图像渲染方法、装置、设备及计算机可读存储介质 |
WO2023127164A1 (ja) * | 2021-12-29 | 2023-07-06 | シャープディスプレイテクノロジー株式会社 | 表示装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050041031A1 (en) * | 2003-08-18 | 2005-02-24 | Nvidia Corporation | Adaptive load balancing in a multi-processor graphics processing system |
CN105979243A (zh) * | 2015-12-01 | 2016-09-28 | 乐视致新电子科技(天津)有限公司 | 一种显示立体图像的处理方法和装置 |
CN106843859A (zh) * | 2016-12-31 | 2017-06-13 | 歌尔科技有限公司 | 一种虚拟现实场景的绘制方法和装置及一种虚拟现实设备 |
US20180039317A1 (en) * | 2016-08-05 | 2018-02-08 | Ati Technologies Ulc | Fine-grain gpu power management and scheduling for virtual reality applications |
CN108139815A (zh) * | 2016-02-22 | 2018-06-08 | 谷歌有限责任公司 | 用于虚拟现实内容的显示的场景和对象的分立时间扭曲 |
CN109242944A (zh) * | 2018-09-28 | 2019-01-18 | 京东方科技集团股份有限公司 | 一种显示方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104658034B (zh) * | 2013-11-18 | 2019-03-01 | 清华大学 | Ct图像数据的融合绘制方法 |
-
2019
- 2019-03-01 CN CN201910156033.8A patent/CN109920040B/zh active Active
- 2019-08-28 US US16/553,981 patent/US10997929B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050041031A1 (en) * | 2003-08-18 | 2005-02-24 | Nvidia Corporation | Adaptive load balancing in a multi-processor graphics processing system |
CN105979243A (zh) * | 2015-12-01 | 2016-09-28 | 乐视致新电子科技(天津)有限公司 | 一种显示立体图像的处理方法和装置 |
CN108139815A (zh) * | 2016-02-22 | 2018-06-08 | 谷歌有限责任公司 | 用于虚拟现实内容的显示的场景和对象的分立时间扭曲 |
US20180039317A1 (en) * | 2016-08-05 | 2018-02-08 | Ati Technologies Ulc | Fine-grain gpu power management and scheduling for virtual reality applications |
CN106843859A (zh) * | 2016-12-31 | 2017-06-13 | 歌尔科技有限公司 | 一种虚拟现实场景的绘制方法和装置及一种虚拟现实设备 |
CN109242944A (zh) * | 2018-09-28 | 2019-01-18 | 京东方科技集团股份有限公司 | 一种显示方法和装置 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112104855A (zh) * | 2020-09-17 | 2020-12-18 | 联想(北京)有限公司 | 一种图像处理方法及装置 |
CN112104855B (zh) * | 2020-09-17 | 2022-05-31 | 联想(北京)有限公司 | 一种图像处理方法及装置 |
CN112230776A (zh) * | 2020-10-29 | 2021-01-15 | 北京京东方光电科技有限公司 | 虚拟现实显示方法、装置及存储介质 |
WO2022089046A1 (zh) * | 2020-10-29 | 2022-05-05 | 京东方科技集团股份有限公司 | 虚拟现实显示方法、装置及存储介质 |
CN112230776B (zh) * | 2020-10-29 | 2024-07-02 | 北京京东方光电科技有限公司 | 虚拟现实显示方法、装置及存储介质 |
CN112380989A (zh) * | 2020-11-13 | 2021-02-19 | 歌尔光学科技有限公司 | 一种头戴显示设备及其数据获取方法、装置和主机 |
CN112380989B (zh) * | 2020-11-13 | 2023-01-24 | 歌尔科技有限公司 | 一种头戴显示设备及其数据获取方法、装置和主机 |
US11836286B2 (en) | 2020-11-13 | 2023-12-05 | Goertek Inc. | Head-mounted display device and data acquisition method, apparatus, and host computer thereof |
WO2022252924A1 (zh) * | 2021-05-31 | 2022-12-08 | 华为技术有限公司 | 图像传输与显示方法、相关设备及系统 |
CN113596569A (zh) * | 2021-07-22 | 2021-11-02 | 歌尔光学科技有限公司 | 图像处理方法、装置和计算机可读存储介质 |
WO2023000547A1 (zh) * | 2021-07-22 | 2023-01-26 | 歌尔股份有限公司 | 图像处理方法、装置和计算机可读存储介质 |
CN113596569B (zh) * | 2021-07-22 | 2023-03-24 | 歌尔科技有限公司 | 图像处理方法、装置和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US10997929B2 (en) | 2021-05-04 |
CN109920040B (zh) | 2023-10-27 |
US20200279533A1 (en) | 2020-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109920040A (zh) | 显示场景处理方法和装置、存储介质 | |
CN106296566B (zh) | 一种虚拟现实移动端动态时间帧补偿渲染系统及方法 | |
CN108921951A (zh) | 虚拟现实图像显示方法及其装置、虚拟现实设备 | |
JP6898430B2 (ja) | 仮想現実および拡張現実ディスプレイシステムのための連続時間ワーピングおよび両眼時間ワーピングおよび方法 | |
CN110460831B (zh) | 显示方法、装置、设备及计算机可读存储介质 | |
JP5194530B2 (ja) | 画像表示装置及び画像表示方法 | |
CN106782260A (zh) | 用于虚拟现实运动场景的显示方法及装置 | |
CN112230776B (zh) | 虚拟现实显示方法、装置及存储介质 | |
JP6639877B2 (ja) | 映像処理装置及び方法 | |
JP4629838B2 (ja) | 立体視画像生成装置および立体視画像生成方法 | |
CN106502427A (zh) | 虚拟现实系统及其场景呈现方法 | |
CN109739356B (zh) | Vr系统中图像显示的控制方法、装置及vr头戴设备 | |
CN107302694B (zh) | 通过虚拟现实设备呈现场景的方法、设备及虚拟现实设备 | |
CN108604385A (zh) | 一种应用界面显示方法及装置 | |
US11341655B2 (en) | Image processing method, image processing apparatus and display device | |
CN112887646B (zh) | 图像处理方法及装置、扩展现实系统、计算机设备及介质 | |
US10650507B2 (en) | Image display method and apparatus in VR device, and VR device | |
WO2019196589A1 (zh) | 图像处理方法、设备、装置、图像贴合方法、设备、显示方法、装置及计算机可读介质 | |
JP6066755B2 (ja) | 描画処理装置および描画処理方法 | |
CN115512014A (zh) | 训练表情驱动生成模型的方法、表情驱动方法及装置 | |
US20240202005A1 (en) | Encoding stereo splash screen in static image | |
US10726777B2 (en) | Terminal display method and apparatus | |
CN113596569B (zh) | 图像处理方法、装置和计算机可读存储介质 | |
JP5003252B2 (ja) | 画像表示装置及び画像表示方法 | |
US20240007612A1 (en) | Virtual reality display method, device and storage medium |
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 |