Генератор процедурных текстур: новая версия

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

Далее необходимо сгенерировать код модулей для билиотеки:

Теперь можно использовать qmake или qtcreator. Сборка проверялась на gcc-4.7. Гарантированно собрать срествами VS2010 не получится т.к. используется for по коллекции, который не реализован в VS2010

Бинарные версии

32-х битная версия под Ubuntu не была обновлена, надо разобраться с кросс компиляцией.

Для работы любой версии потребуется установленный OpenCL runtime (поидее должен быть установлен если у вас достаточно свежие драйвера)

Ожидаемая обратная связь

Очень хочется узнать, запустилось ли у вас без бубна, удалось ли сгенерировать текстуру? Это мой первый опыт в использовании OpenCL поэтому могут быть разные баги.


2 Responses to Генератор процедурных текстур: новая версия

  1. Avatar CrazyDev
    CrazyDev says:

    Win7 x64.
    Запустилось нормально.
    Текстура генерируется нормально.
    Когда удаляю связанный noise модуль с output модулем, возникает ошибка:
    Сигнатура проблемы:
    Имя события проблемы: APPCRASH
    Имя приложения: NoiseTextureGenerator.exe
    Версия приложения: 0.0.0.0
    Отметка времени приложения: 51054350
    Имя модуля с ошибкой: NoiseTextureGenerator.exe
    Версия модуля с ошибкой: 0.0.0.0
    Отметка времени модуля с ошибкой: 51054350
    Код исключения: c0000005
    Смещение исключения: 000c9b20
    Версия ОС: 6.1.7601.2.1.0.256.1
    Код языка: 1049
    Дополнительные сведения 1: c488
    Дополнительные сведения 2: c4888e7772d154b6bd3520d065fed587
    Дополнительные сведения 3: d630
    Дополнительные сведения 4: d6307b71a7ff38dab8082bb4828ccff1

    admin Reply:

    Спасибо за тестирование. Проблема с падением уже известна и надеюсь что скоро будет решена. Чтобы не падало надо сначала удалять связь между модулями а потом сам модуль.