Skip to content

Commit ad99c14

Browse files
authored
Shaders: Provide WgpuExecutor via Scope (#3144)
shaders: automatically connect wgpu-executor
1 parent f12b4da commit ad99c14

2 files changed

Lines changed: 16 additions & 5 deletions

File tree

node-graph/interpreted-executor/src/util.rs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use graphene_std::Context;
88
use graphene_std::ContextFeatures;
99
use graphene_std::uuid::NodeId;
1010
use std::sync::Arc;
11+
use wgpu_executor::WgpuExecutor;
1112

1213
pub fn wrap_network_in_scope(mut network: NodeNetwork, editor_api: Arc<WasmEditorApi>) -> NodeNetwork {
1314
network.generate_node_paths(&[]);
@@ -68,7 +69,7 @@ pub fn wrap_network_in_scope(mut network: NodeNetwork, editor_api: Arc<WasmEdito
6869
};
6970

7071
// wrap the inner network in a scope
71-
let nodes = vec![
72+
let mut nodes = vec![
7273
inner_network,
7374
render_node,
7475
DocumentNode {
@@ -77,11 +78,21 @@ pub fn wrap_network_in_scope(mut network: NodeNetwork, editor_api: Arc<WasmEdito
7778
..Default::default()
7879
},
7980
];
81+
let mut scope_injections = vec![("editor-api".to_string(), (NodeId(2), concrete!(&WasmEditorApi)))];
82+
83+
if cfg!(feature = "gpu") {
84+
nodes.push(DocumentNode {
85+
implementation: DocumentNodeImplementation::ProtoNode(ProtoNodeIdentifier::from("graphene_core::ops::IntoNode<&WgpuExecutor>")),
86+
inputs: vec![NodeInput::node(NodeId(2), 0)],
87+
..Default::default()
88+
});
89+
scope_injections.push(("wgpu-executor".to_string(), (NodeId(3), concrete!(&WgpuExecutor))));
90+
}
8091

8192
NodeNetwork {
8293
exports: vec![NodeInput::node(NodeId(1), 0)],
8394
nodes: nodes.into_iter().enumerate().map(|(id, node)| (NodeId(id as u64), node)).collect(),
84-
scope_injections: [("editor-api".to_string(), (NodeId(2), concrete!(&WasmEditorApi)))].into_iter().collect(),
95+
scope_injections: scope_injections.into_iter().collect(),
8596
// TODO(TrueDoctor): check if it makes sense to set `generated` to `true`
8697
generated: false,
8798
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::crate_ident::CrateIdent;
2-
use crate::parsing::{Input, NodeFnAttributes, ParsedField, ParsedFieldType, ParsedNodeFn, RegularParsedField};
2+
use crate::parsing::{Input, NodeFnAttributes, ParsedField, ParsedFieldType, ParsedNodeFn, ParsedValueSource, RegularParsedField};
33
use crate::shader_nodes::{SHADER_NODES_FEATURE_GATE, ShaderCodegen, ShaderNodeType, ShaderTokens};
44
use convert_case::{Case, Casing};
55
use proc_macro2::{Ident, Span, TokenStream};
@@ -231,8 +231,8 @@ impl PerPixelAdjustCodegen<'_> {
231231
widget_override: Default::default(),
232232
ty: ParsedFieldType::Regular(RegularParsedField {
233233
ty: parse_quote!(&'a WgpuExecutor),
234-
exposed: false,
235-
value_source: Default::default(),
234+
exposed: true,
235+
value_source: ParsedValueSource::Scope(LitStr::new("wgpu-executor", Span::call_site())),
236236
number_soft_min: None,
237237
number_soft_max: None,
238238
number_hard_min: None,

0 commit comments

Comments
 (0)