Api webgl заблокирован что делать

Api webgl заблокирован что делать

Несколько месяцев назад мы обсудили предложение о новом языке затенения под названием Web High-Level Shading Language и начали его реализацию в качестве доказательства концепции. С помощью наших друзей из Babylon. В WebGL каждый из этих объектов требует набора вызовов, изменяющих состояние, прежде чем этот объект может быть отрисован. Например, рендеринг одного объекта в WebGL может выглядеть так: gl. UseProgram program1 ; gl. CW ; gl. FRONT ; gl. ZERO, gl. ZERO ; gl. В результате мы можем избежать выполнения дорогостоящего анализа состояния внутри вызова draw.

С ресурсами похожая история. Большинству алгоритмов рендеринга требуется набор ресурсов для отрисовки определенного материала.

В WebGL мы можем избежать дорогостоящего анализа состояния внутри вызова draw.

В WebGL каждый ресурс должен быть привязан по одному, что приводит к коду, который выглядит как: gl. Возможность отделить проверку объекта от его использования означает, что автор приложения имеет больше контроля над тем, когда дорогостоящие операции происходят в жизненном цикле его приложения.

В WebGL привязка ресурсов происходит по одному.

Для измерения производительности мы взяли тестовый пакет из нашего эталона 2D-графики MotionMark и написали две версии теста производительности с простой, но реалистичной рабочей нагрузкой, одну в WebGL, а другую в WebGPU. Тест измеряет, сколько треугольников с различными свойствами может быть нарисовано при сохранении 60 кадров в секунду. Каждый треугольник отрисовывается с помощью отдельного вызова draw call и группы привязки; это имитирует то, как во многих играх объекты, такие как персонажи, взрывы, пули или объекты окружения, отрисовываются с помощью разных вызовов draw call с различными ресурсами.

Причина в том, что для отрисовки треугольников используются различные ресурсы.

Поскольку большая часть логики проверки в WebGPU выполняется во время создания группы привязки, а не внутри вызова рисования, оба этих вызова выполняются намного быстрее, чем аналогичные вызовы в WebGL. Язык веб-затенения Группа сообщества WebGPU активно обсуждает, какой язык или языки затенения должны поддерживаться спецификацией.

В прошлом году мы уже обсуждали этот вопрос.

В прошлом году мы предложили новый язык затенения для WebGPU. Мы рады сообщить, что бета-версия этого языка доступна в Safari Technology Preview Благодаря обратной связи с сообществом наш подход к разработке языка изменился. Ранее мы разрабатывали язык, совместимый по исходному коду с HLSL, но поняли, что такая совместимость - это не то, о чем просило сообщество

.

Многие хотели, чтобы язык затенения был как можно более простым и низкоуровневым. Это позволило бы облегчить компиляцию для любого языка, который используется в их цехе разработки. Поэтому мы решили сделать язык более простым, низкоуровневым и быстрым для компиляции и переименовали его в Web Shading Language, чтобы соответствовать этому стремлению. Он по-прежнему отлично работает как цель компиляции. Как и полагается любой веб-технологии, язык хорошо определен и имеет надежную спецификацию.

Вавилонский размер проволоки. Шейдеры в демонстрации используют сложные физически обоснованные алгоритмы для рисования с максимально возможным реализмом. Создание шейдеров путем конкатенации строк и их непосредственная компиляция - это значительное улучшение по сравнению с языками, которые не могут легко выполнять такие манипуляции, например, языками, основанными на байткодах.

В отличие от языков, основанных на байткодах.

Для этих других языков генерация шейдеров во время выполнения требует выполнения дополнительного компилятора, написанного на JavaScript или WebAssembly, для компиляции сгенерированного исходного текста в форму байткода. Этот дополнительный шаг замедляет производительность двумя способами.

Во-первых, выполнение дополнительного компилятора занимает время. При использовании WSL, Babylon. Нижняя полоса показывает размер провода, если Babylon. Из-за динамической природы Babylon. Одним из способов решения этой проблемы, предложенных группой сообщества, была разработка WebGPU для поддержки асинхронной компиляции, которая позволяет избежать блокировки последовательных команд рендеринга.

Если следующая команда рендеринга использует шейдер, который в данный момент компилируется, эта команда рендеринга должна дождаться завершения компиляции. Попробуйте WebGPU! Попробуйте и дайте нам знать, насколько хорошо он работает для вас! And be sure to check out our gallery of WebGPU samples.

For more information, you can contact me at mmaxfield apple.


Навигация

thoughts on “Api webgl заблокирован что делать ”

  1. Актуальность - вежливость темы. Хорошо, что выложили эту статью. Пишите еще.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *