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

标签 typescript webgpu wgsl

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

White_noise (wikipedia)

为此,我只希望每个像素都有一个随机颜色值,如下所示:

[[stage(fragment)]]
fn main() -> [[location(0)]] vec4<f32> {
  let color: f32 = random();
  return vec4<f32>(color, color, color, 1.0);
}

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

有没有办法将随机数放入每个片段的片段着色器中?

最佳答案

WGSL 或 GLSL 中没有随机功能,因此您必须实现自己的 RNG。 有不同的方法可以通过 CPU 生成的数字并通过统一的或通过着色器内的算法输入着色器来实现它,如 @skmr 所描述的。

可能的算法可能是:https://indico.cern.ch/event/93877/contributions/2118070/attachments/1104200/1575343/acat3_revised_final.pdf

关于typescript - 如何在 WGSL 中使用随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69420527/

相关文章:

rust - Google chrome 和 Apple M1 中的计算着色器

webgpu - 如何将组件分配给 WGSL 中的混合向量?

过时的教程之后出现 WebGPU WGLSL 错误 : "access mode ' write' is not valid for the 'storage' address space"

typescript - 如何在nest.js中使用异常过滤器

typescript - 如何断言一个受歧视的联合是 typescript 单元测试中的某个变体?

typescript - 将字符串 "true"和 "false"从联合类型替换为 bool 值

typescript - Typescript 中的通用方法

2d - 如何在 webgpu 中创建 2d 剪贴蒙版?