Comments 40
А можно где-то посмотреть видео всей этой красоты? А то у меня ось не поддерживает запуск exe файлов.
А скомпилированное есть? Искал — не нашел.
Непонятен смысл такой конструкции:
или на мне уже сказывается усталость и я туплю, или действительно оба выражения равны.
К тому же, использовать такие конструкции (как и другие булевы операции) следует весьма осторожно, т.к. в отличие от С / С++, в HLSL выражение вычисляется полностью (т.е. обе его части).
float r = (top.r < 0.5)? (bottom.r + 2*(top.r - 0.5)) : (bottom.r + 2*top.r - 1);
или на мне уже сказывается усталость и я туплю, или действительно оба выражения равны.
К тому же, использовать такие конструкции (как и другие булевы операции) следует весьма осторожно, т.к. в отличие от С / С++, в HLSL выражение вычисляется полностью (т.е. обе его части).
Это формула смешивания Linear Light. Комбинация Linear Burn и Linear Dodge.
Может вам будет понятна формула в таком виде:
if (Blend >= ½) R = Target + 2 x (Blend-½)
if (Blend < ½) R = Target + 2 x Blend -1
Может вам будет понятна формула в таком виде:
if (Blend >= ½) R = Target + 2 x (Blend-½)
if (Blend < ½) R = Target + 2 x Blend -1
Случайно отправил…
>>К тому же, использовать такие конструкции (как и другие булевы операции) следует весьма осторожно
Смотрел дизасемблированный вариант шейдера, когда занимался профилированием (Nvidia Perf HUD), все выглядело достаточно оптимально. Особо не вчитывался конечно, но ничего подозрительного не увидел.
>>К тому же, использовать такие конструкции (как и другие булевы операции) следует весьма осторожно
Смотрел дизасемблированный вариант шейдера, когда занимался профилированием (Nvidia Perf HUD), все выглядело достаточно оптимально. Особо не вчитывался конечно, но ничего подозрительного не увидел.

Как получить похожий эффект без дополнительной текстуры: pastebin.com/sErK2Lsa
В первом комментарии к первой части статьи верно написали, что неплохо бы вообще все расчеты на ГПУ перенести. Да и ДХ10+ не нужен, можно все считать в вершинном шейдере, взаимодействия между частицами то нет.
>Как получить похожий эффект без дополнительной текстуры: pastebin.com/sErK2Lsa
Спасибо. Как-то даже не подумал о генерации градиента.
>Да и ДХ10+ не нужен, можно все считать в вершинном шейдере, взаимодействия между частицами то нет.
Да, взаимодействия между частицами нет, но каждый раз нужно обновлять координаты частиц для дальнейших расчетов. Если вы знаете о том, как это можно сделать в DX9 — напишите пожалуйста.
Спасибо. Как-то даже не подумал о генерации градиента.
>Да и ДХ10+ не нужен, можно все считать в вершинном шейдере, взаимодействия между частицами то нет.
Да, взаимодействия между частицами нет, но каждый раз нужно обновлять координаты частиц для дальнейших расчетов. Если вы знаете о том, как это можно сделать в DX9 — напишите пожалуйста.
www.2ld.de/gdc2004/
Реализация на OGL, но на DX9 тоже можно сделать. Даже где-то видел. Возможно, это было в Nvidia SDK 9.
Реализация на OGL, но на DX9 тоже можно сделать. Даже где-то видел. Возможно, это было в Nvidia SDK 9.
Нашел на D3D нечто похожее. Называется Stream-Output
Эх, жаль. Stream-Output фича DirectX 10 и выше. Придется по старинке — писать координаты в 2D текстуры.
Данные о скорости в шейдер не передаются. Хотя конечно можно и передавать.
Если честно, то демонстрацию я начал делать вдохновившись одним видео на youtube, и в итоге сделал почти как там.
Если честно, то демонстрацию я начал делать вдохновившись одним видео на youtube, и в итоге сделал почти как там.
Имхо изучать DX9 сейчас точно так же как к примеру PHP 3. Про него пора забывать как про страшный сон, он пожил и так очень долго. При условии, что видяхи с поддержкой DX11 сейчас можно купить за 50-70$, не такие это уж и большие деньги.
«Для разработки эффектов существует замечательная программа от NVIDIA, называется она Fx Composer.»
Любопытно, системные требования для этой среды весьма скромные. У NVIDIA есть еще nsight, так вот там для отладки шейдеров нужно две машины (или машина с двумя гпу и виртуалкой). Правда там указано, что отладка происходит непосредственно в процессе их выполнения на GPU (т.е. на одном GPU шейдер выполняется, с другого мы за ним наблюдаем). Интересно, как работает «Fx Composer»? Скорее всего шейдеры отлаживаются на CPU.
Любопытно, системные требования для этой среды весьма скромные. У NVIDIA есть еще nsight, так вот там для отладки шейдеров нужно две машины (или машина с двумя гпу и виртуалкой). Правда там указано, что отладка происходит непосредственно в процессе их выполнения на GPU (т.е. на одном GPU шейдер выполняется, с другого мы за ним наблюдаем). Интересно, как работает «Fx Composer»? Скорее всего шейдеры отлаживаются на CPU.
Для отладки я бы все таки порекомендовал Nvidia PerfKit, хоть это и инструмент для профилирования.
А можете для тех кто не в теме DX и прочих шейдеров, в двух словах сказать, можно ли такие эффекты делать на простом canvas'e? DX я так понимаю, дает просто доступ к железу видюхи, которая намного быстрее всё это просчитывает и отрисовывает?
Немного не в тему вопрос, но все же интересно — а что, собственно моделировалось и визуализировалось?
Прикольно, особенно учитывая, что нет взаимодействия между частицами.
Если кому интересно, написал еще один вариант. Подробнее написано в конце поста, после UPD.
Круто, только стоит наверно включить v-sync, так как экран жутко мерцает.
Sign up to leave a comment.
Разработка системы частиц на платформе DirectX 9. Часть II