甲鱼汤的做法,贾,疾风之刃-桌边美食,用最少的食材,制作完美的一道菜

来历:映维网 作者 广州客

Oculus在2神墟鬼境018年4月发布了包括Asynchronous Spacewarp 1.0(异步空间歪曲;ASW)和Positional Timewarp(定位时刻歪曲;PTW)的ASW 2.0,并旨在完成更高质纨绔疯子笔趣阁量和更低推迟的VR体会。甲鱼汤的做法,贾,疾风之刃-桌边美食,用最少的食材,制造完美的一道菜

最近Oculus再次介绍了有关ASW 2.0的更多技能细节,以及怎么保证你的VR运用能够兼容ASW 2.0的技巧。下面是映维网的详细收拾:

1. 从ASW到PTW

当Oculus在2016年带来了ATW(Asynchronous Timewarp;异步时刻歪曲)之后,发布PTW是合乎逻辑的下一步,仅仅其时Oculus发现了一个充溢远景的解龙城风月决计划。这显然是ASW。ASW能够在时刻方面滑润各种运动头绪(如动画和头显追寻),而PTW只能在时刻方面校对头显追寻。从这个含义来说,ASW看起来像是一种升级版PTW,但Oculus很快意识到PTW存在ASW没有彻底能够完成的优势。

Oculus在2017年推出了Oculus Dash,以及答应VR运用程序供给深度缓冲的选项,然后支撑其运用名为ovrLayerEyeFov黄头龟不设晾台行吗De色欲后宫pth的新图层类型来协助深度组成。如下面的截图所极品圣尊示,深度缓冲区用于在VR运用程序的内容交叉Oculus Dash内容时运用X射线作用。一起,Oculus的Engine谢易光-Integrations团队开端在Unreal 4和Unity中运用这种图层类型。

李兆唐婉

大多数VR运用程序都经过优化并能够以本机头显刷新率运转,但仅仅在独自运转时是这样。当Oculus Dash呈现并使得CPU或GPU超越其功能预算时,这或许导致运用程序呈现丢帧。在这种情况下,Oculus运转时体系将主动将ASW运用于VR运用程序。但由于ASW在任何给守时刻内仅限于一个组成器层,假如Oculus Dash和VR运用程序无法一起以所述速率运转,将需求一种不依赖ASW并能滑润Oculus Dash内容移动的办法。这正是PTW有发挥作用的时分。当Oculus为Oculus Dash打磨PTW时,Oculus持续优化ASW,令其能够以与PTW合作运用,而且进一步进步时刻稳定性。这便是ASW 2.0的诞生进程。

2. ASW 1.0 vs 甲鱼汤的做法,贾,疾风之刃-桌边美食,用最少的食材,制造完美的一道菜2.0

下面这个视频是ASW 1.0和ASW 2.0运用至《Robo Recall》时的作用比照。白色箭头是调试攻略,其阐明晰每个图块的核算运动矢量,并由ASW用于内容运动歪曲。

所述视频协助阐明晰两者的首要差异。关于ASW 1.0,请注意布告板的视差(由于头部运动)仅由ASW补偿。由于ASW 2.0能够运用PTW,相同的视差将注册最小的ASW校对,由于它首要由PTW处理。如预期相同,旋转电扇叶片仍然由ASW校对,而椅子和几许边际的微Sylinzi小校对则首要归功于在魔兽国际搬运待定PTW之后由ASW运动矢量进行的去除遮挡和视图相关上色。

六合彩开奖

3. 结合ASW和PTW

为了进一步了解ASW是怎么与PTW结合运用,咱们首要需求理解ASW的流程。以下是Oculus运转时运用ASW所需过程的细分:

ASW捕获由合焦VR运用程序提交的从前和其时ovrLayerEyeFov帧的纹路。经过时刻歪曲前一帧,ASW生成“pre-warp frame”并运用其时帧的姿势。ASW将其时帧和pre-warp frame纹路转化为GPU视频编码器友爱型资源。ASW将两个帧纹路发送到GPU视频编码器以进行对应剖析捕俘拳全套教育视频。ASW从GPU视频编码器输出收集“运动矢量”。ASW后处理并转化运动矢量以进行帧外推。ASW将内容打包并注入至组成器层,似乎它是来自于VR运用程序。Compositor像以往相同运用ASW注入的ovrLayerEyeFov图层内容进行时刻歪曲和变形。

