Class ARCameraBackground
Add this component to a Camera
to copy the color camera's texture onto the background.
If you are using the Universal Render Pipeline (version 7.0.0 or later), you must also add the ARBackgroundRendererFeature to the list of render features for the scriptable renderer.
Inherited Members
Namespace: UnityEngine.XR.ARFoundation
Assembly: Unity.XR.ARFoundation.dll
Syntax
[DisallowMultipleComponent]
[RequireComponent(typeof(Camera))]
[RequireComponent(typeof(ARCameraManager))]
[AddComponentMenu("XR/AR Foundation/AR Camera Background")]
public class ARCameraBackground : MonoBehaviour
Remarks
To add the ARBackgroundRendererFeature to the list of render features for the scriptable renderer:
- In Project Settings > Graphics, select the render pipeline asset
(
UniversalRenderPipelineAsset
) that is in the Scriptable Render Pipeline Settings field. - In the render pipeline asset's Inspector window, make sure that the Render Type is set to Custom.
- In render pipeline asset's Inspector window, select the Render Type > Data
asset which would be of type
ForwardRendererData
. - In forward renderer data's Inspector window, ensure the Render Features list contains a ARBackgroundRendererFeature.
To customize background rendering with the legacy render pipeline, you can override the
legacyCameraEvents property and the
ConfigureLegacyCommandBuffer(CommandBuffer) method to modify the given
CommandBuffer
with rendering commands and to inject the given CommandBuffer
into the Camera's
rendering.
To customize background rendering with a scriptable render pipeline, create a
ScriptableRendererFeature
with the background rendering commands, and insert the
ScriptableRendererFeature
into the list of render features for the scriptable renderer.
Related information: Camera components
Fields
OnCameraRenderingModeChanged
A delegate for capturing when the currentRenderingMode has changed. Use to change make any changes to the parameters of the ARCameraBackground (IE. changing custom materials out) before configuring the command buffer for background rendering.
Declaration
public static Action<XRCameraBackgroundRenderingMode> OnCameraRenderingModeChanged
Field Value
Type | Description |
---|---|
Action<XRCameraBackgroundRenderingMode> |
Properties
backgroundRenderingEnabled
Get whether background rendering is enabled and at least one camera frame has been received.
Declaration
public bool backgroundRenderingEnabled { get; }
Property Value
Type | Description |
---|---|
bool | true if background rendering is enabled and at least one camera frame has been received. Otherwise, false. |
camera
The camera to which the projection matrix is set on each frame event.
Declaration
protected Camera camera { get; }
Property Value
Type | Description |
---|---|
Camera | The camera to which the projection matrix is set on each frame event. |
cameraManager
The camera manager from which frame information is pulled.
Declaration
protected ARCameraManager cameraManager { get; }
Property Value
Type | Description |
---|---|
ARCameraManager | The camera manager. |
currentRenderingMode
The current XRCameraBackgroundRenderingMode. Determines which render order to use.
Declaration
public XRCameraBackgroundRenderingMode currentRenderingMode { get; }
Property Value
Type | Description |
---|---|
XRCameraBackgroundRenderingMode |
customMaterial
A custom Material
for rendering the background with your own shader.
Declaration
public Material customMaterial { get; set; }
Property Value
Type | Description |
---|---|
Material | The custom material. |
Remarks
Set this property to use your own shader to render the background.
AR Foundation uses the Material
from the active provider plug-in by default, but you can override the
default with your own Material
.
legacyCameraEvents
The list of CameraEvents to add to the CommandBuffer. By default, it will select either s_DefaultBeforeOpaqueCameraEvents or s_DefaultAfterOpaqueCameraEvents depending on the value of currentRenderingMode.
In the case where Before Opaques rendering has been selected it will return:
BeforeForwardOpaque and BeforeGBuffer}.
In the case where After Opaques rendering has been selected it will return:
AfterForwardOpaque and AfterGBuffer}.
Override to use different camera events.
Declaration
protected virtual IEnumerable<CameraEvent> legacyCameraEvents { get; }
Property Value
Type | Description |
---|---|
IEnumerable<CameraEvent> |
material
The current Material
used for background rendering.
Declaration
public Material material { get; }
Property Value
Type | Description |
---|---|
Material | The material. |
occlusionManager
The occlusion manager, which might not exist, from which occlusion information is pulled.
Declaration
protected AROcclusionManager occlusionManager { get; }
Property Value
Type | Description |
---|---|
AROcclusionManager |
shouldInvertCulling
Whether culling should be inverted. Used during command buffer configuration, see CommandBuffer.SetInvertCulling.
Declaration
protected bool shouldInvertCulling { get; }
Property Value
Type | Description |
---|---|
bool |
See Also
useCustomMaterial
Whether to use the custom material for rendering the background.
Declaration
public bool useCustomMaterial { get; set; }
Property Value
Type | Description |
---|---|
bool | true if the custom material should be used for rendering the camera background. Otherwise,false. |
Methods
ConfigureLegacyCommandBuffer(CommandBuffer)
Configures the commandBuffer
by first clearing it, then adding necessary render commands.
Declaration
protected virtual void ConfigureLegacyCommandBuffer(CommandBuffer commandBuffer)
Parameters
Type | Name | Description |
---|---|---|
CommandBuffer | commandBuffer | The command buffer to configure. |