Denis Mentey:
А все уже посмотрели, что Apple сделала Metal в iOS8?
и новый езыг Swift.
Andrey Geets:
Настала смерть OpenGL ES под IOS ??
Dmitry Ivanov:
что-то этот Metal напоминает Nvidia NV1 в 1995, тогда народ тоже фанател свои апи делать.
Arseny Kapoulkine:
Metal это direct response на mantle очевидно же.
Даже буквы совпадают!
Simon Kozlov:
Подробностей! Новый графический API чтоле???
Скажите, если что-то конкретное надо выкинуть.
Denis Mentey:
угу.
выходил тим свини, хвастался демкой.
ea,unity,epic уже получили доступ к апи. фростбайт на иос фтв!
Alexey Baskakov:
bad sign!
Denis Mentey:
Simon Kozlov:
А что про API рассказывают? Он сразу на Swift????
Arseny Kapoulkine:
Надеюсь блин нет!
Меня уже спросили когда роблокс портировать буду.
Denis Mentey:
не на swift. для таких, которые хотят на swift - новый spritekit и физега.
вроде как swift можно и "heavy-Metal programming"!
Arseny Kapoulkine:
А в Swift GC?
Или refcounting и weak руками?
Denis Mentey:
ARC.
у свифта.
Arseny Kapoulkine:
Понял, спасибо.
Интересно, компилятор пытается рассказывать тебе что у тебя в коде циклические ссылки в простых случаях, а то с closures очень уж легко.
Alexey Baskakov:
Swift provides an elegant solution to this problem, known as a closure capture list.
Each item in a capture list is a pairing of the weak or unowned keyword with a reference to a class instance (such as self or someInstance). These pairings are written within a pair of square braces, separated by commas.
Т.е. руками опять. Какое поле для багов!
Arseny Kapoulkine:
Ну боятся GC.
Alexey Baskakov:
В общем из Swift очень удобно генерить композиционно-тождественный C++11. И наоборот - плагин к Clang и генерить Swift (зашить имена RC классов только).
И это не то чтобы я ною "Swift - это эдакий C++/C#", просто - грустно.
Simon Kozlov:
Heavy-Metal(TM) programming!
Sergey Gonchar:
Arseny Kapoulkine:
"Metal and C++11 covers the similarities and differences between the Metal shading language and C++11." whaaaaaaa.
Пример шейдера из документации:
https://gist.github.com/zeux/7f1b88ebca2efd47b696
Похоже на смесь OpenCL, GLSL и C++11.
Alexey Baskakov:
C++! Жрат!
Simon Kozlov:
Metal provides extremely low-overhead access to the A7 GPU enabling incredibly high performance for your sophisticated graphics rendering and computational tasks.
Ой. Это значит, на старом железе не работает?
Metal provides precompiled shaders, state objects, and explicit command scheduling.
О да! Еще раз и еще раз!
Не совсем понятна threading model.
Arseny Kapoulkine:
iPad Air должен быть у всех!
A command queue accepts an ordered list of command buffers that the GPU will execute. All command buffers sent to a single queue are guaranteed to execute in the order in which the command buffers were enqueued. In general, command queues are thread safe and allow multiple active command buffers to be encoded simultaneously.
Что там понимать.
Все само работает!
Кстати рантайм библиотека-то - Objective C based.
Ну или Swift.
Так что комментарий выше по треду не совсем безоснователен!
Simon Kozlov:
Ага-ага, то есть все как у всех.
Arseny Kapoulkine:
Mantle со скидкой на другое железо.
Ну, правда аллокация ресурсов вроде таки обычная.
Впрочем нет, свободы больше - можно куски буферов трактовать как текстуры итп.
Ну что, крутое API для 30% от 10% пользователей, пора портировать!
Simon Kozlov:
На те же грабли, что MS наступают.
backcompat на одну версию.
Arseny Kapoulkine:
Ну, это такой D3D10.
Типа в какой-то момент надо сломать совместимость.
А потом выпустить D3D11.
Который ее восстанавливает!
(частично)
Simon Kozlov:
А потом запустить так, что это не поможет.
Ну я в них верю больше, конечно.
C++ и js!
И, к сожалению, абстракцию над нечеловечески тонкими API.
Arseny Kapoulkine:
Ммм?
Simon Kozlov:
Ну, абстракцию над этим Metal, Mantle, DX12, whatever.
На C++
А скриптить - на js.
Кросс-платформенная конфигурация нового времени.
Arseny Kapoulkine:
Вот у Mantle и DX12 язык шейдеров примерно одинаковый.
В этот Metal что, опять кросскомпилить?
Simon Kozlov:
Ну а куда деваться.
Sergey Gonchar:
а разве обычно транслируют язык?
все же вроде сначала компилят в vector assembly.
Arseny Kapoulkine:
HLSL-GLSL - либо трансляция, либо два комплекта шейдеров, либо пачка макросов.
Совершенно необязательно.
Если смотреть на количество игр в которых трансляция AST to AST то их больше.
Т.к. Unity...
Собственно вроде Epic-овский кросс компилятор тоже AST to AST.
А все потому что HLSL компилятор closed source.
Sergey Gonchar:
ща еще на Google IO в июне объявят еще один графический API и вообще красота будет )
Simon Kozlov:
Кстати да.
Arseny Kapoulkine:
На следующем #SteamDays потом еще.
Или как его там зовут.
Чтобы был полный комплект уже.
Simon Kozlov:
Им рано, наверное.
Boris Batkin:
очень, очень хоорошо. по марксу.
Sergey Gonchar:
Boris Batkin:
интересно, какая версия OpenGL будет в Yosemite.
т-е если станут поддерживать атомики и compute shaders - можно будет многое простить.
Arseny Kapoulkine:
  • 4.1.
