We can view the IFS-to-image process as a composition of two affine transforms: - One for the in-IFS functions (zoom, rotate, offset) - One for the IFS-to-image functions (scale) And because a composition of affine transforms is itself an affine transform, we can do everything at once. Eventually, the final affine matrix should be provided to the GPU directly, I just wanted to prove this works for now.
40 lines
1.2 KiB
TOML
40 lines
1.2 KiB
TOML
[workspace]
|
|
members = [
|
|
"crates/flare-lib",
|
|
"crates/flare-shader",
|
|
"crates/flare-xml"
|
|
]
|
|
resolver = "2"
|
|
|
|
[workspace.dependencies]
|
|
bytemuck = { version = "1.21.0", features = ["derive"] }
|
|
futures = "0.3.31"
|
|
futures-executor = "0.3.31"
|
|
glam = { version = "0.29.2", default-features = false }
|
|
rand = { version = "0.8.5", default-features = false }
|
|
rand_xoshiro = "0.6.0"
|
|
serde = { version = "1.0.216", features = ["derive"] }
|
|
serde-xml-rs = "0.6.0"
|
|
spirv-std = { git = "https://github.com/rust-gpu/rust-gpu", rev = "1d76d59471eef54da481d63cfb9cbf3a5daded6c" }
|
|
spirv-builder = { git = "https://github.com/rust-gpu/rust-gpu", rev = "1d76d59471eef54da481d63cfb9cbf3a5daded6c" }
|
|
thiserror = "2.0.8"
|
|
wgpu = { version = "23.0.1", features = ["spirv"] }
|
|
xml-rs = "0.8.24"
|
|
|
|
[workspace.lints.clippy]
|
|
# SPIR-V codegen doesn't handle `.iter().take(count).skip(offset)` properly
|
|
needless_range_loop = "allow"
|
|
|
|
[workspace.lints.rust.unexpected_cfgs]
|
|
# Rust (properly) doesn't recognize the spirv architecture
|
|
level = "warn"
|
|
check-cfg = ['cfg(target_arch, values("spirv"))']
|
|
|
|
# Compile build-dependencies in release mode with
|
|
# the same settings as regular dependencies.
|
|
[profile.release.build-override]
|
|
opt-level = 3
|
|
codegen-units = 16
|
|
[profile.dev.build-override]
|
|
opt-level = 3
|