Bläddra i källkod

Merge remote-tracking branch 'OpenXRTest/main' into initial-xr

byrcolin 3 år sedan
förälder
incheckning
6a9f0cd2c3
90 ändrade filer med 1294 tillägg och 0 borttagningar
  1. 6 0
      Projects/OpenXRTest/.gitignore
  2. 11 0
      Projects/OpenXRTest/CMakeLists.txt
  3. 6 0
      Projects/OpenXRTest/Config/default_aws_resource_mappings.json
  4. 11 0
      Projects/OpenXRTest/Config/shader_global_build_options.json
  5. 69 0
      Projects/OpenXRTest/Gem/CMakeLists.txt
  6. 31 0
      Projects/OpenXRTest/Gem/Include/OpenXRTest/OpenXRTestBus.h
  7. 2 0
      Projects/OpenXRTest/Gem/Platform/Android/PAL_android.cmake
  8. 11 0
      Projects/OpenXRTest/Gem/Platform/Android/openxrtest_android_files.cmake
  9. 10 0
      Projects/OpenXRTest/Gem/Platform/Android/openxrtest_shared_android_files.cmake
  10. 2 0
      Projects/OpenXRTest/Gem/Platform/Linux/PAL_linux.cmake
  11. 11 0
      Projects/OpenXRTest/Gem/Platform/Linux/openxrtest_linux_files.cmake
  12. 10 0
      Projects/OpenXRTest/Gem/Platform/Linux/openxrtest_shared_linux_files.cmake
  13. 2 0
      Projects/OpenXRTest/Gem/Platform/Mac/PAL_mac.cmake
  14. 12 0
      Projects/OpenXRTest/Gem/Platform/Mac/openxrtest_mac_files.cmake
  15. 11 0
      Projects/OpenXRTest/Gem/Platform/Mac/openxrtest_shared_mac_files.cmake
  16. 2 0
      Projects/OpenXRTest/Gem/Platform/Windows/PAL_windows.cmake
  17. 10 0
      Projects/OpenXRTest/Gem/Platform/Windows/openxrtest_shared_windows_files.cmake
  18. 11 0
      Projects/OpenXRTest/Gem/Platform/Windows/openxrtest_windows_files.cmake
  19. 2 0
      Projects/OpenXRTest/Gem/Platform/iOS/PAL_ios.cmake
  20. 12 0
      Projects/OpenXRTest/Gem/Platform/iOS/openxrtest_ios_files.cmake
  21. 10 0
      Projects/OpenXRTest/Gem/Platform/iOS/openxrtest_shared_ios_files.cmake
  22. 18 0
      Projects/OpenXRTest/Gem/Registry/assetprocessor_settings.setreg
  23. 37 0
      Projects/OpenXRTest/Gem/Source/OpenXRTestModule.cpp
  24. 76 0
      Projects/OpenXRTest/Gem/Source/OpenXRTestSystemComponent.cpp
  25. 40 0
      Projects/OpenXRTest/Gem/Source/OpenXRTestSystemComponent.h
  26. 26 0
      Projects/OpenXRTest/Gem/enabled_gems.cmake
  27. 21 0
      Projects/OpenXRTest/Gem/gem.json
  28. 7 0
      Projects/OpenXRTest/Gem/openxrtest_files.cmake
  29. 4 0
      Projects/OpenXRTest/Gem/openxrtest_shared_files.cmake
  30. 8 0
      Projects/OpenXRTest/Platform/Android/android_project.cmake
  31. 9 0
      Projects/OpenXRTest/Platform/Android/android_project.json
  32. 8 0
      Projects/OpenXRTest/Platform/Linux/linux_project.cmake
  33. 3 0
      Projects/OpenXRTest/Platform/Linux/linux_project.json
  34. 8 0
      Projects/OpenXRTest/Platform/Mac/mac_project.cmake
  35. 3 0
      Projects/OpenXRTest/Platform/Mac/mac_project.json
  36. 8 0
      Projects/OpenXRTest/Platform/Windows/windows_project.cmake
  37. 3 0
      Projects/OpenXRTest/Platform/Windows/windows_project.json
  38. 8 0
      Projects/OpenXRTest/Platform/iOS/ios_project.cmake
  39. 3 0
      Projects/OpenXRTest/Platform/iOS/ios_project.json
  40. 23 0
      Projects/OpenXRTest/Registry/assetprocessor_settings.setreg
  41. 10 0
      Projects/OpenXRTest/Registry/awscoreconfiguration.setreg
  42. 11 0
      Projects/OpenXRTest/Registry/physxdebugconfiguration.setreg
  43. 9 0
      Projects/OpenXRTest/Registry/physxdefaultsceneconfiguration.setreg
  44. 98 0
      Projects/OpenXRTest/Registry/physxsystemconfiguration.setreg
  45. BIN
      Projects/OpenXRTest/Resources/GameSDK.ico
  46. BIN
      Projects/OpenXRTest/Resources/LegacyLogoLauncher.bmp
  47. 6 0
      Projects/OpenXRTest/Resources/Platform/Mac/Images.xcassets/Contents.json
  48. 68 0
      Projects/OpenXRTest/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/Contents.json
  49. BIN
      Projects/OpenXRTest/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128.png
  50. BIN
      Projects/OpenXRTest/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128_2x.png
  51. BIN
      Projects/OpenXRTest/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16.png
  52. BIN
      Projects/OpenXRTest/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16_2x.png
  53. BIN
      Projects/OpenXRTest/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256.png
  54. BIN
      Projects/OpenXRTest/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256_2x.png
  55. BIN
      Projects/OpenXRTest/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32.png
  56. BIN
      Projects/OpenXRTest/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32_2x.png
  57. BIN
      Projects/OpenXRTest/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512.png
  58. BIN
      Projects/OpenXRTest/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512_2x.png
  59. 24 0
      Projects/OpenXRTest/Resources/Platform/Mac/Info.plist
  60. 6 0
      Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/Contents.json
  61. 169 0
      Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/Contents.json
  62. BIN
      Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1024x768.png
  63. BIN
      Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1536x2048.png
  64. BIN
      Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage2048x1536.png
  65. BIN
      Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage768x1024.png
  66. BIN
      Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x1136.png
  67. BIN
      Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x960.png
  68. 116 0
      Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/Contents.json
  69. BIN
      Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon152x152.png
  70. BIN
      Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon76x76.png
  71. BIN
      Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadProAppIcon167x167.png
  72. BIN
      Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon29x29.png
  73. BIN
      Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon58x58.png
  74. BIN
      Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon40x40.png
  75. BIN
      Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon80x80.png
  76. BIN
      Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon120x120.png
  77. BIN
      Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon180x180.png
  78. BIN
      Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon58x58.png
  79. BIN
      Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon87x87.png
  80. BIN
      Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon120x120.png
  81. BIN
      Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon80x80.png
  82. 45 0
      Projects/OpenXRTest/Resources/Platform/iOS/Info.plist
  83. 5 0
      Projects/OpenXRTest/ShaderLib/README.md
  84. 26 0
      Projects/OpenXRTest/ShaderLib/scenesrg.srgi
  85. 26 0
      Projects/OpenXRTest/ShaderLib/viewsrg.srgi
  86. 0 0
      Projects/OpenXRTest/autoexec.cfg
  87. 83 0
      Projects/OpenXRTest/cmake/EngineFinder.cmake
  88. 3 0
      Projects/OpenXRTest/game.cfg
  89. BIN
      Projects/OpenXRTest/preview.png
  90. 24 0
      Projects/OpenXRTest/project.json

