subdiv-kernels 0.1.0

Standalone subdivision kernel crate for Rust and wasm32 workflows
Documentation
[package]
name = "subdiv-kernels"
version = "0.1.0"
edition = "2024"
rust-version = "1.85"
description = "Standalone subdivision kernel crate for Rust and wasm32 workflows"
repository = "https://github.com/virtualritz/subdiv-kernels"
license = "MIT OR Apache-2.0 OR Zlib OR BSD-3-Clause"
keywords = ["subdivision", "mesh", "catmull-clark", "geometry", "graphics"]
categories = ["graphics", "rendering", "mathematics"]

[package.metadata.docs.rs]
# Document the public-API features on docs.rs, with "available on feature X"
# badges (needs the docsrs cfg + the doc_cfg nightly feature gated in lib.rs).
# `bevy` is deliberately excluded: it only pulls the example's deps and exposes
# no public API, so there's nothing to document and no reason to compile Bevy.
features = ["serde", "parallel", "wgpu"]
rustdoc-args = ["--cfg", "docsrs"]

[features]
default = []
serde = ["dep:serde"]
parallel = ["dep:rayon"]
## GPU (wgpu) compute path for stencil evaluation.
wgpu = ["dep:wgpu", "dep:bytemuck", "dep:pollster"]
## Enables the interactive Bevy example (`--example bevy`); pulls bevy +
## bevy_egui. Not a public API surface.
bevy = ["dep:bevy", "dep:bevy_egui"]

[dependencies]
thiserror = "2"
rayon = { version = "1", optional = true }
serde = { version = "1", features = ["derive"], optional = true }
enum_dispatch = "0.3"
wgpu = { version = "29", optional = true }
bytemuck = { version = "1", features = ["derive"], optional = true }
pollster = { version = "0.4", optional = true }
rustc-hash = "2.1.2"
smallvec = { version = "1.15.2", features = ["union"] }

## Interactive Bevy example only (`--features bevy`). Bevy 0.19 needs Rust
## >= 1.95; this does not affect the core crate's MSRV.
bevy = { version = "0.19", optional = true }
bevy_egui = { version = "0.40", optional = true }

[dev-dependencies]
criterion = "0.8"
## Limit-surface oracle (GPU-subdivision design §5/§7): OpenSubdiv far's
## LimitStencilTable. Builds the vendored OpenSubdiv C++ -- the first
## compile takes minutes. For local opensubdiv-petite dev, override with a
## `[patch.crates-io]` entry instead of a path dep.
opensubdiv-petite = "0.3"

[[bench]]
name = "sparse_eval"
harness = false

[[bench]]
name = "closest_point"
harness = false

[[bench]]
name = "wgpu_eval"
harness = false
required-features = ["wgpu"]

[[example]]
name = "bevy"
required-features = ["bevy"]