Как создать свои шейдеры для майнкрафт

Доброго времени суток, уважаемые о/

Данная серия туториалов будет посвящена созданию собственных шейдеров на основе языка openGL Shading Language, или GLSL.

Язык GLSL чем-то похож на Java, чем-то — на Си, так что с синтаксисом проблем возникнуть не должно.
Первая часть будет посвящена Фрагментным Шейдерам. Что это такое объясню ниже.

Теория:
Начнём с теории. Что такое шейдер?
Шейдер — это программа, которая выполняется в цикле рендеринга графики, использующаяся для определения и изменения параметров геометрических объектов или изображений (для создания эффектов сдвига, отражения, преломления, затемнения с учётом заданных параметров поглощения и рассеяния света, для наложения текстур на геометрические объекты).

Сложно, тёмно и не особо понятно, да? Давайте попробуем упростить вышесказанное и всё таки дать ответ на главный вопрос «что же делают фрагментные шейдеры? «. Готовы?
В двух словах: определяют цвет
Всё. Это действительно всё, что может сделать этот тип шейдера — определить и вернуть цвет одного-единственного полученного пикселя. Но не спешите закрывать урок. Даже с этим, казалось бы, небольшим функционалом можно делать просто умопомрачительные эффекты. Как? Читайте дальше.

На входе фрагментный шейдер действительно получает лишь один пиксель, точнее, его координаты, x и y. А на выходе выдаёт цвет в формате RGBA (красный, зелёный, синий и прозрачность).

Итак, рассмотрим примерный вид программы, которые у вас всех будут в итоге получаться:

Типы переменных:
В GLSL есть практически все стандартные примитивные типы: bool (не boolean!), int, uint (unsigned int, т.е. неотрицательное число), float и double.

В добавок к ним есть контейнеры — векторы: vec2, vec3, vec4 (на 2, 3 и 4 значения соответственно) и матрицы: mat2, mat3, mat4 (2×2, 3×3 и 4×4 соответственно). Стандартый тип переменных в них — float. Если нужен, например, вектор int’ов на три компонента, вначале нужно дописать i — ivec3 (соответственно b — bool, u — uint, d — double).

Грубо говоря, это одно- и двумерные массивы, и доступ к их элементам можно получить через стандартный оператор индексирования — []. Но для нашего удобства был разработан метод swizzling, позволяющий получить доступ к элементам по их идентификаторам (xyzw, rgba или stpq, использующиеся для координат, цветов и точек текстуры соответственно (но не обязательно так)), допустим:

Модификатор uniform — это переменные, передаваемые в шейдер извне (из программы, в которой использовался шейдер). Самый распространённый uniform — time, то есть время. Он используется для анимации, ведь мало кому интересно смотреть на статичные шейдеры, которые проще нарисовать текстурой в фотошопе, чем учить новый язык.

Модификаторы in и out — это входные и выходные данные. Например, переменная gl_FragColor из кода выше как раз таки является переменной с модификатором out, встроенной в GLSL, её тип — vec4. Она используется для извлечения цвета пикселя из шейдера.

«Аннотация» #version указывает версию GLSL, которую вы хотите использовать. Она всегда должна находится на самом верху. Вот небольшая справка соответствия версий OpenGL и GLSL:

Функции:
В GLSL есть множество встроенных функций, очень похожих на их аналоги из библиотеки Math:
sin(a), cos(a), tan(a); min(a, b), max(a, b) — синус, косинус, тангенс углов; минимальное и максимальное значения.
normalize(a) — возвращает нормализованный (с длинной равной 1) вектор a
length(a) — возвращает длину вектора a
distance(a, b) — расстояние между двумя точками (векторами a и b)
И так далее. Полный список можно найти вот тут — *тык* (для OpenGL 4)

Практика:
С теорией покончили, настало время попрактиковаться!
Для этого есть множество удобных и не очень программ и сайтов, лично я при обучении использовал Shader Edit for Android — бесплатная программа из Play Market’а (нет, это не реклама и мне за неё не платили). Для компьютеров можно использовать ShaderToy, но убедитесь, что ваш браузер поддерживает WebGL, иначе ничего не выйдет.