+ 6 - 0
Projects/OpenXRTest/.gitignore

@@ -0,0 +1,6 @@
+[Bb]uild/
+[Cc]ache/
+[Uu]ser/
+[Uu]ser_test*/
+_savebackup/
+CMakeUserPresets.json

+ 11 - 0
Projects/OpenXRTest/CMakeLists.txt

@@ -0,0 +1,11 @@
+
+if(NOT PROJECT_NAME)
+    cmake_minimum_required(VERSION 3.20)
+    include(cmake/EngineFinder.cmake OPTIONAL)
+    find_package(o3de REQUIRED)
+    project(OpenXRTest
+        LANGUAGES C CXX
+        VERSION 1.0.0.0
+    )
+    o3de_initialize()
+endif()

+ 6 - 0
Projects/OpenXRTest/Config/default_aws_resource_mappings.json

@@ -0,0 +1,6 @@
+{
+    "AWSResourceMappings": {},
+    "AccountId": "EMPTY",
+    "Region": "us-east-1",
+    "Version": "1.0.0"
+}

+ 11 - 0
Projects/OpenXRTest/Config/shader_global_build_options.json

@@ -0,0 +1,11 @@
+{
+    "Type": "JsonSerialization",
+    "Version": 1,
+    "ClassName": "GlobalBuildOptions",
+    "ClassData": {
+        "ShaderCompilerArguments" : {
+            "DefaultMatrixOrder" : "Row",
+            "AzslcAdditionalFreeArguments" : "--strip-unused-srgs"
+        }
+    }
+}

+ 69 - 0
Projects/OpenXRTest/Gem/CMakeLists.txt

@@ -0,0 +1,69 @@
+
+set(gem_path ${CMAKE_CURRENT_LIST_DIR})
+set(gem_json ${gem_path}/gem.json)
+o3de_restricted_path(${gem_json} gem_restricted_path gem_parent_relative_path)
+
+# Currently we are in the OpenXRTest/Code folder: ${CMAKE_CURRENT_LIST_DIR}
+# Get the platform specific folder ${pal_dir} for the current folder: ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME}
+# Note: o3de_pal_dir will take care of the details for us, as this may be a restricted platform
+#       in which case it will see if that platform is present here or in the restricted folder.
+#       i.e. It could here : OpenXRTest/Code/Platform/<platform_name>  or
+#            <restricted_folder>/<platform_name>/OpenXRTest/Code
+o3de_pal_dir(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME} "${gem_restricted_path}" "${gem_path}" "${gem_parent_relative_path}")
+
+# Now that we have the platform abstraction layer (PAL) folder for this folder, thats where we will find the
+# traits for this platform. Traits for a platform are defines for things like whether or not something in this project
+# is supported by this platform.
+include(${pal_dir}/PAL_${PAL_PLATFORM_NAME_LOWERCASE}.cmake)
+
+# Now that we have loaded our project traits for this platform, see if this project is even supported on this platform.
+# If its not supported we just return after including the unsupported.
+if(NOT PAL_TRAIT_OPENXRTEST_SUPPORTED)
+    return()
+endif()
+
+# We are on a supported platform, so add the OpenXRTest target
+# Note: We include the common files and the platform specific files which are set in openxrtest_files.cmake and
+# in ${pal_dir}/openxrtest_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
+ly_add_target(
+    NAME OpenXRTest.Static STATIC
+    NAMESPACE Gem
+    FILES_CMAKE
+        openxrtest_files.cmake
+        ${pal_dir}/openxrtest_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
+    INCLUDE_DIRECTORIES
+        PUBLIC
+            Include
+    BUILD_DEPENDENCIES
+        PRIVATE
+            AZ::AzGameFramework
+            Gem::Atom_AtomBridge.Static
+)
+
+ly_add_target(
+    NAME OpenXRTest ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
+    NAMESPACE Gem
+    FILES_CMAKE
+        openxrtest_shared_files.cmake
+        ${pal_dir}/openxrtest_shared_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
+    INCLUDE_DIRECTORIES
+        PUBLIC
+            Include
+    BUILD_DEPENDENCIES
+        PRIVATE
+            Gem::OpenXRTest.Static
+            AZ::AzCore
+)
+
+# if enabled, OpenXRTest is used by all kinds of applications
+ly_create_alias(NAME OpenXRTest.Builders NAMESPACE Gem TARGETS Gem::OpenXRTest)
+ly_create_alias(NAME OpenXRTest.Tools    NAMESPACE Gem TARGETS Gem::OpenXRTest)
+ly_create_alias(NAME OpenXRTest.Clients  NAMESPACE Gem TARGETS Gem::OpenXRTest)
+ly_create_alias(NAME OpenXRTest.Servers  NAMESPACE Gem TARGETS Gem::OpenXRTest)
+
+################################################################################
+# Gem dependencies
+################################################################################
+
+# Enable the specified list of gems from GEM_FILE or GEMS list for this specific project:
+ly_enable_gems(PROJECT_NAME OpenXRTest GEM_FILE enabled_gems.cmake)

