Skip to content

Commit 7ff5575

Browse files
committed
WIP3
1 parent eeea689 commit 7ff5575

File tree

3 files changed

+48
-8
lines changed

3 files changed

+48
-8
lines changed

node-graph/node-macro/src/parsing.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ pub(crate) struct ParsedNodeFn {
3939
pub(crate) description: String,
4040
}
4141

42-
#[derive(Debug, Default)]
42+
#[derive(Debug, Default, Clone)]
4343
pub(crate) struct NodeFnAttributes {
4444
pub(crate) category: Option<LitStr>,
4545
pub(crate) display_name: Option<LitStr>,

node-graph/node-macro/src/shader_nodes/mod.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
use crate::parsing::{NodeFnAttributes, ParsedNodeFn};
1+
use crate::parsing::{Input, NodeFnAttributes, ParsedNodeFn};
22
use crate::shader_nodes::per_pixel_adjust::PerPixelAdjust;
33
use proc_macro2::{Ident, TokenStream};
4-
use quote::quote;
4+
use quote::{format_ident, quote};
5+
use std::{todo, vec};
56
use strum::VariantNames;
6-
use syn::Error;
77
use syn::parse::{Parse, ParseStream};
8+
use syn::{Error, Path, Type, TypePath};
89

910
pub mod per_pixel_adjust;
1011

@@ -19,7 +20,7 @@ pub fn modify_cfg(attributes: &NodeFnAttributes) -> TokenStream {
1920
}
2021
}
2122

22-
#[derive(Debug, VariantNames)]
23+
#[derive(Debug, Clone, VariantNames)]
2324
pub(crate) enum ShaderNodeType {
2425
PerPixelAdjust(PerPixelAdjust),
2526
}
@@ -36,6 +37,7 @@ impl Parse for ShaderNodeType {
3637

3738
pub trait CodegenShaderEntryPoint {
3839
fn codegen_shader_entry_point(&self, parsed: &ParsedNodeFn) -> syn::Result<TokenStream>;
40+
fn codegen_gpu_node(&self, parsed: &ParsedNodeFn) -> syn::Result<TokenStream>;
3941
}
4042

4143
impl CodegenShaderEntryPoint for ShaderNodeType {

node-graph/node-macro/src/shader_nodes/per_pixel_adjust.rs

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
use crate::parsing::{ParsedField, ParsedNodeFn};
1+
use crate::parsing::{Input, NodeFnAttributes, ParsedField, ParsedNodeFn};
22
use crate::shader_nodes::CodegenShaderEntryPoint;
3+
use convert_case::{Case, Casing};
34
use proc_macro2::{Ident, TokenStream};
45
use quote::{ToTokens, format_ident, quote};
56
use std::borrow::Cow;
67
use syn::parse::{Parse, ParseStream};
8+
use syn::{Path, Type, TypePath};
79

8-
#[derive(Debug)]
10+
#[derive(Debug, Clone)]
911
pub struct PerPixelAdjust {}
1012

1113
impl Parse for PerPixelAdjust {
@@ -17,7 +19,7 @@ impl Parse for PerPixelAdjust {
1719
impl CodegenShaderEntryPoint for PerPixelAdjust {
1820
fn codegen_shader_entry_point(&self, parsed: &ParsedNodeFn) -> syn::Result<TokenStream> {
1921
let fn_name = &parsed.fn_name;
20-
let gpu_mod = format_ident!("{}_gpu", parsed.fn_name);
22+
let gpu_mod = format_ident!("{}_gpu_entry_point", parsed.fn_name);
2123
let spirv_image_ty = quote!(Image2d);
2224

2325
// bindings for images start at 1
@@ -93,6 +95,42 @@ impl CodegenShaderEntryPoint for PerPixelAdjust {
9395
}
9496
})
9597
}
98+
99+
fn codegen_gpu_node(&self, parsed: &ParsedNodeFn) -> syn::Result<TokenStream> {
100+
let fn_name = format_ident!("{}_gpu", parsed.fn_name);
101+
let struct_name = format_ident!("{}", fn_name.to_string().to_case(Case::Pascal));
102+
let mod_name = fn_name.clone();
103+
104+
let fields = todo!();
105+
let body = todo!();
106+
107+
crate::codegen::generate_node_code(&ParsedNodeFn {
108+
vis: parsed.vis.clone(),
109+
attributes: NodeFnAttributes {
110+
shader_node: None,
111+
..parsed.attributes.clone()
112+
},
113+
fn_name,
114+
struct_name,
115+
mod_name,
116+
fn_generics: vec![],
117+
where_clause: None,
118+
input: Input {
119+
pat_ident: parsed.input.pat_ident.clone(),
120+
ty: Type::Path(TypePath {
121+
path: Path::from(format_ident!("Ctx")),
122+
qself: None,
123+
}),
124+
implementations: Default::default(),
125+
},
126+
output_type: parsed.output_type.clone(),
127+
is_async: true,
128+
fields,
129+
body,
130+
crate_name: parsed.crate_name.clone(),
131+
description: "".to_string(),
132+
})
133+
}
96134
}
97135

98136
struct Param<'a> {

0 commit comments

Comments
 (0)