|
Флудилка
|
|
|
|
|
Общаемся на различные темы!
|
|
|
|
|
Цитата TonaTor (  ) Почему cf-team`у повезло меньше mow-portal`а? Да уже всем лень куда то переходить, так как аудитории ВТВ очень мало осталось. На том сайте огромные плюсы, но это как я вижу не помогло. А жаль.
Цитата TonaTor (  ) - как увеличить число активного, но адекватного народа ? Наверное, тут либо добавлять новый контент не связанное с ВТВ, либо заполнять различные статьи типа "как сделать оружие" и прочее. Да и форум надо как то поднять, но это сложно и долго. Хотя не факт что вообще че то поможет.
Смотря на статистику сайт немного падает. Лето наверное)) Все разъехались шоле.
А насчет red479250, он ещё появится, я не сомневаюсь.
Вообщем. Просто буду продолжать следить за сайтом и новинками модификаций, и конечно же размещать их в яндекс и гугл, для удобств. Этот сайт чисто хранилище, тут даже невозможно собраться и поиграть вместе)) Хотя, у меня были мыслишки, типа знаешь, каждый месяц какие нибудь битвы устраивать, хотя бы в Штурме 1, но тут же нужно время, хороший компьютер да и интернет.
|
| |  |
|
|
|
|
|
|
|
Azot1995, неплохо. А ты че ему только флаг добавил и всё?
|
|
|
|
|
Цитата Ghosteron (  ) неплохо. А ты че ему только флаг добавил и всё? Модельку собрал в Arma 3, Рипнул и хочу сделать как DLS Азербайджанскую армию. Начал с малого (это спецподразделение DTX) и там потихоньку к армии доберусь. Использовал сборку: RHS, СПР. Ну и конечно ретекстур броника сделал немного. Нанес название и флаг.
Известный, авторитетный ветеран компьютерной игры "В Тылу Врага". (Играю с 2006 года по сегодняшний день) Разработчик мода Спецназ на игровую платформу Call To Arms (CtA).
|
|
|
|
|
|
|
|
Эх, хотел уже выложить свою ДДС смотрелку, но во время тестирования нашел одну ддску, чьё качество рендера меня не впечатлило. Поэтому снова нужно переписывать значительную часть кода. А её выход придется отложить ещё на 2-3 недели. (((
|
|
|
|
|
Цитата Azot1995 (  ) Боец Госбезопасности Азербайджана, аналог ЦСН ФСБ. Минутку оценки мне) Было бы не плохо увидеть критику
Смотрю данная тематика уже часто мелькает в сити ) http://moscow-baku.ru/news....dex.com
|
|
|
|
|
|
|
|
Кажется SKR занялся техникой крупнее пушек и пулемётов
|
|
|
|
|
|
|
|
|
|
|
Ай я дурак! Не ту переменную подставил!!!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
В общем вот код бэнчмарка, отражающий суть рендера с бленденгом ДДСки. И его короче нужно распараллелить.
Код #define MONOHROM(m) ((COLORREF)(((BYTE)(m)|((WORD)((BYTE)(m))<<8))|(((DWORD)(BYTE)(m))<<16)))
void __fastcall TForm1::Button1Click(TObject *Sender) { Button1 -> Enabled = false; DWORD *buftest = (DWORD*) malloc((4096*4096) * sizeof(DWORD)); const DWORD kol_proh = 1000; DWORD tmp1[256] = {0}, tmp2[256] = {0}, tmp3[256] = {0}, FormColor = 0x00808080;
long blend = 0, RS = 0, GS = 0, BS = 0, RD = 0, GD = 0, BD = 0; float fTimeStart = 0, fTimeStop = 0, fTotalTime = 0; float Time_test[kol_proh] = {0};
ListBox1 -> Clear(); for(DWORD speed_test = 0; speed_test < kol_proh; speed_test++, fTimeStart = fTimeStop = 0) { for(DWORD i = 0; i < (4096 * 4096); i++) {buftest[i] = i;} fTimeStart = clock() / (float)CLOCKS_PER_SEC; RD = GetRValue(FormColor); GD = GetGValue(FormColor); BD = GetBValue(FormColor); for(DWORD w = 0, h = 0, count = 0; h < 4096; h++) { for(w = 0; w < 4096; w++, count++) { buftest[count] = SWAP32(buftest[count]); buftest[count] = (buftest[count] >> 8) | (buftest[count] << 24); tmp1[(BYTE)count] = buftest[count]; tmp2[(BYTE)count] = MONOHROM(buftest[count] >> 24); RS = GetRValue(buftest[count]); GS = GetGValue(buftest[count]); BS = GetBValue(buftest[count]);
RS = (RS - RD) * (long)(buftest[count] >> 24) / 255 + RD; GS = (GS - GD) * (long)(buftest[count] >> 24) / 255 + GD; BS = (BS - BD) * (long)(buftest[count] >> 24) / 255 + BD;
blend = RGB(RS, GS, BS); tmp3[(BYTE)count] = blend; } } fTimeStop = clock() / (float)CLOCKS_PER_SEC; Time_test[speed_test] = fTimeStop - fTimeStart; ListBox1 -> Items -> Add(FloatToStrF(Time_test[speed_test], ffGeneral, 10, 10)); ListBox1 -> ItemIndex = ListBox1 -> Count -1; Application -> ProcessMessages(); } free(buftest);
for(DWORD speed_test = 0; speed_test < kol_proh; speed_test++) {fTotalTime += Time_test[speed_test];} fTotalTime /= kol_proh;
ShowMessage("Average Run Time - " + FloatToStrF(fTotalTime, ffGeneral, 10, 10)); Button1 -> Enabled = true; } //---------------------------------------------------------------------------
Выполнение и результат в однопоточном режиме
https://imgur.com/JDi3ECO


Попробую заюзать OpenMP C++ с директивами #pragma omp parallel for
Но мне нужно знать сколько у людей ядер в процах, то-бишь под что оптимизировать. Коэф. распараллеливания...
На моём ноуте кстати результат 0,5499835014
|
| |  |
|
|
|
|
Программистам из Майкрософт отдельный привет за использование подобного кода для определение частоты проца.
Код double GetCPUSpeed() { int DelayTime = 500;
DWORD TimerHi, TimerLo; int PriorityClass, Priority;
PriorityClass = GetPriorityClass(GetCurrentProcess); Priority = GetThreadPriority(GetCurrentThread);
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS); SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
Sleep(10);
asm { dw 310Fh mov TimerLo, eax mov TimerHi, edx }
Sleep(DelayTime);
asm { dw 310Fh sub eax, TimerLo sbb edx, TimerHi mov TimerLo, eax mov TimerHi, edx }
SetThreadPriority(GetCurrentThread, Priority); SetPriorityClass(GetCurrentProcess, PriorityClass);
return (TimerLo/(1000.0 * DelayTime)); }
- эта ерунда абсолютно неверно определяет частоту проца. Вместо 3,5 пишет 1,99 ГГц.
|
|
|
|
|
|
|
|
[img]http://file:///C:/Users/ден/Documents/My%20Games/men%20of%20war%20-%20assault%20squad%202/screenshots/180908-1752-00.jpg[/img]доброго времени суток как это убрать почти во всех мииссиях это
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Кто-нибудь знает от чего такая проблема: [00:02:15] Stuff '' not found (estuffs.cpp, 234) Пояснение: Пытаюсь выстрелить из Thompson’а или Walter’а игра вылетает.
|
|
|
|
|
Цитата MrDolgovec (  ) Кто-нибудь знает от чего такая проблема: [00:02:15] Stuff '' not found (estuffs.cpp, 234) Пояснение: Пытаюсь выстрелить из Thompson’а или Walter’а игра вылетает. Stuff не хватает. Посмотри в папке set/stuff/pistol/walter или set/stuff/smg/thompson есть ли stuff файлы.
|
|
|
|
|
Ghosteron, спасибо сейчас посмотрю.
|
|
|
|
|
Цитата Ghosteron (  ) Stuff не хватает. Посмотри в папке set/stuff/pistol/walter или set/stuff/smg/thompson есть ли stuff файлы.
или ещё есть вероятность, что Thompson или Walter стреляют не существующими патронами, встречал и такое...
|
|
|
|
|
|
|
|
Аргентина манит негра...
Где все?
|
|
|
|
|
Цитата TonaTor (  ) Где все? Придут, они пока вывеску о переезде видать не читали )))
|
|
|
|
|
ребят всем привет! вопрос к модерам как изменить иконки юнитов на свои собственные! отмечены красным
 famous odes