+ 31 - 0
Projects/OpenXRTest/Gem/Include/OpenXRTest/OpenXRTestBus.h

@@ -0,0 +1,31 @@
+
+#pragma once
+
+#include <AzCore/EBus/EBus.h>
+#include <AzCore/Interface/Interface.h>
+
+namespace OpenXRTest
+{
+    class OpenXRTestRequests
+    {
+    public:
+        AZ_RTTI(OpenXRTestRequests, "{ee9807e7-e5f4-4669-ac2e-800d7d034158}");
+        virtual ~OpenXRTestRequests() = default;
+        // Put your public methods here
+    };
+
+    class OpenXRTestBusTraits
+        : public AZ::EBusTraits
+    {
+    public:
+        //////////////////////////////////////////////////////////////////////////
+        // EBusTraits overrides
+        static constexpr AZ::EBusHandlerPolicy HandlerPolicy = AZ::EBusHandlerPolicy::Single;
+        static constexpr AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::Single;
+        //////////////////////////////////////////////////////////////////////////
+    };
+
+    using OpenXRTestRequestBus = AZ::EBus<OpenXRTestRequests, OpenXRTestBusTraits>;
+    using OpenXRTestInterface = AZ::Interface<OpenXRTestRequests>;
+
+} // namespace OpenXRTest

+ 2 - 0
Projects/OpenXRTest/Gem/Platform/Android/PAL_android.cmake

@@ -0,0 +1,2 @@
+
+set(PAL_TRAIT_OPENXRTEST_SUPPORTED TRUE)

+ 11 - 0
Projects/OpenXRTest/Gem/Platform/Android/openxrtest_android_files.cmake

@@ -0,0 +1,11 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(FILES
+    PAL_android.cmake
+)

+ 10 - 0
Projects/OpenXRTest/Gem/Platform/Android/openxrtest_shared_android_files.cmake

@@ -0,0 +1,10 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(FILES
+)

+ 2 - 0
Projects/OpenXRTest/Gem/Platform/Linux/PAL_linux.cmake

@@ -0,0 +1,2 @@
+
+set(PAL_TRAIT_OPENXRTEST_SUPPORTED TRUE)

+ 11 - 0
Projects/OpenXRTest/Gem/Platform/Linux/openxrtest_linux_files.cmake

@@ -0,0 +1,11 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(FILES
+    PAL_linux.cmake
+)

+ 10 - 0
Projects/OpenXRTest/Gem/Platform/Linux/openxrtest_shared_linux_files.cmake

@@ -0,0 +1,10 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(FILES
+)

+ 2 - 0
Projects/OpenXRTest/Gem/Platform/Mac/PAL_mac.cmake

@@ -0,0 +1,2 @@
+
+set(PAL_TRAIT_OPENXRTEST_SUPPORTED TRUE)

+ 12 - 0
Projects/OpenXRTest/Gem/Platform/Mac/openxrtest_mac_files.cmake

@@ -0,0 +1,12 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(FILES
+    ../../../Resources/Platform/Mac/Info.plist
+    PAL_mac.cmake
+)

+ 11 - 0
Projects/OpenXRTest/Gem/Platform/Mac/openxrtest_shared_mac_files.cmake

@@ -0,0 +1,11 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(FILES
+    ../../../Resources/Platform/Mac/Info.plist
+)

+ 2 - 0
Projects/OpenXRTest/Gem/Platform/Windows/PAL_windows.cmake

@@ -0,0 +1,2 @@
+
+set(PAL_TRAIT_OPENXRTEST_SUPPORTED TRUE)

+ 10 - 0
Projects/OpenXRTest/Gem/Platform/Windows/openxrtest_shared_windows_files.cmake

@@ -0,0 +1,10 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(FILES
+)

+ 11 - 0
Projects/OpenXRTest/Gem/Platform/Windows/openxrtest_windows_files.cmake

@@ -0,0 +1,11 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(FILES
+    PAL_windows.cmake
+)

+ 2 - 0
Projects/OpenXRTest/Gem/Platform/iOS/PAL_ios.cmake

@@ -0,0 +1,2 @@
+
+set(PAL_TRAIT_OPENXRTEST_SUPPORTED TRUE)

+ 12 - 0
Projects/OpenXRTest/Gem/Platform/iOS/openxrtest_ios_files.cmake

@@ -0,0 +1,12 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(FILES
+    ../../../Resources/Platform/iOS/Info.plist
+    PAL_ios.cmake
+)

+ 10 - 0
Projects/OpenXRTest/Gem/Platform/iOS/openxrtest_shared_ios_files.cmake

@@ -0,0 +1,10 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+
+set(FILES
+)

+ 18 - 0
Projects/OpenXRTest/Gem/Registry/assetprocessor_settings.setreg

@@ -0,0 +1,18 @@
+{
+    "Amazon": {
+        "AssetProcessor": {
+            "Settings": {
+                "ScanFolder OpenXRTest/Assets": {
+                    "watch": "@GEMROOT:OpenXRTest@/Assets",
+                    "recursive": 1,
+                    "order": 101
+                },
+                "ScanFolder OpenXRTest/Registry": {
+                    "watch": "@GEMROOT:OpenXRTest@/Registry",
+                    "recursive": 1,
+                    "order": 102
+                }
+            }
+        }
+    }
+}

