Почему большинство основных игровых движков не используют GIF-изображения для анимированных текстур?

28

Что лучше использовать анимационные листы или гифки? Одно из преимуществ Gifs перед таблицами анимации состоит в том, что вам не нужно думать о том, что кадры движутся слишком быстро или слишком медленно из-за вашего кода и обновления в надлежащих тиках.

Каковы недостатки использования GIF-файлов и преимущества анимационных листов по сравнению с GIF-файлами?

Arek Żyłkowski
источник
7
Тогда, возможно, вам следует перефразировать ваш вопрос чем-то вроде: «Почему большинство основных игровых движков не используют GIF-файлы для анимированных текстур?» поскольку они обычно не, по крайней мере, я знаю, по уважительным причинам. Я думаю, что это дало бы вам техническую информацию о том, почему они не используются, а не лучший вопрос, который не подходит для сайтов SE.
Кобурн
39
One advantage Gifs have over Animation Sheets is that you don't have to think about frames going too fast or too slowПочему так? На что вы полагаетесь, чтобы сделать это предположение? Библиотека? Спецификация формата файла? GIF-файл - это всего лишь данные, вам все еще нужен код для его интерпретации (рендеринга с правильной скоростью)
hoffmale,
13
Что сказал Хоффмэйл GIF не волшебство; их анимация все еще должна контролироваться и выполняться некоторым программным обеспечением, включая его синхронизацию, и в этом случае это программное обеспечение написано вами. Честно говоря, я не ожидал бы, что ваш код обработки анимационных листов будет сильно отличаться от кода обработки GIF.
Легкость гонок с Моникой
12
Единственная разница между вашей таблицей спрайтов и GIF-кодом заключается в том, что ваш код GIF преобразует GIF в таблицу спрайтов, а затем вызывает код таблицы спрайтов;)
MickLH
6
GIF не имеет никаких преимуществ. если вы хотите межкадровое сжатие, то gif примерно в 30 раз менее эффективен, чем надлежащий видеокодек, но также дает худшее качество (для фотореалистичных вещей).
Сардж Борщ

Ответы:

91

Недостатки GIF:

  • очень ограниченная цветовая палитра, обычно 256 цветов с безобразным сглаживанием ( да, вы можете иметь более 256 цветов в анимированном GIF , но это редко)
  • Графические процессоры не поддерживают сжатие GIF на аппаратном уровне (значит, вам все равно придется распаковывать их на ЦП)
  • Вы можете выбрать только ОДИН цвет для прозрачности (если не выполняете пользовательскую обработку)
  • нет произвольного доступа. Все предыдущие кадры GIF должны быть прочитаны и распакованы для доступа к кадру.
  • быть сжатым. Вам нужна выделенная функция декомпрессии в коде. Вы не можете выбрать другие (лучшие) алгоритмы сжатия. (да, несжатые GIF-файлы тоже существуют , но это редко)

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

Одно из преимуществ Gifs перед таблицами анимации состоит в том, что вам не нужно думать о том, что кадры движутся слишком быстро или слишком медленно из-за вашего кода и обновления в надлежащих тиках.

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

Конечно, некоторые игровые движки могут скрывать некоторые проблемы GIF за кулисами, но тогда то же самое можно сделать с помощью спрайт-листов лучше.

Сказал, что есть несколько случаев, когда GIF-файлы могли бы работать . Например, HTML / CSS GUI, но они довольно редки и требуют много ресурсов.

Кромстер говорит, что поддерживает Монику
источник
Я не понимаю, «один цвет для прозрачности». Что значит иметь несколько цветов для прозрачности? Вы говорите о различных альфа-значениях, таких как применение градиента прозрачности к текстуре?
Эрик
3
@ Эрик именно это. Common GIF поддерживает до 256 цветов, из которых только 1 можно пометить как прозрачный. В отличие от других форматов, где прозрачность обычно имеет гораздо более широкий диапазон.
Кромстер говорит, что поддерживает Монику
@ Kromster На самом деле на ресурсных сайтах используется специальный механизм анимации для анимированных изображений, такой как background-imageанимация позиции CSS, когда анимация размещается на одном большом изображении, которое затем перемещается смещениями.
Томаш Зато - Восстановить Монику
@ TomášZato Правда. Извините, я утверждал иначе?
Кромстер говорит, что поддерживает Монику
2
@ luk32 это недостаток, потому что есть намного лучшие методы сжатия, чем старое сжатие GIF. Таким образом, вы либо используете неоптимальное сжатие GIF, либо получаете (де) сжатие дважды (обратите внимание, что сжатие уже сжатых данных обычно также приводит к увеличению размера).
Кромстер говорит, что поддерживает Монику
32

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

Графические процессоры не поддерживают многие функции, поддерживаемые файлами изображений на процессорах. Они не поддерживают сжатие JPG, они не поддерживают сжатие PNG и, в частности, ссылки на GIF, не поддерживают автоматическую анимацию .

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

Максимус Минимус
источник
30
Обратите внимание, что «процессоры» не поддерживают такие вещи, как веб-браузеры и операционные системы.
user253751
7
Что, никто еще не написал веб-браузер GPGPU?
Камиль Гудесюн,
7
@CamilleGoudeseune Ты смеешься. Я плачу.
3Dave
13

GIF имеет ограниченную цветовую палитру. (255) Вы должны также выполнить анализ и анимацию GIF. Так что нет прогресса ни во времени, ни в технических аспектах формата.

пиранья
источник
4
256, если вам не нужна прозрачность, 255 иначе.
CVn
@ MichaelKjörling Это все еще 256 с прозрачностью - только один из цветов обозначен как «прозрачный». Я считаю, что информация хранится в шапке.
3Dave
@DavidLively Следовательно "эффективно". Цвет все еще там, но его нельзя использовать как непрозрачный.
CVn
@ Кромстер да. Удаленные. Я могу иметь хорошую математику.
3Dave