Новые возможности DirectX 11: динамическое подключение шейдеров и сжатие текстур

Автор: Topol Суббота, Апрель 21st, 2012 Нет комментариев

Рубрика: Операционные системы

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

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

Microsoft полагает, что ответом на эту проблему являются подпрограммы, позволяющие разработчикам объединять шейдеры — это означает, что разработчики могут создать более простой и более специализированный шейдер для различных целевых классов аппаратных средств, при этом уменьшая частоту использования регистра по сравнению с вариантом, когда используется один шейдер, который управляет всеми остальными. Хотелось бы надеяться, что заставит быть разработчиков более амбициозными при написании шейдеров, однако это вряд ли окажет какое-либо прямое влияние на геймеров.

Улучшенное сжатие текстур
Прошло много времени с того момента, как Microsoft обновила алгоритмы сжатия текстур DirectX и, послушав отзывы и рекомендации разработчиков, компания почувствовала, что уже давно требуются новые усовершенствования. Из всех жалоб, поступивших от сообщества разработчиков, Microsoft обратила свое внимание на слабую поддержку текстур HDR-формата, а также на тот факт, что после мультитекстурирования результирующее изображение часто оказывалось чересчур «блочным», независимо от разрешения оригинальной текстуры.

Чтобы удовлетворить эти потребности, в D3D11 будут введены два новых формата текстур — BC6 (или BC6H) и BC7. Прежний формат текстур высокого разрешения, к сожалению, не мог избежать потерь; вместо него будет предложено сжатие 6:1 с 16 bpc (bit per channel) — это позволит осуществлять эффективное, но при этом относительно высококачественное текстурирование в сценах с широким использование HDR-освещения, однако текстуры при этом будут немного отличаться от оригинала.

BC7, в свою очередь, является LDR (low dynamic range) форматом текстур и предлагает сжатие для RGB в пропорции 3:1. Кроме того, BC7 также можно использовать вместе с альфа-каналом, «заплатив» за это небольшим падением производительности — степень сжатия при этом будет уже 4:1, однако качество текстур все еще очень будет высоким.

Microsoft также добавляет, что декомпрессия текстур в DirectX 11 должна будет проводиться в полном соответствии со спецификациями этого API. Причиной этого является стремление компании еще увеличить качество декомпрессии текстур, потому как до момента выхода DirectX 11 у производителей аппаратных средств будет некоторый запас по времени для настройки аппаратных способов декомпрессии текстур на устройствах класса DirectX 10 и ниже.

Источник: thevista.ru

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты