Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. Web-APIs
  3. GPUDevice
  4. createShaderModule()

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

GPUDevice: Methode createShaderModule()

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Sicherer Kontext: Diese Funktion ist nur insicheren Kontexten (HTTPS) in einigen oder allenunterstützenden Browsern verfügbar.

Hinweis: Diese Funktion ist inWeb Workers verfügbar.

DiecreateShaderModule()-Methode derGPUDevice-Schnittstelle erstellt einGPUShaderModule aus einem String vonWGSL-Quellcode.

Syntax

js
createShaderModule(descriptor)

Parameter

descriptor

Ein Objekt, das die folgenden Eigenschaften enthält:

code

Ein String, der den WGSL-Quellcode für das Shader-Modul darstellt.

hintsOptional

Eine Sequenz von Aufzeichnungstypen mit der Struktur("string", compilationHint). Diese verhalten sich wiegeordnete Karten. In jedem Fall ist die"string" ein Schlüssel, der verwendet wird, um die Aufzeichnung zu identifizieren oder auszuwählen, und dercompilationHint ist entweder eineGPUPipelineLayout-Objektinstanz oder ein enumerierter Wert von"auto".

Der Zweck vonhints besteht darin, so früh wie möglich Informationen über das Pipeline-Layout bereitzustellen, um die Leistung zu verbessern. Die Idee ist, die Menge an Kompilierung zu maximieren, die durchcreateShaderModule() einmal durchgeführt werden kann, anstatt mehrmals in mehreren Aufrufen vonGPUDevice.createComputePipeline() undGPUDevice.createRenderPipeline().

Hinweis:Verschiedene Implementierungen könnenhints unterschiedlich behandeln, einschließlich der Möglichkeit, sie vollständig zu ignorieren. Das Bereitstellen von Hinweisen garantiert nicht, dass die Leistung der Shader-Kompilierung in allen Browsern/Systemen verbessert wird.

labelOptional

Ein String, der ein Label bereitstellt, das zur Identifizierung des Objekts verwendet werden kann, zum Beispiel inGPUError-Nachrichten oder Konsolenwarnungen.

sourceMapOptional

Eine Definition einer Source-Map zur Integration von Entwicklerwerkzeugen wie Debugging in der Quellsprache. WGSL-Namen (Identifier) in Source-Maps sollten den Regeln folgen, die inWGSL-Identifier-Vergleich definiert sind. Wenn definiert, kann die Source-Map als einsource-map-v3-Format interpretiert werden.

Hinweis:Verschiedene Implementierungen könnensourceMaps unterschiedlich behandeln, einschließlich der Möglichkeit, sie vollständig zu ignorieren.

Rückgabewert

EineGPUShaderModule-Objektinstanz.

Validierung

Die folgenden Kriterien müssen erfüllt sein, wenncreateShaderModule() aufgerufen wird, andernfalls wird einGPUValidationError generiert und ein ungültigesGPUShaderModule-Objekt zurückgegeben:

  • Wenn Ihr WGSL-Code des Shaders den Halbpräzisions-Gleitkommatypf16 verwendet, mussenable f16; am Anfang stehen, und das zugehörigeGPUDevice muss mit demshader-f16Feature erstellt worden sein.

Beispiele

In unseremBasis-Render-Demo wird unser Shader-Modul mit folgendem Code erstellt:

js
const shaders = `struct VertexOut {  @builtin(position) position : vec4f,  @location(0) color : vec4f}@vertexfn vertex_main(@location(0) position: vec4f,               @location(1) color: vec4f) -> VertexOut{  var output : VertexOut;  output.position = position;  output.color = color;  return output;}@fragmentfn 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.");  }  const device = await adapter.requestDevice();  // …  // later on  const shaderModule = device.createShaderModule({    code: shaders,  });  // …}

Spezifikationen

Specification
WebGPU
# dom-gpudevice-createshadermodule

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2026 Movatter.jp