输入一段 .prism 场景文本,或直接用 Rust 调用。输出单帧、帧序列或成片——同一份场景描述,定住某一刻是图,连续推进并录下来就是视频。
按媒体流水线的环节分层。所有层对静态图和动态图是同一套实现,不是两条代码路径。
PNG / JPEG / EXR / RAW / GIF / APNG / WAV;glTF · OBJ · USDA · USD Crate · MaterialX;TTF/OTF 四级字体回退链。
OpenType 解析、GSUB/GPOS 整形、UAX #9 双向与阿拉伯四态、竖排;公式排版、DSL v1/v2 编译成三元组图。
路径追踪 + 物理 BSDF、Woodcock 异质体积、解析曲面四次方程闭式解、SAH-BVH、SDF 布尔、HDR IBL + MIS、自适应采样。
XPBD 统一求解器:刚体 / 软体 / 布料 / 关节 / 流体 / 破碎共用一套约束投影循环;FLIP 烟雾、粒子、AudioReactive。
二级调色 HSL 选区 + RGB 曲线、cinematic / film / anime 预设、halation 渗光、双尺度胶片颗粒、三合一降噪、NPR 四风格。
PolyBLEP 防混叠振荡器、ADSR 闭式包络、和弦进行状态机 + 声部引导、SMF / SFZ / 颗粒合成、多轨混音与响度归一。
私有 PRMV 容器 v2/v3、water-filling 率控 + qpel 子像素运动估计(PSNR +2.577 dB、体积 −21.6%)、ffmpeg 缺失自动降级 MJPEG。
MCP stdio 三工具(scene_check / render_submit / diagnose)、节点 SDK 语义化版本协商、CLI、双档编辑器预览与子图签名增量。
流场 / L 系统 / 元胞自动机 / Mandelbrot / Voronoi 生成艺术,矢量 draw-on 与图表;AI 辅助为确定性 mock 推理层,不引 ML 框架。
发布物是一个 22.1 MB 的单文件文本包。抽出解包脚本(只需 Node 18+,不需要 npm install),还原出标准 Cargo workspace,之后与普通 Rust 项目无异。
cargo test --workspace --release 全量 4629 条测试# 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 # 内置演示场景
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), ¶ms);
render_pixel 是纯函数:输入场景、相机、采样上下文与像素坐标,输出线性 RGB。并行渲染不需要任何同步,这是整个引擎确定性设计的地基。
docs/gallery/gallery.rs场景文本先进编排层编成节点图,再分流到求值与音频两条支路,汇入后期与交付。
同样参数任意线程、任意顺序调用,输出逐位相同。多进程帧农场并行 MD5 == 串行 MD5。
CpuRef 一等后端 + Vulkan compute 与光追双管线;2D 矢量路径 CPU 扫描线与 GPU compute 逐字节一致。
四个零依赖门禁脚本,只接受「通过」或「判红」;含幽灵写入反向自证、合规 9/9 + 反证 8/8。
下表只列能力,做不到什么单独写在这里——不藏在能力表里,也不写成「以后再说」。
「这些不是『以后再说』,是当前状态下明确不支持的。写在这里,比藏在 issue 里好。」
789 个文件 · 29 个 crate · 34.1 万行 Rust · 4629 条测试 · 一个 22.1 MB 的单文件源码包
中文 · English · Deutsch · Español · Français · 日本語 · 한국어 · Português · Русский