using Godot; using Godot.Collections; using System.Collections.Generic; namespace Rokojori { [Tool] [GlobalClass] public partial class RadialBlur2:_XX_CompositorEffectGraph { public RadialBlur2() { Initialize(); } [Export] public Vector2 center = new Vector2( 0.5f, 0.5f ); [Export] public float radius = 0.5f; [Export] public float intensity = 0.5f; [Export] public float samples = 16f; CEG_ScreenColorTexure screenColorTexture; CEG_BufferTexture bufferTexture; CEG_Copy copy; CEG_RadialBlur radialBlur; void Initialize() { CreateGraphNodes(); ConnectGraph(); AssignData(); } void CreateGraphNodes() { screenColorTexture = new CEG_ScreenColorTexure( this ); bufferTexture = CEG_BufferTexture.ScreenSize( this ); copy = new CEG_Copy( this ); radialBlur = new CEG_RadialBlur( this ); _processors = new List{ screenColorTexture, bufferTexture, copy, radialBlur }; _processors.ForEach( p => p.Initialize() ); } void ConnectGraph() { copy.SetTextureSlotInputs( screenColorTexture, bufferTexture ); radialBlur.SetTextureSlotInputs( copy.output, copy.input ); SetProcessOrder( screenColorTexture, bufferTexture, copy, radialBlur ); } void AssignData() { radialBlur.constants.Set( center, radius, intensity, samples, Vector2.Zero ); } protected override void OnPreProcess() { AssignData(); } } }