Size: a a a

2021 April 07

AG

Alexey Gulev in GameDev for Web
кстати, сам автор базиса советует не многопоточность использовать, а запускать несколько инстансов тулы и в каждой энкодить по текстуре, быстрее чем многопоток выходит
источник

AG

Alexey Gulev in GameDev for Web
что касается pvrtc то там норм качество, если использовать 4 bpp
источник

AG

Alexey Gulev in GameDev for Web
Пит совсем недавно хвастался новым релизом https://twitter.com/thesolidpixel/status/1375449872359362567
источник

AG

Alexey Gulev in GameDev for Web
я свое мнение не навязываю, но поделюсь выводами, которые я сделал изучая компрессию и допустимые варианты для мобил

TLDR:
На оперативу
для мобил такой водопад ASTC(6x6 или 4x4 если уж совсем надо идеально)
——если не поддерживается——>
pvrtc4bbp для ios или etc2 для андроид
——если не поддерживается——>
RGBA, а что поделать

На размер на диске (скачки)
webplossy поверх rgba но можно и для pvrtc или etc1 (про etc2 не уверен) применить

——

самым лучшим вариантом является astс - это просто боженька компрессий. Мэтры которые даже снят компрессию пророчат ему то, что он станет убийцей всех форматов если придет на компы (с эпл m1 это уже начинается и надеюсь остальные подхватят, но посмотрим).

У него соотношение качество/размер очень классное + есть возможность играться с качеством меняя размер блока. https://android-developers.googleblog.com/2015/01/efficient-game-textures-with-hardware.html
6x6 подойдет почти всем при этом в памяти занимает меньше даже чем pvrtc4bbp.
Я приводил пример где
astc6x6 - 1.8Mb
pvrtc 4bbp - 2Mb
etc2 - 4Mb
Для приверед есть astc 4x4 - там к качеству не придраться совсем.

но из-за того, что покрытие не 100% приходится рассматривать pvrtc(4bbp) и etc2 (etc1 даже не рассматриваем т.к. без слез на качество не взглянуть, может где-то и подойдет но не для 2d игр)

pvrtc нужен чтобы иметь сжатые текстуры на старых ios девайсах. т.к. аппаратная поддержка astc появилась только с A7 (iphone6) а iphone5s хоть уже и на метале, но все щее не поддерживает astc

etc2 для андроидов, что не поддерживают astc, статистика тут https://developer.android.com/guide/app-bundle/asset-delivery/texture-compression
etc2 поддерживается всеми устройствами с opengl3, поэтому если у вас есть такое ограничение - то поздравляю, etc2 ваш вариант. А вот если вы поддерживаете es2 то придется думать еще и про раритеты всякие.


В Defold мы взяли basis чтобы решить вопрос компрессий как с точки зрения энкодера (кросплатформенный pvrtc энкодер это тот еще головняк) так и  с вопроссом транскодинга в рантайме.
Сейчас у нас вот такие водопады для текстур: https://github.com/defold/defold/blob/dev/engine/graphics/src/graphics.cpp#L248-L290
Правки еще вносятся и форматы уточняются т.к. тема обширная, но пока все выглядит так. Сам подход гарантирует ,что будет отожрато минимум оперативки.

Но! на многих WEB проектах (дефолд кросплатформенный, поэтому все делается с учетом всех платформ),мы столкнулись с тем, что людям плевать на оперативку, а самым важным является размер билда на диске (сколько качать пользователю). И, как оказалось, наилучший вариант по размеру/качеству выдает webp lossy.
Его дефолд выпили в пользу базиса. Но, возможно, для таких вот проектов он будет впилен обратно отдельным модулем.
источник

AG

Alexey Gulev in GameDev for Web
после таких длинных рассказов говорят что-то вроде: ставьте лайки и подписывайтесь на мой канал и чат
источник

AG

Alexey Gulev in GameDev for Web
кстати, если бы я создал отдельный канал в телеграме со всяким вот таким вот, кто-то читал бы?
разлиные изыскания и истории из разработки и т п
источник

O

Ooup in GameDev for Web
Ищу человека для совместной разработки игрового проекта. Js
Подробности лс.
источник

MB