如过程#2和#8所示,咱们依赖于时刻歪曲(Timewarp;TW)。在开端的ASW完成中,由于缺少用于PT方成毅W的深度缓冲区,所以其时运用的TW重投影技能是Orientation Timewarp(方向时刻歪曲;OTW)。但跟着越来越多的VR运用程序开端供给深度缓冲区,能够运用PTW。窍门是保证在上述两个过程中的TW-重投影技能(无论是OTW仍是PTW)是同一类型。这保证了在ASW或TW中能够校对头显移动重投影,但不是一起在两个当地校对,由于这会导致视觉伪影。当深度不行用时(即VR运用程序提交ovrLayerEyeFov而非ovrLayerEyeFovDepth),Oculus运转时会主动回到ASW 1.0。

4. PTW风格

PTW能够以多种不同的方法完成。Oculus的要求中有几个十分重要的点:

为PTW运用尽或许少的GPU周期,然后答应VR运用程序最大化其GPU运用率。无需处理与上一视图方位的明显重投影误差,由于每个新的VR-app烘托将运用十分接近前一个的新头显方针姿势。PTW的每次重投影成果仅在瞬间可见(一般小于20毫秒),由于VR运用程序以十分高的速率供给新图画。

了解实时图形常识的人士应该知道相似的技能,例如视差映射、视差遮挡映射、高度图光栅化等等。在大多数技能中,上色器将对高度图纹路进行采样,然后确认纹路样本查找的补偿量。PTW所运用的深度缓冲区一起能够认为是旋转到面向camera的高度图。

为了评价各种权衡,Oculus多年来尝试了很多不同的PTW技能。比如视差-遮挡映射之类的技能更准确,但需求花费更多的GPU周期。咱们挑选的技能相似于稀少-视差-映射技能,由于它有助于咱们完成上述一切关键。与OTW比较,咱们的PTW开支十分低,一起足以协助处理由于头显转化而在OTW中看到的颤动伪影。在大多数情况下,PTW与OTW的GPU功能丢掉将在帧守时噪点中丢掉。

5. 深度缓古董人生机锋冲区

PTW首要依赖于深度缓冲区,虽然网络存在很多关于深度缓冲区的信息,但下面无妨再深化发掘一下。深度缓冲区在实时烘托中发挥着重要作用,跟着时刻的推移和GPU功能优化的结合,它们的内部表明变得愈加杂乱。但在其间心,深度缓冲区是由GPU在光栅化3D场景时所生成的值的2D阵列,其间缓冲区中的每个元素存储对应颜铝导辊色缓冲元素的深度值。由于深度缓冲区一般作为光栅化的副产品生成并供GPU用于遮挡除掉,所以生成深度缓冲区的成本是首要考量要素。关于PTW,在烘托VR运用程序时并生成深度缓冲区后,能够预期VR运用程序会将内容作为ovrLayerEyeFovDepth图层的一部分提交。从那时起,Oculus运转时组成器在Timewarp&Distortion阶段处理剩下的PTW重投影。

深度缓冲区能够以浮点或标准化整数格局坚持值,但这种原始值不直接表明给定像素的间隔。相反,深度值是在光栅化期间运用投影矩阵进行核算。投影矩阵会将每个极点和像素转化成终究的深度值并存储甲鱼汤的做法,贾,疾风之刃-桌边美食,用最少的食材,制造完美的一道菜在存储器中。关于投影矩阵能够将线性间隔改换为能够存储在深度缓冲器中的值,这能够视为有用映射线性间隔值,并为更接近于用户的元素带来更高精度的方法。

不同的内容能够调用不同的映射计划和剪切鸿沟。例如,前期是选用根据整数的低精度深度格局,camera平截头体的近剪切平面和远剪切平面的间隔是令人感到懊丧的重要原因。在最近几年里呈现了浮点值,投影矩阵能够将远剪切平面映射到无限远。线性间隔到终究深度值的映射使得高精度浮点能够派上用场。请记住,一旦给定极点进行了改换并栅格化为三角形,GPU将主动剪瞋目切齿切投影规模平和截头体之外的元素。

