public static void ApplyCineLightParameters(CineLight light, CineLightParameters parameters)
 {
     light.offset = parameters.offset;
     light.LightParentYaw.transform.localPosition = parameters.offset;
     light.Yaw = parameters.Yaw;
     light.LightParentYaw.transform.localRotation = Quaternion.Euler(0, parameters.Yaw, 0);
     light.Pitch = parameters.Pitch;
     light.LightParentPitch.transform.localRotation = Quaternion.Euler(-parameters.Pitch, 0, 0);
     light.Roll = parameters.Roll;
     light.lightGO.transform.localRotation = Quaternion.Euler(0, 180, parameters.Roll + 180);
     light.distance = parameters.distance;
     light.lightGO.transform.localPosition = new Vector3(0, 0, parameters.distance);
     light.timelineSelected = parameters.drawGizmo;
 }
Example #2
0
        static void DrawCinelightGizmo(CineLight scr, GizmoType gizmoType)
        {
            var gizmosIntensity = 0.1f;

            if (Selection.activeGameObject == scr.gameObject || scr.timelineSelected)
            {
                gizmosIntensity = 1.0f;
            }

            Gizmos.color = Handles.color = new Color(Gizmos.color.r, Gizmos.color.g, Gizmos.color.b, gizmosIntensity);

            if (scr.LightParentYaw != null && scr.drawGizmo)
            {
                LightingGizmos.DrawCross(scr.LightParentYaw.transform);
                if (scr.lightGO.GetComponent <Light>().type != LightType.Spot)
                {
                    Debug.Log("light is not a spotlight");
                    return;
                }
                LightingGizmos.DrawSpotlightGizmo(scr.lightGO.GetComponent <Light>());
            }
        }
Example #3
0
    //Not sure I want to support blending more than 2 lights
    private void DoLongLoop(CineLight cineLight, Playable handle, int count)
    {
        for (var i = 0; i < count; i++)
        {
            var inputHandle = handle.GetInput(i);
            var weight      = handle.GetInputWeight(i);

            if (inputHandle.IsValid() &&
                inputHandle.GetPlayState() == PlayState.Playing &&
                weight > 0)
            {
                var data = ((ScriptPlayable <CineLightClipPlayable>)inputHandle).GetBehaviour();
                if (data != null)
                {
                    var lerpedLightParameters = new LightParameters();
                    lerpedLightParameters = LightingUtilities.LerpLightParameters(neutralLightParameters, data.lightParameters, isFading ? 1 : weight);

                    //Not using shortest path
                    mixedCineLightParameters.Yaw                 += Mathf.Lerp(neutralCineLightParameters.Yaw, data.cinelightParameters.Yaw, isFading ? 1 : weight);
                    mixedCineLightParameters.Pitch               += Mathf.Lerp(neutralCineLightParameters.Pitch, data.cinelightParameters.Pitch, isFading ? 1 : weight);
                    mixedCineLightParameters.Roll                += Mathf.Lerp(neutralCineLightParameters.Roll, data.cinelightParameters.Roll, isFading ? 1 : weight);
                    mixedCineLightParameters.distance            += Mathf.Lerp(neutralCineLightParameters.distance, data.cinelightParameters.distance, isFading ? 1 : weight);
                    mixedCineLightParameters.offset              += Vector3.Lerp(neutralCineLightParameters.offset, data.cinelightParameters.offset, isFading ? 1 : weight);
                    mixedCineLightParameters.linkToCameraRotation = data.cinelightParameters.linkToCameraRotation;
                    if (weight > 0.5f)
                    {
                        cineLight.drawGizmo = data.cinelightParameters.drawGizmo;
                    }
                    if (weight == 1 || isFading)
                    {
                        mixedLightParameters.shadows = data.lightParameters.shadows;
                    }

                    mixedLightParameters.intensity          += Mathf.Lerp(neutralLightParameters.intensity, data.lightParameters.intensity, weight);
                    mixedLightParameters.range              += lerpedLightParameters.range;
                    mixedLightParameters.colorFilter        += lerpedLightParameters.colorFilter;
                    mixedLightParameters.lightAngle         += lerpedLightParameters.lightAngle;
                    mixedLightParameters.cullingMask         = lerpedLightParameters.cullingMask;
                    mixedLightParameters.shadowQuality       = lerpedLightParameters.shadowQuality;
                    mixedLightParameters.affectDiffuse       = lerpedLightParameters.affectDiffuse;
                    mixedLightParameters.affectSpecular      = lerpedLightParameters.affectSpecular;
                    mixedLightParameters.normalBias         += lerpedLightParameters.normalBias;
                    mixedLightParameters.ShadowNearClip     += lerpedLightParameters.ShadowNearClip;
                    mixedLightParameters.viewBiasMin        += lerpedLightParameters.viewBiasMin;
                    mixedLightParameters.viewBiasScale      += lerpedLightParameters.viewBiasScale;
                    mixedLightParameters.shadowStrength     += lerpedLightParameters.shadowStrength;
                    mixedLightParameters.shadowResolution   += lerpedLightParameters.shadowResolution;
                    mixedLightParameters.innerSpotPercent   += lerpedLightParameters.innerSpotPercent;
                    mixedLightParameters.maxSmoothness      += lerpedLightParameters.maxSmoothness;
                    mixedLightParameters.fadeDistance       += lerpedLightParameters.fadeDistance;
                    mixedLightParameters.shadowFadeDistance += lerpedLightParameters.shadowFadeDistance;

                    mixedShadowCasterParameters.shadowCasterDistance += Mathf.Lerp(0, data.shadowCasterParameters.shadowCasterDistance, isFading ? 1 : weight);
                    mixedShadowCasterParameters.shadowCasterOffset   += Vector2.Lerp(Vector2.zero, data.shadowCasterParameters.shadowCasterOffset, isFading ? 1 : weight);
                    mixedShadowCasterParameters.shadowCasterSize     += Vector2.Lerp(Vector2.zero, data.shadowCasterParameters.shadowCasterSize, isFading ? 1 : weight);

                    if (weight > 0.5 || isFading)
                    {
                        mixedShadowCasterParameters.useShadowCaster = data.shadowCasterParameters.useShadowCaster;
                        mixedCineLightParameters.drawGizmo          = data.cinelightParameters.drawGizmo;
                        mixedLightParameters.lightCookie            = data.lightParameters.lightCookie;
                    }
                }
            }
        }
    }
