Dagon 0.3.0

Выпустил новую версию Dagon — 0.3.0. Главное нововведение релиза — поддержка кластерного рендеринга, а также эффектов постобрабоки (реализованы FXAA и lens distortion). Кроме того, появился шейдер неба.

Соответственно, обновлена демка — улучшен пример движка от первого лица, куда добавлены почти все фичи Dagon. Скачать ее можно тут.

Осталось реализовать PBR-материалы и поддержку формата DGL3 (хотя, скорее всего, я сделаю новый формат для хранения сцен, с учетом всех возможностей Dagon).

Динамическое небо

Экспериментирую с шейдером неба и солнца. Используется простая модель с линейной интерполяцией — полноценный физически корректный Rayleigh мне показался слишком тяжелым для реалтайма.

Сверточные фильтры в dlib с выводом в QtE

Очередной замечательный материал по dlib от LightHouse Software — продолжение серии статей по обработке изображений в dlib.

От автора:
«В этой статье мы попытаемся подружить QtE5 и dlib, сделав несложный и удобный интерфейс для накладывания фильтров на изображения, оставив при этом возможность для пользователя добавлять свои фильтры».

http://lhs-blog.info/programming/dlang/digital-filters

Кластерный рендеринг — обновленная демка

Доступна обновленная демонстрация clustered forward shading в Dagon. Повышена плотность кластеров, добавлена поддержка normal mapping и parallax mapping, а вместо бликов по Фонгу теперь используется модель Кука-Торренса.

Скачать для Windows

Clustered Forward Shading

Уже давно пытаюсь решить проблему множества источников света в классическом прямом рендере (честно говоря, очень не хочется переходить на deferred). И недавно я открыл для себя отличную технику, которую теперь хочу попробовать применить в Dagon — clustered forward shading. Суть ее заключается в индексировании пространства при помощи 3D-текстуры, ячейки которой (кластеры) ссылаются на источники света в буфере, влияющие на пространство внутри данной ячейки (фактически, в ячейке можно хранить срез индексов — смещение и количество источников света — в виде двух 16-битных значений). Пиксельный шейдер, зная позицию точки в world space, сэмплирует ячейку из 3D-текстуры, получает срез и проходит по нему циклом, считывая атрибуты источников света — позицию в eye space, цвет и радиус.

Метод очень перспективный — минимальная нагрузка на GPU, всего две дополнительные служебные текстуры (кластер и буфер источников света), хорошая масштабируемость и почти полная независимость от сложности сцены (есть лишь зависимость от ее размера — чем больше сцена, тем выше разрешение кластера).
Есть, впрочем, и недостатки — во-первых, небольшая дополнительная нагрузка на CPU при обновлении 3D-текстуры и буфера. Но обновлять их нужно только при движении источников света — если у вас статичный свет, то оверхед будет нулевой. Другое узкое место — передача буфера источников света в видеопамять. У меня это текстура GL_RGB32F шириной N * 8, где N — количество ячеек кластера, и высотой 4 — по одной строке на атрибут. N может достигать 1024 и выше — передавать такой буфер из системной памяти каждый кадр может показаться малоэффективным, но можно обновлять не весь буфер, а только те его части, где меняется список источников света (маловероятно, что в обычной игровой ситуации будут сотни движущихся ламп).

Надеюсь вскоре доделать и выложить демку с реализацией данного метода.

Шейдерные эффекты в Dagon

Работаю над убер-шейдером и тенями, а также сделал постобработку, добавил FXAA, SSAO и хроматическую аберрацию:

Dagon 0.2.0

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

  • Система частиц с поддержкой векторных полей
  • Шейдерный бэкенд для материалов
  • Экспериментальная поддержка теневых карт
  • Демонстрационный пример Dagon также обновлен — в сцену с механикой от первого лица добавлены тени.
Также скоро в основную ветку будет внесена система постобработки и поддержка сглаживания FXAA. Следующим шагом будет реализация PBR-бэкенда и поддержки формата DGL3, а затем на Dagon можно будет портировать Atrium.
Скачать демку Dagon 0.2.0 для Windows и Linux можно тут.

Новая книга по D на русском

Когда уже казалось, что dlang.ru окончательно сгинул, сайт неожиданно вернулся к жизни с новым проектом — русскоязычной книгой по языку D для начинающих: http://dlang.ru/book. Доступны первые две главы, посвященные основным синтаксическим конструкциям, системе типов, ООП, стандартному вводу/выводу и т.д.

Запретители сравняли счет

Когда в России ввели досудебную блокировку и «реестр запрещенных сайтов», многие только посмеялись — мол, есть же VPN и TOR. И действительно, какое-то время нам удавалось уживаться с блокировками. Но полагать, что власти будут долго закрывать на это глаза, было наивно: 1 ноября в России вступают в силу новые поправки к федеральному закону «Об информации, информационных технологиях и о защите информации», которые уже прозвали «законом о запрете анонимайзеров»…

