Spec-Zone.ru › Web APIs

GPURenderPassEncoder: метод executeBundles()

Ограниченная доступность

Эта функция не является базовой, так как она не работает в некоторых из самых широко используемых браузеров.

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

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

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

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

Метод executeBundles() интерфейса GPURenderPassEncoder выполняет команды, ранее записанные в указанные объекты GPURenderBundle, в рамках этого рендеринга.

Примечание: После вызова executeBundles() текущие настроенные буферы вершин, буферы индексов, группы связей и конвейер очищаются, даже если команды из наборов реально не выполнялись.

Синтаксис

executeBundles(bundles)

Параметры

bundles

Массив объектов GPURenderBundle, содержащих предварительно записанные команды для выполнения.

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

None (Undefined).

Проверка

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

Для каждого объекта GPURenderBundle:

  • Если свойство depthReadOnly прохода рендеринга (как указано в описателе исходного вызова GPUCommandEncoder.beginRenderPass()) равно true, то свойство depthReadOnly набора (как указано в описателе вызова GPUDevice.createRenderBundleEncoder(), создавшего исходный объект GPURenderBundleEncoder) также равно true.
  • Если свойство stencilReadOnly прохода рендеринга (как указано в описателе исходного вызова GPUCommandEncoder.beginRenderPass()) равно true, то свойство stencilReadOnly набора (как указано в описателе вызова GPUDevice.createRenderBundleEncoder(), создавшего исходный объект GPURenderBundleEncoder) также равно true.
  • Макет конвейера рендеринга, указанный в GPURenderPassEncoder.setPipeline() (как определено в описателе исходного вызова GPUDevice.createRenderPipeline()), равен макету конвейера набора рендеринга, указанному в GPURenderBundleEncoder.setPipeline().

Примеры

В примере Animometer из примеров WebGPU много подобных операций выполняется одновременно на многих разных объектах. executeBundles() используется для повторного использования работы над несколькими проходами рендеринга, чтобы улучшить производительность. Изучите пример кода для полного контекста.

// ...

return function doDraw(timestamp) {
  if (startTime === undefined) {
    startTime = timestamp;
  }
  uniformTime[0] = (timestamp - startTime) / 1000;
  device.queue.writeBuffer(uniformBuffer, timeOffset, uniformTime.buffer);

  renderPassDescriptor.colorAttachments[0].view = context
    .getCurrentTexture()
    .createView();

  const commandEncoder = device.createCommandEncoder();
  const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);

  if (settings.renderBundles) {
    passEncoder.executeBundles([renderBundle]);
  } else {
    recordRenderPass(passEncoder);
  }

  passEncoder.end();
  device.queue.submit([commandEncoder.finish()]);
};

// ...

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

Спецификация
WebGPU
# dom-gpurenderpassencoder-executebundles

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

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari в IOS Samsung Internet WebView Android
executeBundles
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
предварительная версияВ настоящее время поддерживается только на Linux и Windows.
99В настоящее время поддерживается только на ChromeOS, macOS и Windows.
предварительная версия 121 Нет 81 Нет 25.0 121

См. также

  • The 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/GPURenderPassEncoder/executeBundles

Spec-Zone.ru

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