El W3C揭幕 最近, WebGPU和WebGPU着色语言规范的初稿 (WGSL),它定义了用于执行GPU操作(例如渲染和计算)的API,以及用于编写GPU端程序的着色器语言。
这些规格 在概念上类似于Vulkan,Metal和Direct3D 12 API。 规范是由一个工作组准备的,该工作组包括Mozilla,Google,Apple和Microsoft的工程师。
用于Web工作组的GPU的目标是在Web平台与本机系统平台中提供的现代3D图形和计算功能之间提供接口。 了解有关目标,范围和可交付成果的更多信息。
Web社区组GPU制定了该工作组采用的规范。 社区小组继续推动有关规范的技术工作并开发新功能。 该工作组与社区组一起制定建议途径的规范。
从概念上讲 WebGPU与WebGL的不同之处在于 图形API Vulkan与OpenGL不同,但它不是基于特定的图形API,而是通用层,它使用与Vulkan,Metal和Direct3D中相同的低级基元。
WebGPU为JavaScript应用程序提供了用于底层控制的工具关于组织, 处理命令并将其传输到GPU,管理相关的资源,内存,缓冲区,纹理对象和已编译的图形着色器。 通过这种方法,您可以减少开销并提高GPU效率,从而为图形应用程序实现更高的性能。
网络GPU 允许您为网络创建复杂的3D项目 不能以与直接访问Vulkan,Metal或Direct3D的独立程序相同的方式工作,但不与特定平台绑定。
网络GPU 还提供了移植本地图形程序的附加功能 通过在WebAssembly中进行编译,将其转换为基于Web的表单。 除了3D图形外,WebGPU还涵盖了将计算外包给GPU端和运行着色器的可能性。
WebGPU的主要功能:
- 单独的资源管理,准备工作和命令传输到GPU(在WebGL中,一个对象同时负责所有事情)。 提供了三个单独的上下文:GPUDevice,用于创建纹理和图章之类的资源; GPUCommandEncoder对单个命令进行编码,包括处理和计算阶段; GPUCommandBuffer排队等待在GPU上执行。 可以在与一个或多个画布关联的区域中渲染结果,也可以不渲染而渲染结果(例如,在运行计算任务时)。 通过分段,可以轻松地在可以在不同线程上运行的不同控制器上分离资源创建和准备操作。
- 处理状态的另一种方法s。 WebGPU 提供两个对象GPURenderPipeline和GPUComputePipeline, 允许组合开发人员预定义的不同状态,这使浏览器不会在其他工作(如重建着色器)上浪费资源。 支持的状态包括着色器,顶点缓冲区和属性布局,附加的组布局,合并,深度和模板,以及后处理输出格式。
- 绑定模型非常类似于Vulkan资源池工具。 为了将资源分组,WebGPU提供了一个GPUBindGroup对象,该对象在键入命令时可以链接到相同类型的其他对象,以用于着色器中。 此类组的创建允许驱动程序提前采取必要的准备操作,而浏览器允许浏览器在绘制调用之间更快地更改资源绑定。 可以使用GPUBindGroupLayout对象预定义资源链接的布局。
最后, 如果您有兴趣了解更多信息 关于笔记,您可以查看详细信息在以下链接中。