...

Shaders что за программа

Шейдеры. Что и как

Сразу оговорюсь, что материал рассчитан на тех, кто никогда не работал с шейдерами или вообще не знаком с разработкой игр, то есть это в некотором смысле научпоп.

Слово «шейдер» в контексте разработки игр очень популярно, слышать его могли и те, кто игры не делает. Само слово изначально появилось от англ. shading (затенение) — первые шейдеры использовались, чтобы передавать глубину с помощью работы со светом, блеском, тенями и прочим. Со временем шейдеры стали использоваться для совершенно разного вида постобработки и вообще отрисовки примерно всего.

Говоря общими словами, шейдер — это просто программа для графической карты. То есть то, что пишется школьниками на паскале (хипстерами на пайтоне) — это программы для вашего центрального процессора (CPU), а шейдеры — для графического (GPU). Особенность же этих программ выходит из особенностей GPU — они работают параллельно на сотнях маленьких ядех вместо нескольких больших, преимущественно осуществляя математические операции.

GPU-ядрышки резвятся на фоне серьезного CPU

Теперь разберемся, как это все работает.

В общем случае цель шейдера — отрисовать некоторый объект. Поэтому возьмем куб, распишем процесс его отрисовки и посмотрим, где используются шейдеры и зачем. Сначала опишем сам куб. Для графической карты это 8 точек, между некоторыми из которых есть плоскость. Каждая из точек описывается тремя числами (правильно сказать, что это вершины). Помимо этого у кубика есть цвет и положение внутри мира.

Кубик до и после графичекой карты
Процесс отрисовки

Процесс отрисовки, если его достаточно упростить (что я и сделаю в рамках этой статьи), можно поделить на несколько шагов:

1. Получение входных данных из памяти.
2. Выполнение шейдера вершин.
3. Растеризация.
4. Выполнение шейдера пикселей (фрагментов).
5. Проведение тестов «глубины».
6. Отрисовка на текстуру для экрана.

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

Пример буфера глубины

Как видите, в процессе отрисовки можно заметить два вида шейдера. На самом деле, сейчас есть чуть больше видов, но они не столь важны для разбора, так как имеют более специфичный характер использования, а мы рассказываем на пальцах. Но вот те два, что нас волнуют:

1. Шейдер вершин.
2. Шейдер фрагментов.

Шейдер вершин

Как сказано было ранее, этот шейдер (или группа шейдеров по очереди) занимается переводом координат относительно объекта, в координаты на текстуре.

Трансформации вершин.

На картинке начало координат немного не соответствует реальным, что все так же не влияет на понимание процесса 🙂

Пройдемся по состояниям. В первом у нас, очевидно, входные координаты без излишков. На втором они были перенесены в координаты относительно начала «мира». Потом они переносятся в координаты относительно точки смотрящего (видно на второй картинке), но заметно, что картинка плоская. Их проекция происходит далее и мы получаем наши итоговые координаты. Все эти операции производятся шейдером. Помимо прочего, он позволяет не только отобразить реальные координаты, но и модифицировать их так, чтобы исказить объект для эффекта. Например, я недавно писал шейдер, который переворачивал спрайт, чтобы отрисовать его тень:

Из занимательного — итоговые вершины располагаются на так называемой плоскости Clip Space и находятся в диапазоне от -1.0 до 1.0. Именно с такими координатами потом и работает видеокарта.

Шейдер фрагментов

После преобразований вершин и растеризации нужно высчитать цвет каждого фрагмента (помним, что для упрощения это пиксели). Для примера возьмём наш куб: мы помним, что он залит одним цветом. Просто сделаем так, чтобы цвет каждого фрагмента стал цвета куба и все:

Выглядит немного странно, да? Проблема в том, что мы не видим ни теней, ни текстур. Будь на кубе какая-либо текстура, мы бы заметили переход между гранями. Вот возьмем текстуру:

Знакомое лицо

Теперь достаточно в каждом пикселе просто брать цвет из текстуры. Но чтобы это сделать, нужно добавить для каждой точки куба еще информацию: UV канал. Это координат вида (u, v). Отсюда и название, так как x и y были заняты. Она присваивается вершине объекта и обозначает точку на текстуре, которая ей соответствует. Чтобы было понятнее, если мы хотим на каждую грань куба нарисовать знакомое нам лицо, то UV координаты для каждой грани будут выглядеть предельно просто:

