GPUDevice: createShaderModule() Methode
        
        
          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 in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die createShaderModule() Methode der GPUDevice Schnittstelle erstellt ein GPUShaderModule aus einem String des WGSL-Quellcodes.
Syntax
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 wie geordnete Karten. In jedem Fall ist der"string"ein Schlüssel, der verwendet wird, um den Datensatz zu identifizieren oder auszuwählen, undcompilationHintist entweder einGPUPipelineLayout-Objekt oder ein enumerierter Wert von"auto".Der Zweck von hintsbesteht darin, Informationen über das Pipeline-Layout so früh wie möglich bereitzustellen, um die Leistung zu verbessern. Die Idee ist, die Menge an Kompilierung, die einmal durchcreateShaderModule()durchgeführt werden kann, maximal auszunutzen, anstatt mehrmals in mehreren Aufrufen vonGPUDevice.createComputePipeline()undGPUDevice.createRenderPipeline().Hinweis: Verschiedene Implementierungen können hintsauf unterschiedliche Weise behandeln, einschließlich der Möglichkeit, sie vollständig zu ignorieren. Die Bereitstellung von Hinweisen garantiert nicht, dass die Leistung der Shader-Kompilierung in allen Browsern/Systemen verbessert wird.
- labelOptional
- 
Ein String, der ein Etikett bereitstellt, das verwendet werden kann, um das Objekt zu identifizieren, beispielsweise in GPUError-Meldungen oder Konsolenwarnungen.
- sourceMapOptional
- 
Eine Source-Map-Definition zur Bereitstellung von Entwickler-Tool-Integrationen wie Debugging in der Quellsprache. WGSL-Namen (Identifier) in Source Maps sollten den in WGSL Identifier Comparison definierten Regeln folgen. Wenn sie definiert sind, können die Quellkarten im source-map-v3-Format interpretiert werden. Hinweis: Verschiedene Implementierungen können sourceMaps auf unterschiedliche Weise behandeln, einschließlich der Möglichkeit, sie vollständig zu ignorieren.
 
Rückgabewert
Eine GPUShaderModule-Objektinstanz.
Validierung
Die folgenden Kriterien müssen erfüllt sein, wenn createShaderModule() aufgerufen wird, andernfalls wird ein GPUValidationError generiert und ein ungültiges GPUShaderModule-Objekt zurückgegeben:
Beispiele
In unserem Basis-Render-Demo wird unser Shader-Modul mit dem folgenden Code erstellt:
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.");
  }
  const device = await adapter.requestDevice();
  // …
  // later on
  const shaderModule = device.createShaderModule({
    code: shaders,
  });
  // …
}
Spezifikationen
| Specification | 
|---|
| WebGPU> # dom-gpudevice-createshadermodule> | 
Browser-Kompatibilität
Loading…