Данные поправки включают меры противодействия обходу блокировок — всем владельцам VPN и прокси запрещается предоставлять своим клиентам на территории РФ доступ к заблокированным сайтам. Это значит, что можно попрощаться с большинством крупных коммерческих VPN — они либо прогнутся, либо, вероятнее всего, просто перестанут предоставлять услуги резидентам РФ. С бесплатными прокси все не так однозначно — они обычно предоставляют дополнения для популярных браузеров, и главный вопрос заключается в том, будут ли владельцы каталогов дополнений сотрудничать с российскими властями, удаляя «неугодные» аддоны. С Google все, в принципе, понятно — вся надежда на Mozilla. Впрочем, все прокси могут быть заблокированы по IP, поэтому на браузерных решениях, в долгосрочной перспективе, можно все равно ставить крест.

В случае с TOR под этот закон попадают все так называемые exit nodes (выходные узлы), выводящие TOR-трафик за пределы сети. О том, что эти узлы принадлежат частным лицам и не контролируются разработчиками TOR, законотворцы, похоже, не в курсе — неужели власти собираются рассылать уведомления кажому из них? Непонятно только, как — владельцы узлов анонимны, ничего, кроме IP, о них неизвестно. Кончится это, естественно, блокировкой официального сайта TOR Project и набора выходных узлов из списков, предоставляемых центральными серверами каталогов (чьи адреса вшиты в клиент TOR). Такая ситуация сейчас наблюдается, например, в Турции. Для решения этой проблемы были введены мосты (bridge relays) — непубличные ретрансляторы, адреса которых можно получать порциями по три штуки на сайте https://bridges.torproject.org, либо отправив письмо на bridges@torproject.org. Маловероятно, что власти будут пытаться выяснить адреса всех мостов, чтобы заблокировать их — тем более, что мост не является выходным узлом, не попадает под действие закона, и его блокировка неправомерна (во всяком случае, пока). Дополнительным бонусом от использования мостов является маскировка трафика — так что, в принципе, даже введение DPI пользователям TOR не особо страшно.

Одновременно «железный занавес» смыкается на мессенджерах: с 1 января 2018 года вступает в силу набор поправок к тому же закону, регулирующий работу систем обмена мгновенными сообщениями. В частности, они будут обязаны идентифицировать пользователей по номеру телефона, ограничивать обмен запрещенной информацией, а также организовывать массовую рассылку сообщений от госорганов. Конечно, большинство популярных мобильных мессенджеров и без того используют телефонный номер для идентификации, но, например, судьба тех же Jabber/XMMS, IRC, Bitmessage и пр. не совсем ясна. Крупные сервис-провайдеры типа Google или социальных сетей, надо полагать, введут обязательную аутентификацию по SMS. Что будет с множеством мелких XMMS-серверов, тоже понятно. Telegram, скорее всего, откажется выполнять требования и будет заблокирован. Для защищенного от государства обмена информацией остаются только TOR и I2P — в десктопном клиенте Telegram, кстати, можно настроить пользовательский прокси и, соответственно, сделать маршрутизацию через TOR.

Подводя итог: возможно, власти не будут заморачиваться с массовыми блокировками «всего и вся», и этот процесс будет идти намного медленнее, чем кажется. Но, как всегда, надо готовиться к худшему…

P.S. Я не призываю обходить блокировки для скачивания пиратского контента или обмена экстремистскими материалами. Дело в том, что в настоящее время в России заблокировано множество полезных и совершенно безобидных сайтов, включая, например, LinkedIn и Issuu, многие сайты оппозиции и независимые СМИ, были также попытки заблокировать GitHub. Те же торрент-трекеры используются отнюдь не только для обмена пиратским контентом, но и вполне легальным. Опять же, блокировка прокси усложнит доступ к ресурсам, по политическим или иным причинам недоступным на территории РФ (некоторые видео на YouTube, музыкальные сайты типа Spotify и т.д.). Таким образом, неподконтрольные государству прокси-системы и независимые мессенджеры просто необходимы любому честному человеку для обеспечения собственного права на доступ к легальной информации и обмен ей, а также права на тайну переписки. Власти же эти права явно не уважают, и потому не могут рассчитывать на ответное уважение к их сомнительным репрессивным инициативам, которые, ко всему прочему, совершенно неэффективны для решения декларируемых задач. Террористы продолжают совершать теракты, сами-знаете-что спокойно продается в Deep Web’е, а страдают больше всех законопослушные граждане. Мне лично надоело заходить на Issuu через TOR для того, чтобы выложить туда очередной номер «FPS» — только потому, что когда-то, видите ли, там нашли запрещенную исламистскую книжку. Той книжки уже давно нет, а одно из крупнейших онлайн-издательств до сих пор заблокировано. Нежелание властей отказаться от блокировки целиком HTTPS-сайтов я рассматриваю как вредное отрицание прогресса, попрание гуманистических ценностей и преступление против общества — а никакое преступление нельзя оправдать благими намерениями.