Шаблоны для обложки группы вк: Онлайн-конструктор обложек для ВК — wilda.ru

Наборы дескрипторов

— руководство Vulkan

До сих пор мы использовали push-константы для загрузки данных из CPU в GPU. Хотя push-константы полезны, у них есть много ограничений. Например, вы не можете загрузить массив, вы не можете указать на буфер и не можете использовать с ними текстуры. Для этого вам нужно использовать наборы дескрипторов, которые являются основным способом подключения данных ЦП к графическому процессору.

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

Ментальная модель

Думайте об одном дескрипторе как о дескрипторе или указателе на ресурс. Этот ресурс является буфером или изображением, а также содержит другую информацию, например размер буфера или тип сэмплера, если он предназначен для изображения. VkDescriptorSet — это набор тех указателей, которые связаны друг с другом. Vulkan не позволяет связывать отдельные ресурсы в шейдерах. Они должны быть сгруппированы в наборы. Если вы по-прежнему настаиваете на возможности связывания их по отдельности, вам потребуется набор дескрипторов для каждого ресурса. Это очень неэффективно и не будет работать на многих аппаратных средствах. Если вы посмотрите на этот https://vulkan.gpuinfo.org/displaydevicelimit.php?name=maxBoundDescriptorSets&platform=windows, вы увидите, что некоторые устройства позволяют привязывать только до 4 наборов дескрипторов к данному конвейеру на ПК. Из-за этого мы действительно можем использовать до 4 наборов дескрипторов в наших конвейерах, если мы хотим, чтобы движок работал на интегрированных графических процессорах Intel. Распространенный и эффективный способ справиться с этим ограничением в 4 дескриптора — сгруппировать их по частоте связывания.

Набор дескрипторов с номером 0 будет использоваться для глобальных ресурсов механизма и привязываться один раз к кадру. Набор дескрипторов номер 1 будет использоваться для ресурсов на проход и привязываться один раз за проход. Набор дескрипторов номер 2 будет использоваться для материальных ресурсов, а номер 3 будет использоваться для ресурсов каждого объекта. Таким образом, внутренние циклы рендеринга будут связывать только наборы дескрипторов 2 и 3, и производительность будет высокой.

Распределение дескрипторов

Наборы дескрипторов должны выделяться непосредственно ядром из Вкдескрипторпул . Распределение набора дескрипторов обычно размещается в разделе видеопамяти графического процессора. Как только набор дескрипторов выделен, вам нужно написать его, чтобы он указывал на ваши буферы/текстуры. После привязки набора дескрипторов и использования его в функции vkCmdDraw() вы больше не сможете изменять его, если не укажете флаг VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT . Когда выделяется пул дескрипторов, вы должны сообщить драйверу, сколько наборов дескрипторов и какое количество ресурсов вы будете использовать. Обычно по умолчанию используются большие числа, например 1000 дескрипторов, и когда в пуле дескрипторов заканчивается место, выделение нового дескриптора завершается с ошибкой. Затем вы можете просто пойти и создать новый пул для хранения большего количества дескрипторов.

Выделение наборов дескрипторов может быть очень дешевым, если вы явно запретите освобождение отдельных наборов, установив флаг VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT . Используя этот флаг, драйвер может заставить пул дескрипторов использовать очень дешевый линейный распределитель. Если вы выделяете наборы дескрипторов для каждого кадра, вы должны использовать это, а затем сбрасывать весь пул вместо отдельных наборов дескрипторов. Для ваших глобальных наборов дескрипторов можно выделить их один раз и повторно использовать от кадра к кадру. Это то, что мы будем делать в учебнике, так как он также заканчивается более простым кодом.

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

Написание дескрипторов.

Недавно выделенный набор дескрипторов — это всего лишь часть памяти графического процессора, вам нужно сделать так, чтобы он указывал на ваши буферы. Для этого вы используете vkUpdateDescriptorSets() , который принимает массив из VkWriteDescriptorSet для каждого ресурса, на который указывает набор дескрипторов. Если вы использовали флаг «Обновить после привязки», можно использовать наборы дескрипторов, связывать их в буферах команд и обновлять прямо перед отправкой буфера команд. В основном это нишевый вариант использования, и он не используется повсеместно. Вы можете обновить набор дескрипторов только перед его первой привязкой, если вы не используете этот флаг, и в этом случае вы можете обновить его только перед отправкой командного буфера в очередь. Когда используется набор дескрипторов, он неизменяем, и попытка его обновления вызовет ошибки. Слои проверки улавливают это. Чтобы иметь возможность снова обновить наборы дескрипторов, вам нужно дождаться завершения выполнения команды.

Дескрипторы привязки

Наборы дескрипторов привязываются к определенным «слотам» в конвейере Vulkan. При создании конвейера необходимо указать макеты для каждого из наборов дескрипторов, которые можно привязать к конвейеру. Обычно это делается автоматически, генерируя отражение в шейдере. Мы будем делать это вручную, чтобы показать, как это делается. После привязки конвейера в командном буфере конвейер имеет слоты для различных наборов дескрипторов, и затем вы можете привязать набор к каждому из слотов. Если набор дескрипторов не соответствует слоту, будут ошибки. Если вы привязываете набор дескрипторов к слоту 0, а затем переключаете конвейеры, связывая другой, набор дескрипторов останется привязанным, ЕСЛИ слот в новом конвейере тот же. Если слот не совсем тот же, то слот будет «непривязанным», и вам нужно будет привязать его снова. Например, предположим, что у нас есть 2 конвейера, один из которых имеет набор дескрипторов 0, который привязывается к буферу, и набор дескрипторов 1, который привязывается к 4 изображениям. Затем другой конвейер имеет набор дескрипторов 0, который привязывается к буферу (такой же, как тот же слот в другом конвейере), но в наборе дескрипторов 1 он имеет набор дескрипторов, который привязывается к 3 изображениям, а не к 4. Если вы привязываете второй конвейер , набор дескрипторов 0 останется связанным, но дескриптор 1 будет несвязанным, поскольку он больше не соответствует. Вот почему мы назначаем частоту слотам дескриптора, чтобы свести к минимуму привязку.

