GPUDevice: createShaderModule() Methode
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig, bevor Sie diese produktiv verwenden.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Dieses Feature ist verfügbar in Web Workers.
Die createShaderModule()
-Methode der GPUDevice
-Schnittstelle erstellt ein GPUShaderModule
aus einem String von WGSL-Quellcode.
Syntax
createShaderModule(descriptor)
Parameter
descriptor
-
Ein Objekt mit den folgenden Eigenschaften:
code
-
Ein String, der den WGSL-Quellcode für das Shader-Modul darstellt.
hints
Optional-
Eine Sequenz von Datensatztypen mit der Struktur
("string", compilationHint)
. Diese verhalten sich wie geordnete Maps. In jedem Fall ist der"string"
ein Schlüssel, der zum Identifizieren oder Auswählen des Datensatzes verwendet wird, undcompilationHint
ist entweder eineGPUPipelineLayout
-Objektinstanz oder ein aufgezählter Wert von"auto"
.Der Zweck von
hints
ist es, Informationen über das Pipeline-Layout so früh wie möglich bereitzustellen, um die Leistung zu verbessern. Die Idee ist, die Menge der Kompilierung zu maximieren, die einmal voncreateShaderModule()
durchgeführt werden kann, anstatt mehrfach in mehreren Aufrufen vonGPUDevice.createComputePipeline()
undGPUDevice.createRenderPipeline()
.Hinweis: Unterschiedliche Implementierungen können
hints
auf unterschiedliche Weise behandeln, möglicherweise ignorieren sie sogar vollständig. Das Bereitstellen von Hinweisen garantiert keine verbesserte Shader-Kompilierungsleistung in allen Browsern/Systemen. label
Optional-
Ein String, der ein Label bereitstellt, das zur Identifizierung des Objekts verwendet werden kann, z. B. in
GPUError
-Meldungen oder Konsolenwarnungen. sourceMap
Optional-
Eine Definition der Quellkarte, um die Integration mit Entwicklertools zu ermöglichen, wie z.B. das Debuggen der Quellsprache. WGSL-Namen (Bezeichner) in Quellkarten sollten den in WGSL identifier comparison definierten Regeln folgen. Wenn definiert, kann die Quellkarte als source-map-v3 Format interpretiert werden.
Hinweis: Unterschiedliche Implementierungen können
sourceMap
s auf unterschiedliche Weise behandeln, möglicherweise ignorieren sie sogar vollständig.
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 einfachen Render-Demo wird unser Shader-Modul mit folgendem 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.");
}
let device = await adapter.requestDevice();
// ...
// later on
const shaderModule = device.createShaderModule({
code: shaders,
});
// ...
}
Spezifikationen
Specification |
---|
WebGPU # dom-gpudevice-createshadermodule |
Browser-Kompatibilität
BCD tables only load in the browser