Выложил обновление для генератора процедурных текстур. Посмотрев на скорость работы libnoise решился таки начать портирование данной библиотеки на OpenCL. В данной версии используется библиотека libclnoise. Конечно портирование еще только в процессе и много функционала отсуствует (на самом деле есть только один вид шума — Perlin и один вид вывод — PlaneMap, такчто это скорее можно рассматривать как proof of concept)
Сама тулза переписана почти на 90%, как из-за новой билиотеки так и из-за кривизны предыдущей реализации.
Реализованный функционал
NoiseTextureGenerator
- Построение схемы генерации.
- Сохранение и загрузка схемы.
- Экспорт схемы.
- Соединение по контактам (перетаскиваем источник на получатель — получаем связь).
- Автообновление предпросмотра текстуры.
- Сохранение текстуры в файл.
- Редактирование свойств модулей.
libclnoise
- Построение схемы.
- Установка параметров модулей
- Инициализация OpenCL контекста.
- Построение кода OpenCL ядра для выполнения.
- Выполнение OpenCL ядра и получение результата.
Планируемый функционал
NoiseTextureGenerator
- Автоматический предпросмотр.
- Предпросмотр текстуры в OpenGL режиме, с различными примитивами.
- User-defined модули.
libclnoise
- Портирование всех модулей из libnoise в libclnoise.
- Улучшенный генератор кода.
- Поддерка user-defined модулей.
- Поддержка типов выходов/входов модуля.
- Дополнительные модули: colorer, source from image, scale
Сборка из исходных кодов
Для сборки NoiseTextureGenerator из исходных кодов теперь необходимо немного шаманства. Для начала надо получить исходные коды как генератора так и библиотеки libclnoise:
git clone git://developer.nsws.ru/NoiseTextureGenerator.git
cd NoiseTextureGenerator/NoiseTextureGenerator
git clone git://developer.nsws.ru/libclnoise.git
Далее необходимо сгенерировать код модулей для билиотеки:
cd libclnoise/src/modules/
./cl2h.sh
Теперь можно использовать qmake или qtcreator. Сборка проверялась на gcc-4.7. Гарантированно собрать срествами VS2010 не получится т.к. используется for по коллекции, который не реализован в VS2010
Бинарные версии
32-х битная версия под Ubuntu не была обновлена, надо разобраться с кросс компиляцией.
Для работы любой версии потребуется установленный OpenCL runtime (поидее должен быть установлен если у вас достаточно свежие драйвера)
Ожидаемая обратная связь
Очень хочется узнать, запустилось ли у вас без бубна, удалось ли сгенерировать текстуру? Это мой первый опыт в использовании OpenCL поэтому могут быть разные баги.
Tags: тулзы
Около года назад я заинтересовался генерацией процедурных текстур, в частности для генерации поверхностей планет. Посмотрев на то что можно получить из простенького генератора, встроенного в Terragen я решил написать себе тулзу, в которой можно бы было настраивать параметры в более удобном виде с возможностью экспортировать описание шума в xml файл, с целью его последующей загрузки.
Данный генератор текстур фактически является GUI приложением для библиотеки libnoise и предоставляет возможность построения схемы из большей части модулей этой библиотеки. Для обеспечения возможности использования схемы в других приложения можно произвести экспорт данных в xml файл. Пример его загрузки можно посмотреть в исходных кодах (Generation/noisexmlbuilder.{h,cpp})
Надо сказать что текущая версия обладает огромнейшим количеством ошибок и отличается активной падучестью, в случае указания некорректных значений.
Выглядит программа примерно так: превью
Бинарные сборки:
Версия под win32 не тестировалась. Известно только что она запускается под wine.
Исходники:
git clone git://developer.nsws.ru/NoiseTextureGenerator.git
Сразу хочу сказать что исходники ужасны 🙂
Tags: тулзы
Комментарии к записи Генератор процедурных текстур отключены