как включить webgl на телефоне

Как включить WebGL в Google Chrome

В сегодняшней инструкции мы поговорим о том, как включить WebGL в браузере Гугл Хром. Если вы ранее не сталкивались с термином «WebGL», то для начала прочтите вводный пункт о том, что это такое.

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

Что это такое

Каждый опытный пользователь в интернете знает, что существует множество языков программирования. Так вот, WebGL – это хранилище разнопланового программного обеспечения, которое в значительной мере расширяет возможности различных языков программирования в области администрирования.

Поэтому, в определенных кругах, вышеупомянутая библиотека пользуется большим спросом.

Как включить

Если вы увлекаетесь веб-программированием, то вам обязательно поможет хранилище WebGL. Далее в инструкции вы узнаете о том, как включить библиотеку на персональном компьютере, а так же, можно ли воспользоваться хранилищем на мобильном устройстве.

На компьютере

Для активации сборника WebGL на стационарном устройстве понадобится проделать такой набор действий:

На телефоне

как включить webgl на телефоне

В заключение сегодняшней инструкции можно сказать, что дополнение WebGL пригодится далеко не всем пользователям. Настоящую пользу хранилища смогут оценить только те люди, которые занимаются администрированием и определенными видами программирования. Тем не менее, сегодня вы узнали о том, как активировать WebGL для Google Chrome на стационарном компьютере.

Источник

Портирование Android-приложения на WebGL

Идея портирования Android-приложения на WebGL

Сейчас WebGL поддерживается практически любым устройством и работает достаточно стабильно и быстро даже на мобильных устройствах, поэтому было весьма интересно попробовать реализовать что-нибудь на этой технологии. У нас уже имеется большой опыт работы с OpenGL ES 2.0 в Android — создали довольно много различных трехмерных живых обоев.

как включить webgl на телефоне

Эти приложения мы создавали без использования готовых сторонних движков (например, Unity) или высокоуровневых фреймворков для работы с OpenGL (таких как libGDX). Ввиду того что код не обременен ограничениями сторонних фреймворков, приложения получаются очень маленькими, и быстрыми, а также мы имеем возможность полностью оптимизировать рендеринг под потребности каждого приложения.

WebGL основан на OpenGL ES 2.0, а поэтому процесс портирования обоев достаточно прост и прямолинеен.

Фреймворк рендеринга

Также как и в оригинальном Java коде, реализованы базовые классы BaseRenderer и BaseShader. Было решено использовать классы ECMAScript 2015 так как эта нотация упрощает читаемость кода, а единственный браузер, которыq не поддерживает JS классы это IE11. BaseRenderer содержит код для создания WebGL контекста, инициализации, отслеживания изменения размера окна, и т. П. Также в нем есть пустые “заглушки” для рендеринга сцены. BaseShader содержит код для компиляции и использования шейдеров. Собсвенно сам рендеринг сцены и загрузка данных для нее реализованы в BitcoinRenderer.

Загрузка готовых данных

Большинство WebGL движков и демок загружают данные из файлов в JSON, OBJ, или других форматах. С одной стороны, это удобно — достаточно просто экспортировать модели из Blender или 3ds Max и использовать их в сцене. Однако с другой стороны, этот подход требует дополнительной обработки исходных данных на клиенте для создания буферов с данными, готовыми для использования видеокартой. Также данные в этих форматах часто содержат много избыточной информации, которая хотя и не используется но все равно занимает большую часть исходного файла, что существенно увеличивает объем передаваемых данных. Вместе эти два недостатка приводят к тому что зачастую даже простенькие WebGL демки грузятся и запускаются довольно долго.

В Java версии нашего фреймворка мы используем двоичные данные, готовые к непосредственной загрузке в OpenGL буферы, и в JS версии мы применяем тот же подход. XMLHttpRequest Level 2 поддерживает работу с двоичными данными в JavaScript. Для упрощения работы с XHR2 создан простой класс BinaryDataLoader.

Класс FullModel обеспечивает работу с мешами. Метод load() загружает два буфера для модели — с индексами и данными (координаты вертексов, UV-координаты и т. п.). Эти буферы содержат двоичные данные, готовые для использования видеокартой. Также класс имеет метод bindBuffers(), который собственно привязывает буферы и его надо вызывать непосредственно перед glDrawElements().

Сжатые текстуры в формате ETC1

Для экономии видеопамяти в живых обоях мы используем различные сжатые текстуры. Наш Java фреймворк поддерживает форматы ETC1, ETC2, PVRTC и ASTC и использует наиболее подходящие текстуры исходя из возможностей конкретного устройства. В WebGL реализованы только ETC1 и несжатые RGB текстуры.

В OpenGL ES 2.0 ETC1 является обязательной частью стандарта и поддерживается на всех без исключения устройствах. Однако, в WebGL поддержка ETC1 сжатия не обязательна, и необходимо проверять наличие расширения WEBGL_compressed_texture_etc1. Все десктопные браузеры кроме IE11 и Edge поддерживают это расширение. Для браузеров Microsoft приходится использовать несжатые текстуры.

Проверить какие форматы текстур поддерживаются браузером можно с помощью этой удобной странички.

