@@ -189,6 +189,11 @@ typedef enum XrResult {
189189 XR_SPATIAL_ANCHOR_EXPORT_DATA_UNAVAILABLE_MSFT = 1000062000 ,
190190 XR_ERROR_SPATIAL_ANCHOR_EXPORT_FAILED_MSFT = -1000062000 ,
191191 XR_ERROR_SPATIAL_ANCHOR_SUFFICIENCY_QUERY_FAILED_MSFT = -1000062001 ,
192+ XR_ERROR_COMPUTE_NEW_SCENE_NOT_COMPLETED_MSFT = -1000097000 ,
193+ XR_ERROR_SCENE_OBJECT_KEY_INVALID_MSFT = -1000097001 ,
194+ XR_ERROR_SCENE_MESH_KEY_INVALID_MSFT = -1000097002 ,
195+ XR_ERROR_SCENE_PLANE_KEY_INVALID_MSFT = -1000097003 ,
196+ XR_ERROR_SERIALIZATION_NOT_REQUESTED_MSFT = -1000098000 ,
192197 XR_RESULT_MAX_ENUM = 0x7FFFFFFF
193198} XrResult ;
194199
@@ -315,6 +320,23 @@ typedef enum XrStructureType {
315320 XR_TYPE_COMPOSITION_LAYER_EQUIRECT2_KHR = 1000091000 ,
316321 XR_TYPE_SPATIAL_ANCHOR_EXPORT_PURPOSE_INFO_MSFT = 1000062000 ,
317322 XR_TYPE_SPATIAL_ANCHOR_EXPORT_SUFFICIENCY_MSFT = 1000062001 ,
323+ XR_TYPE_SCENE_OBSERVER_CREATE_INFO_MSFT = 1000097000 ,
324+ XR_TYPE_SCENE_CREATE_INFO_MSFT = 1000097001 ,
325+ XR_TYPE_NEW_SCENE_COMPUTE_INFO_MSFT = 1000097002 ,
326+ XR_TYPE_SCENE_OBJECT_MSFT = 1000097003 ,
327+ XR_TYPE_SCENE_OBJECT_PROPERTIES_GET_INFO_MSFT = 1000097004 ,
328+ XR_TYPE_SCENE_OBJECT_PROPERTIES_MSFT = 1000097005 ,
329+ XR_TYPE_SCENE_OBJECT_KIND_MSFT = 1000097006 ,
330+ XR_TYPE_SCENE_MESH_KEYS_MSFT = 1000097007 ,
331+ XR_TYPE_SCENE_PLANE_KEYS_MSFT = 1000097008 ,
332+ XR_TYPE_SCENE_MESH_GET_INFO_MSFT = 1000097009 ,
333+ XR_TYPE_SCENE_MESH_MSFT = 1000097010 ,
334+ XR_TYPE_SCENE_PLANE_PROPERTIES_GET_INFO_MSFT = 1000097011 ,
335+ XR_TYPE_SCENE_PLANE_PROPERTIES_MSFT = 1000097012 ,
336+ XR_TYPE_SCENE_OBJECTS_LOCATE_INFO_MSFT = 1000097013 ,
337+ XR_TYPE_SCENE_OBJECT_LOCATIONS_MSFT = 1000097014 ,
338+ XR_TYPE_DESERIALIZE_SCENE_INFO_MSFT = 1000098000 ,
339+ XR_TYPE_SERIALIZE_SCENE_MSFT = 1000098001 ,
318340 XR_TYPE_GRAPHICS_BINDING_VULKAN2_KHR = XR_TYPE_GRAPHICS_BINDING_VULKAN_KHR ,
319341 XR_TYPE_SWAPCHAIN_IMAGE_VULKAN2_KHR = XR_TYPE_SWAPCHAIN_IMAGE_VULKAN_KHR ,
320342 XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN2_KHR = XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN_KHR ,
@@ -391,6 +413,8 @@ typedef enum XrObjectType {
391413 XR_OBJECT_TYPE_SPATIAL_ANCHOR_MSFT = 1000039000 ,
392414 XR_OBJECT_TYPE_HAND_TRACKER_EXT = 1000051000 ,
393415 XR_OBJECT_TYPE_SPATIAL_ANCHOR_NEIGHBORHOOD_DATA_STREAM_MSFT = 1000062000 ,
416+ XR_OBJECT_TYPE_SCENE_OBSERVER_MSFT = 1000097000 ,
417+ XR_OBJECT_TYPE_SCENE_MSFT = 1000097001 ,
394418 XR_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF
395419} XrObjectType ;
396420typedef XrFlags64 XrInstanceCreateFlags ;
@@ -2243,6 +2267,284 @@ typedef struct XrInteractionProfileAnalogThresholdVALVE {
22432267#define XR_MND_swapchain_usage_input_attachment_bit_SPEC_VERSION 2
22442268#define XR_MND_SWAPCHAIN_USAGE_INPUT_ATTACHMENT_BIT_EXTENSION_NAME "XR_MND_swapchain_usage_input_attachment_bit"
22452269
2270+
2271+ #define XR_MSFT_scene_understanding_preview 1
2272+
2273+ XR_DEFINE_ATOM (XrSceneObjectKeyMSFT )
2274+
2275+
2276+ XR_DEFINE_ATOM (XrSceneMeshKeyMSFT )
2277+
2278+
2279+ XR_DEFINE_ATOM (XrScenePlaneKeyMSFT )
2280+
2281+
2282+ XR_DEFINE_HANDLE (XrSceneObserverMSFT )
2283+
2284+
2285+ XR_DEFINE_HANDLE (XrSceneMSFT )
2286+
2287+ #define XR_MSFT_scene_understanding_preview_SPEC_VERSION 1
2288+ #define XR_MSFT_SCENE_UNDERSTANDING_PREVIEW_EXTENSION_NAME "XR_MSFT_scene_understanding_preview "
2289+
2290+ typedef enum XrSceneObjectKindTypeMSFT {
2291+ XR_SCENE_OBJECT_KIND_TYPE_UNKNOWN_MSFT = 0 ,
2292+ XR_SCENE_OBJECT_KIND_TYPE_BACKGROUND_MSFT = 1 ,
2293+ XR_SCENE_OBJECT_KIND_TYPE_WALL_MSFT = 2 ,
2294+ XR_SCENE_OBJECT_KIND_TYPE_FLOOR_MSFT = 3 ,
2295+ XR_SCENE_OBJECT_KIND_TYPE_CEILING_MSFT = 4 ,
2296+ XR_SCENE_OBJECT_KIND_TYPE_PLATFORM_MSFT = 5 ,
2297+ XR_SCENE_OBJECT_KIND_TYPE_MAX_ENUM_MSFT = 0x7FFFFFFF
2298+ } XrSceneObjectKindTypeMSFT ;
2299+
2300+ typedef enum XrScenePlaneAlignmentTypeMSFT {
2301+ XR_SCENE_PLANE_ALIGNMENT_TYPE_NON_ORTHOGONAL_MSFT = 0 ,
2302+ XR_SCENE_PLANE_ALIGNMENT_TYPE_HORIZONTAL_MSFT = 1 ,
2303+ XR_SCENE_PLANE_ALIGNMENT_TYPE_VERTICAL_MSFT = 2 ,
2304+ XR_SCENE_PLANE_ALIGNMENT_TYPE_MAX_ENUM_MSFT = 0x7FFFFFFF
2305+ } XrScenePlaneAlignmentTypeMSFT ;
2306+
2307+ typedef enum XrSceneComputeStateMSFT {
2308+ XR_SCENE_COMPUTE_STATE_NONE_MSFT = 0 ,
2309+ XR_SCENE_COMPUTE_STATE_UPDATING_MSFT = 1 ,
2310+ XR_SCENE_COMPUTE_STATE_COMPLETED_MSFT = 2 ,
2311+ XR_SCENE_COMPUTE_STATE_MAX_ENUM_MSFT = 0x7FFFFFFF
2312+ } XrSceneComputeStateMSFT ;
2313+ typedef struct XrSceneObserverCreateInfoMSFT {
2314+ XrStructureType type ;
2315+ const void * XR_MAY_ALIAS next ;
2316+ } XrSceneObserverCreateInfoMSFT ;
2317+
2318+ typedef struct XrSceneCreateInfoMSFT {
2319+ XrStructureType type ;
2320+ const void * XR_MAY_ALIAS next ;
2321+ } XrSceneCreateInfoMSFT ;
2322+
2323+ typedef struct XrSceneSphereBoundMSFT {
2324+ XrVector3f center ;
2325+ float radius ;
2326+ } XrSceneSphereBoundMSFT ;
2327+
2328+ typedef struct XrSceneOrientedBoxBoundMSFT {
2329+ XrPosef pose ;
2330+ XrVector3f extents ;
2331+ } XrSceneOrientedBoxBoundMSFT ;
2332+
2333+ typedef struct XrSceneFrustumBoundMSFT {
2334+ XrPosef pose ;
2335+ XrFovf fov ;
2336+ float farDistance ;
2337+ } XrSceneFrustumBoundMSFT ;
2338+
2339+ typedef struct XrSceneBoundsMSFT {
2340+ XrSpace space ;
2341+ XrTime time ;
2342+ uint32_t sphereCount ;
2343+ const XrSceneSphereBoundMSFT * spheres ;
2344+ uint32_t boxCount ;
2345+ const XrSceneOrientedBoxBoundMSFT * boxes ;
2346+ uint32_t frustumCount ;
2347+ const XrSceneFrustumBoundMSFT * frustums ;
2348+ } XrSceneBoundsMSFT ;
2349+
2350+ typedef struct XrNewSceneComputeInfoMSFT {
2351+ XrStructureType type ;
2352+ const void * XR_MAY_ALIAS next ;
2353+ XrBool32 disableInferredSceneObjects ;
2354+ XrSceneBoundsMSFT bounds ;
2355+ } XrNewSceneComputeInfoMSFT ;
2356+
2357+ typedef struct XrSceneObjectMSFT {
2358+ XrStructureType type ;
2359+ void * XR_MAY_ALIAS next ;
2360+ XrSceneObjectKeyMSFT sceneObjectKey ;
2361+ } XrSceneObjectMSFT ;
2362+
2363+ typedef struct XrSceneObjectPropertiesGetInfoMSFT {
2364+ XrStructureType type ;
2365+ const void * XR_MAY_ALIAS next ;
2366+ XrSceneObjectKeyMSFT sceneObjectKey ;
2367+ } XrSceneObjectPropertiesGetInfoMSFT ;
2368+
2369+ typedef struct XrSceneObjectPropertiesMSFT {
2370+ XrStructureType type ;
2371+ void * XR_MAY_ALIAS next ;
2372+ XrPosef poseInScene ;
2373+ } XrSceneObjectPropertiesMSFT ;
2374+
2375+ typedef struct XrSceneObjectKindMSFT {
2376+ XrStructureType type ;
2377+ void * XR_MAY_ALIAS next ;
2378+ XrSceneObjectKindTypeMSFT kind ;
2379+ } XrSceneObjectKindMSFT ;
2380+
2381+ typedef struct XrSceneMeshKeysMSFT {
2382+ XrStructureType type ;
2383+ void * XR_MAY_ALIAS next ;
2384+ uint32_t meshKeyCapacityInput ;
2385+ uint32_t meshKeyCountOutput ;
2386+ XrSceneMeshKeyMSFT * meshKeys ;
2387+ } XrSceneMeshKeysMSFT ;
2388+
2389+ typedef struct XrScenePlaneKeysMSFT {
2390+ XrStructureType type ;
2391+ void * XR_MAY_ALIAS next ;
2392+ uint32_t planeKeyCapacityInput ;
2393+ uint32_t planeKeyCountOutput ;
2394+ XrScenePlaneKeyMSFT * planeKeys ;
2395+ } XrScenePlaneKeysMSFT ;
2396+
2397+ typedef struct XrSceneMeshGetInfoMSFT {
2398+ XrStructureType type ;
2399+ const void * XR_MAY_ALIAS next ;
2400+ XrSceneMeshKeyMSFT sceneMeshKey ;
2401+ } XrSceneMeshGetInfoMSFT ;
2402+
2403+ typedef struct XrSceneMeshMSFT {
2404+ XrStructureType type ;
2405+ void * XR_MAY_ALIAS next ;
2406+ uint32_t vertexCapacityInput ;
2407+ uint32_t vertexCountOutput ;
2408+ XrVector3f * vertices ;
2409+ uint32_t indexCapacityInput ;
2410+ uint32_t indexCountOutput ;
2411+ uint32_t * indices ;
2412+ } XrSceneMeshMSFT ;
2413+
2414+ typedef struct XrScenePlanePropertiesGetInfoMSFT {
2415+ XrStructureType type ;
2416+ const void * XR_MAY_ALIAS next ;
2417+ XrScenePlaneKeyMSFT scenePlaneKey ;
2418+ } XrScenePlanePropertiesGetInfoMSFT ;
2419+
2420+ typedef struct XrScenePlanePropertiesMSFT {
2421+ XrStructureType type ;
2422+ void * XR_MAY_ALIAS next ;
2423+ XrExtent2Df extents ;
2424+ XrScenePlaneAlignmentTypeMSFT alignment ;
2425+ } XrScenePlanePropertiesMSFT ;
2426+
2427+ typedef struct XrSceneObjectsLocateInfoMSFT {
2428+ XrStructureType type ;
2429+ const void * XR_MAY_ALIAS next ;
2430+ XrSpace baseSpace ;
2431+ XrTime time ;
2432+ uint32_t sceneObjectCount ;
2433+ const XrSceneObjectKeyMSFT * sceneObjectKeys ;
2434+ } XrSceneObjectsLocateInfoMSFT ;
2435+
2436+ typedef struct XrSceneObjectLocationMSFT {
2437+ XrSpaceLocationFlags locationFlags ;
2438+ XrPosef pose ;
2439+ } XrSceneObjectLocationMSFT ;
2440+
2441+ typedef struct XrSceneObjectLocationsMSFT {
2442+ XrStructureType type ;
2443+ void * XR_MAY_ALIAS next ;
2444+ uint32_t sceneObjectCount ;
2445+ XrSceneObjectLocationMSFT * sceneObjectLocations ;
2446+ } XrSceneObjectLocationsMSFT ;
2447+
2448+ typedef XrResult (XRAPI_PTR * PFN_xrCreateSceneObserverMSFT )(XrSession session , const XrSceneObserverCreateInfoMSFT * createInfo , XrSceneObserverMSFT * sceneObserver );
2449+ typedef XrResult (XRAPI_PTR * PFN_xrDestroySceneObserverMSFT )(XrSceneObserverMSFT sceneObserver );
2450+ typedef XrResult (XRAPI_PTR * PFN_xrCreateSceneMSFT )(XrSceneObserverMSFT sceneObserver , const XrSceneCreateInfoMSFT * createInfo , XrSceneMSFT * scene );
2451+ typedef XrResult (XRAPI_PTR * PFN_xrDestroySceneMSFT )(XrSceneMSFT scene );
2452+ typedef XrResult (XRAPI_PTR * PFN_xrComputeNewSceneMSFT )(XrSceneObserverMSFT sceneObserver , const XrNewSceneComputeInfoMSFT * computeInfo );
2453+ typedef XrResult (XRAPI_PTR * PFN_xrGetSceneComputeStateMSFT )(XrSceneObserverMSFT sceneObserver , XrSceneComputeStateMSFT * state );
2454+ typedef XrResult (XRAPI_PTR * PFN_xrLocateSceneObjectsMSFT )(XrSceneMSFT scene , const XrSceneObjectsLocateInfoMSFT * locateInfo , XrSceneObjectLocationsMSFT * locations );
2455+ typedef XrResult (XRAPI_PTR * PFN_xrGetSceneObjectsMSFT )(XrSceneMSFT scene , uint32_t sceneObjectCapacityInput , uint32_t * sceneObjectCountOutput , XrSceneObjectMSFT * sceneObjects );
2456+ typedef XrResult (XRAPI_PTR * PFN_xrGetSceneObjectPropertiesMSFT )(XrSceneMSFT scene , const XrSceneObjectPropertiesGetInfoMSFT * getInfo , XrSceneObjectPropertiesMSFT * properties );
2457+ typedef XrResult (XRAPI_PTR * PFN_xrGetSceneMeshMSFT )(XrSceneMSFT scene , const XrSceneMeshGetInfoMSFT * getInfo , XrSceneMeshMSFT * mesh );
2458+ typedef XrResult (XRAPI_PTR * PFN_xrGetScenePlanePropertiesMSFT )(XrSceneMSFT scene , const XrScenePlanePropertiesGetInfoMSFT * getInfo , XrScenePlanePropertiesMSFT * properties );
2459+
2460+ #ifndef XR_NO_PROTOTYPES
2461+ XRAPI_ATTR XrResult XRAPI_CALL xrCreateSceneObserverMSFT (
2462+ XrSession session ,
2463+ const XrSceneObserverCreateInfoMSFT * createInfo ,
2464+ XrSceneObserverMSFT * sceneObserver );
2465+
2466+ XRAPI_ATTR XrResult XRAPI_CALL xrDestroySceneObserverMSFT (
2467+ XrSceneObserverMSFT sceneObserver );
2468+
2469+ XRAPI_ATTR XrResult XRAPI_CALL xrCreateSceneMSFT (
2470+ XrSceneObserverMSFT sceneObserver ,
2471+ const XrSceneCreateInfoMSFT * createInfo ,
2472+ XrSceneMSFT * scene );
2473+
2474+ XRAPI_ATTR XrResult XRAPI_CALL xrDestroySceneMSFT (
2475+ XrSceneMSFT scene );
2476+
2477+ XRAPI_ATTR XrResult XRAPI_CALL xrComputeNewSceneMSFT (
2478+ XrSceneObserverMSFT sceneObserver ,
2479+ const XrNewSceneComputeInfoMSFT * computeInfo );
2480+
2481+ XRAPI_ATTR XrResult XRAPI_CALL xrGetSceneComputeStateMSFT (
2482+ XrSceneObserverMSFT sceneObserver ,
2483+ XrSceneComputeStateMSFT * state );
2484+
2485+ XRAPI_ATTR XrResult XRAPI_CALL xrLocateSceneObjectsMSFT (
2486+ XrSceneMSFT scene ,
2487+ const XrSceneObjectsLocateInfoMSFT * locateInfo ,
2488+ XrSceneObjectLocationsMSFT * locations );
2489+
2490+ XRAPI_ATTR XrResult XRAPI_CALL xrGetSceneObjectsMSFT (
2491+ XrSceneMSFT scene ,
2492+ uint32_t sceneObjectCapacityInput ,
2493+ uint32_t * sceneObjectCountOutput ,
2494+ XrSceneObjectMSFT * sceneObjects );
2495+
2496+ XRAPI_ATTR XrResult XRAPI_CALL xrGetSceneObjectPropertiesMSFT (
2497+ XrSceneMSFT scene ,
2498+ const XrSceneObjectPropertiesGetInfoMSFT * getInfo ,
2499+ XrSceneObjectPropertiesMSFT * properties );
2500+
2501+ XRAPI_ATTR XrResult XRAPI_CALL xrGetSceneMeshMSFT (
2502+ XrSceneMSFT scene ,
2503+ const XrSceneMeshGetInfoMSFT * getInfo ,
2504+ XrSceneMeshMSFT * mesh );
2505+
2506+ XRAPI_ATTR XrResult XRAPI_CALL xrGetScenePlanePropertiesMSFT (
2507+ XrSceneMSFT scene ,
2508+ const XrScenePlanePropertiesGetInfoMSFT * getInfo ,
2509+ XrScenePlanePropertiesMSFT * properties );
2510+ #endif
2511+
2512+
2513+ #define XR_MSFT_scene_understanding_serialization_preview 1
2514+ #define XR_MSFT_scene_understanding_serialization_preview_SPEC_VERSION 1
2515+ #define XR_MSFT_SCENE_UNDERSTANDING_SERIALIZATION_PREVIEW_EXTENSION_NAME "XR_MSFT_scene_understanding_serialization_preview"
2516+ typedef struct XrDeserializeSceneFragmentMSFT {
2517+ uint32_t size ;
2518+ const uint8_t * buffer ;
2519+ } XrDeserializeSceneFragmentMSFT ;
2520+
2521+ typedef struct XrDeserializeSceneInfoMSFT {
2522+ XrStructureType type ;
2523+ const void * XR_MAY_ALIAS next ;
2524+ uint32_t fragmentCount ;
2525+ const XrDeserializeSceneFragmentMSFT * fragments ;
2526+ } XrDeserializeSceneInfoMSFT ;
2527+
2528+ typedef struct XrSerializeSceneMSFT {
2529+ XrStructureType type ;
2530+ const void * XR_MAY_ALIAS next ;
2531+ } XrSerializeSceneMSFT ;
2532+
2533+ typedef XrResult (XRAPI_PTR * PFN_xrDeserializeSceneMSFT )(XrSceneObserverMSFT sceneObserver , const XrDeserializeSceneInfoMSFT * deserializeInfo );
2534+ typedef XrResult (XRAPI_PTR * PFN_xrGetSceneSerializedDataMSFT )(XrSceneMSFT scene , uint32_t countInput , uint32_t * readOutput , uint8_t * buffer );
2535+
2536+ #ifndef XR_NO_PROTOTYPES
2537+ XRAPI_ATTR XrResult XRAPI_CALL xrDeserializeSceneMSFT (
2538+ XrSceneObserverMSFT sceneObserver ,
2539+ const XrDeserializeSceneInfoMSFT * deserializeInfo );
2540+
2541+ XRAPI_ATTR XrResult XRAPI_CALL xrGetSceneSerializedDataMSFT (
2542+ XrSceneMSFT scene ,
2543+ uint32_t countInput ,
2544+ uint32_t * readOutput ,
2545+ uint8_t * buffer );
2546+ #endif
2547+
22462548#ifdef __cplusplus
22472549}
22482550#endif
0 commit comments