//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0021
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.Foundation.Numerics.idl";
import "Windows.Graphics.DirectX.idl";
import "Windows.UI.Composition.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        runtimeclass MemoryBuffer;
    }
}
namespace Windows
{
    namespace Foundation
    {
        namespace Numerics
        {
            typedef struct Quaternion Quaternion;

            typedef struct Vector3 Vector3;

            typedef struct Vector4 Vector4;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Graphics
    {
        namespace DirectX
        {
            typedef enum DirectXPixelFormat DirectXPixelFormat;

            typedef enum DirectXPrimitiveTopology DirectXPrimitiveTopology;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Composition
        {
            typedef enum CompositionBitmapInterpolationMode CompositionBitmapInterpolationMode;

            runtimeclass Compositor;

            interface ICompositionSurface;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Composition
        {
            namespace Scenes
            {
                typedef enum SceneAlphaMode SceneAlphaMode;

                typedef enum SceneAttributeSemantic SceneAttributeSemantic;

                typedef enum SceneComponentType SceneComponentType;

                typedef enum SceneWrappingMode SceneWrappingMode;

                interface ISceneBoundingBox;

                interface ISceneComponent;

                interface ISceneComponentCollection;

                interface ISceneComponentFactory;

                interface ISceneMaterial;

                interface ISceneMaterialFactory;

                interface ISceneMaterialInput;

                interface ISceneMaterialInputFactory;

                interface ISceneMesh;

                interface ISceneMeshMaterialAttributeMap;

                interface ISceneMeshRendererComponent;

                interface ISceneMeshRendererComponentStatics;

                interface ISceneMeshStatics;

                interface ISceneMetallicRoughnessMaterial;

                interface ISceneMetallicRoughnessMaterialStatics;

                interface ISceneModelTransform;

                interface ISceneNode;

                interface ISceneNodeCollection;

                interface ISceneNodeStatics;

                interface ISceneObject;

                interface ISceneObjectFactory;

                interface IScenePbrMaterial;

                interface IScenePbrMaterialFactory;

                interface ISceneRendererComponent;

                interface ISceneRendererComponentFactory;

                interface ISceneSurfaceMaterialInput;

                interface ISceneSurfaceMaterialInputStatics;

                interface ISceneVisual;

                interface ISceneVisualStatics;

                runtimeclass SceneBoundingBox;

                runtimeclass SceneComponent;

                runtimeclass SceneComponentCollection;

                runtimeclass SceneMaterial;

                runtimeclass SceneMaterialInput;

                runtimeclass SceneMesh;

                runtimeclass SceneMeshMaterialAttributeMap;

                runtimeclass SceneMeshRendererComponent;

                runtimeclass SceneMetallicRoughnessMaterial;

                runtimeclass SceneModelTransform;

                runtimeclass SceneNode;

                runtimeclass SceneNodeCollection;

                runtimeclass SceneObject;

                runtimeclass ScenePbrMaterial;

                runtimeclass SceneRendererComponent;

                runtimeclass SceneSurfaceMaterialInput;

                runtimeclass SceneVisual;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace UI
    {
        namespace Composition
        {
            namespace Scenes
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.UI.Composition.Scenes.SceneAttributeSemantic>*>;

                    interface Windows.Foundation.Collections.IIterable<Windows.UI.Composition.Scenes.SceneComponent*>;

                    interface Windows.Foundation.Collections.IIterable<Windows.UI.Composition.Scenes.SceneNode*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.UI.Composition.Scenes.SceneAttributeSemantic>*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.UI.Composition.Scenes.SceneComponent*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.UI.Composition.Scenes.SceneNode*>;

                    interface Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.UI.Composition.Scenes.SceneAttributeSemantic>;

                    interface Windows.Foundation.Collections.IMapView<HSTRING, Windows.UI.Composition.Scenes.SceneAttributeSemantic>;

                    interface Windows.Foundation.Collections.IMap<HSTRING, Windows.UI.Composition.Scenes.SceneAttributeSemantic>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.UI.Composition.Scenes.SceneComponent*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.UI.Composition.Scenes.SceneNode*>;

                    interface Windows.Foundation.Collections.IVector<Windows.UI.Composition.Scenes.SceneComponent*>;

                    interface Windows.Foundation.Collections.IVector<Windows.UI.Composition.Scenes.SceneNode*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace UI
    {
        namespace Composition
        {
            namespace Scenes
            {
                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                enum SceneAlphaMode
                {
                    Opaque    = 0,
                    AlphaTest = 1,
                    Blend     = 2
                };

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                enum SceneAttributeSemantic
                {
                    Index     = 0,
                    Vertex    = 1,
                    Normal    = 2,
                    TexCoord0 = 3,
                    TexCoord1 = 4,
                    Color     = 5,
                    Tangent   = 6
                };

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                enum SceneComponentType
                {
                    MeshRendererComponent = 0
                };

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                enum SceneWrappingMode
                {
                    ClampToEdge    = 0,
                    MirroredRepeat = 1,
                    Repeat         = 2
                };

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneBoundingBox)]
                [uuid(5D8FFC70-C618-4083-8251-9962593114AA)]
                interface ISceneBoundingBox : IInspectable
                {
                    [propget] HRESULT Center([out] [retval] Windows.Foundation.Numerics.Vector3* value);
                    [propget] HRESULT Extents([out] [retval] Windows.Foundation.Numerics.Vector3* value);
                    [propget] HRESULT Max([out] [retval] Windows.Foundation.Numerics.Vector3* value);
                    [propget] HRESULT Min([out] [retval] Windows.Foundation.Numerics.Vector3* value);
                    [propget] HRESULT Size([out] [retval] Windows.Foundation.Numerics.Vector3* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneComponent)]
                [uuid(AE20FC96-226C-44BD-95CB-DD5ED9EBE9A5)]
                interface ISceneComponent : IInspectable
                {
                    [propget] HRESULT ComponentType([out] [retval] Windows.UI.Composition.Scenes.SceneComponentType* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneComponentCollection)]
                [uuid(C483791C-5F46-45E4-B666-A3D2259F9B2E)]
                interface ISceneComponentCollection : IInspectable
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneComponent)]
                [uuid(5FBC5574-DDD8-5889-AB5B-D8FA716E7C9E)]
                interface ISceneComponentFactory : IInspectable
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneMaterial)]
                [uuid(8CA74B7C-30DF-4E07-9490-37875AF1A123)]
                interface ISceneMaterial : IInspectable
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneMaterial)]
                [uuid(67536C19-A707-5254-A495-7FDC799893B9)]
                interface ISceneMaterialFactory : IInspectable
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneMaterialInput)]
                [uuid(422A1642-1EF1-485C-97E9-AE6F95AD812F)]
                interface ISceneMaterialInput : IInspectable
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneMaterialInput)]
                [uuid(A88FEB74-7D0A-5E4C-A748-1015AF9CA74F)]
                interface ISceneMaterialInputFactory : IInspectable
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneMesh)]
                [uuid(EE9A1530-1155-4C0C-92BD-40020CF78347)]
                interface ISceneMesh : IInspectable
                {
                    [propget] HRESULT Bounds([out] [retval] Windows.UI.Composition.Scenes.SceneBoundingBox** value);
                    [propget] HRESULT PrimitiveTopology([out] [retval] Windows.Graphics.DirectX.DirectXPrimitiveTopology* value);
                    [propput] HRESULT PrimitiveTopology([in] Windows.Graphics.DirectX.DirectXPrimitiveTopology value);
                    HRESULT FillMeshAttribute([in] Windows.UI.Composition.Scenes.SceneAttributeSemantic semantic, [in] Windows.Graphics.DirectX.DirectXPixelFormat format, [in] Windows.Foundation.MemoryBuffer* memory);
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneMeshMaterialAttributeMap)]
                [uuid(CE843171-3D43-4855-AA69-31FF988D049D)]
                interface ISceneMeshMaterialAttributeMap : IInspectable
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneMeshRendererComponent)]
                [uuid(9929F7E3-6364-477E-98FE-74ED9FD4C2DE)]
                interface ISceneMeshRendererComponent : IInspectable
                {
                    [propget] HRESULT Material([out] [retval] Windows.UI.Composition.Scenes.SceneMaterial** value);
                    [propput] HRESULT Material([in] Windows.UI.Composition.Scenes.SceneMaterial* value);
                    [propget] HRESULT Mesh([out] [retval] Windows.UI.Composition.Scenes.SceneMesh** value);
                    [propput] HRESULT Mesh([in] Windows.UI.Composition.Scenes.SceneMesh* value);
                    [propget] HRESULT UVMappings([out] [retval] Windows.UI.Composition.Scenes.SceneMeshMaterialAttributeMap** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneMeshRendererComponent)]
                [uuid(4954F37A-4459-4521-BD6E-2B38B8D711EA)]
                interface ISceneMeshRendererComponentStatics : IInspectable
                {
                    HRESULT Create([in] Windows.UI.Composition.Compositor* compositor, [out] [retval] Windows.UI.Composition.Scenes.SceneMeshRendererComponent** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneMesh)]
                [uuid(8412316C-7B57-473F-966B-81DC277B1751)]
                interface ISceneMeshStatics : IInspectable
                {
                    HRESULT Create([in] Windows.UI.Composition.Compositor* compositor, [out] [retval] Windows.UI.Composition.Scenes.SceneMesh** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneMetallicRoughnessMaterial)]
                [uuid(C1D91446-799C-429E-A4E4-5DA645F18E61)]
                interface ISceneMetallicRoughnessMaterial : IInspectable
                {
                    [propget] HRESULT BaseColorInput([out] [retval] Windows.UI.Composition.Scenes.SceneMaterialInput** value);
                    [propput] HRESULT BaseColorInput([in] Windows.UI.Composition.Scenes.SceneMaterialInput* value);
                    [propget] HRESULT BaseColorFactor([out] [retval] Windows.Foundation.Numerics.Vector4* value);
                    [propput] HRESULT BaseColorFactor([in] Windows.Foundation.Numerics.Vector4 value);
                    [propget] HRESULT MetallicFactor([out] [retval] FLOAT* value);
                    [propput] HRESULT MetallicFactor([in] FLOAT value);
                    [propget] HRESULT MetallicRoughnessInput([out] [retval] Windows.UI.Composition.Scenes.SceneMaterialInput** value);
                    [propput] HRESULT MetallicRoughnessInput([in] Windows.UI.Composition.Scenes.SceneMaterialInput* value);
                    [propget] HRESULT RoughnessFactor([out] [retval] FLOAT* value);
                    [propput] HRESULT RoughnessFactor([in] FLOAT value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneMetallicRoughnessMaterial)]
                [uuid(3BDDCA50-6D9D-4531-8DC4-B27E3E49B7AB)]
                interface ISceneMetallicRoughnessMaterialStatics : IInspectable
                {
                    HRESULT Create([in] Windows.UI.Composition.Compositor* compositor, [out] [retval] Windows.UI.Composition.Scenes.SceneMetallicRoughnessMaterial** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneModelTransform)]
                [uuid(C05576C2-32B1-4269-980D-B98537100AE4)]
                interface ISceneModelTransform : IInspectable
                {
                    [propget] HRESULT Orientation([out] [retval] Windows.Foundation.Numerics.Quaternion* value);
                    [propput] HRESULT Orientation([in] Windows.Foundation.Numerics.Quaternion value);
                    [propget] HRESULT RotationAngle([out] [retval] FLOAT* value);
                    [propput] HRESULT RotationAngle([in] FLOAT value);
                    [propget] HRESULT RotationAngleInDegrees([out] [retval] FLOAT* value);
                    [propput] HRESULT RotationAngleInDegrees([in] FLOAT value);
                    [propget] HRESULT RotationAxis([out] [retval] Windows.Foundation.Numerics.Vector3* value);
                    [propput] HRESULT RotationAxis([in] Windows.Foundation.Numerics.Vector3 value);
                    [propget] HRESULT Scale([out] [retval] Windows.Foundation.Numerics.Vector3* value);
                    [propput] HRESULT Scale([in] Windows.Foundation.Numerics.Vector3 value);
                    [propget] HRESULT Translation([out] [retval] Windows.Foundation.Numerics.Vector3* value);
                    [propput] HRESULT Translation([in] Windows.Foundation.Numerics.Vector3 value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneNode)]
                [uuid(ACF2C247-F307-4581-9C41-AF2E29C3B016)]
                interface ISceneNode : IInspectable
                {
                    [propget] HRESULT Children([out] [retval] Windows.UI.Composition.Scenes.SceneNodeCollection** value);
                    [propget] HRESULT Components([out] [retval] Windows.UI.Composition.Scenes.SceneComponentCollection** value);
                    [propget] HRESULT Parent([out] [retval] Windows.UI.Composition.Scenes.SceneNode** value);
                    [propget] HRESULT Transform([out] [retval] Windows.UI.Composition.Scenes.SceneModelTransform** value);
                    HRESULT FindFirstComponentOfType([in] Windows.UI.Composition.Scenes.SceneComponentType value, [out] [retval] Windows.UI.Composition.Scenes.SceneComponent** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneNodeCollection)]
                [uuid(29ADA101-2DD9-4332-BE63-60D2CF4269F2)]
                interface ISceneNodeCollection : IInspectable
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneNode)]
                [uuid(579A0FAA-BE9D-4210-908C-93D15FEED0B7)]
                interface ISceneNodeStatics : IInspectable
                {
                    HRESULT Create([in] Windows.UI.Composition.Compositor* compositor, [out] [retval] Windows.UI.Composition.Scenes.SceneNode** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneObject)]
                [uuid(1E94249B-0F1B-49EB-A819-877D8450005B)]
                interface ISceneObject : IInspectable
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneObject)]
                [uuid(14FE799A-33E4-52EF-956C-44229D21F2C1)]
                interface ISceneObjectFactory : IInspectable
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.ScenePbrMaterial)]
                [uuid(AAB6EBBE-D680-46DF-8294-B6800A9F95E7)]
                interface IScenePbrMaterial : IInspectable
                {
                    [propget] HRESULT AlphaCutoff([out] [retval] FLOAT* value);
                    [propput] HRESULT AlphaCutoff([in] FLOAT value);
                    [propget] HRESULT AlphaMode([out] [retval] Windows.UI.Composition.Scenes.SceneAlphaMode* value);
                    [propput] HRESULT AlphaMode([in] Windows.UI.Composition.Scenes.SceneAlphaMode value);
                    [propget] HRESULT EmissiveInput([out] [retval] Windows.UI.Composition.Scenes.SceneMaterialInput** value);
                    [propput] HRESULT EmissiveInput([in] Windows.UI.Composition.Scenes.SceneMaterialInput* value);
                    [propget] HRESULT EmissiveFactor([out] [retval] Windows.Foundation.Numerics.Vector3* value);
                    [propput] HRESULT EmissiveFactor([in] Windows.Foundation.Numerics.Vector3 value);
                    [propget] HRESULT IsDoubleSided([out] [retval] boolean* value);
                    [propput] HRESULT IsDoubleSided([in] boolean value);
                    [propget] HRESULT NormalInput([out] [retval] Windows.UI.Composition.Scenes.SceneMaterialInput** value);
                    [propput] HRESULT NormalInput([in] Windows.UI.Composition.Scenes.SceneMaterialInput* value);
                    [propget] HRESULT NormalScale([out] [retval] FLOAT* value);
                    [propput] HRESULT NormalScale([in] FLOAT value);
                    [propget] HRESULT OcclusionInput([out] [retval] Windows.UI.Composition.Scenes.SceneMaterialInput** value);
                    [propput] HRESULT OcclusionInput([in] Windows.UI.Composition.Scenes.SceneMaterialInput* value);
                    [propget] HRESULT OcclusionStrength([out] [retval] FLOAT* value);
                    [propput] HRESULT OcclusionStrength([in] FLOAT value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.ScenePbrMaterial)]
                [uuid(2E3F3DFE-0B85-5727-B5BE-B7D3CBAC37FA)]
                interface IScenePbrMaterialFactory : IInspectable
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneRendererComponent)]
                [uuid(F1ACB857-CF4F-4025-9B25-A2D1944CF507)]
                interface ISceneRendererComponent : IInspectable
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneRendererComponent)]
                [uuid(1DB6ED6C-AA2C-5967-9035-56352DC69658)]
                interface ISceneRendererComponentFactory : IInspectable
                {
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneSurfaceMaterialInput)]
                [uuid(9937DA5C-A9CA-4CFC-B3AA-088356518742)]
                interface ISceneSurfaceMaterialInput : IInspectable
                {
                    [propget] HRESULT BitmapInterpolationMode([out] [retval] Windows.UI.Composition.CompositionBitmapInterpolationMode* value);
                    [propput] HRESULT BitmapInterpolationMode([in] Windows.UI.Composition.CompositionBitmapInterpolationMode value);
                    [propget] HRESULT Surface([out] [retval] Windows.UI.Composition.ICompositionSurface** value);
                    [propput] HRESULT Surface([in] Windows.UI.Composition.ICompositionSurface* value);
                    [propget] HRESULT WrappingUMode([out] [retval] Windows.UI.Composition.Scenes.SceneWrappingMode* value);
                    [propput] HRESULT WrappingUMode([in] Windows.UI.Composition.Scenes.SceneWrappingMode value);
                    [propget] HRESULT WrappingVMode([out] [retval] Windows.UI.Composition.Scenes.SceneWrappingMode* value);
                    [propput] HRESULT WrappingVMode([in] Windows.UI.Composition.Scenes.SceneWrappingMode value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneSurfaceMaterialInput)]
                [uuid(5A2394D3-6429-4589-BBCF-B84F4F3CFBFE)]
                interface ISceneSurfaceMaterialInputStatics : IInspectable
                {
                    HRESULT Create([in] Windows.UI.Composition.Compositor* compositor, [out] [retval] Windows.UI.Composition.Scenes.SceneSurfaceMaterialInput** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneVisual)]
                [uuid(8E672C1E-D734-47B1-BE14-3D694FFA4301)]
                interface ISceneVisual : IInspectable
                {
                    [propget] HRESULT Root([out] [retval] Windows.UI.Composition.Scenes.SceneNode** value);
                    [propput] HRESULT Root([in] Windows.UI.Composition.Scenes.SceneNode* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [exclusiveto(Windows.UI.Composition.Scenes.SceneVisual)]
                [uuid(B8347E9A-50AA-4527-8D34-DE4CB8EA88B4)]
                interface ISceneVisualStatics : IInspectable
                {
                    HRESULT Create([in] Windows.UI.Composition.Compositor* compositor, [out] [retval] Windows.UI.Composition.Scenes.SceneVisual** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass SceneBoundingBox : Windows.UI.Composition.Scenes.SceneObject
                {
                    [default] interface Windows.UI.Composition.Scenes.ISceneBoundingBox;
                }

                [composable(Windows.UI.Composition.Scenes.ISceneComponentFactory, public, Windows.Foundation.UniversalApiContract, 8.0)]
                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass SceneComponent : Windows.UI.Composition.Scenes.SceneObject
                {
                    [default] interface Windows.UI.Composition.Scenes.ISceneComponent;
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass SceneComponentCollection : Windows.UI.Composition.Scenes.SceneObject
                {
                    interface Windows.UI.Composition.Scenes.ISceneComponentCollection;
                    [default] interface Windows.Foundation.Collections.IVector<Windows.UI.Composition.Scenes.SceneComponent*>;
                    interface Windows.Foundation.Collections.IIterable<Windows.UI.Composition.Scenes.SceneComponent*>;
                }

                [composable(Windows.UI.Composition.Scenes.ISceneMaterialFactory, public, Windows.Foundation.UniversalApiContract, 8.0)]
                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass SceneMaterial : Windows.UI.Composition.Scenes.SceneObject
                {
                    [default] interface Windows.UI.Composition.Scenes.ISceneMaterial;
                }

                [composable(Windows.UI.Composition.Scenes.ISceneMaterialInputFactory, public, Windows.Foundation.UniversalApiContract, 8.0)]
                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass SceneMaterialInput : Windows.UI.Composition.Scenes.SceneObject
                {
                    [default] interface Windows.UI.Composition.Scenes.ISceneMaterialInput;
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [marshaling_behavior(agile)]
                [static(Windows.UI.Composition.Scenes.ISceneMeshStatics, Windows.Foundation.UniversalApiContract, 8.0)]
                [threading(both)]
                runtimeclass SceneMesh : Windows.UI.Composition.Scenes.SceneObject
                {
                    [default] interface Windows.UI.Composition.Scenes.ISceneMesh;
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass SceneMeshMaterialAttributeMap : Windows.UI.Composition.Scenes.SceneObject
                {
                    [default] interface Windows.UI.Composition.Scenes.ISceneMeshMaterialAttributeMap;
                    interface Windows.Foundation.Collections.IMap<HSTRING, Windows.UI.Composition.Scenes.SceneAttributeSemantic>;
                    interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.UI.Composition.Scenes.SceneAttributeSemantic>*>;
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [marshaling_behavior(agile)]
                [static(Windows.UI.Composition.Scenes.ISceneMeshRendererComponentStatics, Windows.Foundation.UniversalApiContract, 8.0)]
                [threading(both)]
                runtimeclass SceneMeshRendererComponent : Windows.UI.Composition.Scenes.SceneRendererComponent
                {
                    [default] interface Windows.UI.Composition.Scenes.ISceneMeshRendererComponent;
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [marshaling_behavior(agile)]
                [static(Windows.UI.Composition.Scenes.ISceneMetallicRoughnessMaterialStatics, Windows.Foundation.UniversalApiContract, 8.0)]
                [threading(both)]
                runtimeclass SceneMetallicRoughnessMaterial : Windows.UI.Composition.Scenes.ScenePbrMaterial
                {
                    [default] interface Windows.UI.Composition.Scenes.ISceneMetallicRoughnessMaterial;
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass SceneModelTransform : Windows.UI.Composition.CompositionTransform
                {
                    [default] interface Windows.UI.Composition.Scenes.ISceneModelTransform;
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [marshaling_behavior(agile)]
                [static(Windows.UI.Composition.Scenes.ISceneNodeStatics, Windows.Foundation.UniversalApiContract, 8.0)]
                [threading(both)]
                runtimeclass SceneNode : Windows.UI.Composition.Scenes.SceneObject
                {
                    [default] interface Windows.UI.Composition.Scenes.ISceneNode;
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass SceneNodeCollection : Windows.UI.Composition.Scenes.SceneObject
                {
                    interface Windows.UI.Composition.Scenes.ISceneNodeCollection;
                    [default] interface Windows.Foundation.Collections.IVector<Windows.UI.Composition.Scenes.SceneNode*>;
                    interface Windows.Foundation.Collections.IIterable<Windows.UI.Composition.Scenes.SceneNode*>;
                }

                [composable(Windows.UI.Composition.Scenes.ISceneObjectFactory, public, Windows.Foundation.UniversalApiContract, 8.0)]
                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass SceneObject : Windows.UI.Composition.CompositionObject
                {
                    [default] interface Windows.UI.Composition.Scenes.ISceneObject;
                }

                [composable(Windows.UI.Composition.Scenes.IScenePbrMaterialFactory, public, Windows.Foundation.UniversalApiContract, 8.0)]
                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass ScenePbrMaterial : Windows.UI.Composition.Scenes.SceneMaterial
                {
                    [default] interface Windows.UI.Composition.Scenes.IScenePbrMaterial;
                }

                [composable(Windows.UI.Composition.Scenes.ISceneRendererComponentFactory, public, Windows.Foundation.UniversalApiContract, 8.0)]
                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass SceneRendererComponent : Windows.UI.Composition.Scenes.SceneComponent
                {
                    [default] interface Windows.UI.Composition.Scenes.ISceneRendererComponent;
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [marshaling_behavior(agile)]
                [static(Windows.UI.Composition.Scenes.ISceneSurfaceMaterialInputStatics, Windows.Foundation.UniversalApiContract, 8.0)]
                [threading(both)]
                runtimeclass SceneSurfaceMaterialInput : Windows.UI.Composition.Scenes.SceneMaterialInput
                {
                    [default] interface Windows.UI.Composition.Scenes.ISceneSurfaceMaterialInput;
                }

                [contract(Windows.Foundation.UniversalApiContract, 8.0)]
                [marshaling_behavior(agile)]
                [static(Windows.UI.Composition.Scenes.ISceneVisualStatics, Windows.Foundation.UniversalApiContract, 8.0)]
                [threading(both)]
                runtimeclass SceneVisual : Windows.UI.Composition.ContainerVisual
                {
                    [default] interface Windows.UI.Composition.Scenes.ISceneVisual;
                }
            }
        }
    }
}
