RUST · CPU + VULKAN · v3.0.1

Prism
Engine

程序化媒体引擎

输入一段 .prism 场景文本,或直接用 Rust 调用。输出单帧、帧序列或成片——同一份场景描述,定住某一刻是图,连续推进并录下来就是视频。

解码 · 排版 · 路径追踪 · 物理仿真 · 音频合成 · 成片编码
单帧 · 帧序列 · 成片 | CPU + Vulkan 双后端
PRISM / 白光入射 → 光谱展开 · 概念示意
SCROLL
789
FILES
29
CRATES
34.1万行
RUST LOC
4,629
TESTS PASSED
22.1MB
单文件源码包
Capabilities

一条流水线,九层能力

按媒体流水线的环节分层。所有层对静态图和动态图是同一套实现,不是两条代码路径。

◈
01 / READ

读 I/O

PNG / JPEG / EXR / RAW / GIF / APNG / WAV;glTF · OBJ · USDA · USD Crate · MaterialX;TTF/OTF 四级字体回退链。

16-bit PNG定点 IDCTDWA21 节点
⌘
02 / TYPE

排 Text

OpenType 解析、GSUB/GPOS 整形、UAX #9 双向与阿拉伯四态、竖排;公式排版、DSL v1/v2 编译成三元组图。

GSUB/GPOS公式5 组合子4 转场
✦
03 / RENDER

画 Raytrace

路径追踪 + 物理 BSDF、Woodcock 异质体积、解析曲面四次方程闭式解、SAH-BVH、SDF 布尔、HDR IBL + MIS、自适应采样。

物理 BSDFCatmull-ClarkACES毛发
∿
04 / MOTION

动 Physics

XPBD 统一求解器:刚体 / 软体 / 布料 / 关节 / 流体 / 破碎共用一套约束投影循环;FLIP 烟雾、粒子、AudioReactive。

XPBDFLIPL-System反应扩散
◐
05 / GRADE

调 PostFX

二级调色 HSL 选区 + RGB 曲线、cinematic / film / anime 预设、halation 渗光、双尺度胶片颗粒、三合一降噪、NPR 四风格。

OCIOACEScgPQ / HLGhalation
♫
06 / AUDIO

声 Synth

PolyBLEP 防混叠振荡器、ADSR 闭式包络、和弦进行状态机 + 声部引导、SMF / SFZ / 颗粒合成、多轨混音与响度归一。

12-TETSFZFFTWAV 16/24/32
▤
07 / ENCODE

出 Deliver

私有 PRMV 容器 v2/v3、water-filling 率控 + qpel 子像素运动估计(PSNR +2.577 dB、体积 −21.6%)、ffmpeg 缺失自动降级 MJPEG。

PRMVMP4EXR 序列帧农场
⌁
08 / INTERFACE

接 API

MCP stdio 三工具(scene_check / render_submit / diagnose)、节点 SDK 语义化版本协商、CLI、双档编辑器预览与子图签名增量。

MCPCLI节点 SDKbatch manifest
✳
09 / SIDE

旁路 GenArt

流场 / L 系统 / 元胞自动机 / Mandelbrot / Voronoi 生成艺术,矢量 draw-on 与图表;AI 辅助为确定性 mock 推理层,不引 ML 框架。

生成艺术确定性 mock零 ML 依赖
Quick Start

三分钟
跑起来

发布物是一个 22.1 MB 的单文件文本包。抽出解包脚本(只需 Node 18+,不需要 npm install),还原出标准 Cargo workspace,之后与普通 Rust 项目无异。

  • SHA-256 校验,确保源码包完整
  • cargo test --workspace --release 全量 4629 条测试
  • 什么都不写,先跑内置演示场景看它出片
terminal
# 1. 取单文件源码包,顺便校验 SHA-256
curl -L -O https://github.com/Qianjinqie/prism-engine/releases/download/v3.0.1/prism-engine-v3.0.1-source.txt
curl -L -O https://github.com/Qianjinqie/prism-engine/releases/download/v3.0.1/SHA256SUMS.txt
grep 'v3.0.1' SHA256SUMS.txt | sha256sum -c -

# 2. 抽出包内解包脚本(只需 Node 18+)
awk '/^UNPACK SCRIPT BEGIN$/{f=1;next} /^UNPACK SCRIPT END$/{f=0} f' \
  prism-engine-v3.0.1-source.txt > unpack.cjs
