#gpu #分形 #wasm #图形 #并行

fractl_lib

支持多线程、GPU计算和wasm的分形渲染器

1个不稳定版本

0.1.0 2024年1月17日

#395 in 渲染


用于 fractl_gui

GPL-3.0-or-later

1MB
1K SLoC

Rust 1K SLoC // 0.0% comments WebGPU Shader Language 130 SLoC // 0.0% comments

Fractl

截图

Mandelbrot Multibrot

如何

  • 尝试在线演示(注意:Web版本在单个线程上运行,无GPU加速,原生版本要快得多)
  • ./bin下载预构建的二进制文件
  • 使用cargo安装(待办事项)

控制

动作
左鼠标按钮 将视图居中于光标
WSAD 移动视图
R 重置视图
滚轮 增加/减少缩放
O 增加缩放
P 减少缩放
箭头键 在方向上增加/减少缩放
T 重置缩放
K 增加精度(最大迭代次数)
L 减少精度(最大迭代次数)
M 下一个分形
N 上一个分形
B 下一个分形着色
V 上一个分形着色
U 切换UI
Y 切换十字准星
C 增加指数(用于多分形)
X 减少指数(用于多分形)
F11 切换全屏
Escape 退出

使用nix构建

  • (这应该是最可靠的方法)
  • 在您的系统中安装 nix (安装 nix)
  • 选择一个软件包
软件包 描述 并行处理 浮点精度
fractl_gui 本地 GUI 双精度(f64)
fractl_gui-multithread 本地 GUI CPU 多线程 双精度(f64)
fractl_gui-gpu 本地 GUI GPU 计算着色器 单精度(f32)
fractl_gui-wasm Web GUI 双精度(f64)
fractl_gui-win 本地 GUI,交叉编译到 Windows x86_64 双精度(f64)
fractl_gui-win-multithread 本地 GUI,交叉编译到 Windows x86_64 CPU 多线程 双精度(f64)
fractl_gui-win-gpu 本地 GUI,交叉编译到 Windows x86_64 GPU 计算着色器 单精度(f32)
  • 构建命令: nix build .#Package

  • 本地构建和运行命令: nix run .#Package

  • 示例: nix run .#gui-gpu

  • 或者使用 ./script 目录中的构建脚本之一

使用 cargo 构建

  • 已安装 rust,或可选使用包含的开发外壳: nix develop
  • 选择特性
特性 描述 备注
multithred CPU 多线程 multithreadgpu 不能同时启用
gpu GPU 计算 multithreadgpugpuf64 不能同时启用
f32 单精度浮点数 f32f64 不能同时启用
f64 双精度浮点数 f32f64 不能同时启用
  • 构建命令: cargo build --package=fractl_gui --no-default-features --release --features "Feature1 Feature2"
  • 运行命令: cargo run --package=fractl_gui --no-default-features --release --features "Feature1 Feature2"
  • 示例: cargo build --package=fractl_gui --no-default-features --release --features "gpu f32"

待办事项

  • 添加 Julia 集合,更多分形
  • F128 浮点数
  • Wasm WebGpu 与计算着色器
  • Redox 端口

依赖项

~3–39MB
~620K SLoC