+ 37 - 0
Projects/OpenXRTest/Gem/Source/OpenXRTestModule.cpp

@@ -0,0 +1,37 @@
+
+#include <AzCore/Memory/SystemAllocator.h>
+#include <AzCore/Module/Module.h>
+
+#include "OpenXRTestSystemComponent.h"
+
+namespace OpenXRTest
+{
+    class OpenXRTestModule
+        : public AZ::Module
+    {
+    public:
+        AZ_RTTI(OpenXRTestModule, "{5f1ec07d-a7bb-4816-aa3d-abc2104071ae}", AZ::Module);
+        AZ_CLASS_ALLOCATOR(OpenXRTestModule, AZ::SystemAllocator, 0);
+
+        OpenXRTestModule()
+            : AZ::Module()
+        {
+            // Push results of [MyComponent]::CreateDescriptor() into m_descriptors here.
+            m_descriptors.insert(m_descriptors.end(), {
+                OpenXRTestSystemComponent::CreateDescriptor(),
+            });
+        }
+
+        /**
+         * Add required SystemComponents to the SystemEntity.
+         */
+        AZ::ComponentTypeList GetRequiredSystemComponents() const override
+        {
+            return AZ::ComponentTypeList{
+                azrtti_typeid<OpenXRTestSystemComponent>(),
+            };
+        }
+    };
+}// namespace OpenXRTest
+
+AZ_DECLARE_MODULE_CLASS(Gem_OpenXRTest, OpenXRTest::OpenXRTestModule)

+ 76 - 0
Projects/OpenXRTest/Gem/Source/OpenXRTestSystemComponent.cpp

@@ -0,0 +1,76 @@
+
+#include <AzCore/Serialization/SerializeContext.h>
+#include <AzCore/Serialization/EditContext.h>
+#include <AzCore/Serialization/EditContextConstants.inl>
+
+#include "OpenXRTestSystemComponent.h"
+
+namespace OpenXRTest
+{
+    void OpenXRTestSystemComponent::Reflect(AZ::ReflectContext* context)
+    {
+        if (AZ::SerializeContext* serialize = azrtti_cast<AZ::SerializeContext*>(context))
+        {
+            serialize->Class<OpenXRTestSystemComponent, AZ::Component>()
+                ->Version(0)
+                ;
+
+            if (AZ::EditContext* ec = serialize->GetEditContext())
+            {
+                ec->Class<OpenXRTestSystemComponent>("OpenXRTest", "[Description of functionality provided by this System Component]")
+                    ->ClassElement(AZ::Edit::ClassElements::EditorData, "")
+                        ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("System"))
+                        ->Attribute(AZ::Edit::Attributes::AutoExpand, true)
+                    ;
+            }
+        }
+    }
+
+    void OpenXRTestSystemComponent::GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided)
+    {
+        provided.push_back(AZ_CRC("OpenXRTestService"));
+    }
+
+    void OpenXRTestSystemComponent::GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible)
+    {
+        incompatible.push_back(AZ_CRC("OpenXRTestService"));
+    }
+
+    void OpenXRTestSystemComponent::GetRequiredServices([[maybe_unused]] AZ::ComponentDescriptor::DependencyArrayType& required)
+    {
+    }
+
+    void OpenXRTestSystemComponent::GetDependentServices([[maybe_unused]] AZ::ComponentDescriptor::DependencyArrayType& dependent)
+    {
+    }
+
+    OpenXRTestSystemComponent::OpenXRTestSystemComponent()
+    {
+        if (OpenXRTestInterface::Get() == nullptr)
+        {
+            OpenXRTestInterface::Register(this);
+        }
+    }
+
+    OpenXRTestSystemComponent::~OpenXRTestSystemComponent()
+    {
+        if (OpenXRTestInterface::Get() == this)
+        {
+            OpenXRTestInterface::Unregister(this);
+        }
+    }
+
+    void OpenXRTestSystemComponent::Init()
+    {
+    }
+
+    void OpenXRTestSystemComponent::Activate()
+    {
+        OpenXRTestRequestBus::Handler::BusConnect();
+    }
+
+    void OpenXRTestSystemComponent::Deactivate()
+    {
+        OpenXRTestRequestBus::Handler::BusDisconnect();
+    }
+}

+ 40 - 0
Projects/OpenXRTest/Gem/Source/OpenXRTestSystemComponent.h

@@ -0,0 +1,40 @@
+
+#pragma once
+
+#include <AzCore/Component/Component.h>
+
+#include <OpenXRTest/OpenXRTestBus.h>
+
+namespace OpenXRTest
+{
+    class OpenXRTestSystemComponent
+        : public AZ::Component
+        , protected OpenXRTestRequestBus::Handler
+    {
+    public:
+        AZ_COMPONENT(OpenXRTestSystemComponent, "{6625841a-3d71-4752-839e-83a14b5a8b73}");
+
+        static void Reflect(AZ::ReflectContext* context);
+
+        static void GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided);
+        static void GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible);
+        static void GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required);
+        static void GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent);
+
+        OpenXRTestSystemComponent();
+        ~OpenXRTestSystemComponent();
+
+    protected:
+        ////////////////////////////////////////////////////////////////////////
+        // OpenXRTestRequestBus interface implementation
+
+        ////////////////////////////////////////////////////////////////////////
+
+        ////////////////////////////////////////////////////////////////////////
+        // AZ::Component interface implementation
+        void Init() override;
+        void Activate() override;
+        void Deactivate() override;
+        ////////////////////////////////////////////////////////////////////////
+    };
+}

+ 26 - 0
Projects/OpenXRTest/Gem/enabled_gems.cmake

@@ -0,0 +1,26 @@
+
+set(ENABLED_GEMS
+    OpenXRTest
+    Atom
+    AudioSystem
+    AWSCore
+    CameraFramework
+    DebugDraw
+    EditorPythonBindings
+    EMotionFX
+    GameState
+    ImGui
+    LandscapeCanvas
+    LyShine
+    PhysX
+    PrimitiveAssets
+    PrefabBuilder
+    SaveData
+    ScriptCanvasPhysics
+    ScriptEvents
+    StartingPointInput
+    TextureAtlas
+    WhiteBox
+    XR
+    OpenXRVk
+)

