Archive for Январь, 2013

Выложил обновление для генератора процедурных текстур. Посмотрев на скорость работы 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: