0

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

White_noise(维基百科)

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

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

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

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

4

1 回答 1

1

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

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

于 2021-11-25T11:54:30.417 回答