void OcclusFadingFinish(Effect.SceneFadeInOutMaterialFloat instance)
    {
        if (!GoablEnabledOcclusCulling)
        {
            return;
        }

        CollectFadingMaterial(m_ActiveFadeSceneResTable[instance]);
        m_ActiveFadeSceneResTable[instance].occlusFadingOut   = false;
        m_ActiveFadeSceneResTable[instance].occlusFadingIn    = false;
        m_ActiveFadeSceneResTable[instance].occlusFadInstance = null;
        m_ActiveFadeSceneResTable.Remove(instance);
        m_UnActiveOcclusFadeFadeInOutFloatList.Enqueue(instance);
        instance.enabled = false;
        instance.ClearMaterialInstance();
        instance.ClearFinishEvent();
    }
    Effect.SceneFadeInOutMaterialFloat GetFadeInstance(SceneResInfo res)
    {
        if (!GoablEnabledOcclusCulling)
        {
            return(null);
        }

        Effect.SceneFadeInOutMaterialFloat ef = null;
        if (m_UnActiveOcclusFadeFadeInOutFloatList.Count > 0)
        {
            ef = m_UnActiveOcclusFadeFadeInOutFloatList.Dequeue();
        }
        else
        {
            ef = CreateNewFadeInstance();
        }

        res.occlusFadInstance = ef;
        ef.ClearFinishEvent();
        ef.RegisterFinishEvent(OcclusFadingFinish);
        ef.RegisterFinishEvent(res.OnFadeFinish);
        m_ActiveFadeSceneResTable.Add(ef, res);
        return(ef);
    }