Skip to content

Commit 36a1206

Browse files
committed
shader-rt: replace gpu node's args and ret types with Raster<GPU>
1 parent 15e8657 commit 36a1206

1 file changed

Lines changed: 29 additions & 3 deletions

File tree

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

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use crate::parsing::{Input, NodeFnAttributes, ParsedField, ParsedFieldType, ParsedNodeFn, RegularParsedField};
22
use crate::shader_nodes::{CodegenShaderEntryPoint, ShaderNodeType};
33
use convert_case::{Case, Casing};
4+
use proc_macro_crate::FoundCrate;
45
use proc_macro2::{Ident, Span, TokenStream};
56
use quote::{ToTokens, format_ident, quote};
67
use std::borrow::Cow;
@@ -105,14 +106,24 @@ impl CodegenShaderEntryPoint for PerPixelAdjust {
105106
let struct_name = format_ident!("{}", fn_name.to_string().to_case(Case::Pascal));
106107
let mod_name = fn_name.clone();
107108

109+
let gcore = match &parsed.crate_name {
110+
FoundCrate::Itself => format_ident!("crate"),
111+
FoundCrate::Name(name) => format_ident!("{name}"),
112+
};
113+
let raster_gpu = syn::parse2::<Type>(quote!(#gcore::table::Table<#gcore::raster_types::Raster<#gcore::raster_types::GPU>>))?;
114+
108115
let fields = parsed
109116
.fields
110117
.iter()
111118
.map(|f| match &f.ty {
112-
ParsedFieldType::Regular(reg) => Ok(ParsedField {
113-
ty: ParsedFieldType::Regular(RegularParsedField { gpu_image: false, ..reg.clone() }),
119+
ParsedFieldType::Regular(reg @ RegularParsedField { gpu_image: true, .. }) => Ok(ParsedField {
120+
ty: ParsedFieldType::Regular(RegularParsedField {
121+
ty: raster_gpu.clone(),
122+
..reg.clone()
123+
}),
114124
..f.clone()
115125
}),
126+
ParsedFieldType::Regular(RegularParsedField { gpu_image: false, .. }) => Ok(f.clone()),
116127
ParsedFieldType::Node { .. } => Err(syn::Error::new_spanned(&f.pat_ident, "PerPixelAdjust shader nodes cannot accept other nodes as generics")),
117128
})
118129
.collect::<syn::Result<_>>()?;
@@ -146,7 +157,7 @@ impl CodegenShaderEntryPoint for PerPixelAdjust {
146157
}),
147158
implementations: Default::default(),
148159
},
149-
output_type: parsed.output_type.clone(),
160+
output_type: raster_gpu,
150161
is_async: true,
151162
fields,
152163
body,
@@ -166,3 +177,18 @@ enum ParamType {
166177
Image { binding: u32 },
167178
Uniform,
168179
}
180+
181+
#[test]
182+
fn bla() -> syn::Result<()> {
183+
let gcore = quote!(graphene_core);
184+
// let raster_gpu = quote!(#gcore::table::Table<#gcore::raster_types::Raster<#gcore::raster_types::GPU>>);
185+
// let verbatim = Type::Verbatim(raster_gpu.to_token_stream());
186+
187+
// let gcore = match &parsed.crate_name {
188+
// FoundCrate::Itself => quote!("crate"),
189+
// FoundCrate::Name(name) => quote!(#name),
190+
// };
191+
let raster_gpu = syn::parse2::<Type>(quote!(#gcore::table::Table<#gcore::raster_types::Raster<#gcore::raster_types::GPU>>))?;
192+
println!("{}", &raster_gpu.to_token_stream().to_string());
193+
Ok(())
194+
}

0 commit comments

Comments
 (0)