Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2010, 20:58   #71
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Ulex, галочку "BitBlt" пробовал отключать?
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 27.10.2010, 21:09   #72
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Цитата:
галочку "BitBlt" пробовал отключать?
Пробовал только на режиме по умолчанию (252 человека, 20 мс).
Как то ничего сильно не поменялось (к реальному интервалу таймера в 62 мс дало минус 5-10 мс). Почему то не очень сильно влияет. Я этот результат даже не зафиксировал.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 27.10.2010, 22:11   #73
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Понятно, ...у меня при 2500 персонажах с BitBlt и без него разница по загрузке CPU в 2 раза.

Что-то молчит Tronix, ...я уж как смог, так и собрал этот тест, ...хотелось бы по-экономичнее. По сути, это цикл берущий по 8 байт, только внутри цикла две одинаковые секции по 4 байта, ну, вот так только смог. Дело в чем? ...регистр может брать 8 байт, но процессору куда-то нужно девать результат перемножения двух регистров по 8 байт, ...это ведь уже 16 байт, ...вот проц и записывает первые результаты 4-х байт в весь регистр, остальные теряются, получаются черные полосы, т.е. необработанные данные, когда я пытаюсь работать с 8-ю байтами сразу. В SSE понятное дело, проходит по случаю регистра в 16 байт, ...но если я буду в таком режиме брать по 16 байт за такт, то получу аналогичную картину, результат умножения будет 32 байта, и опять это дело не уместится.

Выход есть, если взять по 8 байт с приемника и источника, отнять, затем распаковать, взять первые 4 байта источника, приемника, маски, перемножить, сдвинуть, сохранить в регистр. Затем тоже самое с остальными 4-мя байтами, записать в регистр, ...затем как-то соединить в одну 8-байтовую последовательность, останется сложить с приемником и запаковать, ну, и отправить в память. Логически все верно, и работать должно быстрее чем то, что сейчас есть. Кто поможет?
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 28.10.2010, 03:54   #74
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Цитата:
Выход есть, если взять по 8 байт с приемника и источника, отнять, затем распаковать, взять первые 4 байта источника, приемника, маски, перемножить, сдвинуть, сохранить в регистр. Затем тоже самое с остальными 4-мя байтами, записать в регистр, ...затем как-то соединить в одну 8-байтовую последовательность, останется сложить с приемником и запаковать, ну, и отправить в память.
А не получится, наверное, по такой схеме.
В этой формуле Zone + ((Tex - Zone) * Map shr 8) в момент Tex - Zone знак тоже важен. Если мы отнимем командой psubb, есть очень большая вероятность, что мы потеряем знак (в один байт минимум может войти -128, дальше возникнет переполнение). Т.е. операцию Tex - Zone уже надо выполнять на Word_ах а не на байтах. Ну и в подтверждение у меня вот чего получилось (см. картинку).
Вобщем пока у меня никакой особенной оптимизации не придумалось кроме вот этого, но это тот же самый вариант, что и у тебя получился:
Цитата:
По сути, это цикл берущий по 8 байт, только внутри цикла две одинаковые секции по 4 байта, ну, вот так только смог.
Код:
              @@mix:
              // Zone + ((Tex - Zone) * Map shr 8)
               movq      mm0, [esi]    // Tex
                movq      mm4, mm0      // Tex
                PUNPCKLBW mm0, mm7      // êîíâåðòàöèÿ â Word
                PUNPCKHBW mm4, mm7      // êîíâåðòàöèÿ â Word
                movq      mm1, [edx]     // Zone
                movq      mm5, mm1      // Zone
                PUNPCKLBW mm1, mm7      // êîíâåðòàöèÿ â Word
                PUNPCKHBW mm5, mm7      // êîíâåðòàöèÿ â Word
                psubw     mm0, mm1      // Tex - Zone
                psubw     mm4, mm5      // Tex - Zone
                movq      mm2, [edi]     // Map
                movq      mm6, mm2      // Map
                PUNPCKLBW mm2, mm7
                PUNPCKHBW mm6, mm7
                pmullw    mm0, mm2      // (Tex - Zone) * Map
                pmullw    mm4, mm6      // (Tex - Zone) * Map
                psrlw     mm0, 8         // shr 8
                psrlw     mm4, 8         // shr 8
                paddw     mm5, mm4      // Zone + (Tex - Zone) * Map shr 8
                paddw     mm1, mm0      // Zone + (Tex - Zone) * Map shr 8
                pand      mm5, mm3
                pand      mm1, mm3
                packuswb  mm1, mm5       // êîíâåðòàöèÿ â Byte
                movq      [edx], mm1
             @@next:
                add esi, 8
                add edx, 8
                add edi, 8
                loop @@1
Изображения
Тип файла: jpg 111.JPG (11.6 Кб, 91 просмотров)
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 28.10.2010, 17:57   #75
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Я совсем не обратил внимание на знак, думая, что разница двух байт при переполнении или выхода за нижнюю границу (0) вызывает сатурацию.

Такой же эффект, что на картинке я получал последовательно тремя логическими операциями, без распаковки, ...код минимальный, но работает только с 0 или 255 прозрачностью.

Много экспериментировал, искал сразу решение путем логических команд, анализ ничего подходящего не выдает. Быть может есть еще какая-нибудь формула смешивания, что ложится в MMX команды охотнее, ...например PANDN, PMADDWD, ну я не знаю, сравнение применить и выбрать два пути смешивания, ...т.е. побороться за сокращение числа строк. Понимаю, что было бы проще видеокарту загрузить работой, но это не цель.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 28.10.2010, 20:16   #76
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Собственно, организовал пропуск смешивания, если пиксел полностью непрозрачный, т.е. два сегмента, берущие по 4 байта с проверкой и прыжками, ...ну, а непрозрачный пиксел это просто переброска байтов из источника в приемник. Полагая, что в текстуре больше непрозрачных пикселов, должен быть прирост производительности.
Вложения
Тип файла: zip MMX Test 4 2010.zip (613.2 Кб, 17 просмотров)
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его

