初学者对 WebGL 与 WebGPU 的看法(A Beginner’s Perspective of WebGL vs WebGPU)

初学者对 WebGL 与 WebGPU 的看法(A Beginner’s Perspective of WebGL vs WebGPU)

    • WebGL 和 WebGPU 之间的主要区别:
    • WebGL 是什么以及它适合哪些人使用?
    • WebGPU 是什么?它适合谁使用?
    • WebGL 和 WebGPU 的代码示例
    • 最终裁决:WebGL 与 WebGPU

在搜索了解 WebGPU 与 Vulkan 的关系与区别的时候发现的关于 WebGL 和 WebGPU 对比的不错的文章。

这里翻一下提供给需要的人。

PS:软件翻的,手动修改了一些别扭的地方,整体还行!

原文章地址:A Beginner’s Perspective of WebGL vs WebGPU


前言:

WebGL 作为一种广泛使用的图形应用程序接口(API),因其在多个平台上具有良好的兼容性而被众多开发者所青睐。

尽管如此,对于那些致力于探索图形处理和计算负荷极限的研究人员而言,WebGPU 展现出了其潜在的新功能、高效的硬件交互能力以及卓越的性能表现,预示着它将成为未来网络图形API发展的关键方向。

WebGL 与 WebGPU


WebGL 和 WebGPU 之间的主要区别:

WebGL 基于 OpenGL ES,其性能可能不如 DirectX。而 WebGPU 则采用 Vulkan 的标准 API 构建,提供了更出色的性能和更均衡的CPU/GPU利用

WebGL 作为一种成熟技术,已获得广泛的技术支持。相较之下,WebGPU 尚处于发展的早期阶段,其完整潜能尚未完全展现。

在API设计上,WebGL 实现了跨平台的兼容性,并为开发者提供了诸如 JavaScript 自动内存管理等便利特性;而 WebGPU 则降低了 JavaScript 的调用负担,并能自动管理资源同步。

就应用领域而言,WebGL 主要服务于浏览器中的 3D 图形渲染。WebGPU 的引入,则为复杂的视觉特效和机器学习计算带来了新的可能,这些在以往是不实际的。

比较WebGLWebGPU
API 类型低级 3D 图形 API现代图形和机器工作负载 API
发行年份2011自 2017 年起开始开发
一体化直接集成到浏览器中设计用于与现代 GPU 硬件高效交互
开发人员支持JavaScript 自动内存管理简单且无需编译减少过多 JavaScript 调用的开销,尽量减少样板代码
图形支持支持 3D 图形实现复杂的视觉效果,支持机器学习计算
支持苹果、谷歌、微软、Mozilla苹果、谷歌、Mozilla、微软、英特尔
兼容性跨平台兼容性针对现代硬件进行了优化,计划实现多平台兼容性
表现相对较慢,OpenGL 存在质量问题潜在的高性能、平衡的 CPU/GPU 使用率
访问 GPU允许浏览器利用计算机上的GPU资源有效地与现代 GPU 硬件交互
使用范围移动端 Web 标准,用于在线交互式 3D 图形在 GPU 上移植算法、机器学习计算、复杂的视觉效果

WebGL 是什么以及它适合哪些人使用?

WebGL 是一个功能强大的低级 3D 图形 API,通过 HTML5 Canvas 连接到 ECMAScript,并基于 OpenGL ES 构建。

在 Flash 消亡之后,WebGL 成为在线交互式 3D 图形的首选技术。

它专为寻求跨平台兼容性和无需额外插件即可实现 GPU 3D 加速的开发人员量身定制。

然而,与 DirectX 不同,由于它依赖于运行速度较慢的 OpenGL,因此它的可理解性有限。

在这里插入图片描述

1. WebGL 的优点

  • 直接浏览器集成,无需插件
  • 受到 Apple、Google、Microsoft 和 Mozilla 等主要浏览器供应商的支持
  • 提供跨平台兼容性和原生 GLSL 支持
  • WebKit 的开源特性允许用户进行修改和定制
  • 实现与其他 HTML 文档元素的直接交互

2. WebGL的缺点

  • 由于使用 OpenGL,速度相对较慢
  • 与 DirectX 相比缺乏可理解性
  • 实际运行技术因平台而异
  • OpenGL的质量问题使得游戏开发更倾向于使用针对Windows平台的D3D10+

WebGPU 是什么?它适合谁使用?

WebGPU 是一种前沿的 API,专为图形处理和机器负载而开发。

