chromatic abberation added

This commit is contained in:
Rapandrasmus 2023-11-23 19:18:43 +01:00
parent 39c381c0e4
commit c9e294213d
3 changed files with 66 additions and 8 deletions

View file

@ -1,5 +1,31 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-2309378551457945779
MonoBehaviour:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 6050e2d5de785ce4d931e4dbdbf2d755, type: 3}
m_Name: ChromaticAberration
m_EditorClassIdentifier:
active: 1
enabled:
overrideState: 1
value: 0
spectralLut:
overrideState: 0
value: {fileID: 0}
defaultState: 1
intensity:
overrideState: 1
value: 0
fastMode:
overrideState: 0
value: 0
--- !u!114 &-1752554079016775041
MonoBehaviour:
m_ObjectHideFlags: 3
@ -58,3 +84,4 @@ MonoBehaviour:
m_EditorClassIdentifier:
settings:
- {fileID: -1752554079016775041}
- {fileID: -2309378551457945779}

View file

@ -891,23 +891,30 @@ namespace HeavenStudio
resizable = true,
parameters = new()
{
new("enable", true, "Enable"),
new("intenStart", new EntityTypes.Float(0f, 1f), "Start Intensity"),
new("intenEnd", new EntityTypes.Float(0f, 1f, 1f), "End Intensity"),
new("colorStart", Color.black, "Start Color"),
new("colorEnd", Color.black, "Start End"),
new("intenStart", new EntityTypes.Float(0f, 1f), "Start Intensity"),
new("intenEnd", new EntityTypes.Float(0f, 1f), "End Intensity"),
new("smoothStart", new EntityTypes.Float(0.01f, 1f, 0.2f), "Start Smoothness"),
new("smoothEnd", new EntityTypes.Float(0.01f, 1f, 0.2f), "End Smoothness"),
new("roundStart", new EntityTypes.Float(0f, 1f, 1f), "Start Roundness"),
new("roundEnd", new EntityTypes.Float(0f, 1f, 1f), "End Roundness"),
new("rounded", false, "Rounded"),
new("ease", Util.EasingFunction.Ease.Linear, "Ease"),
new("rounded", false, "Rounded")
}
},
new GameAction("cabb", "Chromatic Abberation")
{
resizable = true,
parameters = new()
{
new("intenStart", new EntityTypes.Float(0f, 1f), "Start Intensity"),
new("intenEnd", new EntityTypes.Float(0f, 1f, 1f), "End Intensity"),
new("ease", Util.EasingFunction.Ease.Linear, "Ease"),
}
}
}),

View file

@ -12,6 +12,7 @@ namespace HeavenStudio
// events
private List<RiqEntity> _vignettes = new();
private List<RiqEntity> _cabbs = new();
private void Awake()
{
@ -26,12 +27,15 @@ namespace HeavenStudio
public void OnBeatChanged(double beat)
{
_vignettes = EventCaller.GetAllInGameManagerList("vfx", new string[] { "vignette" });
_cabbs = EventCaller.GetAllInGameManagerList("vfx", new string[] { "cabb" });
UpdateVignette();
UpdateChromaticAbberations();
}
private void Update()
{
UpdateVignette();
UpdateChromaticAbberations();
}
private void UpdateVignette()
@ -47,7 +51,9 @@ namespace HeavenStudio
float clampNormal = Mathf.Clamp01(normalized);
var func = Util.EasingFunction.GetEasingFunction((Util.EasingFunction.Ease)e["ease"]);
v.enabled.Override(e["enable"]);
float newIntensity = func(e["intenStart"], e["intenEnd"], clampNormal);
v.enabled.Override(newIntensity != 0);
if (!v.enabled) continue;
v.rounded.Override(e["rounded"]);
@ -55,7 +61,6 @@ namespace HeavenStudio
v.color.Override(newColor);
float newIntensity = func(e["intenStart"], e["intenEnd"], clampNormal);
v.intensity.Override(newIntensity);
float newSmoothness = func(e["smoothStart"], e["smoothEnd"], clampNormal);
@ -66,6 +71,25 @@ namespace HeavenStudio
}
}
private void UpdateChromaticAbberations()
{
if (!_volume.profile.TryGetSettings<ChromaticAberration>(out var c)) return;
c.enabled.Override(false);
foreach (var e in _cabbs)
{
float normalized = Conductor.instance.GetPositionFromBeat(e.beat, e.length);
if (normalized < 0) break;
float clampNormal = Mathf.Clamp01(normalized);
var func = Util.EasingFunction.GetEasingFunction((Util.EasingFunction.Ease)e["ease"]);
float newIntensity = func(e["intenStart"], e["intenEnd"], clampNormal);
c.enabled.Override(newIntensity != 0);
if (!c.enabled) continue;
c.intensity.Override(newIntensity);
}
}
private Color ColorEase(Color start, Color end, float time, Util.EasingFunction.Function func)
{
float newR = func(start.r, end.r, time);