+ 21 - 0
Projects/OpenXRTest/Gem/gem.json

@@ -0,0 +1,21 @@
+{
+    "gem_name": "OpenXRTest",
+    "display_name": "OpenXRTest",
+    "license": "What license OpenXRTest uses goes here: i.e. Apache-2.0 or MIT",
+    "license_url": "Link to the license web site goes here: i.e. https://opensource.org/licenses/Apache-2.0 Or https://opensource.org/licenses/MIT",
+    "origin": "The name of the originator goes here. i.e. XYZ Inc.",
+    "origin_url": "The primary repo for OpenXRTest goes here: i.e. http://www.mydomain.com",
+    "type": "",
+    "summary": "A short description of OpenXRTest.",
+    "canonical_tags": [
+        "Gem"
+    ],
+    "user_tags": [
+        "OpenXRTest"
+    ],
+    "icon_path": "preview.png",
+    "requirements": "",
+    "documentation_url": "",
+    "dependencies": [
+    ]
+}

+ 7 - 0
Projects/OpenXRTest/Gem/openxrtest_files.cmake

@@ -0,0 +1,7 @@
+
+set(FILES
+    Include/OpenXRTest/OpenXRTestBus.h
+    Source/OpenXRTestSystemComponent.cpp
+    Source/OpenXRTestSystemComponent.h
+    enabled_gems.cmake
+)

+ 4 - 0
Projects/OpenXRTest/Gem/openxrtest_shared_files.cmake

@@ -0,0 +1,4 @@
+
+set(FILES
+    Source/OpenXRTestModule.cpp
+)

+ 8 - 0
Projects/OpenXRTest/Platform/Android/android_project.cmake

@@ -0,0 +1,8 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+

+ 9 - 0
Projects/OpenXRTest/Platform/Android/android_project.json

@@ -0,0 +1,9 @@
+{
+    "Tags": ["Android"],
+    "android_settings" : {
+        "package_name" : "org.o3de.OpenXRTest",
+        "version_number" : 1,
+        "version_name" : "1.0.0.0",
+        "orientation" : "landscape"
+    }
+}

+ 8 - 0
Projects/OpenXRTest/Platform/Linux/linux_project.cmake

@@ -0,0 +1,8 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+

+ 3 - 0
Projects/OpenXRTest/Platform/Linux/linux_project.json

@@ -0,0 +1,3 @@
+{
+  "Tags": ["Linux"]
+}

+ 8 - 0
Projects/OpenXRTest/Platform/Mac/mac_project.cmake

@@ -0,0 +1,8 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+

+ 3 - 0
Projects/OpenXRTest/Platform/Mac/mac_project.json

@@ -0,0 +1,3 @@
+{
+  "Tags": ["Mac"]
+}

+ 8 - 0
Projects/OpenXRTest/Platform/Windows/windows_project.cmake

@@ -0,0 +1,8 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+

+ 3 - 0
Projects/OpenXRTest/Platform/Windows/windows_project.json

@@ -0,0 +1,3 @@
+{
+  "Tags": ["Windows"]
+}

+ 8 - 0
Projects/OpenXRTest/Platform/iOS/ios_project.cmake

@@ -0,0 +1,8 @@
+# {BEGIN_LICENSE}
+# Copyright (c) Contributors to the Open 3D Engine Project.
+# For complete copyright and license terms please see the LICENSE at the root of this distribution.
+#
+# SPDX-License-Identifier: Apache-2.0 OR MIT
+#
+# {END_LICENSE}
+

+ 3 - 0
Projects/OpenXRTest/Platform/iOS/ios_project.json

@@ -0,0 +1,3 @@
+{
+    "Tags": ["iOS"]
+}

+ 23 - 0
Projects/OpenXRTest/Registry/assetprocessor_settings.setreg

@@ -0,0 +1,23 @@
+{
+    "Amazon": {
+        "AssetProcessor": {
+            "Settings": {
+                "ScanFolder Project/ShaderLib": {
+                    "watch": "@PROJECTROOT@/ShaderLib",
+                    "recursive": 1,
+                    "order": 1
+                },
+                "ScanFolder Project/Shaders": {
+                    "watch": "@PROJECTROOT@/Shaders",
+                    "recurisve": 1,
+                    "order": 2
+                },
+                "ScanFolder Project/Registry": {
+                    "watch": "@PROJECTROOT@/Registry",
+                    "recursive": 1,
+                    "order": 3
+                }
+            }
+        }
+    }
+}

+ 10 - 0
Projects/OpenXRTest/Registry/awscoreconfiguration.setreg

@@ -0,0 +1,10 @@
+{
+    "Amazon":
+    {
+        "AWSCore":
+        {
+            "ProfileName": "default",
+            "ResourceMappingConfigFileName": "default_aws_resource_mappings.json"
+        }
+    }
+}

+ 11 - 0
Projects/OpenXRTest/Registry/physxdebugconfiguration.setreg

@@ -0,0 +1,11 @@
+{
+    "Amazon": {
+        "Gems": {
+            "PhysX": {
+                "Debug": {
+                    "PhysXDebugConfiguration": {}
+                }
+            }
+        }
+    }
+}

+ 9 - 0
Projects/OpenXRTest/Registry/physxdefaultsceneconfiguration.setreg

@@ -0,0 +1,9 @@
+{
+    "Amazon": {
+        "Gems": {
+            "PhysX": {
+                "DefaultSceneConfiguration": {}
+            }
+        }
+    }
+}

+ 98 - 0
Projects/OpenXRTest/Registry/physxsystemconfiguration.setreg

