当前位置: 首页 > news >正文

图形平台API和WebAssembly AI

图形平台对比 

UE(虚幻引擎)、Unity、Cesium和Three.js这四个不同的3D图形和游戏开发平台的主要特点:

特性/平台UE(虚幻引擎)UnityCesiumThree.js
类型商业游戏引擎商业游戏引擎开源地理信息系统(GIS)引擎开源WebGL库
主要用途游戏开发、电影制作、实时渲染应用游戏开发、实时渲染应用地理信息系统、3D地图可视化Web端的3D内容展示、数据可视化
开发语言C++(蓝图系统无需编写代码)C#(UnityScript已弃用)JavaScript/HTML/CSSJavaScript/HTML/CSS
平台支持Windows、macOS、Linux、游戏主机、移动设备Windows、macOS、Linux、游戏主机、移动设备Web浏览器、桌面应用程序Web浏览器
图形能力高(支持PBR、光线追踪等高级渲染技术)高(支持PBR、光线追踪等高级渲染技术)中(专注于地理数据渲染)中(依赖于WebGL,性能受限)
社区与资源强大,丰富的游戏开发资源强大,丰富的游戏开发资源较小,专注于GIS领域较大,Web开发者社区
许可证类型商业许可(部分版本免费)商业许可(部分版本免费)开源(部分商业服务)开源(MIT许可证)
学习曲线较陡(功能丰富,需要时间掌握)中等(相对易学,但功能同样丰富)中等(需要GIS知识背景)简单(对于熟悉Web开发的用户)
适用的项目类型高端游戏、影视特效、复杂交互应用游戏开发、建筑可视化、交互应用地图服务、城市规划、地理分析网页3D效果、轻量级3D应用、数据可视化

图形API对比

OpenGL、WebGL、Vulkan和WebGPU这四个图形API的主要特点:

特性/APIOpenGLWebGLVulkanWebGPU
类型图形APIWeb标准,基于OpenGL ES的API图形APIWeb标准,下一代图形API
发布年份1992201120162022(预计)
主要用途高性能图形渲染,广泛用于桌面和移动设备在Web浏览器中渲染3D图形高性能图形渲染,用于桌面和移动设备在Web浏览器中渲染3D图形,支持现代图形特性
语言支持C/C++JavaScript(通过WebGL API)C/C++JavaScript/HTML(通过WebGPU API)
平台支持Windows、macOS、Linux、移动设备所有支持WebGL的Web浏览器Windows、Linux、Android、iOS支持WebGPU的Web浏览器
性能特性高性能,但驱动程序开销大性能受限于浏览器和硬件低开销,高性能,控制级别高低开销,高性能,现代图形特性
内存管理由驱动程序管理由浏览器管理应用程序负责管理应用程序负责管理
多线程支持较弱,需要使用GL线程扩展不直接支持,依赖浏览器实现强大,设计上支持多线程设计上支持多线程,浏览器实现
硬件抽象层(HAL)驱动程序抽象层浏览器抽象层应用程序直接与硬件通信浏览器抽象层,但更接近硬件
着色语言GLSLGLSL(WebGL着色语言)SPIR-V(中间着色语言)WGSL(WebGPU着色语言)
驱动模型状态机模型,相对简单状态机模型,相对简单基于命令缓冲区的复杂模型基于命令缓冲区,类似于Vulkan
开发难度中等简单中等
社区与文档支持强大,历史悠久强大,Web开发社区强大,增长中新兴,但得到浏览器厂商支持

Vulkan和OpenGL 

Vulkan通常被认为在性能上优于OpenGL,尤其是在以下几个方面:

  1. 更低的开销:Vulkan设计上减少了CPU的开销,因为它使用了更高效的驱动模型。Vulkan允许开发者更直接地控制硬件,减少了驱动程序优化的需求。

  2. 多线程:Vulkan支持多线程渲染,这意味着开发者可以更有效地利用多核CPU,从而提高应用程序的性能。

  3. 更现代的架构:Vulkan是基于命令缓冲区的,这使得它能够更好地利用现代GPU的架构。这种设计允许更高效的命令提交和更少的API调用开销。

  4. 更好的控制:Vulkan提供了更多的控制权给开发者,包括内存管理和资源分配,这可以减少不必要的拷贝和转换操作,从而提高性能。