Итак, давайте для начала покрасим весь экран в один цвет, скажем, зелёный.
Для этого нам понадобится всего одна строка в нашей main функции:
gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0); — мы создаём вектор на 4 компонента, отвечающий за цвет текущего пикселя (RGBA), присваивая зелёному цвету значение 1.0 (это максимально допустимое значение. Если вам сложно рассчитать нужное число, используйте конструкцию «n/255» чтобы превратить числа из диапазона 0-255 в 0.0-1.0), а так же устанавливая насыщенность цвета на максимум:

Если ты играл на ранних версиях Майнкрафта, то мог сталкиваться с самыми первыми шейдерами, которые можно было установить только при помощи специальных модов. В шейдерах Nostalgia используется похожий стиль, но…

Шейдеры Molly станут настоящей находкой для любителей сюжетных приключений в Майнкрафте. С ними игра будет похожа на классические RPG. Основной упор сделан на красивое освещение подземелий и интерьеров зданий. Также…

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

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

Шейдеры Docteur Dread’s добавляет множество эффектов, но при этом большинство являются ненавязчивым и не сильно отвлекают от игры. С ним Майнкрафте появится реалистичная вода, качественные тени и отражения. Кроме того,…

Шейдеры SFLP заметно улучшат графику в Майнкрафте, но при этом их можно использовать даже на слабых ПК. Они добавляют все основные эффекты: тени, лучи, отражения и блики. Возможно, все это…

Главной целью шейдеров Robobo1221’s Realistic является достижение максимального реализма без лишних эффектов. С ним поверхности в Майнкрафте будут естественно отражать свет, кроме того, в игре появятся качественные динамические тени. Вода…

Создатели шейдеров Conquest of the Sun использовали в качестве основы пак Chocapic Shaders. Они сделали его более мрачным, убрали слишком яркие блики, а также добавили эффекты тумана. Это было проделано…

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

Шейдер QOL не вносит больших изменений в графику Майнкрафта, а лишь добавляет некоторые эффекты, делая мир немного реалистичнее и красивее. Например, с ним вода больше не будет неестественно синей, а…

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

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

При этом они не привязаны к версиям игры. Если ты начинал играть с ранних модификаций, таких как 1.5, 1.6 или 1.7, и нашел для себя идеальный шейдер, ты можешь перейти на новую и продолжить его использовать. В актуальных версиях Minecraft, таких как 1.10, 1.11, 1.12 и даже в 1.13 они будут отображаться точно так же.

Всем привет, с вами Drovosek !

Сегодня я решил выложить свою МЕГА огромную сборку шейдеров, в которую входит 327 самых разных шейдеров ! Делал я её около 3 дней: качал шейдеры с официальных сайтов, вытаскивал из других разных сборок и т.д. и получилась вот такая вот не хилая сборочка.

В сборке есть самые разнообразные шейдеры, начиная от самых легендарных Sonic Ether’s Unbelievable Shaders и заканчивая мало кому известными Stazza85 super Shaders, в общем дофига.

В сборке много шейдеров, есть те, которые идут и на слабые компы, а есть и те которые требуют мощное железо. Есть даже наркоманские шейдеры =))

Сборку делал я сам своей собственной мышкой и собственным интернетом =D

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

500 ШЕЙДЕРОВ для Майнкрафт — сборка шейдеров от Drovosek

327 ШЕЙДЕРОВ для Майнкрафт — сборка шейдеров от Drovosek

Я не стал заливать скриншоты абсолютно всех шейдеров, только основных, но думаю этих эпичных картинок будет достаточно, чтобы влюбиться в шейдеры =).
* Все скриншоты взяты с официальных тем данных шейдеров на официальном minecraftforum’е.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 3,00 из 5)
Загрузка...
Adblock
detector