public void UpdateShadows()
        {
            m_projectorInterface.GetClipPlanes(ref m_clipPlanes, null);
            for (var i = 0; i < m_shadowCasterCount; ++i)
            {
                m_prevShadowCasters[i] = m_shadowCasters[i];
            }
            for (var i = 0; i < m_shadowCasterCount; ++i)
            {
                var caster = m_shadowCasters[i];
                if ((m_shadowCasterMask.value & (1 << caster.gameObject.layer)) == 0)
                {
                    RemoveCaster(m_shadowCasters[i]);
                    --i;
                }
                if (!IsInProjectionVolume(caster))
                {
                    RemoveCaster(caster);
                    --i;
                }
            }
            var casters = LightProjectorShadowCaster.GetAllCasters();

            for (var i = 0; i < casters.Count && m_shadowCasterCount < m_maxShadowNum; ++i)
            {
                var caster = casters[i];
                if ((m_shadowCasterMask.value & (1 << caster.gameObject.layer)) == 0)
                {
                    continue;
                }
                var alreadyExist = false;
                for (var j = 0; j < m_prevShadowCasterCount; ++j)
                {
                    if (caster == m_prevShadowCasters[j])
                    {
                        alreadyExist = true;
                        break;
                    }
                }
                if ((!alreadyExist) && IsInProjectionVolume(caster))
                {
                    AddCaster(caster);
                }
            }
            Vector3 lightPos;

            if (m_projectorInterface.isOrthographic)
            {
                lightPos = m_projectorInterface.direction;
            }
            else
            {
                lightPos = m_projectorInterface.position;
            }
            for (var i = 0; i < m_shadowCasterCount; ++i)
            {
                Matrix4x4 mat;
                if (m_projectorInterface.isOrthographic)
                {
                    mat = m_shadowCasters[i].GetOrthoProjectionMatrix(lightPos);
                }
                else
                {
                    mat = m_shadowCasters[i].GetProjectionMatrix(lightPos);
                }
                m_material.SetMatrix(s_shadowProjectionMatrixPropertyIDs[i], mat);
                m_material.SetTexture(s_shadowTexturePropertyIDs[i], m_shadowCasters[i].shadowTexture);
            }
            if (m_prevShadowCasterCount != m_shadowCasterCount)
            {
                m_material.DisableKeyword(s_shadowNumKeyword[m_prevShadowCasterCount]);
                m_material.EnableKeyword(s_shadowNumKeyword[m_shadowCasterCount]);
                m_prevShadowCasterCount = m_shadowCasterCount;
            }
        }