» Пиксельные шейдеры для новичков
This site relies heavily on Javascript. You should enable it if you want the full experience. Learn more.

Пиксельные шейдеры для новичков

English

01 Введение

Это упражнение для абсолютных новичков в общении с шейдерами. Это значит, что мы бегло пройдем по основным аспектам пиксельных шейдеров, старясь объяснить все более-менее простым языком.
Пиксельные шейдеры гораздо легче для понимания, чем вертексные (вершинные) шейдеры, поэтому сейчас это однозначно правильный выбор для вас.

01.1 Зачем мне использовать шейдеры?

Прежде всего из-за производительности: шейдеры очень легкие быстрые. Эти небольшие программки запускаются «независимо» от остального патча, прямо в вашей видеокарте. Но самое главное: они дают почти безграничные возможности визуализации. Можно сделать столько всего!

01.2 Как поставить шейдер в ваш патч

Шейдеры (все шейдеры объединены в категорию Эффекты – EX9.Effect) – это небольшие программы, написанные на языке (HLSL "high level shader language") но представленные в vvvv как обычные ноды. Главное отличие от обычных нодов в том, что если вы кликните правой кнопкой мыши по ноду эффекта, откроется дополнительное окно с кодом шейдера. Это встроенный в vvvv редактор языка HLSL, вы можете вносить изменения, не останавливая работу патча!

В пакет vvvv включено несколько шейдеров (это файлы с разрешением .fx) в папке \effects. Если вы пишите новый шейдер или скачиваете его с сайта, просто скопируйте файл в эту папку. После поиска обновлений (Alt-E или Rescan for Externals в меню ), он будет доступен через всплывающий список нодов. Шейдер можно открыть в патче, как и любой другой нод, через всплывающий список, набирая название или сочетанием Shift+Ctrl+O

Все шейдеры, которые мы сделаем в этом упражнении, основаны на файле шейдера «template.fx» (он поэтому так и называется – «шаблон»), потому что это хорошая отправная точка для всех новых шейдеров.

Для использования примеров из этого упражнения вам нужна видеокарта, поддерживающая пиксельные шейдеры 2.0 (PS 2.0)! Уже более 5 лет все более-менее нормальные видеокарты поддерживают эти шейдеры.

01.3 Четыре основные части в файле шейдера

1. PARAMETERS здесь задаются входные пины и значения параметров
2. VERTEXSHADERS вертексные (вершинные) эффекты
3. PIXELSHADERS пиксельные эффекты (сейчас мы будем работать в основном с этой частью)
4. TECHNIQUES задается техника обработки и поддерживаемая версия шейдера

Несколько важных замечаний, прежде чем мы начнем писать свой первый шейдер:

  • старайтесь делать код как можно более лаконичным, например, вместо if (col.r > threshold) col.r = 1, пишите col.r = (col.r > threshold)
  • часто лучшие результаты достигаются двойным рендером и двумя шейдерами, например размытие (blur) лучше сделать сначала горизонтальным блюром, а получившийся результат обработать вертикальным блюром.

Но хватит теории! Приступаем к написанию вашего первого шейдера! И не забудьте выкладывать на сайте ваши новые крутые шейдеры!
Перед началом упражнений, скачайте пакет патчей и шейдеров, используемых в них:
pixelshader_for_newbies_20050922.zip

ссылки:

Наберите в google "morphologic filter" или "kernel filters" и найдете много подходящих сайтов

если вы хотите запостить код шейдера на форуме, не забудьте заменить < сочетанием ~lt~ ,а > сочетанием ~gt~

спасибо MrBenefit перевод bo27

anonymous user login

Shoutbox

~6min ago

joreg: @Tamoeba odd if so. so you don't have an LFO or MonoFlop node

~21h ago

sagishi: any vvvv wizardry going on at ADAF in athens this week?

~21h ago

vux: Freshly released, DirectX11 v1.3 directx11-1.3-update

~2d ago

weareallclowns: has anyone used avr-gcc with vvvv? thinking about uploading a vvvv sketch to arduino

~3d ago

motzi: @udo2013: you can't change the resolution of the standard DX11 renderer (res=window size). use temptarget renderer + preview instead

~3d ago

Tamoeba Kale: Is it possible that i am missing thew whole "animation" category nodes? how?

~4d ago

udo2013: hello. is there a way to change the fullscreen resolution of renderer dx11? found no possibility + can not be opened.

~4d ago

tekcor: @joreg vl.glTF loader looks intense inside, but is red in b36.

~5d ago

MultiNIL: @joreg sure!

~5d ago

joreg: @MultiNIL supa! can we have this as a gallery entry? 24