Mike Busyrev in GameDev for Web
отличный ответ. Я пришёл к тому же фоллбеку ASTC->PVRTC->ETC2-PNG
источник

MB

Mike Busyrev in GameDev for Web
Долбаный PVRTexToolCLI жрёт все ядра не спрашивая, однопоточного режима нет. а мои билд процессы параллелятся на другом уровне, на серваке 64 ядра, и этот пидарас (тут материться вообще можно) жрёт по 64 потока на каждый ассет, а у меня их десяток в параллель экспортится
источник

MB

Mike Busyrev in GameDev for Web
Я серьёзно подумываю скипнуть нахер pvrtc,, слишком уж жопно
источник

АД

Анна Дубовикова... in GameDev for Web
#вакансия #3D #Graphics_engineer #Москва #офис #fulltime


Graphics engineer
ЗП middle: 150к-200к
ЗП senior: 200к-300к

[Diagnocat] (https://diagnocat.com/) — стартап на стыке AI и медицины, делаем анализ стоматологических снимков и автоматическую диагностику. Наш продукт берёт разнообразные снимки (рентген, фотографии, оптические сканы, как 2D, так и 3D), проводит автоматизированный AI анализ и выдает врачу и пациенту рекомендации по диагнозу, лечению, а также переосмысленные на основе анализа визуализации входных снимков.
Мы уже на рынке, продаёмся во многих странах, имеем выручку, патенты, научные статьи и в данный момент получаем одобрение FDA для начала прямых продаж в США.
Мы ищем графического инженера, который будет создавать nextgen 2D и 3D визуализации и интерфейсы для более эффективной работы врачей с визуальными данными.

Требования

- Уверенное владение WebGL 1/2, Three.js, GLSL
- Знание линейной алгебры
- От 2 лет опыта работы с графикой
- git, linux, React, TypeScript

Задачи

Разрабатывать графический компонент приложений Diagnocat на WebGL1/2, Three.js. Неполный список того, с чем мы имеем дело: multiplanar reconstruction (MPR), 3D интерфейс для навигации по трехмерной томограмме головы, volumetric rendering.

Что мы предлагаем

- Не имеющий аналогов продукт, крутые задачи, быстрое развитие. На этом этапе вы можете оказать большое влияние на траекторию развития компании.
- ЗП 150-200k middle, 200-300k senior
- Возможность получить опцион
- Работа в современном офисе в Москве (м. Проспект Мира)
- Тёплая ламповая атмосфера компетентного стартапа на ранней стадии, где драйв, фан и бесценный опыт
- Красивые наклейки

Отклики присылайте сюда:
e.makarova@fantasyclinic.ru
jobs@diagnocat.ru
Или пишите в личку) @annike3
источник

MB

Mike Busyrev in GameDev for Web
Слушайте, а я правильно прочитал https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_pvrtc/ что WEBGL_compressed_texture_pvrtc работает только с PVRTC1 и не работает с PVRTC2? Тогда понятно почему compressedTexSubImage2D для него бесполезен
источник

Г

Георгий in GameDev for Web
вопросик, вот эти все компресии текстур, они же в видео памяти хранятся все равно в декомпресированном виде?
источник

IP

Ivan Popelyshev in GameDev for Web
в том и прикол что это спец форматы которые хранятся в сжатом виде
источник

AG

Alexey Gulev in GameDev for Web
нет, когда мы говорим про хардверную компрессию вроде etc1, etc2, pvrtc, astc  - это все позволяет сэкономить память.
Когда мы говорим про алгоритмы сжатия ,вроде lz4, lzma, webp - то да, это сжатие поверх данных, чтобы снизить размер на диске. но на озу не влияет
источник

IP

Ivan Popelyshev in GameDev for Web
блоки по 4х4 пикселя обычно , занимают 16 байт всего
источник

Г

Георгий in GameDev for Web
прикольно, над глянуть
источник

IP

Ivan Popelyshev in GameDev for Web
многие старые игры только этим и выживали когда видеопамяти на компах было мало
источник

IP

Ivan Popelyshev in GameDev for Web
если откроешь всякие виндовые игры то увидишь кучу DDS-ок, это контейнер для s3tc
источник

Г

Георгий in GameDev for Web
а lossless среди них есть?
источник