|
|
|
|
|
и еще вопрос такой возможно ли в men of war assault squad 2 сделать так что бы пехота могла сдаватся в плен то есть поднимать руки и переходить на сторону противника как в серии игр company of heroes blitzkrieg mod и company of heroes battle of the bulge Operation Nordwind?
|
|
|
|
|
Возможно ли заменить модель SdKfz303 с сохранением возможности подрыва? Если да, то как?
Злой гений всего мод-комьюнити ВТВ (проклят и изгнан)
|
|
|
|
|
Цитата LVL90DRU1D (  ) Возможно ли заменить модель SdKfz303 с сохранением возможности подрыва? Если да, то как? Возможно. А в Ш1 разве такая есть?
|
|
|
|
|
Цитата Ghosteron (  ) А в Ш1 разве такая есть?
Есть, заменять пробовал - не взрывается (дошло до ковыряния в файлах mdl, не помогло).
Злой гений всего мод-комьюнити ВТВ (проклят и изгнан)
|
|
|
|
|
Цитата LVL90DRU1D (  ) Есть, заменять пробовал - не взрывается (дошло до ковыряния в файлах mdl, не помогло). Поспрашивай тогда в беседе в ВК, я чет хз..
|
|
|
|
|
|
|
|
|
|
|
А вот AVX инструкции себя не оправдали ((( Вот это прям облом дня. Уйма времени была убита на их поддержку, а в итоге разница не выразительна 
https://imgur.com/O2mN5AV

RunTime - это время обработки (в секундах).
Целый месяц в пустую. Обидно блин.
|
|
|
|
|
TonaTor, за то попробовал)))))))
|
|
|
|
|
Ghosteron, вод так и приходится, ради каждого незначительного улучшения пробовать несколько разных вариантов реализации. Ради каждого из которых нужно основательно перелопатить код. А на выходе, такое...
|
|
|
|
|
|
|
|
С многопотоком тоже как-то не пошло. Вроде само по себе всё работает
Но это происходит только при попытке выполнить код через два и более потоков, т.е. omp_set_num_threads(1); работает, а omp_set_num_threads(2); и более - уже нет. И кто подскажет, что делать?
|
|
|
|
|
Я просто сгорел. Перепробовал уже несколько технологий многоядерного многопотока (OpenMP, TBB, Thread), но все они просто несовместимы с моим основным компилятором, использующим устаревший стандарт C++03. Разработка затягивается. Остаётся копать в сторону древних, хтоничных Win API... Но тефлоновое покрытие и углекислота исчерпаемы. Нужно доделать хотя бы к НГ.
|
|
|
|
|
Цитата TonaTor (  ) Я просто сгорел. Перепробовал уже несколько технологий многоядерного многопотока (OpenMP, TBB, Thread), но все они просто несовместимы с моим основным компилятором, использующим устаревший стандарт C++03. Разработка затягивается. Остаётся копать в сторону древних, хтоничных Win API... Но тефлоновое покрытие и углекислота исчерпаемы. Нужно доделать хотя бы к НГ. Я уже половину не понимаю что ты пишешь, серьёзно это так сложно пиздеъц))))))))))
|
|
|
|
|
Ghosteron, мои идеи в принципе мало кто понимает с ходу. Суть в том, что у меня есть какое-то изображение с альфа-каналом, альфа-канал настраивает "прозрачность" пикселя относительно поверхности на которой он расположен. На самом деле "прозрачность" пикселя - это смешение цветов (raster), исходя из его прозрачности (пикселя). В моём случае, "прозрачность" пикселя определяется его собственным, индивидуальным альфа-каналом. Сам пиксель представляет собой структуру из 4 байт: ARGB - где A - альфа-канал, R - кол-во красного цвета, G - кол-во зелёного цвета, B - кол-во синего цвета. Все эти параметры могут иметь значения от 0 до 255. Допустим у меня есть DDS файл из которого с помощью nVidia`вского декомпрессора прога вытащила 4K текстуру, т.е. текстуру с разрешением 4096x4096 пикселей. В буфере проги оказывается массив данных весом в 64МБ, которые надо распарсить и смешать с фоновым цветом по формуле: ресурсный растр = (ресурсный растр - фонвый растр) * альфа-канал / 255 + фонвый растр. Этот расчет нужно сделать для каждого растра в пикселе т.е. 3 раза. Плюс есть заморочки с нормализацией пикселя
Код pixel = SWAP32(t); - это инвертирует все байты в пикселе. По принципу (было: 1234, стало 4321). pixel = (pixel >> 8) | (pixel << 24); - это меняет местами первый и последний байт.
- от этого куска кода ещё только предстоит избавиться.
В результате получается, что для того чтобы отобразить одну 4K текстуру, нужно выполнить кучу действий для каждого из 16777216 пикселей. И все эти действия выполняются последовательно, пиксель за пикселем. И так-как программный код изначально написан как однопоточный, то выполняется он в одном потоке (шаг за шагом) и на одном ядре процессора. А даже для моего разогнанного Core i5-6400 CPU 3,5GHz 16777216 пикселей - это слишком много. В результате, рендер отдельных текстур, у меня занимает до 4 секунд. И при этом 3/4 мощности железа в это время просто простаивают. Это как-то не комильфо. Я искал и пробовал разные варианты решения этой проблемы: подменял инструкции (в место операции деления, использовал более лёгкие для проца, операции битового сдвига); пробовал предрассчитать все результаты деления на 255; даже пробовал использовать методы от самих Microsoft. Но всё это было либо не эффективно, либо ещё и глючело (мой привет программистам из Microsoft).
Из-за этого я решил применить "тяжелую артиллерию" - многоядерный многопоток. Решение по своей сути ультимативное. Суть в том, что формально пиксели можно рассчитывать в любой последовательности. А значит я могу разбить всё адресное пространство буфера на несколько областей. Для оптимизации по нагрузке на едро количество областей должно соответствовать кол-ву потоков (не физических ядер, а именно потоков. Т.к. у тех процов, у которых потоков больше чем ядер, есть дополнительный набор выходных регистров, который помогает снизить простой конвейера инструкций, вызванный задержками в памяти). Поэтому в случае многоядерного многопотока (именно многоядерного, т.к. и на одном ядре можно организовать многопоток, но прироста он не даст, скорее даже чутка замедлит), туже 4K текстуру мой проц поделит на участки по 4194304 пикселей и получется, что: - первое ядро обрабатывает с 0 по 4194303 пиксель; - второе ядро обрабатывает с 4194304 по 8388607 пиксель; - третье ядро обрабатывает с 8388608 по 1258291 пиксель; - четвертое ядро обрабатывает с 12582912 по 16777216 пиксель.
Получиться разительно быстрее чем сейчас.
Вот суть моей идеи на данный момент. ))))))
|
| |  |
|
|
|
|
TonaTor, не кажется ли тебе что такая "оптимизация" очень нудная и сложная?
|
|
|
|
|
Ghosteron, ну, написание программ это в принципе нудно. Однако если получится, то это сразу будет Гут. К тому же, непонятным мне шаманством, удалось заставить работать одну из этих многопоточных технологий (OpenMP).
Мне буквально на слух удалось заставить работать OpenMP, с помощью MessageBeep )))))
Вот топорная функция подгрузки внешний DLL-ки и вызова из неё нужной функции.
Вот в DLL-ке столь же топорная функция расчета сферических коней в вакууме при при использовании многоядерного многопотока.
Результат пока странный, загрузка ядер по началу не полная. Но надеюсь, что и с этим разберусь.
В общем, разработка сложная но темпы сохранять удаётся))) Ну а за весь этот многопоток и оптимизацию, я взялся чтоб прога не "вешалась" на слабых ПК. Надеюсь затраты по времяни того стоят )))
|
|
|
|
|
TonaTor, ты такими темпами смотри не взломай чего нибудь)))))
|
|
|
|
|
 Когда бабла не хватила на нормальную ПТ пушку
|
|
|
|
|
Мда. Теперь у меня накрылся протокол вызова функций из библиотеки DLL. Уже неделю пытаюсь починить.
|
|