Еще конечно можно было-бы при помощи тех-же шейдеров рассчет позиций переписать. Выиграли бы сразу на двух вещах: - распараллеливается не только отрисовка, но и рассчет. - нет обмена данными на каждый кадр между CPU и GPU. Вопрос только в том, а есть ли в WebGL компьютерные шейдеры...
Такое вполне возможно, и это действительно должно ускорить отрисовку за счет устранения необходимости передавать данные на видеокарту. Все что понадобиться - передать начальные координаты, начальные скорости и время. Координаты и скорости передаются через атрибуты (данные, которые уникальны для каждого экземпляра шейдера). А время нужно будет передавать не через атрибуты а через интерфейс uniform. Uniform - способ передачи данных, которые одинаковы для каждого шейдера.
@@xenonist4502 ну если вдруг нужно, это просто ресайз для типизированного массива. Примерно так: const resizeArray = (arr, len) => { if (arr.length === len) return arr const resizedArrayBuffer = new ArrayBuffer(len), resizedView = new Float32Array(resizedArrayBuffer) for (let i = 0; i < arr.length; i++) { resizedView[i] = arr[i]; } return resizedView; }
Что-то я не догнал. пример на JS в этом видео работает в раз 10-15 медленнее. Почему в 1,5 раза? Может докладчик ошибся. В 1,5 раза в сравнении с WebGL, а не с JS?
А представляете, если бы мы жили в мире, где для так называемых программистов написать простенький шейдер или функцию на СИ не являлось бы "самым низким уровнем"
Доклад для домохозяек... Неужели эти люди в зале считают себя программистами, если им нужно разжёвывать что такое выравнивание, смещение во линейном буфере и пр... Думаю, что ASM/C/C++/GLSL/HLSL/SPIR-V программисты с каждым годом будут стоить всё дороже и дороже :-)
Ну, не думаю. Это ведь доклад не для матёрых сишников, а фронтэндеров, которых до выравнивания не пускают :) Я запариваюсь с тем, чтобы компилятор мой цикл развернул в автовекторизацию, но узнать как там у них мне было интересно. А священная -война- срач что [language] недостоин звание true - это дерьмо. Если в своей нише тот же php выполняет свою задачу - он хорош, тупо требовать от него выравнивание с ручной работой с памятью. P. S. Ненавижу PHP ;)
Это доклад для фронтендеров. Что за прикол у таких как ты постоянно в комментах такие штуки писать? (для конкретики:"ХА, доклад для домохозяек! И вы называете себя программистами! ХА! ") Вам не хватает внимания\признания\или еще чего ? Мне любопытно что ты ответишь, что бы я раз и навсегда перестал себя спрашивать: "Если ты занимаешься другими вещами, то зачем ты заходишь сюда и выебываешся?)". Развейте свою иллюзию, что вы занимаетесь супер сложными вещами, недосягаемыми другими, смертными, ведь при желании, любой из сидящих в зале может научиться всему, чему пожелает. В этом и есть смысл таких докладов - развитие. И складывается впечатление, что вам действительно не хватает чего-то, раз вы лезете сюда. *вы, в моем сообщении - вся тусовка таких умников как ты.
@@RafaelShepard , ой...да брось, причём тут выёбываться, детский сад какой-то, мы ж не политики, что бы заниматься пустозвонством... Я сюда зашёл только потому, что мне по работе нужно было накидать один модуль для видео стрима через сеть, в котором я думал сделать gui (hud) на чистом WebGL (возможно через imgui), а сам стрим на кодеке h.264/hevc с ручным кодированием фреймов, по этому мне нужно было разобраться, что сейчас на острие копья технологий для web-а, краем уха услышал, что сейчас модно webassembly, стал копать информацию и к сожалению она оказалась на столько разрозненна и для откровенных нубов, что я долго по крупицам собирал то, что хотел узнать, т.к. в каждой статье или видеоролике автор всё время городил тонну какой-то общеизвестной чуши, которую по идее должен знать любой программист по дефолту, то есть тонны галимой "информации" для откровенных домохозяек и минимум конкретики по теме, по этому это и вызвало моё негодование ))) Да забей, я уже давно этот вопрос закрыл, тупо собираешь всё через emscripten и траблов ноль, кстати это можно было сказать одной фразой и ролик бы длился 2 секунды )) P.S.: забей на всё, лучше мой старый ролик с процедурной геометрией посмотри :-) ua-cam.com/video/TWAc9mbNHGc/v-deo.html
@@-THE-MASTER- А зачем делать gui на чистом WebGL? Разве не оптимальнее использовать для интерфейса html, который вроде как должен без обёрток рендерится браузером?
И слушать интересно, и человек приятный. Это следствие того, что это настоящий специалист и нет ему резона выпендриваться.
Спасибо, просто интересно было слушать.
все видео: 🙏
Еще конечно можно было-бы при помощи тех-же шейдеров рассчет позиций переписать.
Выиграли бы сразу на двух вещах:
- распараллеливается не только отрисовка, но и рассчет.
- нет обмена данными на каждый кадр между CPU и GPU.
Вопрос только в том, а есть ли в WebGL компьютерные шейдеры...
Такое вполне возможно, и это действительно должно ускорить отрисовку за счет устранения необходимости передавать данные на видеокарту. Все что понадобиться - передать начальные координаты, начальные скорости и время. Координаты и скорости передаются через атрибуты (данные, которые уникальны для каждого экземпляра шейдера). А время нужно будет передавать не через атрибуты а через интерфейс uniform. Uniform - способ передачи данных, которые одинаковы для каждого шейдера.
"На regexе" - если бы это было "на regexе", то кода было бы в 10 раз меньше. Да, вообще,в 2 строчки можно было бы всё написать, думаю.
Подскажите, пожалуйста, что ещё за resizeArray в коде? На 9 строчке в файле физики
Не узнали что это?
@@bitbarracuda не, я даже уже не помню что за видео :):
@@xenonist4502 ну если вдруг нужно, это просто ресайз для типизированного массива. Примерно так:
const resizeArray = (arr, len) => {
if (arr.length === len) return arr
const resizedArrayBuffer = new ArrayBuffer(len),
resizedView = new Float32Array(resizedArrayBuffer)
for (let i = 0; i < arr.length; i++) {
resizedView[i] = arr[i];
}
return resizedView;
}
Что-то я не догнал. пример на JS в этом видео работает в раз 10-15 медленнее. Почему в 1,5 раза?
Может докладчик ошибся. В 1,5 раза в сравнении с WebGL, а не с JS?
Вот зачем нужен webassembly если он всеголишь в 1.5 раза быстрее и только лишь потому что работает на числах с меньшей точностью?! Не понятно.
и правда, какие-то жалкие 50%, кому они нужны.
@@ammonjerro396 и правда, какие то жалкие 32 бита. Кому они нужны.
@@mgevlich а чего вдруг 64-битные будут складываться медленее? И там и там по итогу вроде как одна машинная операция.
@@angelicoctahedron3646 в вебасембли завезли 64 разрядную точность?
А зачем нам большая точность, если от этого пикселей на экране не станет больше?
А представляете, если бы мы жили в мире, где для так называемых программистов написать простенький шейдер или функцию на СИ не являлось бы "самым низким уровнем"
Доклад для домохозяек... Неужели эти люди в зале считают себя программистами, если им нужно разжёвывать что такое выравнивание, смещение во линейном буфере и пр... Думаю, что ASM/C/C++/GLSL/HLSL/SPIR-V программисты с каждым годом будут стоить всё дороже и дороже :-)
Ну, не думаю.
Это ведь доклад не для матёрых сишников, а фронтэндеров, которых до выравнивания не пускают :)
Я запариваюсь с тем, чтобы компилятор мой цикл развернул в автовекторизацию, но узнать как там у них мне было интересно.
А священная -война- срач что [language] недостоин звание true - это дерьмо.
Если в своей нише тот же php выполняет свою задачу - он хорош, тупо требовать от него выравнивание с ручной работой с памятью.
P. S. Ненавижу PHP ;)
Это доклад для фронтендеров. Что за прикол у таких как ты постоянно в комментах такие штуки писать? (для конкретики:"ХА, доклад для домохозяек! И вы называете себя программистами! ХА! ") Вам не хватает внимания\признания\или еще чего ? Мне любопытно что ты ответишь, что бы я раз и навсегда перестал себя спрашивать: "Если ты занимаешься другими вещами, то зачем ты заходишь сюда и выебываешся?)". Развейте свою иллюзию, что вы занимаетесь супер сложными вещами, недосягаемыми другими, смертными, ведь при желании, любой из сидящих в зале может научиться всему, чему пожелает. В этом и есть смысл таких докладов - развитие. И складывается впечатление, что вам действительно не хватает чего-то, раз вы лезете сюда. *вы, в моем сообщении - вся тусовка таких умников как ты.
@@RafaelShepard , ой...да брось, причём тут выёбываться, детский сад какой-то, мы ж не политики, что бы заниматься пустозвонством... Я сюда зашёл только потому, что мне по работе нужно было накидать один модуль для видео стрима через сеть, в котором я думал сделать gui (hud) на чистом WebGL (возможно через imgui), а сам стрим на кодеке h.264/hevc с ручным кодированием фреймов, по этому мне нужно было разобраться, что сейчас на острие копья технологий для web-а, краем уха услышал, что сейчас модно webassembly, стал копать информацию и к сожалению она оказалась на столько разрозненна и для откровенных нубов, что я долго по крупицам собирал то, что хотел узнать, т.к. в каждой статье или видеоролике автор всё время городил тонну какой-то общеизвестной чуши, которую по идее должен знать любой программист по дефолту, то есть тонны галимой "информации" для откровенных домохозяек и минимум конкретики по теме, по этому это и вызвало моё негодование ))) Да забей, я уже давно этот вопрос закрыл, тупо собираешь всё через emscripten и траблов ноль, кстати это можно было сказать одной фразой и ролик бы длился 2 секунды )) P.S.: забей на всё, лучше мой старый ролик с процедурной геометрией посмотри :-) ua-cam.com/video/TWAc9mbNHGc/v-deo.html
Обычный напыщенный сноб, но это его личная половая драма. Докладчик же просто огонь, учитель от бога 8)
@@-THE-MASTER- А зачем делать gui на чистом WebGL? Разве не оптимальнее использовать для интерфейса html, который вроде как должен без обёрток рендерится браузером?
все видео: 🙏