Example #4
0
    private void DoCrossFadeSettings(CineLightParameters fromCineLightParameters, LightParameters fromLightParameters, ShadowCasterParameters fromShadowCasterParameters, CineLightParameters toCineLightParameters, LightParameters toLightParameters, ShadowCasterParameters toShadowCasterParameters, float weight, CineLight cineLight)
    {
        //Shortest Path Rotation
        if (Mathf.Abs(fromCineLightParameters.Yaw - toCineLightParameters.Yaw) > 180)
        {
            if (fromCineLightParameters.Yaw > 0)
            {
                mixedCineLightParameters.Yaw = Mathf.Lerp(fromCineLightParameters.Yaw - 360, toCineLightParameters.Yaw, weight);
            }
            else
            {
                mixedCineLightParameters.Yaw = Mathf.Lerp(fromCineLightParameters.Yaw + 360, toCineLightParameters.Yaw, weight);
            }
        }
        else
        {
            mixedCineLightParameters.Yaw = Mathf.Lerp(fromCineLightParameters.Yaw, toCineLightParameters.Yaw, weight);
        }

        mixedCineLightParameters.Pitch                = Mathf.Lerp(fromCineLightParameters.Pitch, toCineLightParameters.Pitch, weight);
        mixedCineLightParameters.Roll                 = Mathf.Lerp(fromCineLightParameters.Roll, toCineLightParameters.Roll, weight);
        mixedCineLightParameters.distance             = Mathf.Lerp(fromCineLightParameters.distance, toCineLightParameters.distance, weight);
        mixedCineLightParameters.offset               = Vector3.Lerp(fromCineLightParameters.offset, toCineLightParameters.offset, weight);
        mixedCineLightParameters.linkToCameraRotation = toCineLightParameters.linkToCameraRotation;

        mixedLightParameters.intensity        = Mathf.Lerp(fromLightParameters.intensity, toLightParameters.intensity, weight);
        mixedLightParameters.range            = Mathf.Lerp(fromLightParameters.range, toLightParameters.range, weight);
        mixedLightParameters.colorFilter      = Color.Lerp(fromLightParameters.colorFilter, toLightParameters.colorFilter, weight);
        mixedLightParameters.lightAngle       = Mathf.Lerp(fromLightParameters.lightAngle, toLightParameters.lightAngle, weight);
        mixedLightParameters.normalBias       = Mathf.Lerp(fromLightParameters.normalBias, toLightParameters.normalBias, weight);
        mixedLightParameters.ShadowNearClip   = Mathf.Lerp(fromLightParameters.ShadowNearClip, toLightParameters.ShadowNearClip, weight);
        mixedLightParameters.viewBiasMin      = Mathf.Lerp(fromLightParameters.viewBiasMin, toLightParameters.viewBiasMin, weight);
        mixedLightParameters.viewBiasScale    = Mathf.Lerp(fromLightParameters.viewBiasScale, toLightParameters.viewBiasScale, weight);
        mixedLightParameters.shadowStrength   = Mathf.Lerp(fromLightParameters.shadowStrength, toLightParameters.shadowStrength, weight);
        mixedLightParameters.shadowResolution = (int)Mathf.Lerp(fromLightParameters.shadowResolution, toLightParameters.shadowResolution, weight);
        mixedLightParameters.innerSpotPercent = Mathf.Lerp(fromLightParameters.innerSpotPercent, toLightParameters.innerSpotPercent, weight);
        mixedLightParameters.maxSmoothness    = Mathf.Lerp(fromLightParameters.maxSmoothness, toLightParameters.maxSmoothness, weight);

        mixedShadowCasterParameters.shadowCasterDistance = Mathf.Lerp(fromShadowCasterParameters.shadowCasterDistance, toShadowCasterParameters.shadowCasterDistance, weight);
        mixedShadowCasterParameters.shadowCasterOffset   = Vector2.Lerp(fromShadowCasterParameters.shadowCasterOffset, toShadowCasterParameters.shadowCasterOffset, weight);
        mixedShadowCasterParameters.shadowCasterSize     = Vector2.Lerp(fromShadowCasterParameters.shadowCasterSize, toShadowCasterParameters.shadowCasterSize, weight);

        //Doesn't interpolate
        if (weight < 0.5f)
        {
            cineLight.drawGizmo                         = fromCineLightParameters.drawGizmo;
            mixedLightParameters.type                   = fromLightParameters.type;
            mixedLightParameters.shadows                = fromLightParameters.shadows;
            mixedLightParameters.affectDiffuse          = fromLightParameters.affectDiffuse;
            mixedLightParameters.affectSpecular         = fromLightParameters.affectSpecular;
            mixedLightParameters.cullingMask            = fromLightParameters.cullingMask;
            mixedLightParameters.shadowQuality          = fromLightParameters.shadowQuality;
            mixedShadowCasterParameters.useShadowCaster = fromShadowCasterParameters.useShadowCaster;
            mixedCineLightParameters.drawGizmo          = fromCineLightParameters.drawGizmo;
            mixedLightParameters.lightCookie            = fromLightParameters.lightCookie;
        }
        if (weight > 0.5f)
        {
            cineLight.drawGizmo                         = toCineLightParameters.drawGizmo;
            mixedLightParameters.type                   = toLightParameters.type;
            mixedLightParameters.shadows                = toLightParameters.shadows;
            mixedLightParameters.affectDiffuse          = toLightParameters.affectDiffuse;
            mixedLightParameters.affectSpecular         = toLightParameters.affectSpecular;
            mixedLightParameters.cullingMask            = toLightParameters.cullingMask;
            mixedLightParameters.shadowQuality          = toLightParameters.shadowQuality;
            mixedShadowCasterParameters.useShadowCaster = toShadowCasterParameters.useShadowCaster;
            mixedCineLightParameters.drawGizmo          = toCineLightParameters.drawGizmo;
            mixedLightParameters.lightCookie            = toLightParameters.lightCookie;
        }
    }
