7个不稳定版本
0.3.1-alpha.1 | 2021年12月14日 |
---|---|
0.3.0 | 2020年9月8日 |
0.2.0 | 2019年11月14日 |
0.1.2 | 2019年9月24日 |
0.0.1 | 2019年9月23日 |
#229 in 图形API
每月37次下载
在 2 个包中使用(通过 building_blocks_core)
1MB
1.5K SLoC
sdfu
- 符号距离场实用工具
这是一个小型包,旨在帮助在计算机图形的符号距离场上下文中进行工作,特别是基于光线追踪的渲染器。这里的大部分内容都是基于 Inigo Quilez 优秀的文章。
如果您正在使用Rust中更受欢迎的数学库之一,那么只需启用相应的功能(目前,支持 ultraviolet
,nalgebra
和 vek
)并且希望所有必要的特性和特质已经为您实现,这样您就可以开始传递您的 Vec3
或您库中称为的任何东西,并开始比赛!如果不是这样,您可以在 mathtypes
模块中实现必要的特性和特质,并仍然使用您自己的数学库使用此库。
演示
上面的图像是用我的自己的路径追踪渲染器 rayn
通过利用 sdfu
渲染的。上面的渲染SDF是用以下代码创建的
use sdfu::SDF;
use ultraviolet::Vec3;
let sdf = sdfu::Sphere::new(0.45)
.subtract(
sdfu::Box::new(Vec3::new(0.25, 0.25, 1.5)))
.union_smooth(
sdfu::Sphere::new(0.3).translate(Vec3::new(0.3, 0.3, 0.0)),
0.1)
.union_smooth(
sdfu::Sphere::new(0.3).translate(Vec3::new(-0.3, 0.3, 0.0)),
0.1)
.subtract(
sdfu::Box::new(Vec3::new(0.125, 0.125, 1.5)).translate(Vec3::new(-0.3, 0.3, 0.0)))
.subtract(
sdfu::Box::new(Vec3::new(0.125, 0.125, 1.5)).translate(Vec3::new(0.3, 0.3, 0.0)))
.subtract(
sdfu::Box::new(Vec3::new(1.5, 0.1, 0.1)).translate(Vec3::new(0.0, 0.3, 0.0)))
.subtract(
sdfu::Box::new(Vec3::new(0.2, 2.0, 0.2)))
.translate(Vec3::new(0.0, 0.0, -1.0));