它克服了 WebGL 的局限性,展现了现代 GPU 硬件的强大功能,并拓宽了编程的应用范围。

其推出代表着网络图形处理的一大飞跃,将 DirectX 12、Metal 和 Vulkan 的特性带到了互联网上。

WebGPU 主要面向那些追求通过网页实现高级视觉效果、计算优化和 GPU 加速机器学习的开发者。

在这里插入图片描述

1. WebGPU 的优点

  • 展现现代 GPU 硬件的强大功能
  • 降低频繁JavaScript调用的额外负担
  • 自动管理资源同步
  • 如果使用得当,可以释放高性能能力
  • 提供计算着色器,实现灵活的编程和计算资源的处理

2. WebGPU的缺点

  • 仍处于早期发展阶段
  • 尚未实现全平台全面部署
  • WebGL 的后继者,但目前默认禁用
  • W3C 仍在设计功能改进的实现

WebGL 和 WebGPU 的代码示例

WebGL:交互式颜色光谱立方体

在此 WebGL 代码片段中,我们使用顶点着色器和片段着色器来创建立方体。

如果没有兼容的 WebGL 渲染器(例如 three.js),此功能将无法运行。


// 创建一个边长为 1 的立方体几何对象
var cubeGeometry = new THREE.BoxGeometry(1,1,1);// 顶点着色器代码
var vertexShader = `// 定义一个 varying 变量 vUv,用于传递顶点的 UV 坐标varying vec3 vUv; void main() {// 将顶点的位置赋值给 vUvvUv = position; // 计算并设置顶点的最终位置gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);}
`;// 片段着色器代码
var fragmentShader = `// 接收从顶点着色器传递过来的 vUv 变量varying vec3 vUv;void main() {// 将 vUv 作为颜色值设置给片段gl_FragColor = vec4(vUv, 1.);}
`;// 创建一个自定义的着色器材质
var cubeMaterial = new THREE.ShaderMaterial({// 指定顶点着色器代码vertexShader: vertexShader,// 指定片段着色器代码fragmentShader: fragmentShader,
});// 创建一个立方体网格对象,并使用自定义的着色器材质进行渲染
var cube = new THREE.Mesh(cubeGeometry, cubeMaterial);// 将立方体添加到场景中
scene.add(cube);

WebGPU:基本计算着色器

此 WebGPU 代码片段会启动一个基本计算着色器,将缓冲区的每个元素设置为相同的值。

它需要兼容 WebGPU 的浏览器,并且必须从安全的上下文中提供。

// 获取浏览器的 GPU 信息
const gpu = navigator.gpu;// 获取 canvas 的 GPU 呈现上下文
const context = canvas.getContext('gpupresent');// 请求 GPU 适配器
const adapter = await gpu.requestAdapter();// 请求 GPU 设备
const device = await adapter.requestDevice();// 定义着色器模块描述符
var shaderModuleDescriptor = {code: `// 定义一个结构体 Data[[block]] struct Data {value: u32;};// 定义一个存储缓冲区变量 buffer,绑定到 0 号绑定点,属于 0 号组[[binding(0), group(0)]] var<storage_buffer> buffer: Array<Data>;// 定义一个计算着色器函数 main,在计算阶段执行,工作组大小为 1[[stage(compute), workgroup_size(1)]] fn main([[builtin(global_invocation_id)]] id: vec3<u32>) {// 将 1234 赋值给 buffer 中索引为 id.x 的元素的 value 字段buffer[id.x].value = 1234;}`,
};// 创建着色器模块
var shaderModule = device.createShaderModule(shaderModuleDescriptor);

最终裁决:WebGL 与 WebGPU

在基于浏览器的 3D 图形的激烈竞争中,WebGL 和 WebGPU 都表现出了强大的竞争力。

但究竟谁才是王道?谁应该将自己的筹码放在哪种技术上?让我们深入探讨一下。

网络游戏开发

对于网络游戏的开发者而言,源自 Vulkan 的 WebGPU 无疑是最优选择。

在这样一个每一帧都至关重要、计算复杂性不断增长的生态中,WebGPU 带来的更佳性能和均衡的 CPU/GPU 利用,不仅优化了代码效率,也提升了玩家的游戏体验。

WebGPU 不断的进步和承诺的功能提升,更是暗示了这是一项具有未来保障的技术投资。

在这里插入图片描述

AR/VR 内容创作者

AR/VR 内容创建者倾向于使用 WebGL。凭借对 AR/VR 内容的可靠支持,WebGL 在可靠性至关重要的领域中脱颖而出。

