【WebGPU】简介和开始

2024-01-28 00:20
文章标签 webgpu 简介

本文主要是介绍【WebGPU】简介和开始,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介

WebGPU 是一种 API,用于在 Web 应用中访问 GPU 的功能。在 WebGPU 出现之前,有一个 WebGL,它提供了 WebGPU 的部分功能。它开创了一种新的富媒体 Web 内容类别,并且开发者也利用它构建了许多精彩的内容。不过,它基于 2007 年发布的 OpenGL ES 2.0 API,而该 API 基于更旧的 OpenGL API。在那段时间里,GPU 取得了显著进步,用来与 GPU 进行交互的原生 API 也在与 Direct3D 12、Metal 和 Vulkan 一起发展。

WebGPU 将这些现代 API 的进展带到了 Web 平台。它专注于以跨平台的方式启用 GPU 功能,同时提供在 Web 上感觉自然并且比它所基于的一些原生 API 更简洁的 API。

GPU 通常与快速渲染详细图形相关,WebGPU 也不例外。它具有支持当今桌面和移动 GPU 上许多最流行的渲染技术所需的功能,并为未来随着硬件功能的不断发展添加新功能提供了途径。

除了渲染之外,WebGPU 还可以释放 GPU 用于执行通用、高度并行工作负载的潜力。这些计算着色器可以独立使用(无需任何渲染组件),也可以作为渲染流水线紧密集成的一部分使用。

代码基础

基础组成部分可以包括以下内容:

导入库(Import Libraries):根据需要导入所需的库或模块,例如图形库、计算库或WebGPU相关的库。

创建设备(Create Device):通过调用适当的函数或方法创建WebGPU设备对象。设备对象表示计算机上的物理或虚拟GPU。

创建上下文(Create Context):使用设备对象创建WebGPU上下文对象。上下文对象用于执行WebGPU操作,并与设备关联。

创建缓冲区(Create Buffers):使用上下文对象创建缓冲区对象。缓冲区对象用于存储数据,例如顶点数据、纹理数据或计算所需的数据。

创建纹理(Create Textures):使用上下文对象创建纹理对象。纹理对象用于表示图像数据,例如颜色、深度或阴影信息。

创建着色器(Create Shaders):使用上下文对象创建着色器对象。着色器对象是执行计算和图形渲染的程序,可以是顶点着色器、片段着色器或计算着色器。

创建管道(Create Pipeline):使用上下文对象创建管道对象。管道对象定义了图形渲染或计算操作的配置,包括着色器、渲染状态和其他信息。

创建绑定组(Create Bind Groups):使用上下文对象创建绑定组对象。绑定组对象用于将资源绑定到着色器,包括缓冲区、纹理和采样器等资源。

创建命令缓冲区(Create Command Buffers):使用上下文对象创建命令缓冲区对象。命令缓冲区对象用于存储要在GPU上执行的命令。

提交和执行命令(Submit and Execute Commands):使用队列对象将命令缓冲区提交到GPU上的执行队列中,以便按顺序执行命令。

开始

使用 WebGPU 进行计算,则可以使用 WebGPU 而不在屏幕上显示任何内容。但是,要进行可视化的时候,则需要画布。

创建一个新的 HTML 文档,其中包含一个 元素,以及用于查询画布元素的

<html><head><meta charset="utf-8"><title>WebGPU Life</title></head><body><canvas width="512" height="512"></canvas><script type="module">const canvas = document.querySelector("canvas");// Your WebGPU code will begin here!</script></body>
</html>

WebGPU 的 API 可能需要一段时间才能传播到整个 Web 系统。因此,首先检查浏览器是否可以使用 WebGPU。

检查是否存在用作 WebGPU 入口点的 navigator.gpu 对象,以下代码:

index.htmlif (!navigator.gpu) {throw new Error("WebGPU not supported on this browser.");
}

理想情况下,如果 WebGPU 不可用,则您需要通过让页面回退到不使用 WebGPU 的模式来通知用户。(也许可以改用 WebGL?)不过,在此 Codelab 中,您只需抛出一个错误即可阻止代码进一步执行。

确定浏览器支持 WebGPU 后,为应用初始化 WebGPU 的第一步就是请求 GPUAdapter。您可以将适配器视为 WebGPU 代表设备中特定的 GPU 硬件的表示形式。

这篇关于【WebGPU】简介和开始的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/651944

相关文章

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

【WebGPU Unleashed】1.1 绘制三角形

一部2024新的WebGPU教程,作者Shi Yan。内容很好,翻译过来与大家共享,内容上会有改动,加上自己的理解。更多精彩内容尽在 dt.sim3d.cn ,关注公众号【sky的数孪技术】,技术交流、源码下载请添加微信号:digital_twin123 在 3D 渲染领域,三角形是最基本的绘制元素。在这里,我们将学习如何绘制单个三角形。接下来我们将制作一个简单的着色器来定义三角形内的像素

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

【Tools】AutoML简介

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样                      🎵 方芳《摇太阳》 AutoML(自动机器学习)是一种使用机器学习技术来自动化机器学习任务的方法。在大模型中的AutoML是指在大型数据集上使用自动化机器学习技术进行模型训练和优化。

SaaS、PaaS、IaaS简介

云计算、云服务、云平台……现在“云”已成了一个家喻户晓的概念,但PaaS, IaaS 和SaaS的区别估计还没有那么多的人分得清,下面就分别向大家普及一下它们的基本概念: SaaS 软件即服务 SaaS是Software-as-a-Service的简称,意思是软件即服务。随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴起的一种完全创新的软件应用模式。 它是一种通过Internet提供

LIBSVM简介

LIBSVM简介 支持向量机所涉及到的数学知识对一般的化学研究者来说是比较难的,自己编程实现该算法难度就更大了。但是现在的网络资源非常发达,而且国际上的科学研究者把他们的研究成果已经放在网络上,免费提供给用于研究目的,这样方便大多数的研究者,不必要花费大量的时间理解SVM算法的深奥数学原理和计算机程序设计。目前有关SVM计算的相关软件有很多,如LIBSVM、mySVM、SVMLight等,这些

urllib与requests爬虫简介

urllib与requests爬虫简介 – 潘登同学的爬虫笔记 文章目录 urllib与requests爬虫简介 -- 潘登同学的爬虫笔记第一个爬虫程序 urllib的基本使用Request对象的使用urllib发送get请求实战-喜马拉雅网站 urllib发送post请求 动态页面获取数据请求 SSL证书验证伪装自己的爬虫-请求头 urllib的底层原理伪装自己的爬虫-设置代理爬虫coo

新一代车载(E/E)架构下的中央计算载体---HPC软件架构简介

老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节能减排。 无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事.而不是让内心的烦躁、焦虑、毁掉你本就不多的热情和定力。 时间不知不觉中,快要来到夏末秋初。一年又过去了一大半,成

AI学习指南深度学习篇-带动量的随机梯度下降法简介

AI学习指南深度学习篇 - 带动量的随机梯度下降法简介 引言 在深度学习的广阔领域中,优化算法扮演着至关重要的角色。它们不仅决定了模型训练的效率,还直接影响到模型的最终表现之一。随着神经网络模型的不断深化和复杂化,传统的优化算法在许多领域逐渐暴露出其不足之处。带动量的随机梯度下降法(Momentum SGD)应运而生,并被广泛应用于各类深度学习模型中。 在本篇文章中,我们将深入探讨带动量的随