Comments 5
Интересный очень проект, скажите, у Вас рендеринг в канвас идет в отдельных воркерах или в основных потоках окон? Используется ли BroadcastChannel для общения между окнами?
Рабочая область - просто SVG сейчас, пока не знаю, буду ли переделывать на канвас. Все вычисления в одном потоке, всё приложение свой чистый код, так его легче сертифицировать, но писать приходится буквально всё, один поток заставляет думать и оптимизировать. Обязательно реализую многопоточность, уже есть планы где и как применить. Пока все силы в логику движка направлены. Концепт интерфейса так же собственный, интересно получилось - все окна выравниваются в зависимости от очередности открытия, пользователь может как угодно разместить их под себя
Общение между окнами у меня пока только в виде концепта, так, как привёл пример кода и видео. Моё приложение - редактор, в нём не требуется многооконность, в нём мне просто удобно отрабатывать идеи. Параллельно напарник ведёт разработку диспетчерского приложения (тоже в одно лицо), в нём будем пробовать применить всё, что придумаем для многооконности. Как раз сейчас собираюсь за посылкой с Алика с видеокартой на 4 выхода, приступим к экспериментам :)
При работе с SVG Мозила использует графические ускорители, для интерактивных вещей подходит лучше. Со статичным SVG все браузеры работают одинаково.
По моему опыту SVG выигрывает при небольшом числе фигур, выше 1000 уже сильно тормозит при отрисовке по сравнению с OffscreenCanvas.
Попробовал перенести SVG на Canvas, качество изображения сильно теряется, всё становится размытым. Может, есть какие-то хитрости поднять качество рендера, надо изучать. Скорость скроллинга очень высокая, да, растровое изображение здесь имеет неоспоримые преимущества. Но работать намного сложнее с таким представлением данных, SVG сильно выигрывает в простоте манипуляций с элементами схемы. На видео у меня схема с 25000 элементов, каждый из которых состоит из нескольких графических примитивов, на слабом проце вполне работоспособно.
Поставил видеокарту Nvidia 750 позволяющую объединить до 4 мониторов в один экран, производительность Мозилы очень сильно упала уже на 2-х мониторах 4К при отображении SVG, в Хроме практически не изменилась.
Рендеринг канваса зависит от установленного масштаба рабочего стола в системе. При масштабе 100% растровое изображение на канвасе становится таким же по качеству, как исходный SVG.
Концепт бюджетной видеостены неограниченного размера для web-приложения