    Дым 1.06 IF (28.08.02)
      Плагин визуализации к Winamp от Ryan Geiss
      Авторские права (c) 2001-2002 Nullsoft, Inc.
      http://www.nullsoft.com/free/smoke/

    Что такое дым?
    -----------------------
    Дым — это плагин к Winamp, генерирующий управляемые звуком
    похожие на суп визуальные эффекты моделированием гидродинамики.

    Оглавление
    -----------------------
        1. требования
        2. установка
        3. настройка
        4. использование
        5. УСТРАНЕНИЕ НЕИСПРАВНОСТЕЙ
        6. известные проблемы
        7. использование линейного входа (для выступлений вживую и т.д.)
        8. благодарности
        9. история разработки

    1. Требования
    -----------------------
        Необходимы:
          * Аппаратное ускорение 3D-графики (т.е. видеокарта с поддержкой 3D)
          * DirectX 8.0 или новее ( http://www.microsoft.com/windows/directx/ )
          * Winamp 2.72 или новее ( http://www.winamp.com/ )
          * Windows 98/ME/2000/XP/и т.д.

        Рекомендуются:
          * Настоятельно рекомендуется процессор с частотой более 500 МГц,
               если нужно моделирование жидкости с приличной детализацией.
          * Подойдет любая старая 3D-видеокарта... кроме очень старых,
               не работающих с рендерингом текстур (вместо фреймбуфера).

    2. Установка
    -----------------------
        Если вы это читаете, значит пагин "дым" уже установлен,
        и его описание, smoke.html, тоже.

        Чтобы его настроить, в Winamp нажмите CTRL+P (настройки).
        Слева в разделе «Подключаемые модули» нажмите «визуальных эффектов»,
        затем справа выберите «Дым», затем нажмите «Настройка».

        Чтобы его запустить, можно нажать «Пуск» или CTRL+SHIFT+K.

        Если возникнут какие-либо проблемы, не сдавайтесь;
        почти наверняка ваша проблема разрешима и описана ниже
        в разделе УСТРАНЕНИЕ НЕИСПРАВНОСТЕЙ.

    3. Настройка
    -----------------------
        ГЛАВНЫЙ ФАКТОР, определяющий качество изображения — глубина цвета
        дисплея; 32-битный цвет - самое то. 16-битный тоже сойдет,
        но будет выглядеть очень и очень плохо на большинстве видеокарт.

        Как выбрать глубину цвета? Ответ разный и зависит от того,
        используется ли "дым" в оконном или полноэкранном режиме.

        В оконном режиме глубина цвета определяется (совпадает с)
        глубиной цвета действующего видеорежима Windows.
        Чтобы узнать, что это, и изменить её, выберите
        «Пуск» -> «Настройка» -> «Панель управления» -> «Экран»,
        перейдите на вкладку «Настройка» справа и найдите поле
        «Цветовая палитра».

        В полноэкранном режиме глубина цвета определяется видеорежимом,
        выбранным в панели настроек "дыма".

        Ещё совет:

        * Отойдите от монитора в полноэкранном режиме;
          «Дым» выглядит лучше, если вы расслаблены
          и смотрите на него из другого конца комнаты.
          Если "дым" занимает всё ваше поле зрения,
          он теряет привлекательность.

    4. Использование
    -----------------------
        Нажмите «F1» во время работы "дыма" для вызова списка
        клавиш управления. Они позволяют посмотреть частоту кадров,
        менять песни, просматривать списое песен и т.д.

        ESC    выйти из эффекта
        F1     показать/убрать справку
        F2     показать/убрать название песни
        F3     показать/убрать длину песни
        F4     показать/убрать отладочные данные
        F5     показать/убрать частоту кадров
        ALT-ENTER или двойной щелчок: переключение полноэкранного режима

        F      заморозить/разморозить цвет дыма
        N      случайный цвет дыма
        M      вкл/выкл ручной режим
        1-9    создание клубов вручную
        G      оптимизировать размер сетки (занимает ~5 секунд)
        T      вкл/выкл трассировщик частиц
        u/U    регулировка закручивания
        +/-    регулировка скорости анимации
        r/R    регулировка насыщенности цвета
        o/O    регулировка прозрачности частиц
        l/L    регулировка длины следа частиц
        ПРОБЕЛ очистить экран
        P      показать/убрать плейлист
        S      перемешать плейлист

        ZXCVBSR+-            управление Winamp
        Стрелки вверх-вниз   громкость
        Стрелки влево-вправо поиск; + SHIFT - быстрый поиск

    5. УСТРАНЕНИЕ НЕИСПРАВНОСТЕЙ
    -----------------------
        Если "дым" не запускается или зависает, попробуйте
        решить проблему следующими шагами. В 90% случаев
        проблема решается.

        1)  Убедитесь, что установлена последняя версия Microsoft DirectX
            (на момент написания этого руководства - 8.1).
            Даже если у вас уже последняя, подумайте, не переустановить ли:
            файлы порой могут портиться, а кривые видеодрайверы
            иногда могут нарушить установку DirectX.

        2)  Обновите видеодрайвер или попробуйте другие драйверы.
            Драйвер - это программа, переводящая команды работы
            с графикой программ, таких как "дым", на родной язык
            конкретно вашего видеоадаптера.

            Обычно есть три источника видеодрайверов:
                1) сайт производителя видеокарты
                2) сайт производителя видеочипов
                   («эталонные» драйверы для чипа, встроенного в карту)
                3) из комплекта Windows

            Дайте им всем шанс. Опробуйте каждый драйвер, который сможете найти
            для своей видеокарты. Если ваша карта не лучшая в своей линейке,
            попробуйте удалить драйвер и через Центр обновления Windows установите
            драйвер, поставляемый с Windows (особенно если это видеокарта Voodoo).
            Если это лучшая карта в линейке, попробуйте разные драйверы с сайтов
            производителя карты и чипа. В первую очередь - самые свежие
            *сертифицированные* драйверы, они были протестированы наиболее
            тщательно; если это не поможет, попробуйте «бета-версию» (предварительную)
            драйвера, на случай, если в ней исправлена именно ваша проблема.
            Однако «сломанные» (глючные) бета-драйверы (кхм, nVidia!) встречаются
            чаще стабильных, с исправленными старыми проблемами.

            Вот список некоторых известных производителей карт и чипов и их адреса,
            для поиска их драйверов:
                [ Matrox   ]
                [ nVidia   ]
                [ 3dfx (карты voodoo) - остатки домашней страницы ]
                [ voodoofiles.com - лучший выбор для драйверов и поддержки 3dfx ]
                [ Diamond  ]
                [ Creative ]
                [ Trident  ]
                [ ATI      ] (требуется JavaScript. нажмите «technical support»
                    в левом нижнем углу, затем «find a driver»

            Вот несколько сайтов-зеркал (или ссылок) на драйверы из многих источников:
                [ CNET ] (там нажмите «Utilities & Drivers», затем «Display & Video»)
                [ Driverzone.com ]

    6. Известные проблемы
    ---------------
        На старых видеокартах и многих ноутбуках трассы частиц могут
        иметь вид черных полос или точек (вместо тонких белых полос).
        Если это случилось у вас, попробуйте отключить частицы
        (в панели настроек); это настолько тонкая деталь, что эффект
        должен и без них выглядеть прилично.

    7. Использование линейного входа
    -----------------------
        Если хотите музыку с линейного входа аудиокарты или входа CD Audio
        (вместо mp3-файлов), это можно сделать; с ними будет работать любой
        плагин визуальных эффектов, а не только этот! Сделайте вот что:

            1) ПОДКЛЮЧИТЕ ПРОВОДА
                Подключите источник звука (стереосистему, радио и т.д.) к
                1/8-дюймовому разъему линейного входа или микрофона (как
                для наушников) аудиокарты. Возможно, перед этим стоит
                проверить кабель и убедиться, что он цел.

            2) ВЫБЕРИТЕ АУДИОВХОД И НАСТРОЙТЕ ГРОМКОСТЬ
                В Windows дважды щелкните значок динамика на панели задач (где
                часы). В меню перейдите в «Параметры» -> «Свойства» и выберите
                «Уровень записи». Затем убедитесь, что линейный (или микрофонный)
                вход (тот, который подключен у вас) ВЫБРАН (стоит галочка),
                и что громкость близка или равна максимальной. Нажмите «ОК».

            3) НАСТРОЙТЕ WINAMP НА ЛИНЕЙНЫЙ ВХОД
                Откройте Winamp и нажмите CTRL+L («Открыть адрес в сети»).
                Теперь введите адрес «linein://», который нужно открыть.
                (Без кавычек и обязательно с ПРЯМОЙ косой чертой.) Нажмите «ОТКРЫТЬ».
                (клавиша «x» для ленивых) и маленький встроенный осциллограф
                (или спектроскоп) в Winamp начнёт показывать ваш сигнал.
                Если сигнал не шевелится, возможно, нужно еще раз отрегулировать
                громкость регулятором громкости Windows или уровень звука на
                его источнике (физическом).

            4) ЗАПУСТИТЕ "ДЫМ"
                Запустите "дым" как обычно. Если волны слишком малы или велики,
                отрегулируйте громкость регулятором громкости Windows или
                уровень звука на его источнике.

    8. Благодарности
    -----------------------
        Я хочу искренне поблагодарить Ronald Fedkiw, Jos Stam и их
        коллег за невероятную работу по моделированию стабильных
        жидкостей, без которых эта программа никогда не появилась бы.

        Также спасибо Ryan Geiss за написание VMS (Visualization Mega SDK),
        на котором основан код этого плагина (с версии 1.06).
        VMS можно получить на: http://www.nullsoft.com/free/vms/ .

    9. История разработки
    -----------------------
    1.06 - 28 августа 2002
        -портирован старый код на VMS ("Visualization Mega SDK" Winamp-а)
            -> теперь требуется DX8.
            -> теперь есть фантастическая поддержка многомониторности
            -> теперь фантастический звуковой отклик
    	-добавлено затемнение краёв, так что экран обычно не будет
            полностью заполнен цветом; там всегда должен быть где-то
            тёмный фон.
        -обновленная система пересчета размера сетки и отсчёта времени
        -закручивание теперь чуть меняется случайным образом со временем
        -при запуске или по нажатию «G» размер сетки теперь заново
            оптимизируется по 3 секунды каждый цикл (с 1-секундным интервалом),
            до 5 раз или до достижения заданной частоты кадров; что наступит раньше.
        -теперь, если во время работы частота кадров слишком высока или слишком
            мала (на > 10%) в течение 8 секунд, автоматически меняется размер сетки.
        -уменьшена исходная плавучесть на 5%.
        -панель настроек: отключены настройки частиц, если стоит флажок «отключить частицы».
        -исправлена небольшая утечка памяти в имитаторе жидкости
        -изменен анализ звука: более тихие звуки (в тихих песнях) будут
            вызывать больше выбросов дыма.

    1.05b - 7 августа 2002
        -заметил (почти через год?!!), что завитки всегда кружились
            по часовой стрелке! Исправил, теперь они идут в обе стороны.
        -капитально изменён аудиоанализ; в 1.05 были серьезные изменения
            в калибровке звука для нового стиля рендеринга, но код был кривым.
        -уточнена сила и размер клубов дыма для лучшей синхронизации со звуком.
        -немного замедлена исходная скорость изменения цвета.
        -немного уменьшено исходное закручивание.
        -немного увеличена исходная скорость анимации.
        -уменьшена сила клубов при высоком качестве расчета давления
        -добавлено окно сообщения, предупреждающее пользователя, что он
            пытается запустить эффект в окне при 16-битном цвете.
        -исправлена очень глупая ошибка с клавишей «u»; это была настройка
            скорости анимации, а не закручивания!
        -(в целом, просто пересмотрены настройки параметров и диапазонов,
          чтобы эффект выглядел намного лучше.)

    1.05 - 30 июля 2002
        -дым теперь больше похож на воду, поскольку теперь используется
            итеративный рендеринг течения жидкости. (Это позволяет достичь
            довольно больших разрешений — до 1024x1024, если ваша видеокарта
            его потянет — и очень детальный.) Но название по прежнему «Дым».
        -обновлена система отклика на звук и цветовые схемы для лучшей работы
            с новым методом распространения изображения.
        -добавлены «жесткие сокращения» цветовой модели, теперь цвет остаётся
            в основном тем же в течение некоторого времени, а затем внезапно меняется.

    1.04 - 18 апреля 2002
        -имитация жидкости:
            -исправлены горизонтальные/вертикальные «беги» в жидкости, вызванные
                высоким закручиванием.  И увеличена эффективная завихренность на 20%
                для учета демпфирования, внесённого исправлением хода Г/В.
            -запущено исходное качество расчетов давления; понял, что у него огромное
                влияние на качество изображения независимо от размера сетки.
            -добавлены варианты еще лучшего качества расчетов давления в настройки
            -обнаружена ошибка, из-за которой клубы вверху были больше, чем внизу;
                из-за порядка цикла (x против y-major) адвекции скорости u и v.
                Но исправить её не удалось, так что вместо этого мы схитрили
                и сделали клубы вверху меньше, а внизу больше.
            -исправлена ошибка с полугранжевой адвекцией и местом выборки ею
                поля скоростей; раньше использовалась одна точка для образцов
                значений u и v, но поняв, что это неверно, сделали 2 отдельных
                образца - один u, второй v. Будет чуть медленнее, но теперь
                адвекция должна быть гораздо точнее.
            -оптимизирован расчет давления использованием супербазовых предварительных выборок
            -оптимизирована полулагранжева адвекция предоставленинм вектора предположения
                для каждой ячейки на основе вектора адвекции предыдущей ячейки;
                ОГРОМНЫЙ прирост производительности/качества!
        -аудиоотклик/клубы дыма:
            -чуть понижена битовая чувствительность; заметил, что она великовата
                из-за этого иногда удары срабатывали слишком часто.
            -клубы стали чуть меньше (в 1.04 beta 1 они были огромными)
            -расширен диапазон углов входа клуба дыма на 50%
            -клубам придана минимальную яркость
            -скорректированы (сила, размер, длительность и спад) клубов
                по качеству расчетов давления. (Раньше повышенное качество
                приводило к появлению крошечных, приглушенных клубов.)
        -разные настройки:
            -увеличен исходный размер окна (естественно, для оконного режима).
            -выравнивание частиц по «фронтам» клубов для любой длины следа.
            -значительно улучшено демпфирование краевой скорости
            -разрешено изменение завихренности со временем на величину до 10%,
                просто чтобы дела стали чуть лучше.
            -разрешено изменение насыщенности цвета со временем до 10%
            -немного уменьшено исходное демпфирование цвета (замедлено плавное
                почернение)

    1.04 beta 1 - 7 февраля 2002
        -"дым" теперь сворачивает Winamp при запуске. Это можно отключить в
            панели настроек, если не нужно.
        -настройки
            -звук: увидел негативные комментарии пользователей на winamp.com, испугался
                и полностью переработал звуковой отклик.  Кроме того, клубы дыма должны
                теперь стать больше и мощнее.
            -цвет: добавлен доминирующий цвет, который медленно меняется со временем,
                а не случайным выбором нового цвета для каждого клуба дыма. Это должно
                уменьшить разброс цветов со временем.
            -цвет: уменьшен исходный диапазон цветов r/g/b с [0,2–1,2] до [0,1–1,1].
            -цвет: увеличено общее затухание цвета, поэтому сейчас создается
             больше клубов, и они, как правило, становятся больше.
            -дым: чуть уменьшены делители для метода CG (== лучше, но медленнее расчет давления)
            -дым: ослаблена исходная гравитация; и ползунок теперь изначально находится в среднем положении
        -оптимизация
            -кэширование вычисления 1/размер_ячейки в нескольких местах
            -избавились от плотности
            -сделана компактне структура cellinfo; встроенный цвет для лучшего кэширования
            -встроены полулагранжевы функции и функции fCGMethod
            -удалены избыточные вычисления *dt в конце прохода CGmethod (при обновлении скоростей)
            -оптимизированы некоторые мелочи в полулагранже (большой эффект!)
            -удалена ненужная двойная инициализация daF,daR,daQ,daP до нуля.
        -клавиши управления
            -изменёна вызов справки с «H» на F1.
            -изменён показ отладочных данных с «I» на F4.
            -изменён показ частоты кадров с «F» на F5
            -добавлена «F» - заморозка цвета
            -добавлена «N» - случайный цвет
        -разное
            -немного подчищена панель настроек
            -калибровка: удалено сообщение «(калибровка...)» при нажатии клавиши «G».
            -калибровка: изменена методика автооптимизации; сейчас она при запуске
                делается не один раз, а дважды подряд, чтобы реузьтат был точнее.

    1.03 - 7 декабря 2001
        -панель настроек:
            -заменен выбор размера сетки на выбор «Заданной частоты кадров»
            -добавлен флажок «не показывать «H - вызов справки» и сообщения о калибровке»
            -добавлен ползунок «Скорость перехода к черному» (демпфирование цвета дыма)
            -добавлен флажок «не использовать альфа-прозрачность» для частиц; он нужен,
                если частицы кажутся черными.
            -добавлена кнопка «Описание»
            -добавлена кнопка «Сброс»
            -добавлена кнопка «Выбор шрифтов» и возможность настройки шрифтов
            -добавлена кнопка, открывающая адрес http://www.nullsoft.com/free/smoke/
        -клавиши управления:
            -добавлены клавиши регулировки насыщенности цвета (r/R)
            -добавлен ручной режим ('m', 0-9) управления клубами дыма
            -добавлена клавиша показа отладочный данных: 'i'
            -добавлена клавиша «k» для включения/выключения дыма
            -добавлены клавиши l/L для регулировки длины следа частиц
            -добавлены клавиши o/O для настройки прозрачности частиц
            -добавлен G для запуска оптимизации размера сетки.  Как только она закончит
                короткий анализ, размер сетки будет скорректирован для более точного
                достижения заданной в панели настроек частоты кадров.
        -для тех, у кого появлялось сообщение «failed to create m_lpDDSImageHW»,
            сделано кое-что, чтобы это исправить (удалён, возможно, ненужный флаг
            DDSCAPS_VIDEOMEMORY и добавлена вторая попытка при текстуре размером 256x256).
        -исправлена ошибка, из-за которой частицы и текст не были видны одновременно
            (перемещены вызовы DrawText после EndScene — конфликт GDI)
        -клубы дыма:
            -добавлена устойчивость (теперь они длятся дольше 1 кадра)
            -теперь отклонение применяется только в 1D (больше не в 2D): размер перпендикулярен краю,
                на котором находится клуб.
            -клубы внизу стали горячее, а клубы сверху - холоднее.
            -изменен диапазон rho с 0..1 на 0.4..0.6
            -изменение цвета увеличено с 0.1 до 0.25.
            -изменен исходный диапазон цвета от 0-1 до .2-1.2 для компенсации
                нового демпфирования цвета (fade-to-black)
        -частицы:
            -сделана возможность исправления ошибки некоторых видеокартам (особенно на ноутбуках),
                где частицы казались черными; в панели настроек нужно выбрать «не использовать
                альфа-прозрачность».
            -прекращено исчезновение/искрение частиц; все следы частиц теперь длиной не менее
                 2,5 пикселей (экранное пространство).
        -плейлист
            -плейлист теперь должен работать в Windows ME!
            -исправлена ошибка, из-за которой воспроизводимая в данный момент песня не выделялась
                красным цветом, если в её названии был символ "&"
            -стало немного быстрее, благодаря обновлению списка только при нажатии «p».
        -исправлена ошибка в коде очистки (выхода) - попытка при освобождении 2D массива очистить
            столбцы H вместо столбцов W.
        -исправлена известная ужасная ошибка с частотой кадров; анимация выглядела хорошо только при 15 кадрах в секунду;
            теперь она хороша при любой частоте кадров. (пришлось вытащить dt из пошагового приложения сил к дыму)
        -частота кадров теперь точная, даже при приостановке воспроизведения или другом событии, вызывающем остановку системы
        -исправлен пробел, так что он демпфирует все значения (даже поля давления)
        -защищён от показа без музыки
        -сделано демпфирование скорости на краях, колеблющееся со временем от 0 до 1 (всегда было 0)
        -удалена поддержка 24-битного цвета, ибо это зло
        -добавлено сообщение при запуске «H - вызов справки» и отключающий его флажок в панели настроек.
        -экран справки стал разборчивее благодаря 2 столбцам
        -пользователь больше не выбирает размер сетки; вместо этого выбирает желаемую частоту кадров.
            Плагин автоматически подстраивает размер сетки для достижения этой частоты кадров. При запуске
            он проверяет, находится ли в полноэкранном или оконном режиме, а также частоту кадров и размер сетки
            в последнем сеансе, и основываясь на этом и новой заданной частоте кадров (если он изменилась с
            последнего сеанса) вычисляет идеальный новый размер сетки.  После примерно 64 кадров анимации
            он проверяет, угадал ли (соответствует ли желаемой фактическая частота), и если нет, подстраивает
            размер сетки, чтобы приблизить к ней реальное число кадров в секунду.  Большую часть времени
            эта подстройка очень незначительна.
            При каждом изменении размера окна "дым" теперь автоматически оптимизирует размер сетки.
            Он учитывает новое соотношение сторон, заданную частоту и данные о прежней производительности,
            определяя идеальный размер сетки для достижения заданной частоты и делая ячейки сетки как можно
            более квадратнми (для лучшего вида).
            Для принудительной корректировки (оптимизации размера сетки) во время работы "дыма" нажмите «G».
        -кажется исправлена проблема, из-за которой "дым" не отображался в списке плагинов Winamp,
            из-за недостаточно новой версии DirectX. (исключена связь с ddraw.lib; вместо этого используется
            LoadLibrary и GetProcAddress для поиска и вызова DirectDrawCreate[Ex].)

    1.02 - 2 ноября 2001
        -Первый толковый выпуск.