GPUShaderModule

实验性: 这是一个 实验性技术
在生产环境中使用之前,请仔细查看 浏览器兼容性表

安全上下文:此功能仅在 安全上下文(HTTPS)中可用,在某些或所有 支持的浏览器 中。

GPUShaderModuleWebGPU API 的一个接口,它表示一个内部着色器模块对象,一个包含 WGSL 着色器代码的容器,这些代码可以提交给 GPU,由管道执行。

GPUShaderModule 对象实例是使用 GPUDevice.createShaderModule() 创建的。

实例属性

label 实验性

一个字符串,提供一个标签,可用于识别对象,例如在 GPUError 消息或控制台警告中。

实例方法

getCompilationInfo() 实验性

返回一个 Promise,该 Promise 以一个 GPUCompilationInfo 对象作为结果,其中包含在 GPUShaderModule 编译期间生成的错误信息。

示例

在我们的 基本渲染演示 中,我们的着色器模块是使用以下代码创建的

js
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
# gpushadermodule

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。

另请参阅