From 7a787e37489f7b11d24fff5d54d87aecff2520f0 Mon Sep 17 00:00:00 2001 From: Mamadou Babaei Date: Wed, 19 Nov 2025 16:19:07 +0100 Subject: [PATCH] fix ue 5.7 visual glitches and artifacts without crashing on android --- Config/Android/AndroidEngine.ini | 2 + Config/DefaultEngine.ini | 92 +++++++++++++++++++--- Config/DefaultInput.ini | 22 ++++-- Config/VisionOS/VisionOSDeviceProfiles.ini | 6 ++ Config/VisionOS/VisionOSEngine.ini | 30 +++++++ SGBasicDemo.uproject | 17 +--- 6 files changed, 139 insertions(+), 30 deletions(-) create mode 100644 Config/Android/AndroidEngine.ini create mode 100644 Config/VisionOS/VisionOSDeviceProfiles.ini create mode 100644 Config/VisionOS/VisionOSEngine.ini diff --git a/Config/Android/AndroidEngine.ini b/Config/Android/AndroidEngine.ini new file mode 100644 index 0000000..6600420 --- /dev/null +++ b/Config/Android/AndroidEngine.ini @@ -0,0 +1,2 @@ +[/Script/Engine.RendererSettings] +r.DistanceFields=0 \ No newline at end of file diff --git a/Config/DefaultEngine.ini b/Config/DefaultEngine.ini index 2cd0745..f3dce6e 100644 --- a/Config/DefaultEngine.ini +++ b/Config/DefaultEngine.ini @@ -36,19 +36,34 @@ r.DynamicGlobalIlluminationMethod=1 r.ReflectionMethod=1 r.Mobile.AntiAliasing=3 r.AntiAliasingMethod=3 +r.AllowStaticLighting=True +r.Mobile.PropagateAlpha=True +r.Mobile.ShadingPath=0 + +r.SkinCache.CompileShaders=True + +r.RayTracing=True + +r.RayTracing.RayTracingProxies.ProjectEnabled=True + +r.Substrate=True + +r.Substrate.ProjectGBufferFormat=0 [/Script/AndroidRuntimeSettings.AndroidRuntimeSettings] bBuildForES31=False -ExtraApplicationSettings= +ExtraApplicationSettings= bPackageForMetaQuest=True -PackageName=com.senseglove.sgbasicdemo MinSDKVersion=32 -TargetSDKVersion=32 -bRemoveOSIG=True -bDisableVerifyOBBOnStartUp=True +TargetSDKVersion=34 +bCreateAllPlatformsInstall=True bPackageDataInsideApk=True +bDisableVerifyOBBOnStartUp=True +bRemoveOSIG=True +PackageName=com.senseglove.sgbasicdemo [/Script/WindowsTargetPlatform.WindowsTargetSettings] +DefaultGraphicsRHI=DefaultGraphicsRHI_DX12 DefaultGraphicsRHI=DefaultGraphicsRHI_Default -D3D12TargetedShaderFormats=PCD3D_SM5 +D3D12TargetedShaderFormats=PCD3D_SM6 @@ -84,15 +99,70 @@ bAllowClientSideNavigation=True -TargetedRHIs=SF_VULKAN_SM5 +TargetedRHIs=SF_VULKAN_SM6 +[/Script/Engine.CollisionProfile] +-Profiles=(Name="NoCollision",CollisionEnabled=NoCollision,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="No collision",bCanModify=False) +-Profiles=(Name="BlockAll",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldStatic",CustomResponses=,HelpMessage="WorldStatic object that blocks all actors by default. All new custom channels will use its own default response. ",bCanModify=False) +-Profiles=(Name="OverlapAll",CollisionEnabled=QueryOnly,ObjectTypeName="WorldStatic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False) +-Profiles=(Name="BlockAllDynamic",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldDynamic",CustomResponses=,HelpMessage="WorldDynamic object that blocks all actors by default. All new custom channels will use its own default response. ",bCanModify=False) +-Profiles=(Name="OverlapAllDynamic",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False) +-Profiles=(Name="IgnoreOnlyPawn",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that ignores Pawn and Vehicle. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="OverlapOnlyPawn",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that overlaps Pawn, Camera, and Vehicle. All other channels will be set to default. ",bCanModify=False) +-Profiles=(Name="Pawn",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Pawn",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object. Can be used for capsule of any playerable character or AI. ",bCanModify=False) +-Profiles=(Name="Spectator",CollisionEnabled=QueryOnly,ObjectTypeName="Pawn",CustomResponses=((Channel="WorldStatic",Response=ECR_Block),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore)),HelpMessage="Pawn object that ignores all other actors except WorldStatic.",bCanModify=False) +-Profiles=(Name="CharacterMesh",CollisionEnabled=QueryOnly,ObjectTypeName="Pawn",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object that is used for Character Mesh. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="PhysicsActor",CollisionEnabled=QueryAndPhysics,ObjectTypeName="PhysicsBody",CustomResponses=,HelpMessage="Simulating actors",bCanModify=False) +-Profiles=(Name="Destructible",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Destructible",CustomResponses=,HelpMessage="Destructible actors",bCanModify=False) +-Profiles=(Name="InvisibleWall",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldStatic object that is invisible.",bCanModify=False) +-Profiles=(Name="InvisibleWallDynamic",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that is invisible.",bCanModify=False) +-Profiles=(Name="Trigger",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that is used for trigger. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="Ragdoll",CollisionEnabled=QueryAndPhysics,ObjectTypeName="PhysicsBody",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Simulating Skeletal Mesh Component. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="Vehicle",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Vehicle",CustomResponses=,HelpMessage="Vehicle object that blocks Vehicle, WorldStatic, and WorldDynamic. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="UI",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Block),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False) ++Profiles=(Name="NoCollision",CollisionEnabled=NoCollision,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="No collision") ++Profiles=(Name="BlockAll",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=,HelpMessage="WorldStatic object that blocks all actors by default. All new custom channels will use its own default response. ") ++Profiles=(Name="OverlapAll",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ") ++Profiles=(Name="BlockAllDynamic",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=,HelpMessage="WorldDynamic object that blocks all actors by default. All new custom channels will use its own default response. ") ++Profiles=(Name="OverlapAllDynamic",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that overlaps all actors by default. All new custom channels will use its own default response. ") ++Profiles=(Name="IgnoreOnlyPawn",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that ignores Pawn and Vehicle. All other channels will be set to default.") ++Profiles=(Name="OverlapOnlyPawn",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that overlaps Pawn, Camera, and Vehicle. All other channels will be set to default. ") ++Profiles=(Name="Pawn",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object. Can be used for capsule of any playerable character or AI. ") ++Profiles=(Name="Spectator",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="WorldStatic"),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore)),HelpMessage="Pawn object that ignores all other actors except WorldStatic.") ++Profiles=(Name="CharacterMesh",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object that is used for Character Mesh. All other channels will be set to default.") ++Profiles=(Name="PhysicsActor",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="PhysicsBody",CustomResponses=,HelpMessage="Simulating actors") ++Profiles=(Name="Destructible",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Destructible",CustomResponses=,HelpMessage="Destructible actors") ++Profiles=(Name="InvisibleWall",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldStatic object that is invisible.") ++Profiles=(Name="InvisibleWallDynamic",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that is invisible.") ++Profiles=(Name="Trigger",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that is used for trigger. All other channels will be set to default.") ++Profiles=(Name="Ragdoll",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="PhysicsBody",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Simulating Skeletal Mesh Component. All other channels will be set to default.") ++Profiles=(Name="Vehicle",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Vehicle",CustomResponses=,HelpMessage="Vehicle object that blocks Vehicle, WorldStatic, and WorldDynamic. All other channels will be set to default.") ++Profiles=(Name="UI",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility"),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ") ++DefaultChannelResponses=(Channel=ECC_GameTraceChannel1,DefaultResponse=ECR_Ignore,bTraceType=True,bStaticObject=False,Name="3DWidget") +-ProfileRedirects=(OldName="BlockingVolume",NewName="InvisibleWall") +-ProfileRedirects=(OldName="InterpActor",NewName="IgnoreOnlyPawn") +-ProfileRedirects=(OldName="StaticMeshComponent",NewName="BlockAllDynamic") +-ProfileRedirects=(OldName="SkeletalMeshActor",NewName="PhysicsActor") +-ProfileRedirects=(OldName="InvisibleActor",NewName="InvisibleWallDynamic") ++ProfileRedirects=(OldName="BlockingVolume",NewName="InvisibleWall") ++ProfileRedirects=(OldName="InterpActor",NewName="IgnoreOnlyPawn") ++ProfileRedirects=(OldName="StaticMeshComponent",NewName="BlockAllDynamic") ++ProfileRedirects=(OldName="SkeletalMeshActor",NewName="PhysicsActor") ++ProfileRedirects=(OldName="InvisibleActor",NewName="InvisibleWallDynamic") +-CollisionChannelRedirects=(OldName="Static",NewName="WorldStatic") +-CollisionChannelRedirects=(OldName="Dynamic",NewName="WorldDynamic") +-CollisionChannelRedirects=(OldName="VehicleMovement",NewName="Vehicle") +-CollisionChannelRedirects=(OldName="PawnMovement",NewName="Pawn") ++CollisionChannelRedirects=(OldName="Static",NewName="WorldStatic") ++CollisionChannelRedirects=(OldName="Dynamic",NewName="WorldDynamic") ++CollisionChannelRedirects=(OldName="VehicleMovement",NewName="Vehicle") ++CollisionChannelRedirects=(OldName="PawnMovement",NewName="Pawn") + +[/Script/OpenXRHMD.OpenXRHMDSettings] +xr.OpenXRInvertAlpha=True + + [/Script/Engine.Engine] +ActiveGameNameRedirects=(OldGameName="TP_VirtualRealityBP",NewGameName="/Script/SGBasicDemo") +ActiveGameNameRedirects=(OldGameName="/Script/TP_VirtualRealityBP",NewGameName="/Script/SGBasicDemo") -GameUserSettingsClassName=/Script/SenseGlove.SGGameUserSettings -SmoothedFrameRateRange=(LowerBound=(Type=Inclusive,Value=60.000000),UpperBound=(Type=Exclusive,Value=200.000000)) -MinDesiredFrameRate=60.000000 -bUseFixedFrameRate=False -FixedFrameRate=200.000000 -bSmoothFrameRate=True [/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings] bEnablePlugin=True diff --git a/Config/DefaultInput.ini b/Config/DefaultInput.ini index 472f4b5..b902e93 100644 --- a/Config/DefaultInput.ini +++ b/Config/DefaultInput.ini @@ -108,9 +108,21 @@ DefaultTouchInterface=None +ConsoleKeys=Tilde [/Script/EnhancedInput.EnhancedInputDeveloperSettings] -+DefaultMappingContexts=(InputMappingContext="/Game/VRTemplate/Input/IMC_Default.IMC_Default",Priority=0,bAddImmediately=True,bRegisterWithUserSettings=False) -+DefaultMappingContexts=(InputMappingContext="/Game/VRTemplate/Input/IMC_Hands.IMC_Hands",Priority=0,bAddImmediately=True,bRegisterWithUserSettings=False) -+DefaultMappingContexts=(InputMappingContext="/Game/VRTemplate/Input/IMC_Menu.IMC_Menu",Priority=0,bAddImmediately=True,bRegisterWithUserSettings=False) -+DefaultMappingContexts=(InputMappingContext="/Game/VRTemplate/Input/IMC_Weapon_Left.IMC_Weapon_Left",Priority=0,bAddImmediately=True,bRegisterWithUserSettings=False) -+DefaultMappingContexts=(InputMappingContext="/Game/VRTemplate/Input/IMC_Weapon_Right.IMC_Weapon_Right",Priority=0,bAddImmediately=True,bRegisterWithUserSettings=False) ++DefaultMappingContexts=(InputMappingContext="/Game/XRFramework/Input/IMC_Default.IMC_Default",Priority=0,bAddImmediately=True,bRegisterWithUserSettings=False) ++DefaultMappingContexts=(InputMappingContext="/Game/XRFramework/Input/IMC_Hands.IMC_Hands",Priority=0,bAddImmediately=True,bRegisterWithUserSettings=False) ++DefaultMappingContexts=(InputMappingContext="/Game/XRFramework/Input/IMC_Weapon_Left.IMC_Weapon_Left",Priority=0,bAddImmediately=True,bRegisterWithUserSettings=False) ++DefaultMappingContexts=(InputMappingContext="/Game/XRFramework/Input/IMC_Weapon_Right.IMC_Weapon_Right",Priority=0,bAddImmediately=True,bRegisterWithUserSettings=False) ++DefaultMappingContexts=(InputMappingContext="/Game/XRFramework/Input/IMC_Menu.IMC_Menu",Priority=0,bAddImmediately=True,bRegisterWithUserSettings=False) +UserSettingsClass=/Script/EnhancedInput.EnhancedInputUserSettings +DefaultPlayerMappableKeyProfileClass=/Script/EnhancedInput.EnhancedPlayerMappableKeyProfile +InputSettingsSaveSlotName=EnhancedInputUserSettings +DefaultWorldInputClass=/Script/EnhancedInput.EnhancedPlayerInput +bSendTriggeredEventsWhenInputIsFlushed=True +bEnableUserSettings=False +EnhancedInput.EnableDefaultMappingContexts=True +EnhancedInput.OnlyTriggerLastActionInChord=True +bEnableInputModeFiltering=True +bEnableWorldSubsystem=False +DefaultMappingContextInputModeQuery=(TokenStreamVersion=0,TagDictionary=((TagName="EnhancedInput.Modes.Default")),QueryTokenStream=(0,1,2,1,0),UserDescription="",AutoDescription="") +DefaultInputMode=(GameplayTags=((TagName="EnhancedInput.Modes.Default"))) diff --git a/Config/VisionOS/VisionOSDeviceProfiles.ini b/Config/VisionOS/VisionOSDeviceProfiles.ini new file mode 100644 index 0000000..d80311e --- /dev/null +++ b/Config/VisionOS/VisionOSDeviceProfiles.ini @@ -0,0 +1,6 @@ +[VisionPro DeviceProfile] +;MSAA +;+CVars=r.Mobile.XRMSAAMode=2 ;Note: this is in BaseDeviceProfiles.ini, so you don't actually need to set it. + +;NOT MSAA ++CVars=r.Mobile.XRMSAAMode=0 diff --git a/Config/VisionOS/VisionOSEngine.ini b/Config/VisionOS/VisionOSEngine.ini new file mode 100644 index 0000000..ed86c82 --- /dev/null +++ b/Config/VisionOS/VisionOSEngine.ini @@ -0,0 +1,30 @@ +[/Script/Engine.RendererSettings] +;These settings are currently required for all visionOS projects. +vr.InstancedStereo=False +vr.MobileMultiView=False +xr.OpenXRAcquireMode=1 + +;MSAA ;Note these are the default settings, specified in DefaultEngine.ini and BaseDeviceProfiles.ini +;r.Mobile.XRMSAAMode=2 +;r.Mobile.AntiAliasing=3 +;r.AntiAliasingMethod=3 +;MSAA END + +;FXAA +;r.Mobile.XRMSAAMode=0 ; This is overridden in BaseDeviceProfile.ini for VisionPro. It can be changed in VisionOSDeviceProfiles.ini for this project. +r.Mobile.AntiAliasing=1 +r.AntiAliasingMethod=1 +;FXAA END + +;MIXED IMMERSION Enable these settings for .mixed immesion mode, aka passthrough, AR. +;Comment them all out and full immesion will be used. +;Note: You would also probably need to delete the skybox from the level, etc, so that you are not covering up all of the real world. +r.Mobile.PropagateAlpha=1 +r.PostProcessing.PropagateAlpha=1 +r.AlphaInvertPass=1 + +;Note: this could also be done in Editor->ProjectSettings->Platforms->visionOS->Immersive Space->ImmsersiveStyle to 1. +[/Script/VisionOSRuntimeSettings.VisionOSRuntimeSettings] +ImmersiveStyle=1 +;MIXED IMMERSION END + diff --git a/SGBasicDemo.uproject b/SGBasicDemo.uproject index 5c2e394..a635067 100644 --- a/SGBasicDemo.uproject +++ b/SGBasicDemo.uproject @@ -23,22 +23,11 @@ }, { "Name": "OpenXR", - "Enabled": true, - "SupportedTargetPlatforms": [ - "Win64", - "Linux", - "Android", - "VisionOS" - ] + "Enabled": true }, { "Name": "OpenXREyeTracker", - "Enabled": true, - "SupportedTargetPlatforms": [ - "Win64", - "Linux", - "Android" - ] + "Enabled": true } ], "TargetPlatforms": [ @@ -53,6 +42,6 @@ "Switch", "XboxOne", "XSX", - "HoloLens" + "VisionOS" ] } \ No newline at end of file