虚拟现实显示方法、装置及存储介质
相关申请的交叉引用
本申请主张在2020年10月29日在中国提交的中国专利申请号No.202011177945.2的优先权,其全部内容通过引用包含于此。
技术领域
本公开涉及显示技术领域,特别涉及一种虚拟现实显示方法、装置及存储介质。
背景技术
虚拟现实(Virtual Reality,VR)系统是一种可以创建和体验虚拟世界的计算机仿真系统,它通过将多源信息进行融合,以向用户提供一种交互式的三维动态视景,并通过对用户行为进行仿真,从而使用户沉浸到该模拟环境中。虚拟现实技术包括环境模拟技术、用户行为感知技术等各个方面。环境模拟技术是指通过计算机生成实时动态的三维立体逼真图像。用户行为感知技术是指理想的虚拟现实系统可以获知用户所具有的一切感知。除计算机图形技术所生成的视觉感知外,还有听觉、触觉、力觉、运动等感知,甚至还包括嗅觉和味觉等,也称为多感知。
虚拟现实技术的广泛推广需要虚拟现实应用可以维持较高的帧率,以提供更接近实时的三维立体图像。
发明内容
根据本公开的至少一个实施例提供了一种虚拟现实显示方法,包括:
利用至少两个线程中的一个线程对多个屏幕的显示数据依次进行渲染;
对所述多个屏幕的显示数据进行渲染后,利用所述至少两个线程对渲染后的显示数据进行校正。
一些实施例中,所述至少两个线程包括第一线程和第二线程,所述多个屏幕包括第一屏幕和第二屏幕,所述方法具体包括:
执行所述第一线程对第一屏幕显示数据和第二屏幕显示数据依次进行渲染;
在对所述第一屏幕显示数据进行渲染后,执行所述第二线程对渲染后的第一屏幕显示数据进行校正,获得第一屏幕显示校正数据;在对所述第二屏幕显示数据进行渲染后,执行所述第一线程对渲染后的第二屏幕显示数据进行校正,获得第二屏幕显示校正数据。
一些实施例中,所述第一线程和所述第二线程选自渲染线程和数据校正线程,且所述第一线程与所述第二线程不相同。
一些实施例中,执行所述第一线程对第二屏幕显示数据进行渲染之前,所述方法还包括:
获取垂直同步信号;
若所述垂直同步信号为奇数位垂直同步信号,所述第一线程为渲染线程;若所述垂直同步信号为偶数位垂直同步信号,所述第一线程为数据校正线程;或
若所述垂直同步信号为偶数位垂直同步信号,所述第一线程为渲染线程;若所述垂直同步信号为奇数位垂直同步信号,所述第一线程为数据校正线程。
一些实施例中,执行所述第二线程对渲染后的第一屏幕显示数据进行校正,获得第一屏幕显示校正数据之后,所述方法还包括:
执行所述第二线程将所述第一屏幕显示校正数据发送给所述第一线程。
一些实施例中,执行所述第二线程将所述第一屏幕显示校正数据发送给所述第一线程之后,所述方法还包括:
执行所述第一线程将所述第一屏幕显示校正数据和所述第二屏幕显示校正数据发送给显示器缓存进行屏幕显示。
一些实施例中,并行地执行所述第一线程和所述第二线程,以获得所述第一屏幕显示校正数据和所述第二屏幕显示校正数据。
一些实施例中,对所述第一屏幕显示数据和所述第二屏幕显示数据进行的渲染为多渲染目标渲染。
一些实施例中,所述执行所述第一线程对第一屏幕显示数据和第二屏幕 显示数据依次进行渲染还包括:
预测经过第一预定量的显示器刷新帧的时间之后的第一用户姿态数据,以及基于所述第一用户姿态数据进行渲染以获得所述渲染后的第一屏幕显示数据和第二屏幕显示数据。
一些实施例中,所述显示数据校正后的输出频率,不低于所述显示数据输入频率的90%。
一些实施例中,还包括:
预测用于所述第一屏幕显示数据和所述第二屏幕显示数据的显示帧的开始节点的第二用户姿态数据以及所述显示帧的结束节点的第三用户姿态数据;
执行第二线程对渲染后的第一屏幕显示数据进行校正包括:基于所述第二用户姿态数据和所述第三用户姿态数据对所述渲染后的第一屏幕显示数据进行校正,以获得所述第一屏幕显示校正数据;
执行第一线程对渲染后的第二屏幕显示数据进行校正包括:基于所述第二用户姿态数据和所述第三用户姿态数据对所述渲染后的第二屏幕显示数据进行校正,以获得所述第二屏幕显示校正数据。
一些实施例中,基于所述第二用户姿态数据和所述第三用户姿态数据对渲染后的第一屏幕显示数据和第二屏幕显示数据进行校正,包括:
对所述第二用户姿态数据和所述第三用户姿态数据进行插值计算,以获得第一异步时间扭曲校正参照数据,然后基于所述第一异步时间扭曲校正参照数据对所述渲染后的第一屏幕显示数据和第二屏幕显示校正数据进行校正。
根据本公开的至少一个实施例还提供了一种虚拟现实显示装置,包括:
多个屏幕;
处理器,用于利用至少两个线程中的一个线程对多个屏幕的显示数据依次进行渲染;
对所述多个屏幕的显示数据进行渲染后,利用所述至少两个线程对渲染后的显示数据进行校正。
一些实施例中,所述至少两个线程包括第一线程和第二线程,所述多个屏幕包括第一屏幕和第二屏幕,
所述处理器具体用于执行所述第一线程对第一屏幕显示数据和第二屏幕显示数据依次进行渲染;在对所述第一屏幕显示数据进行渲染后,执行所述第二线程对渲染后的第一屏幕显示数据进行校正,获得第一屏幕显示校正数据;在对所述第二屏幕显示数据进行渲染后,执行所述第一线程对渲染后的第二屏幕显示数据进行校正,获得第二屏幕显示校正数据。
一些实施例中,还包括:
时钟产生器,用于产生垂直同步信号;
所述处理器具体用于获取垂直同步信号,基于所述垂直同步信号执行所述第一线程和所述第二线程,若所述垂直同步信号为奇数位垂直同步信号,所述第一线程为渲染线程;若所述垂直同步信号为偶数位垂直同步信号,所述第一线程为数据校正线程;或,若所述垂直同步信号为偶数位垂直同步信号,所述第一线程为渲染线程;若所述垂直同步信号为奇数位垂直同步信号,所述第一线程为数据校正线程。
一些实施例中,所述处理器还用于执行所述第二线程将所述第一屏幕显示校正数据发送给所述第一线程。
一些实施例中,所述处理器还用于执行所述第一线程将所述第一屏幕显示校正数据和所述第二屏幕显示校正数据发送给显示器缓存进行屏幕显示。
根据本公开的至少一个实施例还提供了一种虚拟现实显示装置,包括:处理器和存储器,所述存储器存储有计算机可执行指令,所述计算机可执行指令由所述处理器执行时以进行如上所述的虚拟现实显示方法。
根据本公开的至少一个实施例还提供了一种计算机可读存储介质,存储有计算机可执行指令,其中,所述计算机可执行指令由处理器执行时以进行如上所述的虚拟现实显示方法。
附图说明
图1为在同步信号Vsync到达时没有新的渲染帧输出的示意图;
图2为在每一次垂直同步前,异步进程根据渲染进程最新完成的那一帧生成一个新的帧的示意图;
图3为异步时间扭曲线程和渲染线程同步运行的示意图;
图4为将图像分为高清区和非高清区的示意图;
图5为出现掉帧的示意图;
图6为本公开实施例虚拟现实显示方法的流程示意图;
图7为本公开实施例渲染线程和异步时间扭曲线程运行的示意图;
图8为本公开具体实施例虚拟现实显示方法的流程示意图;
图9为本公开实施例虚拟现实显示装置的结构示意图。
具体实施方式
为了使得本公开的目的、技术方案和优点更为明显,下面将参照附图详细描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。基于本公开中描述的本公开实施例,本领域技术人员在没有付出创造性劳动的情况下所得到的所有其它实施例都应落入本公开的保护范围之内。
需要注意的是,在本说明书和附图中,具有基本上相同步骤和元素用相同的附图标记来表示,且对这些步骤和元素的重复描述将被省略。
根据示例性实施例,虚拟现实系统可以包括例如头戴式设备,诸如虚拟现实头盔、虚拟现实眼镜等,以根据用户的动作、感知等信息生成沉浸式的虚拟世界环境。然而,在使用虚拟现实头戴式设备时,如果用户运动过快,将造成场景渲染的延迟。例如,在用户快速转头时,虽然用户的头已经转过了预定位置而到达新位置,但是对应于该预定位置的图像还没有渲染出来,或者所渲染的图像仍然是上一帧的图像,因此用户所看到的图像与其所期待的新位置的图像并不一致,从而导致了显示图像的延迟以及用户的眩晕感。
为了减小显示场景中渲染图像延迟,部分虚拟现实设备采用了时间扭曲(Timewarp,TW)技术。时间扭曲技术是一种对图像帧进行修正的技术,其基 于渲染之后用户动作的改变,通过扭曲(或校正)渲染之后的场景数据来解决场景渲染延迟问题。由于在进行时间扭曲处理的时刻更接近显示时刻,则经过时间扭曲处理得到新的显示图像更接近于用户希望看到的图像。同时,由于时间扭曲技术仅是对二维图像进行处理,其类似于图像处理中的仿射变换,其不会带来过大的系统工作量开销。
异步时间扭曲(Asynchronous Timewarp,ATW),可以进一步优化上述的时间扭曲技术,其将渲染和时间扭曲分别安排在两个不同的线程中,以使得渲染步骤和时间扭曲步骤可以异步执行,从而减少渲染和时间扭曲处理的整体运行时间。例如,在虚拟现实应用不能保持足够的帧率的时候,异步时间扭曲线程会根据当前的用户姿态,对之前的渲染后的场景数据再进行处理,以产生符合当前的用户姿态的帧画面(中间帧),从而减少画面的抖动,以更好地降低延迟。该技术是降低延迟,解决眩晕的最为关键的技术。当没有ATW技术时如图1所示,如果在同步信号Vsync到达时没有新的渲染帧输出,也就是GPU(Graphics Processing Unit,图形处理器)未能够将Frame(帧)N-1的图像渲染完成,那么就会导致前一帧FrameN-2的数据被显示两次,在用户保持头部运动静止时,这不会产生异常的现象。但是,当用户从旧的头部位置旋转到新的位置时,此时屏幕上仍然显示旧的头部位置所对应的图像。此时,大脑反应已切换到新的头部位置,但眼睛接收到是旧的头部位置的内容,二者信息的不匹配会导致用户产生眩晕的感觉,且旋转的角度越大,这种眩晕感会愈发强烈。异步时间扭曲在每一次垂直同步前,异步进程根据渲染进程最新完成的那一帧生成一个新的帧如图2所示,当同步信号Vsync到达时没有新的渲染帧输出即GPU未能够将FrameN-1的图像渲染完成的情况下,会根据FrameN-2的图像进行修正从而产生新的头部位置所对应的图像帧数据(扫描输出对应的FrameN-1),通过这个方法保证在每一次Vsync信号到达前都会根据最新头部位置产生新帧,这样做能够在较大程度上降低用户的眩晕感提高用户的VR产品舒适度。
在传统移动端VR系统刷新显示机制的前提下,异步时间扭曲在一个线程(称为ATW线程)中进行处理,这个线程和渲染线程(称为MRT线程)同步 运行。如图3所示,当获取到Vsync信号时MRT线程对将要显示的场景进行渲染,此时渲染的场景主要取决于Sensor(传感器)预测到的1.5帧之后的用户姿态数据,而ATW线程将MRT线程渲染完的场景基于较近时间点的姿态预测分别对左右眼的图像帧进行修正及反畸变处理,即ATW获取到MRT线程所传递过来的场景数据时,基于Sensor预测到的用户的姿态进行插值确定用于左眼图像进行ATW处理的姿态数据。在获取到Vsync信号的时刻,基于Sensor预测到用户的姿态进行插值确定用于右眼图像进行ATW处理的姿态数据,其流程图如图3所示。可以看出,在该VR系统刷新显示机制下,从获取到用户的姿态开始到最终显示图像至屏幕总共需要耗费2.5帧的时间。
基于当前的高分辨率VR产品及VR应用进行分析,为提升显示效果对注视点区域的分辨率进行提升,如图4所示,将图像分为高清区和非高清区,则VR系统中需要进行高清区&非高清区取图、高清图&非高清图反畸变、高清图LD(LocalDimming)处理、全视场图LD(LocalDimming)处理、高清图&全视场LD图拼接、注视点写入的操作;对比传统的VR系统而言,在MRT阶段增加了高清区取图,在ATW阶段增加了高清图反畸变、高清图&非高清图LD处理、高清区与非高清LD图像拼接及动态注视点写入;在应用于移动端显示产品时,由于移动端的运算能力有限,在图像的分辨率提升后,会导致ATW阶段的耗时明显增加,使得出现一体机帧率严重掉帧及画面出现撕裂的现象,如图5所示;对比传统的VR系统而言,MRT及ATW处理的时间都有所增加,但是MRT阶段的左右眼渲染时间仍能保证在一帧之内处理完成,单眼ATW区别于之前的大部分的渲染时间能够控制在半帧以内时间,使得帧率急剧下降。
本公开实施例提供一种虚拟现实显示方法及装置,能够改善了图5所示的掉帧现象,并通过调整渲染左右眼的起始时间,使得渲染时刻距离所渲染的图像进行显示的时刻均有所缩短,降低左右眼图像渲染到显示之间的延时情况。
根据本公开的至少一个实施例提供了一种虚拟现实显示方法,如图6所示,包括:
步骤101:利用至少两个线程中的一个线程对多个屏幕的显示数据依次进 行渲染;
步骤102:对所述多个屏幕的显示数据进行渲染后,利用所述至少两个线程对渲染后的显示数据进行校正。
本实施例中,在对多个屏幕的显示数据进行渲染后,利用至少两个线程对渲染后的显示数据进行校正,而不是利用一个线程对渲染后的显示数据进行校正,这样可以最大化利用多个线程的时间,充分利用当前处理器的性能,极大程度上改善掉帧现象。
其中,所述至少两个线程可以包括两个线程或者三个线程或者更多个线程,所述多个屏幕可以包括两个屏幕或者三个屏幕或者更多个屏幕,其中,所述多个屏幕的显示数据各不相同。
本实施例中,利用至少两个线程中的一个线程对多个屏幕的显示数据依次进行渲染,是指利用该线程对第一个屏幕的显示数据进行渲染后,再对第二个屏幕的显示数据进行渲染,之后再对第三个屏幕的显示数据进行渲染,以此类推,依次完成多个屏幕的显示数据的渲染。
本公开实施例的虚拟现实显示方法可以包括两个并行运行的线程,第一线程和第二线程。例如,该虚拟现实显示方法可用于包括左眼显示屏与右眼显示屏的虚拟现实显示装置或增强现实显示装置,例如虚拟显示显示头盔、增强现实显示头盔等,该虚拟现实显示装置还可以包括例如陀螺仪、加速度传感器等的运动传感器、中央处理单元(CPU)、存储器、图像处理单元(GPU)、通信装置等。该方法例如可以通过用于该虚拟现实显示装置的中央处理单元或图像处理单元配合相应的计算机程序代码来执行,该虚拟现实显示装置可以采用各种适当的操作系统,例如安卓(And roid)系统、Linux系统、Unix系统或视窗(Windows)系统等,下面以安卓系统为例进行说明,但是本公开的实施例对此不作限制。
一具体实施例中,所述至少两个线程包括第一线程和第二线程,所述多个屏幕包括第一屏幕和第二屏幕,所述方法具体包括:
执行所述第一线程对第一屏幕显示数据和第二屏幕显示数据依次进行渲染;
在对所述第一屏幕显示数据进行渲染后,执行所述第二线程对渲染后的第一屏幕显示数据进行校正,获得第一屏幕显示校正数据;在对所述第二屏幕显示数据进行渲染后,执行所述第一线程对渲染后的第二屏幕显示数据进行校正,获得第二屏幕显示校正数据。
本实施例中,不会等待至第一线程对所述第二屏幕显示数据进行渲染后才对渲染后的第一屏幕显示数据进行校正,而是在第一线程对第一屏幕显示数据进行渲染后,就执行第二线程对渲染后的第一屏幕显示数据进行校正,并在第一线程对所述第二屏幕显示数据进行渲染后,执行所述第一线程对渲染后的第二屏幕显示数据进行校正,这样可以最大化利用两个线程每一帧的时间,使得在每一帧的抛图操作之前完成渲染、图像校正,充分利用当前处理器的性能,极大程度上改善掉帧现象;并且通过调整渲染的起始时间,使得渲染时刻距离所渲染的图像进行显示的时刻均有所缩短,降低图像渲染到显示之间的延时情况。
其中,该第一屏幕显示数据和第二屏幕显示数据例如是从存储装置中读取预存的图像数据,例如对于虚拟现实显示装置,该预存的图像数据包括相应应用的图像数据,例如关于游览的博物馆、赛车游戏的赛道等图像数据。
可选地,第一屏幕可以为显示用户左眼所看到的图像的屏幕,第二屏幕可以为显示用户右眼所看的图像的屏幕。第一屏幕显示数据可以包括用户左眼的视野中所应当呈现的对象的各个参数,而第二屏幕显示数据可以包括用户右眼的视野中所应当呈现的对象的各个参数。如上所述,第一屏幕和第二屏幕的含义可以互换,并且该第一屏幕和第二屏幕可以为各种类型的显示屏,例如可以为液晶显示屏(LCD)、有机发光二极管显示屏(OLED)、微发光二极管(Micro-LED)显示屏等。这些显示装置例如通过逐行扫描等方式实现一帧显示图像的刷新。
为使得用户在使用虚拟现实设备时,虚拟现实设备所呈现的图像能够是该用户在视野中的所能观察到的所有对象,通常情况下需对用户视野范围内所有对象进行渲染。同时,需要给用户的左眼和右眼呈现不同的图像(也即是形成视差),然后用户的大脑将左右眼不同的图像进行合成,从而给用户呈现 视觉上具有立体感的图像。由此,第一屏幕显示数据和第二屏幕显示数据中,对于同一对象的参数也可能不同。比如对于同一对象,左眼和右眼所观察到的该对象的位置,和光线通过该对象折射到左右眼的情况也可能会不同,因此,在本公开中,对第一屏幕显示数据和第二屏幕显示数据两者均进行渲染。采用这样的方式,相比于先对对象进行整体渲染再将渲染输出结果通过仿射变换分别输出至第一屏幕和第二屏幕,可以得到更加准确、立体感更强的图像。
本实施例中,所述第一线程和所述第二线程选自渲染线程和数据校正线程,且所述第一线程与所述第二线程不相同。其中,数据校正线程可以是上述异步时间扭曲。
可选地,对第一屏幕显示数据和第二屏幕显示数据进行的渲染为多渲染目标渲染。
多渲染目标渲染技术可以将多个像素的数据保存到不同的缓冲区(例如,用于颜色贴图的缓冲区、用于法线贴图的缓冲区和用于深度贴图的缓冲区)中,以使得这些数据成为后续的光照效果着色器的参数,使得输出的图像的精细度得以提高。通过多渲染目标渲染技术,可以延迟对光照信息的渲染,提高渲染的处理速度。同时,由于是分别对第一屏幕显示数据和第二屏幕显示数据进行渲染,因此需要将第一屏幕显示数据和第二屏幕显示数据中的各个对象的像素数据分别保存到上述的缓存区,然后再在光照效果着色其中对上述数据进行解析,从而增强第一屏幕和第二屏幕中显示的图像的光照效果。相比于通常的利用光照着色器对于整个场景中的每个像素分别进行光照着色计算,在本公开的实施例中,分别对第一屏幕显示数据和第二屏幕显示数据进行多渲染目标渲染可以减少处理器进行光照着色计算的运算次数,并可以获取增强的光照效果的图像。
本实施例中,执行所述第一线程对第二屏幕显示数据进行渲染之前,所述方法还包括:获取垂直同步信号。第一线程和第二线程可以根据垂直同步信号,对第一屏幕显示数据和第二屏幕显示数据进行渲染,从而得到用户希望看见的画面,这样可以增加第一屏幕显示和第二屏幕显示的同步性。具体 地,垂直同步信号(Vertical synchronization,Vsync)为施加至显示装置两帧之间的同步信号,其指示着前一帧的结束和下一帧的开始。在每进行一帧扫描之前,该信号就有效一次,由该信号可以确定显示装置的场频,即每秒屏幕的刷新次数,又可称为显示装置的刷新频率。例如,显示装置的刷新频率可以为60Hz、120Hz等,即每秒刷新60次、120次等,一个显示帧时间为1/60秒、1/120秒等。该垂直同步信号例如由显示驱动装置(例如显卡)产生,并用于在显示过程中同步显示一帧画面所需的栅极驱动信号、数据信号等。
一些实施例中,对系统发出的垂直同步信号进行奇偶划分,若所述垂直同步信号为奇数位垂直同步信号,所述第一线程为渲染线程;若所述垂直同步信号为偶数位垂直同步信号,所述第一线程为数据校正线程;或,若所述垂直同步信号为偶数位垂直同步信号,所述第一线程为渲染线程;若所述垂直同步信号为奇数位垂直同步信号,所述第一线程为数据校正线程。
具体地,以数据校正线程为异步时间扭曲线程为例,若所述垂直同步信号为奇数位垂直同步信号,所述第一线程为渲染线程,所述第二线程为异步时间扭曲线程;若所述垂直同步信号为偶数位垂直同步信号,所述第一线程为异步时间扭曲线程,所述第二线程为渲染线程;即在垂直同步信号为奇数位垂直同步信号时,利用渲染线程对第一屏幕显示数据和第二屏幕显示数据依次进行渲染,在对第一屏幕显示数据进行渲染后,利用异步时间扭曲线程对渲染后的第一屏幕显示数据进行校正,获得第一屏幕显示校正数据,在对所述第二屏幕显示数据进行渲染后,执行渲染线程对渲染后的第二屏幕显示数据进行校正,获得第二屏幕显示校正数据;若垂直同步信号为偶数位垂直同步信号,执行异步时间扭曲线程对第一屏幕显示数据和第二屏幕显示数据依次进行渲染,在对所述第一屏幕显示数据进行渲染后,执行渲染线程对渲染后的第一屏幕显示数据进行校正,获得第一屏幕显示校正数据,在对所述第二屏幕显示数据进行渲染后,执行异步时间扭曲线程对渲染后的第二屏幕显示数据进行校正,获得第二屏幕显示校正数据。这样通过对渲染线程和异步时间扭曲线程的运行机制进行调整,在奇偶帧对MRT线程和ATW线程分配不同的处理操作,在ATW均超过半帧时间的情况下最大化利用两大线程每一 帧的时间,使得在每一帧的抛图操作之前完成渲染、图像校正,能够保证充分利用当前AP处理器的性能,极大程度上改善图5所示的掉帧现象,并通过调整渲染左右眼的起始时间,使得渲染时刻距离所渲染的图像进行显示的时刻均有所缩短。
另一具体示例中,还可以是:若所述垂直同步信号为偶数位垂直同步信号,所述第一线程为渲染线程,所述第二线程为异步时间扭曲线程;若所述垂直同步信号为奇数位垂直同步信号,所述第一线程为异步时间扭曲线程,所述第二线程为渲染线程。即在垂直同步信号为偶数位垂直同步信号时,利用渲染线程对第一屏幕显示数据和第二屏幕显示数据依次进行渲染,在对第一屏幕显示数据进行渲染后,利用异步时间扭曲线程对渲染后的第一屏幕显示数据进行校正,获得第一屏幕显示校正数据,在对所述第二屏幕显示数据进行渲染后,执行渲染线程对渲染后的第二屏幕显示数据进行校正,获得第二屏幕显示校正数据;若垂直同步信号为奇数位垂直同步信号,执行异步时间扭曲线程对第一屏幕显示数据和第二屏幕显示数据依次进行渲染,在对所述第一屏幕显示数据进行渲染后,执行渲染线程对渲染后的第一屏幕显示数据进行校正,获得第一屏幕显示校正数据,在对所述第二屏幕显示数据进行渲染后,执行异步时间扭曲线程对渲染后的第二屏幕显示数据进行校正,获得第二屏幕显示校正数据。这样通过对渲染线程和异步时间扭曲线程的运行机制进行调整,在奇偶帧对MRT线程和ATW线程分配不同的处理操作,在ATW均超过半帧时间的情况下最大化利用两大线程每一帧的时间,使得在每一帧的抛图操作之前完成渲染、图像校正,能够保证充分利用当前AP处理器的性能,极大程度上改善图5所示的掉帧现象,并通过调整渲染左右眼的起始时间,使得渲染时刻距离所渲染的图像进行显示的时刻均有所缩短。
一些实施例中,执行第二线程对渲染后的第一屏幕显示数据进行校正,获得第一屏幕显示校正数据之后,所述方法还包括:
执行所述第二线程将所述第一屏幕显示校正数据发送给所述第一线程。这样第一线程可以获得第二屏幕显示校正数据和第一屏幕显示校正数据,以将第二屏幕显示校正数据和第一屏幕显示校正数据输出至显示屏进行显示。
一些实施例中,执行所述第二线程将所述第一屏幕显示校正数据发送给所述第一线程之后,所述方法还包括:
执行所述第一线程将所述第一屏幕显示校正数据和所述第二屏幕显示校正数据发送给显示器缓存进行屏幕显示。
一些实施例中,并行地执行所述第一线程和所述第二线程,以获得所述第一屏幕显示校正数据和所述第二屏幕显示校正数据。这样可以进一步减少第一线程和第二线程运行的总时间,使得渲染时刻距离所渲染的图像进行显示的时刻缩短,缓解时延问题。
一些实施例中,所述执行第一线程对第一屏幕显示数据和第二屏幕显示数据依次进行渲染还包括:
预测经过第一预定量的显示器刷新帧的时间之后的第一用户姿态数据,以及基于所述第一用户姿态数据进行渲染以获得所述渲染后的第一屏幕显示数据和第二屏幕显示数据。
其中,上述预测操作例如可以通过分析例如加速度传感器、陀螺仪等运动传感器反馈的运动数据,获得当前用户头部的运动状态,例如运动方向、速度、加速度等,进而预测用户在接下来预定时间点将到达的位置,由此预测用户将要看到的图像。例如,第一用户姿态数据以及下面描述中涉及的其他用户姿态数据可以包括用户所朝向的方向与角度、运动方向与角度、速度、加速度等之一或组合。例如,本公开的实施例中,该预测操作可以通过当前用户姿态,再根据用户姿态的历史数据,计算或预测给定时间之后的用户姿态,由此得到要显示时刻的用户姿态数据。计算或预测的方法包括且不限于利用神经网络进行预测。
可选地,第一预定量的显示器刷新帧为N+0.5个显示器刷新帧,其中N大于等于1。这里,术语“显示器刷新帧”即指代相应的显示装置在进行显示的扫描过程中的帧,以下也简称“帧”。
基于对于当前所使用的虚拟现实装置的一帧显示画面的渲染时间与异步时间扭曲(ATW)处理时间的统计结果,上述N的取值可以不同。上述N的取值仅作为示例。N的取值可以是一个根据CPU的性能所确定的一个固定值,同时 也可以基于当前虚拟现实装置的实际使用情况被动态地调整。例如,在虚拟现实装置的CPU的计算量较大和/或其他线程占用了较大的CPU资源的情况下,渲染线程可能会花费更长的时间来进行处理。在这样的情况下,可以动态地将N的取值调整为较大值,使得渲染的显示数据更接近于应该显示的时刻。同样地,在虚拟现实装置的CPU的计算量较小和/或其他线程占用了较小的CPU资源的情况下,也可以动态地将N的取值调整为较小值。
一些实施例中,所述方法还包括:
预测用于所述第一屏幕显示数据和所述第二屏幕显示数据的显示帧的开始节点的第二用户姿态数据以及所述显示帧的结束节点的第三用户姿态数据;
执行第二线程对渲染后的第一屏幕显示数据进行校正包括:基于所述第二用户姿态数据和所述第三用户姿态数据对所述渲染后的第一屏幕显示数据进行校正,以获得所述第一屏幕显示校正数据;
执行第一线程对渲染后的第二屏幕显示数据进行校正包括:基于所述第二用户姿态数据和所述第三用户姿态数据对所述渲染后的第二屏幕显示数据进行校正,以获得所述第二屏幕显示校正数据。
一些实施例中,基于所述第二用户姿态数据和所述第三用户姿态数据对渲染后的第一屏幕显示数据和第二屏幕显示数据进行校正,包括:
对所述第二用户姿态数据和所述第三用户姿态数据进行插值计算,以获得第一异步时间扭曲校正参照数据,然后基于所述第一异步时间扭曲校正参照数据对所述渲染后的第一屏幕显示数据和第二屏幕显示校正数据进行校正。
这样可以使得第一屏幕和第二屏幕输出的场景图像更接近于用户所期待的画面,减少了画面的撕裂感。
目前,移动终端的处理器基本上都是采用多核多处理器的结构,例如ARM架构的各种版本的处理器,当然也可以为X86架构的各种版本的处理器等。为了更充分地利用各个处理器性能,根据本公开的一些实施例的虚拟现实显示方法可以在移动端虚拟现实应用运行过程中,对渲染线程和ATW线程 的运行过程进行调整。
一具体实施例中,以第一线程和第二线程选自MRT线程和ATW线程为例,如图7和图8所示,虚拟现实显示方法包括以下步骤:
步骤1:初始化MRT和ATW线程,定义记录帧数的计数器VsyncBase,执行步骤2;
步骤2:判断VsyncBase是否为奇数,如果是执行步骤3,如果不是则执行步骤7;
步骤3:MRT线程通过SensorPredicted对图7所示b时刻的用户姿态进行预测,并渲染右眼图像,ATW线程基于SensorPredicted预测图7所示a时刻的用户姿态进行左眼ATW校正(第一帧时左眼图像未渲染则为黑),执行步骤4;
步骤4:MRT线程在渲染完右眼图像后,再次预测b时刻的用户姿态并基于此时的预测数据对右眼图像进行ATW校正;ATW线程在校正完左眼图像后通过EyeBuffer传递给MRT线程待其处理完右眼ATW操作后进行接收,ATW线程继续基于c时刻所预测的用户姿态进行新一帧的左眼图像渲染操作,执行步骤5;
步骤5:MRT线程完成右眼ATW校正后接收ATW线程所传递过来的左眼最终显示数据,执行步骤6;
步骤6:MRT线程将左右眼图像发送给系统帧缓存进行屏幕显示,执行步骤11;
步骤7:ATW线程通过SensorPredicted对图7所示d时刻的用户姿态进行预测,并渲染右眼图像,MRT线程基于SensorPredicted预测图7所示c时刻的用户姿态进行左眼ATW校正,执行步骤8;
步骤8:ATW线程在渲染完右眼图像后,再次预测d时刻的用户姿态并基于此时的预测数据对右眼图像进行ATW校正;MRT线程在校正完左眼图像后通过EyeBuffer传递给ATW线程待其处理完右眼ATW操作后进行接收,MRT线程继续基于e时刻所预测的用户姿态进行新一帧的左眼图像渲染操作,执行步骤9;
步骤9:ATW线程完成右眼ATW校正后接收MRT线程所传递过来的左眼 最终显示数据,执行步骤10;
步骤10:ATW线程将左右眼图像发送给系统帧缓存进行屏幕显示,执行步骤11;
步骤11:判断是否结束应用,若是则退出系统,否则执行步骤12;
步骤12:等待系统Vsync信号,当下一个Vsync到达时执行步骤2。
如图7所示,T1表示左眼渲染时刻到显示时刻的时间跨度,T2表示右眼渲染时刻到显示时刻的时间跨度,图3中T1=1.5帧,1.5帧<T2<2帧;图7中T1<1.5帧,T2=1.5帧;通过对比可知本实施例降低了左右眼图像渲染到显示之间的延时情况。
本实施例中,ATW左眼和右眼校正时间在35ms左右,当输入帧率为75FPS的显示数据时,在不使用本实施例的技术方案的情况下,显示数据的输出帧率为20FPS左右,使用本实施例的技术方案后,显示数据的平均输出帧率能够提升到70FPS;在输入帧率为60FPS的显示数据时,使用本实施例的技术方案后,显示数据的平均输出帧率能够达到60FPS。即使用本实施例的技术方案后,显示数据校正后的输出频率,不低于所述显示数据输入频率的90%。
通过本实施例的技术方案,为移动端高分辨率VR系统加入复杂算法处理以提升显示效果的需求提供了可能性,明显改善系统运行帧率的表现情况;本实施例能够降低移动端高分辨率VR系统的撕裂现象,减轻用户使用VR产品时的眩晕感,并且降低了移动端高分辨率VR系统整体的从渲染场景到最终输出到屏幕的延时,提高了VR体验效果。
此外,在将第一屏幕显示校正数据和第二屏幕显示校正数据输出到屏幕之前还可以对其进行反畸变处理。
反畸变处理是一种将扭曲的图像修正成正常图像的技术。具体地,通常在虚拟现实的应用场景中,特别是头戴式虚拟显示装置中,为了获取更大的视场角,会需要在显示屏前方安装一个透镜。这个透镜的使用在带来更大的视场角的同时,也带来了所显示的图像的畸变。因此,在第一屏幕和第二屏幕使用第一屏幕显示校正数据和第二屏幕显示校正数据显示,还需要对第一屏幕显示校正数据和第二屏幕显示校正数据进行反畸变处理以消除透镜带来 的影响,从而使用户看到的图像更为真实。
可选地,反畸变处理至少可以为基于顶点位移、基于网格和基于片段中的至少一个。
例如,基于片段(pad)的反畸变处理是通过二次渲染将第一屏幕场景图像和第二屏幕场景图像中的像素渲染到纹理上,然后用片段(像素)着色器(例如安卓系统中的相关例程)处理这个纹理,将每一个像素向内移动到眼睛的中心上,从而解决了透镜镜头畸变的问题。
例如,基于网格的反畸变处理则不再是对每个像素进行反畸变处理,而是对网格中的一个或多个网格的顶点进行反畸变处理,从而提高了反畸变处理的速率。
例如,基于顶点位移的反畸变处理则是通过优化着色器(例如安卓系统中的相关例程)来处理显示数据,而不再对显示数据进行二次渲染,能更快地完成反畸变处理。
通常,对于第一屏幕和第二屏幕而言,畸变网络的调整方式和调整矩阵是相同或类似的。因此对于第一屏幕场景输出数据和第二屏幕场景输出数据可以仅需要计算一个畸变网络。在一个线程中计算该畸变网络以对第一屏幕场景输出数据和第二屏幕场景输出数据一起进行反畸变处理相比于分开对第一屏幕场景输出数据和第二屏幕场景输出数据进行反畸变而言,处理时间更短,更有利于减少图像延迟。
本公开实施例还提供了一种虚拟现实显示装置,如图9所示,包括:
多个屏幕21;
处理器22,用于利用至少两个线程中的一个线程对多个屏幕的显示数据依次进行渲染;对所述多个屏幕的显示数据进行渲染后,利用所述至少两个线程对渲染后的显示数据进行校正。
本实施例中,在对多个屏幕的显示数据进行渲染后,利用至少两个线程对渲染后的显示数据进行校正,而不是利用一个线程对渲染后的显示数据进行校正,这样可以最大化利用多个线程的时间,充分利用当前处理器的性能,极大程度上改善掉帧现象。
其中,所述至少两个线程可以包括两个线程或者三个线程或者更多个线程,所述多个屏幕可以包括两个屏幕或者三个屏幕或者更多个屏幕,其中,所述多个屏幕的显示数据各不相同。
本实施例中,利用至少两个线程中的一个线程对多个屏幕的显示数据依次进行渲染,是指处理器22利用该线程对第一个屏幕的显示数据进行渲染后,再对第二个屏幕的显示数据进行渲染,之后再对第三个屏幕的显示数据进行渲染,以此类推,依次完成多个屏幕的显示数据的渲染。
本公开实施例的虚拟现实显示方法可以包括两个并行运行的线程,第一线程和第二线程。例如,该虚拟现实显示方法可用于包括左眼显示屏与右眼显示屏的虚拟现实显示装置或增强现实显示装置,例如虚拟显示显示头盔、增强现实显示头盔等,该虚拟现实显示装置还可以包括例如陀螺仪、加速度传感器等的运动传感器、中央处理单元(CPU)、存储器、图像处理单元(GPU)、通信装置等。该方法例如可以通过用于该虚拟现实显示装置的中央处理单元或图像处理单元配合相应的计算机程序代码来执行,该虚拟现实显示装置可以采用各种适当的操作系统,例如安卓(And roid)系统、Linux系统、Unix系统或视窗(Windows)系统等,下面以安卓系统为例进行说明,但是本公开的实施例对此不作限制。
一具体实施例中,所述至少两个线程包括第一线程和第二线程,所述多个屏幕包括第一屏幕和第二屏幕,处理器22具体用于执行所述第一线程对第一屏幕显示数据和第二屏幕显示数据依次进行渲染;在对所述第一屏幕显示数据进行渲染后,执行所述第二线程对渲染后的第一屏幕显示数据进行校正,获得第一屏幕显示校正数据;在对所述第二屏幕显示数据进行渲染后,执行所述第一线程对渲染后的第二屏幕显示数据进行校正,获得第二屏幕显示校正数据。
本实施例中,不会等待至第一线程对所述第二屏幕显示数据进行渲染后才对渲染后的第一屏幕显示数据进行校正,而是在第一线程对第一屏幕显示数据进行渲染后,就执行第二线程对渲染后的第一屏幕显示数据进行校正,并在第一线程对所述第二屏幕显示数据进行渲染后,执行所述第一线程对渲 染后的第二屏幕显示数据进行校正,这样可以最大化利用两个线程每一帧的时间,使得在每一帧的抛图操作之前完成渲染、图像校正,充分利用当前处理器的性能,极大程度上改善掉帧现象;并且通过调整渲染的起始时间,使得渲染时刻距离所渲染的图像进行显示的时刻均有所缩短,降低图像渲染到显示之间的延时情况。
其中,该第一屏幕显示数据和第二屏幕显示数据例如是从存储装置中读取预存的图像数据,例如对于虚拟现实显示装置,该预存的图像数据包括相应应用的图像数据,例如关于游览的博物馆、赛车游戏的赛道等图像数据。
可选地,第一屏幕可以为显示用户左眼所看到的图像的屏幕,第二屏幕可以为显示用户右眼所看的图像的屏幕。第一屏幕显示数据可以包括用户左眼的视野中所应当呈现的对象的各个参数,而第二屏幕显示数据可以包括用户右眼的视野中所应当呈现的对象的各个参数。如上所述,第一屏幕和第二屏幕的含义可以互换,并且该第一屏幕和第二屏幕可以为各种类型的显示屏,例如可以为液晶显示屏(LCD)、有机发光二极管显示屏(OLED)、微发光二极管(Micro-LED)显示屏等。这些显示装置例如通过逐行扫描等方式实现一帧显示图像的刷新。
为使得用户在使用虚拟现实设备时,虚拟现实设备所呈现的图像能够是该用户在视野中的所能观察到的所有对象,通常情况下需对用户视野范围内所有对象进行渲染。同时,需要给用户的左眼和右眼呈现不同的图像(也即是形成视差),然后用户的大脑将左右眼不同的图像进行合成,从而给用户呈现视觉上具有立体感的图像。由此,第一屏幕显示数据和第二屏幕显示数据中,对于同一对象的参数也可能不同。比如对于同一对象,左眼和右眼所观察到的该对象的位置,和光线通过该对象折射到左右眼的情况也可能会不同,因此,
在本公开中,对第一屏幕显示数据和第二屏幕显示数据两者均进行渲染。采用这样的方式,相比于先对对象进行整体渲染再将渲染输出结果通过仿射变换分别输出至第一屏幕和第二屏幕,可以得到更加准确、立体感更强的图像。
本实施例中,所述第一线程和所述第二线程选自渲染线程和数据校正线程,且所述第一线程与所述第二线程不相同。其中,数据校正线程可以是上述异步时间扭曲。
可选地,对第一屏幕显示数据和第二屏幕显示数据进行的渲染为多渲染目标渲染。
多渲染目标渲染技术可以将多个像素的数据保存到不同的缓冲区(例如,用于颜色贴图的缓冲区、用于法线贴图的缓冲区和用于深度贴图的缓冲区)中,以使得这些数据成为后续的光照效果着色器的参数,使得输出的图像的精细度得以提高。通过多渲染目标渲染技术,可以延迟对光照信息的渲染,提高渲染的处理速度。同时,由于是分别对第一屏幕显示数据和第二屏幕显示数据进行渲染,因此需要将第一屏幕显示数据和第二屏幕显示数据中的各个对象的像素数据分别保存到上述的缓存区,然后再在光照效果着色其中对上述数据进行解析,从而增强第一屏幕和第二屏幕中显示的图像的光照效果。相比于通常的利用光照着色器对于整个场景中的每个像素分别进行光照着色计算,在本公开的实施例中,分别对第一屏幕显示数据和第二屏幕显示数据进行多渲染目标渲染可以减少处理器进行光照着色计算的运算次数,并可以获取增强的光照效果的图像。
本实施例中,所述装置还包括:
时钟产生器,用于产生垂直同步信号;
所述处理器22具体用于获取垂直同步信号,基于所述垂直同步信号执行所述第一线程和所述第二线程,第一线程和第二线程可以根据垂直同步信号,对第一屏幕显示数据和第二屏幕显示数据进行渲染,从而得到用户希望看见的画面,这样可以增加第一屏幕显示和第二屏幕显示的同步性。具体地,垂直同步信号(Vertical synchronization,Vsync)为施加至显示装置两帧之间的同步信号,其指示着前一帧的结束和下一帧的开始。在每进行一帧扫描之前,该信号就有效一次,由该信号可以确定显示装置的场频,即每秒屏幕的刷新次数,又可称为显示装置的刷新频率。例如,显示装置的刷新频率可以为60Hz、120Hz等,即每秒刷新60次、120次等,一个显示帧时间为1/60秒、1/120秒等。 该垂直同步信号例如由显示驱动装置(例如显卡)产生,并用于在显示过程中同步显示一帧画面所需的栅极驱动信号、数据信号等。
一些实施例中,对系统发出的垂直同步信号进行奇偶划分,若所述垂直同步信号为奇数位垂直同步信号,所述第一线程为渲染线程;若所述垂直同步信号为偶数位垂直同步信号,所述第一线程为数据校正线程;或,若所述垂直同步信号为偶数位垂直同步信号,所述第一线程为渲染线程;若所述垂直同步信号为奇数位垂直同步信号,所述第一线程为数据校正线程。
具体地,以数据校正线程为异步时间扭曲线程为例,若所述垂直同步信号为奇数位垂直同步信号,所述第一线程为渲染线程,所述第二线程为异步时间扭曲线程;若所述垂直同步信号为偶数位垂直同步信号,所述第一线程为异步时间扭曲线程,所述第二线程为渲染线程;即在垂直同步信号为奇数位垂直同步信号时,利用渲染线程对第一屏幕显示数据和第二屏幕显示数据依次进行渲染,在对第一屏幕显示数据进行渲染后,利用异步时间扭曲线程对渲染后的第一屏幕显示数据进行校正,获得第一屏幕显示校正数据,在对所述第二屏幕显示数据进行渲染后,执行渲染线程对渲染后的第二屏幕显示数据进行校正,获得第二屏幕显示校正数据;若垂直同步信号为偶数位垂直同步信号,执行异步时间扭曲线程对第一屏幕显示数据和第二屏幕显示数据依次进行渲染,在对所述第一屏幕显示数据进行渲染后,执行渲染线程对渲染后的第一屏幕显示数据进行校正,获得第一屏幕显示校正数据,在对所述第二屏幕显示数据进行渲染后,执行异步时间扭曲线程对渲染后的第二屏幕显示数据进行校正,获得第二屏幕显示校正数据。这样通过对渲染线程和异步时间扭曲线程的运行机制进行调整,在奇偶帧对MRT线程和ATW线程分配不同的处理操作,在ATW均超过半帧时间的情况下最大化利用两大线程每一帧的时间,使得在每一帧的抛图操作之前完成渲染、图像校正,能够保证充分利用当前AP处理器的性能,极大程度上改善图5所示的掉帧现象,并通过调整渲染左右眼的起始时间,使得渲染时刻距离所渲染的图像进行显示的时刻均有所缩短。
另一具体示例中,还可以是:若所述垂直同步信号为偶数位垂直同步信 号,所述第一线程为渲染线程,所述第二线程为异步时间扭曲线程;若所述垂直同步信号为奇数位垂直同步信号,所述第一线程为异步时间扭曲线程,所述第二线程为渲染线程。即在垂直同步信号为偶数位垂直同步信号时,利用渲染线程对第一屏幕显示数据和第二屏幕显示数据依次进行渲染,在对第一屏幕显示数据进行渲染后,利用异步时间扭曲线程对渲染后的第一屏幕显示数据进行校正,获得第一屏幕显示校正数据,在对所述第二屏幕显示数据进行渲染后,执行渲染线程对渲染后的第二屏幕显示数据进行校正,获得第二屏幕显示校正数据;若垂直同步信号为奇数位垂直同步信号,执行异步时间扭曲线程对第一屏幕显示数据和第二屏幕显示数据依次进行渲染,在对所述第一屏幕显示数据进行渲染后,执行渲染线程对渲染后的第一屏幕显示数据进行校正,获得第一屏幕显示校正数据,在对所述第二屏幕显示数据进行渲染后,执行异步时间扭曲线程对渲染后的第二屏幕显示数据进行校正,获得第二屏幕显示校正数据。这样通过对渲染线程和异步时间扭曲线程的运行机制进行调整,在奇偶帧对MRT线程和ATW线程分配不同的处理操作,在ATW均超过半帧时间的情况下最大化利用两大线程每一帧的时间,使得在每一帧的抛图操作之前完成渲染、图像校正,能够保证充分利用当前AP处理器的性能,极大程度上改善图5所示的掉帧现象,并通过调整渲染左右眼的起始时间,使得渲染时刻距离所渲染的图像进行显示的时刻均有所缩短。
本实施例中,ATW左眼和右眼校正时间在35ms左右,当输入帧率为75FPS的显示数据时,在不使用本实施例的技术方案的情况下,显示数据的输出帧率为20FPS左右,使用本实施例的技术方案后,显示数据的平均输出帧率能够提升到70FPS;在输入帧率为60FPS的显示数据时,使用本实施例的技术方案后,显示数据的平均输出帧率能够达到60FPS。即使用本实施例的技术方案后,显示数据校正后的输出频率,不低于所述显示数据输入频率的90%。
一些实施例中,所述处理器22还用于执行所述第二线程将所述第一屏幕显示校正数据发送给所述第一线程。这样第一线程可以获得第二屏幕显示校正数据和第一屏幕显示校正数据,以将第二屏幕显示校正数据和第一屏幕显示校正数据输出至显示屏进行显示。
一些实施例中,所述处理器22还用于执行所述第一线程将所述第一屏幕显示校正数据和所述第二屏幕显示校正数据发送给显示器缓存进行屏幕显示。一些实施例中,并行地执行所述第一线程和所述第二线程,以获得所述第一屏幕显示校正数据和所述第二屏幕显示校正数据。这样可以进一步减少渲染线程和异步时间扭曲线程运行的总时间,使得渲染时刻距离所渲染的图像进行显示的时刻缩短,缓解时延问题。
一些实施例中,所述执行第一线程对第一屏幕显示数据和第二屏幕显示数据依次进行渲染还包括:
预测经过第一预定量的显示器刷新帧的时间之后的第一用户姿态数据,以及基于所述第一用户姿态数据进行渲染以获得所述渲染后的第一屏幕显示数据和第二屏幕显示数据。
其中,上述预测操作例如可以通过分析例如加速度传感器、陀螺仪等运动传感器反馈的运动数据,获得当前用户头部的运动状态,例如运动方向、速度、加速度等,进而预测用户在接下来预定时间点将到达的位置,由此预测用户将要看到的图像。例如,第一用户姿态数据以及下面描述中涉及的其他用户姿态数据可以包括用户所朝向的方向与角度、运动方向与角度、速度、加速度等之一或组合。例如,本公开的实施例中,该预测操作可以通过当前用户姿态,再根据用户姿态的历史数据,计算或预测给定时间之后的用户姿态,由此得到要显示时刻的用户姿态数据。计算或预测的方法包括且不限于利用神经网络进行预测。
可选地,第一预定量的显示器刷新帧为N+0.5个显示器刷新帧,其中N大于等于1。这里,术语“显示器刷新帧”即指代相应的显示装置在进行显示的扫描过程中的帧,以下也简称“帧”。
基于对于当前所使用的虚拟现实装置的一帧显示画面的渲染时间与异步时间扭曲(ATW)处理时间的统计结果,上述N的取值可以不同。上述N的取值仅作为示例。N的取值可以是一个根据CPU的性能所确定的一个固定值,同时也可以基于当前虚拟现实装置的实际使用情况被动态地调整。例如,在虚拟现实装置的CPU的计算量较大和/或其他线程占用了较大的CPU资源的情况 下,渲染线程可能会花费更长的时间来进行处理。在这样的情况下,可以动态地将N的取值调整为较大值,使得渲染的显示数据更接近于应该显示的时刻。同样地,在虚拟现实装置的CPU的计算量较小和/或其他线程占用了较小的CPU资源的情况下,也可以动态地将N的取值调整为较小值。
一些实施例中,所述处理器22还用于预测用于所述第一屏幕显示数据和所述第二屏幕显示数据的显示帧的开始节点的第二用户姿态数据以及所述显示帧的结束节点的第三用户姿态数据;执行第二线程对渲染后的第一屏幕显示数据进行校正包括:基于所述第二用户姿态数据和所述第三用户姿态数据对所述渲染后的第一屏幕显示数据进行校正,以获得所述第一屏幕显示校正数据;执行第一线程对渲染后的第二屏幕显示数据进行校正包括:基于所述第二用户姿态数据和所述第三用户姿态数据对所述渲染后的第二屏幕显示数据进行校正,以获得所述第二屏幕显示校正数据。
一些实施例中,所述处理器22还用于对所述第二用户姿态数据和所述第三用户姿态数据进行插值计算,以获得第一异步时间扭曲校正参照数据,然后基于所述第一异步时间扭曲校正参照数据对所述渲染后的第一屏幕显示数据和第二屏幕显示校正数据进行校正。这样可以使得第一屏幕和第二屏幕输出的场景图像更接近于用户所期待的画面,减少了画面的撕裂感。
本公开提供的装置可以包括但不限于智能手机、平板电脑、媒体播放器等。需要说明的是,为表示清楚,并没有给出该装置的全部结构。为实现该装置的必要功能,本领域技术人员可以根据具体应用场景进行设置其他未示出的结构,本公开对此不做限制。
此外,根据本公开的一些实施例还提供了一种虚拟现实显示装置,其包括处理器和存储器,在存储器上存储了计算机程序指令。计算机可执行指令在被计算机运行时可以实现根据本公开实施例的虚拟现实显示方法。
此外,根据本公开的一些实施例还提供了一种计算机可读存储介质,存储有计算机可执行指令,计算机可执行指令由处理器执行时以进行如上所述的虚拟现实显示方法。
该计算机可读存储介质可以是一个或多个计算机可读存储介质的任意组 合,例如一个计算机可读存储介质包含用于随机地生成动作指令序列的计算机可读的程序代码,另一个计算机可读存储介质包含用于进行人脸活动识别的计算机可读的程序代码。
一般而言,本公开的各种示例实施例可以在硬件或专用电路、软件、固件、逻辑,或其任何组合中实施。某些方面可以在硬件中实施,而其他方面可以在可以由控制器、微处理器或其他计算设备执行的固件或软件中实施。当本公开的实施例的各方面被图示或描述为框图、流程图或使用某些其他图形表示时,将理解此处描述的方框、装置、系统、技术或方法可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备,或其某些组合中实施。
本公开实施例中的处理器可以是一种集成电路芯片,具有信号的处理能力。上述处理器可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器,或者该处理器也可以是任何常规的处理器等,可以是X86架构或ARM架构的。
本公开实施例中的计算机可读存储介质可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)或闪存。易失性存储器可以是随机存取存储器(RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、双倍数据速率同步动态随机存取存储器DDRSDRAM)、增强型同步动态随机存取存储器(ESDRAM)、同步连接动态随机存取存储器(SLDRAM)和直接内存总线随机存取存储器(DR RAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
在本公开各方法实施例中,所述各步骤的序号并不能用于限定各步骤的 先后顺序,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,对各步骤的先后变化也在本公开的保护范围之内。
需要说明,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于实施例而言,由于其基本相似于产品实施例,所以描述得比较简单,相关之处参见产品实施例的部分说明即可。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。