//
// 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.Graphics.Effects.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Graphics
    {
        namespace Effects
        {
            interface IGraphicsEffect;

            interface IGraphicsEffectSource;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Composition
        {
            namespace Effects
            {
                typedef enum SceneLightingEffectReflectanceModel SceneLightingEffectReflectanceModel;

                interface ISceneLightingEffect;

                interface ISceneLightingEffect2;

                runtimeclass SceneLightingEffect;
            }
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace UI
    {
        namespace Composition
        {
            namespace Effects
            {
                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                enum SceneLightingEffectReflectanceModel
                {
                    BlinnPhong                = 0,
                    PhysicallyBasedBlinnPhong = 1
                };

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.UI.Composition.Effects.SceneLightingEffect)]
                [uuid(91BB5E52-95D1-4F8B-9A5A-6408B24B8C6A)]
                interface ISceneLightingEffect : IInspectable
                {
                    [propget] HRESULT AmbientAmount([out] [retval] FLOAT* value);
                    [propput] HRESULT AmbientAmount([in] FLOAT value);
                    [propget] HRESULT DiffuseAmount([out] [retval] FLOAT* value);
                    [propput] HRESULT DiffuseAmount([in] FLOAT value);
                    [propget] HRESULT NormalMapSource([out] [retval] Windows.Graphics.Effects.IGraphicsEffectSource** value);
                    [propput] HRESULT NormalMapSource([in] Windows.Graphics.Effects.IGraphicsEffectSource* value);
                    [propget] HRESULT SpecularAmount([out] [retval] FLOAT* value);
                    [propput] HRESULT SpecularAmount([in] FLOAT value);
                    [propget] HRESULT SpecularShine([out] [retval] FLOAT* value);
                    [propput] HRESULT SpecularShine([in] FLOAT value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                [exclusiveto(Windows.UI.Composition.Effects.SceneLightingEffect)]
                [uuid(9E270E81-72F0-4C5C-95F8-8A6E0024F409)]
                interface ISceneLightingEffect2 : IInspectable
                {
                    [propget] HRESULT ReflectanceModel([out] [retval] Windows.UI.Composition.Effects.SceneLightingEffectReflectanceModel* value);
                    [propput] HRESULT ReflectanceModel([in] Windows.UI.Composition.Effects.SceneLightingEffectReflectanceModel value);
                }

                [activatable(Windows.Foundation.UniversalApiContract, 3.0)]
                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass SceneLightingEffect
                {
                    [default] interface Windows.UI.Composition.Effects.ISceneLightingEffect;
                    [contract(Windows.Foundation.UniversalApiContract, 5.0)] interface Windows.UI.Composition.Effects.ISceneLightingEffect2;
                    interface Windows.Graphics.Effects.IGraphicsEffect;
                    interface Windows.Graphics.Effects.IGraphicsEffectSource;
                }
            }
        }
    }
}