@@ -0,0 +1,98 @@
+{
+    "Amazon": {
+        "Gems": {
+            "PhysX": {
+                "PhysXSystemConfiguration": {
+                    "CollisionConfig": {
+                        "Layers": {
+                            "LayerNames": [
+                                "Default",
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {},
+                                {}
+                            ]
+                        },
+                        "Groups": {
+                            "GroupPresets": [
+                                {
+                                    "Name": "All",
+                                    "ReadOnly": true
+                                },
+                                {
+                                    "Id": {
+                                        "GroupId": "{4383A2B0-FCE0-413D-B748-852F42877329}"
+                                    },
+                                    "Name": "None",
+                                    "Group": {
+                                        "Mask": 0
+                                    },
+                                    "ReadOnly": true
+                                }
+                            ]
+                        }
+                    }
+                }
+            }
+        }
+    }
+}

BIN
Projects/OpenXRTest/Resources/GameSDK.ico


BIN
Projects/OpenXRTest/Resources/LegacyLogoLauncher.bmp


+ 6 - 0
Projects/OpenXRTest/Resources/Platform/Mac/Images.xcassets/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 68 - 0
Projects/OpenXRTest/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/Contents.json

@@ -0,0 +1,68 @@
+{
+  "images" : [
+    {
+      "size" : "16x16",
+      "idiom" : "mac",
+      "filename" : "icon_16.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "16x16",
+      "idiom" : "mac",
+      "filename" : "icon_16_2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "32x32",
+      "idiom" : "mac",
+      "filename" : "icon_32.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "32x32",
+      "idiom" : "mac",
+      "filename" : "icon_32_2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "128x128",
+      "idiom" : "mac",
+      "filename" : "icon_128.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "128x128",
+      "idiom" : "mac",
+      "filename" : "icon_128_2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "256x256",
+      "idiom" : "mac",
+      "filename" : "icon_256.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "256x256",
+      "idiom" : "mac",
+      "filename" : "icon_256_2x.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "512x512",
+      "idiom" : "mac",
+      "filename" : "icon_512.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "512x512",
+      "idiom" : "mac",
+      "filename" : "icon_512_2x.png",
+      "scale" : "2x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Projects/OpenXRTest/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128.png


BIN
Projects/OpenXRTest/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_128_2x.png


BIN
Projects/OpenXRTest/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16.png


BIN
Projects/OpenXRTest/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_16_2x.png


BIN
Projects/OpenXRTest/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256.png


BIN
Projects/OpenXRTest/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_256_2x.png


BIN
Projects/OpenXRTest/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32.png


BIN
Projects/OpenXRTest/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_32_2x.png


BIN
Projects/OpenXRTest/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512.png


BIN
Projects/OpenXRTest/Resources/Platform/Mac/Images.xcassets/TestDPAppIcon.appiconset/icon_512_2x.png


+ 24 - 0
Projects/OpenXRTest/Resources/Platform/Mac/Info.plist

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<false/>
+	<key>CFBundleDisplayName</key>
+	<string>OpenXRTest</string>
+	<key>CFBundleExecutable</key>
+	<string>OpenXRTest.GameLauncher</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.amazon.OpenXRTest</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0.0</string>
+	<key>CFBundleSignature</key>
+	<string>03DE</string>
+	<key>CFBundleVersion</key>
+	<string>1.0.0</string>
+	<key>LSApplicationCategoryType</key>
+	<string>public.app-category.puzzle-games</string>
+</dict>
+</plist>

+ 6 - 0
Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 169 - 0
Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/Contents.json

@@ -0,0 +1,169 @@
+{
+  "images" : [
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "2436h",
+      "filename" : "iPhoneLaunchImage1125x2436.png",
+      "minimum-system-version" : "11.0",
+      "orientation" : "portrait",
+      "scale" : "3x"
+    },
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "2436h",
+      "filename" : "iPhoneLaunchImage2436x1125.png",
+      "minimum-system-version" : "11.0",
+      "orientation" : "landscape",
+      "scale" : "3x"
+    },
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "736h",
+      "filename" : "iPhoneLaunchImage1242x2208.png",
+      "minimum-system-version" : "8.0",
+      "orientation" : "portrait",
+      "scale" : "3x"
+    },
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "736h",
+      "filename" : "iPhoneLaunchImage2208x1242.png",
+      "minimum-system-version" : "8.0",
+      "orientation" : "landscape",
+      "scale" : "3x"
+    },
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "667h",
+      "filename" : "iPhoneLaunchImage750x1334.png",
+      "minimum-system-version" : "8.0",
+      "orientation" : "portrait",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "iphone",
+      "filename" : "iPhoneLaunchImage640x960.png",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "2x"
+    },
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "retina4",
+      "filename" : "iPhoneLaunchImage640x1136.png",
+      "minimum-system-version" : "7.0",
+      "orientation" : "portrait",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "filename" : "iPadLaunchImage768x1024.png",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "filename" : "iPadLaunchImage1024x768.png",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "filename" : "iPadLaunchImage1536x2048.png",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "filename" : "iPadLaunchImage2048x1536.png",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "iphone",
+      "extent" : "full-screen",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "iphone",
+      "extent" : "full-screen",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "iphone",
+      "extent" : "full-screen",
+      "subtype" : "retina4",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "extent" : "to-status-bar",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "extent" : "full-screen",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "extent" : "to-status-bar",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "extent" : "full-screen",
+      "scale" : "1x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "extent" : "to-status-bar",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "ipad",
+      "extent" : "full-screen",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "extent" : "to-status-bar",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "landscape",
+      "idiom" : "ipad",
+      "extent" : "full-screen",
+      "scale" : "2x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1024x768.png


BIN
Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage1536x2048.png


BIN
Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage2048x1536.png


BIN
Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPadLaunchImage768x1024.png


BIN
Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x1136.png


BIN
Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/LaunchImage.launchimage/iPhoneLaunchImage640x960.png


+ 116 - 0
Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/Contents.json