然而,这并不意味着Vulkan在所有情况下都绝对比OpenGL快。以下是一些需要考虑的因素:

  • 开发难度:Vulkan的API比OpenGL更复杂,因此需要更多的开发时间和专业知识来实现相同的性能水平。

  • 兼容性:OpenGL有着更广泛的硬件和平台支持,因为它已经存在了很多年。

  • 驱动支持:虽然Vulkan旨在减少对驱动程序优化的依赖,但实际上,驱动程序的质量仍然对性能有影响。

  • 场景特定:在某些情况下,特别是对于不太复杂的应用程序或旧硬件,OpenGL可能会提供足够的性能,而且开发起来更简单。

webGPU和webGL

WebGPU和WebGL都是用于在网页上实现高性能图形渲染的技术,但它们各自有不同的特点和适用场景。以下是关于两者在游戏开发方面的比较:

WebGL

  • 成熟度:WebGL自2011年以来就已经可用,因此它是一个相对成熟和稳定的技术。它有一个广泛的开发者社区和丰富的学习资源。
  • 兼容性:WebGL基于OpenGL ES,因此对于熟悉OpenGL的开发者来说,WebGL更容易上手。
  • 性能:WebGL提供了不错的性能,尤其是在移动设备上,但它受限于其基于OpenGL的架构,这可能限制了其性能潜力。

WebGPU

  • 现代性:WebGPU是基于Vulkan、DirectX 12和Metal等现代图形API设计的,它提供了更多的控制权和更好的性能潜力。
  • 多线程:WebGPU支持多线程,这对于游戏开发来说是一个重要的特性,因为它可以更有效地利用现代CPU的多核特性。
  • 性能:WebGPU旨在提供更高效的渲染路径,减少CPU的开销,从而提高性能。
  • 新特性:WebGPU支持更现代的图形和计算特性,这对于开发复杂的游戏效果和计算密集型的游戏场景非常有用。

对于游戏开发来说,WebGPU通常被认为是一个更好的选择,尤其是对于需要高性能图形处理和复杂计算的场景。以下是一些原因:

  • 性能:WebGPU提供了更低的CPU开销和更高的渲染效率,这对于游戏性能至关重要。
  • 现代API:WebGPU的设计更接近于现代图形API,这意味着开发者可以更容易地利用最新的图形硬件特性。
  • 多线程:WebGPU的多线程能力可以显著提高游戏引擎的效率,尤其是在处理复杂场景和物理计算时。

然而,WebGPU目前可能还没有WebGL那么普及,因为它是较新的技术,而且浏览器支持可能不如WebGL广泛。

如果你的目标用户群体使用的是较旧的浏览器,或者你的游戏不需要WebGPU提供的额外性能和特性,那么WebGL可能仍然是一个合适的选择。

Web 中的 AI 推断适用于大部分设备,AI 处理可以充分利用用户设备上的硬件,在网页本身中进行。如今,应用开发者和研究人员使用框架构建模型,模型在浏览器中使用 Tensorflow.js 或 ONNX Runtime Web 等运行时执行,运行时使用 Web API 执行。所有这些运行时最终都会通过 JavaScript 或 WebAssembly 在 CPU 上运行,或者通过 WebGL 或 WebGPU 在 GPU 上运行。

机器学习工作负载

机器学习 (ML) 工作负载通过计算节点图推送张量。张量是这些节点的输入和输出,用于对数据执行大量计算。

这一点非常重要,因为:

  • 张量是非常大的数据结构,可对具有数十亿权重的模型执行计算
  • 扩缩和推断可能会导致数据并行处理。这意味着对张量中的所有元素执行相同的操作。
  • 机器学习不要求精确。着陆到月球可能需要 64 位浮点数,但您可能只需要大量 8 位或更少的浮点数来进行人脸识别。

