Orillusion

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

    WebGPU为什么要封装三套api?

    中文社区
    vulkan metal dx12 dawn
    2
    3
    634
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • X
      XDX 最后由 编辑

      摘录的相关介绍:WebGPU是一套基于浏览器的图形API,浏览器封装了现代图形API(Dx12、Vulkan、Metal)。

      有两个问题:
      1、为什么不像webgl那样只对Vulkan进行封装呢,是为了更好的性能吗,据我了解,Vulkan除了macos都是支持的。

      2、目前的封装是这么一种调用顺序吗:
      if(windows && supportDX12) Dx12;
      else if(mac || ios) Metal;
      else Vulkan;

      只找到一个相关的讨论,但并不怎么理解他们讨论的内容。。。[讨论地址]

      google的dawn:

      • D3D12 on Windows 10
      • Metal on macOS and iOS
      • Vulkan on Windows, Linux, ChromeOS, Android and Fuchsia
      • OpenGL as best effort where available
      1 条回复 最后回复 回复 引用 0
      • shuangliu
        shuangliu 最后由 shuangliu 编辑

        1. 很大程度上,WebGPU 的出现就是为了 Mac OS & IOS,WebGL 发展缓慢的一个很重要的原因就是苹果不支持,直到这两年才将WebGL的标准移植到 Metal,所以WebGPU 制定之初,就是为了满足 Metal,毕竟Mac & IOS 也占据了半壁江山
          除此之外,D3D12是目前最先进的图形API,性能也确实是最好的,所以对于支持D3D12的设备,优先使用D3D12肯定是最好的。

        2. 封装顺序你写的基本是正确的, Dawn 的官网已经说明了:
          Screen Shot 2022-05-18 at 13.43.43.png
          但这个顺序,对大部分程序来说不是运行时的选择,而会是编译时的选择,针对不同操作系统打包时,只编译其中一种就行,比如,win10就编译D3D12的部分,Mac编译 Metal, 其他系统才会编译 Vulkan。

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

          @shuangliu 非常感谢!

          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