Для тех, кто меня не знает, я кодирую много гифок в неделю для развлечения. Большинство моих гифок создаются с использованием шейдеров glsl, которые представляют собой простые программы, запускаемые на графическом процессоре для рендеринга в реальном времени. Иногда мои гифки начинаются с сырой математики, сделанной на настоящей бумаге. Большую часть времени я просто набираю код, чтобы экспериментировать с различными параметрами и алгоритмами. В качестве ретроспективы я постарался найти 8 гифок, которые резюмируют самые крутые вещи, которые я делал в 2017 году.

8- Озеро Мандельброта

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

7- Волны с постобработкой

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

6- Дороги

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

5 - Закат

На самом деле это не гифка, а png. К сожалению, мне не удалось правильно закодировать его в формате gif, сохранив при этом все градиенты и детали. С этим я создал что-то «реалистичное» всего с несколькими строками кода. Я узнал, что экспоненты можно использовать для создания красивого свечения.

Видео также доступно в оригинальном посте.

4- Ракета (игра)

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

3- Реймаршированная планета

В июле 2017 года я много экспериментировал с техникой под названием Raymarching. Этот метод позволяет выполнять итеративную визуализацию 3D-сцен на 2D-плоскости с использованием полей расстояний вместо обычного моделирования. Подробнее о raymarching можно прочитать на сайте iq.

Я использовал рассеянное и зеркальное освещение, чтобы создать эту крошечную планету. Как видите, вода имеет более зеркальное освещение (яркие пятна). Мне пришлось использовать много сглаживания, чтобы уменьшить окончательный размер gif до 128 КБ, поэтому вы можете увидеть шахматную доску.

2- Raymarshed город

Мне очень нравится создавать города с помощью кода. Для этой гифки я использовал raymarching и простые процедурные методы текстурирования (окна и улицы). Высота зданий генерируется псевдослучайно с использованием синусоидальных волн.

1- Клементины Raymarched

С помощью raymarching очень легко повторять объекты и искажать среду, в которой они визуализируются.

Вывод

В этом году я узнал много новых техник и инструментов. Я надеюсь, что в 2018 году найду новые способы применения своих навыков GLSL. Вероятно, я буду делать больше видео и небольших игр. Если вы хотите увидеть больше, вы можете подписаться на меня на tumblr. Многие из моих фрагментных шейдеров можно найти на gist.github.com.

Большинство этих гифок были отрендерены с помощью shadergif, еще одного проекта, над которым я работал в этом году. Если вы хотите начать создавать гифки с помощью GLSL, это то, что вам нужно. Вы также можете начать с shadertoy. Вы увидите, что кодирование шейдеров кажется эпическим (хотя постарайтесь не пристраститься к GLSL).