Spec-Zone.ru › Web APIs

GPUDevice: метод createShaderModule()

Ограниченное использование

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

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

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

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

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

Метод createShaderModule() интерфейса GPUDevice создаёт GPUShaderModule из строки исходного кода WGSL.

Синтаксис

createShaderModule(descriptor)

Параметры

descriptor

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

code

Строка, представляющая исходный код WGSL для модуля шейдера.

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

Последовательность типов записей со структурой ("string", compilationHint). Они ведут себя как упорядоченные карты. В каждом случае "string" является ключом для идентификации или выбора записи, а compilationHint — это экземпляр объекта GPUPipelineLayout или перечисление значения "auto".

Цель hints — предоставить информацию о макете конвейера как можно раньше для повышения производительности. Идея состоит в том, чтобы максимизировать объём компиляции, который может быть выполнен один раз createShaderModule(), а не несколько раз в нескольких вызовах GPUDevice.createComputePipeline() и GPUDevice.createRenderPipeline().

Примечание: Разные реализации могут обрабатывать hints по-разному, в том числе возможно их полное игнорирование. Предоставление подсказок не гарантирует повышение производительности компиляции шейдеров во всех браузерах/системах.

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

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

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

Определение карты исходного кода для предоставления интеграции инструментов разработчика, такой как отладка исходного языка. Имена WGSL (идентификаторы) в картах исходного кода должны соответствовать правилам, определённым в сравнении идентификаторов WGSL. При определении карта исходного кода может интерпретироваться как формат карты исходного кода v3.

Примечание: Разные реализации могут обрабатывать sourceMap по-разному, в том числе возможно их полное игнорирование.

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

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

Проверка

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

  • Если код вашего шейдера WGSL использует тип с плавающей точкой полуточной точности f16, он включает enable f16; вверху, а связанный GPUDevice создается с включённым shader-f16 функцией.

Примеры

В нашей демо-версии рендеринга модуль шейдера создаётся с помощью следующего кода:

const shaders = `
struct VertexOut {
  @builtin(position) position : vec4f,
  @location(0) color : vec4f
}

@vertex
fn vertex_main(@location(0) position: vec4f,
               @location(1) color: vec4f) -> VertexOut
{
  var output : VertexOut;
  output.position = position;
  output.color = color;
  return output;
}

@fragment
fn fragment_main(fragData: VertexOut) -> @location(0) vec4f
{
  return fragData.color;
}
`;

async function init() {
  if (!navigator.gpu) {
    throw Error("WebGPU not supported.");
  }

  const adapter = await navigator.gpu.requestAdapter();
  if (!adapter) {
    throw Error("Couldn't request WebGPU adapter.");
  }

  let device = await adapter.requestDevice();

  // ...
  // later on

  const shaderModule = device.createShaderModule({
    code: shaders,
  });

  // ...
}

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

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

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

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

См. также

  • API WebGPU
  • Спецификация языка шейдеров 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/createShaderModule

Spec-Zone.ru

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