如何在 WGSL 中使用随机数?
How to use a random number within WGSL?
我正在尝试在 WebGPU 应用程序中创建片段着色器以渲染黑白图像噪声。
为此,我只希望每个像素都具有这样的随机颜色值:
[[stage(fragment)]]
fn main() -> [[location(0)]] vec4<f32> {
let color: f32 = random();
return vec4<f32>(color, color, color, 1.0);
}
但是WGSL
好像没有提供returns随机数的功能。至少我在 specifications.
中找不到任何东西
有没有办法将随机数输入到每个片段的片段着色器中?
WGSL 或 GLSL 中没有随机功能,因此您必须实现自己的 RNG。
正如@skmr 所描述的那样,有不同的方法可以通过 CPU 生成的数字并通过着色器内的统一或算法馈入着色器。
我正在尝试在 WebGPU 应用程序中创建片段着色器以渲染黑白图像噪声。
为此,我只希望每个像素都具有这样的随机颜色值:
[[stage(fragment)]]
fn main() -> [[location(0)]] vec4<f32> {
let color: f32 = random();
return vec4<f32>(color, color, color, 1.0);
}
但是WGSL
好像没有提供returns随机数的功能。至少我在 specifications.
有没有办法将随机数输入到每个片段的片段着色器中?
WGSL 或 GLSL 中没有随机功能,因此您必须实现自己的 RNG。 正如@skmr 所描述的那样,有不同的方法可以通过 CPU 生成的数字并通过着色器内的统一或算法馈入着色器。