WebGPU入门一

1 WebGPU学习开发环境配置

WebGPU的环境配置比较简单,不需要vite或webpack配置一个复杂的开发环境,直接使用.html文件即可。

1.1 支持WebGPU的浏览器

Chrome 113 beta测试版开始默认支持WebGPU。

1.2 index.html文件

创建index.html文件,<script>标签设置type=“module”,就可以在模块中编写ES6语法,不需要webpack和vite进行编译处理。

1.3 vscode编辑器

借助live server插件,就可以在代码页面直接右键在live server中打开,默认浏览器中打开执行。

测试是否支持webgpu

if (navigator.gpu) {
   console.log("support webgpu");
} else {
   console.log("not support webgpu");
}

2 WebGPU API和Canvas画布

WebGPU提供了很多相关的API,通过这些WebGPU API可以控制你的显卡GPU渲染3D场景计算数据

WebGPU API文档:https://www.w3.org/TR/webgpu/

 GPU:图形处理器,即电脑上的显卡,如果为了追求更好的性能,一般会在电脑上安装独立显卡。

2.1 使用WebGPU API获取到GPU设备对象

//浏览器请求GPU适配器
const adapter = await navigator.gpu.requestAdapter();
//获取GPU设备对象,通过GPU设备对象就可以使用WebGPU API控制GPU渲染过程
const device = await adapter.requestDevice();

获取GPU设备对象非常简单,执行上面两步操作即可。

***注意***

  • requestAdapter()和requestDevice都是异步函数,函数前需要加上es6语法关键字await

 device设备对象有很多方法和属性,可以去控制物理上的显卡GPU。

 2.2 device设备对象的属性和方法

device.createRenderPipeline();//创建渲染管线
device.createComputePipeline();//创建计算管线
device.createShaderModule();//创建着色器模块
device.createCommandEncoder();//创建命令对象(绘制和计算命令)
device.createBuffer();//创建缓冲区对象

device.createCommandEncoder();//创建命令对象(绘制和计算命令),不是创建编码器。

 2.3 获取WebGPU上下文

Canvas元素作为WebGPU的画布

const canvas = document.getElementById("player");
const context = canvas.getContext("webgpu");

2.4 配置WebGPU上下文

关联Canvas对象和GPU设备对象device。这样就能把Canvas元素作为WebGPU的画布,用来呈现3D渲染效果。

//配置webgpu上下文(canvas上下文和device绑定在一起):device设备,format颜色格式,
const format = navigator.gpu.getPreferredCanvasFormat();//获取浏览器canvas默认的颜色格式
context.configure({
   device:device,
   format:format,
})

3 创建顶点缓冲区、渲染管线

如果想渲染一个物体,需要先通过顶点坐标来定义该物体的几何形状。通过WebGPU的顶点缓冲区来创建顶点数据。

3.1 WebGPU坐标系

坐标原点是Canvas画布的中间位置,x轴水平向右,y轴竖直向上,Z轴与canvas画布垂直,朝向屏幕内。x,y取值范围【-1,1】,z取值范围【0,1】。(归一化)

用x,y分量可绘制2D平面图。3D效果会用到z坐标投影矩阵视图矩阵模型矩阵等深入概念。

3.2 类型化数组Float32Array表示顶点坐标

3.2.1 JavaScript类型化数组

JavaSc

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值