https://github.com/attackgoat/noise_gui
An egui-based graphical user interface for the noise crate
https://github.com/attackgoat/noise_gui
Last synced: 6 months ago
JSON representation
An egui-based graphical user interface for the noise crate
- Host: GitHub
- URL: https://github.com/attackgoat/noise_gui
- Owner: attackgoat
- License: apache-2.0
- Created: 2023-12-17T14:20:01.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-12-21T01:50:38.000Z (7 months ago)
- Last Synced: 2025-12-22T10:45:33.948Z (7 months ago)
- Language: Rust
- Size: 4.69 MB
- Stars: 44
- Watchers: 1
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# `noise_gui`
[](https://github.com/attackgoat/noise_gui)
[](https://crates.io/crates/noise_gui)
[](https://docs.rs/noise_expr/latest/noise_expr/)
[](https://github.com/attackgoat/noise_gui/actions/workflows/main.yml)
[](https://github.com/attackgoat/noise_gui/blob/master/LICENSE-MIT)
[](https://github.com/attackgoat/noise_gui/blob/master/LICENSE-APACHE)
---
A graphical user interface for [Noise-rs](https://github.com/Razaekel/noise-rs).
> [!TIP]
> `noise_gui` runs on Linux/Mac/Windows desktops and [**the web**](https://attackgoat.github.io/noise_gui/)!

## Features:
- [x] Support for all [Noise-rs](https://github.com/Razaekel/noise-rs) `NoiseFn` implementations
- [x] Allow zoom/pan on preview images
- [x] Allow saving the graph project to a file[^1]
- [x] Allow noise function export[^1]
- [ ] Automatic `NoiseFn` cached values
- [ ] Subroutine blocks, comment blocks, node descriptors, etc.
- [x] WASM support using [Trunk](https://trunkrs.dev/)
[^1]: Available on desktop only
> [!WARNING]
> `noise_gui` is currently in the proof-of-concept phase and may contain bugs and missing features.
## Development Dependencies
Ubuntu 22.04:
```bash
sudo apt install libgtk-3-dev
```
Browser:
```bash
rustup target add wasm32-unknown-unknown
cargo install trunk
```
## How To Run Locally
Desktop:
```bash
cargo run
```
Desktop (_load a previously saved file_):
```bash
cargo run -- /path/to/file.ron
```
Browser:
```bash
trunk serve --open
```
## Noise Function Export
Completed noise graphs may be exported (_right-click on any node_). The output file is `.ron` format
and may be deserialized for use in your programs.
_See [`noise_expr`](crates/noise_expr/README.md)_
Once deserialized into an `Expr` instance you may replace any decimal or integer values using their
name and the `Expr::set_f64` and `Expr::set_u32` functions. Note that node names do not have to be
unique and that all nodes sharing the provided name will be updated. The `Expr::noise` function may
be used to retrieve a Noise-rs `NoiseFn` implementation.
See the example for more details:
```bash
cargo run --example read_file --package noise_expr
```