Adaptive Motion Compositor (AMC)

Introduction

Adaptive Motion Compensator (AMC) provides two compensators to improve the smoothness on low FPS application: Universal motion compositor(UMC) and Positional motion compsoitor(PMC)

Universal motion compositor(UMC)

UMC tracking motions from submit frames, and extrapolate new frame in real time to keep visual smoothness on low FPS application.

UMC can warp all moving objects such as controller or animation. UMC is an experimental feature and recommended on lightweight GPU loading app. UMC is an experimental feature. Please notice following condition while turn on UMC:

  • UMC will force submit FPS to half of refresh rate.
  • UMC only warp the center 1/3 area.
  • Do not support multi-layer and overlay.
  • Visual artifact may occurs on edge of moving object.


UMC on/off comparsion.

Positional motion compositor(PMC)

PMC combines depth information with 3-dof ATW and extend to a 6-dof compensation. It can reduce jitter from HMD’s translation. However, it can not warp the moving objects which is not relate to HMD’s movement, such as controller.

PMC is an experimental feature. Please notice following condition while turn on PMC:

  • It only support on Unity XR SDK plugin.
  • MSAA should be OFF.
  • Do not support multi-layer and overlay.
  • Visual artifact may occurs on edge of moving object.
  • FPS drops.


PMC on/off comparsion.

How to use

AMC is an experimental feature. Please try this feature on Unity XR SDK plugin with Force_UMC or Force_PMC mode. AMC will be disable when AQ mode is Qulity mode.

AMC Mode Behavior
Off Default, turn off AMC.
Force_UMC Force on UMC.
Auto Dynamic switch UMC/PMC/OFF. Depends on AQ mode and FPS. Works on specific app.
Force_PMC Force on PMC.

Developer can verify current AMC mode via following adb log pattern:

03-31 01:23:45.678 PID TID I UMC : State: Pre_Mode -> Next_Mode.

Next_Mode AMC mode
Warping UMC
PMC PMC
Prepare Off, but halve FPS
Idel Off
Tracking Off
Mute Off

Since UMC may not warp every frame in GPU heavy loading scene. Developer can verify the UMC’s “hit rate” via following adb log pattern:

03-31 01:23:45.678 PID TID I DISEngine : UMC: Hit rate: 100.000000