问题标签 [webgpu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
887 浏览

rust - wgpu-native 性能与 Vulkan

我一直在阅读有关 wgpu-rs 的文章,如果用于构建本机桌面应用程序,它会使用 Vulkan、Dx12、Metal 等。鉴于这一点,人们是否可以期望 wgpu-rs 和直接使用 vulkan 之间的性能相当?我是图形编程领域的业余爱好者,但一直在开发 rust 游戏,一旦 wgpu-rs 支持就能够构建到 wasm 的想法非常吸引人。

0 投票
1 回答
231 浏览

rust - 计算着色器破坏顶点缓冲区

我正在制作一个在 WGPU (Vulkan GLSL) 计算着色器中计算切线和双切线的教程。我正在用我在搅拌机中制作的 .obj 在 CPU 上创建顶点缓冲区。

这是计算着色器的代码。

这导致如下图所示。

损坏的立方体

问题出现在最后六行。

如果我删除这些行,则输出很好(尽管由于切线和双切线是 0 向量,所以照明都错了)。

在此处输入图像描述

为什么修改切线和双切线会弄乱顶点的位置?

这是上下文的其余代码。https://github.com/sotrh/learn-wgpu/tree/compute/code/intermediate/tutorial14-compute

编辑:

这是我调用计算着色器的代码。

着色器应该循环遍历网格中的所有三角形,并使用该三角形顶点的位置和 uv 坐标计算切线和双切线。我猜测与多个三角形共享的顶点同时被写入,导致这种内存损坏。

我不认为这是其他地方的着色器的问题,因为我对光使用相同的模型,而负责该模型的顶点着色器根本不使用切线和双切线。

查看 Render Doc 中的顶点数据表明它们的位置数据变得混乱。

渲染文档截图

如果我将切线和副切线设置为 ,这也是立方体的样子vec3(0, 1, 0)

在此处输入图像描述

我唯一的猜测是存储缓冲区有一个我不知道的字节对齐规则。我知道统一缓冲区就是这种情况,但是我将存储缓冲区用于我的实例化代码,这似乎没有任何问题。

0 投票
1 回答
900 浏览

javascript - 无法读取 null 的属性“requestDevice”

我试图在 WebGpu 中渲染 Web GPU 着色器对象

它返回此错误

未捕获(承诺中)类型错误:无法在 cube.html:28 处读取 null 的属性“requestDevice”

这是我的 requestDevice 代码

任何想法来解决这个错误?

0 投票
1 回答
121 浏览

google-chrome - 您如何确保在 WebGPU 中正确清除背景?

在使用 WebGPU 进行渲染时,是否需要设置一个魔术标志才能正确清除背景?我的渲染工作正常,除了我使用的任何设置,我看到最后显示的垃圾是在浏览器窗口中而不是背景颜色(如果我在附件中设置了非零的 clearColor,那么它将继续累积相同的颜色直到它最大): 在此处输入图像描述

我正在通过 emscripten CPP 接口使用 WebGPU,并在 Windows 上运行 Chrome Canary(版本 90.0.4407.0(官方构建)金丝雀(64 位))。

我的帧渲染看起来像这样(从 js 端的 requestAnimationFrame 调用):

使用以下设置设置管道:

是否有我错过的设置或者这是一个 Canary 错误?

0 投票
0 回答
111 浏览

gpu - 浏览器中的实时 GPU 路径跟踪

发现了一些像这样的酷项目。问题是,是否可以在浏览器中做同样的事情?我已经看到了 opengl es 的实现,但它相当慢

0 投票
0 回答
35 浏览

javascript - Azure 上的 WebGPU 部署

我目前有一个 webgpu 项目,虽然它可以在我的本地机器上运行而没有任何问题,但我现在想将此项目作为 Web 应用程序部署到 Azure。但是在它成功部署并且我尝试运行它之后,弹出这条消息:你没有权限查看这个目录或页面。。我尝试了一些关于web.config的解决方案,正如一些线程告诉我的那样,但没有运气。所以,我有两个问题:

  1. 有没有办法将此 WebGPU 项目部署为 Azure 上的 Web 应用程序?

  2. 我想将此项目部署为 Web 应用程序的原因是因为我想尝试使用哪个计算机资源来渲染对象,它将使用云资源还是客户端资源

谢谢你。

0 投票
1 回答
86 浏览

textures - WebGPU:在运行时更改纹理

我知道如何使用 queue.writeBuffer 更改矩阵。但是在渲染循环中切换纹理或采样器的正确/推荐方法是什么?或者我需要每个纹理一个管道?

提前谢谢

0 投票
0 回答
82 浏览

webgpu - 如何在 WebGPU 中垂直翻转纹理?

在阅读了很多规范和谷歌搜索之后,我仍然找不到在 WebGPU 中垂直翻转纹理的方法。

我正在寻找类似于gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true)WebGL 的东西。

甚至可能吗?我想它应该发生在某处device.createTexture()device.queue.copyExternalImageToTexture()电话中,但找不到任何东西。

目前,我在片段着色器中反转我的 UV,但我正在寻找一个不那么 hacky 的解决方案。

0 投票
1 回答
138 浏览

webgpu - 在 wgsl 着色器中导出变换矩阵

导出变换矩阵是着色器相当普遍的要求。是否有和 wgsl 标准库来做这种事情?即,即使是 mat4x4 - mat4x4 乘法也会很有用!

我在下面写了一个粗略的草稿,但这似乎是一种相当冗长的方式

0 投票
1 回答
232 浏览

typescript - 如何在 WGSL 中使用随机数?

我正在尝试在 WebGPU 应用程序中创建一个片段着色器来渲染黑白图像噪声。

White_noise(维基百科)

为此,我只希望每个像素具有这样的随机颜色值:

WGSL似乎没有提供返回随机数的函数。至少我在规格中找不到任何东西。

有没有办法让每个片段的随机数进入片段着色器?