private void DrawVolumeList()
    {
        double searchDelayElapsed = EditorApplication.timeSinceStartup - searchDelayStart;

        if (volumeList == null || searchDelayElapsed > searchDelayDuration)
        {
            volumeList       = Resources.FindObjectsOfTypeAll(typeof(AmplifyColorVolume)) as AmplifyColorVolume[];
            searchDelayStart = EditorApplication.timeSinceStartup;
        }

        List <AmplifyColorVolume> filtered = volumeList.OrderBy(o => o.name).ToList <AmplifyColorVolume>();

        GUILayout.BeginVertical();
        GUILayout.Space(15);

        DrawHeader(filtered);

        GUILayout.Space(15);

        dirtyVolumeFlags = false;

        foreach (AmplifyColorVolume volume in filtered)
        {
            GUILayout.BeginHorizontal();
            GUILayout.BeginVertical();

            DrawVolumeProperties(volume);

            EditorGUILayout.Separator();

            DrawVolumeEffects(volume);

            GUILayout.Space(3);
            GUILayout.EndVertical();

            DrawLut(volume);

            GUILayout.EndHorizontal();

            DrawLineSeparator();
        }

        if (dirtyVolumeFlags)
        {
            GUI.FocusControl("");
            AmplifyColorBase[]       effects = Resources.FindObjectsOfTypeAll(typeof(AmplifyColorBase)) as AmplifyColorBase[];
            AmplifyColorVolumeBase[] volumes = Resources.FindObjectsOfTypeAll(typeof(AmplifyColorVolumeBase)) as AmplifyColorVolumeBase[];
            VolumeEffectFlags.UpdateCamFlags(effects, volumes);
        }

        GUILayout.EndVertical();

        if (GUI.changed)
        {
            SceneView.RepaintAll();
        }
    }