Благодаря использованию ETC1 текстур мы используем намного меньше памяти и также удалось ускорить процесс загрузки текстур. Ведь несжатые текстуры перед тем как попасть в видеопамять, должны быть сперва декодированы из исходного формата (PNG, JPEG, WebP, GIF, и т. п.) в битмэп (RGBA или RGB, с альфа-каналои или без него) и только потом переданы драйверу для загрузки в видеокарту. ETC1 текстуры не требуют никакой предварительной обработки — они уже готовы для непосредственного использования видеокартой и поэтому загружаются намного быстрее.

Если говорить об экономии памяти, то к примеру несжатая RGB текстура размером 512х512 пикселей занимает 768 кб, в то время как такая же ETC1 текстура занимает всего 128 кб. Однако, ETC1 не идеален и вызывает некоторые артефакты сжатия. Эти артефакты почти не заметны на диффузных картах и картах освещения, однако весьма заметны на картах нормалей (искажения в виде блоков 4х4 пикселя) и картах отражения (неточная цветопередача). Так что мы используем как сжатые, так и несжатые текстуры в зависимости от требований к качеству.

В Android загрузка ETC1 текстур очень проста — есть стандартная утилита ETC1Util, которая выполняет всю работу по загрузке текстуры из файла в формате PKM. Ввиду того, что WebGL не предоставляет никаких средств для загрузки сжатых текстур из известных форматов, пришлось создать свой загрузчик ETC1 текстур из файлов в формате PKM. PKM это весьма простой формат, он состоит из заголовка в 16 байт, за которым следуют двоичные данные, готовые для загрузки в видеокарту. Больше информации о заголовке можно найти здесь и здесь. При написании кода получения размеров тектуры столкнулись с определенным ограничением JavaScript. Эти значения хранятся в виде 16-битных big-endian целых чисел. Однако использовать Int16Array для получения этих чисел не получится, так как JavaScript не предоставляет способа задавать порядок байтов буфера, и пришлось читать байты используя Uint8Array и вычислять 16-битные значения вручную из полученных пар младших и старших байт.

Шейдеры

В приложении используется всего два шейдера: один для поверхности стола, а другой для модели монет.

Шейдер для стола — это простая реализация lightmap-ов. Он использует две текстуры: одна карта цвета (diffuse) для задания текстуры дерева, а вторая — карта освещенности (lightmap). Результат работы шейдера — это просто перемножение цветов из этих текстур.

Шейдер монет более сложный, он содержит в себе следующие функции:

как включить webgl на телефоне

По сравнению с другими техниками отражения, сферическая карта имеет следующие преимущества:

+ Простой код шейдера и высокая производительность
+ Использование только одной текстуры
+ Текстура с отражением простая в обработке в графических редакторах, например в Photoshop
— Плохо работает на ровных поверхностях
— Часть текстурного пространства расходуется впустую (углы не используются)

Наибольшее преимущество сферической карты — это простота реализации. Когда у вас уже есть нормаль рассчитанная в пространстве экрана, вам достаточно взять ее (x;y) компоненту для чтения текстуры. Выдержка из кода шейдера:

Отсюда же следует и наибольший недостаток данной техники: так как в расчетах участвует только экранная нормаль, то большие ровные полигоны будут заполнены одним и тем же цветом (так как будут иметь одинаковую нормаль по всей поверхности). А модель монеты как раз и состоит в основном из больших плоских поверхностей. Для борьбы с этим недостатком мы добавили карту нормалей и сделали ее как можно более разнообразной: добавили шума, надписей, цифр и т.д. Этот прием лишает модель ровных поверхностей и сферические отражения работают идеально.

При освещении монет был использован дополнительный трюк. Для затенения монет использована карта освещения (lightmap). Однако, простое умножение цвета на карту освещения дает хоть и более-менее корректный, но скучный результат: затемненные места становятся просто темнее. В дополнение к этому, в темных местах мы умножаем цвет на самого себя, используя функцию pow(). Степень тем выше, чем темнее карта освещенности. Это воспроизводит эффект того как свет попадает в “ловушку” в замкнутом пространстве и усиливает свой цвет ввиду многократного отражения от металлических поверхностей. В результате получаем более реалистичную металлическую поверхность:

Источник

Включение поддержки WebGL для Android WebView

Мне нужно отобразить графику WebGL в моем webview. Есть ли способ изменить Android WebView для включения WebGL. Если да, то как?

5 ответов