node unpack.cjs                    # 还原 789 个文件

# 3. 编译并跑全量测试
cargo test --workspace --release    # 4629 passed / 0 failed

# 4. 什么都不写,先看它出片
cargo run -p prism-app --release   # 内置演示场景
gallery.rs · Rust API
use prism_core::node::EvalCtx;
use prism_math::Vec3;
use prism_rt::camera::Camera;
use prism_rt::integrator::{render_pixel, MaterialKind, RenderParams, Scene, Sphere};

let scene = Scene {
    spheres: vec![(
        Sphere { center: Vec3::new(0.0, 0.6, 0.0), radius: 0.6 },
        MaterialKind::Lambert { albedo: Vec3::new(0.8, 0.2, 0.15) },
    )],
    ..Default::default()
};
let cam = Camera::new(
    Vec3::new(0.0, 1.2, 4.8),   // 视点
    Vec3::new(0.0, 0.72, 0.0),  // 看向
    Vec3::new(0.0, 1.0, 0.0),   // 上方向
    30.0, 0.05, 4.85, 0.0, 1.0 / 48.0,
);
let ctx = EvalCtx::new(20261028, 0, 0);
let params = RenderParams::new(256, 10);  // 256 spp / 10 bounces

// 纯函数:同参数任意线程、任意顺序,结果逐位相同
let color = render_pixel(&scene, &cam, &ctx, (640, 360), (1280, 720), &params);
Rust API

不想写 DSL,
就直接调库

render_pixel 是纯函数:输入场景、相机、采样上下文与像素坐标,输出线性 RGB。并行渲染不需要任何同步,这是整个引擎确定性设计的地基。

  • 单像素级可调用,也可整帧 / 整片调度
  • 29 个 crate 按职责分组,可单独取用
  • 示例场景 190 行,见 docs/gallery/gallery.rs
Architecture

从输入到交付

场景文本先进编排层编成节点图,再分流到求值与音频两条支路,汇入后期与交付。

输入PNG · JPEG · EXR · RAW
GIF · APNG · WAV
glTF · OBJ · USDA
→
编排prism-dsl
节点图 · 属性通道 · 时间线
→
求值2D 光栅 · 3D 路径追踪
物理 · 粒子 · 生成艺术
→
后期调色 · bloom · 降噪 · NPR
→
交付PRMV · ffmpeg · EXR 序列
音频支路 prism-audio(合成 · 编排 · 混音)从编排层分出,与后期结果在交付层汇合 · 29 crates / 6 组职责
0

逐位确定性

同样参数任意线程、任意顺序调用,输出逐位相同。多进程帧农场并行 MD5 == 串行 MD5。

2

双后端同源

CpuRef 一等后端 + Vulkan compute 与光追双管线;2D 矢量路径 CPU 扫描线与 GPU compute 逐字节一致。

4629

反假绿门禁

四个零依赖门禁脚本,只接受「通过」或「判红」;含幽灵写入反向自证、合规 9/9 + 反证 8/8。

Honest Boundaries

诚实的边界

下表只列能力,做不到什么单独写在这里——不藏在能力表里,也不写成「以后再说」。

边界现状出路
mp3 / AAC / FLAC解码走外部 ffmpeg 探测;编码不自研安装 ffmpeg,或只用 WAV
Metal 后端代码就绪但未点亮,is_available() 恒 false,未实机验证有 Apple 设备并立独立后端项后再接
WebGPU4 个浏览器环境 / 2 台设备各 19/19;桌面档未实测桌面 Chrome/Edge 实跑一次即可结项
硬件编码三平台探测骨架,未接实现,不 link 任何平台库按目标平台填 prism-ffi-hwenc
GPU 加速比仅在 lavapipe 验证正确性,真实 GPU 加速比不测、不写数字需目标硬件实测
DNG 真实机型已支持 Compression 1/7/8(含 32946 Deflate);真机样本未验证追加 golden 样本;未支持取值结构化拒绝
「这些不是『以后再说』,是当前状态下明确不支持的。写在这里,比藏在 issue 里好。」
Get Started

让一束光,穿过棱镜

789 个文件 · 29 个 crate · 34.1 万行 Rust · 4629 条测试 · 一个 22.1 MB 的单文件源码包

前往 GitHub 仓库 → 查看快速开始

中文 · English · Deutsch · Español · Français · 日本語 · 한국어 · Português · Русский