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

~19h ago

h99: Moon, dammit

~19h ago

h99: NASA's CGI Monn kit https://svs.gsfc.nasa.gov/4720

~2d ago

~4d ago

joreg: Two #vvvv workshops this week in #berlin: Friday: Physical Computing, Saturday: Computer Vision. Tickets: upcoming-full-day-vvvv-gamma-workshops-in-berlin

~4d ago

joreg: @cznickesz also feel free to join our chat for such questions: chat

~4d ago

cznickesz: @joreg: Yeah, I´ll give it a try! Thx

~4d ago

joreg: @cznickesz: we're hoping this week. but depends on feedback. please test your project and let us know if it works.

~4d ago

cznickesz: @joreg: I should stop asking my questions so cryptic ;-) So right away: is final Beta39 hours, days or weeks away?

~4d ago

joreg: @cznickesz: the idea of an RC is exactly to make sure your projects will work with it. your last chance to report problems with b39.

~5d ago

cznickesz: So how "RC" is the "RC3"? I have to update an old project soon and I´m wondering if I should wait and directly update to Beta39