Выложил обновление для генератора процедурных текстур. Посмотрев на скорость работы 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:
1 2 3 |
git clone git://developer.nsws.ru/NoiseTextureGenerator.git cd NoiseTextureGenerator/NoiseTextureGenerator git clone git://developer.nsws.ru/libclnoise.git |
Далее необходимо сгенерировать код модулей для билиотеки:
1 |
cd libclnoise/src/modules/ |
1 |
./cl2h.sh |
Теперь можно использовать qmake или qtcreator. Сборка проверялась на gcc-4.7. Гарантированно собрать срествами VS2010 не получится т.к. используется for по коллекции, который не реализован в VS2010
Бинарные версии
32-х битная версия под Ubuntu не была обновлена, надо разобраться с кросс компиляцией.
Для работы любой версии потребуется установленный OpenCL runtime (поидее должен быть установлен если у вас достаточно свежие драйвера)
Ожидаемая обратная связь
Очень хочется узнать, запустилось ли у вас без бубна, удалось ли сгенерировать текстуру? Это мой первый опыт в использовании OpenCL поэтому могут быть разные баги.
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:
18 марта, 2013 at 15:00
Спасибо за тестирование. Проблема с падением уже известна и надеюсь что скоро будет решена. Чтобы не падало надо сначала удалять связь между модулями а потом сам модуль.