mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2025-08-22 14:04:05 +00:00
shader-rt: replace gpu node's args and ret types with Raster<GPU>
This commit is contained in:
parent
35d7896450
commit
61b4017398
1 changed files with 14 additions and 3 deletions
|
@ -1,6 +1,7 @@
|
||||||
use crate::parsing::{Input, NodeFnAttributes, ParsedField, ParsedFieldType, ParsedNodeFn, RegularParsedField};
|
use crate::parsing::{Input, NodeFnAttributes, ParsedField, ParsedFieldType, ParsedNodeFn, RegularParsedField};
|
||||||
use crate::shader_nodes::{CodegenShaderEntryPoint, ShaderNodeType};
|
use crate::shader_nodes::{CodegenShaderEntryPoint, ShaderNodeType};
|
||||||
use convert_case::{Case, Casing};
|
use convert_case::{Case, Casing};
|
||||||
|
use proc_macro_crate::FoundCrate;
|
||||||
use proc_macro2::{Ident, Span, TokenStream};
|
use proc_macro2::{Ident, Span, TokenStream};
|
||||||
use quote::{ToTokens, format_ident, quote};
|
use quote::{ToTokens, format_ident, quote};
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
|
@ -105,14 +106,24 @@ impl CodegenShaderEntryPoint for PerPixelAdjust {
|
||||||
let struct_name = format_ident!("{}", fn_name.to_string().to_case(Case::Pascal));
|
let struct_name = format_ident!("{}", fn_name.to_string().to_case(Case::Pascal));
|
||||||
let mod_name = fn_name.clone();
|
let mod_name = fn_name.clone();
|
||||||
|
|
||||||
|
let gcore = match &parsed.crate_name {
|
||||||
|
FoundCrate::Itself => format_ident!("crate"),
|
||||||
|
FoundCrate::Name(name) => format_ident!("{name}"),
|
||||||
|
};
|
||||||
|
let raster_gpu = syn::parse2::<Type>(quote!(#gcore::table::Table<#gcore::raster_types::Raster<#gcore::raster_types::GPU>>))?;
|
||||||
|
|
||||||
let fields = parsed
|
let fields = parsed
|
||||||
.fields
|
.fields
|
||||||
.iter()
|
.iter()
|
||||||
.map(|f| match &f.ty {
|
.map(|f| match &f.ty {
|
||||||
ParsedFieldType::Regular(reg) => Ok(ParsedField {
|
ParsedFieldType::Regular(reg @ RegularParsedField { gpu_image: true, .. }) => Ok(ParsedField {
|
||||||
ty: ParsedFieldType::Regular(RegularParsedField { gpu_image: false, ..reg.clone() }),
|
ty: ParsedFieldType::Regular(RegularParsedField {
|
||||||
|
ty: raster_gpu.clone(),
|
||||||
|
..reg.clone()
|
||||||
|
}),
|
||||||
..f.clone()
|
..f.clone()
|
||||||
}),
|
}),
|
||||||
|
ParsedFieldType::Regular(RegularParsedField { gpu_image: false, .. }) => Ok(f.clone()),
|
||||||
ParsedFieldType::Node { .. } => Err(syn::Error::new_spanned(&f.pat_ident, "PerPixelAdjust shader nodes cannot accept other nodes as generics")),
|
ParsedFieldType::Node { .. } => Err(syn::Error::new_spanned(&f.pat_ident, "PerPixelAdjust shader nodes cannot accept other nodes as generics")),
|
||||||
})
|
})
|
||||||
.collect::<syn::Result<_>>()?;
|
.collect::<syn::Result<_>>()?;
|
||||||
|
@ -146,7 +157,7 @@ impl CodegenShaderEntryPoint for PerPixelAdjust {
|
||||||
}),
|
}),
|
||||||
implementations: Default::default(),
|
implementations: Default::default(),
|
||||||
},
|
},
|
||||||
output_type: parsed.output_type.clone(),
|
output_type: raster_gpu,
|
||||||
is_async: true,
|
is_async: true,
|
||||||
fields,
|
fields,
|
||||||
body,
|
body,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue