Archive for Февраль 11th, 2013

libclnoise-0.1.0

Генератор процедурных текстур, а вместе с ним и библиотека по генерации процедурного шума получила первую версию — «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 по старому адресу (см. прошлый пост), а бинарные сборки можно взять тут:

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

Tags: