Spec-Zone.ru › Web APIs

GPURenderPassEncoder

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

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

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

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

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

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

Интерфейс GPURenderPassEncoder API WebGPU кодирует команды, связанные с управлением стадиями вершинного и фрагментного шейдеров, как указано GPURenderPipeline. Это часть общей кодировочной активности GPUCommandEncoder.

Рендерная трубка рендерит графику на GPUTexture привязках, как правило, предназначенных для отображения в элементе <canvas>, но она также может рендерить на текстуры, используемые для других целей, которые никогда не отображаются на экране. Она имеет две основные стадии:

  • Стадия вершины, в которой шейдер вершин получает данные о позиционировании, подаваемые на GPU, и использует их для позиционирования ряда вершин в 3D-пространстве, применяя указанные эффекты, такие как вращение, перемещение или перспектива. Затем вершины собираются в примитивы, такие как треугольники (основной строительный блок рендерированной графики), и растрируются GPU, чтобы определить, какие пиксели должен охватывать каждый из них на холсте рисования.

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

Экземпляр объекта GPURenderPassEncoder создается с помощью свойства GPUCommandEncoder.beginRenderPass().

Свойства экземпляра

label Экспериментально

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

Методы экземпляра

beginOcclusionQuery() Экспериментальное

Начинает запрос на непрозрачность в указанном индексе соответствующего GPUQuerySet (предоставлен в качестве значения свойства дескриптора occlusionQuerySet, при вызове GPUCommandEncoder.beginRenderPass() для запуска прохода отрисовки).

draw() Экспериментальное

Отрисовывает примитивы на основе буферов вершин, предоставленных setVertexBuffer().

drawIndexed() Экспериментальное

Отрисовывает примитивы с индексами, используя буферы вершин и индексов, предоставленные setVertexBuffer() и setIndexBuffer().

drawIndirect() Экспериментальное

Отрисовывает примитивы, используя параметры, считанные из GPUBuffer.

drawIndexedIndirect() Экспериментальное

Отрисовывает примитивы с индексами, используя параметры, считанные из GPUBuffer.

end() Экспериментальное

Завершает запись текущей последовательности команд прохода отрисовки.

endOcclusionQuery() Экспериментальное

Завершает активный запрос на непрозрачность, ранее начатый с помощью beginOcclusionQuery().

executeBundles() Экспериментальное

Выполняет команды, ранее записанные в указанные GPURenderBundle, как часть этого прохода отрисовки.

insertDebugMarker() Экспериментальное

Помечает определенную точку в серии закодированных команд меткой.

popDebugGroup() Экспериментальное

Завершает группу отладки, начатую вызовом pushDebugGroup().

pushDebugGroup() Экспериментальное

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

setBindGroup() Экспериментальное

Устанавливает GPUBindGroup для использования в последующих командах отрисовки для данного индекса.

setBlendConstant() Экспериментальное

Устанавливает постоянные значения цвета и альфы смешивания, используемые с факторами смешивания "constant" и "one-minus-constant" (установленными в описании метода GPUDevice.createRenderPipeline() в свойстве blend).

setIndexBuffer() Экспериментальное

Устанавливает текущий GPUBuffer, который будет предоставлять данные индексов для последующих команд отрисовки.

setPipeline() Экспериментальное

Устанавливает GPURenderPipeline для использования в этом проходе отрисовки.

setScissorRect() Экспериментальное

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

setStencilReference() Экспериментальное

Устанавливает значение ссылки на значение маски, используемое во время проверок маски с операцией маски "replace" (как указано в описании метода GPUDevice.createRenderPipeline() в свойствах, определяющих различные операции маски).

setVertexBuffer() Экспериментальное

Устанавливает или отменяет установку текущего GPUBuffer, который будет предоставлять данные вершин для последующих команд отрисовки.

setViewport() Экспериментальное

Устанавливает область видимости, используемую во время стадии растрирования, для линейного отображения от нормированных координат устройства к координатам области видимости.

Примеры

В нашем демо-примере отрисовки несколько команд записываются через GPUCommandEncoder. Большинство из этих команд исходят от GPURenderPassEncoder, созданного с помощью GPUCommandEncoder.beginRenderPass().

// ...

const renderPipeline = device.createRenderPipeline(pipelineDescriptor);

// Create GPUCommandEncoder to issue commands to the GPU
// Note: render pass descriptor, command encoder, etc. are destroyed after use, fresh one needed for each frame.
const commandEncoder = device.createCommandEncoder();

// Create GPURenderPassDescriptor to tell WebGPU which texture to draw into, then initiate render pass
const renderPassDescriptor = {
  colorAttachments: [
    {
      clearValue: clearColor,
      loadOp: "clear",
      storeOp: "store",
      view: context.getCurrentTexture().createView(),
    },
  ],
};

const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);

// Draw the triangle
passEncoder.setPipeline(renderPipeline);
passEncoder.setVertexBuffer(0, vertexBuffer);
passEncoder.draw(3);

// End the render pass
passEncoder.end();

// End frame by passing array of command buffers to command queue for execution
device.queue.submit([commandEncoder.finish()]);

// ...

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

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

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

Настольный Мобильный
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
GPURenderPassEncoder
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
previewВ настоящее время поддерживается только в Linux и Windows.
99В настоящее время поддерживается только в ChromeOS, macOS и Windows.
preview 121 Нет 81 Нет 25.0 121
beginOcclusionQuery
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
Нет
99В настоящее время поддерживается только в ChromeOS, macOS и Windows.
preview 121 Нет 81 Нет 25.0 121
draw
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
previewВ настоящее время поддерживается только в Linux и Windows.
99В настоящее время поддерживается только в ChromeOS, macOS и Windows.
preview 121 Нет 81 Нет 25.0 121
drawIndexed
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
previewВ настоящее время поддерживается только в Linux и Windows.
99В настоящее время поддерживается только в ChromeOS, macOS и Windows.
preview 121 Нет 81 Нет 25.0 121
drawIndexedIndirect
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
previewВ настоящее время поддерживается только в Linux и Windows.
99В настоящее время поддерживается только в ChromeOS, macOS и Windows.
preview 121 Нет 81 Нет 25.0 121
drawIndirect
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
previewВ настоящее время поддерживается только в Linux и Windows.
99В настоящее время поддерживается только в ChromeOS, macOS и Windows.
preview 121 Нет 81 Нет 25.0 121
end
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
previewВ настоящее время поддерживается только в Linux и Windows.
99В настоящее время поддерживается только в ChromeOS, macOS и Windows.
preview 121 Нет 81 Нет 25.0 121
endOcclusionQuery
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
Нет
99В настоящее время поддерживается только в ChromeOS, macOS и Windows.
preview 121 Нет 81 Нет 25.0 121
executeBundles
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
previewВ настоящее время поддерживается только в Linux и Windows.
99В настоящее время поддерживается только в ChromeOS, macOS и Windows.
preview 121 Нет 81 Нет 25.0 121
insertDebugMarker
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
previewВ настоящее время поддерживается только в Linux и Windows.
99В настоящее время поддерживается только в ChromeOS, macOS и Windows.
preview 121 Нет 81 Нет 25.0 121
label
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
previewВ настоящее время поддерживается только в Linux и Windows.
99В настоящее время поддерживается только в ChromeOS, macOS и Windows.
preview 121 Нет 81 Нет 25.0 121
popDebugGroup
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
previewВ настоящее время поддерживается только в Linux и Windows.
99В настоящее время поддерживается только в ChromeOS, macOS и Windows.
preview 121 Нет 81 Нет 25.0 121
pushDebugGroup
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
previewВ настоящее время поддерживается только в Linux и Windows.
99В настоящее время поддерживается только в ChromeOS, macOS и Windows.
preview 121 Нет 81 Нет 25.0 121
setBindGroup
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
113В настоящее время поддерживается только в ChromeOS, macOS и Windows.
previewВ настоящее время поддерживается только в Linux и Windows.
99В настоящее время поддерживается только в ChromeOS, macOS и Windows.
preview 121 Нет 81 Нет 25.0 121
setBlendConstant
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
previewВ настоящее время поддерживается только на Linux и Windows.
99В настоящее время поддерживается только на ChromeOS, macOS и Windows.
preview 121 Нет 81 Нет 25.0 121
setIndexBuffer
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
previewВ настоящее время поддерживается только на Linux и Windows.
99В настоящее время поддерживается только на ChromeOS, macOS и Windows.
preview 121 Нет 81 Нет 25.0 121
setPipeline
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
previewВ настоящее время поддерживается только на Linux и Windows.
99В настоящее время поддерживается только на ChromeOS, macOS и Windows.
preview 121 Нет 81 Нет 25.0 121
setScissorRect
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
previewВ настоящее время поддерживается только на Linux и Windows.
99В настоящее время поддерживается только на ChromeOS, macOS и Windows.
preview 121 Нет 81 Нет 25.0 121
setStencilReference
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
previewВ настоящее время поддерживается только на Linux и Windows.
99В настоящее время поддерживается только на ChromeOS, macOS и Windows.
preview 121 Нет 81 Нет 25.0 121
setVertexBuffer
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
previewВ настоящее время поддерживается только на Linux и Windows.
99В настоящее время поддерживается только на ChromeOS, macOS и Windows.
preview 121 Нет 81 Нет 25.0 121
setViewport
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
previewВ настоящее время поддерживается только на Linux и Windows.
99В настоящее время поддерживается только на ChromeOS, macOS и Windows.
preview 121 Нет 81 Нет 25.0 121
writeTimestamp
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
113В настоящее время поддерживается только на ChromeOS, macOS и Windows.
Нет
99В настоящее время поддерживается только на ChromeOS, macOS и Windows.
Нет 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/GPURenderPassEncoder

Spec-Zone.ru

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