webgpu实现粒子颗粒化飘动动画效果代码
代码语言:html
所属分类:粒子
代码描述:webgpu实现粒子颗粒化飘动动画效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> html,body { margin: 0; overflow: hidden; } canvas { width: 100%; } </style> </head> <body translate="no"> <canvas></canvas> <script > console.clear(); if (!navigator.gpu) { console.error("WebGPU not supported in this browser."); throw new Error("WebGPU not supported."); } async function initWebGPU() { const canvas = document.querySelector('canvas'); const adapter = await navigator.gpu.requestAdapter(); const device = await adapter.requestDevice(); const context = canvas.getContext('webgpu'); // Resize canvas to fit the window const dpi = 2; const resizeCanvas = () => { canvas.width = window.innerWidth * dpi; canvas.height = window.innerHeight * dpi; }; resizeCanvas(); window.addEventListener('resize', resizeCanvas); // Configure the canvas context const format = navigator.gpu.getPreferredCanvasFormat(); context.configure({ device: device, format: format, alphaMode: 'premultiplied' }); return { device, context, format }; } function createRenderLoop(device, context, positionBuffer, velocityBuffer, timeBuffer) { const shaderModule = createShaderModule(device); const pipeline = createRenderPipeline(device, shaderModule); const { computePipeline, bindGroup } = initComputePass(device, positionBuffer, velocityBuffer, timeBuffer); const renderBindGroupLayout = pipeline.getBindGroupLayout(0); const renderBindGroup = device.createBindGroup({ layout: renderBindGroupLayout, entries: [{ binding: 0, resource: { buffer: positionBuffer } }] }); let startTime = performance.now(); const render = () => { const elapsedTime = (performance.now() - startTime) * .0001; device.queue.writeBuffer(timeBuffer, 0, new Float32Array([elapsedTime])); const commandEncoder = device.createCommandEncoder(); // Compute Pass const computePass = commandEncoder.beginComputePass(); computePass.setPipeline(computePipeline); computePass.setBindGroup(0, bin.........完整代码请登录后点击上方下载按钮下载查看
网友评论0