diff --git a/Cargo.toml b/Cargo.toml index f7be073c6..f73d060ec 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,6 +5,7 @@ members = [ "packages/core", "packages/web", "packages/liveview", + "packages/3d", ] # Built-in diff --git a/packages/3d/Cargo.toml b/packages/3d/Cargo.toml new file mode 100644 index 000000000..9613191f5 --- /dev/null +++ b/packages/3d/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "dioxus3d" +version = "0.0.0" +authors = ["Jonathan Kelley "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] \ No newline at end of file diff --git a/packages/3d/README.md b/packages/3d/README.md new file mode 100644 index 000000000..c9f4b6b9b --- /dev/null +++ b/packages/3d/README.md @@ -0,0 +1,25 @@ +# Dioxus3d: declarative framework for using the `Canvas` + +Declarative wrapper over wgpu for creating interactive gpu-enabled visualizations in the browser with Dioxus. This crate's analog is ThreeJS and react-three-fiber. Here, we expose a set of hooks for using the `Canvas` imperatively, and then provide a set of components that interact with this canvas context. From there, declaring scenes is as easy as: + +```rust +use dioxus3d::{Canvas}; +use dioxus::prelude::*; + +static HelloWorld = |ctx, props| { + ctx.render(rsx! { + Canvas { + Text { + "Hello world" + rel_pos: (0,0,1) + size: (1,1,1) + } + Cube { + size: (1,1,1) + } + } + }) +}; +``` + +// dioxus bevy: wrap a bevy instance with reactive controls. diff --git a/packages/3d/src/lib.rs b/packages/3d/src/lib.rs new file mode 100644 index 000000000..31e1bb209 --- /dev/null +++ b/packages/3d/src/lib.rs @@ -0,0 +1,7 @@ +#[cfg(test)] +mod tests { + #[test] + fn it_works() { + assert_eq!(2 + 2, 4); + } +}