Генератор процедурных текстур, а вместе с ним и библиотека по генерации процедурного шума получила первую версию — «0.1.0». За время работы над этой версией произошли разные события, как приятные так и не очень. Например из приятных — я обзавелся 27-ми дюймовым монитором DELL 2711 и теперь картинки отображаются намного лучше и в большем разрешении, а из приятных — версия задержалась из-за скоропостижной кончины материнки (gigabyte GA-X79-UD5). Но все позади и теперь можно продолжать работать над новыми версиями. Кстати картинка слева — это RidgedMulti полученный в новой версии.
Что же такого нового в этой версии, что она удостоилась номера версии?
Список изменений libclnoise.
Добавлены новые модули для генерации шума: Billow, Checkerboard, Const, Cylinders, Perlin, RidgedMulti, Voronoi.
Добавлены модули для обработки шума: abs, abs_diff, add_sat, clamp, max, min, mix, smoothstep, sub_sat.
Реализован боле-менее человеческий кодогенератор, который позволяет динамически менять параметры всех модулей без пересборки карты шумов, что значительно ускоряет работу при постоянном изменении аттрибутов.
Список изменений NoiseTextureGenerator.
Переделан интерфейс пользователя — надеюсь он стал понятней. Для добавления модуля надо сделать даблклик на его имени в списке справа.
После перехода на новую версию libclnoise удалось достич гораздо большей скорости работы. Все модули спокойно отрабатывают за 30мс при размере текстуры 4096*4096 (ПЕЧ570). RidgedMulti при разрешении 1024*1024 занимает 9мс на ПЕЧ260.
Известные баги
Ну а куда без известных багов?
Если удалить модуль, к которому присоединена хотя бы одна стрелка — приложение упадет. Надо сперва удалить все стрелки и только потом удалять модуль.
add_sat и sub_sat могут не работать. Непонятные ошибки от OpenCL компилятора вылетают.
А что будет дальше?
А дальше будет вот что. В ближайшее время я планирую сделать интерфейс для модулей расцветки и реализовать таки многострадальный градиент, чтобы картинки стали еще красивее, далее надо реализовать возможность играться с координатами, а то сейчас нельзя сделать различные инетерсные модификаторы, к примеру turbulence. А после всего этого планируется дать возможность создавать кастомные модули на OpenCL.
А где взять такую замечательную тулзу?
А тулза такая живет в git по старому адресу (см. прошлый пост), а бинарные сборки можно взять тут:
А еще любопытные могут скачать исходник, с которого была получена картинка, расположенная в начале этой статьи.