@@ -0,0 +1,116 @@
+{
+  "images" : [
+    {
+      "size" : "20x20",
+      "idiom" : "iphone",
+      "filename" : "iPhoneNotificationIcon40x40.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "20x20",
+      "idiom" : "iphone",
+      "filename" : "iPhoneNotificationIcon60x60.png",
+      "scale" : "3x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "iphone",
+      "filename" : "iPhoneSettingsIcon58x58.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "iphone",
+      "filename" : "iPhoneSettingsIcon87x87.png",
+      "scale" : "3x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "iphone",
+      "filename" : "iPhoneSpotlightIcon80x80.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "iphone",
+      "filename" : "iPhoneSpotlightIcon120x120.png",
+      "scale" : "3x"
+    },
+    {
+      "size" : "60x60",
+      "idiom" : "iphone",
+      "filename" : "iPhoneAppIcon120x120.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "60x60",
+      "idiom" : "iphone",
+      "filename" : "iPhoneAppIcon180x180.png",
+      "scale" : "3x"
+    },
+    {
+      "size" : "20x20",
+      "idiom" : "ipad",
+      "filename" : "iPadNotificationIcon20x20.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "20x20",
+      "idiom" : "ipad",
+      "filename" : "iPadNotificationIcon40x40.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "ipad",
+      "filename" : "iPadSettingsIcon29x29.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "ipad",
+      "filename" : "iPadSettingsIcon58x58.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "ipad",
+      "filename" : "iPadSpotlightIcon40x40.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "ipad",
+      "filename" : "iPadSpotlightIcon80x80.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "76x76",
+      "idiom" : "ipad",
+      "filename" : "iPadAppIcon76x76.png",
+      "scale" : "1x"
+    },
+    {
+      "size" : "76x76",
+      "idiom" : "ipad",
+      "filename" : "iPadAppIcon152x152.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "83.5x83.5",
+      "idiom" : "ipad",
+      "filename" : "iPadProAppIcon167x167.png",
+      "scale" : "2x"
+    },
+    {
+      "size" : "1024x1024",
+      "idiom" : "ios-marketing",
+      "filename" : "iOSAppStoreIcon1024x1024.png",
+      "scale" : "1x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon152x152.png


BIN
Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadAppIcon76x76.png


BIN
Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadProAppIcon167x167.png


BIN
Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon29x29.png


BIN
Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSettingsIcon58x58.png


BIN
Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon40x40.png


BIN
Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPadSpotlightIcon80x80.png


BIN
Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon120x120.png


BIN
Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneAppIcon180x180.png


BIN
Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon58x58.png


BIN
Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSettingsIcon87x87.png


BIN
Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon120x120.png


BIN
Projects/OpenXRTest/Resources/Platform/iOS/Images.xcassets/TestDPAppIcon.appiconset/iPhoneSpotlightIcon80x80.png


+ 45 - 0
Projects/OpenXRTest/Resources/Platform/iOS/Info.plist

@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleDisplayName</key>
+	<string>OpenXRTest</string>
+	<key>CFBundleExecutable</key>
+	<string>OpenXRTest.GameLauncher</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.amazon.lumberyard.OpenXRTest</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>OpenXRTest</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+	<key>UIRequiredDeviceCapabilities</key>
+	<array>
+		<string>arm64</string>
+		<string>metal</string>
+	</array>
+	<key>UIRequiresFullScreen</key>
+	<true/>
+	<key>UIStatusBarHidden</key>
+	<true/>
+	<key>UISupportedInterfaceOrientations</key>
+	<array>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+	</array>
+	<key>UISupportedInterfaceOrientations~ipad</key>
+	<array>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+	</array>
+</dict>
+</plist>

+ 5 - 0
Projects/OpenXRTest/ShaderLib/README.md

@@ -0,0 +1,5 @@
+# Customizing Shader Resource Groups
+
+Please read:  
+*\<engine\>/Gems/Atom/Feature/Common/Assets/ShaderResourceGroups/README.md*  
+for details on how to customize scenesrg.srgi and viewsrg.srgi.  

+ 26 - 0
Projects/OpenXRTest/ShaderLib/scenesrg.srgi

@@ -0,0 +1,26 @@
+// {BEGIN_LICENSE}
+/*
+ * Copyright (c) Contributors to the Open 3D Engine Project.
+ * For complete copyright and license terms please see the LICENSE at the root of this distribution.
+ *
+ * SPDX-License-Identifier: Apache-2.0 OR MIT
+ *
+ */
+// {END_LICENSE}
+
+#pragma once
+
+// Please read README.md for an explanation on why scenesrg.srgi and viewsrg.srgi are
+// located in this folder (And how you can optionally customize your own scenesrg.srgi
+// and viewsrg.srgi in your game project).
+
+#include <Atom/Features/SrgSemantics.azsli>
+
+partial ShaderResourceGroup SceneSrg : SRG_PerScene
+{
+/* Intentionally Empty. Helps define the SrgSemantic for SceneSrg once.*/
+};
+
+#define AZ_COLLECTING_PARTIAL_SRGS
+#include <Atom/Feature/Common/Assets/ShaderResourceGroups/SceneSrgAll.azsli>
+#undef AZ_COLLECTING_PARTIAL_SRGS

+ 26 - 0
Projects/OpenXRTest/ShaderLib/viewsrg.srgi

@@ -0,0 +1,26 @@
+// {BEGIN_LICENSE}
+/*
+ * Copyright (c) Contributors to the Open 3D Engine Project.
+ * For complete copyright and license terms please see the LICENSE at the root of this distribution.
+ *
+ * SPDX-License-Identifier: Apache-2.0 OR MIT
+ *
+ */
+// {END_LICENSE}
+
+#pragma once
+
+// Please read README.md for an explanation on why scenesrg.srgi and viewsrg.srgi are
+// located in this folder (And how you can optionally customize your own scenesrg.srgi
+// and viewsrg.srgi in your game project).
+
+#include <Atom/Features/SrgSemantics.azsli>
+
+partial ShaderResourceGroup ViewSrg : SRG_PerView
+{
+/* Intentionally Empty. Helps define the SrgSemantic for ViewSrg once.*/
+};
+
+#define AZ_COLLECTING_PARTIAL_SRGS
+#include <Atom/Feature/Common/Assets/ShaderResourceGroups/ViewSrgAll.azsli>
+#undef AZ_COLLECTING_PARTIAL_SRGS

+ 0 - 0
Projects/OpenXRTest/autoexec.cfg


+ 83 - 0
Projects/OpenXRTest/cmake/EngineFinder.cmake

@@ -0,0 +1,83 @@
+# This file is copied during engine registration. Edits to this file will be lost next
+# time a registration happens.
+
+include_guard()
+
+# Read the engine name from the project_json file
+file(READ ${CMAKE_CURRENT_SOURCE_DIR}/project.json project_json)
+set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/project.json)
+
+string(JSON LY_ENGINE_NAME_TO_USE ERROR_VARIABLE json_error GET ${project_json} engine)
+if(json_error)
+    message(FATAL_ERROR "Unable to read key 'engine' from 'project.json'\nError: ${json_error}")
+endif()
+
+if(CMAKE_MODULE_PATH)
+    foreach(module_path ${CMAKE_MODULE_PATH})
+        if(EXISTS ${module_path}/Findo3de.cmake)
+            file(READ ${module_path}/../engine.json engine_json)
+            string(JSON engine_name ERROR_VARIABLE json_error GET ${engine_json} engine_name)
+            if(json_error)
+                message(FATAL_ERROR "Unable to read key 'engine_name' from 'engine.json'\nError: ${json_error}")
+            endif()
+            if(LY_ENGINE_NAME_TO_USE STREQUAL engine_name)
+                return() # Engine being forced through CMAKE_MODULE_PATH
+            endif()
+        endif()
+    endforeach()
+endif()
+
+if(DEFINED ENV{USERPROFILE} AND EXISTS $ENV{USERPROFILE})
+    set(manifest_path $ENV{USERPROFILE}/.o3de/o3de_manifest.json) # Windows
+else()
+    set(manifest_path $ENV{HOME}/.o3de/o3de_manifest.json) # Unix
+endif()
+
+set(registration_error [=[
+Engine registration is required before configuring a project.
+Run 'scripts/o3de register --this-engine' from the engine root.
+]=])
+
+# Read the ~/.o3de/o3de_manifest.json file and look through the 'engines_path' object.
+# Find a key that matches LY_ENGINE_NAME_TO_USE and use that as the engine path.
+if(EXISTS ${manifest_path})
+    file(READ ${manifest_path} manifest_json)
+    set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${manifest_path})
+
+    string(JSON engines_path_count ERROR_VARIABLE json_error LENGTH ${manifest_json} engines_path)
+    if(json_error)
+        message(FATAL_ERROR "Unable to read key 'engines_path' from '${manifest_path}'\nError: ${json_error}\n${registration_error}")
+    endif()
+
+    string(JSON engines_path_type ERROR_VARIABLE json_error TYPE ${manifest_json} engines_path)
+    if(json_error OR NOT ${engines_path_type} STREQUAL "OBJECT")
+        message(FATAL_ERROR "Type of 'engines_path' in '${manifest_path}' is not a JSON Object\nError: ${json_error}")
+    endif()
+
+    math(EXPR engines_path_count "${engines_path_count}-1")
+    foreach(engine_path_index RANGE ${engines_path_count})
+        string(JSON engine_name ERROR_VARIABLE json_error MEMBER ${manifest_json} engines_path ${engine_path_index})
+        if(json_error)
+            message(FATAL_ERROR "Unable to read 'engines_path/${engine_path_index}' from '${manifest_path}'\nError: ${json_error}")
+        endif()
+
+        if(LY_ENGINE_NAME_TO_USE STREQUAL engine_name)
+            string(JSON engine_path ERROR_VARIABLE json_error GET ${manifest_json} engines_path ${engine_name})
+            if(json_error)
+                message(FATAL_ERROR "Unable to read value from 'engines_path/${engine_name}'\nError: ${json_error}")
+            endif()
+
+            if(engine_path)
+                list(APPEND CMAKE_MODULE_PATH "${engine_path}/cmake")
+                return()
+            endif()
+        endif()
+    endforeach()
+    
+    message(FATAL_ERROR "The project.json uses engine name '${LY_ENGINE_NAME_TO_USE}' but no engine with that name has been registered.\n${registration_error}")
+else()
+    # If the user is passing CMAKE_MODULE_PATH we assume thats where we will find the engine
+    if(NOT CMAKE_MODULE_PATH)
+        message(FATAL_ERROR "O3DE Manifest file not found.\n${registration_error}")
+    endif()
+endif()

+ 3 - 0
Projects/OpenXRTest/game.cfg

@@ -0,0 +1,3 @@
+-- Enable warnings when asset loads take longer than the given millisecond threshold
+cl_assetLoadWarningEnable=true
+cl_assetLoadWarningMsThreshold=100

BIN
Projects/OpenXRTest/preview.png


+ 24 - 0
Projects/OpenXRTest/project.json

@@ -0,0 +1,24 @@
+{
+    "project_name": "OpenXRTest",
+    "project_id": "{947211d5-689a-437f-8ad7-7f558edcd40a}",
+    "origin": "The primary repo for OpenXRTest goes here: i.e. http://www.mydomain.com",
+    "license": "What license OpenXRTest uses goes here: i.e. https://opensource.org/licenses/Apache-2.0 Or https://opensource.org/licenses/MIT etc.",
+    "display_name": "OpenXRTest",
+    "summary": "A short description of OpenXRTest.",
+    "canonical_tags": [
+        "Project"
+    ],
+    "user_tags": [
+        "OpenXRTest"
+    ],
+    "icon_path": "preview.png",
+    "engine": "o3de",
+    "external_subdirectories": [
+        "Gem"
+    ],
+    "restricted": "OpenXRTest",
+    "gem_names": [
+        "XR",
+        "OpenXRVk"
+    ]
+}