WebGL не поддерживался в WebViews до Android Lollipop. В KitKat Android переключился на Chromium в качестве собственной реализации WebView, но он заблокирован на Chromium 33 без WebGL. В Lollipop WebView обновляется через Play Store и теперь поддерживает WebGL. (источник: https://developer.chrome.com/multidevice/webview/overview)

попытка расширить WebView для его поддержки практически невозможна.

WebGL не поддерживается в текущем Android webview, однако вы можете использовать пешеходный переход-проекта это веб-среда выполнения, которая поддерживает WebGL и упаковывает ее в приложение для android вместе с вашим приложением WebGL. Последний Intel XDK поддерживает создание приложений для Android с помощью crosswalk runtime.

хотя невозможно включить WebGL для Android WebView, есть возможность иметь собственные приложения, использующие WebGL для рендеринга с помощью CocoonJS от Ludei (www.ludei.com). У них даже есть демо-приложение в Google Play, чтобы показать некоторые известные демонстрации WebGL, работающие даже на устройствах Android 2.3.

У меня есть chrome версии 28.0 на OS 4.2.2 WebGl не включен по умолчанию, вам нужно включить его, набрав chrome: / / flags/ in seach bar так же, как shwn в pic ниже

как включить webgl на телефоне

как включить webgl на телефоне

как включить webgl на телефоне

вы можете просматривать WebGL на новых устройствах Android с помощью приложения Chrome Beta или Firefox beta app. Единственное устройство, которое я тестировал, и это работало на планшете Asus Nexus 7 под управлением Android 4.2.2.

мой Motorola Razr под управлением Android 4.1.2 не поддерживает WebGL с Google Chrome Beta.

Не уверен, что это напрямую помогает.. но к твоему сведению.

Источник

Включить WebGL в Android WebView

Как включить WebGL в виджет WebView для эмулятора Android 5.1.1? Я проверил статус WebGL с помощью Webglreport, и результатом был» Этот браузер поддерживает WebGL, но он отключен или недоступен. Иногда это результат старые драйверы видео отклоняются браузером. По возможности попробуйте обновить видеодрайверы.

UPDATE: команда WebView говорит, что WebView не позволяет переопределять черный список gpu, теперь или в будущих планах, из-за рисков безопасности/стабильности: подробнее.

Chrome для Android 47 и Chromium/WebView 47 используют разные черные списки gpu и/или способы обхода ошибок. То, что разрешено успешно выполнять в одном, не может быть разрешено успешно выполнять в другом, даже на том же оборудовании. Оба браузера планируют выпустить обновления в Play Store каждые 6 недель.

Например: у меня есть планшет Nexus 10, Mali T-604 (Lollipop 5.1.1. Кроме того, Android Studio 1.5.1 с SDK 6.0 Marshmallow API 23 или 22).

    chrome://flags, # ignore-gpu-blacklist НЕ активирован и все reset по умолчанию
    chrome://gpu, «статус графической функции-WebGL: аппаратное ускорение» и reset стратегия уведомления 0x0000 неожиданно (см. последний связанный с переходом)
    webglreport, «Этот браузер поддерживает WebGL 1»
    get.webgl.org, cube spins

    webglreport: «Этот браузер поддерживает WebGL 1, но он отключен или недоступен. Иногда это связано с тем, что старые видеодрайверы отклоняются браузером. По возможности попробуйте обновить видеодрайверы».
    get.webgl.org: «Хм. Хотя ваш браузер, похоже, поддерживает WebGL, он отключен или недоступен. Если возможно, убедитесь, что у вас установлены последние версии драйверов для вашей видеокарты».

хром черный список (ссылка из hronos WebGL blacklist wiki): «Растрирование и холст GPU занесены в черный список на Nexus 10».

Список ошибок хрома (ссылка из hronos WebGL blacklist wiki): «Драйвер Mali-Txxx не гарантирует упорядочивание флеша» и «Драйвер Mali-Txxx зависает при чтении из текущего отображаемого буфера».

В планшете Pixel C имеется Nvidia Tegra X1, который не отображается в списках хрома, и я подтвердил, что он поддерживает WebGL в WebView.. p >

Источник

Как включить WebGL в Яндекс Браузере

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

Что это такое

WebGL – разработанная в начале десятых библиотека драйверов, позволяющая напрямую из браузера обращаться к мощностям графических адаптеров. В расшифровке название API переводится как «графическая веб-библиотека». WebGL позволяет отказаться от дополнительных утилит, вроде устаревшего Adobe Flash, для воспроизведения 3D-графики. Разработчики, используя WebGL, видят для себя больший простор действий, а пользователи получают более качественный контент, иногда интерактивный.

Как включить

На компьютере

Итак, чтобы воспроизводить разработанные с использованием WebGL приложения в Яндекс браузере, нужно разрешить использование этой библиотеки. Здесь следует отметить, что осуществить задуманное получится не на любом компьютере или ноутбуке. Для корректной работы дополнения потребуется устройство с графической картой, поддерживающей DirectX 11 и новее, а также актуальные версии драйверов для неё.

Убедившись в актуальности аппаратной платформы и программного обеспечения для неё, можно переходить к следующему этапу – включению функции аппаратного ускорения. Для этого потребуется выполнить несколько довольно простых шагов.

Если ей соответствует значение «Software only. Hardware acceleration disabled», то функция отключена. Чтобы её активировать, необходимо перейти к следующему шагу.

На телефоне

На телефоне подобная функция также присутствует, но только если речь идёт про Android-устройство. Девайсы на iOS поддерживают WebGL только в связке с браузером Safari. Связано это с политикой Apple, которая подразумевает строгие условия для доступа к аппаратным средствам iPhone. Что до Android, то алгоритм действий здесь сравним с таковым на компьютере.

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

Источник

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

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