• 版块
  • 最新
  • 标签
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠

Orillusion

1

在线

524

用户

151

主题

407

帖子

WGSL中生成随机数

已定时 已固定 已锁定 已移动 中文社区
wgsl
4 帖子 4 发布者 194 浏览
    • 从旧到新
    • 从新到旧
    • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • O 离线
    O 离线
    Optics
    写于 最后由 shuangliu 编辑
    #1

    怎么在wgsl中生成随机数?

    我想要在fragment shader中render一个有黑白噪声的图片

    就是每个pixel都增加一个随机的颜色,代码如下:

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

    但是wgsl貌似没有random()这个函数,在webgpu specification的文档里也没找到有关信息,请问,有没有办法可以在fragment shader中产生随机数呢?"

    寻风觅迹寻 webgpuW 2 条回复 最后回复
    0
  • 寻风觅迹寻 离线
    寻风觅迹寻 离线
    寻风觅迹
    在 中回复了 Optics 最后由 编辑
    #2

    @optics 随机数可以参考WebGL那个伪随机数函数

    1 条回复 最后回复
    0
  • shuangliuS 离线
    shuangliuS 离线
    shuangliu
    写于 最后由 编辑
    #3

    这个跟 WGSL 无关,任何一种shader 语言都没有自带 Math.random() 这种API,都需要开发者实现基本的伪随机算法,网上公开的算法和例子很多,比如

    https://zhuanlan.zhihu.com/p/390862782
    https://gamedev.stackexchange.com/questions/32681/random-number-hlsl

    基本上利用 fract/sin/cos 处理 position/uv/ 就可以实现基本的伪随机

    1 条回复 最后回复
    1
  • webgpuW 离线
    webgpuW 离线
    webgpu
    在 中回复了 Optics 最后由 编辑
    #4

    @optics
    可以参考这篇文章
    https://thebookofshaders.com/10/?lan=ch

    1 条回复 最后回复
    0

Copyright © 2023 Orillusion | Contact US

  • 登录

  • 没有帐号? 注册

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 版块
  • 最新
  • 标签
  • 登录

  • 没有帐号? 注册

  • 登录或注册以进行搜索。