5万字
https://developer.pico-interactive.com/document/doc
- Pico的框架和Android原生的对比
- 开发Pico应用和开发UnityMobile的区别
- Job对应Pico框架的哪些层
-
SDK提供 https://developer.pico-interactive.com/document/doc 为unity提供 扩展能力么?支付、统计、SDK
-
FOV 6 DoF追踪类型 两只 6 DoF 手柄(红外光学追踪) 四个单目鱼眼相机 眼球追踪双目 60/90 Hz
-
分层
- 应用层 - Unity\UE应用 、 Native应用
- 桥接层SDK - PicoSdk 设备能力桥接层。帧率、MSAA倍数、内容保护、支付。按键映射等。
** Pico Unity XR SDK 面向通过 Unity 引擎进行 VR 应用开发的开发者。
** 生产端为unity提供相互调用。C#中固定的反射流程调用java层代码。
** 如何为Unity开发Android插件套装。unity侧的配置面板、c#中调用、unityPreview运行时的模拟、插件打包流程、android运行时流程。 https://docs.unity3d.com/cn/2020.3/Manual/PluginsForAndroid.html
** 常规的SDK要提供能力实现层,但是pico的提供的跨进程的接口层,对应能力实现在系统层。 -
平台API能力层 - 对上提供基础能力,由service提供的,跨进程方案。
跨进程基础能力
- 系统层 - PicoUi 定制化的Android系统?Launch是3D么? 基于Android的VR交互系统。新增功能、不断的提升,达到VR交互、图像效果、系统性能更出色,给用户一个流畅愉悦的体验。不断的优化系统性能和稳定性。【重点】https://developer.pico-interactive.com/pui/rom
开发者工具层- PreviewToolsApk MetricsTool
-
系统层VR交互
Unity UI is a UI toolkit for developing user interfaces for games and applications. It is a GameObject-based UI system that uses Components and the Game View to arrange, position, and style user interfaces. You cannot use Unity UI to create or change user interfaces in the Unity Editor. -
引用层性能优化
unity中的常规优化 https://developer.pico-interactive.com/document/doc
drawcall cpu压力
overdraw gpu压力
内存
Multiview 能力实现了用一个摄像机完成立体渲染,可减少一半的绘制调用(draw call)和遮罩剔除(occlusion culling),并明显提升复杂场景的帧率。
通常情况下,若设备的分辨率不够高,图像边缘会呈现锯齿状。抗锯齿能力通过一系列的算法,使用中间色调包围锯齿边缘,使其平滑,但会在一定程度上使边缘更加模糊。
- VR合成层
通常来说,Pico VR 应用的场景内容渲染流程如下:
左右眼相机将场景内容渲染到 Eye Buffer 上。
绘制完成后,ATW 线程对 Eye Buffer 进行畸变、采样等处理。
处理完毕后,场景内容最终被渲染到屏幕上。
通过 VR 合成层,不需要将场景内容绘制到到 Eye Buffer 上,而是直接透传给 ATW 线程进行畸变、采样、合成等处理。因此,整个渲染流程更加简单,减少一次额外的纹理采样操作,并提高纹理和视频的清晰度。 - 性能分两方面,渲染引擎性能优化(Unity、drawcall、overdraw)、系统性能设置(分辨率、帧率、多layer)
2.1 引擎优化
2.1.1 Multiview 能力实现了用一个摄像机完成立体渲染,可减少一半的绘制调用(draw call)和遮罩剔除(occlusion culling),并明显提升复杂场景的帧率。 - XR接口
https://docs.unity3d.com/Manual/xrsdk-display.html
- TODO
1.1 跨进程录屏。Binder共享内存机制、surface生产消费模式
1.2 MVP坐标转换。
1.2.1 模拟有一个双目相机的渲染过程,纹理宽度是单眼的两倍。有两种方案,绘制一次(shader内存在两个视图矩阵,左右眼)、绘制两次(只有一个视图矩阵,每次绘制重新更新MVP) 。https://docs.unity3d.com/Manual/SinglePassStereoRendering.html 。相比独立两次渲染。 Multiview 能力实现了用一个摄像机完成立体渲染,可减少一半的绘制调用(draw call)和遮罩剔除(occlusion culling),并明显提升复杂场景的帧率。实现的方案是,shader中存在两个视图矩阵。
Use cases for UnityXRRenderPass include the following:
优化前 Two-pass stereo rendering (2 RenderPass x 1 RenderParams)
优化后 Single pass stereo rendering (1 RenderPass x 2 RenderParams)
1.2.2 模拟一个360度自动旋转的场景,里面的每个物体的坐标是咋样的呢?或者用threejs,查看深度buffer。
1.2.1 视锥裁剪、遮罩裁剪。
遮罩裁剪可以移除完全看不到的物体,是CPU阶段,原理是unity为每个object生成包围盒子,有相机发射均匀射线,打到哪些物体,不是GPU中深度buffer阶段,减少drawcall。
https://blog.csdn.net/lanazyit/article/details/108589839。 https://docs.unity3d.com/cn/2020.3/Manual/OcclusionCulling.html
1.3 异步渲染到底有哪些优势呢?多线程渲染:低延迟和帧后处理。
一个渲染管线功能通常包含:剔除、渲染、后期处理
1.4 知道性能瓶颈工具
GPU Profiler
Frame Debugger
查看DrawCall






网友评论