Т.е. я специально поставил Yosemite потому что надеялся на другой ответ.
А, ну и OpenCL 1.2.
Заполнение атласа DXT через glCompressedTexSubImage3D стало в 10 раз медленнее чем было в 10.9,
у меня по крайней мере.
Короче достойный апдейт.
Пойду учиться откатывать.
Boris Batkin:
зато металл.
может к релизу допилят?
только 3Д? 2Д нормально? вообще конечно надо кажется PBO.
а MAP интересно можно?
Arseny Kapoulkine:
Копия через PBO работает быстро, спасибо за наводку.
Поправочка: не совсем DXT.
DXT1 работает как и раньше.
А вот BC5 (RGTC) теперь жутко медленно аплоадится.
Причем аплоадится-то корректно.
Т.е. результат кошерный.
Но ооочень медленно, 2 секунды на 160 мегабайт.
Сейчас DXT5 проверю.
DXT5 тоже медленно.
Может зависит не от формата а от размера скажем суммарного...
Ненавижу.
BC1, BC4 быстро, RGBA быстро (медленнее чем DXT пропорционально размеру, т.е. тупо ограничено bandwidth)
BC2, BC3, BC5 медленно.
Мораль: новым чудесным драйверам слегка сносит крышу на аплоаде 16 bytes/block сжатых форматов.
Подозреваю что массивы текстур тут не при чем, и такое же будет в 2D - проверю...
Фиг там, в 2D текстуры все заливается быстро, видимо проблема только в массивах текстур.
Boris Batkin:
завсегда. у меня такое ощущение - что только оно и работает везде.
потому что все так показывают видео.
зафайль баг, ок?
Arseny Kapoulkine:
Даже повторилось в примере Apple.
Сейчас зафайлю.
Boris Batkin:
спасибы.
а я думаю надо переписывать на PBO.
вариантов нет.
в длинной перспективе.
Arseny Kapoulkine:
Я локально поменял, да. В теории PBO наверное веселее т.к. тайлинг как бы явно делается на стороне GPU...
Arseny Kapoulkine:
(на практике наверняка есть драйвера или конфигурации при которых копия из PBO идет через системную память...)
Denis Mentey:
Alexey Baskakov:
omg omg! т.е. objective-C можно пропустить мне теперь - сразу за swift?
Denis Mentey:
угу.
там прямо репл красивый.
Vadim Shcherbakov:
с петоном сравнивать это сильно.
Denis Mentey:
не у петона то и проебать можно!
Simon Kozlov:
Вот пишут про Swift - http://levin-matveev.livejournal.com/86543.html
Viktar Hancharenka:
"Swift — это Objective C с нормальным синтаксисом", — дальше можно не читать. Впрочем, по таким вот отзывам становится ясно, зачем его создали именно таким: чтобы новое поколение разработчиков не пугалось у очень "альтернативного" синтаксиса.
"Swift остаётся таким же медленным языком программирования, как и Objective C, не замена C++, не конкурент Rust", — ещё одно спорное утверждение. Objective-C на то и С, что в любом месте можно спуститься до plain C и писать так, чтобы было БЫСТРО. На С++ тоже ведь можно не париться и лепить виртуальные методы налево и направо, или можно извращаться с шаблонами. А вот что делать на Swift, если нужна производительность, пока не ясно. Нужно разбираться.
Simon Kozlov:
Дальше можно не читать - это в хорошем смысле или плохом?
Viktar Hancharenka:
Увы, но в плохом.
Simon Kozlov:
Фигачь тогда свое видение.
Viktar Hancharenka:
Тут надо бы пояснить: лично меня больше всего задела часть про "Objective-C с нормальным синтаксисом". Такое обычно пишут люди, не до конца разобравшиеся в самом Objective-C. Хотя, опять же, может это я слишком много на нём писал (иногда с трудом приходится вспоминать конструкции С++, если вдруг нужно). Так что это чисто субъективное мнение.
Про Swift же пока ничего однозначного сказать не могу. Очень радует REPL, в т.ч. и графический. Скорее всего, на Swift будут переводить весь UI. С возможностью создавать этот UI... эээ... интерактивно. Я не знаком плотно с C#, поэтому единственное, что приходит в голову с похожей функциональностью — это Smalltalk под Squeak.
Всякие модные фишечки вроде замыканий, женериков и функциональщины как-то не приводят в дикий восторг. Но аппетит приходит во время еды — нужно пробовать.
Беспокойство вызывает то, что "memory is managed automatically". Т.е. если это ARC, то ok, а если GC, то когда-нибудь с ним придётся бодаться.
Simon Kozlov:
Вроде пишут, что ARC.
Viktar Hancharenka:
Полистал книжечку. Действительно, ARC. Ура-ура!
Arseny Kapoulkine:
Места, похожие на F#, похожи на F# не случайно:
https://twitter.com/dsyme/status/473573464981659648