Макет набора дескрипторов.

Используется как в конвейерах, так и при размещении дескрипторов. VkDescriptorSetLayout — это форма дескриптора. Например, возможным макетом будет такой, где он связывает 2 буфера и 1 изображение. При создании конвейеров или размещении самих наборов дескрипторов вы должны использовать макет. В этом руководстве мы будем повторно использовать объект макета для всего, но это не обязательно. Макеты наборов дескрипторов могут быть совместимы, если они одинаковы, даже если они созданы в двух разных местах.

Униформ-буферы

Дескриптор устанавливает точку в буферах, но мы этого не объясняли. Прямо сейчас мы создаем буферы графического процессора, содержащие данные вершин, но вы также можете создавать буферы, содержащие произвольные данные для использования в шейдерах. Для этого типа данных обычно используются унифицированные буферы. Они небольшого размера (до нескольких килобайт), но очень быстро читаются, поэтому идеально подходят для параметров шейдера. Создав унифицированный буфер и записав в него из ЦП, вы можете отправлять данные в ГП гораздо более эффективным способом, чем с помощью push-констант. Мы будем использовать его для информации о камере. Можно иметь несколько наборов дескрипторов, указывающих на один юниформ-буфер, а также можно иметь большой юниформ-буфер, и тогда каждый набор дескрипторов указывает на раздел буфера. Шейдер не заметит разницы.

Next: Настройка наборов дескрипторов


Champion epub vk — Googlesuche

AlleBücherShoppingBilderMapsVideosNews

suchoptionen

Legend Series by Marie Lu #0.5 Life before Legend Подробнее…

vk.com › стена -187997257_17

Life Before Legend.epub. 516 КБ ; Легенда.epub. 262 КБ ; Prodigy.epub. 629 КБ ; Чемпион.epub. 390 КБ ; Жизнь после легенды.epub. 374 КБ.

Поступило много запросов на это… наслаждайтесь!! Легенда Мари Лу …

vk.com › wall433198224_1567

Книга 3 Чемпион: Графический роман — Все еще в поисках. … Скачать Champion The Graphic Novel (Legend (8405) zip … Люси, проверьте свой почтовый ящик в вк.

Серия «Спаситель» (Книги 1-2) Дженны Мореси The … — ВКонтакте

vk. com › wall417875289_2157

Серия «Спаситель» (Книги 1-2) Дженны Мореси Защитник Спасителя (Серия «Спаситель», Книга 1) Тобиас Кайя не заботится о Спасителе

Полная серия их чемпионов: книги 1-4 К. А. более 1000 страниц волнения в одном бокс-сете!

Библиотека электронных книг — ВКонтакте

vk.com › ebookl › Marie_Lu

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

Серия Medieval Lords/Dark Champion Джо Беверли | Parparak Pink

vk.com › wall357437898_55

[Beverley_Jo]Lord Of My Heart (Medieval Lords,Dark Champion #1).epub. 351 КБ ; [Beverley_Jo]Dark Champion (Medieval Lords,Dark Champion #2).epub. 466 КБ ; [ …

Курт Воннегут — Завтрак чемпионов Жанр — ВКонтакте

vk.com › wall-117872446_1477

Далее следует убийственно смешная сатира, поскольку Воннегут смотрит на войну, секс, расизм, успех, политику и загрязнения в Америке и напоминает нам, как видеть правду …

A 4x Lit Series (The Accidental Champion Book) by Andrew Karevik …

vk.com › wall-174681246_7020

Файл CivCEO_ A 4x Lit Series (The Ac — Andrew Karevik. epubФайл EPUB, 33 3 КБ · Файл CivCEO 2_ A 4x Lit Series (The — Andrew Karevik.epubФайл EPUB, 344 КБ.

Их Champion Series by K.A. Knight **The Wasteland … — ВКонтакте

vk.com › wall528365117_31

90 002 меня украли от моей семьи и вырос в Пустоши на севере. Я сделал все, что должен был, чтобы обеспечить свое выживание. Я стал Чемпионом, и моя история была вырезана …

Дэнни, Чемпион Мира — детская книга 1975 года автора …

vk.com › wall-126392903_661

Сюжет — Дэнни, Чемпион Мира — детская книга Роальда Даля 1975 года. В центре сюжета Дэнни, английский мальчик с большим фургоном, и его отец …

Als Reaktion auf eine Klageschrift, die wir nach dem US-Americanischen Urheberrechtsgesetz (Закон о защите авторских прав в цифровую эпоху, DMCA) erhalten haben, haben wir 1 Ergebnis(se) von dieser Seite entfernt. Du kannst die DMCA-Klageschrift, die dieser Entfernung zugrunde liegt, unter LumenDatabase.

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

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

Copyright © 2025
Дропшиппинг в России.
Сообщество поставщиков дропшипперов и интернет предпринимателей.
Все права защищены.
ИП Калмыков Семен Алексеевич. ОГРНИП: 313695209500032.
Адрес: ООО «Борец», г. Москва, ул. Складочная 6 к.4.
E-mail: [email protected]. Телефон: +7 (499) 348-21-17