Shaders: Provide WgpuExecutor via Scope (#3144)
shaders: automatically connect wgpu-executor
This commit is contained in:
parent
f12b4da549
commit
ad99c14b29
|
|
@ -8,6 +8,7 @@ use graphene_std::Context;
|
||||||
use graphene_std::ContextFeatures;
|
use graphene_std::ContextFeatures;
|
||||||
use graphene_std::uuid::NodeId;
|
use graphene_std::uuid::NodeId;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
use wgpu_executor::WgpuExecutor;
|
||||||
|
|
||||||
pub fn wrap_network_in_scope(mut network: NodeNetwork, editor_api: Arc<WasmEditorApi>) -> NodeNetwork {
|
pub fn wrap_network_in_scope(mut network: NodeNetwork, editor_api: Arc<WasmEditorApi>) -> NodeNetwork {
|
||||||
network.generate_node_paths(&[]);
|
network.generate_node_paths(&[]);
|
||||||
|
|
@ -68,7 +69,7 @@ pub fn wrap_network_in_scope(mut network: NodeNetwork, editor_api: Arc<WasmEdito
|
||||||
};
|
};
|
||||||
|
|
||||||
// wrap the inner network in a scope
|
// wrap the inner network in a scope
|
||||||
let nodes = vec![
|
let mut nodes = vec![
|
||||||
inner_network,
|
inner_network,
|
||||||
render_node,
|
render_node,
|
||||||
DocumentNode {
|
DocumentNode {
|
||||||
|
|
@ -77,11 +78,21 @@ pub fn wrap_network_in_scope(mut network: NodeNetwork, editor_api: Arc<WasmEdito
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
let mut scope_injections = vec![("editor-api".to_string(), (NodeId(2), concrete!(&WasmEditorApi)))];
|
||||||
|
|
||||||
|
if cfg!(feature = "gpu") {
|
||||||
|
nodes.push(DocumentNode {
|
||||||
|
implementation: DocumentNodeImplementation::ProtoNode(ProtoNodeIdentifier::from("graphene_core::ops::IntoNode<&WgpuExecutor>")),
|
||||||
|
inputs: vec![NodeInput::node(NodeId(2), 0)],
|
||||||
|
..Default::default()
|
||||||
|
});
|
||||||
|
scope_injections.push(("wgpu-executor".to_string(), (NodeId(3), concrete!(&WgpuExecutor))));
|
||||||
|
}
|
||||||
|
|
||||||
NodeNetwork {
|
NodeNetwork {
|
||||||
exports: vec![NodeInput::node(NodeId(1), 0)],
|
exports: vec![NodeInput::node(NodeId(1), 0)],
|
||||||
nodes: nodes.into_iter().enumerate().map(|(id, node)| (NodeId(id as u64), node)).collect(),
|
nodes: nodes.into_iter().enumerate().map(|(id, node)| (NodeId(id as u64), node)).collect(),
|
||||||
scope_injections: [("editor-api".to_string(), (NodeId(2), concrete!(&WasmEditorApi)))].into_iter().collect(),
|
scope_injections: scope_injections.into_iter().collect(),
|
||||||
// TODO(TrueDoctor): check if it makes sense to set `generated` to `true`
|
// TODO(TrueDoctor): check if it makes sense to set `generated` to `true`
|
||||||
generated: false,
|
generated: false,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::crate_ident::CrateIdent;
|
use crate::crate_ident::CrateIdent;
|
||||||
use crate::parsing::{Input, NodeFnAttributes, ParsedField, ParsedFieldType, ParsedNodeFn, RegularParsedField};
|
use crate::parsing::{Input, NodeFnAttributes, ParsedField, ParsedFieldType, ParsedNodeFn, ParsedValueSource, RegularParsedField};
|
||||||
use crate::shader_nodes::{SHADER_NODES_FEATURE_GATE, ShaderCodegen, ShaderNodeType, ShaderTokens};
|
use crate::shader_nodes::{SHADER_NODES_FEATURE_GATE, ShaderCodegen, ShaderNodeType, ShaderTokens};
|
||||||
use convert_case::{Case, Casing};
|
use convert_case::{Case, Casing};
|
||||||
use proc_macro2::{Ident, Span, TokenStream};
|
use proc_macro2::{Ident, Span, TokenStream};
|
||||||
|
|
@ -231,8 +231,8 @@ impl PerPixelAdjustCodegen<'_> {
|
||||||
widget_override: Default::default(),
|
widget_override: Default::default(),
|
||||||
ty: ParsedFieldType::Regular(RegularParsedField {
|
ty: ParsedFieldType::Regular(RegularParsedField {
|
||||||
ty: parse_quote!(&'a WgpuExecutor),
|
ty: parse_quote!(&'a WgpuExecutor),
|
||||||
exposed: false,
|
exposed: true,
|
||||||
value_source: Default::default(),
|
value_source: ParsedValueSource::Scope(LitStr::new("wgpu-executor", Span::call_site())),
|
||||||
number_soft_min: None,
|
number_soft_min: None,
|
||||||
number_soft_max: None,
|
number_soft_max: None,
|
||||||
number_hard_min: None,
|
number_hard_min: None,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue