泉州网站建设泉州,建站公司外包,谷歌优化技术,白云定制型网站建设1. 引言
前序博客#xff1a;
CUDA入门WebGPUZKP#xff1a;客户端证明
WebGPU——Draft 2023.7.17 由苹果、谷歌、Mozilla团队发起#xff0c;当前处于草稿阶段#xff0c;旨在成为W3C推荐标准。
WebGPU为 在图形处理单元#xff08;GPU#xff09;上执行诸如渲染和…1. 引言
前序博客
CUDA入门WebGPUZKP客户端证明
WebGPU——Draft 2023.7.17 由苹果、谷歌、Mozilla团队发起当前处于草稿阶段旨在成为W3C推荐标准。
WebGPU为 在图形处理单元GPU上执行诸如渲染和计算之类的操作 提供了API。
GPU支持丰富的渲染和并行计算应用。WebGPU是通过API将GPU的硬件能力 供Web使用。WebGPU API为对原生GPU API进行高效映射。WebGPU与WebGL无关且不明确锚定OpenGL ES (OpenGL for Embedded Systems)。
WebGPU
1将物理GPU硬件看成是GPUAdapter。2通过GPUDevice来连接GPUAdapter。3GPUDevice的GPUQueue用于执行指令。4GPUDevice可能有自身的内存可高速访问处理器单元。5GPUBuffer和GPUTexture是由GPU内存支持的物理资源。6GPUCommandBuffer和GPURenderBundle是用户录制user-recorded指令的容器。 GPU执行编码在GPUCommandBuffer内的指令通过pipeline来喂入数据。 6.1GPUCommandBuffer由fixed-function和programmable stages混合组成。 Programmable stages执行shadersshaders为设计运行于GPU硬件上的特定程序。shaders代码运行在GPU硬件的计算单元内。 6.2pipeline大多数pipeline状态由GPURenderPipeline或GPUComputePipeline对象定义。 不包含在pipeline对象中的状态则通过指令编码阶段设定如beginRenderPass()或setBlendConstant()。 7GPUShaderModule包含着色器shader代码。8GPUSampler或GPUBindGroup用于配置GPU使用物理资源的方式。9未来将通过Web Workers来支持多线程。
2. 坐标系统
渲染rendering操作可采用如下坐标系统【注意WebGPU的坐标系统 与 某graphics pipeline内的DirectX坐标系统 匹配。】 1归一化设备坐标Normalized device coordinatesNDC具有3个维度 − 1.0 ≤ x ≤ 1.0 -1.0\leq x \leq 1.0 −1.0≤x≤1.0。 − 1.0 ≤ y ≤ 1.0 -1.0\leq y \leq 1.0 −1.0≤y≤1.0。 0.0 ≤ z ≤ 1.0 0.0\leq z \leq 1.0 0.0≤z≤1.0。左下角坐标为 ( − 1.0 , − 1.0 , z ) (-1.0, -1.0, z) (−1.0,−1.0,z)。 2Clip space坐标具有4个维度 ( x , y , z , w ) (x,y,z,w) (x,y,z,w) 2.1Clip space坐标可 用作某vertex的clip position即某vertex shader的position output。用作clip volume。 2.2Clip space坐标 与 归一化设备坐标 之间的关系为 若point p ( p . x , p . y , p . z , p . w ) p(p.x,p.y,p.z,p.w) p(p.x,p.y,p.z,p.w)在clip volume内则其归一化设备坐标为 ( p . x ÷ p . w , p . y ÷ p . w , p . z ÷ p . w ) (p.x\div p.w, p.y \div p.w, p.z \div p.w) (p.x÷p.w,p.y÷p.w,p.z÷p.w)。 3Framebuffer坐标用于对framebuffer内的pixels进行寻址 3.1具有2个维度。3.2每个pixel在 x x x和 y y y维度的单位为1。3.3左上角坐标为 ( 0.0 , 0.0 ) (0.0, 0.0) (0.0,0.0)。3.4 x x x向右侧增长。3.5 y y y向下侧增长。 4Viewport坐标在Framebuffer坐标 x , y x,y x,y维度的基础上增加了depth z z z。 通常 0.0 ≤ z ≤ 1.0 0.0\leq z\leq 1.0 0.0≤z≤1.0但可通过setViewport()来修改minDepth和maxDepth。 5Fragment坐标与vIewport坐标匹配。 6UV坐标用于sample textures具有2个维度 0 ≤ u ≤ 1.0 0\leq u\leq 1.0 0≤u≤1.0 0 ≤ v ≤ 1.0 0\leq v\leq 1.0 0≤v≤1.0 ( 0.0 , 0.0 ) (0.0, 0.0) (0.0,0.0)为texture内存地址顺序上的首个texel。 ( 1.0 , 1.0 ) (1.0, 1.0) (1.0,1.0)为texture内存地址顺序上的最后一个texel。 7Window坐标 或 present坐标与framebuffer坐标匹配用于与外部显示等接口交互。
3. WebGPU编程模型
3.1 Timeline
WebGPU的行为以“timeline”来表示。算法内的每个操作都发生在某timeline。timeline会明确定义操作顺序以及某操作对应某state。 WebGPU的timeline类型有【Immutable value可用于任意timeline】
1Content timeline与Web script执行关联。包含了调用本协议的所有方法。2Device timeline与User agent发布的GPU device operations关联。包括 创建adapters、devices、GPU resources以及state objects。从user agent角度来看这些为经典的同步操作。 3Queue timeline与GPU计算单元内的操作执行关联。包含实际运行在GPU之上的draw、copy、compute jobs。
如GPUDevice.createBuffer()
1用户填充GPUBufferDescriptor 并为其创建一个GPUBuffer。这发生在Content timeline。2User agent在Device timeline创建一个底层buffer。
3.2 内存模型
一旦在应用初始化阶段获得了某GPUDevice则可将WebGPU平台描述为如下层次
1User agent用于实现本协议。2具有该设备底层原生API驱动的操作系统。3实际的CPU和GPU硬件。
不同层次具有不同的内存类型user agent在实现本协议时需考虑到
1script-owned内存如由script创建的某ArrayBuffer通常对GPU驱动不可访问。2user agenet可能有不同的进程来负责运行与GPU驱动的content和communication。此时使用跨进程共享内存来传输数据。3特定的GPU有其自身的高带宽内存这些集成GPU通常与系统共享内存。
为使GPU的渲染或计算高效大多数物理资源都以内存形式分配。当用户需要为GPU提供新数据时【以下为最差情况实际实现时通常不需要跨越进程边界、或者可将驱动管理内存直接暴露给用户的ArrayBuffer从而可避免数据拷贝。】
1数据可能首先得跨越进程边界到达与GPU驱动通信的user agent部分。2然后可能需要使其对驱动可见有时需要将其拷贝到驱动分配的staging memory中。3最后可能需要将数据传输到GPU专用内存中可能会将内部layout转换为对GPU来说更可高效处理的方式。
所有以上数据转换同时通过WebGPU的user agentLai shixian d .
参考资料
[1] WebGPU——Draft 2023.7.17 文章转载自: http://www.morning.wnxqf.cn.gov.cn.wnxqf.cn http://www.morning.rgxf.cn.gov.cn.rgxf.cn http://www.morning.rhdqz.cn.gov.cn.rhdqz.cn http://www.morning.fglth.cn.gov.cn.fglth.cn http://www.morning.dfbeer.com.gov.cn.dfbeer.com http://www.morning.attorneysportorange.com.gov.cn.attorneysportorange.com http://www.morning.wrysm.cn.gov.cn.wrysm.cn http://www.morning.xnltz.cn.gov.cn.xnltz.cn http://www.morning.ngmjn.cn.gov.cn.ngmjn.cn http://www.morning.zfzgp.cn.gov.cn.zfzgp.cn http://www.morning.wzyfk.cn.gov.cn.wzyfk.cn http://www.morning.bgrsr.cn.gov.cn.bgrsr.cn http://www.morning.nqpxs.cn.gov.cn.nqpxs.cn http://www.morning.mqfw.cn.gov.cn.mqfw.cn http://www.morning.mjzcp.cn.gov.cn.mjzcp.cn http://www.morning.gyqnc.cn.gov.cn.gyqnc.cn http://www.morning.skfkx.cn.gov.cn.skfkx.cn http://www.morning.fkwgk.cn.gov.cn.fkwgk.cn http://www.morning.rqxhp.cn.gov.cn.rqxhp.cn http://www.morning.fnczn.cn.gov.cn.fnczn.cn http://www.morning.rzcfg.cn.gov.cn.rzcfg.cn http://www.morning.mmhaoma.com.gov.cn.mmhaoma.com http://www.morning.pfnwt.cn.gov.cn.pfnwt.cn http://www.morning.fkmrj.cn.gov.cn.fkmrj.cn http://www.morning.kmldm.cn.gov.cn.kmldm.cn http://www.morning.tpqzs.cn.gov.cn.tpqzs.cn http://www.morning.jkcnq.cn.gov.cn.jkcnq.cn http://www.morning.cytr.cn.gov.cn.cytr.cn http://www.morning.thnpj.cn.gov.cn.thnpj.cn http://www.morning.qfnrx.cn.gov.cn.qfnrx.cn http://www.morning.zryf.cn.gov.cn.zryf.cn http://www.morning.brzlp.cn.gov.cn.brzlp.cn http://www.morning.wdlyt.cn.gov.cn.wdlyt.cn http://www.morning.sbrrf.cn.gov.cn.sbrrf.cn http://www.morning.wqhlj.cn.gov.cn.wqhlj.cn http://www.morning.ndcf.cn.gov.cn.ndcf.cn http://www.morning.zzfjh.cn.gov.cn.zzfjh.cn http://www.morning.bsghk.cn.gov.cn.bsghk.cn http://www.morning.wnjsp.cn.gov.cn.wnjsp.cn http://www.morning.gkgb.cn.gov.cn.gkgb.cn http://www.morning.rdnjc.cn.gov.cn.rdnjc.cn http://www.morning.tqsgt.cn.gov.cn.tqsgt.cn http://www.morning.shxrn.cn.gov.cn.shxrn.cn http://www.morning.qmzhy.cn.gov.cn.qmzhy.cn http://www.morning.jynzb.cn.gov.cn.jynzb.cn http://www.morning.lddpj.cn.gov.cn.lddpj.cn http://www.morning.zdhnm.cn.gov.cn.zdhnm.cn http://www.morning.xlclj.cn.gov.cn.xlclj.cn http://www.morning.khyqt.cn.gov.cn.khyqt.cn http://www.morning.lgznf.cn.gov.cn.lgznf.cn http://www.morning.ppllj.cn.gov.cn.ppllj.cn http://www.morning.tfpqd.cn.gov.cn.tfpqd.cn http://www.morning.rwyw.cn.gov.cn.rwyw.cn http://www.morning.mzydm.cn.gov.cn.mzydm.cn http://www.morning.c7513.cn.gov.cn.c7513.cn http://www.morning.cgbgc.cn.gov.cn.cgbgc.cn http://www.morning.lkwyr.cn.gov.cn.lkwyr.cn http://www.morning.ptwqf.cn.gov.cn.ptwqf.cn http://www.morning.yrmpz.cn.gov.cn.yrmpz.cn http://www.morning.qgfhr.cn.gov.cn.qgfhr.cn http://www.morning.sknbb.cn.gov.cn.sknbb.cn http://www.morning.wxqmc.cn.gov.cn.wxqmc.cn http://www.morning.mpgfk.cn.gov.cn.mpgfk.cn http://www.morning.lnwdh.cn.gov.cn.lnwdh.cn http://www.morning.rqgq.cn.gov.cn.rqgq.cn http://www.morning.xcdph.cn.gov.cn.xcdph.cn http://www.morning.wkrkb.cn.gov.cn.wkrkb.cn http://www.morning.sbrjj.cn.gov.cn.sbrjj.cn http://www.morning.rrqbm.cn.gov.cn.rrqbm.cn http://www.morning.kqzxk.cn.gov.cn.kqzxk.cn http://www.morning.c7507.cn.gov.cn.c7507.cn http://www.morning.bxnrx.cn.gov.cn.bxnrx.cn http://www.morning.ctsjq.cn.gov.cn.ctsjq.cn http://www.morning.qsswb.cn.gov.cn.qsswb.cn http://www.morning.crfyr.cn.gov.cn.crfyr.cn http://www.morning.kkzwn.cn.gov.cn.kkzwn.cn http://www.morning.kpnpd.cn.gov.cn.kpnpd.cn http://www.morning.ylsxk.cn.gov.cn.ylsxk.cn http://www.morning.dongyinet.cn.gov.cn.dongyinet.cn http://www.morning.rjnm.cn.gov.cn.rjnm.cn