1.0 неявно или хранится на самом деле?
Это зависит от реализации. Если бы вы спрашивали о текстурах 888 и 8888, я бы сказал вам, что почти каждая реализация обязана использовать 32 бита на тексель, но я не уверен в форматах 16F. Это говорит о том, что Metal не определяет формат RGB16F (ссылка ), что убедительно свидетельствует о том, что графические процессоры PowerVR по крайней мере дополнят формат. Vulkan действительно определяет RGB16F, но хотя спецификация требует поддержки R16F, RG16F и RGBA16F, она не требует поддержки RGB16F (ссылка), что снова указывает на отсутствие встроенной поддержки некоторыми поставщиками. Я не удивлюсь, если какой-нибудь графический процессор где-нибудь действительно поддерживает RGB16F, но я подозреваю, что большинство из них просто подкладывают. Для более точного ответа вам может потребоваться задать вопросы на форумах по графическим процессорам или поэкспериментировать, изучив использование памяти в некоторых контролируемых условиях.
И в последнем случае. Мой главный вопрос: если я помещу свою 16-битную карту высот в альфа-канал, она станет RGBA16F. Могу ли я улучшить производительность?
Вы производите сэмплирование в одно и то же время (т.е. из одного шейдера с одинаковыми UV-развертками)? Если так, то да, безусловно, это будет лучший выбор, чем использование RGB16F плюс R16F. Если они не выбраны вместе (например, карта высот выбирается в вершинном шейдере, цвет - в шейдере фрагмента), то догадаться труднее. Вероятно, вы снизите производительность при выборке карты высот (эти лишние байты взорвали кеш), но не повредите выборку цвета (все равно там было заполнение) - в целом вы потеряете некоторую производительность, но сэкономите немного памяти - любая потеря производительности вероятно, довольно незначительный, и если ваше узкое место кроется в другом месте, оно может вообще не навредить.
person
Columbo
schedule
13.03.2017