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:
Примеры
В нашей демо-версии рендеринга модуль шейдера создаётся с помощью следующего кода:
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 |
См. также
© 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