Example #5
0
    void OnEnable()
    {
        cineLight = (CineLight)serializedObject.targetObject;

        Light     light                     = cineLight.GetComponentInChildren <Light>();
        Transform lightTransform            = light.transform;
        Transform lightParentPitchTransform = light.transform.parent;
        Transform lightParentYawTransform   = lightParentPitchTransform.transform.parent;

        m_SerializedLight = new SerializedObject(light);
        m_SerializedLightParentYawTransform   = new SerializedObject(lightParentYawTransform);
        m_SerializedLightTransform            = new SerializedObject(lightTransform);
        m_SerializedLightParentPitchTransform = new SerializedObject(lightParentPitchTransform);

        //HDRP
        m_SerializedAdditionalLightData  = new SerializedObject(light.gameObject.GetComponent <HDAdditionalLightData>());
        m_SerializedAdditionalShadowData = new SerializedObject(light.gameObject.GetComponent <AdditionalShadowData>());

        yaw   = serializedObject.FindProperty("Yaw");
        pitch = serializedObject.FindProperty("Pitch");
        roll  = serializedObject.FindProperty("Roll");

        type       = m_SerializedLight.FindProperty("m_Type");
        range      = m_SerializedLight.FindProperty("m_Range");
        spotAngle  = m_SerializedLight.FindProperty("m_SpotAngle");
        cookie     = m_SerializedLight.FindProperty("m_Cookie");
        cookieSize = m_SerializedLight.FindProperty("m_CookieSize");
        color      = m_SerializedLight.FindProperty("m_Color");
        //intensity = m_SerializedLight.FindProperty("m_Intensity");
        bounceIntensity     = m_SerializedLight.FindProperty("m_BounceIntensity");
        colorTemperature    = m_SerializedLight.FindProperty("m_ColorTemperature");
        useColorTemperature = m_SerializedLight.FindProperty("m_UseColorTemperature");
        shadowsType         = m_SerializedLight.FindProperty("m_Shadows.m_Type");
        shadowsQuality      = m_SerializedLight.FindProperty("m_Shadows.m_Resolution");
        shadowsNormalBias   = m_SerializedLight.FindProperty("m_Shadows.m_NormalBias");
        shadowsNearPlane    = m_SerializedLight.FindProperty("m_Shadows.m_NearPlane");
        lightmapping        = m_SerializedLight.FindProperty("m_Lightmapping");
        areaSizeX           = m_SerializedLight.FindProperty("m_AreaSize.x");
        areaSizeY           = m_SerializedLight.FindProperty("m_AreaSize.y");
        //bakedShadowRadius = m_SerializedLight.FindProperty("m_ShadowRadius");
        //bakedShadowAngle = m_SerializedLight.FindProperty("m_ShadowAngle");
        cullingMask = m_SerializedLight.FindProperty("m_CullingMask");

        useShadowCaster       = serializedObject.FindProperty("useShadowCaster");
        shadowsCasterSize     = serializedObject.FindProperty("shadowsCasterSize");
        shadowsCasterDistance = serializedObject.FindProperty("shadowsCasterDistance");
        shadowsCasterOffset   = serializedObject.FindProperty("shadowsCasterOffset");

        displayName  = serializedObject.FindProperty("displayName");
        drawGizmo    = serializedObject.FindProperty("drawGizmo");
        showEntities = serializedObject.FindProperty("showEntities");

        lightParentYawLocalPosition   = m_SerializedLightParentYawTransform.FindProperty("m_LocalPosition");
        lightParentYawLocalRotation   = m_SerializedLightParentYawTransform.FindProperty("m_LocalRotation");
        lightParentPitchLocalRotation = m_SerializedLightParentPitchTransform.FindProperty("m_LocalRotation");

        distance      = m_SerializedLightTransform.FindProperty("m_LocalPosition.z");
        lightRotation = m_SerializedLightTransform.FindProperty("m_LocalRotation");

        innerSpotPercent = m_SerializedAdditionalLightData.FindProperty("m_InnerSpotPercent");
        maxSmoothness    = m_SerializedAdditionalLightData.FindProperty("maxSmoothness");
        affectDiffuse    = m_SerializedAdditionalLightData.FindProperty("affectDiffuse");
        affectSpecular   = m_SerializedAdditionalLightData.FindProperty("affectSpecular");
        fadeDistance     = m_SerializedAdditionalLightData.FindProperty("fadeDistance");
        intensity        = m_SerializedAdditionalLightData.FindProperty("intensity");
        normalBiasMax    = m_SerializedAdditionalShadowData.FindProperty("normalBiasMax");

        shadowResolution   = m_SerializedAdditionalShadowData.FindProperty("shadowResolution");
        shadowFadeDistance = m_SerializedAdditionalShadowData.FindProperty("shadowFadeDistance");
        viewBiasMin        = m_SerializedAdditionalShadowData.FindProperty("viewBiasMin");
        viewBiasScale      = m_SerializedAdditionalShadowData.FindProperty("viewBiasScale");
        normalBiasMin      = m_SerializedAdditionalShadowData.FindProperty("normalBiasMin");
        normalBiasMax      = m_SerializedAdditionalShadowData.FindProperty("normalBiasMax");
        shadowDimmer       = m_SerializedAdditionalShadowData.FindProperty("shadowDimmer");

        InitShadowCasterSerializedObject();

        additionalLightData = (HDAdditionalLightData)m_SerializedAdditionalLightData.targetObject;
    }