Нет ничего, кроме надежды, что будет время на это в отпуске, в августе.
Я, как обычно, предпочёл конкурс этому проекту.
Mikle
ок, я эксперт в безуспешных попытках нетеряния надежды, может увидет еще свет сие творение.
Mikle
> Так это же внутри sr2d.dll:
Знакомо, ковырял подобное на Дельфях.
Строго говоря, это не антиалиасинг, а билинейка по 4-м точкам, то же самое, что и bilinear texture filtering в видеокартах.
> Заметь, всё на целочисленных операциях, такое обогнать можно только на MMX-SSE
> интринсиках.
Интринсики в GCC/Clang/ICC уже не обязательны, есть векторные расширения - возможность применять "шейдерный" синтаксис с float4, int4 и т.п.
https://gcc.godbolt.org/z/_cKion
Правда, ускоряет в данном случае слабовато, всего в полтора раза. Наверное, куча условий на пиксель всё портит.
Mikle
привет, надежда не оправдалась?
Только вернулся с очередного похода, уже пятого.
SilentPrayerCG
Думаю, через недельку будет демка тебе на пробу.
Mikle
надеюсь не только мне будет интересно
SilentPrayerCG
Вот пример использования x64 dll на vb.net.
Это тестовый вариант, библиотека переведена полностью, но быстродействие пока будет ниже.
Сначала нужно выловить ошибки, потом буду оптимизировать. Попробуй использовать, сообщи, если какие-то ф-ции будут глючить.
Mikle
хорошо, но желательно если-бы кто-то еще подключился, сложные (для меня) вещи, я все равно не разберусь как ими пользоваться.
Ну вот как там нормалку ты делал в этом примере, это же он? дпбм, так и не понял как это все получается.
Ты для начала проверь то, что тебе требовалось и в x32 не хватало памяти.
А сложные вещи достаточно проверить на запускаемость и соответствие результата старому варианту, хоть на VB6.
Я тоже понемногу проверяю, но времени стало меньше - отпуск закончился.
Mikle
При "портировании" sr2d на 64-бит как решал проблему изменения длины стандартных типов данных?
Vitorio
Не пришлось решать - все типы остались теми же (у меня используются только int, unsigned int и unsigned char), изменился формат передаваемого в dll указателя на данные, но это изменилось и в вызывающей стороне, и в dll, ничего менять не пришлось. Только в инициализации hDC окна небольшое изменение.
Mikle
Добрался до дома. Запустил пример, студия ругнулась что нужно конвернуть,
вот что она сделала:
Все запустилось, работает,
фпс грубо говоря, до ~1800, и падает до 1100 если теребонькать мышкой "источник света"
Класс спрайт, он менялся? отличается от того который в старом был?
Как, кстати, DPBM вообще расшифровывается?
SilentPrayerCG
> DPBM вообще расшифровывается?
Dot Product Bump Mapping.
SilentPrayerCG
> Класс спрайт, он менялся? отличается от того который в старом был?
Старый, этой ещё 32-битный? Там есть минимальные отличия, CopyMemory() сменил на другую функцию. Основные отличия внутри dll.
Mikle
ну да, старый который от 32ух битной.
я там какие-то дополнения делал небольшие, в том числе твой способ создания битмапы из спрайта, нужно будет скопировать тогда
Mikle
у меня MulAddSX2 оверфлоу выдает
System.OverflowException: 'Arithmetic operation resulted in an overflow.'
вроде использую строчку, которую ты мне кидал еще сто лет назад, что-бы яркость канала поменять
типа s.MulAddS2X(s, 0, 0, ARGB(128, 255, 128, 128), ARGB(128, 255, 128, 128))
хм.
я помню вроде давно привязывал слайдеры к этим параметрам что-бы понять как работает, и никаких ошибок не выкидывало
это я проверяю, на чистом проекте
т.е скопировал классы, скопировал дллку, поменял на х64 таргет
а если из твоего примера, при попытке muladds2x приложение просто закрывается и в логах пишет
The program '[25648] DPBM.exe' has exited with code -1073740791 (0xc0000409).