Знакомое лицо (20

Модифицировать их никак не надо. Более того, считать координаты для каждой точки — тоже не нужно. Этим занимается GPU, самостоятельно интерполируя точки из вершин. Тогда достаточно просто сказать для каждой точки что-то вроде

color = texture_color(cube_texture, data.uv);

Это очень условный пример, но примерно так в простейшем случае оно и работает:

Как же он хорош

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

Помимо UV канала в шейдер в зависимости от его вида приходят разные данные. Они зависят от игрового движка и графической библиотеки. Обычно туда входят данные о местоположении точки, нормаль (вектор исходящий от поверхности в точке), UV канал. Но также шейдер вершин может передавать данные в пиксельный шейдер. Если это координата, то она будет проинтеполирована на основе положения фрагмента относительно вершин, между которыми он находится, как, например, UV данные.

В общем-то, на этом все 🙂

Что за папка Shaders на Андроид — весит много, а удалять страшно

Пользователи часто сталкиваются с тем, что на устройствах, работающих под управлением операционной системы Android, по умолчанию содержится множество папок с совершенно непонятным названием, назначением и содержанием. И пока памяти на гаджете достаточно, их наличие, в общем-то, никого особо не волнует. Но как только устройство начинает сигнализировать о заполненном хранилище, возникает желание удалить все ненужное, хотя прежде не помешает разобраться, что именно относится к этой категории. И первой на пути возникает непонятная папка Shaders.

Очистка смартфона

Папка Shaders — что за зверь?

Загадочная папка есть далеко не на всех Андроидах. Ее присутствие в смартфоне обычно видят любители мобильных игр и развлекательных приложений. Она предназначена для кэширования графики игры. За счёт этого утилита загружается быстрее, а графическое отображение не страдает от недостатка трафика или других нюансов.

Различные игры, изображения бонусов и все графические рисунки из геймплея так же хранятся в Shaders.

При этом после открытия папки можно будет видеть исключительно белые файлы, отобразить которые будет невозможно. В то же время именно они помогают играм быстро и качественно загружаться, становясь очень ценным подспорьем для геймеров.

Понять важность кэша можно оценив разницу в скорости загрузки игры в первый и во все последующие за ним разы. После установки приложение всегда загружается дольше, чем во время повторного открытия.

Можно ли удалять и как это правильно сделать

Разработчики настоятельно рекомендуют не удалять системные файлы. Однако для любого правила действуют свои исключения. Вот и Shaders не относится к важным данным, которые нельзя трогать.

Важно! Среди геймеров бытует мнение, что удаление любого файла может расцениваться, как вмешательство в систему, что приведёт к бану в игре или невозможности дальнейшего гейминга. Однако таким влиянием рассматриваемая папка явно не обладает.

Тем не менее удалять данные, содержащиеся в Shaders, без крайней необходимости не стоит.

К тому же, все удаленные файлы будут восстановлены после повторного запуска утилиты. То есть никакого положительного эффекта достигнуто не будет, поскольку память смартфона заполнится снова. Перед удалением важно убедиться, что файлы действительно относятся к кэшу, и не нужны для более серьёзных действий, влияющих на приложение.

Сделать это можно двумя способами:

  • посредством отслеживание объема;
  • сменой имени.

При первом способе достаточно просто посмотреть, сколько весит хранилище до активной игры и по завершении процесса. Если вес существенно увеличивается, значит файлы – это всего лишь кэш.

Проверка важности содержимого также выполняется путём смены названия. Если после переименования утилита продолжит запускаться стабильно и без сбоев, значит файлы не имеют никакой системной важности, и их удаление не станет критичным для системы.

Android с метлой

На устройствах Андроид можно наблюдать много установленных по умолчанию папок, которые не несут в себе серьезной функциональной нагрузки для системы. Другое дело, что определить их не так уж просто. Поэтому если системные файлы никак не мешают, и не забивают внутреннюю память смартфона, то лучше их все-таки не трогать.

Аналогичное правило распространяется и на Shaders. К тому же, удаление этой папки никак не способствует очистке памяти гаджета, поскольку повторный запуск игры приведёт к очередному кэшированию файлов.

шейдеры видеокарты

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

Лучший ответ

9 DirectX — вторые шейдеры.
9.0с — третьи шейдеры
10 — четвертые.
От шейдеров зависит во что ты будешь играть (если игра написана с применением четвертых шейдеров, а видеокарточка их не поддерживает — забудь о игре. Хотя некоторые движки поддерживают сразу несколько версий для совместимости) . Вообще от версии шейдеров зависит качество графики — блики, отажение, эффект ослепления.
Смотри версию поддерживаемого DirectX что-бы узнать какую версию шейдеров поддерживает видеокарточка. Смотри обзоры в сети. Производительность от шейдеров не зависит.

Остальные ответы

Если в железе ничего не понимаешь то вот правило-чем больше на нём цифры-тем лучше. Дерьма так точно не купишь.

Шейдеры это освещение
Современна видюха должна поддерживать 4.1 шейдеры

Ше́йдер (англ. Shader) — это программа для одной из ступеней графического конвейера, используемая в трёхмерной графике для определения окончательных параметров объекта или изображения. Она может включать в себя произвольной сложности описание поглощения и рассеяния света, наложения текстуры, отражение и преломление, затенение, смещение поверхности и эффекты пост-обработки.

Программируемые шейдеры гибки и эффективны. Сложные с виду поверхности могут быть визуализированы при помощи простых геометрических форм. Например, шейдеры могут быть использованы для рисования поверхности из трёхмерной керамической плитки на абсолютно плоской поверхности.

В настоящее время шейдеры делятся на три типа: вершинные, геометрические и фрагментные (пиксельные) .

[править]
Вершинные шейдеры (Vertex Shader)

Вершинный шейдер оперирует данными, сопоставленными с вершинами многогранников. К таким данным, в частности, относятся координаты вершины в пространстве, текстурные координаты, тангенс-вектор, вектор бинормали, вектор нормали. Вершинный шейдер может быть использован для видового и перспективного преобразования вершин, генерации текстурных координат, расчета освещения и т. д.

[править]
Геометрические шейдеры (Geometry Shader)

Геометрический шейдер, в отличие от вершинного, способен обработать не только одну вершину, но и целый примитив. Это может быть отрезок (две вершины) и треугольник (три вершины) , а при наличии информации о смежных вершинах (adjacency) может быть обработано до шести вершин для треугольного примитива. Кроме того геометрический шейдер способен генерировать примитивы «на лету» , не задействуя при этом центральный процессор. Впервые начал использоваться на видеокартах Nvidia серии 8.

[править]
Фрагментные (Пиксельные) шейдеры (Pixel Shader)

Фрагментный шейдер работает с фрагментами изображения. Под фрагментом изображения в данном случае понимается пиксель, которому поставлен в соответствие некоторый набор атрибутов, таких как цвет, глубина, текстурные координаты. Фрагментный шейдер используется на последней стадии графического конвейера для формирования фрагмента изображения.

Разбираемся с шейдерами. | 04:07, 23 Мая 2004

Анализируя сложившуюся ситуацию на рынке видеокарт, нельзя не отметить некую «гонку технологий», выражающуюся в непрерывном выпуске новых плат, подводящих всю линейку под определенные стандарты. На данный момент «чекпоинтом» де-факто служит последний мультимедийно-ориентированный API от Microsoft — DirectX 9, для полной аппаратной поддержки которого по спецификациям требуется имплементация Пиксельных шейдеров версии 2.0 и выше, а также Вершинных 2.0. Аппетиты последнего в полной мере удовлетворяют лишь последние линейки графических чипов ATI и NVIDIA, R3xx и NVxx (кодовые названия GPU/VPU).

Но что же такое шейдеры? Оправданны ли громогласные надписи вроде «100% DirectX 9.0 support!», кричащие со стильных упаковок карточек? … Вносят ли они реальный вклад в качество сцены? Данной тематике и будет посвящена сегодняшняя статья.

Краткий экскурс в историю

В свое время выход NVIDIA GeForce 3 произвел настоящий фурор. Поддерживая аппаратное ускорение вершинных (Vertex) и пиксельных (Pixel) шейдеров, он полностью развязывал руки разработчикам трехмерный приложений, в доминирующей степени игр: массово стал доступен просчет наикрасивейших видеоэффектов, ранее применявшихся лишь в голливудских фильмах, в реальном времени! Интересный факт – совокупности этих технологий (Pixel Shaders версии 1.1, Vertex Shaders версии 1.1) было дано неоднозначное маркетинговое название nfiniteFX , последние две буквы оного позже положат начало новой, уже совсем не такой удачной серии видеокарт.

Итак, Вертексный (Вершинный, Vertex) шейдер – это подпрограмма, иначе функция, математически оперирующая вершинами объекта. Ведь полигон – есть не что иное, как треугольник, а треугольник имеет вершины – точки, в которых сходятся две его стороны. Каждая вершина описывается целым рядом параметров, переменных, таких как координаты в трехмерном пространстве, цвет, текстура, а также характеристики накладываемого освещения. Вершинные шейдеры позволяют изменять эти переменные, не меняя самого типа данных. Примером использования подобных эффектов могут служить: клубящихся облака, туман, реалистичная анимация, мимика лица (выделение специфичных черт – морщин, ямочек), зеркальное отображение сцены.
А ведь ранее комплексные расчеты вертексных шейдеров выполнялись только на специализированных графических станциях, и в приложения включались исключительно в пре-рендеренном виде. Стоит отдать дань уважения инженерам NVIDIA, которые, следует заметить, в последнее время сильно расслабились.
Применение эффектов освещения вершин позволяет достаточно легко создавать реалистичную скелетную анимацию персонажей посредством матричного наложения палитр и трансформации полигональных каркасов. Поверхностные волны, рябь на воде – работа деформации текстур…
Впечатляет? При помощи вершинных шейдеров разработчики имеют возможность создавать и гораздо более уникальные, ярковыраженные и наполненные сцены.

Вертексные шейдеры являются стандартным элементом блока T&L

Пиксельные шейдеры (Pixel shader) – пожалуй, самая «лакомая» и обсуждаемая в последнее время технология. К примеру, отсутствие её аппаратной поддержки у GPU автоматически причисляет карты на его основе в нишу Low-End, вне зависимости от результирующего быстродействия… Это, впрочем, и правильно – не все же «урезать» качество в угоду скорости, в играх (Как представителях прогрессивнейших и непрерывно эволюционирующих трехмерных приложений) же следующего поколения такие жертвы неуместны вовсе.
Пиксельные шейдеры – программируемые функции, используемые для попиксельного расчет эффектов. Данный инструмент позволяет создавать среды, свойства объектов в которых поразительно точно передают реальность, позволяют ощутить материальность поверхностей. Предметы в сценах наполняются присущими ими уникальными шероховатостями, элементами отделки, для гуманоидоподобных созданий – волосы, усы, родинки…

Тут народ грузит таким материалом, в котором без пол-литра не разберешься. Короче, есть 2 графических API
DirectX и OpenGL. Так вот они используют эти самые шейдеры. А сами шейдеры называются SM или ShaderModel. Так вот самые древние карты поддерживают древние технологии.. Начиналось все с DirectX 7.0 а не с 9.0 и соответсвующих древних шейдеров. Так вот от «новизны» шейдеров на видеокарте и зависит ее возможность работать с этими API современные игрушки требуют API DirectX 9.0c или новее. Сделать с ними ничего нельзя- ни перешить, ничего. Поэтому древнюю карту втопку и все. Ничего с этим не поделаешь. задолбался печатать

шейдеры както связаны с графикой в видеоиграх а\если надумал брать видюху бери как минимум с шейдерами 3, если у тя на видюхе 2 а требует 3 игра не запустится

При подготовке материала использовались источники:
https://dtf.ru/gamedev/714743-sheydery-chto-i-kak

Что за папка Shaders на Андроид — весит много, а удалять страшно


https://otvet.mail.ru/question/24719842

Оцените статью