[AR Foundation](https://unity.com/unity/features/arfoundation) is a
cross-platform framework that allows you to build augmented reality experiences
once, then build for either Android or iOS devices.
**ARCore Extensions for AR Foundation** enables additional ARCore functionality
and features that are not (yet) exposed through AR Foundation and the
[ARCore XR plugin](https://docs.unity3d.com/Packages/com.unity.xr.arcore@4.2/manual) on
Android and the
[ARKit XR plugin](https://docs.unity3d.com/Packages/com.unity.xr.arkit@4.2/manual) on
iOS.

| ARCore feature | [AR Foundation](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual) with [ARCore Extensions](https://developers.google.com/ar/develop/unity-arf) |
|---|---|
| Supported Unity versions | [Unity **2019.4.3f1 or later**](https://unity3d.com/get-unity/update) |
| Unity XR support | Install the **AR Foundation** and **ARCore XR Plugin** packages, and enable ARCore plug-in provider under **Project Settings \> XR Plug-in Management (Android)** |
| GitHub repo(s) (SDK / samples) | [`google-ar/arcore-unity-extensions`](https://github.com/google-ar/arcore-unity-extensions/) [`Unity-Technologies/arfoundation-samples`](https://github.com/Unity-Technologies/arfoundation-samples) |
| In-editor development workflow | [AR Remoting \& Simulation](https://forum.unity.com/threads/ar-remoting-simulation.720575/) |
| Pause the AR Session | Disable the [`ARSession`](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/api/UnityEngine.XR.ARFoundation.ARSession.html) game object |
| Detect tracking issues | Use [`notTrackingReason`](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/api/UnityEngine.XR.ARFoundation.ARSession.html#UnityEngine_XR_ARFoundation_ARSession_notTrackingReason) provided by `ARSession` and returning a [`NotTrackingReason`](https://docs.unity3d.com/Packages/com.unity.xr.arsubsystems@4.2/api/UnityEngine.XR.ARSubsystems.NotTrackingReason.html) |
| Select camera config | See [Configuring the camera](https://developers.google.com/ar/develop/unity-arf/camera-configs) for ARCore Extensions |
| Plane finding | Use [Plane Detection](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual/plane-manager.html) provided by `ARPlaneManager` |
| Local anchors | Use [Anchors](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual/anchor-manager.html) provided by `ARAnchorManager` |
| Cloud Anchors | Provided by [ARCore Extensions](https://developers.google.com/ar/develop/unity-arf/cloud-anchors/overview) |
| Basic light estimation | Use *Ambient Intensity* [Light Estimation](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual/#ar-camera-manager) mode provided by `ARCameraManager` |
| Environmental HDR light estimation | Automatically enabled when a compatible camera config is selected and one or more Environmental HDR settings are selected: - *Ambient Spherical Harmonics*, *Main Light Direction*, *Main Light Intensity* in the [Light Estimation](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual/#ar-camera-manager) mode provided by `ARCameraManager` - [Environmental Probes](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual/environment-probe-manager.html) are enabled in an `AREnvironmentProbeManager` |
| Augmented Images | Use [(2D) Image Tracking](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual/tracked-image-manager.html) provided by `ARTrackedImageManager` |
| Augmented Faces | Use [Face Tracking](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual/face-manager.html) provided by `ARFaceManager` |
| Depth API | Use `AROcclusionManager` to enable [Automatic Occlusion](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual/#automatic-occlusion) in AR Foundation **`4.1.0-preview.2`** or later with [ARCore XR Plugin](https://docs.unity3d.com/Packages/com.unity.xr.arcore@4.2/manual/) **`4.1.0-preview.2`** or later |
| Raycasting | Use [Raycasting](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual/raycast-manager.html) provided by `ARRaycastManager` |
| Feature points | Use [Point Clouds](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual/point-cloud-manager.html) provided by `ARPointCloudManager` |
| AR camera image access | Use [Pass-through video](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual/) provided by `ARCameraBackground` |
| CPU image access | Provided by [AR Foundation](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual/cpu-camera-image.html) |
| GPU texture access | Accessible as external [Texture2D](https://docs.unity3d.com/ScriptReference/Texture2D.html)s. |
| Multithreaded rendering | Supported in [Android Player Settings](https://docs.unity3d.com/Manual/class-PlayerSettingsAndroid.html) in [AR Foundation](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.2/manual) **`2.1.0`** or later. |

## Next steps

- [Get started using AR Foundation with ARCore Extensions](https://developers.google.com/ar/develop/unity-arf/quickstart).