Orillusion

    • 注册
    • 登录
    • 搜索
    • 版块
    • 最新
    • 标签

    WGSL中生成随机数

    中文社区
    wgsl
    4
    4
    177
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • O
      Optics 最后由 shuangliu 编辑

      怎么在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中产生随机数呢?"

      寻风觅迹 webgpu 2 条回复 最后回复 回复 引用 0
      • 寻风觅迹
        寻风觅迹 @Optics 最后由 编辑

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

        1 条回复 最后回复 回复 引用 0
        • shuangliu
          shuangliu 最后由 编辑

          这个跟 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
          • webgpu
            webgpu @Optics 最后由 编辑

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

            1 条回复 最后回复 回复 引用 0
            • First post
              Last post

            Recent Post

            • 目前可以预览demo了

              • 阅读更多
            • A

              这demo太卡了,我机器性能不算差,运行个demo cpu就将近100%

              • 阅读更多
            • A

              没有贴出app.vue的代码

              • 阅读更多
            • @aichangqing 可能是之前版本的cdn缓存没更新,可以清理本地缓存刷新再试一次

              • 阅读更多
            • 36e6af78-b023-4031-9b56-bd8713b44393-image.png

              已经是版本 113.0.5656.0(正式版本)canary (64 位)并且开启chrome://flags/#enable-unsafe-webgpu 为enable,为啥还不能预览demo

              • 阅读更多

            Copyright © 2022 Orillusion | Contact US