Последний раз редактировалось Beermonza; 28.10.2010 в 21:07.
Beermonza вне форума Ответить с цитированием
Старый 28.10.2010, 23:09   #77
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Ну я уехал, поэтому я тут, компьютер там. С тестированием на Celerone будет не очень оперативно получаться, самое раннее на выходных.
Ну а на 4 пеньке вроде производительней раза в 1.5, правда почему то загрузка очень сильно болтается, скорее всего диспетчер врёт.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 28.10.2010, 23:58   #78
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Просто тестировать нужно отключившись от Интернета, или закрыв броузер, ICQ и прочие спонтанно нагружающие систему программки. Это будет честный тест для слабого компа, а для пня 4-го и новее - не важно чего и как. Текущий 4-й тест у меня показывает на Intel Core 2 Duo 1.8GHz всего 4-10% (память DDR II), можно параллельно играя в такую игру сидеть в Интернете, болтать по ICQ, еще чего-то запускать, ...в принципе я доволен. Можно будет выполнить проверку системы примерно так:

Код:
Try
  asm
    pxor  xmm0, xmm0
  end;
  sysasm := 3; // уровень 3 (комп c SSE)
Except
  Try
    asm
      pxor  mm0, mm0
    end;    
    sysasm := 2; // уровень 2 (комп только с MMX)
  Except
    sysasm := 1;  // уровень 1 (комп без MMX)
  end;
end;
...логически вроде просто и эффективно. Может вызовет особую ошибку, ...у меня оба компа SSE, проверить не могу.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 29.10.2010, 00:27   #79
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Тык так и тестировалось, естественно, для слабого компа. Всё выключалось - включая антивир, интернет. К тому же фиксировалась загрузка CPU по процессу FWPROJ, а не общая. Вот только как обычному пользователю объяснить, что перед запуском этой программы надо потушить все приложения, жадные до ресурсов.
Цитата:
Текущий 4-й тест у меня показывает на Intel Core 2 Duo 1.8GHz всего 4-10% (память DDR II)
Так я об том же, то что работает на DDR2 c 10% загрузкой - это значит стреляется на PC100 SDRAM.
Пропускная способность шины 100 Mhz - 800 МБ/с (а ещё есть латентность-к слову пришлось). А теперь для примера DDR2:

Цитата:
Название модуля Частота шины Тип чипа Пиковая скорость передачи данных
PC2-3200 200 МГц DDR2-400 3200 МБ/с или 3,2 ГБ/с
PC2-4200 266 МГц DDR2-533 4200 МБ/с или 4,2 ГБ/с
PC2-5300 333 МГц DDR2-667 5300 МБ/с или 5,3 ГБ/с1
PC2-5400 337 МГц DDR2-675 5400 МБ/с или 5,4 ГБ/с
PC2-5600 350 МГц DDR2-700 5600 МБ/с или 5,6 ГБ/с
PC2-5700 355 МГц DDR2-711 5700 МБ/с или 5,7 ГБ/с
PC2-6000 375 МГц DDR2-750 6000 МБ/с или 6,0 ГБ/с
PC2-6400 400 МГц DDR2-800 6400 МБ/с или 6,4 ГБ/с
PC2-7100 444 МГц DDR2-888 7100 МБ/с или 7,1 ГБ/с
PC2-7200 450 МГц DDR2-900 7200 МБ/с или 7,2 ГБ/с
PC2-8000 500 МГц DDR2-1000 8000 МБ/с или 8,0 ГБ/с
PC2-8500 533 МГц DDR2-1066 8500 МБ/с или 8,5 ГБ/с
PC2-9200 575 МГц DDR2-1150 9200 МБ/с или 9,2 ГБ/с
PC2-9600 600 МГц DDR2-1200 9600 МБ/с или 9.6 ГБ/
Вобщем вывод пока неутешительный - владельцам барахла до четвёртых пеньков поиграть в эту игру не светит.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 29.10.2010, 17:10   #80
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Вообще, смысл темы в том, чтобы не сразу отправлять пользователей "старичков" стреляться, а искать способы ускорения подготовки и отрисовки 2D-графики отличного качества. Откровенных "динозавров" вообще без MMX и с минимумом памяти на руках потенциальных пользователей просто нет, это достояние складов контор. Т.е. интересуют околопеньчетвертые машины, но и про такие как у тебя, Ulex, "имеющиеся в наличии", ...заметь, есть и по мощнее )). Задача сводится к сносной работе, ...ну а про ноутбуки и П4 разговора особо нет, все устраивает. Думаешь Flash-игра меньше загружает процессор? ...ничего подобного, даже П4 под завязку, так, что ни одно приложение более не пролезает спешно. А старые игры, и вообще в те времена занимались либо игрой, либо делом в Интернете по модему, ...сейчас сидят везде и занимаются 3-мя и более делами на одном компе.

Значит в системе будет предусмотрен переход на 16-битные текстуры, в настройках, естественно, ...ну, и вопрос с оптимизацией остается открытым.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
wi-fi и скорость stenl1 Компьютерное железо 19 01.06.2010 17:48
Скорость рисования графиков Master07 Общие вопросы C/C++ 3 16.07.2009 21:45
Скорость bakanis Работа с сетью в Delphi 6 05.04.2009 12:39
Скорость скачивания Терминатор Свободное общение 3 30.03.2009 19:03
Скорость проигрывания Bigtyoma Мультимедиа в Delphi 0 30.09.2008 15:57