// Copyright (c) .NET Foundation and Contributors (https://dotnetfoundation.org/ & https://stride3d.net) and Silicon Studio Corp. (https://www.siliconstudio.co.jp)
// Distributed under the MIT license. See the LICENSE.md file in the project root for more information.
namespace Stride.Rendering.Lights
{
    /// <summary>
    /// Defines light streams variable.
    /// </summary>
    shader LightStream
    {
        stage stream float3 lightPositionWS;
        stage stream float3 lightDirectionWS;
        stage stream float3 lightColor;
        stage stream float3 lightColorNdotL;
        stage stream float3 lightSpecularColorNdotL;
        stage stream float lightAttenuation;
        stage stream float3 envLightDiffuseColor;
        stage stream float3 envLightSpecularColor;

        // normal dot light
        stage stream float NdotL;

        stage stream float lightDirectAmbientOcclusion;

        void ResetLightStream()
        {
            streams.lightPositionWS = 0;
            streams.lightDirectionWS = 0;
            streams.lightColor = 0;
            streams.lightColorNdotL = 0;
            streams.lightSpecularColorNdotL = 0;
            streams.lightAttenuation = 1.0f;
            streams.envLightDiffuseColor = 0;
            streams.envLightSpecularColor = 0;
            streams.lightDirectAmbientOcclusion = 1.0f;
            streams.NdotL = 0;
        }
    };
}
