» Пиксельные шейдеры для новичков
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

~7d ago

~7d ago

joreg: @jib watch this howto manage items in a spread for a start: https://youtu.be/tiFLGTrDagc

~7d ago

jib: Hi guys ! in Gamma, what's the way to do things that Buffer node does in Beta ?

~8d ago

david: Reminder: vvvv meetup is starting in 10 mins. https://www.youtube.com/watch?v=LzqaoN7QCSg

~9d ago

joreg: Reminder: 6th worldwide #vvvv meetup tomorrow, Nov 24: 6.-worldwide-vvvv-meetup with presentations by u7angel and team, texone and baxtan

~12d ago

tonfilm: That's going to be interesting, let's hope Intel is doing something similar: https://www.tomshardware.com/news/amd-allows-SAM-on-nvidia-gpus

~13d ago

neuston: THX @joreg and sorry for late reply as I left vl for a while. I've responded to related (UI performance issues) thread, no worry

~13d ago

~17d ago

schack: I need some help and hints to realise Text-To-Speech within beta 40 x64!!! THX