Open mowatermelon opened 5 years ago
A GPU-based renderer for the web
基于GPU
的Web
渲染器,ff
正在用Rust
重写js
渲染引擎,考虑从网页渲染
往游戏渲染
那边靠,本来网页渲染是按图层绘制的,现在是直接绘制屏幕。
WebRender
以极速著称,但它所做的并非加速渲染,而是使渲染结果更加平滑。
依靠 WebRender
,我们希望应用程序以每秒 60
帧(FPS
)乃至更快的速度运行:无论显示器有多大,页面每帧发生多少变化。这是可以做到的。在 Chrome
和当前版本的 Firefox
中,某些页面卡到只有 15 FPS
,而使用 WebRender
则能达到 60 FPS
。
WebRender
是如何做到这些的呢?它从根本上改变了渲染引擎的工作方式,使其更像 3D
游戏引擎。
API
命令同时执行它们。Chrome
中的渲染树)。现在将产生一个显示列表(display list
)。API
。RenderBackend
,这是在 CPU
上运行的 WebRender
代码。RenderBackend
的工作是将这个高级绘图指令列表转换成 GPU
需要的绘图调用,这些绘图调用被分在同一批次,加快运行速度。RenderBackend
将把这些批次传递给合成器线程,合成器线程再将它们传递给 GPU。RenderBackend
传递给 GPU
的绘图调用需要尽可能快运行。它为此使用了几种不同的技术。备注
FPS:每秒帧数
在 Firefox Quantum
发布之后的若干版本后,WebRender
有望在 2018
年作为Quantum Render
项目的一部分,出现在 Firefox
中。这将使当今的网页运行更顺畅。随着屏幕上的像素数量的增加,渲染性能变得越来越重要,因此 WebRender
还可以让 Firefox
为新一波的高分辨率 4K 显示器做好准备。
但 WebRender
不仅仅适用于 Firefox
。它对于正在开展的 WebVR
的工作同样至关重要,在 WebVR
中,需要为在 4K
显示器上以 90 FPS
的速度为每只眼睛渲染不同的帧。
WebRender
的早期版本目前可以通过 Firefox
的 flag
来启用。集成工作仍在进行中,所以性能目前还不如工作完成度那么好。如果你想跟进 WebRender
开发,可以关注GitHub repo
,或者关注Firefox Nightly
的Twitter
,以获得 Quantum Render
项目的更新周报。
大致介绍
A secure TypeScript runtime on V8
一个基于V8的TS安全引擎。
支持TypeScript
开箱即用。使用最新版本的V8
。也就是说,它是非常现代的JavaScript
。
package.json
. No npm
. Not explicitly compatible with Node
.没有package.json
。没有npm
。未与Node
明确兼容。
仅导入参考源代码URL
。
import { test } from "https://unpkg.com/deno_testing@0.0.5/testing.ts";
import { log } from "./util.ts";
Remote code is fetched and cached on first execution, and never updated until the code is run with the `--reload` flag. (So, this will still work on an airplane. See `~/.deno/src` for details on the cache.)
在第一次执行时获取并缓存远程代码,并且在使用`--reload`标志运行代码之前永远不会更新。 (所以,这仍然适用于飞机。有关缓存的详细信息,请参阅`~/.deno/src`。)
--allow-write
and --allow-net
for network access.可以控制文件系统和网络访问,以运行沙箱代码。默认为只读文件系统的访问,没有网络访问。
V8(非特权)
和Rust(特权)
之间的访问只能通过在这个平面缓冲区中定义的序列化消息来完成。
这使得审计更加容易。若要显式启用写访问,请使用--allow-write
和--allow-net
进行网络访问。
单可执行文件
> ls -lh target/release/deno
-rwxr-xr-x 1 rld staff 48M Aug 2 13:24 target/release/deno
> otool -L target/release/deno
target/release/deno:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.50.4)
/usr/lib/libresolv.9.dylib (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 58286.51.6)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 400.9.0)
旨在支持顶级等待。 旨在与浏览器兼容。
总是因未捕获的错误而死亡。
await
.旨在支持顶级await
。
旨在与浏览器兼容。
相关网址
WebRTC
,名称源自网页即时通信
(英语:Web Real-Time Communication
)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API。它于2011年6月1日开源并在Google
、Mozilla
、Opera
支持下被纳入万维网联盟的W3C
推荐标准。
WebRTC(Web实时通信)通过简单的应用程序编程接口(API
)为Web
浏览器和移动应用程序提供实时通信(RTC
)。它允许音频和视频通信在网页内部工作,允许直接的点对点通信,无需安装插件或下载本机应用程序。在Google
,Microsoft
,Mozilla
和Opera
的支持下,WebRTC
正在通过标准化进行标准化万维网联盟(W3C
)和互联网工程任务组(IETF)。
其使命是为浏览器,移动平台和物联网设备开发丰富,高质量的RTP应用程序,并允许它们通过一组通用协议进行通信
。所述的参考实现被释放自由软件下一个条款BSD
许可证。OpenWebRTC
提供了另一种基于多媒体框架GStreamer
的免费实现。JavaScript
发明家布兰登·艾奇(Brendan Eich
)将其称为在一场开放且无阻碍的网络长期战争中的新阵线
。
虽然WebRTC
最初是为Web浏览器
开发的,但它可以应用于非浏览器设备
,包括移动平台
和物联网设备
。示例包括基于浏览器的VoIP电话
,也称为云电话
或网络电话
,其允许在网络浏览器
内进行呼叫,取代下载
和安装软电话
的要求。
WebRTC
实现了基于网页的视频会议,标准是WHATWG
协议,目的是通过浏览器提供简单的javascript
就可以达到实时通讯(Real-Time Communications (RTC)
)能力。
WebRTC(Web Real-Time Communication
)项目的最终目的主要是让Web
开发者能够基于浏览器(Chrome
`FireFox\...)轻易快捷开发出丰富的实时多媒体应用,而无需下载安装任何插件,
Web开发者也无需关注多媒体的数字信号处理过程,只需编写简单的
Javascript程序即可实现,
W3C等组织正在制定
Javascript标准
API,目前是
WebRTC 1.0版本,
Draft`状态。
另外WebRTC
还希望能够建立一个多互联网浏览器间健壮的实时通信的平台,形成开发者与浏览器厂商良好的生态环境。同时,Google
也希望和致力于让WebRTC
的技术成为HTML5
标准之一,可见Google
布局之深远。
WebRTC
提供了视频会议的核心技术,包括音视频
的采集
、编解码
、网络传输
、显示
等功能,并且还支持跨平台
:windows
,linux
,mac
,android
。
组件名 | 方法说明 |
---|---|
getUserMedia | 为一个RTC连接获取设备的摄像头与(或)麦克风权限,并为此RTC连接接入设备的摄像头与(或)麦克风的信号。 |
RTCPeerConnection | 用于配置音频或视频聊天。 |
RTCDataChannel | 用于设置两个浏览器之间的端到端 数据连接。 |
备注
WebRTC API
还包括统计功能:getStats
允许Web
应用程序检索有关WebRTC
会话的一组统计信息,这些统计数据正在单独的W3C文档中描述。
允许两个用户使用RTCPeerConnection API
直接与浏览器通信的方法。
通过本机和简单的JavaScript API
,使移动端点
能够与具有实时通信(RTC
)功能的服务器和Web浏览器
通信
orbtk
The Orbital Widget Toolkit. Compatible with Redox and SDL2.
Orbital Widget工具包。兼容Redox和SDL2。但是,您还需要在系统上安装SDL2库。SDL2箱记录了执行此操作的最佳方法。
https://github.com/redox-os/orbtk
https://gitlab.redox-os.org/redox-os/orbtk
https://gitlab.redox-os.org/redox-os/dces-rust