103 lines
2.1 KiB
C#
103 lines
2.1 KiB
C#
|
|
using Godot;
|
|
using Godot.Collections;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Rokojori
|
|
{
|
|
[Tool]
|
|
[GlobalClass]
|
|
public partial class VignetteEffect:SingleShaderCompositorEffect
|
|
{
|
|
public static readonly string shaderPath = Path( "Vignette/VignetteShader.glsl" );
|
|
|
|
[ExportGroup("Vignette")]
|
|
[Export( PropertyHint.Range, "0,1")]
|
|
public float amount = 1.0f;
|
|
|
|
[Export( PropertyHint.Range, "-1,1")]
|
|
public float fadePosition;
|
|
|
|
[Export( PropertyHint.Range, "-2,2")]
|
|
public float fadeInOffset = -0.1f;
|
|
|
|
[Export( PropertyHint.Range, "-2,2")]
|
|
public float fadeOutOffset= 0.1f;
|
|
|
|
[Export( PropertyHint.Range, "-10,10")]
|
|
public float fadePower= 1f;
|
|
|
|
[Export( PropertyHint.Range, "0,1")]
|
|
public float ellipseToCircle= 0.5f;
|
|
|
|
[ExportGroup("Colors")]
|
|
|
|
[Export]
|
|
public Color colorTop = Colors.Black;
|
|
|
|
[Export]
|
|
public Color colorBottom = Colors.Black;
|
|
|
|
|
|
[ExportGroup("Blend Mode")]
|
|
[Export]
|
|
public float replace = 1.0f;
|
|
|
|
[Export]
|
|
public float add = 0.0f;
|
|
|
|
[Export]
|
|
public float multiply = 0.0f;
|
|
|
|
[Export]
|
|
public float colorize = 0.0f;
|
|
|
|
|
|
[Export]
|
|
public string info = "";
|
|
|
|
protected override void OnConfigure()
|
|
{
|
|
EffectCallbackType = EffectCallbackTypeEnum.PostTransparent;
|
|
_shaderPath = shaderPath;
|
|
_groupSize = 8;
|
|
}
|
|
|
|
protected override void SetConstants()
|
|
{
|
|
constants.Set(
|
|
colorTop.SrgbToLinear(),
|
|
colorBottom.SrgbToLinear(),
|
|
(Vector2) context.internalSize,
|
|
amount,
|
|
fadePosition + fadeInOffset,
|
|
fadePosition + fadeOutOffset,
|
|
ellipseToCircle,
|
|
Mathf.Pow( 10f, fadePower / 10f ),
|
|
replace,
|
|
add,
|
|
multiply,
|
|
colorize
|
|
);
|
|
|
|
info = "constants: " + constants.info;
|
|
|
|
|
|
}
|
|
|
|
public override void ClearCaches()
|
|
{
|
|
base.ClearCaches();
|
|
}
|
|
|
|
protected override void RenderView()
|
|
{
|
|
context.AssignScreenColorTexture();
|
|
|
|
context.pushConstants = constants;
|
|
|
|
context.ProcessComputeProgram();
|
|
|
|
}
|
|
}
|
|
} |