幸运的是,芯片设计师添加了一些功能,使模型运行更快、更炫酷,甚至让模型完全可以运行。

与此同时,WebAssembly 和 WebGPU 团队也在努力向 Web 开发者提供这些新功能。如果您是 Web 应用开发者,则不太可能经常使用这些低级别基元。我们预计您正在使用的工具链或框架将支持新功能和扩展,因此您只需对基础架构进行极少的更改即可受益。但如果您确实想手动调整应用的性能,那么这些功能与您的工作相关。

WebAssembly

WebAssembly (Wasm) 是一种紧凑、高效的字节码格式,运行时可以理解和执行。它旨在利用底层硬件功能,因此能够以接近原生速度执行。代码经过验证并在内存安全的沙盒化环境中执行。

Wasm 模块信息用密集二进制编码表示。与基于文本的格式相比,这意味着更快解码、加载更快、减少内存用量。它具有可移植性,因为它不会对现代架构尚不常见的底层架构做出假设。

WebAssembly 规范是迭代规范的,并在开放的 W3C 社区小组中开发。

二进制格式对托管环境不作任何假设,因此它也被设计为在非网络嵌入中也运行良好。

您的应用只需编译一次,即可在任何地方运行:桌面设备、笔记本电脑、手机或任何其他带有浏览器的设备。

参见:

https://www.unrealengine.com/zh-CN

Unity - 实时内容开发平台 | 3D、2D、VR & AR可视化

Cesium: The Platform for 3D Geospatial

Three.js – JavaScript 3D Library

https://developer.mozilla.org/zh-CN/docs/Web/API/WebGPU_API

WebGPU API - Web APIs | MDN

用于实现更快的 Web AI 的 WebAssembly 和 WebGPU 增强功能(第 1 部分)  |  Blog  |  Chrome for Developers

从 WebGL 到 WebGPU  |  Blog  |  Chrome for Developers 

有助于加快 Web AI 速度的 WebAssembly 和 WebGPU 增强功能(第 2 部分)  |  Blog  |  Chrome for Developers

https://www.vulkan.org/ 

https://webglfundamentals.org/

https://www.opengl.org/ 


http://www.mrgr.cn/news/56184.html

相关文章:

  • 20 Shell Script输入与输出
  • 医院信息化与智能化系统(5)
  • OpenLayers:用于在 web 应用程序中创建互动地图
  • Flux.using 使用说明书
  • 天锐绿盾 vs Ping32:企业级加密软件大比拼
  • 【分布式微服务云原生】《微服务架构大揭秘:流行框架与服务治理攻略》
  • EEE与WOL的关系
  • 玩转springboot之springboot项目监测
  • 关于检索评价的一份介绍
  • java使用枚举类存常量字典值
  • 【Qt】控件——Qt输入类控件、常见的输入类控件、输入类控件的使用、Line Edit、Text Edit、Combo Box、Spin Box
  • 《地下蚁国》风灵月影十项修改器使用教程
  • LLM 量化新篇章:FlatQuant 的平坦之道
  • HTMX 和 WebStencils 白皮书
  • gazebo显示urdf
  • 三部门联合推铁路电子客票,百望云率先完成产品配置,助力财务服务数智化升级
  • 安达发|家电组装多厂协同APS计划排程软件介绍
  • 网关挂了服务还能正常运行吗?
  • Spring Boot 3.3 【八】整合实现高可用 Redis 集群
  • 【1024程序员节】如何快速掌握人工智能技术技能
  • 【人工智能】Transformers之Pipeline(二十):令牌分类(token-classification)
  • “销量飞跃秘籍:打造吸引力销售网络与革新招商策略“
  • MyHdfs代码分享
  • Codeforces Round 974 (Div. 3) F. Sheriff‘s Defense(树形DP)
  • 最佳简历--JAVA程序员的项目经验如何写
  • Linux 基础目录与命令操作