rj-action-library/Runtime/Rendering/Compositor/CompositorEffects/ChromaticAberation/ChromaticAberation.cs

82 lines
1.6 KiB
C#

using Godot;
using Godot.Collections;
using System.Collections.Generic;
namespace Rokojori
{
[Tool]
[GlobalClass]
public partial class ChromaticAberation:RDGraphCompositorEffect
{
public ChromaticAberation():base()
{
Initialize();
}
[Export]
public float intensity = 0.5f;
[Export]
public float shiftAll = 0.5f;
[Export]
public float unshiftCenter = 16f;
[Export]
public Vector2 rShift = new Vector2( -0.001f, 0.0f );
[Export]
public Vector2 gShift = new Vector2( 0.0f, 0.0f );
[Export]
public Vector2 bShift = new Vector2( 0.001f, 0.0f );
CEG_ScreenColorTexure screenColorTexture;
CEG_BufferTexture bufferTexture;
CEG_Copy copy;
CEG_ChromaticAberation chromaticAberation;
void Initialize()
{
screenColorTexture = new CEG_ScreenColorTexure( graph );
bufferTexture = CEG_BufferTexture.ScreenSize( graph );
copy = new CEG_Copy( graph );
chromaticAberation = new CEG_ChromaticAberation( graph );
graph.InitializeNodes();
copy.SetTextureSlotInputs( screenColorTexture, bufferTexture );
chromaticAberation.SetTextureSlotInputs( copy.output, copy.input );
graph.SetProcessOrder(
screenColorTexture, bufferTexture,
copy, chromaticAberation
);
}
protected override void ForAllViews()
{
chromaticAberation.constants.Set(
intensity,
shiftAll,
unshiftCenter,
rShift,
gShift,
bShift
);
}
}
}