Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for editTimeDisplayType #10716

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -19,6 +19,12 @@ namespace Microsoft.MixedReality.Toolkit
[HelpURL("https://docs.microsoft.com/windows/mixed-reality/mrtk-unity/configuration/mixed-reality-configuration-guide#camera")]
public class MixedRealityCameraProfile : BaseMixedRealityProfile
{
[SerializeField]
[Tooltip("The camera settings to apply at edit time, for ease of building a specific type of experience.")]
private DisplayType editTimeDisplayType = DisplayType.Transparent;

internal DisplayType EditTimeDisplayType => editTimeDisplayType;

[SerializeField]
[Tooltip("Configuration objects describing the registered settings providers.")]
private MixedRealityCameraSettingsConfiguration[] settingsConfigurations = new MixedRealityCameraSettingsConfiguration[0];
Expand Down
Expand Up @@ -19,6 +19,8 @@ public class MixedRealityCameraProfileInspector : BaseDataProviderServiceInspect
private bool showDisplaySettings = false;
private const string showDisplaySettingsPreferenceKey = "ShowCameraSystem_DisplaySettings_PreferenceKey";

private SerializedProperty editTimeDisplayType;

private SerializedProperty opaqueNearClip;
private SerializedProperty opaqueFarClip;
private SerializedProperty opaqueClearFlags;
Expand Down Expand Up @@ -48,6 +50,8 @@ protected override void OnEnable()
{
base.OnEnable();

editTimeDisplayType = serializedObject.FindProperty("editTimeDisplayType");

opaqueNearClip = serializedObject.FindProperty("nearClipPlaneOpaqueDisplay");
opaqueFarClip = serializedObject.FindProperty("farClipPlaneOpaqueDisplay");
opaqueClearFlags = serializedObject.FindProperty("cameraClearFlagsOpaqueDisplay");
Expand All @@ -73,6 +77,8 @@ public override void OnInspectorGUI()
{
serializedObject.Update();

EditorGUILayout.PropertyField(editTimeDisplayType);

RenderFoldout(ref showProviders, "Camera Settings Providers", () =>
{
using (new EditorGUI.IndentLevelScope())
Expand Down
35 changes: 21 additions & 14 deletions Assets/MRTK/Core/Providers/BaseCameraSettingsProvider.cs
Expand Up @@ -20,34 +20,41 @@ public abstract class BaseCameraSettingsProvider : BaseDataProvider<IMixedRealit
string name = null,
uint priority = DefaultPriority,
BaseCameraSettingsProfile profile = null) : base(cameraSystem, name, priority, profile)
{ }
{
CameraProfile = cameraSystem?.CameraProfile;
}

protected MixedRealityCameraProfile CameraProfile { get; }

/// <inheritdoc/>
public virtual bool IsOpaque { get; } = false;
public virtual bool IsOpaque =>
Application.isEditor
&& !Application.isPlaying
&& CameraProfile != null
&& CameraProfile.EditTimeDisplayType == DisplayType.Opaque;

/// <inheritdoc/>
public virtual void ApplyConfiguration()
{
// It is the responsibility of the camera settings provider to set the display settings (this allows overriding the
// default values with per-camera provider values).
MixedRealityCameraProfile cameraProfile = Service?.CameraProfile;
if (cameraProfile == null) { return; }
if (CameraProfile == null || CameraCache.Main == null) { return; }

if (IsOpaque)
{
CameraCache.Main.clearFlags = cameraProfile.CameraClearFlagsOpaqueDisplay;
CameraCache.Main.nearClipPlane = cameraProfile.NearClipPlaneOpaqueDisplay;
CameraCache.Main.farClipPlane = cameraProfile.FarClipPlaneOpaqueDisplay;
CameraCache.Main.backgroundColor = cameraProfile.BackgroundColorOpaqueDisplay;
QualitySettings.SetQualityLevel(cameraProfile.OpaqueQualityLevel, false);
CameraCache.Main.clearFlags = CameraProfile.CameraClearFlagsOpaqueDisplay;
CameraCache.Main.nearClipPlane = CameraProfile.NearClipPlaneOpaqueDisplay;
CameraCache.Main.farClipPlane = CameraProfile.FarClipPlaneOpaqueDisplay;
CameraCache.Main.backgroundColor = CameraProfile.BackgroundColorOpaqueDisplay;
QualitySettings.SetQualityLevel(CameraProfile.OpaqueQualityLevel, false);
}
else
{
CameraCache.Main.clearFlags = cameraProfile.CameraClearFlagsTransparentDisplay;
CameraCache.Main.backgroundColor = cameraProfile.BackgroundColorTransparentDisplay;
CameraCache.Main.nearClipPlane = cameraProfile.NearClipPlaneTransparentDisplay;
CameraCache.Main.farClipPlane = cameraProfile.FarClipPlaneTransparentDisplay;
QualitySettings.SetQualityLevel(cameraProfile.TransparentQualityLevel, false);
CameraCache.Main.clearFlags = CameraProfile.CameraClearFlagsTransparentDisplay;
CameraCache.Main.backgroundColor = CameraProfile.BackgroundColorTransparentDisplay;
CameraCache.Main.nearClipPlane = CameraProfile.NearClipPlaneTransparentDisplay;
CameraCache.Main.farClipPlane = CameraProfile.FarClipPlaneTransparentDisplay;
QualitySettings.SetQualityLevel(CameraProfile.TransparentQualityLevel, false);
}
}
}
Expand Down
Expand Up @@ -26,7 +26,7 @@ RenderSettings:
m_AmbientIntensity: 1
m_AmbientMode: 0
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 0}
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
Expand Down
Expand Up @@ -88,6 +88,8 @@ public override void Disable()

/// <inheritdoc/>
public override bool IsOpaque =>
(Application.isEditor && !Application.isPlaying) ?
base.IsOpaque :
XRSubsystemHelpers.DisplaySubsystem == null
|| !XRSubsystemHelpers.DisplaySubsystem.running
|| XRSubsystemHelpers.DisplaySubsystem.displayOpaque;
Expand Down
Expand Up @@ -3,6 +3,7 @@

using Microsoft.MixedReality.Toolkit.CameraSystem;
using Microsoft.MixedReality.Toolkit.Utilities;
using UnityEngine;

#if UNITY_WSA
using UnityEngine.XR.WSA;
Expand Down Expand Up @@ -40,6 +41,8 @@ public class WindowsMixedRealityCameraSettings : BaseWindowsMixedRealityCameraSe

/// <inheritdoc/>
public override bool IsOpaque =>
(Application.isEditor && !Application.isPlaying) ?
base.IsOpaque :
#if UNITY_WSA
HolographicSettings.IsDisplayOpaque;
#else
Expand Down
Expand Up @@ -72,6 +72,8 @@ private async void EnableIfLoaderBecomesActive()

/// <inheritdoc/>
public override bool IsOpaque =>
(Application.isEditor && !Application.isPlaying) ?
base.IsOpaque :
XRSubsystemHelpers.DisplaySubsystem == null
|| !XRSubsystemHelpers.DisplaySubsystem.running
|| XRSubsystemHelpers.DisplaySubsystem.displayOpaque;
Expand Down
3 changes: 3 additions & 0 deletions Assets/MRTK/Providers/XRSDK/GenericXRSDKCameraSettings.cs
Expand Up @@ -3,6 +3,7 @@

using Microsoft.MixedReality.Toolkit.CameraSystem;
using Microsoft.MixedReality.Toolkit.Utilities;
using UnityEngine;

#if SPATIALTRACKING_ENABLED
using UnityEngine.SpatialTracking;
Expand Down Expand Up @@ -42,6 +43,8 @@ public class GenericXRSDKCameraSettings : BaseCameraSettingsProvider

/// <inheritdoc/>
public override bool IsOpaque =>
(Application.isEditor && !Application.isPlaying) ?
base.IsOpaque :
XRSubsystemHelpers.DisplaySubsystem == null
|| !XRSubsystemHelpers.DisplaySubsystem.running
|| XRSubsystemHelpers.DisplaySubsystem.displayOpaque;
Expand Down
Expand Up @@ -13,6 +13,7 @@ MonoBehaviour:
m_Name: DefaultMixedRealityCameraProfile
m_EditorClassIdentifier:
isCustomProfile: 0
editTimeDisplayType: 1
settingsConfigurations:
- componentType:
reference: Microsoft.MixedReality.Toolkit.WindowsMixedReality.WindowsMixedRealityCameraSettings,
Expand Down
Expand Up @@ -13,6 +13,7 @@ MonoBehaviour:
m_Name: DefaultHoloLens1CameraProfile
m_EditorClassIdentifier:
isCustomProfile: 0
editTimeDisplayType: 1
settingsConfigurations:
- componentType:
reference: Microsoft.MixedReality.Toolkit.WindowsMixedReality.WindowsMixedRealityCameraSettings,
Expand Down Expand Up @@ -44,9 +45,9 @@ MonoBehaviour:
settingsProfile: {fileID: 11400000, guid: 32349edfa9bacb94a9fe58923e9a2400, type: 2}
nearClipPlaneOpaqueDisplay: 0.3
farClipPlaneOpaqueDisplay: 1000
cameraClearFlagsOpaqueDisplay: 2
cameraClearFlagsOpaqueDisplay: 1
backgroundColorOpaqueDisplay: {r: 0, g: 0, b: 0, a: 1}
opaqueQualityLevel: 0
opaqueQualityLevel: 5
nearClipPlaneTransparentDisplay: 0.3
farClipPlaneTransparentDisplay: 50
cameraClearFlagsTransparentDisplay: 2
Expand Down
Expand Up @@ -13,6 +13,7 @@ MonoBehaviour:
m_Name: DefaultHoloLens2CameraProfile
m_EditorClassIdentifier:
isCustomProfile: 0
editTimeDisplayType: 1
settingsConfigurations:
- componentType:
reference: Microsoft.MixedReality.Toolkit.WindowsMixedReality.WindowsMixedRealityCameraSettings,
Expand Down Expand Up @@ -44,9 +45,9 @@ MonoBehaviour:
settingsProfile: {fileID: 11400000, guid: 32349edfa9bacb94a9fe58923e9a2400, type: 2}
nearClipPlaneOpaqueDisplay: 0.1
farClipPlaneOpaqueDisplay: 1000
cameraClearFlagsOpaqueDisplay: 2
cameraClearFlagsOpaqueDisplay: 1
backgroundColorOpaqueDisplay: {r: 0, g: 0, b: 0, a: 1}
opaqueQualityLevel: 0
opaqueQualityLevel: 5
nearClipPlaneTransparentDisplay: 0.1
farClipPlaneTransparentDisplay: 50
cameraClearFlagsTransparentDisplay: 2
Expand Down