или на мне уже сказывается усталость и я туплю, или действительно оба выражения равны.
К тому же, использовать такие конструкции (как и другие булевы операции) следует весьма осторожно, т.к. в отличие от С / С++, в HLSL выражение вычисляется полностью (т.е. обе его части).
>>К тому же, использовать такие конструкции (как и другие булевы операции) следует весьма осторожно
Смотрел дизасемблированный вариант шейдера, когда занимался профилированием (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 — напишите пожалуйста.
Данные о скорости в шейдер не передаются. Хотя конечно можно и передавать.
Если честно, то демонстрацию я начал делать вдохновившись одним видео на youtube, и в итоге сделал почти как там.
Имхо изучать DX9 сейчас точно так же как к примеру PHP 3. Про него пора забывать как про страшный сон, он пожил и так очень долго. При условии, что видяхи с поддержкой DX11 сейчас можно купить за 50-70$, не такие это уж и большие деньги.
Да, я с вами согласен. Скажу только, что выбрал DX9 из-за того, что ничего, что предлагает DX10\11 не требуется для системы частиц. Ну и конечно же переписать код под новую версию API не составит большого труда.
«Для разработки эффектов существует замечательная программа от NVIDIA, называется она Fx Composer.»
Любопытно, системные требования для этой среды весьма скромные. У NVIDIA есть еще nsight, так вот там для отладки шейдеров нужно две машины (или машина с двумя гпу и виртуалкой). Правда там указано, что отладка происходит непосредственно в процессе их выполнения на GPU (т.е. на одном GPU шейдер выполняется, с другого мы за ним наблюдаем). Интересно, как работает «Fx Composer»? Скорее всего шейдеры отлаживаются на CPU.
А можете для тех кто не в теме DX и прочих шейдеров, в двух словах сказать, можно ли такие эффекты делать на простом canvas'e? DX я так понимаю, дает просто доступ к железу видюхи, которая намного быстрее всё это просчитывает и отрисовывает?
Ньютоновская гравитация. Курсор мыши выступает в качестве сверх-тяжелого тела, масса частиц не учитывается и принимается за 1 у.е. Соответственно и взаимодействие между частицами не вычисляется.
Разработка системы частиц на платформе DirectX 9. Часть II