URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 100037
[ Назад ]

Исходное сообщение
"Google представил MathFu 1.0, математическую библиотеку для ..."

Отправлено opennews , 13-Ноя-14 23:07 
Компания Google объявила (http://googledevelopers.blogspot.ru/2014/11/geometry-math-li...) о выпуске MathFu 1.0 (http://google.github.io/mathfu/), открытой библиотеки с реализацией математических функций, востребованных в игровых приложениях. Библиотека предоставляет набор C++  классов для манипуляции с геометрическими данными с использованием векторов, матриц и  кватернионов.

С практической точки зрения данные функции можно использовать для выполнения геометрических расчётов  для графических библиотек  или для вычислений, необходимых при формировании анимации или симулировании физических эффектов. Библиотека написана на языке C++ и использует инструкции  SIMD для увеличения производительности. Работа библиотеки протестирована в Android, Linux, OS X и Windows.

URL: http://googledevelopers.blogspot.ru/2014/11/geometry-math-li...
Новость: http://www.opennet.me/opennews/art.shtml?num=41056


Содержание

Сообщения в этом обсуждении
"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено ананим , 13-Ноя-14 23:07 
Под лицензией апач 2.

"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено Аноним , 13-Ноя-14 23:19 
Есть Eigen ( http://eigen.tuxfamily.org/index.php?title=Main_Page ) для матричных рассчётов, поворотов, векторов и т.п.  или GLM. - это чисто для математики.

Есть Box2D, и много чего подобно, - чисто для физики.

Ничего из описанного пока не использовал, но присматриваюсь к Eigen.

Вопрос к знатокам - зачем комбайн MathFu? Кто пробовал? Как по сравнению с Eigen? (Там тоже декларируются CPU-оптимизации)


"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено Аноним , 13-Ноя-14 23:24 
Всё это хрень, матрицы давно пора считать на GPU

"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено Аноним , 13-Ноя-14 23:50 
Для перещения объекта в пространстве задать матрицу [4 x 4] и перемножить её на другую [4 x 4], думаю, не дорогая операция.

На шэйдерах, да, быстрей, но если итоговая матрица нужна - то её не "достанешь" из шэйдеров.

А если имелось в виду использование open-cl, то расходы на пересылку туда-сюда, могут и не покрыть выигрыша в скорости.


"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено Аноним , 14-Ноя-14 02:14 
Разработчикам игр, на которых ориентирована библиотека, согласно новости, не надо итоговую доставать из видеокарты. Разработчикам игр надо загрузить в видеокарту модели, шейдеры и получить картинку на экране.

"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено Ordu , 14-Ноя-14 04:47 
У вас сильно идеализированное представление о геймдеве. Вы путаете задачу рендеринга с геймдевом вообще.

Часть геометрии неизбежно обсчитывается на процессоре. Весь "мир" в видекарту грузить глупо, в идеале туда надо грузить только то, что попадает в поле зрения камеры. Обратные преобразования координат -- из экранных в "мировые" -- это тоже можно делать средствами видокарты/opengl, но иногда это проще сделать на процессоре, перемножив несколько матриц, обратив результат и получив таким образом "преобразователь" экранных координат в мировые на процессоре.

Кроме того, коллизии и прочие элементы "физики" обсчитывать можно где угодно, но результаты нужны на стороне CPU. И вот это уже не параллелится так хорошо как отрисовка, особенно в силу того что многие данные "кешируются" с предыдущих итераций, и на каждой итерации обновляются, что приводит к тому, что обновение этих данных может свестись к пересчёту по формуле и сохранению нового результата, или к нескольким итерациям пересчётов по формулам для разных объектов с сохранением нескольких новых результатов, или к изменению структур отображающих взаимное расположение объектов.


"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено Аноним , 14-Ноя-14 13:58 
> в идеале туда надо грузить только то, что попадает в поле
> зрения камеры.

В идеале в современную видеокарту надо грузить все что хорошо считается пачкой SIMD-образных ALUшек. Хоть физику частиц (реалистичный дым/туман/эффекты/...) и чего там еще - нормально ляжет на архитектуру современных GPU и будет в *десятки* раз быстрее системного проца.

> на процессоре, перемножив несколько матриц, обратив результат и получив таким образом
> "преобразователь" экранных координат в мировые на процессоре.

Современная видеокарта - это прежде всего крутая SIMD-образная числодробилка с уймой вычислительных элементов и убер-скоростной памятью к которой очень быстрый последовательный доступ (современные могут под 200Гб/сек и более, до чего обычному DDR3, даже трехканальному как у i7 - как пехом до пекина).

> результаты нужны на стороне CPU.

Тут как бы вопрос в объеме вычислений. Все что можно считать параллельно - GPU посчитает в ...цать раз быстрее. Для чего он собственно и нужен. И GPU нынче как раз стараются сделать максимально generic, перейдя к унифицированным вычислениям. На них можно вообще неграфические вычисления гонять нынче по этому поводу. Массиву числокрушилок все-равно что дробить.


"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено Ordu , 15-Ноя-14 01:37 
> Тут как бы вопрос в объеме вычислений. Все что можно считать параллельно
> - GPU посчитает в ...цать раз быстрее. Для чего он собственно
> и нужен. И GPU нынче как раз стараются сделать максимально generic,
> перейдя к унифицированным вычислениям. На них можно вообще неграфические вычисления гонять
> нынче по этому поводу. Массиву числокрушилок все-равно что дробить.

Какие интересные вещи вы рассказываете. Это вы в википедии подчерпнули в статье про GPU, или базируетесь на своём собственном опыте реализации 3d-движка/игрули? Если второе, то давайте лучше ссылку сюда: мне было бы интересно посмотреть, как у вас там всё сделано. Если же первое, то примите во внимание, что википедию читаете не только вы, всё что написано в педивикии -- это общеизвестные факты, и озвучивать их повторно нет никакой нужды.


"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено Аноним , 15-Ноя-14 07:23 
> Какие интересные вещи вы рассказываете. Это вы в википедии подчерпнули в статье
> про GPU, или базируетесь на своём собственном опыте реализации 3d-движка/игрули?

Это чуть с иного бока - смотрение на эволюцию архитектур GPU и изучение что они из себя представляют по факту. Если уж мы про вику: получить некое представление о том что там внутри - можно, например, тут: https://en.wikipedia.org/wiki/TeraScale_%28microarchite... - это про немолодых АМД (и первые из GPU которые мне хоть как-то интересны за уменее считать). Довольно прилично написано и что из себя представляет на общем уровне и как это развивалось. GCN-ы - тоже пачка ALU, только их сделали более похожим на "обычный" RISC-образный проц c массовым SIMD, поставив ряд блоков для более оптимального распихивания кода по блокам выполнения, так что это больше проблема железяки и меньше - проблема програмера и компилятора. А чистый VLIW вообще все спихивает на програмера/компилер и его програминг с выжимкой приличной скорости - очень отдельная и специфичная наука. То что у нвидии - AFAIK более-менее похоже по смыслу на GCN, хоть и со своими особенностями.

Кстати OpenGL как таковой - отстает от того что есть и по факту делался под совсем иные реалии. Собственно, именно за это игроделы его и хотят вынести в легаси и развивать OpenGL NG. Который позволит нормально пользоваться современными GPU, получая человеческий доступ к их устройству и умениям. Если посмотреть на историю, история GPU это уход от fixed function hardware в сторону полностью программируемых массово-параллельных числокрушилок. На данный момент это произошло и GPU уже несколько поколений как именно то, о чем я говорю.

> во внимание, что википедию читаете не только вы, всё что написано
> в педивикии -- это общеизвестные факты, и озвучивать их повторно нет
> никакой нужды.

Я читаю в основном то что касается архитектур GPU и вычислений. И немного скриплю мозгом на предмет того что удобно для таких архитектур. И да, даже активное использование двигунами GLSL и compute шейдеров - даже не полумеры. Это вместе с OpenGL безумно устарело относительно современных реалий. Внутри современной железки уже давно не делают никаких отличий - вершинные там шейдеры, геометрические или фрагментные. Или вычислительные. А GCN как таковой - вообще сильно твикался в пользу general-purpose вычислений, без упора на графику (с которой у амдшного железа и так все довольно неплохо и основные предъявы там к софту).

И да, авторам движков приходится порой равняться на некий наибольший общий знаменатель. Для не очень крутых игр и/или старых движков на OpenGL это может быть довольно древнее железо, еще эпохи fixed function, до момента появления универасльных массивов числокрушилок. Но называя вещи своими именами - это архаика.


"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено Ordu , 15-Ноя-14 08:13 
> Я читаю в основном то что касается архитектур GPU и вычислений. И
> немного скриплю мозгом на предмет того что удобно для таких архитектур.
> И да, даже активное использование двигунами GLSL и compute шейдеров -
> даже не полумеры. Это вместе с OpenGL безумно устарело относительно современных
> реалий. Внутри современной железки уже давно не делают никаких отличий -
> вершинные там шейдеры, геометрические или фрагментные. Или вычислительные. А GCN как
> таковой - вообще сильно твикался в пользу general-purpose вычислений, без упора
> на графику (с которой у амдшного железа и так все довольно
> неплохо и основные предъявы там к софту).

Короче вы нихера не знаете о тех алгоритмах вычислительной геометрии, которые используются в геймдеве, ни разу не представляете себе как эти алгоритмы можно засунуть в GPU и можно ли, и тем не менее рассуждаете об этом с невероятно умным видом. Впрочем, что это я... Ничего иного ожидать от опеннетовца было и нельзя.


"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено Аноним , 14-Ноя-14 04:40 
> думаю, не дорогая операция.

А теперь туман. Делаем миллионы particles. Как, вам все еще не дорого? :)


"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено бро , 14-Ноя-14 19:59 
и повторять эквивалентную матричную математику для каждой вершины модели, например на модель 10000 полигонов = 30000 идентичных матричных умножений (проекция*камера*мировая) на ГПУ, толи раз перемножить на ЦПУ?

"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено Vkni , 14-Ноя-14 21:33 
> Всё это хрень, матрицы давно пора считать на GPU

Смотря какого размера.


"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено umbr , 13-Ноя-14 23:32 
есть ещё PhysX

"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено Аноним , 14-Ноя-14 04:41 
> есть ещё PhysX

Проприетарь от нвидии с кучей причуд. Спасиб, конечно, но...


"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено maxis11 , 13-Ноя-14 23:46 
Зачем это, если есть GLM?

"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено Аноним , 14-Ноя-14 00:17 
Ты-то коптишь, без всякого толку причем

"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено A.Stahl , 14-Ноя-14 00:39 
>Google

Я в геймдеве работаю уж лет почти 10. Чуть меньше. Гугл идёт лесом (читай...сами прочитаете). Никогда, ни при каких обстоятельствах не пользуйтесь тем, что предлагает гугл. Через пару лет вы останетесь у разбитого корыта. У гугла, видите ли, оптимизация расходов. Даже микрософтовские хрени живут дольше. Впрочем, если вы пишете хрень, которую через 2 года никто не помянет даже негромким тихим словом, то можете посмотреть. Но смысл?


"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено Аноним , 14-Ноя-14 02:15 
чем это гугл обидел геймдев?

"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено Аноним , 14-Ноя-14 04:42 
> чем это гугл обидел геймдев?

Они не геймдев, они всех. У них половина проектов - поматросил-бросил и тот перец прав в том плане что закладываться может быть чревато.


"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено Нанобот , 14-Ноя-14 11:54 
ты ж не думаешь, что они ихняя библиотека использует сервера гугла для выполнения вычислений? (я к тому, что "оптимизация расходов" не должна влиять на работоспособность библиотеки)

"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено Аноним , 14-Ноя-14 00:50 
У них в этой библиотеки список зависимостей из всех предыдущих их библиотек, теперь ясно, как они их поддерживают.

"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено Аноним , 14-Ноя-14 01:49 
чем это лучше Octave с производными, развиваемых, сообществом и корпорациями, сообща ? там и фичастее и гибче и быстрее, бо.

"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено Аноним , 14-Ноя-14 13:45 
Octave? Для геймдевов? Are you sure?

"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено Аноним , 14-Ноя-14 06:02 
"Работа библиотеки протестирована в Android, Linux, OS X и Windows."
Если операционные системы записывать в алфавитном порядке, Винда почти всегда будет последней в списке. :)

"Google представил MathFu 1.0, математическую библиотеку для ..."
Отправлено Аноним , 15-Ноя-14 03:38 
Си-интерфейса нет. А жаль