与 HTML5 的无缝集成、原生 GLSL 支持和跨平台兼容性不仅保证了开发的简易性,还扩大了用户覆盖范围。

不过,请密切关注 WebGPU 在这些领域即将推出的增强功能。

在这里插入图片描述

机器学习爱好者

机器学习爱好者应该加入 WebGPU。

WebGPU 具有诸多优势,例如更低的 CPU 使用率和更高效地与现代 GPU 硬件交互,它大胆地涉足了未知领域。

在 GPU 上移植复杂算法可能会通过 WebGPU 的计算着色器得到改观,从而显著提升机器学习算法的性能。

在这里插入图片描述


结论:

在 WebGL 的跨平台兼容性和易用性,与 WebGPU 的现代高性能承诺之间,我们的判断如下:WebGL 依然是网络图形处理的可靠选择;而 WebGPU,虽然初出茅庐,但在处理密集型机器学习算法和复杂游戏应用方面展现了巨大潜力

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/379251.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

<数据集>UA-DETRAC车辆识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;20500张 标注数量(xml文件个数)&#xff1a;20500 标注数量(txt文件个数)&#xff1a;20500 标注类别数&#xff1a;4 标注类别名称&#xff1a;[car, van, others, bus] 序号类别名称图片数框数1car201871259342…

Jupyter Notebook安装及基本使用

Jupyter Notebook安装及基本使用 目录 Jupyter Notebook安装及基本使用方式一&#xff1a;Anaconda直接安装方式二&#xff1a;pip命令安装Jupyter使用虚拟环境 方式一&#xff1a;Anaconda直接安装 安装Anaconda 下载地址&#xff0c;输入邮箱&#xff0c;Windows下载 开始安…

字节抖音电商 后端开发岗位 一面

笔者整理答案&#xff0c;以供参考 自我介绍 项目&#xff08;20分钟&#xff09; RocketMQ延时消息的底层实现 回答&#xff1a; 延时消息的实现主要依赖于RocketMQ中的定时任务机制。消息被发送到Broker时&#xff0c;会先存储在一个特定的延时消息队列中。Broker会定时扫…

Python实战MySQL之数据库操作全流程详解

概要 MySQL是一种广泛使用的关系型数据库管理系统,Python可以通过多种方式与MySQL进行交互。本文将详细介绍如何使用Python操作MySQL数据库,包括安装必要的库、连接数据库、执行基本的CRUD(创建、读取、更新、删除)操作,并包含具体的示例代码,帮助全面掌握这一过程。 准…

【ROS2】高级:解锁 Fast DDS 中间件的潜力 [社区贡献]

目标&#xff1a;本教程将展示如何在 ROS 2 中使用 Fast DDS 的扩展配置功能。 教程级别&#xff1a;高级 时间&#xff1a;20 分钟 目录 背景 先决条件在同一个节点中混合同步和异步发布 创建具有发布者的节点创建包含配置文件的 XML 文件执行发布者节点创建一个包含订阅者的节…

linux下JDK的安装

前言&#xff1a; 安装部署java开发的代码都需要java环境&#xff0c;这里记录下linux下JDK的安装过程&#xff0c;仅供学习参考。 JDK的下载 下载地址&#xff1a;https://www.oracle.com/java/technologies/downloads 选择和操作系统匹配的版本进行下载 查看操作系统&…

026-GeoGebra中级篇-曲线(2)_极坐标曲线、参数化曲面、分段函数曲线、分形曲线、复数平面上的曲线、随机曲线、非线性动力系统的轨迹

除了参数曲线、隐式曲线和显式曲线之外&#xff0c;还有其他类型的曲线表示方法。本篇主要概述一下极坐标曲线、参数化曲面、分段函数曲线、分形曲线、复数平面上的曲线、随机曲线、和非线性动力系统的轨迹&#xff0c;可能没有那么深&#xff0c;可以先了解下。 目录 1. 极坐…

处理uniapp刷新后,点击返回按钮跳转到登录页的问题

在使用uniapp的原生返回的按钮时&#xff0c;如果没有刷新会正常返回到对应的页面&#xff0c;如果刷新后会在当前页反复横跳&#xff0c;或者跳转到登录页。那个时候我第一个想法时&#xff1a;使用浏览器的history.back()方法。因为浏览器刷新后还是可以通过右上角的返回按钮…

vue2导入elementui组件库

第一步安装 npm i element-ui -S 第二步在main.js中导入 第三步使用然后在运行项目

