相关文章推荐
谈吐大方的爆米花  ·  [WebGPU] KeyError: ...·  1 年前    · 
谈吐大方的爆米花  ·  Melhorias na ...·  1 年前    · 
谈吐大方的爆米花  ·  WebAssembly and ...·  1 年前    · 

允许使用 null 绑定组布局创建流水线布局

以前,若要创建空绑定组布局,需要添加绑定数为零的绑定组,这很不方便。现在,在创建流水线布局时,允许使用 null 绑定组布局,并且会忽略此类布局,因此不再需要执行此操作。这应该会简化开发工作。

例如,您可能希望创建一个仅使用绑定组布局 0 和 2 的流水线。您可以将绑定组布局 1 分配给片段数据,并将绑定组布局 2 分配给顶点数据,然后在不使用片段着色器的情况下进行渲染。请参阅 问题 377836524

const bgl0 = myDevice.createBindGroupLayout({ entries: myGlobalEntries });
const bgl1 = myDevice.createBindGroupLayout({ entries: myFragmentEntries });
const bgl2 = myDevice.createBindGroupLayout({ entries: myVertexEntries });
// Create a pipeline layout that will be used to render without a fragment shader.
const myPipelineLayout = myDevice.createPipelineLayout({
  bindGroupLayouts: [bgl0, null, bgl2],

允许视口超出渲染目标边界

我们放宽了视口验证要求,以允许视口超出渲染目标边界。这对于绘制可能延伸到当前视口之外的 2D 元素(例如界面)特别有用。请参阅问题 390162929

const passEncoder = myCommandEncoder.beginRenderPass({
  colorAttachments: [
      view: myColorTexture.createView(),
      loadOp: "clear",
      storeOp: "store",
// Set a viewport that extends past the render target's bounds by 8 pixels
// in all directions.
passEncoder.setViewport(
  /*x=*/ -8,
  /*y=*/ -8,
  /*width=*/ myColorTexture.width + 16,
  /*height=*/ myColorTexture.height + 16,
  /*minDepth=*/ 0,
  /*maxDepth=*/ 1,
// Draw geometry and complete the render pass as usual.

更轻松地在 Android 上使用实验性兼容性模式

现在,仅 chrome://flags/#enable-unsafe-webgpu 标志即可启用 Android 上实验性 WebGPU 兼容模式所需的所有功能。这样,您就可以使用 featureLevel: "compatibility" 选项在兼容模式下请求 GPUAdapter,甚至可以在不支持 Vulkan 的设备上访问 OpenGL ES 后端。请参阅以下示例和问题 dawn:389876644

// Request a GPUAdapter in compatibility mode.
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
  
webgpureport.org 中的兼容模式适配器信息。

移除了 maxInterStageShaderComponents 限制

正如之前所宣布的那样,我们移除了 maxInterStageShaderComponents 限制,原因有很多:

  • maxInterStageShaderVariables 重复:此限制已经用于类似用途,即控制着着色器阶段之间传递的数据量。
  • 差异较小:虽然这两项限制的计算方式略有不同,但这些差异很小,并且可以在 maxInterStageShaderVariables 限制范围内有效管理。
  • 简化:移除 maxInterStageShaderComponents 可简化着色器接口,并降低开发者的复杂性。他们可以专注于更恰当命名且更全面的 maxInterStageShaderVariables,而不是管理两个存在细微差异的单独限制。
  • 请参阅移除 intent问题 364338810

    Dawn 更新

    您无法再使用过滤采样器对深度纹理进行采样。请注意,深度纹理只能与非滤镜采样器或比较采样器搭配使用。请参阅问题 379788112

    WGPURequiredLimitsWGPUSupportedLimits 结构已展平为 WGPULimits。请参阅问题 374263404

    重命名了以下结构体。请参阅问题 42240793

  • WGPUImageCopyBuffer 现为 WGPUTexelCopyBufferInfo
  • WGPUImageCopyTexture 现在为 WGPUTexelCopyTextureInfo
  • WGPUTextureDataLayout 现为 WGPUTexelCopyBufferLayout
  • subgroupMinSizesubgroupMaxSize 成员已添加到 WGPUAdapterInfo 结构体中。请参阅 webgpu-headers PR

    现在,您可以使用 DAWN_TRACE_FILE_BASE 环境变量运行程序,跟踪 Metal 中的 Dawn API 使用情况,该变量会保存一个 .gputrace 文件,该文件稍后可加载到 XCode 的 Metal 调试程序中。请参阅 Debugging Dawn 文档。

    本文仅介绍了一些主要亮点。查看详尽的提交内容列表

    WebGPU 中的新变化

    WebGPU 新变化系列中涵盖的所有内容的列表。

    Chrome 138

  • 使用缓冲区作为绑定资源的简写形式
  • 对创建时映射的缓冲区大小要求的更改
  • 近期 GPU 的架构报告
  • 废弃 GPUAdapter isFallbackAdapter 属性
  • Dawn 更新
  • Chrome 137

  • 使用纹理视图进行 externalTexture 绑定
  • 在不指定偏移量和大小的情况下复制缓冲区
  • WGSL workgroupUniformLoad 使用指向原子的指针
  • GPUAdapterInfo powerPreference 属性
  • 移除了 GPURequestAdapterOptions compatibilityMode 属性
  • Dawn 更新
  • Chrome 136

  • GPUAdapterInfo isFallbackAdapter 属性
  • 改进了 D3D12 上的着色器编译时间
  • 保存和复制画布照片
  • 提升效果兼容模式限制
  • Dawn 更新
  • Chrome 135

  • 允许使用 null bind 组布局创建流水线布局
  • 允许视口超出渲染目标边界
  • 更轻松地在 Android 上访问实验性兼容性模式
  • 移除了 maxInterStageShaderComponents 限制
  • Dawn 更新
  • Chrome 134

  • 使用子群组改进机器学习工作负载
  • 移除了对可作为可混合类型的浮点可过滤纹理类型的支持
  • Dawn 更新
  • Chrome 133

  • 额外的 unorm8x4-bgra 和 1 个组成部分的顶点格式
  • 允许使用未定义的值请求未知限制
  • WGSL 对齐规则变更
  • 使用舍弃功能提升 WGSL 性能
  • 为外部纹理使用 VideoFrame displaySize
  • 使用 copyExternalImageToTexture 处理非默认方向的图片
  • 改进开发者体验
  • 使用 featureLevel 启用兼容模式
  • 清理实验性子群组功能
  • 废弃了 maxInterStageShaderComponents 限制
  • Dawn 更新
  • Chrome 132

  • TextureView 用法
  • 32 位浮点纹理混合
  • GPUDevice adapterInfo 属性
  • 使用无效格式配置画布上下文会抛出 JavaScript 错误
  • 过滤纹理上的采样器限制
  • 扩展了小组实验
  • 改进开发者体验
  • 对 16 位归一化纹理格式的实验性支持
  • Dawn 更新
  • Chrome 131

  • 在 WGSL 中剪裁距离
  • GPUCanvasContext getConfiguration()
  • 点和线基元不得有深度偏差
  • 针对子群组的包含性扫描内置函数
  • 对多绘制间接的实验性支持
  • 着色器模块编译选项“严格数学”
  • 移除了 GPUAdapter requestAdapterInfo()
  • Dawn 更新
  • Chrome 130

  • Metal 上的着色器编译时间缩短
  • GPUAdapter requestAdapterInfo() 已废弃
  • Dawn 更新
  • Chrome 129

  • 支持 HDR 和画布色调映射模式
  • 对子群组的支持更广泛
  • Dawn 更新
  • Chrome 128

  • 使用子群组进行实验
  • 废弃了为线条和点设置深度偏差的功能
  • 在 preventDefault 的情况下隐藏未捕获的错误开发者工具警告
  • WGSL 会先插值采样,然后
  • Dawn 更新
  • Chrome 127

  • 对 Android 上的 OpenGL ES 的实验性支持
  • GPUAdapter info 属性
  • WebAssembly 互操作性改进
  • 改进了命令编码器错误
  • Dawn 更新
  • Chrome 126

  • 提高了 maxTextureArrayLayers 上限
  • 针对 Vulkan 后端的缓冲区上传优化
  • 着色器编译时间改进
  • 提交的命令缓冲区必须是唯一的
  • Dawn 更新
  • Chrome 125

  • 子群组(功能正在开发中)
  • 渲染到 3D 纹理的切片
  • Dawn 更新
  • Chrome 124

  • 只读和读写存储纹理
  • 服务工件和共享工件支持
  • 新的适配器信息属性
  • bug 修复
  • Dawn 更新
  • Chrome 123

  • WGSL 中对 DP4a 内置函数的支持
  • WGSL 中的无限制指针参数
  • WGSL 中用于解引用复合体的语法糖
  • 为模板和深度方面分别提供只读状态
  • Dawn 更新
  • Chrome 122

  • 利用兼容模式扩大覆盖面(功能正在开发中)
  • 提高了 maxVertexAttributes 上限
  • Dawn 更新
  • Chrome 121

  • 支持 Android 上的 WebGPU
  • 在 Windows 上使用 DXC 而非 FXC 进行着色器编译
  • 计算和渲染通道中的时间戳查询
  • 着色器模块的默认入口点
  • 支持将 display-p3 用作 GPUExternalTexture 色彩空间
  • 内存堆信息
  • Dawn 更新
  • Chrome 120

  • 支持 WGSL 中的 16 位浮点值
  • 深度-模板状态的变更
  • 适配器信息更新
  • 时间戳查询量化
  • 春季大扫除功能
  • Chrome 119

  • 可滤的 32 位浮点纹理
  • unorm10-10-10-2 顶点格式
  • rgb10a2uint 纹理格式
  • Dawn 更新
  • Chrome 118

  • copyExternalImageToTexture() 中的 HTMLImageElement 和 ImageData 支持
  • 对读写和只读存储纹理的实验性支持
  • Dawn 更新
  • Chrome 117

  • 取消设置顶点缓冲区
  • 取消设置绑定组
  • 在设备丢失时,忽略异步流水线创建错误
  • SPIR-V 着色器模块创建更新
  • 改进开发者体验
  • 使用自动生成的布局缓存流水线
  • Dawn 更新
  • Chrome 116

  • WebCodecs 集成
  • GPUAdapter requestDevice() 返回的丢失设备
  • 在调用 importExternalTexture() 时保持视频流畅播放
  • 规范合规性
  • 改进开发者体验
  • Dawn 更新
  • Chrome 115

  • 支持的 WGSL 语言扩展
  • 对 Direct3D 11 的实验性支持
  • 在使用交流电源时默认获取独立显卡
  • 改进开发者体验
  • Dawn 更新
  • Chrome 114

  • 优化 JavaScript
  • 对未配置的画布使用 getCurrentTexture() 会抛出 InvalidStateError
  • WGSL 更新
  • Dawn 更新
  • Chrome 113

  • importExternalTexture() 中使用 WebCodecs VideoFrame 源
  • 如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。

    最后更新时间 (UTC):2025-03-26。

    [[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-03-26。"],[],[]]