@@ -61,6 +61,14 @@ fn node_registry() -> HashMap<ProtoNodeIdentifier, HashMap<NodeIOTypes, NodeCons
6161		convert_node!( from:  DVec2 ,  to:  String ) , 
6262		convert_node!( from:  IVec2 ,  to:  String ) , 
6363		convert_node!( from:  DAffine2 ,  to:  String ) , 
64+ 		#[ cfg( feature = "gpu" ) ] 
65+ 		convert_node!( from:  Table <Raster <CPU >>,  to:  Table <Raster <CPU >>,  converter:  & WgpuExecutor ) , 
66+ 		#[ cfg( feature = "gpu" ) ] 
67+ 		convert_node!( from:  Table <Raster <CPU >>,  to:  Table <Raster <GPU >>,  converter:  & WgpuExecutor ) , 
68+ 		#[ cfg( feature = "gpu" ) ] 
69+ 		convert_node!( from:  Table <Raster <GPU >>,  to:  Table <Raster <GPU >>,  converter:  & WgpuExecutor ) , 
70+ 		#[ cfg( feature = "gpu" ) ] 
71+ 		convert_node!( from:  Table <Raster <GPU >>,  to:  Table <Raster <CPU >>,  converter:  & WgpuExecutor ) , 
6472		// ============= 
6573		// MONITOR NODES 
6674		// ============= 
@@ -394,21 +402,30 @@ mod node_registry_macros {
394402			x
395403		} } ; 
396404		( from:  $from: ty,  to:  $to: ty)  => { 
405+ 			convert_node!( from:  $from,  to:  $to,  converter:  ( ) ) 
406+ 		} ; 
407+ 		( from:  $from: ty,  to:  $to: ty,  converter:  $convert: ty)  => { 
397408			( 
398409				ProtoNodeIdentifier :: new( concat![ "graphene_core::ops::ConvertNode<" ,  stringify!( $to) ,  ">" ] ) , 
399410				|mut  args| { 
400411					Box :: pin( async  move { 
401- 						let  node = graphene_core:: ops:: ConvertNode :: new( graphene_std:: any:: downcast_node:: <Context ,  $from>( args. pop( ) . unwrap( ) ) , 
402- graphene_std:: any:: FutureWrapperNode :: new( graphene_std:: value:: ClonedNode :: new( std:: marker:: PhantomData :: <$to>) ) 						) ; 
412+ 						let  mut  args = args. drain( ..) ; 
413+ 						let  node = graphene_core:: ops:: ConvertNode :: new( 
414+ 							graphene_std:: any:: downcast_node:: <Context ,  $from>( args. next( ) . expect( "Convert node did not get first argument" ) ) , 
415+ 							graphene_std:: any:: downcast_node:: <Context ,  $convert>( args. next( ) . expect( "Convert node did not get converter argument" ) ) , 
416+ 							graphene_std:: any:: FutureWrapperNode :: new( graphene_std:: value:: ClonedNode :: new( std:: marker:: PhantomData :: <$to>) ) 
417+ 						) ; 
403418						let  any:  DynAnyNode <Context ,  $to,  _> = graphene_std:: any:: DynAnyNode :: new( node) ; 
404419						Box :: new( any)  as  TypeErasedBox 
405420					} ) 
406421				} , 
407422				{ 
408- 					let  node = graphene_core:: ops:: ConvertNode :: new( graphene_std:: any:: PanicNode :: <Context ,  core:: pin:: Pin <Box <dyn core:: future:: Future <Output  = $from> + Send >>>:: new( ) , 
409- 
410- graphene_std:: any:: FutureWrapperNode :: new( graphene_std:: value:: ClonedNode :: new( std:: marker:: PhantomData :: <$to>) ) 					) ; 
411- 					let  params = vec![ fn_type_fut!( Context ,  $from) ] ; 
423+ 					let  node = graphene_core:: ops:: ConvertNode :: new( 
424+ 						graphene_std:: any:: PanicNode :: <Context ,  core:: pin:: Pin <Box <dyn core:: future:: Future <Output  = $from> + Send >>>:: new( ) , 
425+ 						graphene_std:: any:: PanicNode :: <Context ,  core:: pin:: Pin <Box <dyn core:: future:: Future <Output  = $convert> + Send >>>:: new( ) , 
426+ 						graphene_std:: any:: FutureWrapperNode :: new( graphene_std:: value:: ClonedNode :: new( std:: marker:: PhantomData :: <$to>) ) 
427+ 					) ; 
428+ 					let  params = vec![ fn_type_fut!( Context ,  $from) ,  fn_type_fut!( Context ,  $convert) ] ; 
412429					let  node_io = NodeIO :: <' _,  Context >:: to_async_node_io( & node,  params) ; 
413430					node_io
414431				} , 
0 commit comments