mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-16 06:38:03 +08:00
* Add support structure for new node macro to gcore * Fix compile issues and code generation * Implement new node_fn macro * Implement property translation * Fix NodeIO type generation * Start translating math nodes * Move node implementation to outer scope to allow usage of local imports * Add expose attribute to allow controlling the parameter exposure * Add rust analyzer support for #[implementations] attribute * Migrate logic nodes * Handle where clause properly * Implement argument ident pattern preservation * Implement adjustment layer mapping * Fix node registry types * Fix module paths * Improve demo artwork comptibility * Improve macro error reporting * Fix handling of impl node implementations * Fix nodeio type computation * Fix opacity node and graph type resolution * Fix loading of demo artworks * Fix eslint * Fix typo in macro test * Remove node definitions for Adjustment Nodes * Fix type alias property generation and make adjustments footprint aware * Convert vector nodes * Implement path overrides * Fix stroke node * Fix painted dreams * Implement experimental type level specialization * Fix poisson disk sampling -> all demo artworks should work again * Port text node + make node macro more robust by implementing lifetime substitution * Fix vector node tests * Fix red dress demo + ci * Fix clippy warnings * Code review * Fix primary input issues * Improve math nodes and audit others * Set no_properties when no automatic properties are derived * Port vector generator nodes (could not derive all definitions yet) * Various QA changes and add min/max/mode_range to number parameters * Add min and max for f64 and u32 * Convert gpu nodes and clean up unused nodes * Partially port transform node * Allow implementations on call arg * Port path modify node * Start porting graphic element nodes * Transform nodes in graphic_element.rs * Port brush node * Port nodes in wasm_executior * Rename node macro * Fix formatting * Fix Mandelbrot node * Formatting * Fix Load Image and Load Resource nodes, add scope input to node macro * Remove unnecessary underscores * Begin attemping to make nodes resolution-aware * Infer a generic manual compositon type on generic call arg * Various fixes and work towards merging * Final changes for merge! * Fix tests, probably * More free line removals! --------- Co-authored-by: Keavon Chambers <keavon@keavon.com>
28 lines
974 B
Rust
28 lines
974 B
Rust
use gpu_compiler_bin_wrapper::CompileRequest;
|
|
use graph_craft::{proto::ProtoNetwork, Type};
|
|
use wgpu_executor::ShaderIO;
|
|
|
|
pub async fn compile(networks: Vec<ProtoNetwork>, inputs: Vec<Type>, outputs: Vec<Type>, io: ShaderIO) -> Result<Shader, reqwest::Error> {
|
|
let client = reqwest::Client::new();
|
|
|
|
let compile_request = CompileRequest::new(networks, inputs.clone(), outputs.clone(), io.clone());
|
|
let response = client.post("http://localhost:3000/compile/spirv").json(&compile_request).send();
|
|
let response = response.await?;
|
|
response.bytes().await.map(|b| Shader {
|
|
spirv_binary: b.chunks(4).map(|x| u32::from_le_bytes(x.try_into().unwrap())).collect(),
|
|
input_types: inputs,
|
|
output_types: outputs,
|
|
io,
|
|
})
|
|
}
|
|
|
|
// TODO: should we add the entry point as a field?
|
|
/// A compiled shader with type annotations.
|
|
#[derive(dyn_any::DynAny)]
|
|
pub struct Shader {
|
|
pub spirv_binary: Vec<u32>,
|
|
pub input_types: Vec<Type>,
|
|
pub output_types: Vec<Type>,
|
|
pub io: ShaderIO,
|
|
}
|