Как стать автором
Обновить

Комментарии 40

А можно где-то посмотреть видео всей этой красоты? А то у меня ось не поддерживает запуск exe файлов.
Скоро добавлю, пока заливается на Youtube.
Готово. На весь экран лучше не разворачивать, youtube его изрядно так сжал, хоть я и заливал несжатое видео в разрешении 1280x1024.
Благодарю.
Думаю, через пару лет, когда процессоры еще немного подрастут, такую красоту можно будет ставить в качестве скринсейвера.
Офигеть, прямо зарождение новой планеты!
хватит уже с калькуляторов Хабр читать ;)
НЛО прилетело и опубликовало эту надпись здесь
{vx, vy, vz} -> {R, G, B} = Еще красивее должно быть.
А скомпилированное есть? Искал — не нашел.
Вкладка Downloads на GitHub.
Непонятен смысл такой конструкции:

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
Случайно отправил…

>>К тому же, использовать такие конструкции (как и другие булевы операции) следует весьма осторожно
Смотрел дизасемблированный вариант шейдера, когда занимался профилированием (Nvidia Perf HUD), все выглядело достаточно оптимально. Особо не вчитывался конечно, но ничего подозрительного не увидел.
Вполне возможно, что компилятор просто выпилил дублирующее выражение.
НЛО прилетело и опубликовало эту надпись здесь
Действительно. Моя невнимательность мне точно когда-то выйдет боком.
Правильная формула:
if (Blend >= ½) R = Target + 2 x Blend — 1
if (Blend < ½) R = Target + Blend


Как получить похожий эффект без дополнительной текстуры: pastebin.com/sErK2Lsa
В первом комментарии к первой части статьи верно написали, что неплохо бы вообще все расчеты на ГПУ перенести. Да и ДХ10+ не нужен, можно все считать в вершинном шейдере, взаимодействия между частицами то нет.
>Как получить похожий эффект без дополнительной текстуры: pastebin.com/sErK2Lsa
Спасибо. Как-то даже не подумал о генерации градиента.

>Да и ДХ10+ не нужен, можно все считать в вершинном шейдере, взаимодействия между частицами то нет.
Да, взаимодействия между частицами нет, но каждый раз нужно обновлять координаты частиц для дальнейших расчетов. Если вы знаете о том, как это можно сделать в DX9 — напишите пожалуйста.
www.2ld.de/gdc2004/
Реализация на OGL, но на DX9 тоже можно сделать. Даже где-то видел. Возможно, это было в Nvidia SDK 9.
Нашел на D3D нечто похожее. Называется Stream-Output
Эх, жаль. Stream-Output фича DirectX 10 и выше. Придется по старинке — писать координаты в 2D текстуры.
Выше ответил
Почему бы просто по скорости не вычислять цвет?
Данные о скорости в шейдер не передаются. Хотя конечно можно и передавать.
Если честно, то демонстрацию я начал делать вдохновившись одним видео на youtube, и в итоге сделал почти как там.
Со скоростью визуализация нагляднее будет. Бывает еще делают зависимость цвета от возраста частицы, но в данном случае частицы не «умирают».
Имхо изучать DX9 сейчас точно так же как к примеру PHP 3. Про него пора забывать как про страшный сон, он пожил и так очень долго. При условии, что видяхи с поддержкой DX11 сейчас можно купить за 50-70$, не такие это уж и большие деньги.
Да, я с вами согласен. Скажу только, что выбрал DX9 из-за того, что ничего, что предлагает DX10\11 не требуется для системы частиц. Ну и конечно же переписать код под новую версию API не составит большого труда.
Ну, тут вы не совсем правы. Compute Shaders для частиц — это самое оно.
Да, спасибо. Крутая фича, не знал о её существовании.
«Для разработки эффектов существует замечательная программа от NVIDIA, называется она Fx Composer.»
Любопытно, системные требования для этой среды весьма скромные. У NVIDIA есть еще nsight, так вот там для отладки шейдеров нужно две машины (или машина с двумя гпу и виртуалкой). Правда там указано, что отладка происходит непосредственно в процессе их выполнения на GPU (т.е. на одном GPU шейдер выполняется, с другого мы за ним наблюдаем). Интересно, как работает «Fx Composer»? Скорее всего шейдеры отлаживаются на CPU.
Для отладки я бы все таки порекомендовал Nvidia PerfKit, хоть это и инструмент для профилирования.
А можете для тех кто не в теме DX и прочих шейдеров, в двух словах сказать, можно ли такие эффекты делать на простом canvas'e? DX я так понимаю, дает просто доступ к железу видюхи, которая намного быстрее всё это просчитывает и отрисовывает?
Немного не в тему вопрос, но все же интересно — а что, собственно моделировалось и визуализировалось?
Ньютоновская гравитация. Курсор мыши выступает в качестве сверх-тяжелого тела, масса частиц не учитывается и принимается за 1 у.е. Соответственно и взаимодействие между частицами не вычисляется.
Прикольно, особенно учитывая, что нет взаимодействия между частицами.
Если кому интересно, написал еще один вариант. Подробнее написано в конце поста, после UPD.
НЛО прилетело и опубликовало эту надпись здесь
Достаточно мощная — это какая? 460GTX (2 года) — всё ок.
500000 нормально и на CPU просчитывается, хотелось чего-то больше)
Круто, только стоит наверно включить v-sync, так как экран жутко мерцает.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории