搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

meshy-dev/ThreeRT

多媒体与设计

一套硬件光线追踪实时路径追踪器,用接近 three.js 的 API 构建可实时渲染的游戏和场景。

250
16
TypeScript
MIT
创建于 4 天前

项目介绍

ThreeRT 是一个基于 Rust 和 wgpu 的实时路径追踪器,对外提供接近 three.js 的场景 API。它不依赖阴影贴图、光照探针或烘焙光照贴图,场景中的每一盏灯都由 GPU 的光线追踪硬件追踪,在没有硬件光追查询的平台上回退到软件 BVH (L42-L49)。目标是让按 three.js 习惯编写的场景文件既能跑在 ThreeRT 运行时里,也能作为普通 three.js 在浏览器中运行。

仓库包含引擎本体、场景与玩法包,以及参考场景和可玩游戏目录。renderer/ 是 Rust + wgpu 路径追踪器、降噪、后处理和内嵌 QuickJS 运行时;packages/ 包含 @threert/scene、@threert/gameplay 和 @threert/voxel (L163-L176)。

适合希望获得物理光照与实时帧率、又不想从零写渲染器的图形和游戏开发者,前提是能接受 TypeScript 场景代码和 Rust 构建。

快速使用

按用途有三条入口:

玩游戏、做游戏。 从 下载页 获取 macOS(14 及以上,Apple 芯片)或 iOS/iPadOS 17 及以上的客户端,打开应用库或 threert.app 中的示例,再用 Mac 应用内置的命令行创建项目:

threert create my-game
cd my-game
threert dev

threert dev 会在保存时打包、向局域网内客户端提供页面,并打印手机扫码用的二维码。同一地址在浏览器里会以 three.js 渲染。完整流程见 官方文档 。

直接使用 npm 包。 用于类型、测试或自建构建流程:

npm install @threert/scene @threert/gameplay

最小场景从 @threert/scene 引入 Scene、PerspectiveCamera、Mesh、灯光和 SkyAtmosphere,在导出的 build() 中搭建场景并返回 { scene, camera }。光照使用物理单位:示例中的定向太阳光为 90,000 lux,自发光表面本身就是光源 (L50-L82)。完整示例在 scenes/sun-room.ts。

从源码构建引擎。 需要 Rust、Node 24 和 Bun (L130-L150):

npm install && bun scripts/setup.ts
node tools/build-scenes.ts
bun renderer/build.ts

然后可在窗口中运行游戏,或把场景渲染成图片:

renderer/target/release/threert-render play out/bundles/light-room.js
renderer/target/release/threert-render render out/bundles/cornell-box.js -o out/cornell.png --spp 32

视口内拖动旋转、右键拖动平移、WASD/QE 飞行、R 重置、P 截图 (L134-L142)。

使用约束

  • 平台。 分发的客户端为 macOS 14+(Apple 芯片)和 iOS 17+。客户端免费但闭源;仓库中的引擎和包采用 MIT 许可证 (L195-L208)。
  • 资产不在仓库中。 bun scripts/setup.ts 会填充共享资产库并拉取缺失内容。第三方场景和城市数据保留各自许可,详见 docs/ASSETS.md。
  • 构建要求。 从源码构建需要 Rust、Node 24 和 Bun。GPU 支持 Metal 或 Vulkan 时使用硬件光追查询,否则回退到软件 BVH (L130-L150)。
  • 与 three.js 无隶属关系。 ThreeRT 沿用 three.js 风格的 API,但它是独立项目 (L195-L208)。

HotRepo 点评

2026-11-13,项目出现在 HotRepo 新项目榜上,当时 113 stars,在约一个半小时的观测窗口内新增 13 stars。样本很小,只能说明初期有一波关注,不能据此判断持续趋势。更值得关注的是工程体量:Rust + wgpu 路径追踪器、降噪、QuickJS 运行时、玩法与体素包,加上 Bistro、Beeple 的 Zero-Day 和 PLATEAU 东京数据等参考目录,说明它远不止一个演示仓库。README 还给出了与 three.js 的对比:Bistro 场景在 1280 × 720 下每帧 15.5 ms(60 fps)、相对离线参考的 ΔE 为 3.4,而 three.js WebGPU 为 34.7 ms、ΔE 10.1 (L83-L99);这些是作者自己的测量,应结合 docs/COMPARE.md 中的方法阅读。

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。

相关推荐

  1. mrdoob/three.js面向浏览器的通用 3D 渲染库,用于产品展示、数据可视化等网页图形,无需引入完整游戏引擎。JavaScript116,873
  2. Leonxlnx/athenaion用 three.js 纯代码生成的古希腊 3D 世界,适合研究程序化建模与离线渲染,而非复用资产或做游戏。JavaScript296