Spec-Zone.ru › Web APIs

GPUDevice: метод createBindGroup()

Доступ ограничен

Эта функция не относится к Baseline, так как она не работает во всех распространённых браузерах.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Экспериментально: Это экспериментальная технология
Подробнее
Перед использованием в рабочей среде внимательно проверьте таблицу совместимости с браузерами.

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.

Примечание: Эта функция доступна в Web Workers.

Метод createBindGroup() интерфейса GPUDevice создаёт объект GPUBindGroup на основе GPUBindGroupLayout, который определяет набор ресурсов, которые будут связаны вместе в группе, и как эти ресурсы используются в стадиях шейдеров.

Синтаксис

createBindGroup(descriptor)

Параметры

descriptor

Объект, содержащий следующие свойства:

entries

Массив объектов входа, описывающих ресурсы, доступные шейдеру. Будет один для каждого соответствующего элемента, описанного в GPUBindGroupLayout, на который ссылается layout. Каждый объект входа имеет следующие свойства:

binding

Число, представляющее уникальный идентификатор этого связывания ресурсов, который соответствует значению binding соответствующего элемента GPUBindGroupLayout. Кроме того, он соответствует значению индекса n соответствующего атрибута @binding(n) в шейдере (GPUShaderModule), используемом в соответствующей конвейерной линии.

resource

Связываемый ресурс. Это может быть один из следующих:

  • GPUBufferBinding (который оборачивает GPUBuffer; см. объекты GPUBufferBinding для определения)
  • GPUExternalTexture
  • GPUSampler
  • GPUTextureView
label Необязательно

Строка, предоставляющая метку, которая может быть использована для идентификации объекта, например, в сообщениях GPUError или предупреждениях консоли.

layout

GPUBindGroupLayout, которому будет соответствовать entries этой группы связывания.

Объекты GPUBufferBinding

Объект GPUBufferBinding может содержать следующие свойства:

buffer

Объект GPUBuffer, который вы хотите связать.

offset Необязательно

Смещение в байтах от начала buffer до начала диапазона, доступного шейдеру через связывание буфера. Если опущено, offset по умолчанию равно 0.

size Необязательно

Размер связывания буфера в байтах. Если опущено, size будет диапазоном, начинающимся в offset и заканчивающимся в конце buffer. Если оба offset и size опущены, весь буфер предоставляется шейдеру.

Возвращаемое значение

Экземпляр объекта GPUBindGroup.

Валидация

При вызове createBindGroup() должны быть соблюдены следующие критерии, в противном случае генерируется GPUValidationError, и возвращается недопустимый объект GPUBindGroup:

  • Количество элементов в layout GPUBindGroupLayout равно количеству объектов входа в entries.
  • Для каждого элемента в layout GPUBindGroupLayout, соответствующий объект входа в entries связывает правильный тип ресурса. Например, объект макета ресурсов buffer имеет объект GPUBufferBinding в соответствующем связывании.
  • Если объект макета ресурсов является buffer:
    • Соответствующий связанный GPUBuffer:
      • Связанная часть (как указано в offset и size) полностью содержится в нём с ненулевым размером.
      • Размер больше, чем buffer объекта макета ресурсов minBindingSize.
    • Если объект макета ресурсов type "uniform":
      • Связанный GPUBuffer имеет usage, который включает GPUBufferUsage.UNIFORM.
      • Эффективный размер сегмента связанного буфера не превышает maxUniformBufferBindingSize предел устройства GPUDevice.
      • Указанный GPUBufferBinding offset является кратным пределу minUniformBufferOffsetAlignment предел устройства GPUDevice.
    • Если объект макета ресурсов type является "storage" или "read-only-storage":
      • Связанный GPUBuffer имеет usage, который включает GPUBufferUsage.STORAGE.
      • Эффективный размер сегмента связанного буфера не превышает maxStorageBufferBindingSize предел устройства GPUDevice.
      • Эффективный размер сегмента связанного буфера кратен 4.
      • Указанный GPUBufferBinding offset является кратным пределу minStorageBufferOffsetAlignment предел устройства GPUDevice.
    • Если объект макета ресурсов является storageTexture, соответствующий связанный GPUTextureView:
      • Имеет dimension равное viewDimension объекта макета ресурсов (см. GPUTexture.createView() для более подробной информации о настройках представления текстуры).
      • Имеет format равное sampleType объекта макета ресурсов.
      • Имеет mipLevelCount равное 1.
      • Представляет собой представление GPUTexture с usage, который включает GPUTextureUsage.STORAGE_BINDING.
    • Если объект макета ресурсов texture, соответствующий связанный GPUTextureView:
      • Имеет dimension равное viewDimension объекта макета ресурсов (см. GPUTexture.createView() для более подробной информации о настройках представления текстуры).
      • Имеет format совместимый с sampleType объекта макета ресурсов.
      • Представляет собой представление GPUTexture с usage, который включает GPUTextureUsage.TEXTURE_BINDING.
      • представляет собой представление GPUTexture с sampleCount больше 1, если свойство multisampled объекта макета ресурсов равно true, или равно 1, если оно равно false.

Примеры

Примечание: В примерах WebGPU представлено много других примеров.

Базовый пример

Наш базовый пример вычислений демонстрирует пример создания макета группы связывания и последующего использования его в качестве шаблона при создании группы связывания.

// ...

const bindGroupLayout = device.createBindGroupLayout({
  entries: [
    {
      binding: 0,
      visibility: GPUShaderStage.COMPUTE,
      buffer: {
        type: "storage",
      },
    },
  ],
});

const bindGroup = device.createBindGroup({
  layout: bindGroupLayout,
  entries: [
    {
      binding: 0,
      resource: {
        buffer: output,
      },
    },
  ],
});

// ...

Спецификации

Спецификация
WebGPU
# dom-gpudevice-createbindgroup

Совместимость с браузерами

Десктоп Мобильный
Хром Эдж Файрфокс Опера Сафари Хром для Android Файрфокс для Android Опера для Android Сафари на iOS Samsung Internet WebView Android
createBindGroup
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
previewВ настоящее время поддерживается только на Linux и Windows.
99В настоящее время поддерживается только на ChromeOS, macOS и Windows.
preview 121 Нет 81 Нет 25.0 121

См. также

  • API WebGPU

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/GPUDevice/createBindGroup

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API