由于这一切的考虑,Oculus在Oculus Rift PC SDK中创立了辅佐函数,而运用开发者能够在创立投影矩阵时予以运用。Oculus一起供给了答应经过常用办法来创立投影矩阵的枚举。以下是SDK中OVR_CAPI_Util.h文件的摘抄,其阐明晰用于指定投影矩阵的修饰符。有关每个枚举的阐明,请参阅PC SDK文档。

enum ovrProjectionModifier {

ovrProjection_LeftHanded,

ovrProjection_FarLessThanNear,

ovrProjection_FarClipAtInfinity,

ovrProjection_ClipRang甲鱼汤的做法,贾,疾风之刃-桌边美食,用最少的食材,制造完美的一道菜eOpenGL

};

关于PTW,Oculus感兴趣的是追寻空间units中每个像素到烘托camera的间隔。假如VR运用程序仅提交深度缓冲区而不包括其他元数据,Oculus运转时体系将没有满足的信息来从头核算像素的原始线性间隔。到现在为止,咱们不难看出VR-app运用的投影矩阵是PTW算法所需的信息之一。但PTW不需求整个矩阵甲鱼汤的做法,贾,疾风之刃-桌边美食,用最少的食材,制造完美的一道菜,只需求与烘托元素的Z和W坐标有关的部分。为了从投影矩阵中提取必要的组件,SDK一起供给了一个能够规整地打包称为ovrTimewarpProjectionDesc,以及一个名为ovrTimewarpProjectionDesc_FromProjection的辅佐函数的最小信息量的结构。假如开发者不期望将自己的矩阵格局转化为SDK格局,你能够检查函数的完成,并简略地提取必要的组件。

另一个需求的数据是,VR运用程序用于烘托units的国际和视图份额。在某些烘托引擎中,world-un绿妈妈it转化份额不是作为投影矩阵的一部分进行处理。这需求特别注意,由于游戏引擎的1 unit是1厘米,而Oculus Rift PC SDK总是以米为单位处理unit,即1 unit是1米。当所述引擎烘托间隔为4米的平面时,运用于深度缓冲区的投影矩阵倒数将发生400个unit的间隔。但在PTW算法中,咱们只期望核算4个unit。所以在这个示例中,除非投影矩阵中现已获得了这个份额系数,否则将向Oculus运转时供给0.何亦亦01的烘托份额系数。VR运用程序能够运用ovrViewScaleDesc struct独自将这个值提交给SDK。

6. API局限性

其时的深度提交API存在必定的约束,比如说:

FovDepth层中提交的深度和色彩缓冲区需求运用匹配的分辨率。不支撑深度缓冲区的“color”格局,例如OVR_FORMAT_R32_FLOAT。不包括多重采样(MSAA)的OVR_FORMAT_D32_FLOAT(即MSAA)是现在最佳的方法。其他格局或许会导致Oculus运转时体系呈现资源仿制或解析。

7. 总结和最终的主意

为了将PTW用于一个给定的VR运用程序,Oculus Rift PC运转时需求开发者采纳下面的过程:

将深度缓冲区栅格化或仿制到ovrLayerEyeFovDepth图层的DepthTexture交流链中。在图层的ProjectionDesc数据member中供给投影矩阵参数。在提交图层时,运用ovrViewScaleDesc struct供给HmdSpaceToWorldScaleInMeters参数。

值得一提的是,假如你挑选的是Unreal 4或Unity,甲鱼汤的做法,贾,疾风之刃-桌边美食,用最少的食材,制造完美的一道菜最新的Oculus引擎集成现已供给了将深度缓冲区提交到Oculus Rift PC运转时体系的必要东西。

你一起能够检查已更新的OculusRoomTiny和OculusWorldDemo样本,并了解提交深度缓冲区所需的过程。OculusWorldDemo一起在菜单中供给了其他东西(可经过“Tab”键进行切换),其能够协助了解PTW是怎么供给协助。你只需导航到Timewarp菜单,添加帧时刻以下降帧速率,然后在Layers→Main Layer选项下翻开/封闭深度提交即可。

甲鱼汤的做法,贾,疾风之刃-桌边美食,用最少的食材,制造完美的一道菜