勘测院如何实现可控便捷的图纸安全外发?

勘测院&#xff0c;也称为勘测设计研究院或勘测设计院&#xff0c;是进行与地质、地形和地貌有关的勘察测量的单位&#xff0c;为各类工程项目提供准确的地质数据和设计依据。 勘测院会产生各类包括图纸在内的文件&#xff0c;如&#xff1a; 1、项目相关文件&#xff1a;项目…

测试开发面经总结(三)

TCP三次握手 TCP 是面向连接的协议&#xff0c;所以使用 TCP 前必须先建立连接&#xff0c;而建立连接是通过三次握手来进行的。 一开始&#xff0c;客户端和服务端都处于 CLOSE 状态。先是服务端主动监听某个端口&#xff0c;处于 LISTEN 状态 客户端会随机初始化序号&…

访问控制系列

目录 一、基本概念 1.客体与主体 2.引用监控器与引用验证机制 3.安全策略与安全模型 4.安全内核 5.可信计算基 二、访问矩阵 三、访问控制策略 1.主体属性 2.客体属性 3.授权者组成 4.访问控制粒度 5.主体、客体状态 6.历史记录和上下文环境 7.数据内容 8.决策…

Spring Boot集成syslog快速入门Demo

1.什么syslog&#xff1f; Syslog-ng是由Balabit IT Security Ltd.维护的一套开源的Unix和类Unix系统的日志服务套件。它是一个灵活的、可伸缩的系统日志记录程序。对于服务器日志集中收集&#xff0c;使用它是一个不错的解决方案。syslog-ng (syslog-Next generation) 是sysl…

图灵奖数据库大师Stonebraker师徒对数据库近20年发展与展望的2万字论文

2024年6月&#xff0c;81岁的图灵奖数据库大师Michael Stonebraker&#xff08;MIT&#xff09;和他的学生Andrew Pavlo&#xff08;CMU&#xff09;联名在数据库顶级期刊SIGMOD发表了一篇名字奇怪的论文&#xff0c;对数据库近20年的发展做了总结与展望。 两位作者都是数据库领…

pc端注册页面 密码校验规则

1.密码校验规则 格应包含大小写字母、数字和特殊符号,长度为8-20 var validateRetrievePassword (rule, value, callback) > {let reg /^(?.*[A-Za-z])(?.*\d)(?.*[~!#$%^&*()_<>?:"{},.\/\\;[\]])[A-Za-z\d~!#$%^&*()_<>?:"{},.\/\\;…

C语言:键盘录入案例

主要使用了scanf&#xff1b; scanf的使用方法和注意事项&#xff1a; 1.作用&#xff1a; 用于接收键盘输入的数据并赋值给对应的变量 2.使用方式; scanf("占位符",&变量名); 3.注意事项; 占位符后面的的变量要对应 第一个参数中不写换行 案例1&#xf…

41.ILA IP核集成逻辑分析仪在线调试工具

&#xff08;1&#xff09;逻辑分析仪使用场景&#xff1a; 仿真不全面数据交互存在异步情况板卡互联可靠性问题 (2)ILA使用方法&#xff1a; 使用IP核创建ILA调试环境使用Debug标记创建IP核使用路径标记核位置调试菜单创建ILA测试环境 (3)IP核调用过程&#xff1a; 例化模…

ES 慢上游响应问题优化在用户体验场景中的实践

在抖音亿级日活流量的情况下&#xff0c;每天收到的用户反馈也是大量的&#xff0c;而用户反馈对于产品的发展与未来是至关重要的&#xff0c;因此用户体验管理平台&#xff08;简称VoC&#xff09;就应运而生&#xff0c;VoC 平台旨在通过技术平台化的方式&#xff0c;结合反馈…

实验七:图像的复原处理

一、实验目的 熟悉常见的噪声及其概率密度函数。熟悉在实际应用中比较重要的图像复原技术,会对退化图像进行复原处理。二、实验原理 1. 图像复原技术,说简单点,同图像增强那样,是为了以某种预定义的方式来改进图像。在具体操作过程中用流程图表示,其过程就如下面所示: 2…

达梦数据库的系统视图v$sqltext

达梦数据库的系统视图v$sqltext 在达梦数据库&#xff08;DM Database&#xff09;中&#xff0c;V$SQLTEXT 是一个系统视图&#xff0c;用于显示当前正在执行或最近执行的SQL语句的文本信息。这个视图对于监控和分析数据库中的SQL活动非常有用&#xff0c;尤其是在需要调试性…